|
var t = document.createElement('table'); |
|
var headings = ['Get Moving!','Steps','Minutes Exercised','Very Active','Moderately Active','Lightly Active']; |
|
var t_html = '<thead><tr><th>' + headings.join('</th><th>') + '</th></tr></thead>'; |
|
var startDate = new Date(2019, 0, 7); |
|
var endDate = new Date(); |
|
endDate.setHours(0); |
|
for ( var i=0; i<70; i++) { |
|
var curDate = new Date(startDate); |
|
curDate.setDate(startDate.getDate() + i); |
|
var iso = curDate.toISOString().split('T')[0]; |
|
var tds = Array(headings.length); |
|
tds[0] = iso; |
|
if ( i%7 == 0 ) { |
|
t_html = t_html + '<tr><td colspan="'+headings.length+'">Week '+ ((i+7)/7) +'</td></tr>'; |
|
} |
|
t_html = t_html + '<tr id="get_moving_'+iso+'"><td>' + |
|
tds.join('</td><td>') + '</td></tr>'; |
|
} |
|
t.innerHTML = t_html; |
|
document.body.prepend(t); |
|
|
|
var dataUrl = "https://www.fitbit.com/graph/getNewGraphData?apiFormat=json"; |
|
var stepsUrl = dataUrl + '&type=steps&dateFrom=' + |
|
startDate.toISOString().split('T')[0] + |
|
'&dateTo=' + endDate.toISOString().split('T')[0]; |
|
var activityUrl = dataUrl + '&type=intradayCaloriesBurned'; |
|
|
|
var xhrCall = function(url, callback) { |
|
var xhr = new XMLHttpRequest(); |
|
xhr.onreadystatechange = function() { |
|
if (xhr.readyState == XMLHttpRequest.DONE) { |
|
callback(JSON.parse(xhr.responseText)); |
|
} |
|
} |
|
xhr.open('GET', url); |
|
xhr.send(); |
|
} |
|
|
|
var populateDay = function(day){ |
|
var stepsDate = new Date(day.dateTime.split(' ')[0]); |
|
var iso = stepsDate.toISOString().split('T')[0]; |
|
var row = document.getElementById('get_moving_' + iso).children; |
|
row[1].innerText = day.value; |
|
xhrCall(activityUrl + '&dateFrom=' + iso + '&dateTo=' + iso, function(data) { |
|
var activities = data.graph.dataSets.activity.dataPoints; |
|
var levelSum = {}; |
|
for ( var i=0; i<activities.length; i++ ) { |
|
var level = activities[i].activityLevel; |
|
if ( !levelSum[level] ) { |
|
levelSum[level] = 0; |
|
} |
|
levelSum[level] = levelSum[level] + 5; |
|
} |
|
row[2].innerText = (levelSum.VERY_ACTIVE || 0)+(levelSum.MODERATELY_ACTIVE || 0); |
|
row[3].innerText = levelSum.VERY_ACTIVE || ''; |
|
row[4].innerText = levelSum.MODERATELY_ACTIVE || ''; |
|
row[5].innerText = levelSum.LIGHTLY_ACTIVE || ''; |
|
}); |
|
} |
|
|
|
xhrCall(stepsUrl, function(data) { |
|
var days = data.graph.dataSets.activity.dataPoints; |
|
for ( var i=0; i<days.length; i++) { |
|
populateDay(days[i]); |
|
} |
|
}); |
can I ask for a column with the sum of Active and Moderately Active :)