From 55f1d797e9542839082298d5dccdd23da4509462 Mon Sep 17 00:00:00 2001 From: Hermann Blum <hermannsblum@yahoo.de> Date: Thu, 30 Nov 2017 14:48:38 +0100 Subject: [PATCH] Specify Table Titles add option to specify table titles and do this in accordance to the deifnitions of a given tool for a given resource Therefore, we produce individual table-wrappers per resource / tool --- src/index.js | 11 ++--------- src/userTool.js | 19 +++++++++++++++---- src/views/tableView.js | 3 ++- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index 8a3e988..9c7f442 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 54dc2d3..d04f7cf 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 b70e86e..183bc65 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 }))), ]), -- GitLab