Details | Last modification | View Log | SVN | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 2068 | runge | 1 | |
| 2 | pages.dimmers = { |
||
| 3 | init: function(pageInstance) |
||
| 4 | { |
||
| 5 | /* List to keep referenses to all the different slider elements */ |
||
| 6 | pageInstance.pageSliderElements = {}; |
||
| 7 | |||
| 8 | |||
| 9 | /* Function to update values of sliders based on new server data */ |
||
| 10 | function handleServerData(jsonData) |
||
| 11 | { |
||
| 12 | /* Loop through all results */ |
||
| 13 | jQuery.each(jsonData.results, function(alias, data) |
||
| 14 | { |
||
| 15 | /* Only do something if we have a Level value and know the alias*/ |
||
| 16 | if (pageInstance.pageSliderElements[alias] && data.Level) |
||
| 17 | { |
||
| 18 | /* Turn of the change event so we do not trigger it when updating the value */ |
||
| 19 | pageInstance.pageSliderElements[alias].find("input").off("change"); |
||
| 20 | |||
| 21 | /* Update the slider with the new value */ |
||
| 22 | pageInstance.pageSliderElements[alias].find("input").val(data.Level.value).slider("refresh"); |
||
| 23 | |||
| 24 | /* Turn on the change event again */ |
||
| 25 | pageInstance.pageSliderElements[alias].find("input").on("change", function(event, ui) { requestServerAction(alias); }); |
||
| 26 | } |
||
| 27 | }); |
||
| 28 | |||
| 29 | /* Check for all aliases and disable if no value was received */ |
||
| 30 | jQuery.each(pageInstance.aliases, function(n, alias) |
||
| 31 | { |
||
| 32 | /* If no valid value was given, the alias is offline */ |
||
| 33 | if (!jsonData.results[alias] || !jsonData.results[alias].Level || jsonData.results[alias].Level.timestamp + 60 < ((new Date()).getTime() / 1000)) |
||
| 34 | { |
||
| 35 | /* Disable the slider component */ |
||
| 36 | pageInstance.pageSliderElements[alias].find("input").slider("disable"); |
||
| 37 | } |
||
| 38 | else |
||
| 39 | { |
||
| 40 | /* Enable the slider component */ |
||
| 41 | pageInstance.pageSliderElements[alias].find("input").slider("enable"); |
||
| 42 | } |
||
| 43 | }); |
||
| 44 | } |
||
| 45 | |||
| 46 | |||
| 47 | /* Function to request new values from the server */ |
||
| 48 | function requestServerData() |
||
| 49 | { |
||
| 50 | sendCommand("Module_GetLastDataRaw " + pageInstance.aliases.join(" "), handleServerData); |
||
| 51 | } |
||
| 52 | |||
| 53 | |||
| 54 | /* Function to set new values to the server */ |
||
| 55 | function requestServerAction(alias) |
||
| 56 | { |
||
| 57 | sendCommand("Dimmer_AbsoluteFade " + alias + " 135 " + pageInstance.pageSliderElements[alias].find("input").val()); |
||
| 58 | } |
||
| 59 | |||
| 60 | |||
| 61 | /* Loop through all the aliases and create sliders */ |
||
| 62 | jQuery.each(pageInstance.aliases, function(n, alias) |
||
| 63 | { |
||
| 64 | /* Create the slider HTML from the template and add it to the DOM */ |
||
| 65 | pageInstance.pageSliderElements[alias] = $("#page-dimmers-slider-template").tmpl({ alias: alias, value: 0 }).appendTo(pageInstance.pageContentElement).trigger("create"); |
||
| 66 | |||
| 67 | /* Before we have any value it should be disabled */ |
||
| 68 | pageInstance.pageSliderElements[alias].find("input").slider("disable"); |
||
| 69 | |||
| 70 | /* Bind a change event to the slider */ |
||
| 71 | pageInstance.pageSliderElements[alias].find("input").on("change", function(event, ui) { requestServerAction(alias); }); |
||
| 72 | }); |
||
| 73 | |||
| 74 | |||
| 75 | /* Request the initial value from the server */ |
||
| 76 | requestServerData(); |
||
| 77 | |||
| 78 | |||
| 79 | /* Set timer for continious polling of the current values */ |
||
| 80 | pageInstance.pollTimer = setInterval(requestServerData, 4000); |
||
| 81 | } |
||
| 82 | }; |