From 02faf00f312e6c5c87d380cbc25c533bd0988f98 Mon Sep 17 00:00:00 2001 From: Hermann <blumh@student.ethz.ch> Date: Fri, 18 May 2018 21:23:41 +0200 Subject: [PATCH] extend new layout to jobs --- src/index.js | 12 ++++---- src/jobs/editJob.js | 14 ++++++++++ src/jobs/item.js | 16 +++++++++++ src/jobs/jobModal.js | 16 ----------- src/jobs/newJob.js | 29 -------------------- src/jobs/{jobTable.js => table.js} | 2 +- src/jobs/viewJob.js | 44 ++---------------------------- 7 files changed, 38 insertions(+), 95 deletions(-) create mode 100644 src/jobs/editJob.js create mode 100644 src/jobs/item.js delete mode 100644 src/jobs/jobModal.js delete mode 100644 src/jobs/newJob.js rename src/jobs/{jobTable.js => table.js} (95%) diff --git a/src/index.js b/src/index.js index 6eebb1b..741874c 100644 --- a/src/index.js +++ b/src/index.js @@ -8,9 +8,8 @@ import EventTable from './events/table'; import EventItem from './events/item'; import eventDraft from './events/eventDraft'; import eventWithExport from './events/eventWithExport'; -import newJob from './jobs/newJob'; -import jobTable from './jobs/jobTable'; -import jobModal from './jobs/jobModal'; +import JobTable from './jobs/table'; +import JobItem from './jobs/item'; import Layout from './layout'; import './style'; @@ -39,10 +38,9 @@ m.route(root, '/users', { '/groups/:id': layoutWith(GroupItem), '/newgroup': layoutWith(GroupItem), '/oauthcallback': OauthRedirect, - '/joboffers': layoutWith(jobTable), - '/newjoboffer': layoutWith(newJob), - '/joboffers/:id': layoutWith(jobModal), - // '/announce': layoutWith(AnnounceTool), + '/joboffers': layoutWith(JobTable), + '/newjoboffer': layoutWith(JobItem), + '/joboffers/:id': layoutWith(JobItem), }); m.route.prefix(''); diff --git a/src/jobs/editJob.js b/src/jobs/editJob.js new file mode 100644 index 0000000..5319f26 --- /dev/null +++ b/src/jobs/editJob.js @@ -0,0 +1,14 @@ +import m from 'mithril'; +import EditView from '../views/editView'; + + +export default class newJob extends EditView { + view() { + return this.layout([ + m('h3', 'Add a New Job Offer'), + ...this.renderPage({ + title_de: { type: 'text', label: 'German Title' }, + }), + ]); + } +} diff --git a/src/jobs/item.js b/src/jobs/item.js new file mode 100644 index 0000000..7c78df7 --- /dev/null +++ b/src/jobs/item.js @@ -0,0 +1,16 @@ +import m from 'mithril'; +import viewJob from './viewJob'; +import editJob from './editJob'; +import ItemController from '../itemcontroller'; + +export default class jobModal { + constructor() { + this.controller = new ItemController('joboffers'); + } + + view() { + if (!this.controller || !this.controller.data) return ''; + if (this.controller.modus !== 'view') return m(editJob, { controller: this.controller }); + return m(viewJob, { controller: this.controller }); + } +} diff --git a/src/jobs/jobModal.js b/src/jobs/jobModal.js deleted file mode 100644 index cae1e55..0000000 --- a/src/jobs/jobModal.js +++ /dev/null @@ -1,16 +0,0 @@ -import m from 'mithril'; -import viewJob from './viewJob'; -import newJob from './newJob'; - -export default class jobModal { - constructor() { - this.edit = false; - } - - view() { - if (this.edit) { - return m(newJob); - } - return m(viewJob, { onEdit: () => { this.edit = true; } }); - } -} diff --git a/src/jobs/newJob.js b/src/jobs/newJob.js deleted file mode 100644 index fad8748..0000000 --- a/src/jobs/newJob.js +++ /dev/null @@ -1,29 +0,0 @@ -import m from 'mithril'; -import { RaisedButton } from 'polythene-mithril'; -import { EditView } from '../views/editView'; - - -export default class newJob extends EditView { - constructor(vnode) { - super(vnode, 'joboffers', {}); - } - - view() { - const submitButton = m(RaisedButton, { - disabled: !this.valid, - label: 'Submit', - events: { - onclick: () => { this.submit(); }, - }, - }); - - return m('div.maincontainer', [ - m('h3', 'Add a New Job Offer'), - ...this.renderPage({ - title_de: { type: 'text', label: 'German Title' }, - }), - m('br'), - submitButton, - ]); - } -} diff --git a/src/jobs/jobTable.js b/src/jobs/table.js similarity index 95% rename from src/jobs/jobTable.js rename to src/jobs/table.js index 1e53dbf..2e83095 100644 --- a/src/jobs/jobTable.js +++ b/src/jobs/table.js @@ -34,7 +34,7 @@ export default class JobTable { { text: 'Company', width: '21em' }, { text: 'End', width: '9em' }, ], - onAdd: () => { m.route.set('/newjob'); }, + onAdd: () => { m.route.set('/newjoboffer'); }, }); } } diff --git a/src/jobs/viewJob.js b/src/jobs/viewJob.js index 5c26979..e3ca5b0 100644 --- a/src/jobs/viewJob.js +++ b/src/jobs/viewJob.js @@ -1,39 +1,9 @@ import m from 'mithril'; -import { RaisedButton } from 'polythene-mithril'; -import { styler } from 'polythene-core-css'; import { apiUrl } from 'networkConfig'; import ItemView from '../views/itemView'; import { dateFormatter } from '../utils'; import { Property } from '../views/elements'; -const viewLayout = [ - { - '.propertyLangIndicator': { - width: '30px', - height: '20px', - float: 'left', - 'background-color': 'rgb(031,045,084)', - 'border-radius': '10px', - 'text-align': 'center', - 'line-height': '20px', - color: 'rgb(255,255,255)', - 'margin-right': '10px', - 'font-size': '11px', - }, - '.jobViewLeft': { - 'grid-column': 1, - }, - '.jobViewRight': { - 'grid-column': 2, - }, - '.jobViewRight h4': { - 'margin-top': '0px', - }, - }, -]; -styler.add('jobView', viewLayout); - - // small helper class to display both German and English content together, dependent // on which content is available. class DuoLangProperty { @@ -56,18 +26,8 @@ class DuoLangProperty { } export default class viewJob extends ItemView { - constructor() { - super('joboffers'); - } - - view({ attrs: { onEdit } }) { - if (!this.data) return ''; - - return m('div', { - style: { height: '100%', 'overflow-y': 'scroll', padding: '10px' }, - }, [ - m(RaisedButton, { label: 'Edit Joboffer', events: { onclick: onEdit } }), - // this div is the title line + view() { + return this.layout([ m('div', [ // company logo if existing this.data.img_thumbnail ? m('img', { -- GitLab