Commit c50f071a authored by Hermann's avatar Hermann
Browse files

xMerge branch 'master' into feature/addpasswordfield

parents a3235332 4f30fbc5
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
"start": "webpack-dev-server --hot --inline", "start": "webpack-dev-server --hot --inline",
"build": "webpack -p --config webpack.config.prod.js", "build": "webpack -p --config webpack.config.prod.js",
"build-dev": "webpack -p --config webpack.config.dev.js", "build-dev": "webpack -p --config webpack.config.dev.js",
"lint": "eslint src/**.js" "lint": "eslint src/**/*.js src/*.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
"@material/drawer": "^0.30.0", "@material/drawer": "^0.30.0",
"@material/select": "^0.35.1", "@material/select": "^0.35.1",
"ajv": "^5.5.0", "ajv": "^5.5.0",
"amiv-web-ui-components": "git+https://git@gitlab.ethz.ch/amiv/web-ui-components.git#61e129378f57e98d3f60106298251c3b0f4b2286", "amiv-web-ui-components": "git+https://git@gitlab.ethz.ch/amiv/web-ui-components.git#217aaba4e1ba269d4f27f134e95df8947036ea20",
"axios": "^0.17.1", "axios": "^0.17.1",
"client-oauth2": "^4.2.0", "client-oauth2": "^4.2.0",
"mithril": "^1.1.6", "mithril": "^1.1.6",
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
"babel-preset-env": "^1.7.0", "babel-preset-env": "^1.7.0",
"compression-webpack-plugin": "^1.1.11", "compression-webpack-plugin": "^1.1.11",
"css-loader": "^0.28.11", "css-loader": "^0.28.11",
"eslint": "^4.10.0", "eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0", "eslint-config-airbnb-base": "^12.1.0",
"eslint-loader": "^1.9.0", "eslint-loader": "^1.9.0",
"eslint-plugin-import": "^2.9.0", "eslint-plugin-import": "^2.9.0",
......
...@@ -7,6 +7,7 @@ import { ...@@ -7,6 +7,7 @@ import {
TextField, TextField,
Button, Button,
} from 'polythene-mithril'; } from 'polythene-mithril';
import Stream from 'mithril/stream';
import { styler } from 'polythene-core-css'; import { styler } from 'polythene-core-css';
import { DropdownCard, DatalistController } from 'amiv-web-ui-components'; import { DropdownCard, DatalistController } from 'amiv-web-ui-components';
// eslint-disable-next-line import/extensions // eslint-disable-next-line import/extensions
...@@ -134,6 +135,7 @@ export default class viewEvent extends ItemView { ...@@ -134,6 +135,7 @@ export default class viewEvent extends ItemView {
this.emailAdresses = false; this.emailAdresses = false;
this.emaillist = ['']; this.emaillist = [''];
this.showAllEmails = false; this.showAllEmails = false;
this.modalDisplay = Stream('none');
} }
oninit() { oninit() {
...@@ -192,6 +194,10 @@ export default class viewEvent extends ItemView { ...@@ -192,6 +194,10 @@ export default class viewEvent extends ItemView {
let displaySpots = '-'; let displaySpots = '-';
const stdMargin = { margin: '5px' }; const stdMargin = { margin: '5px' };
// Get the image and insert it inside the modal -
// use its "alt" text as a caption
const modalImg = document.getElementById('modalImg');
if (this.data.spots !== 0) { if (this.data.spots !== 0) {
displaySpots = this.data.spots; displaySpots = this.data.spots;
} }
...@@ -289,7 +295,7 @@ export default class viewEvent extends ItemView { ...@@ -289,7 +295,7 @@ export default class viewEvent extends ItemView {
]), ]),
// a list of email adresses of all participants, easy to copy-paste // a list of email adresses of all participants, easy to copy-paste
m(DropdownCard, { title: 'Email Adresses' }, [ m(DropdownCard, { title: 'Email Adresses', style: { margin: '10px 0' } }, [
m(Switch, { m(Switch, {
defaultChecked: false, defaultChecked: false,
label: 'show unaccepted', label: 'show unaccepted',
...@@ -300,8 +306,61 @@ export default class viewEvent extends ItemView { ...@@ -300,8 +306,61 @@ export default class viewEvent extends ItemView {
}), }),
m(EmailList, { list: this.emaillist }), m(EmailList, { list: this.emaillist }),
]), ]),
]),
m(DropdownCard, { title: 'Images' }, [
m('div', {
style: {
display: 'flex',
},
}, [
m('div', {
style: {
width: '40%',
padding: '5px',
},
}, [
this.data.img_poster && m('div', 'Poster'),
this.data.img_poster && m('img', {
src: `${apiUrl}${this.data.img_poster.file}`,
width: '100%',
onclick: () => {
this.modalDisplay('block');
modalImg.src = `${apiUrl}${this.data.img_poster.file}`;
},
}),
]),
m('div', {
style: {
width: '52%',
padding: '5px',
},
}, [
m('div', [
this.data.img_infoscreen && m('div', 'Infoscreen'),
this.data.img_infoscreen && m('img', {
src: `${apiUrl}${this.data.img_infoscreen.file}`,
width: '100%',
onclick: () => {
this.modalDisplay('block');
modalImg.src = `${apiUrl}${this.data.img_infoscreen.file}`;
},
}),
]),
m('div', [
this.data.img_banner && m('div', 'Banner'),
this.data.img_banner && m('img', {
src: `${apiUrl}${this.data.img_banner.file}`,
width: '100%',
onclick: () => {
this.modalDisplay('block');
modalImg.src = `${apiUrl}${this.data.img_banner.file}`;
},
}),
]),
]),
]),
]),
]),
m('div.viewcontainercolumn', [ m('div.viewcontainercolumn', [
this.data.time_register_start ? m(ParticipantsTable, { this.data.time_register_start ? m(ParticipantsTable, {
where: { accepted: true, event: this.data._id }, where: { accepted: true, event: this.data._id },
...@@ -313,7 +372,46 @@ export default class viewEvent extends ItemView { ...@@ -313,7 +372,46 @@ export default class viewEvent extends ItemView {
}) : '', }) : '',
]), ]),
]), ]),
m('div', {
id: 'imgModal',
style: {
display: this.modalDisplay(),
position: 'fixed',
'z-index': '100',
'padding-top': '100px',
left: 0,
top: 0,
width: '100vw',
height: '100vh',
overflow: 'auto',
'background-color': 'rgba(0, 0, 0, 0.9)',
},
}, [
m('img', {
id: 'modalImg',
style: {
margin: 'auto',
display: 'block',
'max-width': '80vw',
'max-heigth': '80vh',
},
}),
m('div', {
onclick: () => {
this.modalDisplay('none');
},
style: {
top: '15px',
right: '35px',
color: '#f1f1f1',
transition: '0.3s',
'z-index': 10,
position: 'absolute',
'font-size': '40px',
'font-weight': 'bold',
},
}, 'x'),
]),
], [ ], [
m(Button, { m(Button, {
label: 'Clone Event', label: 'Clone Event',
......
...@@ -8,6 +8,8 @@ import EventTable from './events/table'; ...@@ -8,6 +8,8 @@ import EventTable from './events/table';
import EventItem from './events/item'; import EventItem from './events/item';
import JobTable from './jobs/table'; import JobTable from './jobs/table';
import JobItem from './jobs/item'; import JobItem from './jobs/item';
import StudydocTable from './studydocs/list';
import studydocItem from './studydocs/item';
import { Layout } from './layout'; import { Layout } from './layout';
import './style'; import './style';
...@@ -38,4 +40,7 @@ m.route(root, '/events', { ...@@ -38,4 +40,7 @@ m.route(root, '/events', {
'/joboffers': layoutWith(JobTable), '/joboffers': layoutWith(JobTable),
'/newjoboffer': layoutWith(JobItem), '/newjoboffer': layoutWith(JobItem),
'/joboffers/:id': layoutWith(JobItem), '/joboffers/:id': layoutWith(JobItem),
'/studydocuments': layoutWith(StudydocTable),
'/studydocuments/:id': layoutWith(studydocItem),
'/newstudydocument': layoutWith(studydocItem),
}); });
...@@ -39,7 +39,7 @@ export default class ItemController { ...@@ -39,7 +39,7 @@ export default class ItemController {
cancel() { cancel() {
if (this.modus === 'edit') this.changeModus('view'); if (this.modus === 'edit') this.changeModus('view');
if (this.modus === 'new') m.route.set(`/${this.resource}`); else m.route.set(`/${this.resource}`);
} }
changeModus(newModus) { changeModus(newModus) {
......
...@@ -143,8 +143,9 @@ export class Layout { ...@@ -143,8 +143,9 @@ export class Layout {
title: 'Job offers', title: 'Job offers',
}), }),
m(Menupoint, { m(Menupoint, {
href: '/announce', href: '/studydocuments',
title: 'Announce', icon: icons.studydoc,
title: 'Studydocs',
}), }),
], ],
}), }),
......
...@@ -117,5 +117,14 @@ ...@@ -117,5 +117,14 @@
}, },
"sessions": { "sessions": {
"searchKeys": [] "searchKeys": []
},
"studydocuments": {
"searchKeys": [
"title",
"lecture",
"professor",
"author",
"uploader"
]
} }
} }
import m from 'mithril';
import { RadioGroup } from 'polythene-mithril';
import EditView from '../views/editView';
export default class editDoc extends EditView {
view() {
return this.layout([
m('h3', 'Add a New Studydocument'),
...this.form.renderPage({
// uploader
author: { type: 'text', label: 'Author' },
files: { type: 'text', label: 'File' }, // buggy only singel file possible
lecture: { type: 'text', label: 'Lecture' },
title: { type: 'text', label: 'Title' },
professor: { type: 'text', label: 'Professor' },
course_year: { type: 'number', lable: 'Year' }, // semester unterscheidung, plausibility
}),
// department //drop-down-list
m('div', 'Semester'), // formatieren
m(RadioGroup, {
name: 'semester',
buttons: [
{ value: '1', label: '1.', defaultChecked: this.form.data.gender === '1' },
{ value: '2', label: '2', defaultChecked: this.form.data.gender === '2' },
{ value: '3', label: '3', defaultChecked: this.form.data.gender === '3' },
{ value: '4', label: '4', defaultChecked: this.form.data.gender === '4' },
{ value: '5', label: '5+', defaultChecked: this.form.data.gender === '5' },
],
onChange: ({ value }) => { console.log(value); this.form.data.gender = value; },
}),
m(RadioGroup, {
name: 'type',
buttons: [{
value: 'exames',
label: 'exames',
defaultChecked: this.form.data.gender === 'exames',
}, {
value: 'cheat_sheet',
label: 'cheat sheet',
defaultChecked: this.form.data.gender === 'cheat_sheet',
}, {
value: 'lecture_documents',
label: 'lecture documents',
defaultChecked: this.form.data.gender === 'lecture_documents',
}, {
value: 'exercise',
label: 'exercise',
defaultChecked: this.form.data.gender === 'exercise',
}],
onChange: ({ value }) => { console.log(value); this.form.data.gender = value; },
}),
]);
}
}
import m from 'mithril';
import viewDoc from './viewDoc';
import editDoc from './editDoc';
import ItemController from '../itemcontroller';
import { loadingScreen } from '../layout';
export default class studydocItem {
constructor() {
this.controller = new ItemController('studydocuments');
}
view() {
if (!this.controller || !this.controller.data) return m(loadingScreen);
if (this.controller.modus !== 'view') return m(editDoc, { controller: this.controller });
return m(viewDoc, { controller: this.controller });
}
}
import m from 'mithril';
import { DatalistController } from 'amiv-web-ui-components';
import { studydocuments as config } from '../resourceConfig.json';
import TableView from '../views/tableView';
import { ResourceHandler } from '../auth';
/* Table of all studydocuments */
export default class StudydocTable {
constructor() {
this.handler = new ResourceHandler('studydocuments', config.tableKeys);
this.ctrl = new DatalistController((query, search) => this.handler.get({ search, ...query }));
}
getItemData(data) {
return [
m('div', { style: { width: 'calc(100% - 30em)' } }, data.title),
m('div', { style: { width: '6em' } }, data.department.toUpperCase()),
m('div', { style: { width: '6em' } }, data.semester),
m('div', { style: { width: '18em' } }, data.lecture),
];
}
view() {
return m(TableView, {
controller: this.ctrl,
keys: config.tableKeys,
tileContent: this.getItemData,
titles: [
{ text: 'Titel', width: 'calc(100% - 30em)' },
{ text: 'Department', width: '6em' },
{ text: 'Semester', width: '6em' },
{ text: 'Lecture', width: '18em' },
],
onAdd: () => { m.route.set('/newstudydocument'); },
});
}
}
import m from 'mithril';
import ItemView from '../views/itemView';
import { Property } from '../views/elements';
export default class viewDoc extends ItemView {
view() {
const stdMarg = { margin: '5px' };
return this.layout(m('div.maincontainer', [
m('h3', {
style: { 'margin-top': '0px', 'margin-bottom': '0px' },
}, this.data.title),
// below the title, most important details are listed
m('div', { style: { display: 'flex' } }, [
this.data.lecture && m(Property, {
title: 'Lecture',
style: stdMarg,
}, `${this.data.lecture} ${this.data.department.toUpperCase()}`),
this.data.semster && m(Property, {
title: 'Semester',
style: stdMarg,
}, this.data.semester),
this.data.department && !this.data.lecture && m(Property, {
title: 'Department',
style: stdMarg,
}, this.data.department.toUpperCase()),
this.data.professor && m(Property, {
title: 'Professor',
style: stdMarg,
}, this.data.professor),
this.data.author && m(Property, {
title: 'Author',
style: stdMarg,
}, this.data.author),
this.data.uploader && m(Property, {
title: 'Uploader',
style: stdMarg,
}, this.data.uploader),
]),
]));
}
}
...@@ -51,6 +51,7 @@ export default class UserEdit extends EditView { ...@@ -51,6 +51,7 @@ export default class UserEdit extends EditView {
'div', { style }, 'div', { style },
m(RadioGroup, { m(RadioGroup, {
name: 'Membership', name: 'Membership',
default: this.form.data.membership,
values: [ values: [
{ {
value: 'none', value: 'none',
...@@ -79,6 +80,7 @@ export default class UserEdit extends EditView { ...@@ -79,6 +80,7 @@ export default class UserEdit extends EditView {
'div', { style }, 'div', { style },
m(RadioGroup, { m(RadioGroup, {
name: 'Sex', name: 'Sex',
default: this.form.data.gender,
values: [ values: [
{ value: 'female', label: 'Female' }, { value: 'female', label: 'Female' },
{ value: 'male', label: 'Male' }, { value: 'male', label: 'Male' },
...@@ -93,6 +95,7 @@ export default class UserEdit extends EditView { ...@@ -93,6 +95,7 @@ export default class UserEdit extends EditView {
'div', { style }, 'div', { style },
m(RadioGroup, { m(RadioGroup, {
name: 'Departement', name: 'Departement',
default: this.form.data.department,
values: [ values: [
{ value: 'itet', label: 'ITET' }, { value: 'itet', label: 'ITET' },
{ value: 'mavt', label: 'MAVT' }, { value: 'mavt', label: 'MAVT' },
......
...@@ -56,17 +56,17 @@ export default class UserView extends ItemView { ...@@ -56,17 +56,17 @@ export default class UserView extends ItemView {
...stdMargin, ...stdMargin,
}, 'Regular Member'); }, 'Regular Member');
} else if (this.data.membership === 'extraordinary') { } else if (this.data.membership === 'extraordinary') {
membership = m( membership = m(chip, {
chip, svg: icons.checked,
{ svg: icons.checked, svgBackground: colors.green, ...stdMargin }, svgBackground: colors.green,
'Extraordinary Member', ...stdMargin,
); }, 'Extraordinary Member');
} else if (this.data.membership === 'honorary') { } else if (this.data.membership === 'honorary') {
membership = m( membership = m(chip, {
chip, svg: icons.star,
{ svg: icons.star, svgBackground: colors.orange, ...stdMargin }, svgBackground: colors.orange,
'Honorary Member', ...stdMargin,
); }, 'Honorary Member');
} }
// Selector that is only displayed if "new" is clicked in the // Selector that is only displayed if "new" is clicked in the
......
...@@ -29,7 +29,7 @@ export default class EditView extends ItemView { ...@@ -29,7 +29,7 @@ export default class EditView extends ItemView {
* @param {object} embedded [any embedding query that should be added * @param {object} embedded [any embedding query that should be added
* to API requests for this resource] * to API requests for this resource]
*/ */
constructor(vnode,) { constructor(vnode) {
super(vnode); super(vnode);
// the form is valid in case that the item controller is in edit mode // the form is valid in case that the item controller is in edit mode
const validInitially = this.controller.modus === 'edit'; const validInitially = this.controller.modus === 'edit';
......
...@@ -19,6 +19,7 @@ export const icons = { ...@@ -19,6 +19,7 @@ export const icons = {
department: '<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M0 0h48v48H0z" fill="none"/><path d="M24 14V6H4v36h40V14H24zM12 38H8v-4h4v4zm0-8H8v-4h4v4zm0-8H8v-4h4v4zm0-8H8v-4h4v4zm8 24h-4v-4h4v4zm0-8h-4v-4h4v4zm0-8h-4v-4h4v4zm0-8h-4v-4h4v4zm20 24H24v-4h4v-4h-4v-4h4v-4h-4v-4h16v20zm-4-16h-4v4h4v-4zm0 8h-4v4h4v-4z"/></svg>', department: '<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path d="M0 0h48v48H0z" fill="none"/><path d="M24 14V6H4v36h40V14H24zM12 38H8v-4h4v4zm0-8H8v-4h4v4zm0-8H8v-4h4v4zm0-8H8v-4h4v4zm8 24h-4v-4h4v4zm0-8h-4v-4h4v4zm0-8h-4v-4h4v4zm0-8h-4v-4h4v4zm20 24H24v-4h4v-4h-4v-4h4v-4h-4v-4h16v20zm-4-16h-4v4h4v-4zm0 8h-4v4h4v-4z"/></svg>',
amivWheel: '<svg width="81.059502" height="80.056625" viewBox="0 0 82 82" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath18"><path d="m 0,849.563 1960.52,0 L 1960.52,0 0,0 0,849.563 z" id="path20" /></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,-16.34525,92.96925)" id="g10"><g transform="scale(0.1,0.1)" id="g12"><g clip-path="url(#clipPath18)" id="g16"><path d="m 566.012,342.883 c -44.453,-61.184 -130.383,-74.797 -191.563,-30.344 -3.969,2.891 -7.719,5.957 -11.289,9.18 l 41.192,29.922 40.945,-56.375 51.351,117.707 37.684,-51.848 44.727,32.5 -40.387,55.598 41.469,30.132 c 19.257,-43.32 15.679,-95.437 -14.129,-136.472 m -235.504,23.465 c -19.887,43.554 -16.5,96.32 13.601,137.75 44.45,61.179 130.383,74.789 191.559,30.336 4.352,-3.161 8.391,-6.579 12.254,-10.125 l -41.762,-30.344 -40.558,55.82 -44.735,-32.5 40.563,-55.828 -0.067,-0.051 -127.726,-12.449 38.203,-52.578 -41.332,-30.031 z m 366.523,24.668 c 1.41,10.644 2.207,21.48 2.207,32.511 0,11.028 -0.797,21.86 -2.207,32.508 l -57.468,8.922 c -2.571,11.469 -6.196,22.711 -10.864,33.57 l 41.211,40.961 c -5.109,9.438 -10.828,18.676 -17.312,27.598 -6.481,8.922 -13.496,17.223 -20.899,25 l -51.679,-26.52 c -4.372,3.84 -8.93,7.532 -13.731,11.02 -4.84,3.512 -9.801,6.73 -14.84,9.719 l 9.258,57.351 c -9.676,4.641 -19.734,8.75 -30.238,12.16 -10.481,3.407 -21.039,5.993 -31.586,7.938 l -26.262,-51.918 c -11.742,1.07 -23.519,1.031 -35.199,-0.066 l -26.293,51.984 c -10.559,-1.945 -21.109,-4.531 -31.598,-7.938 -10.492,-3.41 -20.551,-7.519 -30.23,-12.148 l 9.269,-57.434 c -10.039,-5.925 -19.582,-12.859 -28.511,-20.707 l -51.746,26.559 c -7.407,-7.777 -14.422,-16.07 -20.903,-25 -6.492,-8.922 -12.211,-18.16 -17.32,-27.598 l 41.258,-41.011 c -4.715,-10.922 -8.36,-22.137 -10.887,-33.512 l -57.481,-8.93 c -1.421,-10.64 -2.218,-21.48 -2.218,-32.508 0,-11.031 0.797,-21.855 2.218,-32.511 l 57.563,-8.934 c 2.559,-11.445 6.168,-22.668 10.82,-33.496 L 240.09,307.57 c 5.109,-9.445 10.828,-18.683 17.32,-27.597 6.481,-8.926 13.488,-17.227 20.903,-25 l 51.675,26.523 c 4.41,-3.867 9,-7.59 13.84,-11.105 4.801,-3.485 9.723,-6.688 14.723,-9.657 l -9.258,-57.336 c 9.687,-4.636 19.746,-8.75 30.238,-12.156 10.489,-3.418 21.039,-5.996 31.598,-7.929 l 26.219,51.843 c 11.773,-1.093 23.57,-1.062 35.285,0.039 l 26.238,-51.894 c 10.559,1.945 21.117,4.523 31.598,7.941 10.504,3.406 20.551,7.52 30.238,12.149 l -9.246,57.285 c 10.078,5.957 19.648,12.898 28.617,20.789 l 51.621,-26.492 c 7.403,7.773 14.41,16.074 20.899,25 6.484,8.914 12.203,18.152 17.312,27.597 l -41.148,40.907 c 4.73,10.957 8.379,22.207 10.929,33.644 l 57.34,8.895" id="path30" style="fill:#f03d30;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></svg>', amivWheel: '<svg width="81.059502" height="80.056625" viewBox="0 0 82 82" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath18"><path d="m 0,849.563 1960.52,0 L 1960.52,0 0,0 0,849.563 z" id="path20" /></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,-16.34525,92.96925)" id="g10"><g transform="scale(0.1,0.1)" id="g12"><g clip-path="url(#clipPath18)" id="g16"><path d="m 566.012,342.883 c -44.453,-61.184 -130.383,-74.797 -191.563,-30.344 -3.969,2.891 -7.719,5.957 -11.289,9.18 l 41.192,29.922 40.945,-56.375 51.351,117.707 37.684,-51.848 44.727,32.5 -40.387,55.598 41.469,30.132 c 19.257,-43.32 15.679,-95.437 -14.129,-136.472 m -235.504,23.465 c -19.887,43.554 -16.5,96.32 13.601,137.75 44.45,61.179 130.383,74.789 191.559,30.336 4.352,-3.161 8.391,-6.579 12.254,-10.125 l -41.762,-30.344 -40.558,55.82 -44.735,-32.5 40.563,-55.828 -0.067,-0.051 -127.726,-12.449 38.203,-52.578 -41.332,-30.031 z m 366.523,24.668 c 1.41,10.644 2.207,21.48 2.207,32.511 0,11.028 -0.797,21.86 -2.207,32.508 l -57.468,8.922 c -2.571,11.469 -6.196,22.711 -10.864,33.57 l 41.211,40.961 c -5.109,9.438 -10.828,18.676 -17.312,27.598 -6.481,8.922 -13.496,17.223 -20.899,25 l -51.679,-26.52 c -4.372,3.84 -8.93,7.532 -13.731,11.02 -4.84,3.512 -9.801,6.73 -14.84,9.719 l 9.258,57.351 c -9.676,4.641 -19.734,8.75 -30.238,12.16 -10.481,3.407 -21.039,5.993 -31.586,7.938 l -26.262,-51.918 c -11.742,1.07 -23.519,1.031 -35.199,-0.066 l -26.293,51.984 c -10.559,-1.945 -21.109,-4.531 -31.598,-7.938 -10.492,-3.41 -20.551,-7.519 -30.23,-12.148 l 9.269,-57.434 c -10.039,-5.925 -19.582,-12.859 -28.511,-20.707 l -51.746,26.559 c -7.407,-7.777 -14.422,-16.07 -20.903,-25 -6.492,-8.922 -12.211,-18.16 -17.32,-27.598 l 41.258,-41.011 c -4.715,-10.922 -8.36,-22.137 -10.887,-33.512 l -57.481,-8.93 c -1.421,-10.64 -2.218,-21.48 -2.218,-32.508 0,-11.031 0.797,-21.855 2.218,-32.511 l 57.563,-8.934 c 2.559,-11.445 6.168,-22.668 10.82,-33.496 L 240.09,307.57 c 5.109,-9.445 10.828,-18.683 17.32,-27.597 6.481,-8.926 13.488,-17.227 20.903,-25 l 51.675,26.523 c 4.41,-3.867 9,-7.59 13.84,-11.105 4.801,-3.485 9.723,-6.688 14.723,-9.657 l -9.258,-57.336 c 9.687,-4.636 19.746,-8.75 30.238,-12.156 10.489,-3.418 21.039,-5.996 31.598,-7.929 l 26.219,51.843 c 11.773,-1.093 23.57,-1.062 35.285,0.039 l 26.238,-51.894 c 10.559,1.945 21.117,4.523 31.598,7.941 10.504,3.406 20.551,7.52 30.238,12.149 l -9.246,57.285 c 10.078,5.957 19.648,12.898 28.617,20.789 l 51.621,-26.492 c 7.403,7.773 14.41,16.074 20.899,25 6.484,8.914 12.203,18.152 17.312,27.597 l -41.148,40.907 c 4.73,10.957 8.379,22.207 10.929,33.644 l 57.34,8.895" id="path30" style="fill:#f03d30;fill-opacity:1;fill-rule:nonzero;stroke:none" /></g></g></g></svg>',
menu: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>', menu: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>',
studydoc: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z"/></svg>',
}; };
// Property as specified by material design: small, grey title and larger // Property as specified by material design: small, grey title and larger
......
import m from 'mithril'; import m from 'mithril';
import { Toolbar, Dialog, Button } from 'polythene-mithril'; import { IconButton, Toolbar, Dialog, Button } from 'polythene-mithril';
import { ButtonCSS } from 'polythene-css'; import { ButtonCSS } from 'polythene-css';
import { colors } from '../style'; import { colors } from '../style';
import { loadingScreen } from '../layout'; import { loadingScreen } from '../layout';
import { icons } from './elements';
ButtonCSS.addStyle('.itemView-edit-button', { ButtonCSS.addStyle('.itemView-edit-button', {
color_light_background: colors.light_blue, color_light_background: colors.light_blue,
...@@ -53,21 +54,29 @@ export default class ItemView { ...@@ -53,21 +54,29 @@ export default class ItemView {
layout(children, buttons = []) { layout(children, buttons = []) {
if (!this.controller || !this.controller.data) return m(loadingScreen); if (!this.controller || !this.controller.data) return m(loadingScreen);
return m('div', [ return m('div', [
m(Toolbar, m('div.pe-button-row', [ m(Toolbar, [
m(Button, { m('div', { style: { width: 'calc(100% - 48px)' } }, m('div.pe-button-row', [
element: 'div', m(Button, {
className: 'itemView-edit-button', element: 'div',
label: `Edit ${this.resource.charAt(0).toUpperCase()}${this.resource.slice(1, -1)}`, className: 'itemView-edit-button',
events: { onclick: () => { this.controller.changeModus('edit'); } }, label: `Edit ${this.resource.charAt(0).toUpperCase()}${this.resource.slice(1, -1)}`,
}), events: { onclick: () => { this.controller.changeModus('edit'); } },
m(Button, { }),