├── .gitignore ├── LICENSE-bootstrap.txt ├── LICENSE-fontawesome.txt ├── LICENSE-jquery.txt ├── LICENSE.txt ├── README-DE.md ├── README.md ├── config └── data.json ├── css └── bootstrap.min.css ├── generator.html ├── img ├── mahlowat_logo.png └── mahlowat_logo.svg ├── index.html ├── js ├── bootstrap.bundle.min.js ├── fontawesome-all.min.js ├── generator.js ├── hammer.min.js ├── jquery-3.7.1.min.js └── mahlowat.js └── lang ├── de_de.js ├── de_de.raw.js ├── en_gb.js ├── en_gb.raw.js ├── fr_fr.js └── fr_fr.raw.js /.gitignore: -------------------------------------------------------------------------------- 1 | config/data.json 2 | -------------------------------------------------------------------------------- /LICENSE-bootstrap.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2018 Twitter, Inc. 4 | Copyright (c) 2011-2018 The Bootstrap Authors 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /LICENSE-fontawesome.txt: -------------------------------------------------------------------------------- 1 | Font Awesome Free License 2 | ------------------------- 3 | 4 | Font Awesome Free is free, open source, and GPL friendly. You can use it for 5 | commercial projects, open source projects, or really almost whatever you want. 6 | Full Font Awesome Free license: https://fontawesome.com/license. 7 | 8 | # Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) 9 | In the Font Awesome Free download, the CC BY 4.0 license applies to all icons 10 | packaged as SVG and JS file types. 11 | 12 | # Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) 13 | In the Font Awesome Free download, the SIL OLF license applies to all icons 14 | packaged as web and desktop font files. 15 | 16 | # Code: MIT License (https://opensource.org/licenses/MIT) 17 | In the Font Awesome Free download, the MIT license applies to all non-font and 18 | non-icon files. 19 | 20 | # Attribution 21 | Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font 22 | Awesome Free files already contain embedded comments with sufficient 23 | attribution, so you shouldn't need to do anything additional when using these 24 | files normally. 25 | 26 | We've kept attribution comments terse, so we ask that you do not actively work 27 | to remove them from files, especially code. They're a great way for folks to 28 | learn about Font Awesome. 29 | 30 | # Brand Icons 31 | All brand icons are trademarks of their respective owners. The use of these 32 | trademarks does not indicate endorsement of the trademark holder by Font 33 | Awesome, nor vice versa. **Please do not use brand logos for any purpose except 34 | to represent the company, product, or service to which they refer.** 35 | -------------------------------------------------------------------------------- /LICENSE-jquery.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 HSZemi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README-DE.md: -------------------------------------------------------------------------------- 1 | ![Mahlowat](img/mahlowat_logo.png) 2 | 3 | [English Version](README.md) 4 | 5 | Mahlowat ist eine Implementierung eines Wahlpositionsvergleichswerkzeugs (voting advice application, VAA). Mahlowat ermöglicht es, die eigenen Positionen zu Thesen mit den Positionen von Gruppen oder Personen zu vergleichen, 6 | die zu einer Wahl kandidieren. 7 | 8 | Erweiterter Funktionsumfang 9 | --------------------------- 10 | 11 | Wirf einen Blick auf [Vote-O-Mat](https://github.com/SilvanVerhoeven/vote-o-mat), falls du eine dieser Funktionen benötigst: 12 | 13 | - eingebaute Unterstützung für mehrere Sprachen 14 | - anonyme Nutzungsstatistiken 15 | - Anpassung von Mahlowat an eine bestimmte Marke (z.B. durch ein Logo) 16 | 17 | Vote-O-Mat ist eine Erweiterung von Mahlowat und funktioniert im Grundsatz gleich. 18 | 19 | 20 | Allgemeine Vorgehensweise 21 | -------------------------- 22 | 23 | Irgendwann(TM) in der Zukunft findet eine Wahl statt. Eine Gruppe von Expertinnen(TM) erarbeitet eine Liste simpler Thesen, die sich mit 24 | Ja oder Nein beantworten lassen. 25 | 26 | Sobald feststeht, wer zur Wahl zugelassen ist, werden die Thesen an die zugelassenen Gruppen oder Personen gesendet und darum gebeten, 27 | zu jeder These die eigene Positionierung (Zustimmung/Ablehnung/Neutral) mit jeweils einer kurzen Begründung zurückzusenden. 28 | 29 | Ein armer Tropf darf dann alle Antworten in einer Konfigurationsdatei zusammenfassen (siehe unten). 30 | 31 | Schließlich wird ein Mahlowat konfiguriert, veröffentlicht und beworben. 32 | 33 | Viel Spaß! 34 | 35 | 36 | Setup 37 | ----- 38 | 39 | Um eine Mahlowat aufzusetzen sind drei Schritte notwendig: 40 | 41 | - Erstellen einer Konfigurationsdatei, die alle Thesen, Antworten und Begründungen der teilnehmenden Gruppen enthält 42 | - Festlegen der Sprache und Anpassen der Texte 43 | - Hochladen der Dateien auf einen Webserver, wo sie alle sehen können :see_no_evil: 44 | 45 | ### Konfiguration 46 | 47 | Mahlowat bezieht seine Informationen aus einer einzigen Konfigurationsdatei, `config/data.json`. Diese Datei enthält die 48 | Thesen, die Namen der antretenden Gruppen sowie deren Positionen und Begründungen. 49 | 50 | Zur Erstellung dieser Konfigurationsdatei bietet sich der mitgelieferte Konfigurator (`generator.html`) an. Falls bereits 51 | eine Konfigurationsdatei existiert, werden deren Inhalte direkt geladen. Für Korrekturen oder das Hinzufügen von 52 | Inhalten muss also nicht immer von vorn begonnen werden. 53 | **Obacht:** Eine bestehende `config/data.json` kann nur geladen werden, falls `generator.html` von einem Webserver geladen wird. 54 | Wenn die Datei direkt aus dem lokalen Dateisystem geöffnet wird, kann eine bestehende `config/data.json` nicht geladen werden. 55 | 56 | Nach drei Schritten erhält man einen Text, der nur noch in die Konfigurationsdatei `config/data.json` kopiert werden muss. 57 | Hinweis: Die Datei muss `UTF-8`-kodiert gespeichert werden. 58 | 59 | ### Sprache 60 | 61 | Mahlowat kommt dreisprachig daher: Detusch (de\_de, Standardeinstellung), Englisch (en\_gb) und Französisch (fr\_fr). 62 | 63 | Um die Sprache zu ändern, muss die Datei `index.html` angepasst werden. 64 | Ganz unten befindet sich der entsprechende Abschnitt: 65 | 66 | ``` 67 | 68 | 69 | 70 | 71 | 72 | ``` 73 | 74 | Um die aktive Sprache zu ändern, wird die aktuell aktive Sprache auskommentiert (mit `` umschlossen) und die Kommentar-Marker 75 | um die gewünschte Sprache werden entfernt (also die `` werden gelöscht, nicht aber das dazwischen). 76 | Beispiel: Um die Sprache auf Französisch zu stellen, sollte das Ergebnis folgendermaßen aussehen: 77 | 78 | ``` 79 | 80 | 81 | 82 | 83 | 84 | ``` 85 | 86 | Außerdem können die Texte modifiziert werden. Dies ist wahrscheinlich vor allem beim Fragen-und-Antworten-Teil nötig. 87 | 88 | Texte werden direkt in den `*.js`-Dateien angepasst. Diese befinden sich im `lang`-Unterordner. 89 | 90 | In den Strings können HTML-Tags verwendet werden. Es sollte darauf geachtet werden, keine Syntaxfehler im JavaScript-Code einzubauen, 91 | da diese leider die gesamte Anwendung dysfunktional machen. Frag bei Problemen einen Erwachsenen oder eine Freundin um Hilfe. 92 | 93 | **Obacht!** Um Internet Explorer 11 zu unterstützen (hihi), wurden die Sprachdateien mit [babel](https://babeljs.io) 94 | nachbehandelt. Für jede Sprache existiert eine Ausgangsversion (z. B. `de_de.raw.js`) und die mit Babel behandelte Version 95 | (z. B. `de_de.js`). Um Texte zu ändern, können die Ausgangsversionen modifiziert und hernach erneut babel ausgeführt werden. 96 | Alternativ können die übersetzten Dateien auch direkt modifiziert werden. 97 | 98 | ``` 99 | npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node 100 | babel --presets @babel/preset-env lang/de_de.raw.js > lang/de_de.js 101 | babel --presets @babel/preset-env lang/en_gb.raw.js > lang/en_gb.js 102 | babel --presets @babel/preset-env lang/fr_fr.raw.js > lang/fr_fr.js 103 | ``` 104 | 105 | #### Mehrsprachigkeit 106 | 107 | Gegebenenfalls soll der Mahlowat in mehreren Sprachen angeboten werden, zum Beispiel auf Französisch und Deutsch. 108 | 109 | Es empfiehlt sich, hierfür mehrere Instanzen zu erzeugen. Die Gruppen oder Kandidierenden würden also die Thesen jeweils auf Deutsch und auf 110 | Französisch erhalten und nach Positionierungen und Begründungen in beiden Sprachen gefragt werden. Dann würden zwei getrennte Mahlowat-Versionen 111 | erzeugt, eine auf Französisch mit den französischsprachigen Inhalten unter https://example.com/fr, und eine auf Deutsch mit den deutschsprachigen 112 | Inhalten unter https://example.com/de. Man könnte sich dazu eine Startseite vorstellen, die auf die beiden Mahlowat-Instanzen verlinkt. 113 | 114 | ### Veröffentlichung 115 | 116 | Die Ordner `config`, `css`, `img`, `js`, und `lang` mit ihrem Inhalt sowie die Datei `index.html` werden in einen Ordner auf dem Webserver des 117 | Vertrauens hochgeladen. 118 | 119 | Fertig! 120 | 121 | 122 | Punkteberechnung 123 | ---------------- 124 | 125 | The points for the groups in the results at the end are calculated as follows: 126 | Die Punkte für die Gruppen im Endresultat werden wie folgt berechnet: 127 | 128 | - Die gegebenen Antworten werden mit denen jeder Gruppe verglichen 129 | - Stimmt die Antwort einer Gruppe mit der gegebenen überein, werden der Gruppe 2 Punkte gutgeschrieben. 130 | - Weicht die Antwort leicht ab (Zustimmung/Neutral oder Neutral/Ablehnung), wird der Gruppe 1 Punkt gutgeschrieben 131 | - Sind die Antworten entgegengesetzt oder hat eine Gruppe eine These nicht beantwortet, gibt es keine Punkte für die Gruppe. 132 | - Eine These, die übersprungen wurde, wird nicht gewertet. Die erreichbare Höchstpunktzahl wird dadurch geringer. 133 | - Eine These, die doppelt gewichtet werden soll, wird doppelt gewichtet, das heißt, für sie wird die doppelte Punktzahl 134 | gutgeschrieben (0/2/4). Dadurch können insgesamt mehr Punkte erreicht werden. 135 | 136 | 137 | Demo 138 | ---- 139 | 140 | [Deutsch :de:](https://hscmi.de/mahlowat/de/) [English :uk:](https://hscmi.de/mahlowat/en/) [Français :fr:](https://hscmi.de/mahlowat/fr/) 141 | 142 | 143 | Fehlerbehandlung 144 | ---------------- 145 | 146 | #### Klicken auf den Start!-Knopf führt zu keiner Reaktion 147 | 148 | Die Konfigurationsdatei konnte wohl nicht geladen werden. Stelle sicher, dass sie existiert, vom Webserver gelesen werden kann 149 | (das kann z.B. durch direkten Aufruf der Datei https://example.com/config/data.json mit dem Webbrowser überprüft werden) und 150 | syntaktisch korrekt ist. 151 | 152 | 153 | #### Die Startseite sieht komisch aus und überall stehen seltsame Dinge wie btn-start oder start-explanatory-text. Außerdem funktioniert nichts. 154 | 155 | Sieht so aus als ob der JavaScript-Teil defekt ist. Ist genau eine Sprachdatei (siehe oben) eingebunden? Sie könnte auch einen Syntaxfehler enthalten. 156 | 157 | 158 | #### Das Ergebnis ist leer 159 | 160 | Man sollte schon mindestens eine These beantworten. 161 | 162 | 163 | #### Ich öffne den mahlowat aber nichts funktioniert, da ist nur eine rote Warnung! 164 | 165 | Die häufigste Ursache hierfür ist, dass die `index.html`-Datei direkt mit den Webbrowser geöffnet wurde. Leider funktioniert dies in den 166 | meisten Browsern nicht. Alle Dateien müssen auf einen Webserver geladen und von dort angezeigt werden. Du kannst auch lokal einen Webserver 167 | zum Testen starten. 168 | 169 | Wenn die Dateien hingegen bereits auf einem Webserver liegen und dennoch die Fehlermeldung auftaucht, dann lies sie: Existiert die Datei? 170 | Lässt sich sich mit dem Webbrowser direkt aufrufen oder kommt eine Fehlermeldung? Und nicht zuletzt, enthält sie keine Syntaxfehler? 171 | 172 | 173 | #### Die `generator.html` lädt meine existierende `config/data.json` nicht! 174 | 175 | Öffnest du die Datei von einem Webserver? 176 | Falls `generator.html` direkt aus dem Dateisystem im Webbrowser geöffnet wird, kann die `config/data.json` nicht geladen werden. 177 | 178 | Freud und Leid 179 | ------------ 180 | 181 | #### Ich möchte einen Fehler melden 182 | 183 | Klasse! [Erstelle ein Issue](https://github.com/HSZemi/mahlowat/issues) (und hoffe, dass es bemerkt wird). 184 | 185 | 186 | #### Ich möchte einen Fehler beheben 187 | 188 | Knorke! [Stelle einen Pull Request](https://github.com/HSZemi/mahlowat/pulls) (und hoffe, dass er bemerkt wird). 189 | 190 | #### Ich möchte mich beschweren/bedanken 191 | 192 | Ich freue mich stets über eine E-Mail an mahlowat@hszemi.de! 193 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Mahlowat](img/mahlowat_logo.png) 2 | 3 | [Deutsche Version](README-DE.md) 4 | 5 | Mahlowat is an implementation of a voting advice application (VAA). It allows users to compare their opinion on selected theses 6 | to the opinions of groups or individuals competing in an election. 7 | 8 | Extended Features 9 | ----------------- 10 | 11 | Take a look at [Vote-O-Mat](https://github.com/SilvanVerhoeven/vote-o-mat), if you need one of these features: 12 | 13 | - built-in support for multiple languages 14 | - anonymous usage statistics 15 | - branding of Mahlowat (e.g. via a Logo) 16 | 17 | Vote-O-Mat is an extension of Mahlowat and works equally in the fundamentals. 18 | 19 | 20 | General Approach 21 | ---------------- 22 | 23 | There will be an election at some point in the future. A team of highly skilled individuals devises a list of simple theses which 24 | can be answered with Yes or No. 25 | 26 | Once the groups or candidates participating in the election are set, they are being sent the theses and asked to provide a positioning 27 | (Yes/No/Neutral) and a short statement for each thesis. 28 | 29 | One poor soul will then compile all responses into a configuration file (see below). 30 | 31 | A Mahlowat instance is consequently configured, published and advertised. 32 | 33 | Enjoy! 34 | 35 | 36 | Setup 37 | ----- 38 | 39 | In order to get Mahlowat up and running, you have to do three things: 40 | 41 | - Create a configuration file which contains all the theses and responses of the participating groups 42 | - Select a language and adapt the application texts 43 | - Upload the files to a web server where everyone can see them :see_no_evil: 44 | 45 | ### Configuration 46 | 47 | Mahlowat uses a single file, `config/data.json`, which contains the theses, information about the groups, and the groups' 48 | responses and statements. 49 | 50 | You should probably use `generator.html` to generate this configuration file. It will load the data from an existing 51 | `config/data.json`, so you won't have to start all over again if you want to correct or add something. 52 | **Warning:** An existing `config/data.json` can only be loaded if `generator.html` is opened from a web server. 53 | If you directly open the file from your file system, it will not be able to load an existing `config/data.json`. 54 | 55 | At the end of a three step process, the generator yields the (new) contents to the `config/data.json` file, which you will 56 | have to enter there manually (please copy-paste). Make sure the file is saved with the `UTF-8` encoding. 57 | 58 | ### Language 59 | 60 | Mahlowat comes with three languages: German (de\_de, default), English (en\_gb) and French (fr\_fr). 61 | 62 | If you want to change the display language, you have to do a tiny edit in `index.html`. 63 | Go to the very bottom, where you will find this section: 64 | 65 | ``` 66 | 67 | 68 | 69 | 70 | 71 | ``` 72 | 73 | To change the active language, comment out the currently active language (comment out = enclose the whole line in ``) 74 | and uncomment the language of your choice (removing the ``). Example: If you want to run Mahlowat in french, it should 75 | look like this: 76 | 77 | ``` 78 | 79 | 80 | 81 | 82 | 83 | ``` 84 | 85 | You may also want to change some of the text, especially the Q&A part. In order to do that, directly edit the language `*.js` files 86 | which you can find in the `lang` subfolder. 87 | 88 | You can use html tags inside of the strings. Just make sure to not introduce errors in the JavaScript, because that will unfortunately 89 | break the whole application. If you are unsure, maybe ask a friend for help. 90 | 91 | **Attention!** In order to support Internet Explorer 11 (lol), [babel](https://babeljs.io) has been used to transpile the 92 | language files from a raw version (e.g. `en_gb.raw.js`) into the production version (e.g. `en_gb.js`). 93 | You can edit the "raw" files and then do that yourself – or edit the transpiled versions directly. 94 | 95 | ``` 96 | npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node 97 | babel --presets @babel/preset-env lang/de_de.raw.js > lang/de_de.js 98 | babel --presets @babel/preset-env lang/en_gb.raw.js > lang/en_gb.js 99 | babel --presets @babel/preset-env lang/fr_fr.raw.js > lang/fr_fr.js 100 | ``` 101 | 102 | #### Multiple languages 103 | 104 | You might want to offer the Mahlowat in multiple languages at once, for example in French and German. 105 | 106 | We recommend creating multiple instances, which means you would send the groups or candidates the theses in French and in German and ask for 107 | positioning and statements in both languages. You would then create two separate Mahlowat instances, one in French with the french content (available under https://example.com/fr), one in German with the german content (available under https://example.com/de). You could add a landing page which links 108 | to the two versions. 109 | 110 | ### Publish 111 | 112 | Upload the `config`, `css`, `img`, `js`, and `lang` folders with their contents as well as the `index.html` file to a directory on 113 | the web server of your choice. 114 | 115 | Done! 116 | 117 | 118 | Calculations 119 | ------------ 120 | 121 | The points for the groups in the results at the end are calculated as follows: 122 | 123 | - The user's answers are compared to each group's answers. 124 | - The group gains 2 points for each thesis where their answer matches the user's. 125 | - A slight deviation (yes/neutral or neutral/no) gains the group still 1 point. 126 | - If the answers are contrary or if a group has no position on a thesis, the group gains no point. 127 | - A thesis that the user skipped gains no one any point. The maximum number of points possible decreases. 128 | - A thesis that the user counts double gets groups twice the points (0/2/4). This increases the maximum number of points possible. 129 | 130 | 131 | Demo 132 | ---- 133 | 134 | [Deutsch :de:](https://hscmi.de/mahlowat/de/) [English :uk:](https://hscmi.de/mahlowat/en/) [Français :fr:](https://hscmi.de/mahlowat/fr/) 135 | 136 | 137 | Troubleshooting 138 | --------------- 139 | 140 | #### I keep klicking on the Start! button, but nothing happens 141 | 142 | Mahlowat could not load the config file. Make sure it exists, is readable by the web server (you could try to access it directly 143 | with your browser at https://example.com/config/data.json) and syntactically correct. 144 | 145 | 146 | #### Everything says weird stuff like btn-start or start-explanatory-text. Also, nothing works. 147 | 148 | Looks like the JavaScript part is broken. Did you include exactly one language file (see above)? It might also contain a syntax error. 149 | 150 | 151 | #### The results are empty 152 | 153 | You should give your opinion on at least one thesis. 154 | 155 | 156 | #### I open mahlowat and I only get a red warning box, but it does not work! 157 | 158 | Did you open the `index.html` file directly in your web browser? That unfortunately does not work in most browsers. Try uploading everything 159 | to a web server and opening it from there instead. Or run a web server locally for development. 160 | 161 | If you did in fact access it from a web server, do as the error message says: Does the file exist? Can you access it with your web browser 162 | directly or do you get an error message? And lastly, does it not contain syntax errors? 163 | 164 | 165 | #### The `generator.html` does not load my existing `config/data.json`! 166 | 167 | Are you opening the generator from a web server? 168 | Loading an existing `config/data.json` will not work if you open the `generator.html` directly from your file system. 169 | 170 | 171 | Weal and Woe 172 | ------------ 173 | 174 | #### I want to report a bug 175 | 176 | Great! [Open an issue](https://github.com/HSZemi/mahlowat/issues) (and hope it gets noticed). 177 | 178 | #### I wang to fix a bug 179 | 180 | Great! [Issue a pull request](https://github.com/HSZemi/mahlowat/pulls) (and hope it gets noticed). 181 | 182 | #### I want to complain / say thanks 183 | 184 | I am always happy to receive success stories (or stories of failure for that matter) at mahlowat@hszemi.de 185 | -------------------------------------------------------------------------------- /config/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "theses": { 3 | "0": { 4 | "l": "These 1 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam", 5 | "s": "These 1", 6 | "x": "Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam er" 7 | }, 8 | "1": { 9 | "l": "These 2 m dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ", 10 | "s": "These 2", 11 | "x": "" 12 | }, 13 | "2": { 14 | "l": "These 3 ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lore", 15 | "s": "These 3", 16 | "x": "takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua." 17 | }, 18 | "3": { 19 | "l": "These 4 sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et ", 20 | "s": "These 4", 21 | "x": "tetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eo" 22 | }, 23 | "4": { 24 | "l": "These 5 elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et just", 25 | "s": "These 5", 26 | "x": "" 27 | }, 28 | "5": { 29 | "l": "These 6 Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel i", 30 | "s": "These 6", 31 | "x": "" 32 | }, 33 | "6": { 34 | "l": "These 7 tatum zzril delenit augue duis dolore te feugait nulla facilisi", 35 | "s": "These 7", 36 | "x": "" 37 | }, 38 | "7": { 39 | "l": "These 8 invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eo", 40 | "s": "These 8", 41 | "x": "ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit a" 42 | }, 43 | "8": { 44 | "l": "These 9 imata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos", 45 | "s": "These 9", 46 | "x": "" 47 | }, 48 | "9": { 49 | "l": "These 10 ergren, no sea takimata sanctus est Lorem ipsum dolor", 50 | "s": "These 10", 51 | "x": "" 52 | } 53 | }, 54 | "lists": { 55 | "0": { 56 | "name": "Liste X", 57 | "name_x": "Liste X" 58 | }, 59 | "1": { 60 | "name": "Kugelschreibär", 61 | "name_x": "STIFT" 62 | }, 63 | "2": { 64 | "name": "Liste Oben", 65 | "name_x": "Liste Oben" 66 | }, 67 | "3": { 68 | "name": "The ACKERdemikerliste", 69 | "name_x": "TACKER" 70 | }, 71 | "4": { 72 | "name": "Vitamin B", 73 | "name_x": "Vitamin B" 74 | }, 75 | "5": { 76 | "name": "Niemals nicht", 77 | "name_x": "NEIN" 78 | } 79 | }, 80 | "answers": { 81 | "0": { 82 | "0": { 83 | "selection": "a", 84 | "statement": "Juche!" 85 | }, 86 | "1": { 87 | "selection": "a", 88 | "statement": "Noe." 89 | }, 90 | "2": { 91 | "selection": "c", 92 | "statement": "" 93 | }, 94 | "3": { 95 | "selection": "b", 96 | "statement": "" 97 | }, 98 | "4": { 99 | "selection": "a", 100 | "statement": "" 101 | }, 102 | "5": { 103 | "selection": "c", 104 | "statement": "" 105 | }, 106 | "6": { 107 | "selection": "b", 108 | "statement": "" 109 | }, 110 | "7": { 111 | "selection": "b", 112 | "statement": "" 113 | }, 114 | "8": { 115 | "selection": "a", 116 | "statement": "" 117 | }, 118 | "9": { 119 | "selection": "a", 120 | "statement": "" 121 | } 122 | }, 123 | "1": { 124 | "0": { 125 | "selection": "c", 126 | "statement": "Moep" 127 | }, 128 | "1": { 129 | "selection": "b", 130 | "statement": "Yay" 131 | }, 132 | "2": { 133 | "selection": "a", 134 | "statement": "" 135 | }, 136 | "3": { 137 | "selection": "a", 138 | "statement": "" 139 | }, 140 | "4": { 141 | "selection": "a", 142 | "statement": "" 143 | }, 144 | "5": { 145 | "selection": "b", 146 | "statement": "" 147 | }, 148 | "6": { 149 | "selection": "a", 150 | "statement": "" 151 | }, 152 | "7": { 153 | "selection": "c", 154 | "statement": "" 155 | }, 156 | "8": { 157 | "selection": "c", 158 | "statement": "" 159 | }, 160 | "9": { 161 | "selection": "a", 162 | "statement": "" 163 | } 164 | }, 165 | "2": { 166 | "0": { 167 | "selection": "a", 168 | "statement": "" 169 | }, 170 | "1": { 171 | "selection": "c", 172 | "statement": "" 173 | }, 174 | "2": { 175 | "selection": "c", 176 | "statement": "" 177 | }, 178 | "3": { 179 | "selection": "a", 180 | "statement": "" 181 | }, 182 | "4": { 183 | "selection": "d", 184 | "statement": "" 185 | }, 186 | "5": { 187 | "selection": "c", 188 | "statement": "" 189 | }, 190 | "6": { 191 | "selection": "c", 192 | "statement": "" 193 | }, 194 | "7": { 195 | "selection": "a", 196 | "statement": "" 197 | }, 198 | "8": { 199 | "selection": "a", 200 | "statement": "" 201 | }, 202 | "9": { 203 | "selection": "a", 204 | "statement": "" 205 | } 206 | }, 207 | "3": { 208 | "0": { 209 | "selection": "c", 210 | "statement": "" 211 | }, 212 | "1": { 213 | "selection": "a", 214 | "statement": "" 215 | }, 216 | "2": { 217 | "selection": "a", 218 | "statement": "" 219 | }, 220 | "3": { 221 | "selection": "a", 222 | "statement": "" 223 | }, 224 | "4": { 225 | "selection": "a", 226 | "statement": "" 227 | }, 228 | "5": { 229 | "selection": "c", 230 | "statement": "" 231 | }, 232 | "6": { 233 | "selection": "a", 234 | "statement": "" 235 | }, 236 | "7": { 237 | "selection": "c", 238 | "statement": "" 239 | }, 240 | "8": { 241 | "selection": "b", 242 | "statement": "" 243 | }, 244 | "9": { 245 | "selection": "c", 246 | "statement": "" 247 | } 248 | }, 249 | "4": { 250 | "0": { 251 | "selection": "a", 252 | "statement": "" 253 | }, 254 | "1": { 255 | "selection": "c", 256 | "statement": "" 257 | }, 258 | "2": { 259 | "selection": "c", 260 | "statement": "" 261 | }, 262 | "3": { 263 | "selection": "c", 264 | "statement": "" 265 | }, 266 | "4": { 267 | "selection": "c", 268 | "statement": "" 269 | }, 270 | "5": { 271 | "selection": "c", 272 | "statement": "" 273 | }, 274 | "6": { 275 | "selection": "c", 276 | "statement": "" 277 | }, 278 | "7": { 279 | "selection": "a", 280 | "statement": "" 281 | }, 282 | "8": { 283 | "selection": "a", 284 | "statement": "" 285 | }, 286 | "9": { 287 | "selection": "a", 288 | "statement": "" 289 | } 290 | }, 291 | "5": { 292 | "0": { 293 | "selection": "a", 294 | "statement": "" 295 | }, 296 | "1": { 297 | "selection": "a", 298 | "statement": "" 299 | }, 300 | "2": { 301 | "selection": "c", 302 | "statement": "" 303 | }, 304 | "3": { 305 | "selection": "b", 306 | "statement": "" 307 | }, 308 | "4": { 309 | "selection": "c", 310 | "statement": "" 311 | }, 312 | "5": { 313 | "selection": "c", 314 | "statement": "" 315 | }, 316 | "6": { 317 | "selection": "c", 318 | "statement": "" 319 | }, 320 | "7": { 321 | "selection": "c", 322 | "statement": "" 323 | }, 324 | "8": { 325 | "selection": "a", 326 | "statement": "" 327 | }, 328 | "9": { 329 | "selection": "a", 330 | "statement": "" 331 | } 332 | } 333 | } 334 | } 335 | -------------------------------------------------------------------------------- /generator.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | mahlowat - Generator 6 | 7 | 8 | 9 | 10 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 |

