Color timeliness graph based on route number
[busui.git] / labs / myway_timeliness.php
blob:a/labs/myway_timeliness.php -> blob:b/labs/myway_timeliness.php
--- a/labs/myway_timeliness.php
+++ b/labs/myway_timeliness.php
@@ -6,38 +6,37 @@
     <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../js/flot/excanvas.min.js"></script><![endif]--> 
  
     <script language="javascript" type="text/javascript" src="../js/flot/jquery.flot.js"></script> 
-  <div id="placeholder" style="width:1000px;height:600px"></div> 
+  <center><div id="placeholder" style="width:900px;height:550px"></div></center>
 <script type="text/javascript"> 
 $(function () {
     var d = new Date();
-						d.setUTCMinutes(0);
-						d.setUTCHours(0);
+    d.setUTCMinutes(0);
+    d.setUTCHours(0);
     var midnight = d.getTime();
 
 <?php
-//$query = "select * from myway_timingdeltas order by time";
 $query = "select * from myway_timingdeltas where abs(timing_delta) < 2*(select stddev(timing_delta) from myway_timingdeltas)  order by route_full_name;";
-$query = $conn->prepare($query);
-$query->execute();
+$query = $conn -> prepare($query);
+$query -> execute();
 if (!$query) {
-	databaseError($conn->errorInfo());
-	return Array();
-}
+    databaseError($conn -> errorInfo());
+     return Array();
+    } 
 $i = 0;
 $labels = Array();
 $lastRoute = "";
-foreach ($query->fetchAll() as $delta) {
+foreach ($query -> fetchAll() as $delta) {
     $routeName = $delta['route_full_name'];
-    if (strstr($routeName," 3")) $routeName = "312-319";
-    else $routeName = preg_replace('/\D/', '', $routeName);
-    if ($routeName != $lastRoute) {
-        	$i++;
-                echo "    var d$i = [];";
-                $lastRoute = $routeName;
-                $labels[$i] = $routeName;
-    }
-	echo "d$i.push([ midnight+ (1000*" . midnight_seconds(strtotime($delta['time'])) . "), {$delta['timing_delta']}]); \n";
-};
+     if (strstr($routeName, " 3")) $routeName = "312-319";
+     else $routeName = preg_replace('/\D/', '', $routeName);
+     if ($routeName != $lastRoute) {
+        $i++;
+         echo "    var d$i = [];";
+         $lastRoute = $routeName;
+         $labels[$i] = $routeName;
+         } 
+    echo "d$i.push([ midnight+ (1000*" . midnight_seconds(strtotime($delta['time'])) . "), " . intval($delta['timing_delta']) . "]); \n";
+    } ;
 ?>
 
        var placeholder = $("#placeholder");
@@ -50,8 +49,8 @@
             points: { show: true },
             label: '$label'
         },";
-}
-        ?>
+    } 
+?>
     ],
         {
             xaxis: {
@@ -62,17 +61,18 @@
             yaxis: {
                 tickFormatter: yformatter
             },
-            grid: { hoverable: true, clickable: true },
+            grid: { hoverable: true, clickable: true, labelMargin: 32   },
     });
         var o;
     o = plot.pointOffset({ x: midnight+ (9*60*60*1000), y: -1.2});
     placeholder.append('<div style="position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller">9am</div>');
-  o = plot.pointOffset({ x: midnight+ (16*60*60*1000), y: -1.2});
+    o = plot.pointOffset({ x: midnight+ (16*60*60*1000), y: -1.2});
     placeholder.append('<div style="position:absolute;left:' + (o.left + 4) + 'px;top:' + o.top + 'px;color:#666;font-size:smaller">4pm</div>');
 
  });
 function yformatter(v) {
-    return Math.floor(v/60) + " minutes " + (v == 0 ? "" : (v >0 ? "early":"late"))
+    if (Math.floor(v/60) < -9) return "";
+    return Math.abs(Math.floor(v/60)) + " min " + (v == 0 ? "" : (v >0 ? "early":"late"))
 }
   function showTooltip(x, y, contents) {
         $('<div id="tooltip">' + contents + '</div>').css( {
@@ -106,7 +106,7 @@
 
                     
                     showTooltip(item.pageX, item.pageY,
-                                item.series.label + " at "+ time +" = " + y +" ( "+ y/60+" minutes )");
+                                item.series.label + " at "+ time +" = " + Math.abs(new Number(y/60).toFixed(2))+" minutes "+(y >0 ? "early":"late"));
                 }
             }
             else {