views/show.jsView |
---|
64 | 64 … | |
65 | 65 … | return [ |
66 | 66 … | h('ScryShowResults', { style }, [ |
67 | 67 … | times.map(ScryShowTime), |
| 68 … | + ScryShowSummary(rows), |
68 | 69 … | rows.map(ScryShowRow) |
69 | 70 … | ]) |
70 | 71 … | ] |
71 | 72 … | }) |
119 | 120 … | }) |
|
120 | 121 … | ] |
121 | 122 … | } |
122 | 123 … | |
| 124 … | + function ScryShowSummary (rows) { |
| 125 … | + if (!rows.length) return |
| 126 … | + |
| 127 … | + const participants = rows.filter(r => r.position[0] !== null).length |
| 128 … | + |
| 129 … | + const counts = rows[0].position.map((_, i) => { |
| 130 … | + return rows.reduce((acc, row) => { |
| 131 … | + if (row.position[i] === true) acc += 1 |
| 132 … | + return acc |
| 133 … | + }, 0) |
| 134 … | + }) |
| 135 … | + return [ |
| 136 … | + h('div.participants', participants === 1 |
| 137 … | + ? `${participants} participant` |
| 138 … | + : `${participants} participants` |
| 139 … | + ), |
| 140 … | + counts.map(n => h('div.count', `${n}${tick()}`)) |
| 141 … | + ] |
| 142 … | + } |
| 143 … | + |
123 | 144 … | function fetchState () { |
124 | 145 … | scuttle.poll.async.get(poll.key, (err, doc) => { |
125 | 146 … | if (err) return console.error(err) |
126 | 147 … | |