Select Git revision
main.js 3.08 KiB
var wsUrl = 'ws://' + document.location.host + '/ws';
var config = {
brightness: 0,
interval: 0,
};
$(document).ready(function () {
uiEnabled(false);
$("#wsMessages, #prompt").val("");
startSocket();
});
$(document).on('input change', '.rangeConfig', function () {
var setting = $(this).data('name');
var value = $(this).val();
switch (setting) {
case 'brightness':
value = mapRange(value, 1, 100, 8, 255);
break;
case 'interval':
value = mapRange(value, 1, 100, 1000, 10);
break;
}
config[setting] = value;
var payload = {
'config': config
};
wsSend(payload);
});
$('.btnAction').on('click', function () {
var action = $(this).data('action');
var payload = {
'action': action
};
wsSend(payload);
});
$("#prompt").onkeydown = function (e) {
if (e.keyCode == 13 && $("#prompt").value != "") {
var val = $("#prompt").val();
wsSend(val);
$("#prompt").val("");
}
}
function uiEnabled(enabled) {
if (enabled) {
$('#spinner').addClass('invisible');
$('.btnAction').prop('disabled', false);
$('.rangeConfig').prop('disabled', false);
} else {
$('#spinner').removeClass('invisible');
$('.btnAction').prop('disabled', true);
$('.rangeConfig').prop('disabled', true);
}
}
function addMessage(msg) {
var txt = $("#wsMessages");
txt.val($.trim(txt.val() + "\n" + msg));
txt.scrollTop(txt[0].scrollHeight - txt.height());
}
function wsSend(msg) {
uiEnabled(false);
var json = JSON.stringify(msg);
ws.send(msg).done(function () {
addMessage("➡️ " + json);
uiEnabled(true);
}).fail(function (e) {
addMessage("❗️ " + json);
});
}
var ws;
function startSocket() {
ws = $.simpleWebSocket({
url: wsUrl,
onOpen: function (e) {
console.log("WS: connected");
addMessage("✅ connected");
getConfig();
uiEnabled(true);
},
onClose: function (e) {
uiEnabled(false);
console.log("WS: disconnected");
addMessage("❌ disconnected");
},
onError: function (e) {
uiEnabled(false);
console.log("WS: error");
addMessage("❗️ error");
},
});
ws.listen(function (data) {
console.log(data);
var json = JSON.stringify(data);
var msg = "⬅️ " + json;
addMessage(msg);
if (data.config) {
loadConfig(data.config);
}
});
}
function getConfig() {
var payload = {
'action': 'load'
};
wsSend(payload);
}
function loadConfig(data) {
config.brightness = data.brightness;
config.interval = data.interval;
$('#rangeBrightness').val(mapRange(data.brightness, 8, 255, 1, 100));
$('#rangeSpeed').val(mapRange(data.interval, 1000, 10, 1, 100));
}
function mapRange(number, inMin, inMax, outMin, outMax) {
return Math.round((number - inMin) * (outMax - outMin) / (inMax - inMin) + outMin);
}