Subversion Repositories HomeAutomation

Rev

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
};