-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgenerate-results.js
101 lines (86 loc) · 2.43 KB
/
generate-results.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
const fs = require('fs')
const outdent = require('outdent')
function generateResults (year) {
const data = require(`./data/${year}.json`)
const responses =
data
.map(response => {
const total = (
Object
.entries(response.answers)
.map(answer => answer[1])
// Add all answer results together
.reduce((a, b) => a + b, 0)
)
return {
...response,
total
}
})
const overallTotalResponses =
responses
// Get the first question, which should only have single answers.
.filter(response => response.id === 1)
.map(response => response.total)
[0]
let output = outdent`
# Government frontend survey results ${year}
`
responses.forEach(response => {
if (response.type === 'open') {
const formattedAnswers =
Object
.entries(response.answers)
.map(answer => {
const key = answer[0]
const value = answer[1]
let formattedValue = ''
if (typeof value !== 'boolean' && value !== 'Done') {
formattedValue = '\n' + value.map(v => ` - ${v}`).join('\n')
}
return outdent`
- ${key}${formattedValue}
`
}).join('\n')
output += outdent`
## Question ${response.id}: ${response.question}
### Answers
${formattedAnswers}
`
} else {
const formattedAnswers =
Object
.entries(response.answers)
.sort((a, b) => {
const valueA = a[1]
const valueB = b[1]
if (valueA < valueB) {
return 1
} else {
return -1
}
})
.map(answer => {
const key = answer[0]
const value = answer[1]
const percentage = ((value / response.total) * 100).toFixed(1)
return `| ${key} | ${value} | ${percentage}% |`
}).join('\n')
output += outdent`
## Question ${response.id}: ${response.question}
### Answers
| Name | Count | Percentage |
| --- | --- | --- |
${formattedAnswers}
`
}
})
fs.writeFile(`./results-${year}.md`, output, (error) => {
if (error) {
return console.log(err)
}
console.log(`results-${year}.md updated`)
})
}
generateResults('2016')
generateResults('2018')