Mahlowat - Generator

39 | 40 |
41 |

Hallöle!

42 |

Mit diesem Helferlein kannst du die Konfigurationsdatei für den Mahlowat erstellen. Sie wird alle Thesen mit Erläuterungen, 43 | alle Listen sowie deren Antworten und Stellungnahmen zu den Thesen enthalten.

44 |

Am Ende kommt dann ein kryptischer Text heraus, der im 45 | config-Verzeichnis des Mahlowat als 46 | data.json gespeichert werden muss. Keine Angst, am Ende wird das nochmal detailliert erklärt.

47 |

48 | 49 |

50 |
51 | 52 | 53 |
54 |

Schritt 1: Thesen anlegen

55 | 56 |

Hier legst du die Thesen an, zu denen die zur Wahl antretenden Listen Stellung nehmen (oder es bereits getan haben). 57 | Der Kurzname wird überall dort verwendet, wo nur wenig Platz ist, zum Beispiel auf Buttons. 58 |
Wenn alle Thesen erstellt sind, geht es mit einem Klick auf "Weiter" weiter.

59 | 60 |
61 | 62 | 63 |
64 | 65 |
66 | 67 |
68 | 69 |
70 | 71 |
72 |

Schritt 2: Listen anlegen

73 | 74 |

Welche Listen treten zur Wahl an? Hier trägst du das ein. Auch hier gilt: Der Kurzname wird überall dort verwendet, wo 75 | nur wenig Platz ist. 76 |
Sind alle Listen angelegt, geht es mit einem Klick auf "Weiter" zum nächsten und vorletzten Schritt, in dem du die 77 | Antworten der Listen zu den Thesen eintragen kannst.

78 | 79 |
80 | 81 | 82 | 83 |
84 | 85 |
86 | 87 |
88 | 89 |
90 | 91 |
92 |

Schritt 3: Listen-Antworten und Erläuterungen

93 | 94 |

95 | 96 |

97 | 98 |

Jetzt wird es lustig.

99 |

Mit den Tabs wählst du die Liste aus, deren Antworten du eintragen willst. Darunter wählst du dann die Thesen aus, wählst 100 | bei den Knöpfen die Antwort der Liste aus und trägst in das Textfeld die Begründung der Liste ein, falls sie eine geliefert 101 | hat. Zwischen den Thesen kannst du auch mit den Pfeiltasten deiner Tastatur 102 | 103 | umschalten. 104 |
Wenn du alles eingetragen hast, kannst du als letzten Schritt mit einem Klick auf den "Erstellen"-Knopf oben rechts 105 | die Konfiguration erstellen. Einfach, oder?

