forked from pvx/litsimaja
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.3 KiB
103 lines
2.3 KiB
<html> |
|
<head> |
|
<title>litsimaja</title> |
|
<script src="jscolor.js"></script> |
|
|
|
<script type="text/javascript"> |
|
jscolor.presets.default = { |
|
format:'rgb', previewPosition:'right', previewSize:700, width:800, |
|
height:400, sliderSize:50 |
|
}; |
|
|
|
function show_loading(visible) |
|
{ |
|
document.getElementById('loading').style.visibility = visible ? 'visible' : 'hidden'; |
|
} |
|
|
|
function send_get(url) |
|
{ |
|
show_loading(true); |
|
var http = new XMLHttpRequest(); |
|
http.open('GET', url, true); |
|
http.onreadystatechange = function() { |
|
if (http.readyState == 4 && http.status == 200) { |
|
show_loading(false); |
|
} |
|
} |
|
http.send(); |
|
} |
|
|
|
function send_post(url, data) |
|
{ |
|
show_loading(true); |
|
var http = new XMLHttpRequest(); |
|
http.open('POST', url, true); |
|
http.setRequestHeader('Content-Type', 'application/json'); |
|
http.onreadystatechange = function() { |
|
if (http.readyState == 4 && http.status == 200) { |
|
show_loading(false); |
|
} |
|
} |
|
let json = JSON.stringify(data); |
|
http.send(json); |
|
} |
|
|
|
function getProgramSelection() |
|
{ |
|
let select = document.getElementById('program'); |
|
return select.value; |
|
} |
|
|
|
function isLoop() |
|
{ |
|
let looping = document.getElementById('looping'); |
|
return looping.checked; |
|
} |
|
|
|
function isChanged(value) |
|
{ |
|
let rgb = value.split('(')[1].split(')')[0].split(','); |
|
let data = {color: [Number(rgb[0]), Number(rgb[1]), Number(rgb[2])], loop: isLoop()}; |
|
send_post('program/' + getProgramSelection(), data); |
|
} |
|
|
|
function doInit() |
|
{ |
|
send_post('/program/siinus.Wipes', {color: [100, 50, 0]}) |
|
} |
|
|
|
function doBlind() |
|
{ |
|
send_post('/program/siinus.Static', {color: [0, 0, 0]}) |
|
} |
|
|
|
function doCancel() |
|
{ |
|
send_get('/crash'); |
|
} |
|
|
|
|
|
|
|
</script> |
|
</head> |
|
|
|
<body> |
|
|
|
<button onclick="doInit()">init</button> |
|
<button onclick="doCancel()">end loop</button> |
|
<button onclick="doBlind()">off</button> |
|
<label><input type="checkbox" id="looping"/>loop</label> |
|
<div id='loading' style="visibility: hidden">LOADING!</div> |
|
<select id="program" size="10"> |
|
{% for group in programs %} |
|
<optgroup label="{{ group.group }}"> |
|
{% for program in group.programs %} |
|
<option label="{{ program.name }}">{{ program.prg }}</option> |
|
{% endfor %} |
|
</optgroup> |
|
{% endfor %} |
|
</select> |
|
<input id="rgbinput" data-jscolor="" onchange="isChanged(this.value)"> |
|
|
|
</body> |
|
</html>
|
|
|