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); });
2071 runge 72
 
73
      /* Bind a click event to the minimum button */
74
      pageInstance.pageSliderElements[alias].find(".page-dimmers-button-minimum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(0).slider("refresh") });
75
 
76
      /* Bind a click event to the maximum button */
77
      pageInstance.pageSliderElements[alias].find(".page-dimmers-button-maximum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(255).slider("refresh") });
2068 runge 78
    });
79
 
80
 
81
    /* Request the initial value from the server */
82
    requestServerData();
83
 
84
 
85
    /* Set timer for continious polling of the current values */
86
    pageInstance.pollTimer = setInterval(requestServerData, 4000);
87
  }
88
};