added consectuive day streak

This commit is contained in:
Timm 2015-04-17 20:28:28 +02:00
parent 65a12a7d14
commit d56770cda6
1 changed files with 52 additions and 2 deletions

View File

@ -5,7 +5,9 @@ layout: default
<script src="js/d3.min.js"></script> <script src="js/d3.min.js"></script>
<script> <script>
var timeFormat = 'YYYY-MM-DD HH:mm:ss'; var timeFormat = 'YYYY-MM-DD HH:mm:ss';
var dateFormat = 'YYYY-MM-DD';
function toHHMMSS (sec_num) { function toHHMMSS (sec_num) {
sec_num = parseInt(sec_num);
var hours = Math.floor(sec_num / 3600); var hours = Math.floor(sec_num / 3600);
var minutes = Math.floor((sec_num - (hours * 3600)) / 60); var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
var seconds = sec_num - (hours * 3600) - (minutes * 60); var seconds = sec_num - (hours * 3600) - (minutes * 60);
@ -52,8 +54,36 @@ layout: default
var hourStart = moment.unix(data[0].value.lastchange) var hourStart = moment.unix(data[0].value.lastchange)
var openTimeArrayIndex = 0; var openTimeArrayIndex = 0;
var hourArray = []; 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()) { 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) if(hourArray[hourStart.isoWeekday()] === undefined)
hourArray[hourStart.isoWeekday()] = []; hourArray[hourStart.isoWeekday()] = [];
@ -62,6 +92,7 @@ layout: default
if(moment.unix(openTimeArray[openTimeArrayIndex][1]) < hourStart && moment.unix(openTimeArray[openTimeArrayIndex][2]) > hourStart) { if(moment.unix(openTimeArray[openTimeArrayIndex][1]) < hourStart && moment.unix(openTimeArray[openTimeArrayIndex][2]) > hourStart) {
hourArray[hourStart.isoWeekday()][hourStart.hour()]++; hourArray[hourStart.isoWeekday()][hourStart.hour()]++;
wasOpen = true;
} }
if(moment.unix(openTimeArray[openTimeArrayIndex][2]) < hourStart && openTimeArray.length > openTimeArrayIndex + 1) if(moment.unix(openTimeArray[openTimeArrayIndex][2]) < hourStart && openTimeArray.length > openTimeArrayIndex + 1)
@ -85,6 +116,25 @@ layout: default
openTimeArray.sort(sortArrayTimeNumber); openTimeArray.sort(sortArrayTimeNumber);
closedTimeArray.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" ).html(percentOpen + '% open');
$( "#space_open_percent" ).width(percentOpen + '%'); $( "#space_open_percent" ).width(percentOpen + '%');
@ -311,7 +361,7 @@ layout: default
unknown unknown
</td> </td>
</tr> </tr>
<tr> <tr id="days_open_current">
<td> <td>
consecutive days open consecutive days open
</td> </td>
@ -319,7 +369,7 @@ layout: default
unknown unknown
</td> </td>
</tr> </tr>
<tr> <tr id="days_open_high">
<td> <td>
consecutive days open (highest streak) consecutive days open (highest streak)
</td> </td>