( rows: DbRow[], groupField: DbField, optionOrder: string[] )
| 142 | * references a removed option. |
| 143 | */ |
| 144 | export function boardColumns( |
| 145 | rows: DbRow[], |
| 146 | groupField: DbField, |
| 147 | optionOrder: string[] |
| 148 | ): BoardColumn[] { |
| 149 | const buckets = new Map<string, DbRow[]>() |
| 150 | const known = new Set(optionOrder) |
| 151 | for (const value of optionOrder) buckets.set(value, []) |
| 152 | buckets.set(EMPTY_GROUP, []) |
| 153 | for (const row of rows) { |
| 154 | const v = cell(row, groupField.id).trim() |
| 155 | const key = v.length > 0 && known.has(v) ? v : EMPTY_GROUP |
| 156 | buckets.get(key)!.push(row) |
| 157 | } |
| 158 | const columns = optionOrder.map((value) => ({ key: value, rows: buckets.get(value)! })) |
| 159 | columns.push({ key: EMPTY_GROUP, rows: buckets.get(EMPTY_GROUP)! }) |
| 160 | return columns |
| 161 | } |
no test coverage detected