Subversion Repositories HomeAutomation

Rev

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