From 06ab639c429e8fab3841ffe34f8b8af7565e2e6b Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Sun, 20 Sep 2020 22:48:30 +0200 Subject: [PATCH] Add intro --- src/display.js | 26 ++++++++++++-------------- src/index.js | 20 ++++++++++++++++++-- src/intro.js | 7 +++++++ 3 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 src/intro.js diff --git a/src/display.js b/src/display.js index 5f8fe2f..0c438b3 100644 --- a/src/display.js +++ b/src/display.js @@ -1,3 +1,13 @@ +export const modal = content => { + const wrapper = document.createElement('a') + wrapper.href = '/' + wrapper.className = 'fullview' + const fullview = document.createElement('div') + fullview.innerHTML = content + wrapper.appendChild(fullview) + return wrapper +} + export class Display { constructor(baseUrl, dispatch, target) { this.baseUrl = baseUrl @@ -9,13 +19,6 @@ export class Display { } return target } - target.addEventListener('click', e => { - let target = findA(e.target) - if (!target) return - window.history.pushState(null, "", target.href) - dispatch(target.getAttribute('href')) - e.preventDefault() - }) target.addEventListener('dragstart', e => { let target = findA(e.target) if (!target || !target.draggable) return @@ -135,16 +138,12 @@ export class Display { target.appendChild(field) if (state.show !== null) { - const wrapper = document.createElement('a') - wrapper.href = '/' - wrapper.className = 'fullview' - const fullview = document.createElement('div') const data = state.items[state.show] const name = data.name const desc = data.desc const img = '/img/' + data.img const text = (data.text || []).map(v => '

' + v + '

').join('') - fullview.innerHTML = ` + const wrapper = modal(`

${name}

@@ -152,8 +151,7 @@ export class Display {
${text}
${data.quote || ''}
- ` - wrapper.appendChild(fullview) + `) target.appendChild(wrapper) } diff --git a/src/index.js b/src/index.js index b0eb009..41da339 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ -import {Display} from './display.js' +import {modal, Display} from './display.js' +import intro from './intro.js' const target = document.createElement('div') @@ -50,8 +51,23 @@ const dispatch = target => { window.onpopstate = e => { dispatch(document.location.search) } +const findA = target => { + while (target.nodeName !== 'A') { + target = target.parentNode + if (!target) return + } + return target +} +document.body.addEventListener('click', e => { + let target = findA(e.target) + if (!target) return + window.history.pushState(null, "", target.href) + dispatch(target.getAttribute('href')) + e.preventDefault() +}) display = new Display('', dispatch, target) -dispatch(document.location.search) +if (document.location.search) dispatch(document.location.search) +else document.body.appendChild(modal(intro)) document.body.appendChild(target) diff --git a/src/intro.js b/src/intro.js new file mode 100644 index 0000000..3dc3c52 --- /dev/null +++ b/src/intro.js @@ -0,0 +1,7 @@ +export default `

Memory des Prekariats.

+

+Unsichere Arbeits- und Lebensverhältnisse haben viele Gesichter. In diesem Spiel ist es eure Aufgabe, ihr geteiltes Leid aufzudecken. Klickt dafür auf die Symbole und lernt die historischen und heutigen Figuren des Prekariats kennen. Durch das Zusammenziehen der Kreise entdeckt ihr, was die Vergangenheit mit der Gegenwart verknüpft. +

+

+Ein Netzwerk der Prekären entsteht. +

`