diff --git a/src/events/newEvent.js b/src/events/newEvent.js index ddc37b107ecbfee606854f10257f00fa8c477621..b30f519e9e35bbcbf23761d03dcd3c2c1c72c0b7 100644 --- a/src/events/newEvent.js +++ b/src/events/newEvent.js @@ -18,6 +18,8 @@ export default class newEvent extends EditView { constructor(vnode) { super(vnode, 'events', {}); this.currentpage = 1; + this.food = false; + this.sbbAbo = false; } addOne() { @@ -25,6 +27,9 @@ export default class newEvent extends EditView { if (this.currentpage === 5) { this.currentpage = 4; } + if (this.currentpage === 6) { + this.currentpage = 6; + } } subOne() { @@ -32,6 +37,9 @@ export default class newEvent extends EditView { if (this.currentpage === 0) { this.currentpage = 1; } + if (this.currentpage === 6) { + this.currentpage = 6; + } } view() { @@ -91,7 +99,7 @@ export default class newEvent extends EditView { }, priority: { label: 'Priority', - } + }, }; const iconRight = m( @@ -108,24 +116,61 @@ export default class newEvent extends EditView { defaultChecked: false, label: 'Advertise in Announce?', value: '100', + onChange: (state) => { + this.show_announce = state.checked; + console.log(this.show_announce); + }, }); const checkboxWebsite = m(Checkbox, { defaultChecked: false, label: 'Advertise on Website?', value: '100', + onChange: (state) => { + this.show_website = state.checked; + }, }); const checkboxInfoScreen = m(Checkbox, { defaultChecked: false, label: 'Advertise on Infoscreen?', value: '100', + onChange: (state) => { + this.show_infoscreen = state.checked; + }, + }); const checkboxAllowMail = m(Checkbox, { defaultChecked: false, label: 'Allow non AMIV Members?', value: '100', + onChange: (state) => { + this.allow_email_signup = state.checked; + }, + checked: this.allow_email_signup, + }); + + const addFood = m(Checkbox, { + defaultChecked: false, + label: 'Food limitations', + value: '100', + onChange: (state) => { + this.food = state.checked; + console.log(this.food); + }, + checked: this.food, + }); + + const addSBB = m(Checkbox, { + defaultChecked: false, + label: 'SBB ABO', + value: '100', + onChange: (state) => { + this.sbbAbo = state.checked; + console.log(this.sbbAbo); + }, + checked: this.sbbAbo, }); const radioButtonSelectionMode = m(RadioGroup, { @@ -134,6 +179,7 @@ export default class newEvent extends EditView { { value: 'fcfs', label: 'First come, first serve', + defaultChecked: true, }, { value: 'manual', @@ -142,8 +188,45 @@ export default class newEvent extends EditView { ], }); + const buttonFinish = m(Button, { + label: 'Create event', + events: { + onclick: () => { + const additionalFields = { + title: 'Additional Fields', + type: 'object', + properties: {}, + required: [], + }; + if (this.sbbAbo) { + additionalFields.properties.SBB_Abo = { + type: 'string', + enum: ['None', 'GA', 'Halbtax', 'Gleis 7'], + }; + additionalFields.required.push('SBB_Abo'); + } + + if (this.food) { + additionalFields.properties.Food = { + type: 'string', + enum: ['Omnivor', 'Vegi', 'Vegan', 'Other'], + }; + additionalFields.properties.specialFood = { + 'Special Food Requirements': { + type: 'string', + }, + }; + additionalFields.required.push('Food'); + } + this.data.additional_fields = additionalFields; + console.log(this.data.additional_fields); + this.submit('POST'); + }, + }, + }); + const title = [ - 'Create an Event', 'When and Where?', 'Signups', 'Advertisement' + 'Create an Event', 'When and Where?', 'Signups', 'Advertisement', ][this.currentpage - 1]; // checks currentPage and selects the fitting page @@ -187,24 +270,38 @@ export default class newEvent extends EditView { style: { display: (this.currentpage === 3) ? 'block' : 'none', }, - }, Object.keys(thirdTableInputs).map((key) => { - const attrs = thirdTableInputs[key]; - const attributes = Object.assign({}, attrs); - attributes.name = key; - attributes.floatingLabel = true; - return m(textInput, this.bind(attributes)); - })), + }, [ + Object.keys(thirdTableInputs).map((key) => { + const attrs = thirdTableInputs[key]; + const attributes = Object.assign({}, attrs); + attributes.name = key; + attributes.floatingLabel = true; + return m(textInput, this.bind(attributes)); + }), + addFood, addSBB, m('br'), checkboxAllowMail, radioButtonSelectionMode, + ]), m('div', { style: { display: (this.currentpage === 4) ? 'block' : 'none', }, - }, Object.keys(forthTableInputs).map((key) => { - const attrs = forthTableInputs[key]; - const attributes = Object.assign({}, attrs); - attributes.name = key; - attributes.floatingLabel = true; - return m(textInput, this.bind(attributes)); - })), + }, [ + Object.keys(forthTableInputs).map((key) => { + const attrs = forthTableInputs[key]; + const attributes = Object.assign({}, attrs); + attributes.name = key; + attributes.floatingLabel = true; + return m(textInput, this.bind(attributes)); + }), + checkboxWebsite, checkboxAnnounce, checkboxInfoScreen, m('br'), buttonFinish, + ]), + + m('div', { + style: { + display: (this.currentpage === 6) ? 'block' : 'none', + }, + }, ['Event created!', + ]), + ]); } }