mirror of
https://github.com/s00500/ESPUI.git
synced 2025-06-11 23:00:41 +00:00
Support dynamic enabling and disabling of controls
See documentation in README for how this works. This commit handles all the main controls. Pads are not yet supported.
This commit is contained in:
55
data/js/controls.js
vendored
55
data/js/controls.js
vendored
@ -568,7 +568,13 @@ function start() {
|
||||
break;
|
||||
}
|
||||
|
||||
if (data.type >= UI_TITEL && data.type < UPDATE_OFFSET) {
|
||||
//A UI element was just added to the DOM
|
||||
processEnabled(data);
|
||||
}
|
||||
|
||||
if (data.type >= UPDATE_OFFSET && data.type < UI_INITIAL_GUI) {
|
||||
//An "update" message was just recieved and processed
|
||||
var element = $("#id" + data.id);
|
||||
|
||||
if(data.hasOwnProperty('panelStyle')) {
|
||||
@ -593,6 +599,8 @@ function start() {
|
||||
);
|
||||
element.addClass(colorClass(data.color));
|
||||
}
|
||||
|
||||
processEnabled(data);
|
||||
}
|
||||
|
||||
$(".range-slider__range").each(function(){
|
||||
@ -816,4 +824,49 @@ var elementHTML = function(data) {
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var processEnabled = function(data) {
|
||||
//Handle the enabling and disabling of controls
|
||||
//Most controls can be disabled through the use of $("#<item>").prop("disabled", true) and CSS will style it accordingly
|
||||
//The switcher also requires the addition of the "disabled" class
|
||||
switch(data.type) {
|
||||
case UI_SWITCHER:
|
||||
case UPDATE_SWITCHER:
|
||||
if(data.enabled) {
|
||||
$("#sl" + data.id).removeClass('disabled');
|
||||
$("#s" + data.id).prop("disabled", false);
|
||||
} else {
|
||||
$("#sl" + data.id).addClass('disabled');
|
||||
$("#s" + data.id).prop("disabled", true);
|
||||
}
|
||||
break;
|
||||
|
||||
case UI_SLIDER:
|
||||
case UPDATE_SLIDER:
|
||||
$("#sl" + data.id).prop("disabled", !data.enabled);
|
||||
break;
|
||||
|
||||
case UI_NUMBER:
|
||||
case UPDATE_NUMBER:
|
||||
$("#num" + data.id).prop("disabled", !data.enabled);
|
||||
break;
|
||||
|
||||
case UI_TEXT_INPUT:
|
||||
case UPDATE_TEXT_INPUT:
|
||||
$("#text" + data.id).prop("disabled", !data.enabled);
|
||||
break;
|
||||
|
||||
case UI_SELECT:
|
||||
case UPDATE_SELECT:
|
||||
$("#select" + data.id).prop("disabled", !data.enabled);
|
||||
break;
|
||||
|
||||
case UI_BUTTON:
|
||||
case UPDATE_BUTTON:
|
||||
$("#btn" + data.id).prop("disabled", !data.enabled);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
8
data/js/controls.min.js
vendored
8
data/js/controls.min.js
vendored
@ -40,11 +40,13 @@ break;case UPDATE_SELECT:$("#select"+data.id).val(data.value);if(data.hasOwnProp
|
||||
break;case UPDATE_BUTTON:$("#btn"+data.id).val(data.value);$("#btn"+data.id).text(data.value);if(data.hasOwnProperty('elementStyle')){$("#btn"+data.id).attr("style",data.elementStyle);}
|
||||
break;case UPDATE_PAD:case UPDATE_CPAD:break;case UPDATE_GAUGE:$("#gauge"+data.id).val(data.value);if(data.hasOwnProperty('elementStyle')){$("#gauge"+data.id).attr("style",data.elementStyle);}
|
||||
break;case UPDATE_ACCEL:break;case UPDATE_TIME:var rv=new Date().toISOString();websock.send("time:"+rv+":"+data.id);break;default:console.error("Unknown type or event");break;}
|
||||
if(data.type>=UI_TITEL&&data.type<UPDATE_OFFSET){processEnabled(data);}
|
||||
if(data.type>=UPDATE_OFFSET&&data.type<UI_INITIAL_GUI){var element=$("#id"+data.id);if(data.hasOwnProperty('panelStyle')){$("#id"+data.id).attr("style",data.panelStyle);}
|
||||
if(data.hasOwnProperty('visible')){if(data['visible'])
|
||||
$("#id"+data.id).show();else
|
||||
$("#id"+data.id).hide();}
|
||||
if(data.type==UPDATE_SLIDER){element.removeClass("slider-turquoise slider-emerald slider-peterriver slider-wetasphalt slider-sunflower slider-carrot slider-alizarin");element.addClass("slider-"+colorClass(data.color));}else{element.removeClass("turquoise emerald peterriver wetasphalt sunflower carrot alizarin");element.addClass(colorClass(data.color));}}
|
||||
if(data.type==UPDATE_SLIDER){element.removeClass("slider-turquoise slider-emerald slider-peterriver slider-wetasphalt slider-sunflower slider-carrot slider-alizarin");element.addClass("slider-"+colorClass(data.color));}else{element.removeClass("turquoise emerald peterriver wetasphalt sunflower carrot alizarin");element.addClass(colorClass(data.color));}
|
||||
processEnabled(data);}
|
||||
$(".range-slider__range").each(function(){$(this)[0].value=$(this).attr("value");$(this).next().html($(this).attr("value"));});};websock.onmessage=handleEvent;}
|
||||
function sliderchange(number){var val=$("#sl"+number).val();websock.send("slvalue:"+val+":"+number);$(".range-slider__range").each(function(){$(this).attr("value",$(this)[0].value);});}
|
||||
function numberchange(number){var val=$("#num"+number).val();websock.send("nvalue:"+val+":"+number);}
|
||||
@ -94,4 +96,6 @@ data.value+"</span></div>";case UI_NUMBER:return"<input style='color:black;' "+e
|
||||
"' value='"+data.value+"' onchange='textchange("+id+")' />";case UI_SELECT:return"<select style='color:black;' "+elementStyle+" id='select"+id+
|
||||
"' onchange='selectchange("+id+")' />";case UI_GRAPH:return"<figure id='graph"+id+"'><figcaption>"+data.label+"</figcaption></figure>";case UI_GAUGE:return"WILL BE A GAUGE <input style='color:black;' id='gauge"+id+
|
||||
"' type='number' value='"+data.value+"' onchange='numberchange("+id+")' />";case UI_ACCEL:return"ACCEL // Not implemented fully!<div class='accelerometer' id='accel"+id+
|
||||
"' ><div class='ball"+id+"'></div><pre class='accelerometeroutput"+id+"'></pre>";default:return"";}}
|
||||
"' ><div class='ball"+id+"'></div><pre class='accelerometeroutput"+id+"'></pre>";default:return"";}}
|
||||
var processEnabled=function(data){switch(data.type){case UI_SWITCHER:case UPDATE_SWITCHER:if(data.enabled){$("#sl"+data.id).removeClass('disabled');$("#s"+data.id).prop("disabled",false);}else{$("#sl"+data.id).addClass('disabled');$("#s"+data.id).prop("disabled",true);}
|
||||
break;case UI_SLIDER:case UPDATE_SLIDER:$("#sl"+data.id).prop("disabled",!data.enabled);break;case UI_NUMBER:case UPDATE_NUMBER:$("#num"+data.id).prop("disabled",!data.enabled);break;case UI_TEXT_INPUT:case UPDATE_TEXT_INPUT:$("#text"+data.id).prop("disabled",!data.enabled);break;case UI_SELECT:case UPDATE_SELECT:$("#select"+data.id).prop("disabled",!data.enabled);break;case UI_BUTTON:case UPDATE_BUTTON:$("#btn"+data.id).prop("disabled",!data.enabled);break;}}
|
Reference in New Issue
Block a user