106 |

Für die aktuelle Liste wurden 107 | 4 108 | von 109 | 4 Thesen beantwortet.

110 | 111 | 112 |
113 | 114 | 115 | 116 |
117 | 118 |
119 | 120 |
121 | 122 |
123 | 124 |
125 |
126 | 129 |
130 |
131 | 133 |
134 |
135 | 137 |
138 |
139 | 141 |
142 |
143 | 145 |
146 |
147 | 150 |
151 |
152 |
153 | 154 |
155 |
156 | 157 |
158 |

Geschafft! Also fast.

159 |

Das hier ist deine Mahlowat-Konfiguration:

160 | 161 |

Dieser Text muss jetzt genau so in die Datei 162 | data.json im Verzeichnis 163 | config des Mahlowat kopiert werden. Falls diese Datei nicht existiert, erstelle sie einfach. Achte darauf, dass die Datei im 164 | UTF-8-Format gespeichert wird!

165 |
166 | 167 |
168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /img/mahlowat_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HSZemi/mahlowat/f14b0f6c4b9757a1a3bfeea6a1d9e536e80c7499/img/mahlowat_logo.png -------------------------------------------------------------------------------- /img/mahlowat_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 23 | 45 | 47 | 48 | 50 | image/svg+xml 51 | 53 | 54 | 55 | 56 | 57 | 62 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Mahlowat 13 | 14 | 125 | 126 | 127 | 128 | 146 | 147 |
148 |
149 |
150 | 151 | 152 | 153 |

swype-info-message-text

154 | 155 | 156 |
157 |
158 |
159 | 160 |
161 |
162 |

163 | 164 |

165 |

start-subtitle

166 |
167 |
168 | start-explanatory-text 169 |
170 |

171 | 172 |

173 |

174 | 175 |

176 |
177 |
178 |
179 | 180 |
181 |
182 |
183 | 186 |
187 |
188 | 189 |
190 |
191 | 192 |
193 |
194 |
195 | 196 |
197 |
198 |
thesis-number
199 |

thesis-text

200 | 201 | 205 | 206 |
207 | thesis-more 208 |
209 |
210 |
211 | 212 |
213 |
214 | 217 |
218 |
219 |
220 |
221 |
222 |
223 | 232 |
233 |
234 | 243 |
244 |
245 |
246 |
247 |
248 |
249 | 258 |
259 |
260 | 269 |
270 |
271 |
272 |
273 | 274 |
275 | 276 |
277 |
278 | 279 | 280 |
281 |
282 | 284 |
285 |
286 |
287 | 288 | 289 |
290 | 291 |

title-results

292 | 293 |
294 |
295 |
296 |
title-results-summary
297 |
298 |
299 |
300 |
301 |
302 | 303 |

304 | text-result-below-summary 305 |

306 | 307 |
title-results-details
308 | 309 |
310 |
311 | 312 |

313 | 314 | 315 | 316 | 317 |

