diff --git a/src/index.js b/src/index.js index 6eebb1b6471cdcd4bed562154999c84545d306b6..741874cb573ded58cb6b090790b4b964d56a9c67 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 0000000000000000000000000000000000000000..5319f263a6fb4c2751580f128ac644c61aea16cc --- /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 0000000000000000000000000000000000000000..7c78df7e9911486bf813a3445c811e3ef16a66b3 --- /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 cae1e55146afeb80aeb29677b867ea33fec64593..0000000000000000000000000000000000000000 --- 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 fad8748ac9e9809c3ca5b7e74427d74e35a26a5b..0000000000000000000000000000000000000000 --- 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 1e53dbf026304d6faa5ec2b38006d0654c8f3eba..2e83095838a965f696cc4ccd66820c069f38d9b4 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 5c26979d51af4bc722e8773cd8617cb0d61aa032..e3ca5b0fd6c11cc842df3a0d9920a3505ff2be66 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', {