-
Notifications
You must be signed in to change notification settings - Fork 28
/
real-world.js
52 lines (52 loc) · 1.37 KB
/
real-world.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
/**
* @hidden
* @packageDocumentation
*/
const { JsonPointer } = require('../');
const bent = require('bent');
const fs = require('fs');
const getJSON = bent('json');
const url =
'https://data.ct.gov/api/views/rybz-nyjw/rows.json?accessType=DOWNLOAD';
const datasetName = new JsonPointer('/meta/view/name');
const datasetColumns = new JsonPointer('/meta/view/columns');
const datasetData = new JsonPointer('/data');
const ColumnsOfInterest = [
'date',
'age',
'sex',
'race',
'deathcity',
'descriptionofinjury',
'cod',
];
const dataColumns = [];
async function run() {
const data = await getJSON(url);
console.log(`Report: ${datasetName.get(data)}`);
const columns = datasetColumns.get(data);
// positions are offset by metadata.
let i = -1;
for (const c of columns) {
++i;
const idx = ColumnsOfInterest.indexOf(c.fieldName);
if (idx !== -1) {
dataColumns[idx] = i;
}
}
const rows = datasetData.get(data);
for (const row of rows) {
console.log(
`${row[dataColumns[0]]} "${row[dataColumns[3]]}" ${row[dataColumns[2]]} ${
row[dataColumns[1]]
}yo died in ${row[dataColumns[4]]} of ${row[dataColumns[6]]} ${
row[dataColumns[5]] && row[dataColumns[5]] !== 'null'
? '(' + row[dataColumns[5]] + ')'
: ''
}`,
);
}
}
run().catch((e) => {
console.error(`Got error: ${e.stack || e}`);
});