From 734e2ece44dfbedcbcd0577925cd17ae994bf6c8 Mon Sep 17 00:00:00 2001 From: Hermann Blum <hermannsblum@yahoo.de> Date: Sun, 3 Dec 2017 16:57:40 +0100 Subject: [PATCH] add selectview for memberships --- src/userTool.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/userTool.js b/src/userTool.js index bd69e77..493278c 100644 --- a/src/userTool.js +++ b/src/userTool.js @@ -4,6 +4,7 @@ import TableView from './views/tableView'; import { inputGroup, selectGroup, submitButton } from './views/elements'; import SelectList from './views/selectList'; import { Users as config } from './config.json'; +import { getSession } from './auth'; const m = require('mithril'); @@ -11,6 +12,7 @@ class UserView extends ItemView { constructor() { super('users'); this.memberships = []; + this.groupchoice = false; } view() { @@ -29,6 +31,22 @@ class UserView extends ItemView { const detailKeys = [ 'email', 'phone', 'nethz', 'legi', 'rfid', 'department', 'gender']; + const groupSelect = m(SelectList, { + resource: 'groups', + searchKeys: ['name'], + itemView: { + view({ attrs }) { return m('span', attrs.name); }, + }, + onSubmit: (group) => { + getSession().then((apiSession) => { + apiSession.post('groupmemberships', { + user: this.data._id, + group: group._id, + }); + }); + }, + }); + return m('div', [ m('h1', `${this.data.firstname} ${this.data.lastname}`), membershipBadge, @@ -37,6 +55,7 @@ class UserView extends ItemView { m('td', this.data[key] ? this.data[key] : ''), ]))), m('h2', 'Memberships'), m('br'), + this.groupchoice ? groupSelect : '', m(TableView, { resource: 'groupmemberships', keys: ['group.name', 'expiry'], @@ -44,6 +63,9 @@ class UserView extends ItemView { where: { user: this.id }, embedded: { group: 1 }, }, + onAdd: () => { + this.groupchoice = true; + }, }), m('h2', 'Signups'), m('br'), m(TableView, { -- GitLab