diff --git a/src/groups/viewGroup.js b/src/groups/viewGroup.js index 6be5ed14265ffe2fef58b1744fcc4ab19505ee34..91ad18786243c03e7c8089ba947d419186f047c4 100644 --- a/src/groups/viewGroup.js +++ b/src/groups/viewGroup.js @@ -12,6 +12,8 @@ import { colors } from '../style'; import ItemView from '../views/itemView'; import TableView from '../views/tableView'; import DatalistController from '../listcontroller'; +import RelationlistController from '../relationlistcontroller'; + import SelectList from '../views/selectList'; import { ResourceHandler } from '../auth'; @@ -21,10 +23,7 @@ import { ResourceHandler } from '../auth'; class MembersTable { constructor({ attrs: { group } }) { this.group_id = group; - this.ctrl = new DatalistController('groupmemberships', { - embedded: { user: 1 }, - where: { group }, - }, ['user.email', 'user.firstname', 'user.lastname'], false); + this.ctrl = new RelationlistController('groupmemberships', 'users', { where: { group } }); // true while in the modus of adding a member this.addmode = false; this.userController = new DatalistController( @@ -203,8 +202,8 @@ export default class viewGroup extends ItemView { m('h1', this.data.name), this.data.requires_storage && m(chip, { svg: icons.cloud, - color: '#ffffff', - background: colors.orange, + svgColor: '#ffffff', + svgBackground: colors.orange, ...stdMargin, }, 'has a folder on the AMIV Cloud'), m('div', { style: { display: 'flex' } }, [ diff --git a/src/users/viewUser.js b/src/users/viewUser.js index cbf68074c54829685acf157931d29e3cd9c813ce..ae3fa6e9249948a6b19c0d16891e18491e6cc701 100644 --- a/src/users/viewUser.js +++ b/src/users/viewUser.js @@ -4,6 +4,7 @@ import ItemView from '../views/itemView'; import TableView from '../views/tableView'; import SelectList from '../views/selectList'; import DatalistController from '../listcontroller'; +import RelationlistController from '../relationlistcontroller'; import { chip, icons, Property } from '../views/elements'; import { colors } from '../style'; @@ -11,15 +12,13 @@ export default class UserView extends ItemView { constructor(vnode) { super(vnode); // a controller to handle the groupmemberships of this user - this.groupmemberships = new DatalistController('groupmemberships', { + this.groupmemberships = new RelationlistController('groupmemberships', 'groups', { where: { user: this.data._id }, - embedded: { group: 1 }, - }, ['group.name'], false); + }); // a controller to handle the eventsignups of this user - this.eventsignups = new DatalistController('eventsignups', { + this.eventsignups = new RelationlistController('eventsignups', 'events', { where: { user: this.data._id }, - embedded: { event: 1 }, - }, ['event.title_de', 'event.title_en'], false); + }); // initially, don't display the choice field for a new group // (this will be displayed once the user clicks on 'new') this.groupchoice = false; @@ -85,6 +84,8 @@ export default class UserView extends ItemView { onCancel: () => { this.groupchoice = false; m.redraw(); }, }); + const now = new Date(); + return this.layout([ m('div.maincontainer', [ m('h1', `${this.data.firstname} ${this.data.lastname}`), @@ -116,6 +117,13 @@ export default class UserView extends ItemView { keys: ['event.title_de'], titles: ['event'], clickOnRows: (data) => { m.route.set(`/events/${data.event._id}`); }, + filters: [[{ + name: 'upcoming', + query: { time_start: { $gte: `${now.toISOString().slice(0, -5)}Z` } }, + }, { + name: 'past', + query: { time_start: { $lt: `${now.toISOString().slice(0, -5)}Z` } }, + }]], }), ]), })),