318 |
319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | -------------------------------------------------------------------------------- /js/bootstrap.bundle.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.0.0 (https://getbootstrap.com) 3 | * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,e){"use strict";function n(t,e){for(var n=0;n0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var o=n[r],s=e[r],a=s&&i.isElement(s)?"element":(l=s,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(o).test(a))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+a+'" but expected type "'+o+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e=e&&e.hasOwnProperty("default")?e.default:e),L=(s="alert",l="."+(a="bs.alert"),c=(o=e).fn[s],h={CLOSE:"close"+l,CLOSED:"closed"+l,CLICK_DATA_API:"click"+l+".data-api"},f="alert",u="fade",d="show",p=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,a),this._element=null},e._getRootElement=function(t){var e=k.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(h.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(d),k.supportsTransitionEnd()&&o(t).hasClass(u)?o(t).one(k.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(h.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(a);i||(i=new t(this),n.data(a,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),o.fn[s]=p._jQueryInterface,o.fn[s].Constructor=p,o.fn[s].noConflict=function(){return o.fn[s]=c,p._jQueryInterface},p),P=(m="button",v="."+(_="bs.button"),E=".data-api",y=(g=e).fn[m],b="active",T="btn",C="focus",w='[data-toggle^="button"]',I='[data-toggle="buttons"]',A="input",D=".active",S=".btn",O={CLICK_DATA_API:"click"+v+E,FOCUS_BLUR_DATA_API:"focus"+v+E+" blur"+v+E},N=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(I)[0];if(n){var i=g(this._element).find(A)[0];if(i){if("radio"===i.type)if(i.checked&&g(this._element).hasClass(b))t=!1;else{var r=g(n).find(D)[0];r&&g(r).removeClass(b)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!g(this._element).hasClass(b),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!g(this._element).hasClass(b)),t&&g(this._element).toggleClass(b)},e.dispose=function(){g.removeData(this._element,_),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=g(this).data(_);n||(n=new t(this),g(this).data(_,n)),"toggle"===e&&n[e]()})},i(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),g(document).on(O.CLICK_DATA_API,w,function(t){t.preventDefault();var e=t.target;g(e).hasClass(T)||(e=g(e).closest(S)),N._jQueryInterface.call(g(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,w,function(t){var e=g(t.target).closest(S)[0];g(e).toggleClass(C,/^focus(in)?$/.test(t.type))}),g.fn[m]=N._jQueryInterface,g.fn[m].Constructor=N,g.fn[m].noConflict=function(){return g.fn[m]=y,N._jQueryInterface},N),x=function(t){var e="carousel",n="bs.carousel",o="."+n,s=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},c="next",h="prev",f="left",u="right",d={SLIDE:"slide"+o,SLID:"slid"+o,KEYDOWN:"keydown"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o,TOUCHEND:"touchend"+o,LOAD_DATA_API:"load"+o+".data-api",CLICK_DATA_API:"click"+o+".data-api"},p="carousel",g="active",m="slide",_="carousel-item-right",v="carousel-item-left",E="carousel-item-next",y="carousel-item-prev",b={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},T=function(){function s(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(b.INDICATORS)[0],this._addEventListeners()}var T=s.prototype;return T.next=function(){this._isSliding||this._slide(c)},T.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},T.prev=function(){this._isSliding||this._slide(h)},T.pause=function(e){e||(this._isPaused=!0),t(this._element).find(b.NEXT_PREV)[0]&&k.supportsTransitionEnd()&&(k.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},T.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},T.to=function(e){var n=this;this._activeElement=t(this._element).find(b.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var r=e>i?c:h;this._slide(r,this._items[e])}},T.dispose=function(){t(this._element).off(o),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},T._getConfig=function(t){return t=r({},a,t),k.typeCheckConfig(e,t,l),t},T._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},T._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},T._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(b.ITEM)),this._items.indexOf(e)},T._getItemByDirection=function(t,e){var n=t===c,i=t===h,r=this._getItemIndex(e),o=this._items.length-1;if((i&&0===r||n&&r===o)&&!this._config.wrap)return e;var s=(r+(t===h?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},T._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),r=this._getItemIndex(t(this._element).find(b.ACTIVE_ITEM)[0]),o=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:r,to:i});return t(this._element).trigger(o),o},T._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(b.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},T._slide=function(e,n){var i,r,o,s=this,a=t(this._element).find(b.ACTIVE_ITEM)[0],l=this._getItemIndex(a),h=n||a&&this._getItemByDirection(e,a),p=this._getItemIndex(h),T=Boolean(this._interval);if(e===c?(i=v,r=E,o=f):(i=_,r=y,o=u),h&&t(h).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(h,o).isDefaultPrevented()&&a&&h){this._isSliding=!0,T&&this.pause(),this._setActiveIndicatorElement(h);var C=t.Event(d.SLID,{relatedTarget:h,direction:o,from:l,to:p});k.supportsTransitionEnd()&&t(this._element).hasClass(m)?(t(h).addClass(r),k.reflow(h),t(a).addClass(i),t(h).addClass(i),t(a).one(k.TRANSITION_END,function(){t(h).removeClass(i+" "+r).addClass(g),t(a).removeClass(g+" "+r+" "+i),s._isSliding=!1,setTimeout(function(){return t(s._element).trigger(C)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(h).addClass(g),this._isSliding=!1,t(this._element).trigger(C)),T&&this.cycle()}},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),o=r({},a,t(this).data());"object"==typeof e&&(o=r({},o,e));var l="string"==typeof e?e:o.slide;if(i||(i=new s(this,o),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else o.interval&&(i.pause(),i.cycle())})},s._dataApiClickHandler=function(e){var i=k.getSelectorFromElement(this);if(i){var o=t(i)[0];if(o&&t(o).hasClass(p)){var a=r({},t(o).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),s._jQueryInterface.call(t(o),a),l&&t(o).data(n).to(l),e.preventDefault()}}},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),s}();return t(document).on(d.CLICK_DATA_API,b.DATA_SLIDE,T._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(b.DATA_RIDE).each(function(){var e=t(this);T._jQueryInterface.call(e,e.data())})}),t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=s,T._jQueryInterface},T}(e),R=function(t){var e="collapse",n="bs.collapse",o="."+n,s=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},c={SHOW:"show"+o,SHOWN:"shown"+o,HIDE:"hide"+o,HIDDEN:"hidden"+o,CLICK_DATA_API:"click"+o+".data-api"},h="show",f="collapse",u="collapsing",d="collapsed",p="width",g="height",m={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},_=function(){function o(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(m.DATA_TOGGLE),r=0;r0&&(this._selector=s,this._triggerArray.push(o))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var s=o.prototype;return s.toggle=function(){t(this._element).hasClass(h)?this.hide():this.show()},s.show=function(){var e,i,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(h)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(m.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(i=t(e).not(this._selector).data(n))&&i._isTransitioning))){var s=t.Event(c.SHOW);if(t(this._element).trigger(s),!s.isDefaultPrevented()){e&&(o._jQueryInterface.call(t(e).not(this._selector),"hide"),i||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(f).addClass(u),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(u).addClass(f).addClass(h),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(c.SHOWN)};if(k.supportsTransitionEnd()){var p="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(k.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[p]+"px"}else l()}}},s.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(h)){var n=t.Event(c.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",k.reflow(this._element),t(this._element).addClass(u).removeClass(f).removeClass(h),this._triggerArray.length>0)for(var r=0;r0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},o._getTargetFromElement=function(e){var n=k.getSelectorFromElement(e);return n?t(n)[0]:null},o._jQueryInterface=function(e){return this.each(function(){var i=t(this),s=i.data(n),l=r({},a,i.data(),"object"==typeof e&&e);if(!s&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),s||(s=new o(this,l),i.data(n,s)),"string"==typeof e){if("undefined"==typeof s[e])throw new TypeError('No method named "'+e+'"');s[e]()}})},i(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(c.CLICK_DATA_API,m.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),r=k.getSelectorFromElement(this);t(r).each(function(){var e=t(this),r=e.data(n)?"toggle":i.data();_._jQueryInterface.call(e,r)})}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=s,_._jQueryInterface},_}(e),j="undefined"!=typeof window&&"undefined"!=typeof document,H=["Edge","Trident","Firefox"],M=0,W=0;W=0){M=1;break}var U=j&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},M))}};function B(t){return t&&"[object Function]"==={}.toString.call(t)}function F(t,e){if(1!==t.nodeType)return[];var n=getComputedStyle(t,null);return e?n[e]:n}function K(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function V(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=F(t),n=e.overflow,i=e.overflowX,r=e.overflowY;return/(auto|scroll)/.test(n+r+i)?t:V(K(t))}function Q(t){var e=t&&t.offsetParent,n=e&&e.nodeName;return n&&"BODY"!==n&&"HTML"!==n?-1!==["TD","TABLE"].indexOf(e.nodeName)&&"static"===F(e,"position")?Q(e):e:t?t.ownerDocument.documentElement:document.documentElement}function Y(t){return null!==t.parentNode?Y(t.parentNode):t}function G(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,r=n?e:t,o=document.createRange();o.setStart(i,0),o.setEnd(r,0);var s,a,l=o.commonAncestorContainer;if(t!==l&&e!==l||i.contains(r))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&Q(s.firstElementChild)!==s?Q(l):l;var c=Y(t);return c.host?G(c.host,e):G(t,Y(e).host)}function q(t){var e="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}return t[e]}function z(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}var X=void 0,Z=function(){return void 0===X&&(X=-1!==navigator.appVersion.indexOf("MSIE 10")),X};function J(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Z()?n["offset"+t]+i["margin"+("Height"===t?"Top":"Left")]+i["margin"+("Height"===t?"Bottom":"Right")]:0)}function $(){var t=document.body,e=document.documentElement,n=Z()&&getComputedStyle(e);return{height:J("Height",t,e,n),width:J("Width",t,e,n)}}var tt=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},et=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=q(e,"top"),r=q(e,"left"),o=n?-1:1;return t.top+=i*o,t.bottom+=i*o,t.left+=r*o,t.right+=r*o,t}(h,e)),h}function at(t,e,n,i){var r,o,s,a,l,c,h,f={top:0,left:0},u=G(t,e);if("viewport"===i)o=(r=u).ownerDocument.documentElement,s=st(r,o),a=Math.max(o.clientWidth,window.innerWidth||0),l=Math.max(o.clientHeight,window.innerHeight||0),c=q(o),h=q(o,"left"),f=rt({top:c-s.top+s.marginTop,left:h-s.left+s.marginLeft,width:a,height:l});else{var d=void 0;"scrollParent"===i?"BODY"===(d=V(K(e))).nodeName&&(d=t.ownerDocument.documentElement):d="window"===i?t.ownerDocument.documentElement:i;var p=st(d,u);if("HTML"!==d.nodeName||function t(e){var n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===F(e,"position")||t(K(e)))}(u))f=p;else{var g=$(),m=g.height,_=g.width;f.top+=p.top-p.marginTop,f.bottom=m+p.top,f.left+=p.left-p.marginLeft,f.right=_+p.left}}return f.left+=n,f.top+=n,f.right-=n,f.bottom-=n,f}function lt(t,e,n,i,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=at(n,i,o,r),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return it({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight}),h=c.length>0?c[0].key:l[0].key,f=t.split("-")[1];return h+(f?"-"+f:"")}function ct(t,e,n){return st(n,G(e,n))}function ht(t){var e=getComputedStyle(t),n=parseFloat(e.marginTop)+parseFloat(e.marginBottom),i=parseFloat(e.marginLeft)+parseFloat(e.marginRight);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function ft(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ut(t,e,n){n=n.split("-")[0];var i=ht(t),r={width:i.width,height:i.height},o=-1!==["right","left"].indexOf(n),s=o?"top":"left",a=o?"left":"top",l=o?"height":"width",c=o?"width":"height";return r[s]=e[s]+e[l]/2-i[l]/2,r[a]=n===a?e[a]-i[c]:e[ft(a)],r}function dt(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function pt(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=dt(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",n))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&B(n)&&(e.offsets.popper=rt(e.offsets.popper),e.offsets.reference=rt(e.offsets.reference),e=n(e,t))}),e}function gt(t,e){return t.some(function(t){var n=t.name;return t.enabled&&n===e})}function mt(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=wt.indexOf(t),i=wt.slice(n+1).concat(wt.slice(0,n));return e?i.reverse():i}var At={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Dt(t,e,n,i){var r=[0,0],o=-1!==["right","left"].indexOf(i),s=t.split(/(\+|\-)/).map(function(t){return t.trim()}),a=s.indexOf(dt(s,function(t){return-1!==t.search(/,|\s/)}));s[a]&&-1===s[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==a?[s.slice(0,a).concat([s[a].split(l)[0]]),[s[a].split(l)[1]].concat(s.slice(a+1))]:[s];return(c=c.map(function(t,i){var r=(1===i?!o:o)?"height":"width",s=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,s=!0,t):s?(t[t.length-1]+=e,s=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),o=+r[1],s=r[2];if(!o)return t;if(0===s.indexOf("%")){var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return rt(a)[e]/100*o}if("vh"===s||"vw"===s)return("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*o;return o}(t,r,e,n)})})).forEach(function(t,e){t.forEach(function(n,i){yt(n)&&(r[e]+=n*("-"===t[i-1]?-1:1))})}),r}var St={placement:"bottom",eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var r=t.offsets,o=r.reference,s=r.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:nt({},l,o[l]),end:nt({},l,o[l]+o[c]-s[c])};t.offsets.popper=it({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,r=t.offsets,o=r.popper,s=r.reference,a=i.split("-")[0],l=void 0;return l=yt(+n)?[+n,0]:Dt(n,o,s,a),"left"===a?(o.top+=l[0],o.left-=l[1]):"right"===a?(o.top+=l[0],o.left+=l[1]):"top"===a?(o.left+=l[0],o.top-=l[1]):"bottom"===a&&(o.left+=l[0],o.top+=l[1]),t.popper=o,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||Q(t.instance.popper);t.instance.reference===n&&(n=Q(n));var i=at(t.instance.popper,t.instance.reference,e.padding,n);e.boundaries=i;var r=e.priority,o=t.offsets.popper,s={primary:function(t){var n=o[t];return o[t]i[t]&&!e.escapeWithReference&&(r=Math.min(o[n],i[t]-("right"===t?o.width:o.height))),nt({},n,r)}};return r.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";o=it({},o,s[e](t))}),t.offsets.popper=o,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,r=t.placement.split("-")[0],o=Math.floor,s=-1!==["top","bottom"].indexOf(r),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]o(i[a])&&(t.offsets.popper[l]=o(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!Tt(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var r=t.placement.split("-")[0],o=t.offsets,s=o.popper,a=o.reference,l=-1!==["left","right"].indexOf(r),c=l?"height":"width",h=l?"Top":"Left",f=h.toLowerCase(),u=l?"left":"top",d=l?"bottom":"right",p=ht(i)[c];a[d]-ps[d]&&(t.offsets.popper[f]+=a[f]+p-s[d]),t.offsets.popper=rt(t.offsets.popper);var g=a[f]+a[c]/2-p/2,m=F(t.instance.popper),_=parseFloat(m["margin"+h],10),v=parseFloat(m["border"+h+"Width"],10),E=g-t.offsets.popper[f]-_-v;return E=Math.max(Math.min(s[c]-p,E),0),t.arrowElement=i,t.offsets.arrow=(nt(n={},f,Math.round(E)),nt(n,u,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(gt(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=at(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement),i=t.placement.split("-")[0],r=ft(i),o=t.placement.split("-")[1]||"",s=[];switch(e.behavior){case At.FLIP:s=[i,r];break;case At.CLOCKWISE:s=It(i);break;case At.COUNTERCLOCKWISE:s=It(i,!0);break;default:s=e.behavior}return s.forEach(function(a,l){if(i!==a||s.length===l+1)return t;i=t.placement.split("-")[0],r=ft(i);var c,h=t.offsets.popper,f=t.offsets.reference,u=Math.floor,d="left"===i&&u(h.right)>u(f.left)||"right"===i&&u(h.left)u(f.top)||"bottom"===i&&u(h.top)u(n.right),m=u(h.top)u(n.bottom),v="left"===i&&p||"right"===i&&g||"top"===i&&m||"bottom"===i&&_,E=-1!==["top","bottom"].indexOf(i),y=!!e.flipVariations&&(E&&"start"===o&&p||E&&"end"===o&&g||!E&&"start"===o&&m||!E&&"end"===o&&_);(d||v||y)&&(t.flipped=!0,(d||v)&&(i=s[l+1]),y&&(o="end"===(c=o)?"start":"start"===c?"end":c),t.placement=i+(o?"-"+o:""),t.offsets.popper=it({},t.offsets.popper,ut(t.instance.popper,t.offsets.reference,t.placement)),t=pt(t.instance.modifiers,t,"flip"))}),t},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,r=i.popper,o=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return r[s?"left":"top"]=o[n]-(a?r[s?"width":"height"]:0),t.placement=ft(e),t.offsets.popper=rt(r),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Tt(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=dt(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};tt(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=U(this.update.bind(this)),this.options=it({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(it({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=it({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return it({name:t},i.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&B(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return et(t,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=ct(this.state,this.popper,this.reference),t.placement=lt(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.offsets.popper=ut(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position="absolute",t=pt(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,gt(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.left="",this.popper.style.position="",this.popper.style.top="",this.popper.style[mt("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=vt(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return Et.call(this)}}]),t}();Ot.Utils=("undefined"!=typeof window?window:global).PopperUtils,Ot.placements=Ct,Ot.Defaults=St;var Nt=function(t){var e="dropdown",n="bs.dropdown",o="."+n,s=t.fn[e],a=new RegExp("38|40|27"),l={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+".data-api",KEYDOWN_DATA_API:"keydown"+o+".data-api",KEYUP_DATA_API:"keyup"+o+".data-api"},c="disabled",h="show",f="dropup",u="dropright",d="dropleft",p="dropdown-menu-right",g="dropdown-menu-left",m="position-static",_='[data-toggle="dropdown"]',v=".dropdown form",E=".dropdown-menu",y=".navbar-nav",b=".dropdown-menu .dropdown-item:not(.disabled)",T="top-start",C="top-end",w="bottom-start",I="bottom-end",A="right-start",D="left-start",S={offset:0,flip:!0,boundary:"scrollParent"},O={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},N=function(){function s(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var v=s.prototype;return v.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(c)){var e=s._getParentFromElement(this._element),n=t(this._menu).hasClass(h);if(s._clearMenus(),!n){var i={relatedTarget:this._element},r=t.Event(l.SHOW,i);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof Ot)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(f)&&(t(this._menu).hasClass(g)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(m),this._popper=new Ot(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(y).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(h),t(e).toggleClass(h).trigger(t.Event(l.SHOWN,i))}}}},v.dispose=function(){t.removeData(this._element,n),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},v.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},v._addEventListeners=function(){var e=this;t(this._element).on(l.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},v._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),k.typeCheckConfig(e,n,this.constructor.DefaultType),n},v._getMenuElement=function(){if(!this._menu){var e=s._getParentFromElement(this._element);this._menu=t(e).find(E)[0]}return this._menu},v._getPlacement=function(){var e=t(this._element).parent(),n=w;return e.hasClass(f)?(n=T,t(this._menu).hasClass(p)&&(n=C)):e.hasClass(u)?n=A:e.hasClass(d)?n=D:t(this._menu).hasClass(p)&&(n=I),n},v._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},v._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n);if(i||(i=new s(this,"object"==typeof e?e:null),t(this).data(n,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var i=t.makeArray(t(_)),r=0;r0&&o--,40===e.which&&odocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},g._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},g._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",u="out",d={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},p="fade",g="show",m=".tooltip-inner",_=".arrow",v="hover",E="focus",y="click",b="manual",T=function(){function s(t,e){if("undefined"==typeof Ot)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var T=s.prototype;return T.enable=function(){this._isEnabled=!0},T.disable=function(){this._isEnabled=!1},T.toggleEnabled=function(){this._isEnabled=!this._isEnabled},T.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(g))return void this._leave(null,this);this._enter(null,this)}},T.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},T.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var r=this.getTipElement(),o=k.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(p);var a="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,l=this._getAttachment(a);this.addAttachmentClass(l);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new Ot(this.element,r,{placement:l,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:_},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(g),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var h=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===u&&e._leave(null,e)};k.supportsTransitionEnd()&&t(this.tip).hasClass(p)?t(this.tip).one(k.TRANSITION_END,h).emulateTransitionEnd(s._TRANSITION_DURATION):h()}},T.hide=function(e){var n=this,i=this.getTipElement(),r=t.Event(this.constructor.Event.HIDE),o=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(r),r.isDefaultPrevented()||(t(i).removeClass(g),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[E]=!1,this._activeTrigger[v]=!1,k.supportsTransitionEnd()&&t(this.tip).hasClass(p)?t(i).one(k.TRANSITION_END,o).emulateTransitionEnd(150):o(),this._hoverState="")},T.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},T.isWithContent=function(){return Boolean(this.getTitle())},T.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},T.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},T.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(p+" "+g)},T.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},T.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},T._getAttachment=function(t){return c[t.toUpperCase()]},T._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==b){var i=n===v?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,r=n===v?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(r,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},T._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},T._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?E:v]=!0),t(n.getTipElement()).hasClass(g)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},T._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?E:v]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=u,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===u&&n.hide()},n.config.delay.hide):n.hide())},T._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},T._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),k.typeCheckConfig(e,n,this.constructor.DefaultType),n},T._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},T._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},T._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},T._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(p),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},s._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),r="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new s(this,r),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(s,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return h}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return d}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return l}}]),s}();return t.fn[e]=T._jQueryInterface,t.fn[e].Constructor=T,t.fn[e].noConflict=function(){return t.fn[e]=s,T._jQueryInterface},T}(e),Pt=function(t){var e="popover",n="bs.popover",o="."+n,s=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},Lt.Default,{placement:"right",trigger:"click",content:"",template:''}),c=r({},Lt.DefaultType,{content:"(string|element|function)"}),h="fade",f="show",u=".popover-header",d=".popover-body",p={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g=function(r){var s,g;function m(){return r.apply(this,arguments)||this}g=r,(s=m).prototype=Object.create(g.prototype),s.prototype.constructor=s,s.__proto__=g;var _=m.prototype;return _.isWithContent=function(){return this.getTitle()||this._getContent()},_.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},_.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},_.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(u),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(h+" "+f)},_._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},_._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},m._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),r="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new m(this,r),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},i(m,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return p}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return c}}]),m}(Lt);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=s,g._jQueryInterface},g}(e),xt=function(t){var e="scrollspy",n="bs.scrollspy",o="."+n,s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},c={ACTIVATE:"activate"+o,SCROLL:"scroll"+o,LOAD_DATA_API:"load"+o+".data-api"},h="dropdown-item",f="active",u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",p="position",g=function(){function s(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.LIST_ITEMS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(c.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=s.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:p,i="auto"===this._config.method?n:this._config.method,r=i===p?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,o=k.getSelectorFromElement(e);if(o&&(n=t(o)[0]),n){var s=n.getBoundingClientRect();if(s.width||s.height)return[t(n)[i]().top+r,o]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(o),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=k.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return k.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=k,t.Alert=L,t.Button=P,t.Carousel=x,t.Collapse=R,t.Dropdown=Nt,t.Modal=kt,t.Popover=Pt,t.Scrollspy=xt,t.Tab=Rt,t.Tooltip=Lt,Object.defineProperty(t,"__esModule",{value:!0})}); 7 | //# sourceMappingURL=bootstrap.bundle.min.js.map -------------------------------------------------------------------------------- /js/generator.js: -------------------------------------------------------------------------------- 1 | function Singleton() { 2 | if (typeof Singleton.instance === 'object') { 3 | return Singleton.instance; 4 | } 5 | 6 | this.theses = null; 7 | this.lists = null; 8 | this.answers = null; 9 | this.activeThesis = 0; 10 | this.activeList = 0; 11 | 12 | Singleton.instance = this; 13 | } 14 | 15 | function deleteme(self) { 16 | $(self).parent().parent().hide(400); 17 | window.setTimeout(function () { $(self).parent().parent().remove(); }, 500); 18 | } 19 | 20 | function moveup(self) { 21 | $(self).parent().parent().hide(400); 22 | window.setTimeout(function () { 23 | $(self).parent().parent().insertBefore($(self).parent().parent().prev(".singlethesis")); 24 | $(self).parent().parent().show(400); 25 | }, 400); 26 | 27 | } 28 | 29 | function movedown(self) { 30 | $(self).parent().parent().hide(400); 31 | window.setTimeout(function () { 32 | $(self).parent().parent().insertAfter($(self).parent().parent().next(".singlethesis")); 33 | $(self).parent().parent().show(400); 34 | }, 400); 35 | } 36 | 37 | function readData() { 38 | Singleton.instance.theses = {}; 39 | 40 | $('.input_thesis').each(function (index, value) { 41 | Singleton.instance.theses[index] = {}; 42 | Singleton.instance.theses[index].l = $(value).val(); 43 | }); 44 | $('.input_thesis_short').each(function (index, value) { 45 | Singleton.instance.theses[index].s = $(value).val(); 46 | }); 47 | $('.input_explanation').each(function (index, value) { 48 | Singleton.instance.theses[index].x = $(value).val(); 49 | }); 50 | 51 | 52 | Singleton.instance.lists = {}; 53 | 54 | $('.input_list').each(function (index, value) { 55 | Singleton.instance.lists[index] = {}; 56 | Singleton.instance.lists[index].name = $(value).val(); 57 | }); 58 | $('.input_list_short').each(function (index, value) { 59 | Singleton.instance.lists[index].name_x = $(value).val(); 60 | }); 61 | 62 | if (Singleton.instance.answers == null) { 63 | Singleton.instance.answers = {}; 64 | } 65 | 66 | // remove surplus list and/or thesis keys 67 | for (listkey in Object.keys(Singleton.instance.answers)) { 68 | if (!(listkey in Singleton.instance.lists)) { 69 | delete Singleton.instance.answers[listkey]; 70 | } else { 71 | for (thesiskey in Object.keys(Singleton.instance.answers[listkey])) { 72 | if (!(thesiskey in Singleton.instance.theses)) { 73 | delete Singleton.instance.answers[listkey][thesiskey]; 74 | } 75 | } 76 | } 77 | } 78 | 79 | // initialize missing list and/or thesis keys 80 | for (listkey in Object.keys(Singleton.instance.lists)) { 81 | if (!(listkey in Singleton.instance.answers)) { 82 | Singleton.instance.answers[listkey] = {}; 83 | } 84 | for (thesiskey in Object.keys(Singleton.instance.theses)) { 85 | if (!(thesiskey in Singleton.instance.answers[listkey])) { 86 | Singleton.instance.answers[listkey][thesiskey] = {}; 87 | Singleton.instance.answers[listkey][thesiskey].selection = "d"; 88 | Singleton.instance.answers[listkey][thesiskey].statement = ""; 89 | } 90 | } 91 | } 92 | } 93 | 94 | function generateTheses() { 95 | for (key in Object.keys(Singleton.instance.theses)) { 96 | generateThesis(Singleton.instance.theses[key].l, Singleton.instance.theses[key].s, Singleton.instance.theses[key].x); 97 | } 98 | } 99 | 100 | function generateLists() { 101 | for (key in Object.keys(Singleton.instance.lists)) { 102 | generateList(Singleton.instance.lists[key].name, Singleton.instance.lists[key].name_x); 103 | } 104 | } 105 | 106 | function generateEmptyThesis() { 107 | generateThesis("", "", ""); 108 | } 109 | 110 | function generateThesis(name, shortname, explanation) { 111 | var thesisdiv = '
' + 112 | '
' + 113 | ' ' + 114 | ' ' + 115 | '
' + 116 | '
' + 117 | ' ' + 118 | ' ' + 119 | '
' + 120 | '
' + 121 | ' ' + 122 | ' ' + 123 | '
' + 124 | '
' + 125 | ' ' + 126 | ' ' + 127 | ' ' + 128 | '
' + 129 | '
'; 130 | 131 | $('#theses_list').append(thesisdiv); 132 | } 133 | 134 | function generateEmptyList() { 135 | generateList("", ""); 136 | } 137 | 138 | function generateList(name, shortname) { 139 | var listdiv = '
' + 140 | '
' + 141 | ' ' + 142 | ' ' + 143 | '
' + 144 | '
' + 145 | ' ' + 146 | ' ' + 147 | '
' + 148 | '
' + 149 | ' ' + 150 | ' ' + 151 | ' ' + 152 | '
' + 153 | '
'; 154 | 155 | $('#lists_list').append(listdiv); 156 | } 157 | 158 | $(function () { 159 | var singleton = new Singleton(); 160 | 161 | $.getJSON("config/data.json", function (data) { 162 | data.activeThesis = 0; 163 | data.activeList = 0; 164 | Singleton.instance = data; 165 | 166 | 167 | generateTheses(); 168 | generateLists(); 169 | }); 170 | 171 | 172 | $('#btn_add_list').click(function () { 173 | generateEmptyList(); 174 | }); 175 | 176 | $('#btn_add_thesis').click(function () { 177 | generateEmptyThesis(); 178 | }); 179 | 180 | $('#theses_input').hide(); 181 | $('#lists_input').hide(); 182 | $('#data_input').hide(); 183 | $('#encodeddata').hide(); 184 | 185 | 186 | $('#btn_start_next').click(function () { 187 | $('#start').hide(500); 188 | $('#theses_input').show(500); 189 | }); 190 | 191 | $('#btn_step_1_next').click(function () { 192 | $('#theses_input').hide(500); 193 | $('#lists_input').show(500); 194 | }); 195 | 196 | $('#btn_step_2_next').click(function () { 197 | createStep3(); 198 | $('#lists_input').hide(500); 199 | $('#data_input').show(500); 200 | }); 201 | 202 | $('#btn_step_2_prev').click(function () { 203 | $('#theses_input').show(500); 204 | $('#lists_input').hide(500); 205 | }); 206 | 207 | $('#btn_step_3_prev').click(function () { 208 | $('#lists_input').show(500); 209 | $('#data_input').hide(500); 210 | }); 211 | 212 | $('#generate').click(function () { 213 | var copy = JSON.parse(JSON.stringify(Singleton.instance)) 214 | delete copy.activeThesis; 215 | delete copy.activeList; 216 | var jsonstring = JSON.stringify(copy, null, '\t'); 217 | $('#output_encodeddata').val(jsonstring); 218 | $('#data_input').hide(500); 219 | $('#encodeddata').show(500); 220 | }); 221 | 222 | }); 223 | 224 | function createStep3() { 225 | readData(); 226 | 227 | makeListSelect(Singleton.instance.lists); 228 | makePagination(Object.keys(Singleton.instance.theses).length); 229 | makeThesesBox(); 230 | 231 | 232 | $('.tt').tooltip(); 233 | $('.explic').hide(); 234 | 235 | thesesboxes = $('.thesis'); 236 | 237 | 238 | setPaginationColors(); 239 | thesesboxes.hide(); 240 | 241 | $('.explanationbutton').click(function (event) { 242 | event.preventDefault(); 243 | $('.explic').toggle(); 244 | }); 245 | 246 | 247 | loadList(Singleton.instance.activeList); 248 | loadThesis(Singleton.instance.activeThesis + 1); 249 | 250 | $('[id^=input-]').change(function () { 251 | saveInput(); 252 | }) 253 | 254 | updateStatistics(); 255 | 256 | // left and right keys 257 | $(window).keypress(function (e) { 258 | var code = e.which || e.keyCode; 259 | switch (code) { 260 | case 37: //left 261 | prevThesis(); 262 | break; 263 | case 39: //right 264 | nextThesis(); 265 | break; 266 | default: 267 | break; 268 | } 269 | }); 270 | } 271 | 272 | function saveInput() { 273 | for (key in Object.keys(Singleton.instance.answers[Singleton.instance.activeList])) { 274 | Singleton.instance.answers[Singleton.instance.activeList][key].statement = $('#input-' + key).val(); 275 | } 276 | } 277 | 278 | 279 | function setThesis(selection) { 280 | pagination = $('#navigation li'); 281 | Singleton.instance.answers[Singleton.instance.activeList][Singleton.instance.activeThesis].selection = selection; 282 | pagination.eq(Singleton.instance.activeThesis).removeClass('pagination-yes pagination-neutral pagination-no'); 283 | pagination.eq(Singleton.instance.activeThesis).addClass(letter2paginationclass(selection)); 284 | setClasses(selection); 285 | updateStatistics(); 286 | } 287 | 288 | function updateStatistics() { 289 | answeredcount = 0; 290 | for (i = 0; i < Object.keys(Singleton.instance.answers[Singleton.instance.activeList]).length; i++) { 291 | if (Singleton.instance.answers[Singleton.instance.activeList][i].selection != 'd') { 292 | answeredcount++; 293 | } 294 | } 295 | $('#answered_questions_count').text(answeredcount); 296 | $('#overall_questions_count').text(Object.keys(Singleton.instance.answers[Singleton.instance.activeList]).length); 297 | } 298 | 299 | function nextThesis() { 300 | loadThesis(Singleton.instance.activeThesis + 2); 301 | } 302 | 303 | function prevThesis() { 304 | loadThesis(Singleton.instance.activeThesis); 305 | } 306 | 307 | function loadThesis(number) { 308 | thesesboxes = $('.thesis'); 309 | pagination = $('#navigation li'); 310 | if (number > thesesboxes.length) { 311 | number = 1; 312 | } 313 | if (number < 1) { 314 | number = thesesboxes.length; 315 | } 316 | Singleton.instance.activeThesis = number - 1; 317 | thesesboxes.slideUp(); 318 | pagination.removeClass('active'); 319 | 320 | setClasses(Singleton.instance.answers[Singleton.instance.activeList][Singleton.instance.activeThesis].selection); 321 | 322 | thesesboxes.eq(number - 1).slideDown(); 323 | pagination.eq(number - 1).addClass('active'); 324 | 325 | } 326 | 327 | function letter2paginationclass(letter) { 328 | switch (letter) { 329 | case 'a': 330 | return 'pagination-yes'; 331 | break; 332 | case 'b': 333 | return 'pagination-neutral'; 334 | break; 335 | case 'c': 336 | return 'pagination-no'; 337 | break; 338 | case 'd': 339 | return ''; 340 | break; 341 | 342 | } 343 | } 344 | 345 | function setClasses(code) { 346 | switch (code) { 347 | case 'a': 348 | case 'e': 349 | $('#yes').addClass('btn-success'); 350 | $('#neutral').removeClass('btn-warning'); 351 | $('#no').removeClass('btn-danger'); 352 | break; 353 | case 'b': 354 | case 'f': 355 | $('#yes').removeClass('btn-success'); 356 | $('#neutral').addClass('btn-warning'); 357 | $('#no').removeClass('btn-danger'); 358 | break; 359 | case 'c': 360 | case 'g': 361 | $('#yes').removeClass('btn-success'); 362 | $('#neutral').removeClass('btn-warning'); 363 | $('#no').addClass('btn-danger'); 364 | break; 365 | case 'd': 366 | case 'h': 367 | $('#yes').addClass('btn-success'); 368 | $('#neutral').addClass('btn-warning'); 369 | $('#no').addClass('btn-danger'); 370 | break; 371 | } 372 | } 373 | 374 | function setPaginationColors() { 375 | answers = Singleton.instance.answers; 376 | pagination = $('#navigation li'); 377 | pagination.removeClass("pagination-yes pagination-neutral pagination-no"); 378 | for (i = 0; i < Object.keys(answers[Singleton.instance.activeList]).length; i++) { 379 | pagination.eq(i).addClass(letter2paginationclass(answers[Singleton.instance.activeList][i])); 380 | } 381 | } 382 | 383 | function makeListSelect(lists) { 384 | str = ''; 390 | $('#listselect').html(str); 391 | } 392 | 393 | function loadList(id) { 394 | $('.listselector a').removeClass('active'); 395 | $('.listselector:eq(' + id + ') a').addClass('active'); 396 | Singleton.instance.activeList = id; 397 | var answers = Singleton.instance.answers; 398 | for (i = 0; i < Object.keys(answers[Singleton.instance.activeList]).length; i++) { 399 | $('#input-' + i).val(answers[Singleton.instance.activeList][i].statement); 400 | } 401 | setPaginationColors(); 402 | updateStatistics(); 403 | setClasses(answers[Singleton.instance.activeList][Singleton.instance.activeThesis].selection); 404 | } 405 | 406 | function makePagination(theses_count) { 407 | str = ''; 412 | $('#pagination').html(str); 413 | } 414 | 415 | function makeThesesBox() { 416 | var theses = Singleton.instance.theses; 417 | var lists = Singleton.instance.lists; 418 | for (q_id = 0; q_id < Object.keys(theses).length; q_id++) { 419 | str = "
"; 420 | str += "

These " + (q_id + 1) + "

"; 421 | str += "
"; 422 | str += "

"; 423 | 424 | str += theses[q_id].l; 425 | 426 | str += "

"; 427 | if (theses[q_id].x != "") { 428 | str += "\n"; 429 | str += "
" + theses[q_id].x + "
"; 430 | } 431 | 432 | str += "
"; 433 | 434 | str += "
"; 435 | str += "
"; 436 | str += ""; 437 | str += "
"; 438 | str += "
"; 439 | 440 | str += "
"; 441 | $('#thesesbox').append(str); 442 | } 443 | } -------------------------------------------------------------------------------- /js/hammer.min.js: -------------------------------------------------------------------------------- 1 | /*! Hammer.JS - v2.0.8 - 2016-04-23 2 | * http://hammerjs.github.io/ 3 | * 4 | * Copyright (c) 2016 Jorik Tangelder; 5 | * Licensed under the MIT license */ 6 | !function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&la(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==oa?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=ra(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=qa(j.x)>qa(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};b.eventType!==Ea&&f.eventType!==Ga||(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ha&&(i>Da||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=qa(l.x)>qa(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:pa(c/b),y:pa(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ia:qa(a)>=qa(b)?0>a?Ja:Ka:0>b?La:Ma}function H(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Ra)+I(a[1],a[0],Ra)}function K(a,b){return H(b[0],b[1],Ra)/H(a[0],a[1],Ra)}function L(){this.evEl=Ta,this.evWin=Ua,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Xa,this.evWin=Ya,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=$a,this.evWin=_a,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ga|Ha)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=bb,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Ea|Fa)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Ea)for(e=0;e-1&&d.splice(a,1)};setTimeout(e,cb)}}function U(a){for(var b=a.srcEvent.clientX,c=a.srcEvent.clientY,d=0;d=f&&db>=g)return!0}return!1}function V(a,b){this.manager=a,this.set(b)}function W(a){if(p(a,jb))return jb;var b=p(a,kb),c=p(a,lb);return b&&c?jb:b||c?b?kb:lb:p(a,ib)?ib:hb}function X(){if(!fb)return!1;var b={},c=a.CSS&&a.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(d){b[d]=c?a.CSS.supports("touch-action",d):!0}),b}function Y(a){this.options=la({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=nb,this.simultaneous={},this.requireFail=[]}function Z(a){return a&sb?"cancel":a&qb?"end":a&pb?"move":a&ob?"start":""}function $(a){return a==Ma?"down":a==La?"up":a==Ja?"left":a==Ka?"right":""}function _(a,b){var c=b.manager;return c?c.get(a):a}function aa(){Y.apply(this,arguments)}function ba(){aa.apply(this,arguments),this.pX=null,this.pY=null}function ca(){aa.apply(this,arguments)}function da(){Y.apply(this,arguments),this._timer=null,this._input=null}function ea(){aa.apply(this,arguments)}function fa(){aa.apply(this,arguments)}function ga(){Y.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ha(a,b){return b=b||{},b.recognizers=l(b.recognizers,ha.defaults.preset),new ia(a,b)}function ia(a,b){this.options=la({},ha.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=a,this.input=y(this),this.touchAction=new V(this,this.options.touchAction),ja(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ja(a,b){var c=a.element;if(c.style){var d;g(a.options.cssProps,function(e,f){d=u(c.style,f),b?(a.oldCssProps[d]=c.style[d],c.style[d]=e):c.style[d]=a.oldCssProps[d]||""}),b||(a.oldCssProps={})}}function ka(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var la,ma=["","webkit","Moz","MS","ms","o"],na=b.createElement("div"),oa="function",pa=Math.round,qa=Math.abs,ra=Date.now;la="function"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;ch&&(b.push(a),h=b.length-1):e&(Ga|Ha)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Za={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},$a="touchstart",_a="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Za[a.type];if(b===Ea&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ga|Ha)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}}});var ab={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},bb="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=ab[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}});var cb=2500,db=25;i(R,x,{handler:function(a,b,c){var d=c.pointerType==za,e=c.pointerType==Ba;if(!(e&&c.sourceCapabilities&&c.sourceCapabilities.firesTouchEvents)){if(d)S.call(this,b,c);else if(e&&U.call(this,c))return;this.callback(a,b,c)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var eb=u(na.style,"touchAction"),fb=eb!==d,gb="compute",hb="auto",ib="manipulation",jb="none",kb="pan-x",lb="pan-y",mb=X();V.prototype={set:function(a){a==gb&&(a=this.compute()),fb&&this.manager.element.style&&mb[a]&&(this.manager.element.style[eb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),W(a.join(" "))},preventDefaults:function(a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,jb)&&!mb[jb],f=p(d,lb)&&!mb[lb],g=p(d,kb)&&!mb[kb];if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}return g&&f?void 0:e||f&&c&Na||g&&c&Oa?this.preventSrc(b):void 0},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var nb=1,ob=2,pb=4,qb=8,rb=qb,sb=16,tb=32;Y.prototype={defaults:{},set:function(a){return la(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=_(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=_(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=_(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;qb>d&&b(c.options.event+Z(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=qb&&b(c.options.event+Z(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=tb)},canEmit:function(){for(var a=0;af?Ja:Ka,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ia:0>g?La:Ma,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return aa.prototype.attrTest.call(this,a)&&(this.state&ob||!(this.state&ob)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i(ca,aa,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&ob)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(da,Y,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[hb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ga|Ha)&&!f)this.reset();else if(a.eventType&Ea)this.reset(),this._timer=e(function(){this.state=rb,this.tryEmit()},b.time,this);else if(a.eventType&Ga)return rb;return tb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===rb&&(a&&a.eventType&Ga?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=ra(),this.manager.emit(this.options.event,this._input)))}}),i(ea,aa,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&ob)}}),i(fa,aa,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Na|Oa,pointers:1},getTouchAction:function(){return ba.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Na|Oa)?b=a.overallVelocity:c&Na?b=a.overallVelocityX:c&Oa&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&qa(b)>this.options.velocity&&a.eventType&Ga},emit:function(a){var b=$(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ga,Y,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ib]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance' + t.error_loading_config_file + ''); 36 | }); 37 | } 38 | 39 | function initOnclickCallbacks() { 40 | $('#swype-info').off('click').click(function () { hideSwypeInfo(); }); 41 | $('#btn-start').off('click').click(function () { showMahlowat(); }); 42 | $('#btn-start-show-qa').off('click').click(function () { showQA(); }); 43 | $('#btn-toggle-thesis-more').off('click').click(function () { toggleThesisMore(); }); 44 | $('#btn-important').off('click').click(function () { toggleImportant(); }); 45 | $('#btn-yes').off('click').click(function () { doYes(); }); 46 | $('#btn-neutral').off('click').click(function () { doNeutral(); }); 47 | $('#btn-no').off('click').click(function () { doNo(); }); 48 | $('#btn-skip').off('click').click(function () { doSkip(); }); 49 | $('#btn-mahlowat-show-start').off('click').click(function () { showStart(); }); 50 | $('#btn-mahlowat-show-qa').off('click').click(function () { showQA(); }); 51 | $('#btn-mahlowat-skip-remaining-theses').off('click').click(function () { showResults(); }); 52 | $('#btn-results-show-start').off('click').click(function () { showStart(); }); 53 | $('#btn-results-show-qa').off('click').click(function () { showQA(); }); 54 | } 55 | 56 | function initHammer() { 57 | var thesisHammer = new Hammer(document.getElementById("thesis-card")); 58 | thesisHammer.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL }); 59 | thesisHammer.on('swipeleft', nextThesis); 60 | thesisHammer.on('swiperight', prevThesis); 61 | 62 | var resultHammer = new Hammer(document.getElementById("result-summary-row")); 63 | resultHammer.on('swiperight', function (ev) { 64 | showMahlowat(); 65 | }); 66 | } 67 | 68 | function showQA() { 69 | $('#QAModal').modal('show'); 70 | } 71 | 72 | function recreatePagination() { 73 | $('#pagination').empty(); 74 | for (let i = 0; i < Object.keys(data.theses).length; i++) { 75 | $('#pagination').append('
  • ') 76 | } 77 | } 78 | 79 | function updateProgressBar() { 80 | let percentage = Math.round(100 * (currentThesis + 1) / Object.keys(data.theses).length); 81 | $('#overall-progress-bar').css('width', "" + percentage + "%"); 82 | } 83 | 84 | function getPaginationClasses(i) { 85 | switch (answers[i]) { 86 | case "a": 87 | case "e": 88 | return " bg-success text-light"; 89 | break; 90 | case "b": 91 | case "f": 92 | return " bg-warning text-dark"; 93 | break; 94 | case "c": 95 | case "g": 96 | return " bg-danger text-light"; 97 | break; 98 | case "d": 99 | case "h": 100 | return ""; 101 | break; 102 | default: 103 | return ""; 104 | } 105 | } 106 | 107 | function doYes() { 108 | if (isThesisMarkedImportant()) { 109 | answers[currentThesis] = 'e'; 110 | } else { 111 | answers[currentThesis] = 'a'; 112 | } 113 | recreatePagination(); 114 | nextThesisAfterSelection(); 115 | } 116 | function doNeutral() { 117 | if (isThesisMarkedImportant()) { 118 | answers[currentThesis] = 'f'; 119 | } else { 120 | answers[currentThesis] = 'b'; 121 | } 122 | recreatePagination(); 123 | nextThesisAfterSelection(); 124 | } 125 | function doNo() { 126 | if (isThesisMarkedImportant()) { 127 | answers[currentThesis] = 'g'; 128 | } else { 129 | answers[currentThesis] = 'c'; 130 | } 131 | recreatePagination(); 132 | nextThesisAfterSelection(); 133 | } 134 | function doSkip() { 135 | if (isThesisMarkedImportant()) { 136 | answers[currentThesis] = 'h'; 137 | } else { 138 | answers[currentThesis] = 'd'; 139 | } 140 | recreatePagination(); 141 | nextThesisAfterSelection(); 142 | } 143 | 144 | function toggleImportant() { 145 | answers[currentThesis] = toggleImportantCharacter(answers[currentThesis]); 146 | if (isThesisMarkedImportant()) { 147 | setImportant(); 148 | } else { 149 | unsetImportant(); 150 | } 151 | } 152 | 153 | function unsetImportant() { 154 | $('#btn-important').addClass('btn-light'); 155 | $('#btn-important').removeClass('btn-info'); 156 | $('#btn-important').text(t.btn_make_thesis_double_weight); 157 | } 158 | 159 | function setImportant() { 160 | $('#btn-important').removeClass('btn-light'); 161 | $('#btn-important').addClass('btn-info'); 162 | $('#btn-important').text(t.btn_thesis_has_double_weight); 163 | } 164 | 165 | function isThesisMarkedImportant() { 166 | return answers[currentThesis] === 'e' || 167 | answers[currentThesis] === 'f' || 168 | answers[currentThesis] === 'g' || 169 | answers[currentThesis] === 'h'; 170 | } 171 | 172 | function toggleImportantCharacter(char) { 173 | switch (char) { 174 | case 'a': 175 | return 'e'; 176 | break; 177 | case 'b': 178 | return 'f'; 179 | break; 180 | case 'c': 181 | return 'g'; 182 | break; 183 | case 'd': 184 | return 'h'; 185 | break; 186 | case 'e': 187 | return 'a'; 188 | break; 189 | case 'f': 190 | return 'b'; 191 | break; 192 | case 'g': 193 | return 'c'; 194 | break; 195 | case 'h': 196 | return 'd'; 197 | break; 198 | default: 199 | return 'd'; 200 | } 201 | } 202 | 203 | function styleAnswerButtons() { 204 | $('#btn-yes').removeClass('btn-success'); 205 | $('#btn-no').removeClass('btn-danger'); 206 | $('#btn-neutral').removeClass('btn-warning'); 207 | $('#btn-skip').removeClass('btn-secondary'); 208 | unsetImportant(); 209 | 210 | switch (answers[currentThesis]) { 211 | case "e": 212 | setImportant(); 213 | case "a": 214 | $('#btn-yes').addClass('btn-success'); 215 | break; 216 | 217 | case "f": 218 | setImportant(); 219 | case "b": 220 | $('#btn-neutral').addClass('btn-warning'); 221 | break; 222 | 223 | case "g": 224 | setImportant(); 225 | case "c": 226 | $('#btn-no').addClass('btn-danger'); 227 | break; 228 | 229 | case "h": 230 | setImportant(); 231 | case "d": 232 | $('#btn-yes').addClass('btn-success'); 233 | $('#btn-neutral').addClass('btn-warning'); 234 | $('#btn-no').addClass('btn-danger'); 235 | $('#btn-skip').addClass('btn-secondary'); 236 | break; 237 | } 238 | } 239 | 240 | function initAnswers() { 241 | answers = []; 242 | for (let i = 0; i < Object.keys(data.theses).length; i++) { 243 | answers.push('d'); 244 | } 245 | } 246 | 247 | function loadThesisNumber(number) { 248 | currentThesis = number; 249 | loadThesis(); 250 | } 251 | 252 | function loadThesis() { 253 | if (currentThesis < 0) { currentThesis = 0; } 254 | if (currentThesis >= Object.keys(data.theses).length) { currentThesis = Object.keys(data.theses).length - 1; } 255 | 256 | let thesis_id = "" + currentThesis; 257 | $('#btn-toggle-thesis-more').fadeOut(200); 258 | $('#thesis-text').fadeOut(200, function () { 259 | $('#thesis-text').text(data.theses[thesis_id].l); 260 | $('#thesis-text').fadeIn(200); 261 | if (data.theses[thesis_id].x !== "") { 262 | $('#btn-toggle-thesis-more').fadeIn(200); 263 | } 264 | }); 265 | $('#thesis-number').text(t.thesis_number(currentThesis + 1) + ": " + data.theses[thesis_id].s); 266 | // $('#thesis-text').text(data.theses[thesis_id].l); 267 | $('#thesis-more').hide(); 268 | $('#thesis-more').text(data.theses[thesis_id].x); 269 | 270 | styleAnswerButtons(); 271 | updateProgressBar(); 272 | } 273 | 274 | function nextThesisAfterSelection() { 275 | styleAnswerButtons(); 276 | clearTimeout(timeout); 277 | timeout = setTimeout(function () { 278 | nextThesis(); 279 | }, 300); 280 | } 281 | 282 | function nextThesis() { 283 | currentThesis++; 284 | if (currentThesis == Object.keys(data.theses).length) { 285 | showResults(); 286 | } else { 287 | loadThesis(); 288 | } 289 | } 290 | 291 | function prevThesis() { 292 | currentThesis--; 293 | loadThesis(); 294 | } 295 | 296 | function showResults() { 297 | let maxAchievablePoints = 0; 298 | let results = []; 299 | for (let i = 0; i < answers.length; i++) { 300 | maxAchievablePoints += calculatePairPoints(answers[i], answers[i]); 301 | } 302 | for (list_id in data.lists) { 303 | let pointsForList = 0; 304 | for (let i = 0; i < answers.length; i++) { 305 | let thesis_id = "" + i; 306 | pointsForList += calculatePairPoints(answers[i], data.answers[list_id][thesis_id].selection); 307 | } 308 | let list = data.lists[list_id].name_x; 309 | results.push([list, pointsForList]); 310 | } 311 | results.sort(function (a, b) { if (a[1] == b[1]) { return 0; } else if (a[1] > b[1]) return -1; return 1; }) 312 | $('#result-summary').empty(); 313 | for (let i=0; i < results.length; i++) { 314 | let result = results[i]; 315 | let list = result[0]; 316 | let pointsForList = result[1]; 317 | addResultSummary(list, pointsForList, maxAchievablePoints); 318 | } 319 | updateResultDetailPlaceholders(); 320 | showResult(); 321 | } 322 | 323 | function updateResultDetailPlaceholders() { 324 | for (let i = 0; i < answers.length; i++) { 325 | if (answers[i] === "e" || answers[i] === "f" || answers[i] === "g" || answers[i] === "h") 326 | $('#placeholder-your-choice-' + i).parent().addClass('bg-info'); 327 | $('#placeholder-your-choice-' + i).replaceWith(getSelectionMarker(t.label_your_choice, answers[i])); 328 | } 329 | } 330 | 331 | function addResultSummary(list, pointsForList, maxAchievablePoints) { 332 | let percentage = Math.round(pointsForList / maxAchievablePoints * 100); 333 | let remaining_percentage = 100 - percentage; 334 | let text_percentage = t.achieved_points_text(pointsForList, maxAchievablePoints); 335 | let text_remaining_percentage = ''; 336 | if (percentage < 20) { 337 | text_remaining_percentage = text_percentage; 338 | text_percentage = ''; 339 | } 340 | 341 | $('#result-summary').append(getSummaryProgressBar(list, percentage, remaining_percentage, text_percentage, text_remaining_percentage)); 342 | } 343 | 344 | function getSummaryProgressBar(list, percentage, remaining_percentage, text_percentage, text_remaining_percentage) { 345 | let bar = '
    \ 346 |
    '+ list + '
    \ 347 |
    \ 348 |
    '; 349 | if (percentage > 0) { 350 | bar += '
    ' + text_percentage + '
    '; 352 | } 353 | if (remaining_percentage > 0) { 354 | bar += '
    ' + text_remaining_percentage + '
    \ 356 |
    '; 357 | } 358 | bar += '
    \ 359 |
    \ 360 | '; 361 | return bar; 362 | } 363 | 364 | function calculatePairPoints(self, list) { 365 | let str = self + list; 366 | switch (str) { 367 | case "aa": 368 | case "bb": 369 | case "cc": 370 | return 2; 371 | break; 372 | case "ab": 373 | case "ba": 374 | case "bc": 375 | case "cb": 376 | return 1; 377 | break; 378 | case "ea": 379 | case "fb": 380 | case "gc": 381 | case "ee": 382 | case "ff": 383 | case "gg": 384 | return 4; 385 | break; 386 | case "eb": 387 | case "fa": 388 | case "fc": 389 | case "gb": 390 | case "ef": 391 | case "fe": 392 | case "fg": 393 | case "gf": 394 | return 2; 395 | break; 396 | default: 397 | return 0; 398 | } 399 | } 400 | 401 | function setResultDetailCallbacks() { 402 | $('.result-detail-header').click(function () { 403 | $(this).next('.result-details').slideToggle(); 404 | }); 405 | $('.result-detail-footer').click(function () { 406 | $(this).prev('.result-details').slideToggle(); 407 | }); 408 | } 409 | 410 | function toggleThesisMore() { 411 | $('#thesis-more').slideToggle(); 412 | } 413 | 414 | function initResultDetails() { 415 | $('#result-detail').empty(); 416 | for (thesis_id in data.theses) { 417 | let thesisNumber = parseInt(thesis_id) + 1; 418 | let text = '
    \ 419 |
    \ 420 | '+ data.theses[thesis_id].s + '\ 421 | '+ t.thesis_number(thesisNumber) + '\ 422 | \ 423 |
    \ 424 |
    \ 425 |
    \ 426 |

    '+ data.theses[thesis_id].l + '

    \ 427 |
    \ 428 |
      '; 429 | for (list_id in data.lists) { 430 | text += '
    • \ 431 | '+ getSelectionMarker(data.lists[list_id].name, data.answers[list_id][thesis_id].selection) + '\ 432 | '+ statementOrDefault(data.answers[list_id][thesis_id].statement) + '
    • '; 433 | } 434 | text += '
    \ 435 |
    \ 436 | \ 442 |
    ' 443 | $('#result-detail').append(text); 444 | } 445 | setResultDetailCallbacks(); 446 | $('.result-details').toggle(); 447 | } 448 | 449 | function statementOrDefault(statement) { 450 | if (statement === "") { 451 | return t.default_text_no_statement; 452 | } else { 453 | return statement; 454 | } 455 | } 456 | 457 | function getSelectionMarker(list, selection) { 458 | if (selection === "a" || selection === "e") { 459 | return '\ 460 | '+ list + ' '; 461 | } 462 | if (selection === "b" || selection === "f") { 463 | return '\ 464 | '+ list + ' '; 465 | } 466 | if (selection === "c" || selection === "g") { 467 | return '\ 468 | '+ list + ' '; 469 | } 470 | if (selection === "d" || selection === "h") { 471 | return '\ 472 | '+ list + ' '; 473 | } 474 | return 'ERROR'; 475 | } 476 | 477 | function showStart() { 478 | init(); 479 | $("#mahlowat,#result").hide(); 480 | $("#start").show(); 481 | } 482 | 483 | function showMahlowatFirstThesis() { 484 | currentThesis = 0; 485 | showMahlowat(); 486 | } 487 | function showMahlowat() { 488 | loadThesis(); 489 | initResultDetails(); 490 | $("#start,#result").hide(); 491 | $("#mahlowat").fadeIn(); 492 | if (showSwypeInfo) { 493 | showSwypeInfo = false; 494 | $("#swype-info").show(); 495 | } 496 | } 497 | 498 | function showResult() { 499 | $("#start,#mahlowat").hide(); 500 | $("#result").fadeIn(); 501 | animateBars(); 502 | } 503 | 504 | function animateBars() { 505 | $('#result-summary .main-progress-bar').each(function (index) { 506 | var self = $(this); 507 | var width = self.css('width'); 508 | var transition = self.css("transition"); 509 | self.css("transition", "none"); 510 | self.css('width', 0); 511 | setTimeout(function () { 512 | self.css("transition", transition); 513 | self.css('width', width); 514 | }, 200 + (index * 200)); 515 | }); 516 | } 517 | 518 | function hideSwypeInfo() { 519 | $("#swype-info").hide(); 520 | } 521 | -------------------------------------------------------------------------------- /lang/de_de.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4 | 5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 6 | 7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 8 | 9 | var T = 10 | /*#__PURE__*/ 11 | function () { 12 | function T() { 13 | _classCallCheck(this, T); 14 | 15 | this.page_title = "Mahlowat"; 16 | this.qa_modal_title = "Fragen & Antworten"; 17 | this.qa_modal_body = '

    Wer steht hinter dem Mahlowat?

    \ 18 |

    Lorem Ipsum.

    \ 19 | \ 20 |

    Wer hat die Thesen erarbeitet?

    \ 21 |

    Lorem Ipsum.

    \ 22 | \ 23 |

    Woher stammen die Positionen der Gruppen?

    \ 24 |

    Den an der Wahl teilnehmenden Gruppen wurden die Thesen mit der Bitte um Stellungnahme zugeleitet. Neben der reinen\ 25 | Positionierung (Zustimmung/Neutral/Ablehnung/Keine Stellungnahme) konnten sie ihre Position auch in einem kurzen Absatz\ 26 | erläutern.\ 27 |

    \ 28 |

    Für ihre Stellungnahmen zu den Thesen sind die Gruppen selbst verantwortlich.

    \ 29 | \ 30 |

    Von welcher Wahl reden wir hier überhaupt?

    \ 31 |

    Lorem Ipsum.

    \ 32 | \ 33 |

    Wie werden die Punkte berechnet?

    \ 34 |

    Deine Antworten werden mit den vorgegebenen Antworten der Gruppen abgeglichen.

    \ 35 |
      \ 36 |
    • Stimmt die Antwort überein, werden der Gruppe 2 Punkte gutgeschrieben;
    • \ 37 |
    • Weicht die Antwort leicht ab (Zustimmung/Neutral oder Neutral/Ablehnung), wird der Gruppe 1 Punkt gutgeschrieben;
    • \ 38 |
    • Sind die Antworten entgegengesetzt oder hat eine Gruppe eine These nicht beantwortet, gibt es keine Punkte für die\ 39 | Gruppe.\ 40 |
    • \ 41 |
    \ 42 |

    Eine These, die du übersprungen hast, wird nicht gewertet. Die erreichbare Höchstpunktzahl wird dadurch geringer.

    \ 43 |

    Eine These, die doppelt gewichtet werden soll, wird doppelt gewichtet, das heißt, für sie wird die doppelte Punktzahl\ 44 | gutgeschrieben (0/2/4). Dadurch können insgesamt mehr Punkte erreicht werden.

    \ 45 | \ 46 |

    Werden meine Antworten gespeichert?

    \ 47 |

    Nein. Alles läuft vollständig in deinem Browser ab.

    \ 48 | \ 49 |

    Ich habe einen inhaltlichen Fehler gefunden!

    \ 50 |

    Gib uns gern Bescheid, wir sehen uns das an. Wer „wir“ sind, steht oben auf dieser Seite.

    \ 51 | \ 52 |

    Wer hat den Mahlowat programmiert?

    \ 53 |

    Das steht\ 54 | hier. Der Mahlowat ist übrigens freie Software!

    \ 55 | \ 56 |

    Ich habe einen Programmierfehler gefunden!

    \ 57 |

    Oh nein! Wenn du den Fehler\ 58 | meldest, wird er vielleicht behoben.

    '; 59 | this.btn_qa_modal_close = "Schließen"; 60 | this.swype_info_message_text = "Wische, um manuell zwischen Thesen zu wechseln"; 61 | this.btn_swype_info_ok = "OK"; 62 | this.start_subtitle = "Der Mahlowat ist ein Wahlpositions­vergleichswerkzeug."; 63 | this.start_explanatory_text = "

    Der Mahlowat ermöglicht es dir, deine Meinung zu ausgewählten Thesen mit denen der Gruppen zu vergleichen, die zur $WAHL\ 64 | antreten.\ 65 |

    \ 66 |

    Für ihre Stellungnahmen zu den Thesen sind die Gruppen selbst verantwortlich.

    "; 67 | this.btn_start = "Mahlowat starten!"; 68 | this.btn_start_show_qa = "Fragen & Antworten"; 69 | this.btn_toggle_thesis_more_text = "Erläuterung"; 70 | this.btn_important = "These doppelt gewichten"; 71 | this.btn_yes_text = "Zustimmung"; 72 | this.btn_neutral_text = "Neutral"; 73 | this.btn_no_text = "Ablehnung"; 74 | this.btn_skip_text = "Überspringen"; 75 | this.btn_mahlowat_show_start = "Zurück zur Startseite"; 76 | this.btn_mahlowat_show_qa = "Fragen & Antworten"; 77 | this.btn_mahlowat_skip_remaining_theses = "Alle verbleibenden Thesen überspringen und aktuellen Stand auswerten"; 78 | this.title_results = "Ergebnis"; 79 | this.title_results_summary = "Zusammenfassung"; 80 | this.text_result_below_summary = 'Nicht zufrieden mit dem Ergebnis?\ 81 | \ 82 | '; 83 | this.title_results_details = ""; 84 | this.btn_results_show_start = "Zurück zur Startseite"; 85 | this.btn_results_show_qa = "Fragen & Antworten"; 86 | } 87 | 88 | _createClass(T, [{ 89 | key: "thesis_number", 90 | value: function thesis_number(number) { 91 | return "These " + number; 92 | } 93 | }, { 94 | key: "achieved_points_text", 95 | value: function achieved_points_text(pointsForList, maxAchievablePoints) { 96 | return '' + pointsForList + '/' + maxAchievablePoints + ' Punkte'; 97 | } 98 | }, { 99 | key: "btn_make_thesis_double_weight", 100 | get: function get() { 101 | return "These doppelt gewichten"; 102 | } 103 | }, { 104 | key: "btn_thesis_has_double_weight", 105 | get: function get() { 106 | return "These wird doppelt gewichtet"; 107 | } 108 | }, { 109 | key: "label_your_choice", 110 | get: function get() { 111 | return "Deine Wahl"; 112 | } 113 | }, { 114 | key: "default_text_no_statement", 115 | get: function get() { 116 | return "Keine Stellungnahme."; 117 | } 118 | }, { 119 | key: "error_loading_config_file", 120 | get: function get() { 121 | return 'Fehler Die Konfigurationsdatei config/data.json konnte nicht geladen\ 122 | werden. Existiert sie und enthält keine Syntaxfehler?'; 123 | } 124 | }]); 125 | 126 | return T; 127 | }(); 128 | 129 | -------------------------------------------------------------------------------- /lang/de_de.raw.js: -------------------------------------------------------------------------------- 1 | class T { 2 | constructor() { 3 | this.page_title = "Mahlowat"; 4 | this.qa_modal_title = "Fragen & Antworten"; 5 | this.qa_modal_body = '

    Wer steht hinter dem Mahlowat?

    \ 6 |

    Lorem Ipsum.

    \ 7 | \ 8 |

    Wer hat die Thesen erarbeitet?

    \ 9 |

    Lorem Ipsum.

    \ 10 | \ 11 |

    Woher stammen die Positionen der Gruppen?

    \ 12 |

    Den an der Wahl teilnehmenden Gruppen wurden die Thesen mit der Bitte um Stellungnahme zugeleitet. Neben der reinen\ 13 | Positionierung (Zustimmung/Neutral/Ablehnung/Keine Stellungnahme) konnten sie ihre Position auch in einem kurzen Absatz\ 14 | erläutern.\ 15 |

    \ 16 |

    Für ihre Stellungnahmen zu den Thesen sind die Gruppen selbst verantwortlich.

    \ 17 | \ 18 |

    Von welcher Wahl reden wir hier überhaupt?

    \ 19 |

    Lorem Ipsum.

    \ 20 | \ 21 |

    Wie werden die Punkte berechnet?

    \ 22 |

    Deine Antworten werden mit den vorgegebenen Antworten der Gruppen abgeglichen.

    \ 23 |
      \ 24 |
    • Stimmt die Antwort überein, werden der Gruppe 2 Punkte gutgeschrieben;
    • \ 25 |
    • Weicht die Antwort leicht ab (Zustimmung/Neutral oder Neutral/Ablehnung), wird der Gruppe 1 Punkt gutgeschrieben;
    • \ 26 |
    • Sind die Antworten entgegengesetzt oder hat eine Gruppe eine These nicht beantwortet, gibt es keine Punkte für die\ 27 | Gruppe.\ 28 |
    • \ 29 |
    \ 30 |

    Eine These, die du übersprungen hast, wird nicht gewertet. Die erreichbare Höchstpunktzahl wird dadurch geringer.

    \ 31 |

    Eine These, die doppelt gewichtet werden soll, wird doppelt gewichtet, das heißt, für sie wird die doppelte Punktzahl\ 32 | gutgeschrieben (0/2/4). Dadurch können insgesamt mehr Punkte erreicht werden.

    \ 33 | \ 34 |

    Werden meine Antworten gespeichert?

    \ 35 |

    Nein. Alles läuft vollständig in deinem Browser ab.

    \ 36 | \ 37 |

    Ich habe einen inhaltlichen Fehler gefunden!

    \ 38 |

    Gib uns gern Bescheid, wir sehen uns das an. Wer „wir“ sind, steht oben auf dieser Seite.

    \ 39 | \ 40 |

    Wer hat den Mahlowat programmiert?

    \ 41 |

    Das steht\ 42 | hier. Der Mahlowat ist übrigens freie Software!

    \ 43 | \ 44 |

    Ich habe einen Programmierfehler gefunden!

    \ 45 |

    Oh nein! Wenn du den Fehler\ 46 | meldest, wird er vielleicht behoben.

    '; 47 | this.btn_qa_modal_close = "Schließen"; 48 | this.swype_info_message_text = "Wische, um manuell zwischen Thesen zu wechseln"; 49 | this.btn_swype_info_ok = "OK"; 50 | this.start_subtitle = "Der Mahlowat ist ein Wahlpositions­vergleichswerkzeug."; 51 | this.start_explanatory_text = "

    Der Mahlowat ermöglicht es dir, deine Meinung zu ausgewählten Thesen mit denen der Gruppen zu vergleichen, die zur $WAHL\ 52 | antreten.\ 53 |

    \ 54 |

    Für ihre Stellungnahmen zu den Thesen sind die Gruppen selbst verantwortlich.

    "; 55 | this.btn_start = "Mahlowat starten!"; 56 | this.btn_start_show_qa = "Fragen & Antworten"; 57 | this.btn_toggle_thesis_more_text = "Erläuterung"; 58 | this.btn_important = "These doppelt gewichten"; 59 | this.btn_yes_text = "Zustimmung"; 60 | this.btn_neutral_text = "Neutral"; 61 | this.btn_no_text = "Ablehnung"; 62 | this.btn_skip_text = "Überspringen"; 63 | this.btn_mahlowat_show_start = "Zurück zur Startseite"; 64 | this.btn_mahlowat_show_qa = "Fragen & Antworten"; 65 | this.btn_mahlowat_skip_remaining_theses = "Alle verbleibenden Thesen überspringen und aktuellen Stand auswerten"; 66 | this.title_results = "Ergebnis"; 67 | this.title_results_summary = "Zusammenfassung"; 68 | this.text_result_below_summary = 'Nicht zufrieden mit dem Ergebnis?\ 69 | \ 70 | '; 71 | this.title_results_details = ""; 72 | this.btn_results_show_start = "Zurück zur Startseite"; 73 | this.btn_results_show_qa = "Fragen & Antworten"; 74 | } 75 | 76 | thesis_number(number) { 77 | return "These " + number; 78 | } 79 | 80 | get btn_make_thesis_double_weight() { 81 | return "These doppelt gewichten"; 82 | } 83 | 84 | get btn_thesis_has_double_weight() { 85 | return "These wird doppelt gewichtet"; 86 | } 87 | 88 | get label_your_choice() { 89 | return "Deine Wahl"; 90 | } 91 | 92 | achieved_points_text(pointsForList, maxAchievablePoints) { 93 | return '' + pointsForList + '/' + maxAchievablePoints + ' Punkte'; 94 | } 95 | 96 | get default_text_no_statement() { 97 | return "Keine Stellungnahme."; 98 | } 99 | 100 | get error_loading_config_file() { 101 | return 'Fehler Die Konfigurationsdatei config/data.json konnte nicht geladen\ 102 | werden. Existiert sie und enthält keine Syntaxfehler?'; 103 | } 104 | 105 | } -------------------------------------------------------------------------------- /lang/en_gb.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4 | 5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 6 | 7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 8 | 9 | var T = 10 | /*#__PURE__*/ 11 | function () { 12 | function T() { 13 | _classCallCheck(this, T); 14 | 15 | this.page_title = "Mahlowat"; 16 | this.qa_modal_title = "Questions & Answers"; 17 | this.qa_modal_body = '

    Who is behind the Mahlowat?

    \ 18 |

    Lorem Ipsum.

    \ 19 | \ 20 |

    Who developed the theses?

    \ 21 |

    Lorem Ipsum.

    \ 22 | \ 23 |

    What is the origin of the groups\' statements?

    \ 24 |

    The theses were sent to the groups participating in this election. They could give their position (yes/neutral/no/skip)\ 25 | as well as a short paragraph as an accompanying statement.\ 26 |

    \ 27 |

    The groups are solely responsible for their own statements.

    \ 28 | \ 29 |

    What is this election you are talking about?

    \ 30 |

    Lorem Ipsum.

    \ 31 | \ 32 |

    How are the points calculated?

    \ 33 |

    Your answers are compared to the positions of the groups.

    \ 34 |
      \ 35 |
    • The group gains 2 points if their answer matches yours;
    • \ 36 |
    • A slight deviation (yes/neutral or neutral/no) gains the group still 1 point;
    • \ 37 |
    • If the answers are contrary or if a group has no position on a thesis, the group gains no point.\ 38 |
    • \ 39 |
    \ 40 |

    A thesis that you skipped gains no one any point. The maximum number of points possible decreases.

    \ 41 |

    A thesis that you count double gets groups twice the points (0/2/4). This increases the maximum number of points possible.

    \ 42 | \ 43 |

    Are my answers stored somewhere?

    \ 44 |

    No. Everything stays in your web browser. Once you close the page, all information is lost forever.

    \ 45 | \ 46 |

    I have spotted an error in your content!

    \ 47 |

    Please tell us. Who is »us«? See above.

    \ 48 | \ 49 |

    Who programmed the Mahlowat?

    \ 50 |

    Behold!. By the way: the Mahlowat is free software!

    \ 51 | \ 52 |

    I found a programming error!!

    \ 53 |

    Oh no! If you report the bug, it might get fixed.

    '; 54 | this.btn_qa_modal_close = "Close"; 55 | this.swype_info_message_text = "Swype to switch between theses manually"; 56 | this.btn_swype_info_ok = "OK"; 57 | this.start_subtitle = "Mahlowat is a voting advice application. It's a tool, not your mum."; 58 | this.start_explanatory_text = "

    The Mahlowat permits you to compare your opinion on selected theses with the opinions of\ 59 | groups that participate in $ELECTION.

    \ 60 |

    The views expressed in the groups' statements are their own.

    "; 61 | this.btn_start = "Start the Mahlowat!"; 62 | this.btn_start_show_qa = "Questions & Answers"; 63 | this.btn_toggle_thesis_more_text = "Explanation"; 64 | this.btn_important = "Count double"; 65 | this.btn_yes_text = "Yes"; 66 | this.btn_neutral_text = "Neutral"; 67 | this.btn_no_text = "No"; 68 | this.btn_skip_text = "Skip"; 69 | this.btn_mahlowat_show_start = "Back to the welcome page"; 70 | this.btn_mahlowat_show_qa = "Questions & Answers"; 71 | this.btn_mahlowat_skip_remaining_theses = "Skip all remaining theses and evaluate the current selections"; 72 | this.title_results = "Result"; 73 | this.title_results_summary = "Summary"; 74 | this.text_result_below_summary = 'Don\'t like your results?\ 75 | \ 76 | '; 77 | this.title_results_details = ""; 78 | this.btn_results_show_start = "Back to the welcome page"; 79 | this.btn_results_show_qa = "Questions & Answers"; 80 | } 81 | 82 | _createClass(T, [{ 83 | key: "thesis_number", 84 | value: function thesis_number(number) { 85 | return "Thesis " + number; 86 | } 87 | }, { 88 | key: "achieved_points_text", 89 | value: function achieved_points_text(pointsForList, maxAchievablePoints) { 90 | return '' + pointsForList + '/' + maxAchievablePoints + ' Points'; 91 | } 92 | }, { 93 | key: "btn_make_thesis_double_weight", 94 | get: function get() { 95 | return "Count double"; 96 | } 97 | }, { 98 | key: "btn_thesis_has_double_weight", 99 | get: function get() { 100 | return "Counting double"; 101 | } 102 | }, { 103 | key: "label_your_choice", 104 | get: function get() { 105 | return "Your choice"; 106 | } 107 | }, { 108 | key: "default_text_no_statement", 109 | get: function get() { 110 | return "No statement."; 111 | } 112 | }, { 113 | key: "error_loading_config_file", 114 | get: function get() { 115 | return 'Error Could not load the configuration file \ 116 | config/data.json. Does it exist? Does it not contain syntax errors?'; 117 | } 118 | }]); 119 | 120 | return T; 121 | }(); 122 | 123 | -------------------------------------------------------------------------------- /lang/en_gb.raw.js: -------------------------------------------------------------------------------- 1 | class T { 2 | constructor() { 3 | this.page_title = "Mahlowat"; 4 | this.qa_modal_title = "Questions & Answers"; 5 | this.qa_modal_body = '

    Who is behind the Mahlowat?

    \ 6 |

    Lorem Ipsum.

    \ 7 | \ 8 |

    Who developed the theses?

    \ 9 |

    Lorem Ipsum.

    \ 10 | \ 11 |

    What is the origin of the groups\' statements?

    \ 12 |

    The theses were sent to the groups participating in this election. They could give their position (yes/neutral/no/skip)\ 13 | as well as a short paragraph as an accompanying statement.\ 14 |

    \ 15 |

    The groups are solely responsible for their own statements.

    \ 16 | \ 17 |

    What is this election you are talking about?

    \ 18 |

    Lorem Ipsum.

    \ 19 | \ 20 |

    How are the points calculated?

    \ 21 |

    Your answers are compared to the positions of the groups.

    \ 22 |
      \ 23 |
    • The group gains 2 points if their answer matches yours;
    • \ 24 |
    • A slight deviation (yes/neutral or neutral/no) gains the group still 1 point;
    • \ 25 |
    • If the answers are contrary or if a group has no position on a thesis, the group gains no point.\ 26 |
    • \ 27 |
    \ 28 |

    A thesis that you skipped gains no one any point. The maximum number of points possible decreases.

    \ 29 |

    A thesis that you count double gets groups twice the points (0/2/4). This increases the maximum number of points possible.

    \ 30 | \ 31 |

    Are my answers stored somewhere?

    \ 32 |

    No. Everything stays in your web browser. Once you close the page, all information is lost forever.

    \ 33 | \ 34 |

    I have spotted an error in your content!

    \ 35 |

    Please tell us. Who is »us«? See above.

    \ 36 | \ 37 |

    Who programmed the Mahlowat?

    \ 38 |

    Behold!. By the way: the Mahlowat is free software!

    \ 39 | \ 40 |

    I found a programming error!!

    \ 41 |

    Oh no! If you report the bug, it might get fixed.

    '; 42 | this.btn_qa_modal_close = "Close"; 43 | this.swype_info_message_text = "Swype to switch between theses manually"; 44 | this.btn_swype_info_ok = "OK"; 45 | this.start_subtitle = "Mahlowat is a voting advice application. It's a tool, not your mum."; 46 | this.start_explanatory_text = "

    The Mahlowat permits you to compare your opinion on selected theses with the opinions of\ 47 | groups that participate in $ELECTION.

    \ 48 |

    The views expressed in the groups' statements are their own.

    "; 49 | this.btn_start = "Start the Mahlowat!"; 50 | this.btn_start_show_qa = "Questions & Answers"; 51 | this.btn_toggle_thesis_more_text = "Explanation"; 52 | this.btn_important = "Count double"; 53 | this.btn_yes_text = "Yes"; 54 | this.btn_neutral_text = "Neutral"; 55 | this.btn_no_text = "No"; 56 | this.btn_skip_text = "Skip"; 57 | this.btn_mahlowat_show_start = "Back to the welcome page"; 58 | this.btn_mahlowat_show_qa = "Questions & Answers"; 59 | this.btn_mahlowat_skip_remaining_theses = "Skip all remaining theses and evaluate the current selections"; 60 | this.title_results = "Result"; 61 | this.title_results_summary = "Summary"; 62 | this.text_result_below_summary = 'Don\'t like your results?\ 63 | \ 64 | '; 65 | this.title_results_details = ""; 66 | this.btn_results_show_start = "Back to the welcome page"; 67 | this.btn_results_show_qa = "Questions & Answers"; 68 | } 69 | 70 | thesis_number(number) { 71 | return "Thesis " + number; 72 | } 73 | 74 | get btn_make_thesis_double_weight() { 75 | return "Count double"; 76 | } 77 | 78 | get btn_thesis_has_double_weight() { 79 | return "Counting double"; 80 | } 81 | 82 | get label_your_choice() { 83 | return "Your choice"; 84 | } 85 | 86 | achieved_points_text(pointsForList, maxAchievablePoints) { 87 | return '' + pointsForList + '/' + maxAchievablePoints + ' Points'; 88 | } 89 | 90 | get default_text_no_statement() { 91 | return "No statement."; 92 | } 93 | 94 | get error_loading_config_file() { 95 | return 'Error Could not load the configuration file \ 96 | config/data.json. Does it exist? Does it not contain syntax errors?'; 97 | } 98 | 99 | } -------------------------------------------------------------------------------- /lang/fr_fr.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 4 | 5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 6 | 7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 8 | 9 | var T = 10 | /*#__PURE__*/ 11 | function () { 12 | function T() { 13 | _classCallCheck(this, T); 14 | 15 | this.page_title = "Mahlowat"; 16 | this.qa_modal_title = "Questions-réponses"; 17 | this.qa_modal_body = '

    Qui a fait le Mahlowat?

    \ 18 |

    Lorem Ipsum.

    \ 19 | \ 20 |

    Qui a deviné les théses?

    \ 21 |

    Lorem Ipsum.

    \ 22 | \ 23 |

    Comment avons-nous obtenu les positions des groupes?

    \ 24 |

    Nous avons envoyé les théses aux groupes qui participent à l\'élection et demandé qu\'ils repondent.\ 25 | Les gropues ont pu donner leur avis (Oui/Neutre/Non/Sauté) ainsi que un bref paragraphe qui explique leur position.\ 26 |

    \ 27 | \ 28 |

    Élection? Quelle élection?

    \ 29 |

    Lorem Ipsum.

    \ 30 | \ 31 |

    Les points comment sont-ils calculés?

    \ 32 |

    vos réponses sont comparées avec les réponses des groupes.

    \ 33 |
      \ 34 |
    • Le groupe gagne 2 points si elle a donné la même réponse que vous;
    • \ 35 |
    • Si il y a une différence minuscule (Oui/Neutre ou Neutre/Non), le groupe gagne 1 point;
    • \ 36 |
    • Des réponses contraires et une thése à laquelle une groupe n\'a pas repondu ne donnent pas de points.\ 37 |
    • \ 38 |
    \ 39 |

    Une thése que vous avez sauté ne donne pas de points. La somme des points atteinable est diminuée.

    \ 40 |

    Une thése dont vous avez doublé les points donne double points (0/2/4). La somme des points atteinable est augmentée.

    \ 41 | \ 42 |

    Mes réponses sont-elles enregistrées?

    \ 43 |

    Non. Tout est traité dans votre navigateur seulement. Dès que vous fermez la page, tout est perdu.

    \ 44 | \ 45 |

    J\'ai trouvé une erreur dans le contenu!

    \ 46 |

    Informez-nous et nous allons examiner cette erreur. Si vous ne savez pas qui c\'est «nous», regardez en haut sur cette page.

    \ 47 | \ 48 |

    Qui a programmé le Mahlowat?

    \ 49 |

    Regardez ici. Au fait, le Mahlowat est un logiciel libre!

    \ 50 | \ 51 |

    J\'ai trouvé une erreur de programmation!

    \ 52 |

    Mon dieu! Si tu signales l\'erreur\ 53 | ici, il se peut que ce sera reparé.

    '; 54 | this.btn_qa_modal_close = "Fermer"; 55 | this.swype_info_message_text = "Balayez pour changer la thése"; 56 | this.btn_swype_info_ok = "OK"; 57 | this.start_subtitle = "Le Mahlowat est une application qui vous aide a décider pour qui voter.
    \ 58 | Pourtant, c'est pas votre mêre, alors faites ce que vous voulez."; 59 | this.start_explanatory_text = "

    Le Mahlowat vous permet de comparer ton opinion sur des théses selectionnées avec les \ 60 | opinions des goupes qui participent à l'élection.\ 61 |

    \ 62 |

    Les groupes sont responsables pour leurs réponses.

    "; 63 | this.btn_start = "Demarrer le Mahlowat!"; 64 | this.btn_start_show_qa = "Questions-réponses"; 65 | this.btn_toggle_thesis_more_text = "Explication"; 66 | this.btn_important = "Doubler les points"; 67 | this.btn_yes_text = "Oui"; 68 | this.btn_neutral_text = "Neutre"; 69 | this.btn_no_text = "Non"; 70 | this.btn_skip_text = "Sauter"; 71 | this.btn_mahlowat_show_start = "Retourner à la page d'accueil"; 72 | this.btn_mahlowat_show_qa = "Questions-réponses"; 73 | this.btn_mahlowat_skip_remaining_theses = "Sauter les théses restants et evaluer l'état présent"; 74 | this.title_results = "Résultat"; 75 | this.title_results_summary = "Résumé"; 76 | this.text_result_below_summary = 'Vous n\'aimez pas votre résultat?\ 77 | \ 78 | '; 79 | this.title_results_details = ""; 80 | this.btn_results_show_start = "Retourner à la page d'accueil"; 81 | this.btn_results_show_qa = "Questions-réponses"; 82 | } 83 | 84 | _createClass(T, [{ 85 | key: "thesis_number", 86 | value: function thesis_number(number) { 87 | return "Thése " + number; 88 | } 89 | }, { 90 | key: "achieved_points_text", 91 | value: function achieved_points_text(pointsForList, maxAchievablePoints) { 92 | return '' + pointsForList + '/' + maxAchievablePoints + ' Points'; 93 | } 94 | }, { 95 | key: "btn_make_thesis_double_weight", 96 | get: function get() { 97 | return "Doubler les points"; 98 | } 99 | }, { 100 | key: "btn_thesis_has_double_weight", 101 | get: function get() { 102 | return "Points doublés"; 103 | } 104 | }, { 105 | key: "label_your_choice", 106 | get: function get() { 107 | return "Votre selection"; 108 | } 109 | }, { 110 | key: "default_text_no_statement", 111 | get: function get() { 112 | return "Pas de position."; 113 | } 114 | }, { 115 | key: "error_loading_config_file", 116 | get: function get() { 117 | return 'Erreur Le fichier de configuration \ 118 | config/data.json n\'a pas été trouvé. Existe-t-il? Y a-t-il des erreurs de syntaxe?'; 119 | } 120 | }]); 121 | 122 | return T; 123 | }(); 124 | 125 | -------------------------------------------------------------------------------- /lang/fr_fr.raw.js: -------------------------------------------------------------------------------- 1 | class T { 2 | constructor() { 3 | this.page_title = "Mahlowat"; 4 | this.qa_modal_title = "Questions-réponses"; 5 | this.qa_modal_body = '

    Qui a fait le Mahlowat?

    \ 6 |

    Lorem Ipsum.

    \ 7 | \ 8 |

    Qui a deviné les théses?

    \ 9 |

    Lorem Ipsum.

    \ 10 | \ 11 |

    Comment avons-nous obtenu les positions des groupes?

    \ 12 |

    Nous avons envoyé les théses aux groupes qui participent à l\'élection et demandé qu\'ils repondent.\ 13 | Les gropues ont pu donner leur avis (Oui/Neutre/Non/Sauté) ainsi que un bref paragraphe qui explique leur position.\ 14 |

    \ 15 | \ 16 |

    Élection? Quelle élection?

    \ 17 |

    Lorem Ipsum.

    \ 18 | \ 19 |

    Les points comment sont-ils calculés?

    \ 20 |

    vos réponses sont comparées avec les réponses des groupes.

    \ 21 |
      \ 22 |
    • Le groupe gagne 2 points si elle a donné la même réponse que vous;
    • \ 23 |
    • Si il y a une différence minuscule (Oui/Neutre ou Neutre/Non), le groupe gagne 1 point;
    • \ 24 |
    • Des réponses contraires et une thése à laquelle une groupe n\'a pas repondu ne donnent pas de points.\ 25 |
    • \ 26 |
    \ 27 |

    Une thése que vous avez sauté ne donne pas de points. La somme des points atteinable est diminuée.

    \ 28 |

    Une thése dont vous avez doublé les points donne double points (0/2/4). La somme des points atteinable est augmentée.

    \ 29 | \ 30 |

    Mes réponses sont-elles enregistrées?

    \ 31 |

    Non. Tout est traité dans votre navigateur seulement. Dès que vous fermez la page, tout est perdu.

    \ 32 | \ 33 |

    J\'ai trouvé une erreur dans le contenu!

    \ 34 |

    Informez-nous et nous allons examiner cette erreur. Si vous ne savez pas qui c\'est «nous», regardez en haut sur cette page.

    \ 35 | \ 36 |

    Qui a programmé le Mahlowat?

    \ 37 |

    Regardez ici. Au fait, le Mahlowat est un logiciel libre!

    \ 38 | \ 39 |

    J\'ai trouvé une erreur de programmation!

    \ 40 |

    Mon dieu! Si tu signales l\'erreur\ 41 | ici, il se peut que ce sera reparé.

    '; 42 | this.btn_qa_modal_close = "Fermer"; 43 | this.swype_info_message_text = "Balayez pour changer la thése"; 44 | this.btn_swype_info_ok = "OK"; 45 | this.start_subtitle = "Le Mahlowat est une application qui vous aide a décider pour qui voter.
    \ 46 | Pourtant, c'est pas votre mêre, alors faites ce que vous voulez."; 47 | this.start_explanatory_text = "

    Le Mahlowat vous permet de comparer ton opinion sur des théses selectionnées avec les \ 48 | opinions des goupes qui participent à l'élection.\ 49 |

    \ 50 |

    Les groupes sont responsables pour leurs réponses.

    "; 51 | this.btn_start = "Demarrer le Mahlowat!"; 52 | this.btn_start_show_qa = "Questions-réponses"; 53 | this.btn_toggle_thesis_more_text = "Explication"; 54 | this.btn_important = "Doubler les points"; 55 | this.btn_yes_text = "Oui"; 56 | this.btn_neutral_text = "Neutre"; 57 | this.btn_no_text = "Non"; 58 | this.btn_skip_text = "Sauter"; 59 | this.btn_mahlowat_show_start = "Retourner à la page d'accueil"; 60 | this.btn_mahlowat_show_qa = "Questions-réponses"; 61 | this.btn_mahlowat_skip_remaining_theses = "Sauter les théses restants et evaluer l'état présent"; 62 | this.title_results = "Résultat"; 63 | this.title_results_summary = "Résumé"; 64 | this.text_result_below_summary = 'Vous n\'aimez pas votre résultat?\ 65 | \ 66 | '; 67 | this.title_results_details = ""; 68 | this.btn_results_show_start = "Retourner à la page d'accueil"; 69 | this.btn_results_show_qa = "Questions-réponses"; 70 | } 71 | 72 | thesis_number(number) { 73 | return "Thése " + number; 74 | } 75 | 76 | get btn_make_thesis_double_weight() { 77 | return "Doubler les points"; 78 | } 79 | 80 | get btn_thesis_has_double_weight() { 81 | return "Points doublés"; 82 | } 83 | 84 | get label_your_choice() { 85 | return "Votre selection"; 86 | } 87 | 88 | achieved_points_text(pointsForList, maxAchievablePoints) { 89 | return '' + pointsForList + '/' + maxAchievablePoints + ' Points'; 90 | } 91 | 92 | get default_text_no_statement() { 93 | return "Pas de position."; 94 | } 95 | 96 | get error_loading_config_file() { 97 | return 'Erreur Le fichier de configuration \ 98 | config/data.json n\'a pas été trouvé. Existe-t-il? Y a-t-il des erreurs de syntaxe?'; 99 | } 100 | 101 | } --------------------------------------------------------------------------------