/
index.js
108 lines (89 loc) · 2.48 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
var twitterSurveyAwarePercent = 37;
var eventSurveyAwarePercent = 42;
function setupSurveyChart(chartId, awarePercent) {
var data = {
series: [awarePercent, 100 - awarePercent]
};
var sum = function(a, b) { return a + b };
var options = {
width: 250,
height: 250,
fullWidth: false,
labelInterpolationFnc: function(value) {
return value + '%';
}
};
new Chartist.Pie(`#${chartId}-survey-chart`, data, options);
}
function setupSurveyCharts() {
setupSurveyChart('twitter', twitterSurveyAwarePercent);
setupSurveyChart('event', eventSurveyAwarePercent);
}
function fetchMediumData() {
Papa.parse(mediumStatsCSVPath, {
download: true,
complete: function(data) {
console.log('Medium data', data);
setupMediumChart(data);
}
});
}
function setupMediumChart(mediumData) {
// Date, Minutes Read, Views, Visitors
var labelCount = 0;
var labels = [];
var totalTimeReadMins = [];
var views = [];
var dailyUniqueVisitors = [];
var rows = mediumData.data.slice(1, mediumData.data.length - 1);
rows.forEach(function(row) {
if (row[2] !== 'null') {
labels.push( row[0] );
totalTimeReadMins.push( row[1] );
views.push( row[2] );
dailyUniqueVisitors.push( row[3] );
}
});
var data = {
labels: labels,
series: [
totalTimeReadMins,
views,
dailyUniqueVisitors
]
};
var options = {
labelOffset: 50,
height: 240,
axisX: {
showGrid: false,
labelInterpolationFnc: function(value) {
// Display one label every week
if (labelCount++ % 7 === 0) {
return moment(value).format('D/M/Y');
}
}
},
axisY: {
onlyInteger: true
},
seriesBarDistance: 5,
showPoint: false,
lineSmooth: false
};
Chartist.Line('#medium-chart', data, options);
labelCount = 0;
}
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(function() {
console.log('Service worker successfully registered');
})
.catch(function(err) {
console.error('Service worker failed to register', err);
});
} else {
console.log('Service workers not supported');
}
fetchMediumData();
setupSurveyCharts();