Added basic selection logic
This commit is contained in:
parent
7e62c42e00
commit
4337f05763
|
@ -22,7 +22,10 @@ module.exports = {
|
|||
extensions: ['.js', '.vue', '.json'],
|
||||
alias: {
|
||||
'vue$': 'vue/dist/vue.esm.js',
|
||||
'@': resolve('src')
|
||||
'@': resolve('src'),
|
||||
'#': resolve(''),
|
||||
'styles': resolve('src/styles'),
|
||||
'node_modules': resolve('node_modules')
|
||||
}
|
||||
},
|
||||
module: {
|
||||
|
@ -46,6 +49,10 @@ module.exports = {
|
|||
loader: 'babel-loader',
|
||||
include: [resolve('src'), resolve('test')]
|
||||
},
|
||||
{
|
||||
test: /\.json$/,
|
||||
loader: 'json-loader'
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
||||
loader: 'url-loader',
|
||||
|
|
41
package.json
41
package.json
|
@ -15,28 +15,33 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"vue": "^2.3.3",
|
||||
"vue-router": "^2.3.1"
|
||||
"vue-router": "^2.3.1",
|
||||
"vuex": "^2.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^7.1.2",
|
||||
"babel-core": "^6.22.1",
|
||||
"sw-precache-webpack-plugin": "^0.11.4",
|
||||
"babel-eslint": "^7.1.1",
|
||||
"babel-loader": "^7.1.1",
|
||||
"babel-plugin-istanbul": "^4.1.1",
|
||||
"babel-plugin-transform-runtime": "^6.22.0",
|
||||
"babel-preset-env": "^1.3.2",
|
||||
"babel-preset-stage-2": "^6.22.0",
|
||||
"babel-register": "^6.22.0",
|
||||
"chai": "^3.5.0",
|
||||
"chalk": "^2.0.1",
|
||||
"chromedriver": "^2.27.2",
|
||||
"connect-history-api-fallback": "^1.3.0",
|
||||
"copy-webpack-plugin": "^4.0.1",
|
||||
"cross-env": "^5.0.1",
|
||||
"cross-spawn": "^5.0.1",
|
||||
"css-loader": "^0.28.0",
|
||||
"cssnano": "^3.10.0",
|
||||
"eslint": "^3.19.0",
|
||||
"eslint-config-standard": "^6.2.1",
|
||||
"eslint-friendly-formatter": "^3.0.0",
|
||||
"eslint-loader": "^1.7.1",
|
||||
"eslint-plugin-html": "^3.1.0",
|
||||
"eslint-config-standard": "^6.2.1",
|
||||
"eslint-plugin-promise": "^3.4.0",
|
||||
"eslint-plugin-standard": "^2.0.1",
|
||||
"eventsource-polyfill": "^0.9.6",
|
||||
|
@ -46,8 +51,8 @@
|
|||
"friendly-errors-webpack-plugin": "^1.1.3",
|
||||
"html-webpack-plugin": "^2.28.0",
|
||||
"http-proxy-middleware": "^0.17.3",
|
||||
"webpack-bundle-analyzer": "^2.2.1",
|
||||
"cross-env": "^5.0.1",
|
||||
"inject-loader": "^3.0.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"karma": "^1.4.1",
|
||||
"karma-coverage": "^1.1.1",
|
||||
"karma-mocha": "^1.3.0",
|
||||
|
@ -59,31 +64,31 @@
|
|||
"karma-webpack": "^2.0.2",
|
||||
"lolex": "^2.0.0",
|
||||
"mocha": "^3.2.0",
|
||||
"chai": "^3.5.0",
|
||||
"sinon": "^2.1.0",
|
||||
"sinon-chai": "^2.8.0",
|
||||
"inject-loader": "^3.0.0",
|
||||
"babel-plugin-istanbul": "^4.1.1",
|
||||
"phantomjs-prebuilt": "^2.1.14",
|
||||
"chromedriver": "^2.27.2",
|
||||
"cross-spawn": "^5.0.1",
|
||||
"nightwatch": "^0.9.12",
|
||||
"selenium-server": "^3.0.1",
|
||||
"semver": "^5.3.0",
|
||||
"shelljs": "^0.7.6",
|
||||
"node-sass": "^4.5.3",
|
||||
"normalize.css": "^7.0.0",
|
||||
"opn": "^5.1.0",
|
||||
"optimize-css-assets-webpack-plugin": "^2.0.0",
|
||||
"ora": "^1.2.0",
|
||||
"phantomjs-prebuilt": "^2.1.14",
|
||||
"rimraf": "^2.6.0",
|
||||
"sass-loader": "^6.0.6",
|
||||
"selenium-server": "^3.0.1",
|
||||
"semver": "^5.3.0",
|
||||
"shelljs": "^0.7.6",
|
||||
"sinon": "^2.1.0",
|
||||
"sinon-chai": "^2.8.0",
|
||||
"sw-precache-webpack-plugin": "^0.11.4",
|
||||
"uglify-es": "^3.0.25",
|
||||
"url-loader": "^0.5.8",
|
||||
"vue-loader": "^12.1.0",
|
||||
"vue-style-loader": "^3.0.1",
|
||||
"vue-template-compiler": "^2.3.3",
|
||||
"webpack": "^2.6.1",
|
||||
"webpack-bundle-analyzer": "^2.2.1",
|
||||
"webpack-dev-middleware": "^1.10.0",
|
||||
"webpack-hot-middleware": "^2.18.0",
|
||||
"webpack-merge": "^4.1.0",
|
||||
"uglify-es": "^3.0.25"
|
||||
"webpack-merge": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.0.0",
|
||||
|
|
54
src/App.vue
54
src/App.vue
|
@ -1,54 +0,0 @@
|
|||
<template>
|
||||
<div id="app">
|
||||
<header>
|
||||
<span>Vue.js PWA</span>
|
||||
</header>
|
||||
<main>
|
||||
<img src="./assets/logo.png" alt="Vue.js PWA">
|
||||
<router-view></router-view>
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'app'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
font-family: 'Avenir', Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
main {
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
header {
|
||||
margin: 0;
|
||||
height: 56px;
|
||||
padding: 0 16px 0 24px;
|
||||
background-color: #35495E;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
header span {
|
||||
display: block;
|
||||
position: relative;
|
||||
font-size: 20px;
|
||||
line-height: 1;
|
||||
letter-spacing: .02em;
|
||||
font-weight: 400;
|
||||
box-sizing: border-box;
|
||||
padding-top: 16px;
|
||||
}
|
||||
</style>
|
33
src/app/app.vue
Normal file
33
src/app/app.vue
Normal file
|
@ -0,0 +1,33 @@
|
|||
<template>
|
||||
<div id="app">
|
||||
<main>
|
||||
<router-view></router-view>
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Eur-O-Mat'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import "~node_modules/normalize.css/normalize";
|
||||
|
||||
* {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
font-family: 'Avenir', Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
</style>
|
79
src/app/euromat/components/euromat.vue
Normal file
79
src/app/euromat/components/euromat.vue
Normal file
|
@ -0,0 +1,79 @@
|
|||
<template>
|
||||
<section class="euromat">
|
||||
<header>
|
||||
<span>{{ currentThesis + 1 }}/{{ thesesCount }}</span>
|
||||
<progress :value="currentThesis + 1" :max="thesesCount">
|
||||
{{ currentThesis }}
|
||||
</progress>
|
||||
<h1 class="thesis">{{ thesisTitle }}</h1>
|
||||
</header>
|
||||
|
||||
<div class="euromat-controls">
|
||||
<button type="button" @click="submitAnswer(optionSkip)">
|
||||
{{ optionSkip.label }}
|
||||
</button>
|
||||
<ul class="euromat-btns">
|
||||
<li v-for="option in options" v-if="option.position !== 'skipped'">
|
||||
<button type="button" @click="submitAnswer(option)">
|
||||
{{ option.label }}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAllOptions, getThesis, getThesesCount } from '@/utils/data'
|
||||
|
||||
export default {
|
||||
name: 'EuroMat',
|
||||
|
||||
data () {
|
||||
return {
|
||||
currentThesis: 0,
|
||||
thesesCount: getThesesCount(),
|
||||
options: getAllOptions(),
|
||||
answers: []
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
thesisTitle () {
|
||||
if (this.currentThesis === this.thesesCount) {
|
||||
return
|
||||
}
|
||||
return getThesis(this.currentThesis).thesis
|
||||
},
|
||||
optionSkip () {
|
||||
return this.options[this.options.length - 1]
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
submitAnswer (option) {
|
||||
if (!option) {
|
||||
return console.warn('Invalid answer')
|
||||
}
|
||||
if (this.currentThesis === this.thesesCount - 1) {
|
||||
this.forwardToResults()
|
||||
}
|
||||
|
||||
const thesis = getThesis(this.currentThesis)
|
||||
this.answers.push({ thesis, option })
|
||||
this.currentThesis += 1
|
||||
},
|
||||
forwardToResults () {
|
||||
localStorage.setItem('results', JSON.stringify(this.answers, null, 2))
|
||||
this.$router.push({ path: 'ergebnisse' })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.euromat-btns {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
1
src/app/euromat/index.js
Normal file
1
src/app/euromat/index.js
Normal file
|
@ -0,0 +1 @@
|
|||
export { default as routes } from './routes'
|
9
src/app/euromat/routes.js
Normal file
9
src/app/euromat/routes.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import EuroMat from './components/euromat'
|
||||
|
||||
export default [
|
||||
{
|
||||
path: '/',
|
||||
name: 'euromat',
|
||||
component: EuroMat
|
||||
}
|
||||
]
|
26
src/app/results/components/results.vue
Normal file
26
src/app/results/components/results.vue
Normal file
|
@ -0,0 +1,26 @@
|
|||
<template>
|
||||
<section>
|
||||
<router-link :to="{ path: '/' }">
|
||||
Zurück
|
||||
</router-link>
|
||||
<code>{{ results }}</code>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Results',
|
||||
|
||||
data () {
|
||||
return {
|
||||
results: {}
|
||||
}
|
||||
},
|
||||
|
||||
mounted () {
|
||||
this.results = JSON.parse(localStorage.getItem('results'))
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
1
src/app/results/index.js
Normal file
1
src/app/results/index.js
Normal file
|
@ -0,0 +1 @@
|
|||
export { default as routes } from './routes'
|
9
src/app/results/routes.js
Normal file
9
src/app/results/routes.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import Results from './components/results'
|
||||
|
||||
export default [
|
||||
{
|
||||
path: '/ergebnisse',
|
||||
name: 'results',
|
||||
component: Results
|
||||
}
|
||||
]
|
Binary file not shown.
Before Width: | Height: | Size: 6.7 KiB |
|
@ -1,52 +0,0 @@
|
|||
<template>
|
||||
<div class="hello">
|
||||
<h1>{{ msg }}</h1>
|
||||
<h2>Essential Links</h2>
|
||||
<ul>
|
||||
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
|
||||
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
|
||||
<li><a href="https://gitter.im/vuejs/vue" target="_blank" rel="noopener">Gitter Chat</a></li>
|
||||
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
|
||||
<li><a href="http://vuejs-templates.github.io/webpack/" target="_blank" rel="noopener">Docs for This Template</a></li>
|
||||
</ul>
|
||||
<h2>Ecosystem</h2>
|
||||
<ul>
|
||||
<li><a href="http://router.vuejs.org/" target="_blank" rel="noopener">vue-router</a></li>
|
||||
<li><a href="http://vuex.vuejs.org/" target="_blank" rel="noopener">vuex</a></li>
|
||||
<li><a href="http://vue-loader.vuejs.org/" target="_blank" rel="noopener">vue-loader</a></li>
|
||||
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'hello',
|
||||
data () {
|
||||
return {
|
||||
msg: 'Welcome to Your Vue.js PWA'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||
<style>
|
||||
h1, h2 {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #35495E;
|
||||
}
|
||||
</style>
|
|
@ -1,265 +0,0 @@
|
|||
const options = [
|
||||
{
|
||||
position: 'positive',
|
||||
id: 0,
|
||||
label: 'Ich stimme zu'
|
||||
},
|
||||
{
|
||||
position: 'neutral',
|
||||
id: 1,
|
||||
label: 'Neutral'
|
||||
},
|
||||
{
|
||||
position: 'negative',
|
||||
id: 2,
|
||||
label: 'Ich bin dagegen'
|
||||
}
|
||||
]
|
||||
|
||||
const parties = [
|
||||
{
|
||||
name: 'Christlich Demokratische Union Deutschlands',
|
||||
token: 'CDU',
|
||||
id: 0
|
||||
},
|
||||
{
|
||||
name: 'Sozialdemokratische Partei Deutschlands',
|
||||
token: 'SPD',
|
||||
id: 1
|
||||
},
|
||||
{
|
||||
name: 'Die Linke',
|
||||
token: 'LINKE',
|
||||
id: 2
|
||||
},
|
||||
{
|
||||
name: 'Bündnis 90/Die Grünen',
|
||||
token: 'GRÜNE',
|
||||
id: 3
|
||||
},
|
||||
{
|
||||
name: 'Freie Demokratische Partei',
|
||||
token: 'FDP',
|
||||
id: 4
|
||||
},
|
||||
{
|
||||
name: 'Alternative für Deutschland',
|
||||
token: 'AfD',
|
||||
id: 5
|
||||
}
|
||||
]
|
||||
|
||||
const theses = [
|
||||
{
|
||||
id: 0,
|
||||
thesis:
|
||||
'Zur Stärkung des Euro sollte eine gemeinsame Wirtschaftspolitik für die Eurozone unter Leitung eines europäischen Ministers eingeführt werden.'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
thesis:
|
||||
'Die Abgeordneten des Europäischen Parlaments sollen nach einem einheitlichen Wahlrecht über transnationale Listen gewählt werden.'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
thesis:
|
||||
'Das Europäische Parlament sollte das Recht bekommen, eigene Gesetzesvorschläge zu machen.'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
thesis:
|
||||
'Änderungen an den europäischen Verträgen und andere grundlegenden Entscheidungen sollten in Zukunft über einen Volksentscheid auf europäischer Ebene beschlossen werden.'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
thesis:
|
||||
'Die Hürde für europäische Bürgerinitiativen soll von 1 Million auf 500.000 Unterschriften gesenkt werden.'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
thesis:
|
||||
'Einflussnahme auf europäische Gesetze soll durch ein Lobbyregister transparenter gemacht werden.'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
thesis:
|
||||
'Die Europäische Kommission sollte verkleinert werden und besser durch das Parlament kontrolliert werden.'
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
thesis:
|
||||
'Es sollte in Deutschland ein Referendum über die EU-Mitgliedschaft geben.'
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
thesis:
|
||||
'Im Sinne des Subsidiaritätsprinzips sollten nationale Parlamente ein stärkeres Mitspracherecht in der europäischen Gesetzgebung erhalten.'
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
thesis:
|
||||
'Die EU hat zu viele Aufgaben übernommen, die besser von den nationalen Parlamenten geregelt werden sollten.'
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
thesis:
|
||||
'Es sollte auch ausnahmsweise keine Grenzkontrollen im Schengen-Raum geben.'
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
thesis:
|
||||
'Deutschland soll sich für die Einführung eines gemeinsamen Asyl-Systems mit Verteilungsschlüssel auf EU-Ebene einsetzen.'
|
||||
},
|
||||
{
|
||||
id: 12,
|
||||
thesis:
|
||||
'Alle Mitgliedstaaten sollten einen größeren Beitrag zum Schutz der EU-Außengrenzen leisten und ein eigenständig wirksamer europäischer Grenzschutz ausgebaut werden.'
|
||||
},
|
||||
{
|
||||
id: 13,
|
||||
thesis:
|
||||
'Es sollte ein gemeinsamer europäischer Geheimdienst zur effektiveren Terrorismusbekämpfung aufgebaut werden.'
|
||||
},
|
||||
{
|
||||
id: 14,
|
||||
thesis:
|
||||
'Die EU soll sich gemeinsam gegen internationale Cyber-Angriffe und Fake News mit einer Spezialeinheit zur Wehr setzen.'
|
||||
},
|
||||
{ id: 15, thesis: 'Die EU soll keine weiteren Flüchtlinge mehr aufnehmen.' },
|
||||
{
|
||||
id: 16,
|
||||
thesis:
|
||||
'Die EU sollte mehr Geld zur weltweiten Bekämpfung von Hunger und Armut und Fluchtursachen ausgeben.'
|
||||
},
|
||||
{
|
||||
id: 17,
|
||||
thesis:
|
||||
'Es sollte in der EU mehr Abstimmung bei Rüstungsexporten in Drittländer geben.'
|
||||
},
|
||||
{
|
||||
id: 18,
|
||||
thesis:
|
||||
'Deutschland soll sich für einen gemeinsamen EU-Sitz im UN-Sicherheitsrat einsetzen.'
|
||||
},
|
||||
{ id: 19, thesis: 'Die EU soll keine neuen Mitgliedstaaten aufnehmen.' },
|
||||
{
|
||||
id: 20,
|
||||
thesis:
|
||||
'Langfristig sollten die EU-Mitgliedstaaten ihre Streitkräfte zu einer europäischen Armee vereinen.'
|
||||
},
|
||||
{
|
||||
id: 21,
|
||||
thesis:
|
||||
'Die EU sollte auf globaler Ebene aktiver für ihre gemeinsamen Werte eintreten.'
|
||||
},
|
||||
{
|
||||
id: 22,
|
||||
thesis:
|
||||
'Auf europäischer Ebene sollte eine CO2-Steuer eingeführt werden die zur Finanzierung des EU-Haushaltes beiträgt.'
|
||||
},
|
||||
{
|
||||
id: 23,
|
||||
thesis:
|
||||
'Die Bundesregierung sollte sich für ein europaweites Mitspracherecht bei dem Bau neuer Atomkraftwerke einsetzen.'
|
||||
},
|
||||
{
|
||||
id: 24,
|
||||
thesis:
|
||||
'Es sollte auf europäischer Ebene ein eigenes Förderprogramm für regenerative Energien geben.'
|
||||
},
|
||||
{
|
||||
id: 25,
|
||||
thesis:
|
||||
'Die Bundesregierung sollte sich für ein europaweites Verbot von Fracking (Schiefergasbohrungen) einsetzen.'
|
||||
},
|
||||
{
|
||||
id: 26,
|
||||
thesis:
|
||||
'Die EU sollte sich global für hohe Umwelt- und Sozialstandards und fairen Handel einsetzen.'
|
||||
},
|
||||
{
|
||||
id: 27,
|
||||
thesis:
|
||||
'Die EU sollte mehr Geld in Bildung und Zukunftstechnologien und weniger in Agrarförderung investieren.'
|
||||
},
|
||||
{
|
||||
id: 28,
|
||||
thesis: 'Es sollten europaweit angemessene Mindestlöhne eingeführt werden.'
|
||||
},
|
||||
{
|
||||
id: 29,
|
||||
thesis:
|
||||
'Es sollte europaweit einen einheitlichen Unternehmenssteuersatz geben und gegen Steuervermeidung durch international tätige Unternehmen sollte stärker vorgegangen werden.'
|
||||
},
|
||||
{
|
||||
id: 30,
|
||||
thesis:
|
||||
'Freihandelsabkommen sollten allein durch das Europäische Parlament ratifiziert werden.'
|
||||
},
|
||||
{
|
||||
id: 31,
|
||||
thesis:
|
||||
'Die EU soll zum Schutz vor unrechtmäßiger Konkurrenz einheimischer Produkte und Unternehmen verstärkt Zölle erheben.'
|
||||
},
|
||||
{
|
||||
id: 32,
|
||||
thesis:
|
||||
'Die Staaten der Eurozone sollten gemeinsam Kredite aufnehmen können für die sie gemeinsam haften (Eurobonds).'
|
||||
},
|
||||
{
|
||||
id: 33,
|
||||
thesis:
|
||||
'Die Nichteinhaltung europäischer Rechtsstandards sollte durch Kürzung von Fördermitteln sanktioniert werden.'
|
||||
},
|
||||
{
|
||||
id: 34,
|
||||
thesis:
|
||||
'Es sollte eine gemeinsame Arbeitslosenversicherung auf europäischer Ebene geben.'
|
||||
},
|
||||
{
|
||||
id: 35,
|
||||
thesis:
|
||||
'Auf europäischer Ebene sollte der Fokus auf Investitionen anstatt auf Schuldenabbau liegen.'
|
||||
},
|
||||
{
|
||||
id: 36,
|
||||
thesis:
|
||||
'Die EU sollte verstärkt in Elektromobilität und ein engmaschiges Netz an Ladestationen in ganz Europa investieren.'
|
||||
},
|
||||
{
|
||||
id: 37,
|
||||
thesis:
|
||||
'Es sollte ein Europakunde-Fach eingeführt werden welches in ganz Europa nach einem einheitlichen Lehrplan unterrichtet wird.'
|
||||
},
|
||||
{
|
||||
id: 38,
|
||||
thesis:
|
||||
'Es sollte einen gesamteuropäischen Feiertag zur Einheit Europas geben.'
|
||||
},
|
||||
{
|
||||
id: 39,
|
||||
thesis:
|
||||
'Die EU sollte weitere Barrieren für GründerInnen abbauen um ein attraktives Klima für innovative Start-Ups in Europa zu schaffen.'
|
||||
},
|
||||
{
|
||||
id: 40,
|
||||
thesis:
|
||||
'Zur interkulturellen Verständigung sollte die EU allen 18-jährigen EuropäerInnen eine Interrailkarte finanzieren.'
|
||||
},
|
||||
{
|
||||
id: 41,
|
||||
thesis:
|
||||
'Arbeitslose EU-Bürger sollten eine EU-finanzierte Starthilfe bekommen, wenn sie in einem anderen Land einen Job suchen bzw. annehmen wollen.'
|
||||
},
|
||||
{
|
||||
id: 42,
|
||||
thesis:
|
||||
'Deutschland soll sich für eine rasche Umsetzung eines digitalen Binnenmarktes einsetzen, in dem Daten so frei verkehren können, wie es für Personen, Waren, Dienstleistungen und Kapital bereits der Fall ist.'
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
options,
|
||||
parties,
|
||||
theses
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
import isInteger from '@/utils/isInteger'
|
||||
import { options, parties, theses } from './data'
|
||||
|
||||
export const getOption = position =>
|
||||
options.find(o => o.position === position)
|
||||
|
||||
export const getThesis = id =>
|
||||
theses.find(t => t.id === id).thesis
|
||||
|
||||
export const getParty = token => {
|
||||
const property = isInteger(token) ? 'id' : 'token'
|
||||
return parties.find(p => p[property] === token)
|
||||
}
|
||||
|
||||
export const createThesisGroup = (thesis, parties = []) => (
|
||||
{
|
||||
thesis,
|
||||
parties: parties.map(({ token, position }) =>
|
||||
Object.assign({}, getParty(token), { position }))
|
||||
}
|
||||
)
|
||||
|
||||
export const getThesesTree = () =>
|
||||
[
|
||||
createThesisGroup(getThesis(0), [
|
||||
{ token: 'CDU', position: 'positive' },
|
||||
{ token: 'SPD', position: 'neutral' },
|
||||
{ token: 'GRÜNE', position: 'neutral' },
|
||||
{ token: 'LINKE', position: 'negative' },
|
||||
{ token: 'FDP', position: 'neutral' },
|
||||
{ token: 'AfD', position: 'neutral' }
|
||||
])
|
||||
]
|
22
src/data/options.json
Normal file
22
src/data/options.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"position": "positive",
|
||||
"id": 0,
|
||||
"label": "Ich stimme zu"
|
||||
},
|
||||
{
|
||||
"position": "neutral",
|
||||
"id": 1,
|
||||
"label": "Neutral"
|
||||
},
|
||||
{
|
||||
"position": "negative",
|
||||
"id": 2,
|
||||
"label": "Ich bin dagegen"
|
||||
},
|
||||
{
|
||||
"position": "skipped",
|
||||
"id": 3,
|
||||
"label": "Thesis überspringen"
|
||||
}
|
||||
]
|
1334
src/data/parties.json
Normal file
1334
src/data/parties.json
Normal file
File diff suppressed because it is too large
Load diff
174
src/data/theses.json
Normal file
174
src/data/theses.json
Normal file
|
@ -0,0 +1,174 @@
|
|||
[
|
||||
{
|
||||
"id": 0,
|
||||
"thesis": "Zur Stärkung des Euro sollte eine gemeinsame Wirtschaftspolitik für die Eurozone unter Leitung eines europäischen Ministers eingeführt werden."
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"thesis": "Die Abgeordneten des Europäischen Parlaments sollen nach einem einheitlichen Wahlrecht über transnationale Listen gewählt werden."
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"thesis": "Das Europäische Parlament sollte das Recht bekommen, eigene Gesetzesvorschläge zu machen."
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"thesis": "Änderungen an den europäischen Verträgen und andere grundlegenden Entscheidungen sollten in Zukunft über einen Volksentscheid auf europäischer Ebene beschlossen werden."
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"thesis": "Die Hürde für europäische Bürgerinitiativen soll von 1 Million auf 500.000 Unterschriften gesenkt werden."
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"thesis": "Einflussnahme auf europäische Gesetze soll durch ein Lobbyregister transparenter gemacht werden."
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"thesis": "Die Europäische Kommission sollte verkleinert werden und besser durch das Parlament kontrolliert werden."
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"thesis": "Es sollte in Deutschland ein Referendum über die EU-Mitgliedschaft geben."
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"thesis": "Im Sinne des Subsidiaritätsprinzips sollten nationale Parlamente ein stärkeres Mitspracherecht in der europäischen Gesetzgebung erhalten."
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"thesis": "Die EU hat zu viele Aufgaben übernommen, die besser von den nationalen Parlamenten geregelt werden sollten."
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"thesis": "Es sollte auch ausnahmsweise keine Grenzkontrollen im Schengen-Raum geben."
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"thesis": "Deutschland soll sich für die Einführung eines gemeinsamen Asyl-Systems mit Verteilungsschlüssel auf EU-Ebene einsetzen."
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"thesis": "Alle Mitgliedstaaten sollten einen größeren Beitrag zum Schutz der EU-Außengrenzen leisten und ein eigenständig wirksamer europäischer Grenzschutz ausgebaut werden."
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"thesis": "Es sollte ein gemeinsamer europäischer Geheimdienst zur effektiveren Terrorismusbekämpfung aufgebaut werden."
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"thesis": "Die EU soll sich gemeinsam gegen internationale Cyber-Angriffe und Fake News mit einer Spezialeinheit zur Wehr setzen."
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"thesis": "Die EU soll keine weiteren Flüchtlinge mehr aufnehmen."
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"thesis": "Die EU sollte mehr Geld zur weltweiten Bekämpfung von Hunger und Armut und Fluchtursachen ausgeben."
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"thesis": "Es sollte in der EU mehr Abstimmung bei Rüstungsexporten in Drittländer geben."
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"thesis": "Deutschland soll sich für einen gemeinsamen EU-Sitz im UN-Sicherheitsrat einsetzen."
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"thesis": "Die EU soll keine neuen Mitgliedstaaten aufnehmen."
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"thesis": "Langfristig sollten die EU-Mitgliedstaaten ihre Streitkräfte zu einer europäischen Armee vereinen."
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"thesis": "Die EU sollte auf globaler Ebene aktiver für ihre gemeinsamen Werte eintreten."
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"thesis": "Auf europäischer Ebene sollte eine CO2-Steuer eingeführt werden die zur Finanzierung des EU-Haushaltes beiträgt."
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"thesis": "Die Bundesregierung sollte sich für ein europaweites Mitspracherecht bei dem Bau neuer Atomkraftwerke einsetzen."
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"thesis": "Es sollte auf europäischer Ebene ein eigenes Förderprogramm für regenerative Energien geben."
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"thesis": "Die Bundesregierung sollte sich für ein europaweites Verbot von Fracking (Schiefergasbohrungen) einsetzen."
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"thesis": "Die EU sollte sich global für hohe Umwelt- und Sozialstandards und fairen Handel einsetzen."
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"thesis": "Die EU sollte mehr Geld in Bildung und Zukunftstechnologien und weniger in Agrarförderung investieren."
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"thesis": "Es sollten europaweit angemessene Mindestlöhne eingeführt werden."
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"thesis": "Es sollte europaweit einen einheitlichen Unternehmenssteuersatz geben und gegen Steuervermeidung durch international tätige Unternehmen sollte stärker vorgegangen werden."
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"thesis": "Freihandelsabkommen sollten allein durch das Europäische Parlament ratifiziert werden."
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"thesis": "Die EU soll zum Schutz vor unrechtmäßiger Konkurrenz einheimischer Produkte und Unternehmen verstärkt Zölle erheben."
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"thesis": "Die Staaten der Eurozone sollten gemeinsam Kredite aufnehmen können für die sie gemeinsam haften (Eurobonds)."
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"thesis": "Die Nichteinhaltung europäischer Rechtsstandards sollte durch Kürzung von Fördermitteln sanktioniert werden."
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"thesis": "Es sollte eine gemeinsame Arbeitslosenversicherung auf europäischer Ebene geben."
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"thesis": "Auf europäischer Ebene sollte der Fokus auf Investitionen anstatt auf Schuldenabbau liegen."
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"thesis": "Die EU sollte verstärkt in Elektromobilität und ein engmaschiges Netz an Ladestationen in ganz Europa investieren."
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"thesis": "Es sollte ein Europakunde-Fach eingeführt werden welches in ganz Europa nach einem einheitlichen Lehrplan unterrichtet wird."
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"thesis": "Es sollte einen gesamteuropäischen Feiertag zur Einheit Europas geben."
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"thesis": "Die EU sollte weitere Barrieren für GründerInnen abbauen um ein attraktives Klima für innovative Start-Ups in Europa zu schaffen."
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"thesis": "Zur interkulturellen Verständigung sollte die EU allen 18-jährigen EuropäerInnen eine Interrailkarte finanzieren."
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"thesis": "Arbeitslose EU-Bürger sollten eine EU-finanzierte Starthilfe bekommen, wenn sie in einem anderen Land einen Job suchen bzw. annehmen wollen."
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"thesis": "Deutschland soll sich für eine rasche Umsetzung eines digitalen Binnenmarktes einsetzen, in dem Daten so frei verkehren können, wie es für Personen, Waren, Dienstleistungen und Kapital bereits der Fall ist."
|
||||
}
|
||||
]
|
|
@ -1,7 +1,5 @@
|
|||
// The Vue build version to load with the `import` command
|
||||
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
||||
import Vue from 'vue'
|
||||
import App from './App'
|
||||
import App from '@/app/app'
|
||||
import router from './router'
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
import Hello from '@/components/Hello'
|
||||
|
||||
import { routes as euromat } from '@/app/euromat'
|
||||
import { routes as results } from '@/app/results'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
export default new Router({
|
||||
mode: 'hash',
|
||||
routes: [
|
||||
{
|
||||
path: '/',
|
||||
name: 'Hello',
|
||||
component: Hello
|
||||
}
|
||||
...euromat,
|
||||
...results
|
||||
]
|
||||
})
|
||||
|
|
18
src/utils/data.js
Normal file
18
src/utils/data.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
import options from '@/data/options'
|
||||
import theses from '@/data/theses'
|
||||
import parties from '@/data/parties'
|
||||
|
||||
export const getOption = position =>
|
||||
options.find(o => o.position === position)
|
||||
|
||||
export const getAllOptions = () =>
|
||||
options
|
||||
|
||||
export const getThesis = id =>
|
||||
theses.find(t => t.id === id)
|
||||
|
||||
export const getThesesCount = () =>
|
||||
theses.length
|
||||
|
||||
export const getParty = token =>
|
||||
parties.find(p => p.token === token)
|
|
@ -1,5 +0,0 @@
|
|||
module.exports = Number.isInteger || function (value) {
|
||||
return typeof value === 'number' &&
|
||||
isFinite(value) &&
|
||||
Math.floor(value) === value
|
||||
}
|
Loading…
Reference in a new issue