Add throttle closure for settings sliders
Adds a throttling closure to add a waiting time before calling a callback, Uses this closure to throttle the event fired by socketio on slider value change
This commit is contained in:
parent
e4c72ca2e5
commit
1de4944d46
|
@ -118,10 +118,32 @@ var adventure = false;
|
||||||
// Chatmode
|
// Chatmode
|
||||||
var chatmode = false;
|
var chatmode = false;
|
||||||
|
|
||||||
|
var sliders_throttle = getThrottle(250);
|
||||||
|
|
||||||
//=================================================================//
|
//=================================================================//
|
||||||
// METHODS
|
// METHODS
|
||||||
//=================================================================//
|
//=================================================================//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a function that will automatically wait for X ms before executing the callback
|
||||||
|
* The timer is reset each time the returned function is called
|
||||||
|
* Useful for methods where something is overridden too fast
|
||||||
|
* @param ms milliseconds to wait before executing the callback
|
||||||
|
* @return {(function(*): void)|*} function that takes the ms to wait and a callback to execute after the timer
|
||||||
|
*/
|
||||||
|
function getThrottle(ms) {
|
||||||
|
var timer;
|
||||||
|
|
||||||
|
return function (callback) {
|
||||||
|
if (timer) {
|
||||||
|
clearTimeout(timer);
|
||||||
|
}
|
||||||
|
timer = setTimeout(function () {
|
||||||
|
callback();
|
||||||
|
}, ms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function addSetting(ob) {
|
function addSetting(ob) {
|
||||||
// Add setting block to Settings Menu
|
// Add setting block to Settings Menu
|
||||||
if(ob.uitype == "slider"){
|
if(ob.uitype == "slider"){
|
||||||
|
@ -153,8 +175,11 @@ function addSetting(ob) {
|
||||||
window["label_"+ob.id] = reflb; // Is this still needed?
|
window["label_"+ob.id] = reflb; // Is this still needed?
|
||||||
// Add event function to input
|
// Add event function to input
|
||||||
refin.on("input", function () {
|
refin.on("input", function () {
|
||||||
|
sliders_throttle(function () {
|
||||||
socket.send({'cmd': $(this).attr('id'), 'data': $(this).val()});
|
socket.send({'cmd': $(this).attr('id'), 'data': $(this).val()});
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
} else if(ob.uitype == "toggle"){
|
} else if(ob.uitype == "toggle"){
|
||||||
settings_menu.append("<div class=\"settingitem\">\
|
settings_menu.append("<div class=\"settingitem\">\
|
||||||
<input type=\"checkbox\" data-toggle=\"toggle\" data-onstyle=\"success\" id=\""+ob.id+"\">\
|
<input type=\"checkbox\" data-toggle=\"toggle\" data-onstyle=\"success\" id=\""+ob.id+"\">\
|
||||||
|
|
Loading…
Reference in New Issue