Subversion Repositories HomeAutomation

Rev

Rev 2111 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  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.     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.    
  20.     /* Function to update values of sliders based on new server data */
  21.     function handleServerData(jsonData)
  22.     {
  23.       /* Loop through all results */
  24.       jQuery.each(jsonData, function(alias, data)
  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 */
  44.         if (!jsonData[alias] || !jsonData[alias].Level/* || jsonData[alias].Level.timestamp + 60 < ((new Date()).getTime() / 1000)*/)
  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.     {
  61.       sendCommand("JSON.stringify(Module_GetLastDataNative('" + pageInstance.aliases.join("','") + "'));", handleServerData);
  62.     }
  63.    
  64.    
  65.     /* Function to set new values to the server */
  66.     function requestServerAction(alias)
  67.     {
  68.       sendCommand("Dimmer_AbsoluteFade('" + alias + "', 135, " + pageInstance.pageSliderElements[alias].find("input").val() + ");");
  69.     }
  70.    
  71.  
  72.     /* Loop through all the aliases and create sliders */
  73.     jQuery.each(pageInstance.aliases, function(n, alias)
  74.     {
  75.       var name = alias;
  76.  
  77.       if (aliasNames[alias])
  78.       {
  79.         name = aliasNames[alias];
  80.       }
  81.    
  82.       /* Create the slider HTML from the template and add it to the DOM */
  83.       pageInstance.pageSliderElements[alias] = $("#page-dimmers-slider-template").tmpl({ alias: name, name: name, value: 0 }).appendTo(pageInstance.pageContentElement).trigger("create");
  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); });
  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") });
  96.     });
  97.   }
  98. };
  99.