import m from 'mithril';
import { OauthRedirect } from './auth';
import GroupList from './groups/list';
import GroupItem from './groups/item';
import { UserItem, UserTable } from './users/userTool';
import MembershipView from './membershipTool';
import EventTable from './events/table';
import EventItem from './events/item';
import JobTable from './jobs/table';
import JobItem from './jobs/item';
import StudydocTable from './studydocs/list';
import studydocItem from './studydocs/item';
import { Layout } from './layout';
import './style';

const root = document.body;

function layoutWith(view) {
  return {
    view() {
      return m(Layout, m(view));
    },
  };
}

m.route.prefix('');
m.route(root, '/events', {
  '/users': layoutWith(UserTable),
  '/users/:id': layoutWith(UserItem),
  '/newuser': layoutWith(UserItem),
  '/groupmemberships/:id': layoutWith(MembershipView),
  '/events': layoutWith(EventTable),
  '/events/:id': layoutWith(EventItem),
  '/newevent': layoutWith(EventItem),
  '/proposeevent': layoutWith(EventItem),
  '/groups': layoutWith(GroupList),
  '/groups/:id': layoutWith(GroupItem),
  '/newgroup': layoutWith(GroupItem),
  '/oauthcallback': OauthRedirect,
  '/joboffers': layoutWith(JobTable),
  '/newjoboffer': layoutWith(JobItem),
  '/joboffers/:id': layoutWith(JobItem),
  '/studydocuments': layoutWith(StudydocTable),
  '/studydocuments/:id': layoutWith(studydocItem),
  '/newstudydocument': layoutWith(studydocItem),
});