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))} ${opts.columns.filter(c => c.inList).map(c => c.cell || defaultCell(c))}
Actions
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