Subversion Repositories HomeAutomation

Rev

Rev 2084 | Go to most recent revision | 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.  
  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, 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[alias] || !jsonData[alias].Level/* || jsonData[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("JSON.stringify(Module_GetLastDataNative('" + 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.       var name = alias;
  65.  
  66.       if (aliasNames[alias])
  67.       {
  68.         name = aliasNames[alias];
  69.       }
  70.    
  71.       /* Create the slider HTML from the template and add it to the DOM */
  72.       pageInstance.pageSliderElements[alias] = $("#page-dimmers-slider-template").tmpl({ alias: name, name: name, value: 0 }).appendTo(pageInstance.pageContentElement).trigger("create");
  73.      
  74.       /* Before we have any value it should be disabled */
  75.       pageInstance.pageSliderElements[alias].find("input").slider("disable");
  76.      
  77.       /* Bind a change event to the slider */
  78.       pageInstance.pageSliderElements[alias].find("input").on("change", function(event, ui) { requestServerAction(alias); });
  79.  
  80.       /* Bind a click event to the minimum button */
  81.       pageInstance.pageSliderElements[alias].find(".page-dimmers-button-minimum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(0).slider("refresh") });
  82.  
  83.       /* Bind a click event to the maximum button */
  84.       pageInstance.pageSliderElements[alias].find(".page-dimmers-button-maximum").on("click", function(event, ui) { pageInstance.pageSliderElements[alias].find("input").val(255).slider("refresh") });
  85.     });
  86.    
  87.    
  88.     /* Request the initial value from the server */
  89.     requestServerData();
  90.    
  91.    
  92.     /* Set timer for continious polling of the current values */
  93.     pageInstance.pollTimer = setInterval(requestServerData, 4000);
  94.   }
  95. };
  96.