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:
parent
432d5566de
commit
5c2b43c815
@ -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'));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user