Skip to content
Snippets Groups Projects
Commit 734dd181 authored by Sandro Lutz's avatar Sandro Lutz
Browse files

Add jobs page

parent 5521534f
No related branches found
No related tags found
1 merge request!29Joboffers
......@@ -13,6 +13,8 @@ import statuten from './views/amiv/statuten';
import contact from './views/contact';
import aufenthaltsraum from './views/amiv/aufenthaltsraum';
import board from './views/amiv/board';
import jobOfferList from './views/jobofferList';
import jobOfferDetails from './views/jobofferDetails';
m.route(document.body, '/', {
'/': {
......@@ -65,6 +67,16 @@ m.route(document.body, '/', {
return m(layout, m(eventDetails, vnode.attrs));
},
},
'/jobs': {
render() {
return m(layout, m(jobOfferList));
},
},
'/jobs/:jobId': {
render(vnode) {
return m(layout, m(jobOfferDetails, vnode.attrs));
},
},
'/profile': {
render(vnode) {
return m(layout, m(profile, vnode.attrs));
......
import m from 'mithril';
import { apiUrl } from '../models/config';
import * as jobs from '../models/joboffers';
import { log } from '../models/log';
export default class JobOfferDetails {
static oninit(vnode) {
jobs.selectOffer(vnode.attrs.jobId);
}
static view() {
const jobOffer = jobs.getSelectedOffer();
if (typeof jobOffer === 'undefined') {
return m('');
}
log(jobs.getSelectedOffer());
return m('div', [
m('h1', jobOffer.title),
m('img', { src: `${apiUrl}${jobOffer.logo.file}`, alt: jobOffer.company }),
m('p', jobOffer.description),
m('a', { href: `${apiUrl}${jobOffer.pdf.file}`, target: '_blank' }, 'Download as PDF'),
]);
}
}
import m from 'mithril';
import { apiUrl } from '../models/config';
import * as jobs from '../models/joboffers';
const date = `${new Date().toISOString().split('.')[0]}Z`;
export default class JobOfferList {
static oninit() {
jobs.load({
where: {
time_end: { $gte: date },
show_website: true,
},
sort: ['time_end'],
});
}
static onbeforeupdate(vnode, old) {
// when attrs are different it means we changed route
if (vnode.attrs.id !== old.attrs.id) {
jobs.reload();
}
}
static view() {
return m('table', [
m('thead', [
m('tr', [
m('th', 'Company'),
m('th', 'Title'),
m('th', 'Details'),
]),
]),
m('tbody', jobs.getList().map(job =>
m('tr', [
m('td', m('img', { src: `${apiUrl}${job.logo.file}`, width: '150px', alt: job.company })),
m('td', job.title),
m('td', m('a', { href: `/jobs/${job._id}`, oncreate: m.route.link }, 'Details')),
]))),
]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment