diff --git a/src/index.js b/src/index.js index 8a3e9886d68925d242d9bc9a9d759adbde4182d6..9c7f4425de43bdb73b7143c8c50eda10764ab6e0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ import { LoginScreen } from './login'; import TableView from './views/tableView'; -import UserModal from './userTool'; +import { UserModal, UserTable } from './userTool'; const m = require('mithril'); @@ -10,14 +10,7 @@ const root = main; m.route(root, '/users', { - '/users': { - view() { - return m(TableView, { - resource: 'users', - keys: ['firstname', 'lastname', 'nethz', 'legi', 'membership'], - }); - }, - }, + '/users': UserTable, '/users/:id': UserModal, '/events': { view() { diff --git a/src/userTool.js b/src/userTool.js index 54dc2d3004db2c9c5e3e52d86a70d180ac5a996d..d04f7cf154265f1e60fbe0dbc17e7aa3802f7bbd 100644 --- a/src/userTool.js +++ b/src/userTool.js @@ -1,6 +1,6 @@ import { ItemView } from './views/itemView'; import { EditView, inputGroup, selectGroup } from './views/editView'; -import Table from './views/tableView'; +import TableView from './views/tableView'; const m = require('mithril'); @@ -15,6 +15,7 @@ const keyDescriptors = { department: 'Department', email: 'Email', }; +const tableKeys = ['firstname', 'lastname', 'nethz', 'legi', 'membership']; class UserView extends ItemView { constructor() { @@ -46,7 +47,7 @@ class UserView extends ItemView { m('td', this.data[key] ? this.data[key] : ''), ]))), m('h2', 'Memberships'), m('br'), - m(Table, { + m(TableView, { resource: 'groupmemberships', keys: ['group.name', 'expiry'], querystring: m.buildQueryString({ @@ -55,7 +56,7 @@ class UserView extends ItemView { }), }), m('h2', 'Signups'), m('br'), - m(Table, { + m(TableView, { resource: 'eventsignups', keys: ['event.title_de'], querystring: m.buildQueryString({ @@ -114,7 +115,7 @@ class UserEdit extends EditView { } } -export default class UserModal { +export class UserModal { constructor() { this.edit = false; } @@ -131,3 +132,13 @@ export default class UserModal { ]); } } + +export class UserTable { + view() { + return m(TableView, { + resource: 'users', + keys: tableKeys, + titles: tableKeys.map(key => keyDescriptors[key] || key), + }); + } +} diff --git a/src/views/tableView.js b/src/views/tableView.js index b70e86e2231998ce47f96c7be23c4befdf9390f4..183bc65cc3e3b6d48d484bbfd4e3efa2c6068faf 100644 --- a/src/views/tableView.js +++ b/src/views/tableView.js @@ -21,6 +21,7 @@ export default class TableView { constructor(vnode) { this.items = []; this.show_keys = vnode.attrs.keys; + this.titles = vnode.attrs.titles || this.show_keys; this.resource = vnode.attrs.resource; // the querystring is either given or will be parsed from the url if (vnode.attrs.querystring) { @@ -47,7 +48,7 @@ export default class TableView { view() { return m('div', [ m('table.table.table-hover', [ - m('thead', m('tr', this.show_keys.map(title => m('th', title)))), + m('thead', m('tr', this.titles.map(title => m('th', title)))), m('tbody', this.items.map(item => m(TableRow, { show_keys: this.show_keys, data: item }))), ]),