-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdata_output.js
102 lines (86 loc) · 3.28 KB
/
data_output.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
var years = document.getElementById('year');
var countries = document.getElementById('country');
var resultsTable = document.getElementById('results');
var getOutputs = function() {
clearResultsTable();
var year = years.options[years.selectedIndex].text;
var country = countries.options[countries.selectedIndex].text;
if (year || country) {
var displayResults = function() {
var results = JSON.parse(dataRequest.responseText);
if (year) {
var tRow = document.createElement('tr');
tRow.appendChild(document.createElement('th'));
var tHeader = document.createElement('th');
tHeader.innerHTML = results.data.year || results.data[0].year;
tRow.appendChild(tHeader);
resultsTable.appendChild(tRow);
if (results.data.value) {
tRow = document.createElement('tr');
tHeader = document.createElement('th');
tHeader.innerHTML = results.data.country;
tRow.appendChild(tHeader);
var tData = document.createElement('td');
tData.innerHTML = results.data.value;
tRow.appendChild(tData);
resultsTable.appendChild(tRow);
} else {
for (var i = 0; i < results.data.length; i++) {
tRow = document.createElement('tr');
tHeader = document.createElement('th');
tHeader.style.textAlign = "left";
tHeader.innerHTML = results.data[i].country;
tRow.appendChild(tHeader);
var tData = document.createElement('td');
tData.innerHTML = results.data[i].value;
tRow.appendChild(tData);
resultsTable.appendChild(tRow);
}
}
} else {
var tRow = document.createElement('tr');
tRow.appendChild(document.createElement('th'));
var tHeader = document.createElement('th');
tHeader.innerHTML = results.data[0].country;
tRow.appendChild(tHeader);
resultsTable.appendChild(tRow);
for (var i = 0; i < results.data.length; i++) {
tRow = document.createElement('tr');
tHeader = document.createElement('th');
tHeader.innerHTML = results.data[i].year;
tRow.appendChild(tHeader);
var tData = document.createElement('td');
tData.innerHTML = results.data[i].value;
tRow.appendChild(tData);
resultsTable.appendChild(tRow);
}
}
};
var dataRequest = new XMLHttpRequest();
dataRequest.onload = displayResults;
dataRequest.open( "GET", 'http://gapminder-api.herokuapp.com/data/?key=' +
window.datasets[window.currentDataset] +
'&year=' + year + '&country=' + country);
dataRequest.send();
}
};
// Generic helper function
var addEvent = function(element, event, listener, useCapture) {
var capture = useCapture || false;
if (element.addEventListener) {
element.addEventListener(event, listener, useCapture);
} else if (element.attachEvent) {
element.attachEvent("on" + event, listener);
}
};
addEvent(years, 'change', getOutputs);
addEvent(countries, 'change', getOutputs);
var clearResultsTable = function() {
clearNode(resultsTable);
};
var clearNode = function(element) {
while(element.firstChild) {
clearNode(element.firstChild);
element.removeChild(element.firstChild);
}
};