Files
datasheet-server/src/blueprinters/columns.js
Lachlan Kermode 30f747bcaf add blueprinter
2019-01-17 16:02:21 +00:00

28 lines
895 B
JavaScript

/**
* Each resource item is an object with values labelled according
* to column names specified in the sheet's first row. If two or more
* column names are the same except for a different integer at the end
* (e.g. 'tag1', and 'tag2'), then the values of those two columns are
* aggregated into a list, which is the value of the prefix's key ('tag').
* Any values in those columns that are empty will NOT be added to the list.
*
* @param {type} data list of lists representing sheet data.
* @return {type} Array the structured data.
*/
export default (data) => {
const columnNames = data[0]
const columns = columnNames.map(name => ([]))
data.forEach((row, idx) => {
if (idx === 0) return
row.forEach((item, idx) => {
columns[idx].push(item)
})
})
return columns.map((column, idx) => ({
name: columnNames[idx],
items: column
}))
}