Select Git revision
main.js 3.08 KiB
var wsUrl = 'ws://' + document.location.host + '/ws';
var settings = {
brightness: 0,
interval: 0,
};
$(document).ready(function () {
uiEnabled(false);
$("#wsMessages, #prompt").val("");
startSocket();
});
$(document).on('change', '.rangeSetting', 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;
}
settings[setting] = value;
var payload = {
'settings': settings
};
wsSend(payload);
});
$('.btnAction').on('click', function () {
var action = $(this).data('action');
sendAction(action);
});
$("#prompt").on('keydown', function (e) {
if (e.keyCode == 13 && $("#prompt").val() != "") {
var val = $("#prompt").val();
wsSend(JSON.parse(val));
$("#prompt").val("");
}
});
function uiEnabled(enabled) {
if (enabled) {
$('#spinner').addClass('invisible');
$('.btnAction').prop('disabled', false);
$('.rangeSetting').prop('disabled', false);
} else {
$('#spinner').removeClass('invisible');
$('.btnAction').prop('disabled', true);
$('.rangeSetting').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(obj) {
ws.send(obj).done(function () {
addMessage("➡️ " + JSON.stringify(obj));
}).fail(function (e) {
addMessage("❗️ " + JSON.stringify(obj));
});
}
var ws;
function startSocket() {
ws = $.simpleWebSocket({
url: wsUrl,
timeout: 5000,
onOpen: function (e) {
ws.isConnected(function (connected) {
console.log("WS: connected");
addMessage("✅ connected");
sendAction('getSettings');
});
},
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) {
addMessage("⬅️ " + JSON.stringify(data));
if (data.settings) {
loadSettings(data.settings);
}
});
}
function sendAction(action) {
var payload = {
'action': action
};
wsSend(payload);
}
function loadSettings(data) {
settings.brightness = data.brightness;
settings.interval = data.interval;
uiEnabled(true);
$('#rangeBrightness').val(mapRange(data.brightness, 8, 255, 1, 100));
$('#rangeSpeed').val(mapRange(data.interval, 1000, 10, 1, 100));
sendAction('getHighscores');
}
function mapRange(number, inMin, inMax, outMin, outMax) {
return Math.round((number - inMin) * (outMax - outMin) / (inMax - inMin) + outMin);
}