2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

colorpicker: added virst version for real hsv reading

git-svn-id: https://svn.fhem.de/fhem/trunk@11757 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
justme-1968 2016-07-07 12:55:14 +00:00
parent 432d5566de
commit 5c2b43c815

View File

@ -26,31 +26,54 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
mode = vArr[1] mode = vArr[1]
//console.log( "mode: "+mode ); //console.log( "mode: "+mode );
function createHSVSliders() { var cmds = []; // the 3 commands vor hue, sat, bri
for( var i = 2; i <= 4; ++i ) { var ranges = []; // the 3 slider ranges
var d = parseInt(vArr[i]); var is_real_hsv = false;
if( vArr.length == 14 ) { // hsv:colorpicker,HSV,hue,0,1,360,sat,0,1,100,bri,0,1,100
is_real_hsv = true;
if( !isNaN(d) ) cmds[0] = function(arg) { FW_cmd(FW_root+"?cmd=set "+devName+" "+vArr[2]+" "+arg+"&XHR=1"); };
vArr[i] = d; ranges[0] = [vArr[3],vArr[4],vArr[5]];
else if( !vArr[i] ) cmds[1] = function(arg) { FW_cmd(FW_root+"?cmd=set "+devName+" "+vArr[6]+" "+arg+"&XHR=1"); };
vArr[i] = undefined; ranges[1] = [vArr[7],vArr[8],vArr[9]];
cmds[2] = function(arg) { FW_cmd(FW_root+"?cmd=set "+devName+" "+vArr[10]+" "+arg+"&XHR=1"); };
ranges[2] = [vArr[11],vArr[12],vArr[13]];
}
function value2hsv(value) {
var hsv = [];
var values = value.split(',');
if( values[1] !== undefined ) {
for( var i = 0; i <= 2; ++i ) {
hsv[i] = values[i];
if( is_real_hsv )
hsv[i] /= ranges[i][2];
}
} else {
hsv = colorpicker_rgb2hsv(value);
} }
return hsv;
}
function createHSVSliders() {
var hsv = []; var hsv = [];
function change(index, arg) { function change(index, arg) {
hsv[index] = arg; hsv[index] = arg;
if( typeof vArr[2+index] === 'number' )
hsv[index] = vArr[2+index]/100;
var rgb = colorpicker_hsv2rgb(hsv[0],hsv[1],hsv[2]); var rgb = colorpicker_hsv2rgb(hsv[0],hsv[1],hsv[2]);
if( hidden ) if( hidden )
hidden.attr("value", rgb); hidden.attr("value", rgb);
cmd( rgb );
if( cmds[index] )
cmds[index]( parseInt(arg * ranges[index][2]) );
else
cmd( rgb );
} }
if( currVal ) if( currVal )
hsv = colorpicker_rgb2hsv(currVal); hsv = value2hsv(currVal);
else else
hsv = [0,1,1]; hsv = [0,1,1];
var hue = FW_createSlider(undefined, devName, ["slider",0,1,359], var hue = FW_createSlider(undefined, devName, ["slider",0,1,359],
@ -73,14 +96,14 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
$(newEl).append(hidden); $(newEl).append(hidden);
var first = true; var first = true;
if(vArr[2] === undefined) { if(true) {
$(newEl).append(hue); $(newEl).append(hue);
first = false; first = false;
} else { } else {
hue.style.display='none'; hue.style.display='none';
} }
if(vArr[3] === undefined) { if(true) {
if( !first ) $(newEl).append("<br>"); if( !first ) $(newEl).append("<br>");
$(newEl).append(sat); $(newEl).append(sat);
first = false; first = false;
@ -88,7 +111,7 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
sat.style.display='none'; sat.style.display='none';
} }
if(vArr[4] === undefined) { if(true) {
if( !first ) $(newEl).append("<br>"); if( !first ) $(newEl).append("<br>");
$(newEl).append(bri); $(newEl).append(bri);
first = false; first = false;
@ -100,11 +123,7 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
if( hidden ) if( hidden )
hidden.attr("value", arg); hidden.attr("value", arg);
hsv = colorpicker_rgb2hsv(arg); hsv = value2hsv(arg);
for( var i = 0; i < 3; ++i ) {
if( typeof vArr[2+i] === 'number' )
hsv[i] = vArr[2+i]/100;
}
hue.setValueFn(""+parseInt(hsv[0]*359)); hue.setValueFn(""+parseInt(hsv[0]*359));
sat.setValueFn(""+parseInt(hsv[1]*100)); sat.setValueFn(""+parseInt(hsv[1]*100));
bri.setValueFn(""+parseInt(hsv[2]*100)); bri.setValueFn(""+parseInt(hsv[2]*100));
@ -146,13 +165,13 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
return newEl; return newEl;
} }
if( mode == "HSV" ) if( mode == 'HSV' )
return createHSVSliders(); return createHSVSliders();
//preset ? //preset ?
if( params && params.length ) { if( params && params.length ) {
var color = params[0]; var color = params[0];
if( mode == "CT" ) if( mode == 'CT' )
color = colorpicker_ct2rgb(color); color = colorpicker_ct2rgb(color);
var newEl = $('<div informID="###" style="width:32px;height:19px;border:1px solid #fff;border-radius:8px;background-color:#'+color+'" >').get(0); var newEl = $('<div informID="###" style="width:32px;height:19px;border:1px solid #fff;border-radius:8px;background-color:#'+color+'" >').get(0);
@ -161,7 +180,7 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
} }
if( mode == "CT" ) { if( mode == 'CT' ) {
if( currVal ) if( currVal )
currVal = currVal.match(/[\d.\-]*/)[0]; currVal = currVal.match(/[\d.\-]*/)[0];
@ -186,7 +205,7 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
$(newEl).addClass("colorpicker_ct"); $(newEl).addClass("colorpicker_ct");
return newEl; return newEl;
} else if( mode == "HUE" ) { } else if( mode == 'HUE' ) {
var newEl = FW_createSlider(elName, devName, ["slider",vArr[2],vArr[3],vArr[4]], currVal, undefined, params, cmd); var newEl = FW_createSlider(elName, devName, ["slider",vArr[2],vArr[3],vArr[4]], currVal, undefined, params, cmd);
$(newEl).addClass("colorpicker_hue"); $(newEl).addClass("colorpicker_hue");
return newEl; return newEl;
@ -205,8 +224,9 @@ FW_colorpickerCreate(elName, devName, vArr, currVal, set, params, cmd)
var sliders; var sliders;
newEl.setValueFn = function(arg){ newEl.setValueFn = function(arg){
if( arg.length > 6 ) arg = arg.slice(0,6); //if( arg.length > 6 ) arg = arg.slice(0,6);
var hsv = colorpicker_rgb2hsv(arg); currVal = arg;
var hsv = value2hsv(arg);
$(inp).val(arg); $(inp).val(arg);
$(inp).css('background-color', '#' + arg); $(inp).css('background-color', '#' + arg);
$(inp).css('color', (hsv[2]>0.75?'black':'white')); $(inp).css('color', (hsv[2]>0.75?'black':'white'));