Subversion Repositories HomeAutomation

Rev

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 */
2069 runge 33
        if (!jsonData.results[alias] || !jsonData.results[alias].Level/* || jsonData.results[alias].Level.timestamp + 60 < ((new Date()).getTime() / 1000)*/)
2068 runge 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
};