Rev 2111 | Details | Compare with Previous | 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 | |||
| 2196 | linlun | 8 | this.pageshow = function(arg) { |
| 9 | /* Request the initial value from the server */ |
||
| 10 | requestServerData(); |
||
| 11 | /* Set timer for continious polling of the current values */ |
||
| 12 | pageInstance.pollTimer = setInterval(requestServerData, 4000); |
||
| 13 | } |
||
| 14 | |||
| 15 | this.pagehide = function(arg) { |
||
| 16 | clearInterval(pageInstance.pollTimer); |
||
| 17 | } |
||
| 18 | |||
| 19 | |||
| 2068 | runge | 20 | /* Function to update values of sliders based on new server data */ |
| 21 | function handleServerData(jsonData) |
||
| 22 | { |
||
| 23 | /* Loop through all results */ |
||
| 2111 | runge | 24 | jQuery.each(jsonData, function(alias, data) |
| 2068 | runge | 25 | { |
| 26 | /* Only do something if we have a Level value and know the alias*/ |
||
| 27 | if (pageInstance.pageSliderElements[alias] && data.Level) |
||
| 28 | { |
||
| 29 | /* Turn of the change event so we do not trigger it when updating the value */ |
||
| 30 | pageInstance.pageSliderElements[alias].find("input").off("change"); |
||
| 31 | |||
| 32 | /* Update the slider with the new value */ |
||
| 33 | pageInstance.pageSliderElements[alias].find("input").val(data.Level.value).slider("refresh"); |
||
| 34 | |||
| 35 | /* Turn on the change event again */ |
||
| 36 | pageInstance.pageSliderElements[alias].find("input").on("change", function(event, ui) { requestServerAction(alias); }); |
||
| 37 | } |
||
| 38 | }); |
||
| 39 | |||
| 40 | /* Check for all aliases and disable if no value was received */ |
||
| 41 | jQuery.each(pageInstance.aliases, function(n, alias) |
||
| 42 | { |
||
| 43 | /* If no valid value was given, the alias is offline */ |
||
| 2111 | runge | 44 | if (!jsonData[alias] || !jsonData[alias].Level/* || jsonData[alias].Level.timestamp + 60 < ((new Date()).getTime() / 1000)*/) |
| 2068 | runge | 45 | { |
| 46 | /* Disable the slider component */ |
||
| 47 | pageInstance.pageSliderElements[alias].find("input").slider("disable"); |
||
| 48 | } |
||
| 49 | else |
||
| 50 | { |
||
| 51 | /* Enable the slider component */ |
||
| 52 | pageInstance.pageSliderElements[alias].find("input").slider("enable"); |
||
| 53 | } |
||
| 54 | }); |
||
| 55 | } |
||
| 56 | |||
| 57 | |||
| 58 | /* Function to request new values from the server */ |
||
| 59 | function requestServerData() |
||
| 60 | { |
||
| 2111 | runge | 61 | sendCommand("JSON.stringify(Module_GetLastDataNative('" + pageInstance.aliases.join("','") + "'));", handleServerData); |
| 2068 | runge | 62 | } |
| 63 | |||
| 64 | |||
| 65 | /* Function to set new values to the server */ |
||
| 66 | function requestServerAction(alias) |
||
| 67 | { |
||
| 2111 | runge | 68 | sendCommand("Dimmer_AbsoluteFade('" + alias + "', 135, " + pageInstance.pageSliderElements[alias].find("input").val() + ");"); |
| 2068 | runge | 69 | } |
| 70 | |||
| 71 | |||
| 72 | /* Loop through all the aliases and create sliders */ |
||
| 73 | jQuery.each(pageInstance.aliases, function(n, alias) |
||
| 74 | { |
||
| 2080 | runge | 75 | var name = alias; |
| 76 | |||
| 77 | if (aliasNames[alias]) |
||
| 78 | { |
||
| 79 | name = aliasNames[alias]; |
||
| 80 | } |
||
| 81 | |||
| 2068 | runge | 82 | /* Create the slider HTML from the template and add it to the DOM */ |
| 2080 | runge | 83 | pageInstance.pageSliderElements[alias] = $("#page-dimmers-slider-template").tmpl({ alias: name, name: name, value: 0 }).appendTo(pageInstance.pageContentElement).trigger("create"); |
| 2068 | runge | 84 | |
| 85 | /* Before we have any value it should be disabled */ |
||
| 86 | pageInstance.pageSliderElements[alias].find("input").slider("disable"); |
||
| 87 | |||
| 88 | /* Bind a change event to the slider */ |
||
| 89 | pageInstance.pageSliderElements[alias].find("input").on("change", function(event, ui) { requestServerAction(alias); }); |
||
| 2071 | runge | 90 | |
| 91 | /* Bind a click event to the minimum button */ |
||
| 92 | pageInstance.pageSliderElements[alias].find(".page-dimmers-button-minimum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(0).slider("refresh") }); |
||
| 93 | |||
| 94 | /* Bind a click event to the maximum button */ |
||
| 95 | pageInstance.pageSliderElements[alias].find(".page-dimmers-button-maximum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(255).slider("refresh") }); |
||
| 2068 | runge | 96 | }); |
| 97 | } |
||
| 98 | }; |