Skip to content
Snippets Groups Projects
userTool.js 1.69 KiB
Newer Older
import m from 'mithril';
import { DatalistController } from 'amiv-web-ui-components';
Hermann's avatar
Hermann committed
import EditUser from './editUser';
import ViewUser from './viewUser';
import TableView from '../views/tableView';
import ItemController from '../itemcontroller';
import { loadingScreen } from '../layout';
import { ResourceHandler } from '../auth';
Hermann's avatar
Hermann committed
export class UserItem {
  constructor() {
Hermann's avatar
Hermann committed
    this.controller = new ItemController('users');
    if (!this.controller || (!this.controller.data && this.controller.modus !== 'new')) {
      return m(loadingScreen);
    }
Hermann's avatar
Hermann committed
    if (this.controller.modus !== 'view') return m(EditUser, { controller: this.controller });
    return m(ViewUser, { controller: this.controller });
  }
}

export class UserTable {
  constructor() {
    this.handler = new ResourceHandler('users');
    this.ctrl = new DatalistController(
      (query, search) => this.handler.get({ search, ...query }),
      { sort: [['lastname', 1]] },
    );
boian's avatar
boian committed

  view() {
    const tableKeys = ['firstname', 'lastname', 'nethz', 'legi', 'membership'];
    return m(TableView, {
      controller: this.ctrl,
      keys: tableKeys,
      titles: tableKeys.map(key => this.handler.schema.properties[key].title || key),
      filters: [[
        { name: 'not members', query: { membership: 'none' } },
        { name: 'regular members', query: { membership: 'regular' } },
        { name: 'extraordinary members', query: { membership: 'extraordinary' } },
        { name: 'honorary member', query: { membership: 'honorary' } },
      ], [
        { name: 'ITET', query: { department: 'itet' } },
        { name: 'MAVT', query: { department: 'mavt' } },
      ]],
      onAdd: () => { m.route.set('/newuser'); },
    });
  }
}