changeset 144:c030c3cf0d80

More work on display system.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 23 Oct 2013 01:42:21 +0300
parents 20893a5442b7
children 66b485431cac
files msite.inc.php show.php showajax.php
diffstat 3 files changed, 80 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/msite.inc.php	Wed Oct 23 01:21:12 2013 +0300
+++ b/msite.inc.php	Wed Oct 23 01:42:21 2013 +0300
@@ -131,7 +131,7 @@
 
 function stSaveDisplayVars()
 {
-  global $displayVars, $displayVarsChanged;
+  global $db, $displayVars, $displayVarsChanged;
 
   foreach (stExecSQL("SELECT * FROM displayVars") as $item)
   if (isset($displayVarsChanged[$item["key"]]))
--- a/show.php	Wed Oct 23 01:21:12 2013 +0300
+++ b/show.php	Wed Oct 23 01:42:21 2013 +0300
@@ -37,6 +37,7 @@
 
 var failCount = 0;
 var prevView = -1, activeView = 0;
+var activeSlide = -1, activeSlideMode = -1;
 var errorView = false;
 
 
@@ -77,47 +78,72 @@
 //
 function viewChanged()
 {
-  var msuccess = function(txt)
+  var msuccess3 = function(txt)
   {
     // Successfully fetched new data, initiate view update
-    failCount = 0;
-    errorView = false;
     updateView(txt);
   }
 
-  sendPOSTRequest("action=get", msuccess, displayError);
+  var msuccess2 = function(txt)
+  {
+    activeSlide = txt;
+    sendPOSTRequest("action=get&type=slide", msuccess3, displayError);
+  }
+
+  var msuccess1 = function(txt)
+  {
+    activeSlideMode = txt;
+    sendPOSTRequest("action=get&type=activeSlide", msuccess2, displayError);
+  }
+
+  sendPOSTRequest("action=get&type=activeSlideMode", msuccess1, displayError);
 }
 
 
 //
 // Main tick function, check for updates from server
 //
+var timeOutSet = false;
+
 function tickMain()
 {
+  timeOutSet = false;
+
   var msuccess = function(txt)
   {
     failCount = 0;
     if (txt == "changed")
     {
       viewChanged();
-      setTimeout("tickMain();", 500);
+      if (!timeOutSet)
+      {
+        setTimeout("tickMain();", 500);
+        timeOutSet = true;
+      }
     }
     else
     {
-      setTimeout("tickMain();", 2000);
+      if (!timeOutSet)
+      {
+        setTimeout("tickMain();", 2000);
+        timeOutSet = true;
+      }
     }
   }
   
   var mfail = function(txt)
   {
     displayError();
-    setTimeout("tickMain();", 5000);
+    if (!timeOutSet)
+    {
+      setTimeout("tickMain();", 5000);
+      timeOutSet = true;
+    }
   }
 
-  sendPOSTRequest("action=check", msuccess, mfail);
+  sendPOSTRequest("action=check&activeSlide="+activeSlide+"&activeSlideMode="+activeSlideMode, msuccess, mfail);
 }
 
-
 setTimeout("tickMain();", 1000);
 setInterval("tickAnim();", 25);
 viewChanged();
--- a/showajax.php	Wed Oct 23 01:21:12 2013 +0300
+++ b/showajax.php	Wed Oct 23 01:42:21 2013 +0300
@@ -136,57 +136,67 @@
     break;
 }
 
+$type = stGetRequestItem("type");
 
-$action = stChkRequestItem("action") ? $_REQUEST["action"] : "";
-switch ($action)
+switch (stGetRequestItem("action"))
 {
   case "check":
     // Check if there has been any change
     $changed =
       stGetRequestItem("activeSlide") != stGetDisplayVar("activeSlide") ||
-      stGetRequestItem("activeSlide") != stGetDisplayVar("activeSlide");
+      stGetRequestItem("activeSlideMode") != stGetDisplayVar("activeSlideMode");
       
     echo $changed ? "changed" : "nochange";
     stSetStatus(200, "OK");
     break;
 
   case "get":
-    // Based on the currently active mode ...
-    switch (stGetDisplayVar("activeSlideMode"))
+    switch ($type)
     {
-      case SMODE_ROTATE:
-        // Slide rotation mode, display currently active slide
-        if (stGetDisplayVar("activeSlide") > 0)
-        {
-          $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d",
-            stGetDisplayVar("activeSlide"));
-
-          if (($slide = stFetchSQL($sql)) !== false)
-            stPrintRotationSlide($slide);
-        }
-        else
-        {
-          echo "<div>ERROR!</div>\n";
-        }
+      case "activeSlideMode":
+      case "activeSlide":
+        echo stGetDisplayVar($type);
         break;
-      
-      case SMODE_COMPO:
-        // Competition mode
-        $compo = stFetchSQL(stPrepareSQL(
-          "SELECT * FROM compos WHERE id=%d",
-          stGetDisplayVar("compoCompo")));
+
+      case "slide":
+      // Based on the currently active mode ...
+      switch (stGetDisplayVar("activeSlideMode"))
+      {
+        case SMODE_ROTATE:
+          // Slide rotation mode, display currently active slide
+          if (stGetDisplayVar("activeSlide") > 0)
+          {
+            $sql = stPrepareSQL("SELECT * FROM displaySlides WHERE id=%d",
+              stGetDisplayVar("activeSlide"));
 
-        $prev = stFetchSQL(stPrepareSQL(
-          "SELECT * FROM entries WHERE id=%d",
-          stGetDisplayVar("compoPrevEntry")));
+            if (($slide = stFetchSQL($sql)) !== false)
+              stPrintRotationSlide($slide);
+          }
+          else
+          {
+            echo "<div>ERROR!</div>\n";
+          }
+          break;
+        
+        case SMODE_COMPO:
+          // Competition mode
+          $compo = stFetchSQL(stPrepareSQL(
+            "SELECT * FROM compos WHERE id=%d",
+            stGetDisplayVar("compoCompo")));
 
-        $entry = stFetchSQL(stPrepareSQL(
-          "SELECT * FROM entries WHERE id=%d",
-          stGetDisplayVar("compoCurrEntry")));
+          $prev = stFetchSQL(stPrepareSQL(
+            "SELECT * FROM entries WHERE id=%d",
+            stGetDisplayVar("compoPrevEntry")));
 
-        if ($compo !== false)
-          stPrintCompoSlide($compo, $entry, $prev);
-        break;
+          $entry = stFetchSQL(stPrepareSQL(
+            "SELECT * FROM entries WHERE id=%d",
+            stGetDisplayVar("compoCurrEntry")));
+
+          if ($compo !== false)
+            stPrintCompoSlide($compo, $entry, $prev);
+          break;
+      }
+      break;
     }
     break;