From d56770cda64ff7ac86baf94f966aa27550a2268f Mon Sep 17 00:00:00 2001
From: Timm <timm@szigat.de>
Date: Fri, 17 Apr 2015 20:28:28 +0200
Subject: [PATCH] added consectuive day streak

---
 status.html | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 52 insertions(+), 2 deletions(-)

diff --git a/status.html b/status.html
index c05511d..31f8d3b 100644
--- a/status.html
+++ b/status.html
@@ -5,7 +5,9 @@ layout: default
 <script src="js/d3.min.js"></script>
 <script>
     var timeFormat = 'YYYY-MM-DD HH:mm:ss';
+    var dateFormat = 'YYYY-MM-DD';
     function toHHMMSS (sec_num) {
+        sec_num = parseInt(sec_num);
         var hours   = Math.floor(sec_num / 3600);
         var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
         var seconds = sec_num - (hours * 3600) - (minutes * 60);
@@ -52,8 +54,36 @@ layout: default
       var hourStart = moment.unix(data[0].value.lastchange)
       var openTimeArrayIndex = 0;
       var hourArray = [];
+      var dayCountHigh = 0;
+      var dayCountHighStart = dayStart.clone();
+      var dayCountHighEnd = dayStart.clone();
+      var dayCountCurrent = 0;
+      var dayCountCurrentStart = dayStart.clone();
+      var dayCountCurrentEnd = dayStart.clone();
+      var wasOpen = null;
       while(hourStart < moment()) {
 
+        if(hourStart.date() != dayStart.date()) {
+          dayStart.add(1, 'day');
+          dayCountCurrentEnd = dayStart.clone();
+
+          if(wasOpen == true) {
+            dayCountCurrent++;
+
+            if(dayCountCurrent > dayCountHigh) {
+              dayCountHigh = dayCountCurrent;
+              dayCountHighStart = dayCountCurrentStart.clone();
+              dayCountHighEnd = dayCountCurrentEnd.clone();
+            }
+
+          } else {
+            dayCountCurrent = 0;
+            dayCountCurrentStart = dayStart.clone();
+          }
+
+          wasOpen = false;
+        }
+
         if(hourArray[hourStart.isoWeekday()] === undefined)
             hourArray[hourStart.isoWeekday()] = [];
 
@@ -62,6 +92,7 @@ layout: default
 
         if(moment.unix(openTimeArray[openTimeArrayIndex][1]) < hourStart && moment.unix(openTimeArray[openTimeArrayIndex][2]) > hourStart) {    
           hourArray[hourStart.isoWeekday()][hourStart.hour()]++;
+          wasOpen = true;
         }
 
         if(moment.unix(openTimeArray[openTimeArrayIndex][2]) < hourStart && openTimeArray.length > openTimeArrayIndex + 1)
@@ -85,6 +116,25 @@ layout: default
       
       openTimeArray.sort(sortArrayTimeNumber);
       closedTimeArray.sort(sortArrayTimeNumber);
+
+      var dayCountCurrentText = "";
+      var dayCountHighText = "";
+
+      if(dayCountCurrent > 1)
+        dayCountCurrentText = dayCountCurrent + " days (" + dayCountCurrentStart.format(dateFormat) + " - " + dayCountCurrentEnd.format(dateFormat) + ")";
+      else
+        dayCountCurrentText = dayCountCurrent + " day (" + dayCountCurrentStart.format(dateFormat) + ")";
+
+      if(dayCountHigh > 1)
+        dayCountHighText = dayCountHigh + " days (" + dayCountHighStart.format(dateFormat) + " - " + dayCountHighEnd.format(dateFormat) + ")";
+      else
+        dayCountHighText = dayCountHigh + " day (" + dayCountHighStart.format(dateFormat) + ")";
+
+
+      var dayCountHighText = dayCountHigh + ' days (' + dayCountHighStart.format(dateFormat) + " - " + dayCountHighEnd.format(dateFormat) + ")";
+
+      $( "#days_open_current td:last" ).html(dayCountCurrentText);
+      $( "#days_open_high td:last" ).html(dayCountHighText);
       
       $( "#space_open_percent" ).html(percentOpen + '% open');
       $( "#space_open_percent" ).width(percentOpen + '%');
@@ -311,7 +361,7 @@ layout: default
             unknown
           </td>
         </tr>
-        <tr>
+        <tr id="days_open_current">
           <td>
             consecutive days open
           </td>
@@ -319,7 +369,7 @@ layout: default
             unknown
           </td>
         </tr>
-        <tr>
+        <tr id="days_open_high">
           <td>
             consecutive days open (highest streak)
           </td>