summaryrefslogtreecommitdiff
path: root/projects/osm/net.cbaines.suma/script.js
blob: 768acec77cb6617cc986c8888c45b77f9cfa8ca2 (plain)
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
function parseDate(str) {
  var y = str.substr(0,4),
      m = str.substr(4,2) - 1,
      d = str.substr(6,2);
  var D = new Date(y,m,d);
  return (D.getFullYear() == y && D.getMonth() == m && D.getDate() == d) ? D : null;
}

function getData(csv, callback) {
  Papa.parse(csv, {
    download: true,
    comments: "#",
    complete: callback
  });
}

function graph(div, results, cols, labels) {
  var data = [];

  for (var rowIndex in results.data) {
    var row = results.data[rowIndex];

    var createdRow = [];

    var date = parseDate(row[0]);

    if (date == null) {
      continue;
    }

    createdRow.push(date);

    for (var colIndex in cols) {
      var col = cols[colIndex];

      if (row.length < col) {
        continue;
      } else {
        createdRow.push(parseInt(row[col], 10));
      }
    }

    data.push(createdRow);
  }

  data.reverse();

  var dygraph = new Dygraph(div,
    data,
    {
      labels: labels,
      width: 860
    }
  );
}

getData("stats/net.cbaines.suma_overall_installs.csv", function(results) {
  graph(
    document.getElementById("current"),
    results,
    [1],
    ["Date", "Current Instalations by Device"]
  );

  graph(
    document.getElementById("total"),
    results,
    [6],
    ["Date", "Total User Installs"]
  );
});