Skip to content
Snippets Groups Projects
Commit a64e8514 authored by Hermann's avatar Hermann
Browse files

extend new layout to users

parent 63305084
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ import m from 'mithril'; ...@@ -2,7 +2,7 @@ import m from 'mithril';
import { OauthRedirect } from './auth'; import { OauthRedirect } from './auth';
import GroupList from './groups/list'; import GroupList from './groups/list';
import GroupItem from './groups/item'; import GroupItem from './groups/item';
import { UserModal, UserTable, NewUser } from './users/userTool'; import { UserItem, UserTable } from './users/userTool';
import { MembershipView } from './membershipTool'; import { MembershipView } from './membershipTool';
import EventTable from './events/table'; import EventTable from './events/table';
import EventItem from './events/item'; import EventItem from './events/item';
...@@ -27,8 +27,8 @@ function layoutWith(view) { ...@@ -27,8 +27,8 @@ function layoutWith(view) {
m.route.prefix(''); m.route.prefix('');
m.route(root, '/users', { m.route(root, '/users', {
'/users': layoutWith(UserTable), '/users': layoutWith(UserTable),
'/users/:id': layoutWith(UserModal), '/users/:id': layoutWith(UserItem),
'/newuser': layoutWith(NewUser), '/newuser': layoutWith(UserItem),
'/groupmemberships/:id': layoutWith(MembershipView), '/groupmemberships/:id': layoutWith(MembershipView),
'/events': layoutWith(EventTable), '/events': layoutWith(EventTable),
'/events/:id': layoutWith(EventItem), '/events/:id': layoutWith(EventItem),
......
import m from 'mithril'; import m from 'mithril';
import { RaisedButton, RadioGroup } from 'polythene-mithril'; import { RadioGroup } from 'polythene-mithril';
import { EditView } from '../views/editView'; import EditView from '../views/editView';
export default class UserEdit extends EditView { export default class UserEdit extends EditView {
constructor(vnode) {
super(vnode, 'users', {});
}
view() { view() {
// do not render anything if there is no data yet return this.layout([
if (!this.data) return m.trust('');
const submitButton = m(RaisedButton, {
disabled: !this.valid,
label: 'Submit',
events: { onclick: () => { this.submit(); } },
});
return m('form', [
...this.renderPage({ ...this.renderPage({
lastname: { type: 'text', label: 'Last Name' }, lastname: { type: 'text', label: 'Last Name' },
firstname: { type: 'text', label: 'First Name' }, firstname: { type: 'text', label: 'First Name' },
...@@ -63,7 +50,6 @@ export default class UserEdit extends EditView { ...@@ -63,7 +50,6 @@ export default class UserEdit extends EditView {
], ],
onChange: ({ value }) => { this.data.department = value; }, onChange: ({ value }) => { this.data.department = value; },
}), }),
submitButton,
]); ]);
} }
} }
import m from 'mithril'; import m from 'mithril';
import UserEdit from './editUser'; import EditUser from './editUser';
import UserView from './viewUser'; import ViewUser from './viewUser';
import TableView from '../views/tableView'; import TableView from '../views/tableView';
import { users as config } from '../resourceConfig.json'; import { users as config } from '../resourceConfig.json';
import DatalistController from '../listcontroller'; import DatalistController from '../listcontroller';
import ItemController from '../itemcontroller'
export class NewUser extends UserEdit { export class UserItem {
constructor(vnode) {
super(vnode);
this.data = {
membership: 'regular',
};
this.valid = false;
// if the creation is finished, UI should switch to new User
this.callback = (response) => { m.route.set(`/users/${response.data._id}`); };
}
}
export class UserModal {
constructor() { constructor() {
this.edit = false; this.controller = new ItemController('users');
} }
view() { view() {
if (this.edit) { if (!this.controller || !this.controller.data) return '';
return m(UserEdit, { onfinish: () => { this.edit = false; m.redraw(); } }); if (this.controller.modus !== 'view') return m(EditUser, { controller: this.controller });
} return m(ViewUser, { controller: this.controller });
// else
return m('div', [
m('div.btn.btn-default', { onclick: () => { this.edit = true; } }, 'Edit'),
m('br'),
m(UserView),
]);
} }
} }
......
...@@ -6,8 +6,8 @@ import { users as config } from '../resourceConfig.json'; ...@@ -6,8 +6,8 @@ import { users as config } from '../resourceConfig.json';
import DatalistController from '../listcontroller'; import DatalistController from '../listcontroller';
export default class UserView extends ItemView { export default class UserView extends ItemView {
constructor() { constructor(vnode) {
super('users'); super(vnode);
// a controller to handle the groupmemberships of this user // a controller to handle the groupmemberships of this user
this.groupmemberships = new DatalistController('groupmemberships', { this.groupmemberships = new DatalistController('groupmemberships', {
where: { user: this.id }, where: { user: this.id },
...@@ -34,17 +34,10 @@ export default class UserView extends ItemView { ...@@ -34,17 +34,10 @@ export default class UserView extends ItemView {
} }
oninit() { oninit() {
this.handler.getItem(this.id, this.embedded).then((item) => {
this.data = item;
m.redraw();
});
this.groupmemberships.refresh(); this.groupmemberships.refresh();
} }
view() { view() {
// do not render anything if there is no data yet
if (!this.data) return m.trust('');
let membershipBadge = m('span.label.label-important', 'No Member'); let membershipBadge = m('span.label.label-important', 'No Member');
if (this.data.membership === 'regular') { if (this.data.membership === 'regular') {
membershipBadge = m('span.label.label-success', 'Member'); membershipBadge = m('span.label.label-success', 'Member');
...@@ -73,7 +66,7 @@ export default class UserView extends ItemView { ...@@ -73,7 +66,7 @@ export default class UserView extends ItemView {
}, },
}); });
return m('div', [ return this.layout([
m('h1', `${this.data.firstname} ${this.data.lastname}`), m('h1', `${this.data.firstname} ${this.data.lastname}`),
membershipBadge, membershipBadge,
m('table', detailKeys.map(key => m('tr', [ m('table', detailKeys.map(key => m('tr', [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment