const app = require('../../app')
const {editIcon, createIcon, deleteIcon} = require('../../assets')
/**
* @param {CrudPagesOptions} opts
*/
const list = (opts) => {
const defaultHeader = column => html`
${column.titleName} | `
const defaultCell = column => html`{{${raw(opts.camelName)}.${raw(column.camelName)}}} | `
app.component(`app${opts.pascalPlural}Page`, {
template: html`
${opts.titlePlural}
${opts.columns.filter(c => c.inList).map(c => c.header || defaultHeader(c))}
| Actions |
${opts.columns.filter(c => c.inList).map(c => c.cell || defaultCell(c))}
|
Edit
Delete
|
`,
controllerAs: 'ctrl',
controller: function(api, $mdToast) {
const crud = api.crud(opts.apiPrefix)
this.selected = []
this.data = []
this.getRecords = () => {
this.promise = crud.list().then(data => {
this.data = data
})
}
this.delete = async (record) => {
try {
await crud.delete(record.id)
$mdToast.showSimple(`${opts.titleName} deleted.`)
} catch (err) {
console.error(err)
$mdToast.showSimple(`Could not delete ${opts.titleName}: ${err.message || err}`)
}
}
this.getRecords()
}
})
}
module.exports = list