fhemweb_knob.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Wrapper for the jquery knob widget.
  2. FW_widgets['knob'] = { createFn:FW_knobCreate, };
  3. function
  4. FW_knobCreate(elName, devName, vArr, currVal, set, params, cmd)
  5. {
  6. if(!vArr.length || vArr[0] != "knob" || (params && params.length))
  7. return undefined;
  8. var conf = {};
  9. for(var i1=0; i1<vArr.length; i1++) {
  10. var kv = vArr[i1].split(":");
  11. conf[kv[0]] = kv[1];
  12. }
  13. currVal = (currVal == undefined) ?
  14. conf.min : parseFloat(currVal.replace(/[^\d.\-]/g, ""));
  15. if(!conf.width) conf.width=conf.height=100;
  16. if(!conf.fgColor) conf.fgColor="#278727";
  17. var newEl = $("<div style='display:inline-block'>").get(0);
  18. $(newEl).append('<input type="text" id="knob.'+devName+'-'+set +'" >');
  19. var inp = $(newEl).find("input");
  20. if(elName)
  21. $(inp).attr("name", elName);
  22. for(c in conf)
  23. $(inp).attr("data-"+c, conf[c]);
  24. loadScript("pgm2/jquery.knob.min.js",
  25. function() {
  26. inp.knob({ 'release' : function(v){ if(cmd && !inp.block) cmd(v) } });
  27. newEl.setValueFn = function(arg){ inp.val(arg);
  28. inp.block=true; inp.trigger('change'); inp.block=false; };
  29. newEl.setValueFn(currVal);
  30. });
  31. return newEl;
  32. }
  33. /*
  34. =pod
  35. =begin html
  36. <li>knob,min:1,max:100,... - shows the jQuery knob widget. The parameters
  37. are a comma separated list of key:value pairs, where key does not have to
  38. contain the "data-" prefix. For details see the jQuery-knob
  39. definition.<br> Example:
  40. attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round
  41. </li>
  42. =end html
  43. =begin html_DE
  44. <li>knob,min:1,max:100,... - zeigt das jQuery knob Widget.Die Parameter
  45. werden als eine Komma separierte Liste von Key:Value Paaren spezifiziert,
  46. wobei das data- Pr&auml;fix entf&auml;llt.F&uuml;r Details siehe die
  47. jQuery knob Dokumentation.<br> Beispiel:
  48. attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round
  49. </li>
  50. =end html_DE
  51. =cut
  52. */