fhemweb_uzsu.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. FW_version["fhemweb_uzsu.js"] = "$Id: fhemweb_uzsu.js 15716 2017-12-29 18:38:58Z justme1968 $";
  2. FW_widgets['uzsuToggle'] = {
  3. createFn:FW_uzsuToggleCreate,
  4. };
  5. FW_widgets['uzsuSelect'] = {
  6. createFn:FW_uzsuSelectCreate,
  7. };
  8. FW_widgets['uzsuSelectRadio'] = {
  9. createFn:FW_uzsuSelectRadioCreate,
  10. };
  11. FW_widgets['uzsuDropDown'] = {
  12. createFn:FW_uzsuDropDownCreate,
  13. };
  14. FW_widgets['uzsuTimerEntry'] = {
  15. createFn:FW_uzsuTimerEntryCreate,
  16. };
  17. FW_widgets['uzsuList'] = {
  18. createFn:FW_uzsuListCreate,
  19. };
  20. FW_widgets['uzsu'] = {
  21. createFn:FW_uzsuCreate,
  22. };
  23. function
  24. FW_uzsuDropDownCreate(elName, devName, vArr, currVal, set, params, cmd)
  25. {
  26. if( 0 ) {
  27. console.log( "elName: "+elName );
  28. console.log( "devName: "+devName );
  29. console.log( "vArr: "+vArr );
  30. console.log( "currVal: "+currVal );
  31. console.log( "set: "+set );
  32. console.log( "params: "+params );
  33. console.log( "cmd: "+cmd );
  34. }
  35. if(!vArr.length || vArr[0] != "uzsuDropDown")
  36. return undefined;
  37. //vArr[0] = 'time';
  38. //return FW_createTime(elName, devName, vArr, currVal, set, params, cmd);
  39. var newEl = $("<div style='display:inline-block;margin:2px 4px 2px 0px;'>").get(0);
  40. if( vArr[1] === undefined )
  41. vArr = ["select",
  42. "00:00","01:00","02:00","03:00","04:00","05:00","06:00","07:00","08:00","09:00",
  43. "10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00","18:00","19:00",
  44. "20:00","21:00","22:00","23:00"];
  45. else
  46. vArr[0] = 'select';
  47. $(newEl).append( FW_createSelect(elName, devName, vArr, currVal, set, params, cmd) );
  48. var select = $(newEl).find("select");
  49. select.selectmenu();
  50. select.selectmenu( "option", "width", "auto" );
  51. select.selectmenu( "option", "position", {collision: "flipfit"} );
  52. select.selectmenu( { change: function( event, data ) {
  53. if( cmd )
  54. cmd(data.item.value);
  55. }
  56. });
  57. newEl.getValueFn = function(arg){ return select.val(); };
  58. newEl.setValueFn = function(arg){
  59. select.val(arg);
  60. select.selectmenu("refresh");
  61. }
  62. //newEl.setValueFn(currVal);
  63. return newEl;
  64. }
  65. function
  66. FW_uzsuSelectCreate(elName, devName, vArr, currVal, set, params, cmd)
  67. {
  68. if( 0 ) {
  69. console.log( "elName: "+elName );
  70. console.log( "devName: "+devName );
  71. console.log( "vArr: "+vArr );
  72. console.log( "currVal: "+currVal );
  73. console.log( "set: "+set );
  74. console.log( "params: "+params );
  75. console.log( "cmd: "+cmd );
  76. }
  77. if(!vArr.length || vArr[0] != "uzsuSelect")
  78. return undefined;
  79. var newEl = $("<div style='display:inline-block;'>").get(0);
  80. $(newEl).addClass(vArr[0]);
  81. var hidden;
  82. if(elName)
  83. hidden = $('<input type="hidden" name="'+elName+'" value="'+currVal+'">');
  84. $(newEl).append(hidden);
  85. var clicked = function(arg) { var new_val=newEl.getValueFn(arg);
  86. newEl.setValueFn( new_val );
  87. if( cmd )
  88. cmd(new_val);
  89. };
  90. var buttons = [];
  91. for( var i = 1; i < vArr.length; ++i ) {
  92. var button = $('<input type="checkbox">').uniqueId();
  93. var label = $('<label for="'+button.attr("id")+'">'+vArr[i]+'</label>');
  94. buttons.push(button);
  95. $(newEl).append(button);
  96. $(newEl).append(label);
  97. $(button).change(clicked);
  98. }
  99. $(newEl).buttonset();
  100. if( !currVal )
  101. currVal = ",";
  102. newEl.getValueFn = function(arg) { var new_val="";
  103. for( var i = 0; i < buttons.length; ++i ) {
  104. var button = buttons[i];
  105. if( $(button).prop("checked") ) {
  106. if( new_val ) new_val += ',';
  107. new_val += $(button).button( "option", "label")
  108. }
  109. }
  110. if( !new_val ) return ',';
  111. return new_val;
  112. };
  113. newEl.setValueFn = function(arg){ if( !arg ) arg = ',';
  114. if( hidden )
  115. hidden.attr("value", arg);
  116. for( var i = 0; i < buttons.length; ++i ) {
  117. var button = buttons[i];
  118. button.prop("checked", arg.match(new RegExp('(^|,)'+vArr[i+1]+'($|,)') ) );
  119. button.button("refresh");
  120. }
  121. };
  122. newEl.setValueFn( currVal );
  123. return newEl;
  124. }
  125. function
  126. FW_uzsuSelectRadioCreate(elName, devName, vArr, currVal, set, params, cmd)
  127. {
  128. if( 0 ) {
  129. console.log( "elName: "+elName );
  130. console.log( "devName: "+devName );
  131. console.log( "vArr: "+vArr );
  132. console.log( "currVal: "+currVal );
  133. console.log( "set: "+set );
  134. console.log( "params: "+params );
  135. console.log( "cmd: "+cmd );
  136. }
  137. if(!vArr.length || vArr[0] != "uzsuSelectRadio")
  138. return undefined;
  139. var newEl = $("<div style='display:inline-block;'>").get(0);
  140. $(newEl).addClass(vArr[0]);
  141. var hidden;
  142. if(elName)
  143. hidden = $('<input type="hidden" name="'+elName+'" value="'+currVal+'">');
  144. $(newEl).append(hidden);
  145. var clicked = function(arg) { var new_val=newEl.getValueFn(arg);
  146. newEl.setValueFn( new_val );
  147. if( cmd )
  148. cmd(new_val);
  149. };
  150. var buttons = [];
  151. for( var i = 1; i < vArr.length; ++i ) {
  152. var button = $('<input type="radio" name="radio">').uniqueId();
  153. var label = $('<label for="'+button.attr("id")+'">'+vArr[i]+'</label>');
  154. buttons.push(button);
  155. $(newEl).append(button);
  156. $(newEl).append(label);
  157. $(button).change(clicked);
  158. if( currVal )
  159. button.prop("checked", currVal == vArr[i] );
  160. }
  161. $(newEl).buttonset();
  162. if( !currVal )
  163. currVal = ",";
  164. newEl.getValueFn = function(arg) { var new_val="";
  165. for( var i = 0; i < buttons.length; ++i ) {
  166. var button = buttons[i];
  167. if( $(button).prop("checked") ) {
  168. if( new_val ) new_val += ',';
  169. new_val += $(button).button( "option", "label")
  170. }
  171. }
  172. if( !new_val ) return ',';
  173. return new_val;
  174. };
  175. newEl.setValueFn = function(arg){ if( !arg ) arg = ',';
  176. if( hidden )
  177. hidden.attr("value", arg);
  178. for( var i = 0; i < buttons.length; ++i ) {
  179. var button = buttons[i];
  180. button.prop("checked", (arg == vArr[i+1]) );
  181. button.button("refresh");
  182. }
  183. };
  184. newEl.setValueFn( currVal );
  185. return newEl;
  186. }
  187. function
  188. FW_uzsuToggleCreate(elName, devName, vArr, currVal, set, params, cmd)
  189. {
  190. if( 0 ) {
  191. console.log( "elName: "+elName );
  192. console.log( "devName: "+devName );
  193. console.log( "vArr: "+vArr );
  194. console.log( "currVal: "+currVal );
  195. console.log( "set: "+set );
  196. console.log( "params: "+params );
  197. console.log( "cmd: "+cmd );
  198. }
  199. if(vArr.length<3 || vArr[0] != "uzsuToggle")
  200. return undefined;
  201. var newEl = $("<div style='display:inline-block;'>").get(0);
  202. $(newEl).addClass(vArr[0]);
  203. var hidden;
  204. if(elName)
  205. hidden = $('<input type="hidden" name="'+elName+'" value="'+currVal+'">');
  206. $(newEl).append(hidden);
  207. var button = $('<input type="checkbox">').uniqueId();
  208. var label = $('<label for="'+button.attr("id")+'"></label>');
  209. $(newEl).append(button);
  210. $(newEl).append(label);
  211. button.button();
  212. $(newEl).change(function(arg) { var new_val = newEl.getValueFn();
  213. newEl.setValueFn( new_val );
  214. if( cmd )
  215. cmd(new_val);
  216. } );
  217. newEl.getValueFn = function(arg){ return button.prop("checked")?vArr[2]:vArr[1]; };
  218. newEl.setValueFn = function(arg){ if( !arg )
  219. arg = vArr[1];
  220. if( hidden )
  221. hidden.attr("value", arg);
  222. button.button( "option", "label", arg);
  223. button.prop("checked", arg.match(new RegExp('(^|,)'+vArr[2]+'($|,)') ) );
  224. button.button("refresh");
  225. };
  226. newEl.setValueFn( currVal );
  227. return newEl;
  228. }
  229. function
  230. FW_uzsuTimerEntryCreate(elName, devName, vArr, currVal, set, params, cmd)
  231. {
  232. if( 0 ) {
  233. console.log( "elName: "+elName );
  234. console.log( "devName: "+devName );
  235. console.log( "vArr: "+vArr );
  236. console.log( "currVal: "+currVal );
  237. console.log( "set: "+set );
  238. console.log( "params: "+params );
  239. console.log( "cmd: "+cmd );
  240. }
  241. if(!vArr.length || vArr[0] != "uzsuTimerEntry")
  242. return undefined;
  243. if( !currVal )
  244. currVal = '';
  245. currVals = currVal.split('|');
  246. if( !currVals[2] );
  247. currVals[2] = "enabled";
  248. var newEl = $("<div style='display:inline-block;'>").get(0);
  249. $(newEl).addClass(vArr[0]);
  250. var hidden;
  251. if(elName)
  252. hidden = $('<input type="hidden" name="'+elName+'" value="'+currVal+'">');
  253. $(newEl).append(hidden);
  254. var changed = function(arg) { $(newEl).change();
  255. if(hidden)
  256. hidden.attr("value", newEl.getValueFn());
  257. if(cmd && newEl.getValueFn)
  258. cmd(newEl.getValueFn())};
  259. var wval;
  260. var wchanged = function(arg) { wval = arg; changed() };
  261. var days = FW_uzsuSelectCreate(undefined, devName+"Days", ["uzsuSelect","Mo","Di","Mi","Do","Fr","Sa","So"],
  262. currVals[0], undefined, params, changed);
  263. $(newEl).append(days); //days.activateFn();
  264. var time = FW_uzsuDropDownCreate(undefined, devName+"Time", ["uzsuDropDown"],
  265. currVals[1], undefined, params, changed);
  266. $(newEl).append(time); //time.activateFn();
  267. var widget;
  268. if( vArr[1] ) {
  269. var vArr = vArr;
  270. var params = vArr.slice(1).join(',').split(',');
  271. var wn = params[0];
  272. FW_callCreateFn(elName+'-'+wn, devName+'-'+wn, params,
  273. currVals[3], undefined, undefined, wchanged,
  274. function(wn, ne) {
  275. widget = ne;
  276. if( widget ) {
  277. if( widget.activateFn )
  278. widget.activateFn();
  279. wval = currVals[3];
  280. if( typeof wval == 'undefined' )
  281. wval = params[1];
  282. if( widget.setValueFn
  283. &&( typeof wval !== 'undefined' ) )
  284. widget.setValueFn(wval);
  285. $(widget).css('margin','0 8px 0 4px');
  286. $(newEl).append(widget)
  287. } else {
  288. var button = $('<button>aktion</button>');
  289. button.button();
  290. button.val(wn);
  291. button.css('margin','0 8px 0 4px');
  292. button.css('height','29px');
  293. button.button("disable");
  294. $(newEl).append(button);
  295. }
  296. });
  297. }
  298. var enabled = FW_uzsuToggleCreate(undefined, devName+"Enabled", ["uzsuToggle","disabled","enabled"],
  299. currVals[2], undefined, params, changed);
  300. $(newEl).append(enabled); //enabled.activateFn();
  301. newEl.getValueFn = function() { var ret = "";
  302. ret += days.getValueFn();
  303. ret += '|';
  304. ret += time.getValueFn();
  305. ret += '|';
  306. ret += enabled.getValueFn();
  307. if( widget
  308. && ( typeof wval !== 'undefined' ) ) {
  309. ret += '|';
  310. ret += wval;
  311. //ret += $(widget).val();
  312. }
  313. return ret;
  314. }
  315. newEl.setValueFn = function(arg){ if( hidden )
  316. hidden.attr("value", arg);
  317. var args = arg.split('|');
  318. days.setValueFn(args[0]);
  319. time.setValueFn(args[1])
  320. enabled.setValueFn(args[2])
  321. wval = args[3];
  322. if( widget && widget.setValueFn
  323. && ( typeof wval !== 'undefined' ) ) {
  324. widget.setValueFn(wval);
  325. }
  326. };
  327. if( currVal )
  328. newEl.setValueFn( currVal );
  329. return newEl;
  330. }
  331. function
  332. FW_uzsuListCreate(elName, devName, vArr, currVal, set, params, cmd)
  333. {
  334. if( 0 ) {
  335. console.log( "elName: "+elName );
  336. console.log( "devName: "+devName );
  337. console.log( "vArr: "+vArr );
  338. console.log( "currVal: "+currVal );
  339. console.log( "set: "+set );
  340. console.log( "params: "+params );
  341. console.log( "cmd: "+cmd );
  342. }
  343. if(!vArr.length || vArr[0] != "uzsuList")
  344. return undefined;
  345. var newEl = $("<div style='display:inline-block;'>").get(0);
  346. $(newEl).addClass(vArr[0]);
  347. var button = $('<button>');
  348. button.addClass("back");
  349. button.button({ icons: { primary: "ui-icon-carat-1-w", }, text: false});
  350. button.css('margin','3px');
  351. button.css('height','18px');
  352. button.hover( function() { $(this).css('background', 'red') }, function() { $(this).css('background', '') });
  353. button.click(function( event ) { event.preventDefault();
  354. var arg = $(this).attr("parent");
  355. FW_cmd(FW_root+"?cmd=get "+devName+" children "+arg+"&XHR=1",children);
  356. });
  357. $(newEl).append(button);
  358. var list = $('<ul>');
  359. list.css('overflow','auto');
  360. list.css('height','250px');
  361. list.css('width','350px');
  362. list.css('margin','0px');
  363. list.css('padding','0px');
  364. list.css('list-style','none');
  365. $(newEl).append(list);
  366. var children = function(data) {
  367. $(list).empty();
  368. var items = data.split(',');
  369. button.attr("parent", items[0]);
  370. for( var i = 1; i < items.length; ++i ) {
  371. var item = $('<li>'+items[i]+'</li>')
  372. item.css('border', '1px solid #ccc');
  373. item.css('background-color', '#222');
  374. item.css('margin', '0.25em');
  375. item.css('padding', '0.5em');
  376. item.hover( function() { $(this).css('background', 'red') }, function() { $(this).css('background', '#222') });
  377. item.click(function( event ) { event.preventDefault();
  378. var arg = $(this).text();
  379. FW_cmd(FW_root+"?cmd=get "+devName+" children "+arg+"&XHR=1",children);
  380. });
  381. $(list).append(item);
  382. }
  383. };
  384. children(currVal);
  385. return newEl;
  386. }
  387. function
  388. FW_uzsuCreate(elName, devName, vArr, currVal, set, params, cmd)
  389. {
  390. if( 0 ) {
  391. console.log( "elName: "+elName );
  392. console.log( "devName: "+devName );
  393. console.log( "vArr: "+vArr );
  394. console.log( "currVal: "+currVal );
  395. console.log( "set: "+set );
  396. console.log( "params: "+params );
  397. console.log( "cmd: "+cmd );
  398. }
  399. if(!vArr.length || vArr[0] != "uzsu")
  400. return undefined;
  401. if( !currVal )
  402. currVal = ",";
  403. var newEl = $("<div style='display:inline-block;'>").get(0);
  404. var hidden;
  405. if(elName)
  406. hidden = $('<input type="hidden" name="'+elName+'" value="'+currVal+'">');
  407. $(newEl).append(hidden);
  408. var toJson = function() { var list = [];
  409. var lines = $(newEl).find(".uzsuSelect");
  410. for( var line = 0; line < lines.length; ++line ) {
  411. var entry = {};
  412. entry['value'] = 'on';
  413. entry['time'] = '10:00';
  414. entry['rrule'] = 'FREQ=WEEKLY;BYDAY='+lines[line].getValueFn();
  415. entry['active'] = true;
  416. list.push(entry);
  417. }
  418. var ret = {};
  419. ret['list'] = list;
  420. ret['active'] = true;
  421. return ret;
  422. }
  423. var changed = function(arg) { var new_val = newEl.getValueFn();
  424. //new_val = JSON.stringify(toJson());
  425. if( hidden )
  426. hidden.attr("value", new_val);
  427. if( cmd )
  428. cmd(new_val);
  429. };
  430. var addLine = function(arg,currVal) {
  431. vArr[0] = 'uzsuTimerEntry';
  432. var entry = FW_uzsuTimerEntryCreate(undefined, devName+"UZSU", vArr,
  433. currVal, undefined, params, changed);
  434. var button = $('<button>');
  435. button.button({ icons: { primary: "ui-icon-plus", }, text: false});
  436. button.css('margin','0 0 0 10px');
  437. button.css('height','29px');
  438. button.click(function( event ) { event.preventDefault();
  439. addLine($(button).parent().index()-(hidden?1:0));
  440. changed();
  441. });
  442. $(entry).append(button);
  443. var button = $('<button>');
  444. button.addClass("trash");
  445. button.button({ icons: { primary: "ui-icon-trash", }, text: false});
  446. button.css('margin','0 0 0 10px');
  447. button.css('height','18px');
  448. button.click(function( event ) { event.preventDefault();
  449. $(button).parent().remove();
  450. if( $(newEl).children().length == 1 )
  451. $(newEl).find(".trash").button("disable");
  452. changed();
  453. });
  454. button.hover( function() { $(this).css('background', 'red') }, function() { $(this).css('background', '') });
  455. $(entry).append(button);
  456. var lines = $(newEl).find(".uzsuTimerEntry");
  457. if( !lines.length )
  458. $(newEl).append(entry);
  459. else
  460. $(entry).insertAfter($(lines[arg]));
  461. if( lines.length == 0 )
  462. $(newEl).find(".trash").button("disable");
  463. else if( lines.length == 1 )
  464. $(newEl).find(".trash").button("enable");
  465. }
  466. addLine(-1);
  467. newEl.getValueFn = function() { var ret = "";
  468. var lines = $(newEl).find(".uzsuTimerEntry");
  469. for( var line = 0; line < lines.length; ++line ) {
  470. if(ret) ret += ' ';
  471. ret += lines[line].getValueFn();
  472. }
  473. return ret;
  474. }
  475. newEl.setValueFn = function(arg){ if( hidden )
  476. hidden.attr("value", arg);
  477. var old_lines = $(newEl).find(".uzsuTimerEntry");
  478. var new_lines = arg.split(' ');
  479. for( var line = 0; line < new_lines.length; ++line ) {
  480. if( line < old_lines.length ) {
  481. old_lines[line].setValueFn(new_lines[line]);
  482. } else {
  483. addLine(line-1, new_lines[line]);
  484. }
  485. }
  486. for( var line = new_lines.length; line < old_lines.length; ++line ) {
  487. $(old_lines[line]).remove();
  488. }
  489. if( new_lines.length == 1 )
  490. $(newEl).find(".trash").button("disable");
  491. };
  492. newEl.setValueFn( currVal );
  493. return newEl;
  494. }
  495. /*
  496. =pod
  497. =begin html
  498. <li>uzsuToggle,state1,state2 - dispay a toggle button with two possible
  499. states. the first is the active state.</li>
  500. <li>uzsuSelect,val1,val2,... - display a button bar with a button per value
  501. from which multiple values can be selected. the result is comma
  502. separated.</li>
  503. <li>uzsuSelectRadio,val1,val2,... - display a button bar with a button per
  504. value from which only one value can be selected.</li>
  505. <li>uzsuDropDown,val1,val2,... - display a dropdown with all values.</li>
  506. <li>uzsuTimerEntry[,modifier2] - combine uzsuSelect, uzsuDropDown and
  507. uzsuToggle into a single line display to select a timer entry. an
  508. optional modifier can be given to select the switching value. see
  509. examples below. the result is a comma separated list of days followed by
  510. a time, an enabled indicator and the switching value all separated by a|.
  511. eg: Mo,Di,Sa,So|00:00|enabled|19.5</li>
  512. <li>uzsu[,modifier2] - combine multiple uzsuTimerEntry widets to allow the
  513. setting of multiple switching times an optional modifier can be given to
  514. select the switching value. see examples below. the result is a space
  515. separeted list of uzsuTimerEntry results. Examples:
  516. <ul>
  517. attr myToggle widgetOverride state:uzsuToggle,123,xyz<br>
  518. attr mySelect widgetOverride state:uzsuSelect,abc,123,456,xyz<br>
  519. attr myTemp widgetOverride state:uzsuDropDown,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23<br>
  520. attr myTimerEntry widgetOverride state:uzsuTimerEntry<br>
  521. attr myTimer widgetOverride state:uzsu<br>
  522. <br>
  523. the following gives some examples of for the modifier2 parameter of uzsuTimerEntry and uzsu to
  524. combine the setting of a timer with another widget to select the switching value :
  525. <pre>
  526. ... widgetOverride state:uzsu,slider,0,5,100 -> a slider
  527. ... widgetOverride state:uzsu,uzsuToggle,off,on -> a on/off button
  528. ... widgetOverride state:uzsu,uzsuDropDown,18,19,20,21,22,23 -> a dropDownMenue
  529. ... widgetOverride state:uzsu,knob,min:18,max:24,step:0.5,linecap:round,fgColor:red -> a knob widget
  530. ... widgetOverride state:uzsu,colorpicker -> a colorpicker
  531. ... widgetOverride state:uzsu,colorpicker,CT,2700,50,5000 -> a colortemperature selector
  532. </pre>
  533. </ul>
  534. </li>
  535. =end html
  536. =begin html_DE
  537. <li>uzsuToggle,zust1,zust2 - damit ist es m&ouml;glich mit einem
  538. Toggle-Button zwischen zwei Zust&auml;nden zu w&auml;hlen. Der Erste ist
  539. der aktive Zustand.</li>
  540. <li>uzsuSelect,val1,val2,... - damit ist es m&ouml;gliche in einer
  541. Buttonleiste meherere Werte auszuw&auml;hlen. Das Ergebnis ist
  542. Komma-separiert.</li>
  543. <li>uzsuSelectRadio,val1,val2,... - damit ist es m&ouml;gliche in einer
  544. Buttonleiste einen aus meherere Werten auszuw&auml;hlen.</li>
  545. <li>uzsuDropDown,val1,val2,... - damit ist es m&ouml;gliche mit einem
  546. DropDown Men&uuml; einen der Werte auszuw&auml;hlen.</li>
  547. <li>uzsuTimerEntry[,modifier2] - damit werden je ein uzsuSelect,
  548. uzsuDropDown und uzsuToggle Widget kombiniert um einen Schaltzeitpunkt
  549. auszuw&auml;hlen. &Uuml;ber den optionalen modifier2 kann ein Widget zur
  550. Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das
  551. Ergebniss is eine komma-separiert Liste von Wochentagen gefolgt vom
  552. Zeitpunkt, eine Aktiv-Indikator und dem Schaltwert, jeweils durch |
  553. abetrennt. Zum Beispiel: Mo,Di,Sa,So|00:00|enabled|19.5</li>
  554. <li>uzsu[,modifier2] - damit werden mehrere uzsuTimerEntry Widets kombiniert
  555. um eine beliebige Anzahl an Schaltzeiten einzugeben. &Uuml;ber den
  556. optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes
  557. angegeben werden. Siehe Beispiele unten. Das Ergebiss ist eine durch
  558. leerzeichen getrennte Liste von uzsuTimerEntry Ergebnissen.<br>
  559. Beispiele:
  560. <ul>
  561. attr myToggle widgetOverride state:uzsuToggle,123,xyz<br>
  562. attr mySelect widgetOverride state:uzsuSelect,abc,123,456,xyz<br>
  563. attr myTemp widgetOverride
  564. state:uzsuDropDown,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23<br>
  565. attr myTimerEntry widgetOverride state:uzsuTimerEntry<br>
  566. attr myTimer widgetOverride state:uzsu<br>
  567. <br>
  568. Im Folgenden wird die Verwendung des modifier2 parameters von
  569. uzsuTimerEntry und uzsu gezeigt um die Auswahl des Schaltzeitpunktes
  570. mit der Auswahl des Schaltwertes zu kombinieren:
  571. <pre>
  572. ... widgetOverride state:uzsu,slider,0,5,100 -> ein slider
  573. ... widgetOverride state:uzsu,uzsuToggle,off,on -> ein on/off button
  574. ... widgetOverride state:uzsu,uzsuDropDown,18,19,20,21,22,23 -> ein dropDownMenue
  575. ... widgetOverride state:uzsu,knob,min:18,max:24,step:0.5,linecap:round,fgColor:red -> ein knob widget
  576. ... widgetOverride state:uzsu,colorpicker -> ein colorpicker
  577. ... widgetOverride state:uzsu,colorpicker,CT,2700,50,5000 -> ein colortemperature slider
  578. </pre>
  579. </ul></li>
  580. =end html_DE
  581. =cut
  582. */