diff --git a/config.xml b/config.xml index 852344f..7cd6608 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + WordRotator A word-game diff --git a/package.json b/package.json index 8e9a019..6d20ba0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wordrotator", "displayName": "WordRotator", - "version": "1.2.0", + "version": "1.3.0", "main": "index.js", "scripts": { "server": "ts-node src/server/index.ts", @@ -17,13 +17,12 @@ "typeorm": "ts-node ./node_modules/typeorm/cli -f ./ormconfig.ts" }, "dependencies": { - "@types/node": "^14.11.8", + "@types/node": "^14.14.27", "body-parser": "^1.19.0", "cordova-android": "^9.0.0", "cordova-browser": "^6.0.0", "cordova-ios": "^6.1.1", - "cordova-plugin-share": "^0.1.3", - "cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.6.5", + "cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.7.10", "cordova-sites-database": "git+https://github.com/Ainias/cordova-sites-database.git#0.4.4", "cordova-sites-easy-sync": "git+https://github.com/Ainias/cordova-sites-easy-sync.git#0.6.7", "cordova-sites-user-management": "git+https://github.com/Ainias/cordova-sites-user-management.git#0.5.4", @@ -31,32 +30,28 @@ "cs-event-manager": "git+https://git@github.com/Ainias/event-manager.git#0.2", "dotenv": "^8.2.0", "express": "^4.17.1", - "foundation-sites": "^6.6.3", - "js-helper": "git+https://github.com/Ainias/js-helper.git#0.4.1", + "js-helper": "git+https://github.com/Ainias/js-helper.git#0.6.6", "jsonwebtoken": "^8.5.1", - "localforage": "^1.9.0", "mysql": "^2.18.1", "nodemailer": "^6.4.14", - "sql.js": "1.3.2", - "ts-node": "9.0.0", - "typeorm": "^0.2.28", - "ts-loader": "^8.0.5", - "typescript": "^4.0.3" + "ts-node": "9.1.1", + "typeorm": "^0.2.31", + "typescript": "^4.1.5" }, "devDependencies": { - "@babel/core": "^7.12.1", - "@babel/plugin-transform-runtime": "^7.12.1", + "@babel/core": "^7.13.15", + "@babel/plugin-transform-runtime": "^7.13.15", "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@wdio/appium-service": "^6.6.3", - "@wdio/cli": "^6.6.6", - "@wdio/jasmine-framework": "^6.6.6", - "@wdio/local-runner": "^6.6.6", - "@wdio/selenium-standalone-service": "^6.6.5", - "@wdio/spec-reporter": "^6.6.6", - "appium": "1.15.1", - "appium-doctor": "^1.15.3", - "autoprefixer": "^10.0.1", + "@babel/preset-env": "^7.13.15", + "@wdio/appium-service": "^7.4.2", + "@wdio/cli": "^7.4.6", + "@wdio/jasmine-framework": "^7.4.6", + "@wdio/local-runner": "^7.4.6", + "@wdio/selenium-standalone-service": "^7.4.2", + "@wdio/spec-reporter": "^7.4.3", + "appium": "1.20.2", + "appium-doctor": "^1.16.0", + "autoprefixer": "^10.2.5", "babel-loader": "^8.1.0", "babel-preset-env": "^1.7.0", "clean-webpack-plugin": "^3.0.0", @@ -64,6 +59,7 @@ "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", "cordova-plugin-nativestorage": "^2.3.2", + "cordova-plugin-share": "^0.1.3", "cordova-plugin-tts": "^0.2.3", "cordova-plugin-webpack": "^1.0.5", "cordova-plugin-whitelist": "^1.3.4", @@ -71,14 +67,18 @@ "css-loader": "^5.0.0", "extract-loader": "^5.1.0", "file-loader": "^6.1.1", + "foundation-sites": "^6.6.3", "html-loader": "^1.3.2", "html-webpack-plugin": "^4.5.0", - "jasmine": "^3.6.2", - "node-sass": "^4.14.1", - "postcss-loader": "^4.0.4", + "jasmine": "^3.7.0", + "localforage": "^1.9.0", + "node-sass": "^5.0.0", + "postcss-loader": "^5.2.0", "sass-loader": "^10.0.3", + "sql.js": "1.3.2", "terser-webpack-plugin": "^5.0.0", - "webpack": "^5.1.2", + "ts-loader": "^8.0.17", + "webpack": "^4.46.0", "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0", "workbox-precaching": "^5.1.4", diff --git a/src/client/globals.d.ts b/src/client/globals.d.ts deleted file mode 100644 index 71a1a90..0000000 --- a/src/client/globals.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -declare var require: { - (path: string): T; - (paths: string[], callback: (...modules: any[]) => void): void; - ensure: ( - paths: string[], - callback: (require: (path: string) => T) => void - ) => void; -}; \ No newline at end of file diff --git a/src/client/html/sites/impressum.html b/src/client/html/sites/impressum.html index 2bcaa05..8741fb0 100644 --- a/src/client/html/sites/impressum.html +++ b/src/client/html/sites/impressum.html @@ -5,7 +5,7 @@ 52064 Aachen
Deutschland

-

E-Mail: wordRotator@silas.link
- Kontaktformular +

E-Mail: wordRotator@silas.link
+ Kontaktformular

- \ No newline at end of file + diff --git a/src/client/html/sites/settingsSite.html b/src/client/html/sites/settingsSite.html index 773c83b..3e7f084 100644 --- a/src/client/html/sites/settingsSite.html +++ b/src/client/html/sites/settingsSite.html @@ -1,17 +1,3 @@ -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file +
+
+
diff --git a/src/client/index.html b/src/client/index.html index a58de46..3134a46 100644 --- a/src/client/index.html +++ b/src/client/index.html @@ -22,7 +22,7 @@ - +
diff --git a/src/client/js/Fragment/WordRotatorSettingFragment.js b/src/client/js/Fragment/WordRotatorSettingFragment.ts similarity index 92% rename from src/client/js/Fragment/WordRotatorSettingFragment.js rename to src/client/js/Fragment/WordRotatorSettingFragment.ts index 683cd60..e205b50 100644 --- a/src/client/js/Fragment/WordRotatorSettingFragment.js +++ b/src/client/js/Fragment/WordRotatorSettingFragment.ts @@ -1,14 +1,13 @@ +const view = require("../../html/fragment/settings.html"); + import {CreditsSite} from "../Sites/CreditsSite"; import {PrivacyPolicySite} from "../Sites/PrivacyPolicySite"; import {ImpressumSite} from "../Sites/ImpressumSite"; import {NativeStoragePromise} from "cordova-sites/dist/client/js/NativeStoragePromise"; import {AbstractFragment} from "cordova-sites/dist/client/js/Context/AbstractFragment"; - -import view from "../../html/fragment/settings.html"; import {LevelData} from "../../../shared/model/LevelData"; import {LastSyncDates} from "cordova-sites-easy-sync/dist/client/LastSyncDates"; import {SoundManager} from "cordova-sites/dist/client/js/Sound/SoundManager"; -import {Toast} from "cordova-sites/dist/client/js/Toast/Toast"; import {Matomo} from "cordova-sites/dist/client/js/Legacy/Matomo"; import {LevelPlayed} from "../model/LevelPlayed"; import {ContactSite} from "../Sites/ContactSite"; @@ -32,7 +31,7 @@ export class WordRotatorSettingFragment extends AbstractFragment { }); if (location.hostname.includes("beta") || location.hostname.includes("127.0.0.1") || location.hostname.includes("localhost")) { - this.findBy("#reset-levels").classList.remove("hidden"); + // this.findBy("#reset-levels").classList.remove("hidden"); } let playMusicButton = this.findBy("#play-music"); @@ -79,13 +78,14 @@ export class WordRotatorSettingFragment extends AbstractFragment { this.findBy("#impressum-button").addEventListener("click", () => { this.getSite().startSite(ImpressumSite); }); - this.findBy("#version-info").innerText = window["version"]; + // @ts-ignore + this.findBy("#version-info").innerText = __VERSION__; return res; } - onStart() { + onStart(args) { Matomo.update("Settings Sites"); - super.onStart(); + return super.onStart(args); } -} \ No newline at end of file +} diff --git a/src/client/js/Sites/ContactSite.js b/src/client/js/Sites/ContactSite.ts similarity index 93% rename from src/client/js/Sites/ContactSite.js rename to src/client/js/Sites/ContactSite.ts index e9e3fee..5cd97c3 100644 --- a/src/client/js/Sites/ContactSite.js +++ b/src/client/js/Sites/ContactSite.ts @@ -1,5 +1,5 @@ +const view = require("../../html/sites/contactSite.html"); -import view from "../../html/sites/contactSite.html" import {App} from "cordova-sites/dist/client/js/App"; import {Form} from "cordova-sites/dist/client/js/Form"; import {DataManager} from "cordova-sites/dist/client/js/DataManager"; @@ -15,6 +15,7 @@ export class ContactSite extends MenuSite { onViewLoaded() { let res = super.onViewLoaded(); + // @ts-ignore this.findBy("#contactText").appendChild(Translator.makePersistentTranslation("contact text", [__CONTACT_EMAIL__])) new Form(this.findBy("#contact-form"), async values => { @@ -38,4 +39,4 @@ export class ContactSite extends MenuSite { App.addInitialization((app) => { app.addDeepLink("contact", ContactSite); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/CreditsSite.js b/src/client/js/Sites/CreditsSite.js deleted file mode 100644 index 1656613..0000000 --- a/src/client/js/Sites/CreditsSite.js +++ /dev/null @@ -1,19 +0,0 @@ -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; - -import view from "../../html/sites/credits.html" -import {App} from "cordova-sites/dist/client/js/App"; - -export class CreditsSite extends WordRotatorBaseSite{ - constructor(siteManager) { - super(siteManager, view); - } - - onStart(args) { - // Matomo.update("Credits Sites"); - return super.onStart(args); - } -} - -App.addInitialization(app => { - app.addDeepLink("credits", CreditsSite); -}); \ No newline at end of file diff --git a/src/client/js/Sites/CreditsSite.ts b/src/client/js/Sites/CreditsSite.ts new file mode 100644 index 0000000..0aa10bc --- /dev/null +++ b/src/client/js/Sites/CreditsSite.ts @@ -0,0 +1,13 @@ +const view = require("../../html/sites/credits.html"); +import {App} from "cordova-sites/dist/client/js/App"; +import {MenuSite} from "cordova-sites/dist/client"; + +export class CreditsSite extends MenuSite{ + constructor(siteManager) { + super(siteManager, view); + } +} + +App.addInitialization(app => { + app.addDeepLink("credits", CreditsSite); +}); diff --git a/src/client/js/Sites/DeleteWordsSite.js b/src/client/js/Sites/DeleteWordsSite.ts similarity index 88% rename from src/client/js/Sites/DeleteWordsSite.js rename to src/client/js/Sites/DeleteWordsSite.ts index a5f4545..7082fce 100644 --- a/src/client/js/Sites/DeleteWordsSite.js +++ b/src/client/js/Sites/DeleteWordsSite.ts @@ -1,13 +1,15 @@ import {UserMenuAction, UserSite} from "cordova-sites-user-management/dist/client"; -import view from "../../html/sites/deleteLevels.html" -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; +const view = require("../../html/sites/deleteLevels.html"); import {App} from "cordova-sites/dist/client/js/App"; import {NavbarFragment} from "cordova-sites/dist/client/js/Context/Menu/NavbarFragment"; import {DataManager} from "cordova-sites/dist/client/js/DataManager"; +import {MenuSite} from "cordova-sites/dist/client"; -export class DeleteWordsSite extends WordRotatorBaseSite { +export class DeleteWordsSite extends MenuSite { + private words: any; + constructor(siteManager) { super(siteManager, view); this.addDelegate(new UserSite(this, "admin")) @@ -16,11 +18,12 @@ export class DeleteWordsSite extends WordRotatorBaseSite { async onConstruct(args) { let res = super.onConstruct(args); this.words = (await DataManager.load("getDoubleUsedWordsAction"))["result"]; + console.log("word", this.words); return res; } onViewLoaded() { - super.onViewLoaded(); + const res = super.onViewLoaded(); let levelTemplate = this.findBy("#level-template"); let wordTemplate = this.findBy("#word-template"); @@ -54,6 +57,8 @@ export class DeleteWordsSite extends WordRotatorBaseSite { } wordContainer.appendChild(wordElem); } + + return res; } } @@ -61,4 +66,4 @@ App.addInitialization(app => { NavbarFragment.defaultActions.push(new UserMenuAction("delete-levels", "admin", () => { app.startSite(DeleteWordsSite); })); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/EndSite.js b/src/client/js/Sites/EndSite.js deleted file mode 100644 index 2bcc2ad..0000000 --- a/src/client/js/Sites/EndSite.js +++ /dev/null @@ -1,14 +0,0 @@ -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; - -import view from "../../html/sites/end.html" - -export class EndSite extends WordRotatorBaseSite{ - constructor(siteManager) { - super(siteManager, view); - } - - onStart(args) { - // Matomo.update("End Sites"); - return super.onStart(args); - } -} \ No newline at end of file diff --git a/src/client/js/Sites/EndSite.ts b/src/client/js/Sites/EndSite.ts new file mode 100644 index 0000000..13c84e5 --- /dev/null +++ b/src/client/js/Sites/EndSite.ts @@ -0,0 +1,8 @@ +const view = require("../../html/sites/end.html"); +import {MenuSite} from "cordova-sites/dist/client"; + +export class EndSite extends MenuSite{ + constructor(siteManager) { + super(siteManager, view); + } +} diff --git a/src/client/js/Sites/ImpressumSite.js b/src/client/js/Sites/ImpressumSite.ts similarity index 55% rename from src/client/js/Sites/ImpressumSite.js rename to src/client/js/Sites/ImpressumSite.ts index 22df41e..a9b54d6 100644 --- a/src/client/js/Sites/ImpressumSite.js +++ b/src/client/js/Sites/ImpressumSite.ts @@ -1,9 +1,8 @@ -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; - -import view from "../../html/sites/impressum.html" +const view = require("../../html/sites/impressum.html"); import {App} from "cordova-sites/dist/client/js/App"; +import {MenuSite} from "cordova-sites/dist/client"; -export class ImpressumSite extends WordRotatorBaseSite{ +export class ImpressumSite extends MenuSite{ constructor(siteManager) { super(siteManager, view); } @@ -11,4 +10,4 @@ export class ImpressumSite extends WordRotatorBaseSite{ App.addInitialization(app => { app.addDeepLink("impressum", ImpressumSite); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/LevelSite.js b/src/client/js/Sites/LevelSite.ts similarity index 91% rename from src/client/js/Sites/LevelSite.js rename to src/client/js/Sites/LevelSite.ts index 7f0e0ca..0ddc59c 100644 --- a/src/client/js/Sites/LevelSite.js +++ b/src/client/js/Sites/LevelSite.ts @@ -1,9 +1,12 @@ +import {Level} from "../wordrotator/Level/Level"; + +const helpIcon = require("../../img/help.png").default; +const view = require("../../html/sites/level.html"); +const coinSound = require("../../sound/single_coin_fall_on_concrete_.mp3").default; + import {TemplateContainer} from "../wordrotator/Segment/TemplateContainer"; import {LevelHelper} from "../wordrotator/Level/LevelHelper"; import {EndSite} from "./EndSite"; -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; - -import helpIcon from "../../img/help.png"; import { MenuAction, @@ -13,19 +16,40 @@ import { NativeStoragePromise, } from "cordova-sites/dist/client"; -import view from "../../html/sites/level.html" import {Helper} from "js-helper/dist/shared/Helper"; import {LevelData} from "../../../shared/model/LevelData"; import {LevelPlayed} from "../model/LevelPlayed"; import {ViewHelper} from "js-helper/dist/client/ViewHelper"; -import coinSound from "../../sound/single_coin_fall_on_concrete_.mp3"; import {SoundManager} from "cordova-sites/dist/client/js/Sound/SoundManager"; +import {MenuSite} from "cordova-sites/dist/client/js/Context/MenuSite"; + +export class LevelSite extends MenuSite { + + public static readonly RENDERER_TYPES = [20, 40, 60, 80, 81, 82, 83, 100, 110, 111, 112, 120, 140, 160]; + public static readonly TUTORIAL = { + FIRST_LEVEL: 67, + SECOND_LEVEL: 15, + BIG_SEGMENT_LEVEL: 1921 + }; + + private coinAction: MenuAction; + private levelCounterAction: MenuAction; + private levelCounter: number; + private levelScaler: () => void; + private wonParams: { aborted: boolean; coinCounterTimer: any }; + private coinPromise: Promise; + private continueButtonScaler: () => Promise; + private wonTextScaler: () => Promise; + private wonText: HTMLElement; + private templateContainer: TemplateContainer; + private coinTemplate: HTMLElement; + private coinContainer: HTMLElement; + private level: Level; -export class LevelSite extends WordRotatorBaseSite { constructor(siteManager) { super(siteManager, view); - this._navbarFragment.setBackgroundImage(null); + // this.getNavbarFragment().setBackgroundImage(null); } async onCreateMenu(navbar) { @@ -34,7 +58,7 @@ export class LevelSite extends WordRotatorBaseSite { let coinAction = new MenuAction(Helper.nonNull(await NativeStoragePromise.getItem("coins"), "0"), () => { }, MenuAction.SHOW_ALWAYS, 900); coinAction._shouldTranslate = false; - coinAction._liClass = "coin-counter"; + coinAction.setLiClass("coin-counter img"); navbar.addAction(coinAction); this.coinAction = coinAction; @@ -70,7 +94,7 @@ export class LevelSite extends WordRotatorBaseSite { let soundManager = SoundManager.getInstance(); soundManager.set({ audio: coinSound, - muted: (NativeStoragePromise.getItem("play-sound", "1") !== "1"), + muted: ((await NativeStoragePromise.getItem("play-sound", "1")) !== "1"), volume: 0.7 }, SoundManager.CHANNELS.SOUND); @@ -159,7 +183,6 @@ export class LevelSite extends WordRotatorBaseSite { this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0); this.level = level; - // let res = this.tutorial(); Matomo.push(["trackEvent", "LevelSite", "LoadLastLevel"]); this.level.checkHasWon(); return; @@ -250,6 +273,8 @@ export class LevelSite extends WordRotatorBaseSite { } async onStart(args) { + this.setTitle("WR"); + Matomo.update("Level Sites"); let res = super.onStart(args); @@ -300,7 +325,7 @@ export class LevelSite extends WordRotatorBaseSite { coinsBefore = parseInt(Helper.nonNull(await NativeStoragePromise.getItem("coins"), "0")); await NativeStoragePromise.setItem("coins", coinsBefore + parseInt(coinsPerLevel)); }).then(async () => { - return Promise.all([new Promise((r) => { + return Promise.all([new Promise((r) => { setTimeout(() => { //TODO animationen einbauen continueButton.style.opacity = 1; @@ -316,26 +341,26 @@ export class LevelSite extends WordRotatorBaseSite { this.wonParams.aborted = false; for (let i = 0; i < coinsPerLevel; i++) { - let coinElem = this.coinTemplate.cloneNode(true); + let coinElem = this.coinTemplate.cloneNode(true); this.coinContainer.appendChild(coinElem); this.coinPromise = this.coinPromise.then(() => { - return new Promise(r => { + return new Promise(r => { let timeout = 350; if (!this.wonParams.aborted) { //TODO animationen einbauen - coinElem.style.opacity = 1; - // coinElem.fadeIn(timeout / 1000); + + coinElem.style.opacity = "1"; soundManager.play(SoundManager.CHANNELS.SOUND); this.wonParams.coinCounterTimer = setTimeout(() => { if (!this.wonParams.aborted) { this.coinAction.setName(++coinsBefore); - // this.coinAction.redraw(); } }, timeout / 2); } else { r(); } + //Always do the next promise for garbage collection setTimeout(r, timeout); }) @@ -414,7 +439,7 @@ export class LevelSite extends WordRotatorBaseSite { let textElem = this.findBy(".tutorial-text .step-1"); await this.levelScaler(); - scaleHelper.scaleToFull(textElem, textElem.parentElement, null, true, 1, 2); + scaleHelper.scaleTo(0.4, textElem, textElem.parentElement, null, true, 2, 2); break; } @@ -514,11 +539,3 @@ export class LevelSite extends WordRotatorBaseSite { } } } - -LevelSite.RENDERER_TYPES = [20, 40, 60, 80, 81, 82, 83, 100, 110, 111, 112, 120, 140, 160]; -// LevelSite.RENDERER_TYPES = [120, 140, 160]; -LevelSite.TUTORIAL = { - FIRST_LEVEL: 67, - SECOND_LEVEL: 15, - BIG_SEGMENT_LEVEL: 1921 -}; \ No newline at end of file diff --git a/src/client/js/Sites/MainMenuSite.js b/src/client/js/Sites/MainMenuSite.ts similarity index 70% rename from src/client/js/Sites/MainMenuSite.js rename to src/client/js/Sites/MainMenuSite.ts index beb6d87..db249b5 100644 --- a/src/client/js/Sites/MainMenuSite.js +++ b/src/client/js/Sites/MainMenuSite.ts @@ -1,10 +1,11 @@ -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; -import {App, Toast, DataManager, ScaleHelper} from "cordova-sites/dist/client"; +const settingsIcon = require("../../img/settings.png").default; +const view = require("../../html/sites/menu.html"); + +import {App, Toast, DataManager, ScaleHelper, MenuSite} from "cordova-sites/dist/client"; import {Helper} from "js-helper/dist/shared"; import {LevelSite} from "./LevelSite"; import {TemplateContainer} from "../wordrotator/Segment/TemplateContainer"; import {MainMenuLevel} from "../wordrotator/Level/MainMenuLevel"; -import view from "../../html/sites/menu.html" import {NativeStoragePromise} from "cordova-sites/dist/client"; import {ViewHelper} from "js-helper/dist/client/ViewHelper"; import {LevelPlayed} from "../model/LevelPlayed"; @@ -17,14 +18,19 @@ import {Matomo} from "cordova-sites/dist/client/js/Legacy/Matomo"; import {MenuAction} from "cordova-sites/dist/client/js/Context/Menu/MenuAction/MenuAction"; import {SettingsSite} from "./SettingsSite"; -import settingsIcon from "../../img/settings.png"; +export class MainMenuSite extends MenuSite { + static app: App; + + private loadLevelPromise: Promise; + private listener: () => void; + private templateContainer: TemplateContainer; + private randomRotateTimeout; -export class MainMenuSite extends WordRotatorBaseSite { constructor(siteManager) { super(siteManager, view); this.loadLevelPromise = new SyncJob().sync([LevelData]).catch(e => console.error(e)); this.listener = null; - this._navbarFragment.setCanGoBack(false); + this.getNavbarFragment().setCanGoBack(false); } onCreateMenu(navbar) { @@ -36,6 +42,73 @@ export class MainMenuSite extends WordRotatorBaseSite { return navbar; } + async onViewLoaded() { + const res = super.onViewLoaded(); + + let playButton = this.findBy("#play-button"); + playButton.addEventListener("click", () => { + // Matomo.push(["trackEvent", "MainMenu", "startButton"]); + this.startLevelSite(); + }); + + let leafSegmentTemplate = this.findBy("#segment-leaf-template"); + let parentSegmentTemplate = this.findBy("#segment-parent-template"); + let rowSegmentTemplate = this.findBy("#segment-row-template"); + let triangleTemplate = this.findBy("#segment-triangle-template"); + + leafSegmentTemplate.id = null; + parentSegmentTemplate.id = null; + rowSegmentTemplate.id = null; + triangleTemplate.id = null; + + leafSegmentTemplate.remove(); + parentSegmentTemplate.remove(); + rowSegmentTemplate.remove(); + triangleTemplate.remove(); + + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); + + //TODO? + // if (Helper.nonNull(MainMenuSite.app._cookieClosePromise)) { + // MainMenuSite.app._cookieClosePromise.then(() => { + // if (this.listener) { + // this.listener(); + // } + // }); + // } + + let soundManager = SoundManager.getInstance(); + + let playMusicButton = this.findBy("#play-music"); + playMusicButton.checked = (await NativeStoragePromise.getItem("play-music", "1") === "1"); + playMusicButton.addEventListener("change", async () => { + await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0"); + soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC); + if (playMusicButton.checked) { + await soundManager.play(SoundManager.CHANNELS.MUSIC); + } + + //TODO [MIG] Matomo + Matomo.push(["trackEvent", "MainMenu", "PlayMusic", "Play Music", (playMusicButton.checked) ? 1 : 0]); + }); + + let playSoundButton = this.findBy("#play-sound"); + playSoundButton.checked = (await NativeStoragePromise.getItem("play-sound", "1") === "1"); + playSoundButton.addEventListener("change", async () => { + await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0"); + soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND); + + //TODO [MIG] Matomo + Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]); + }); + + this.findBy("#share-button").addEventListener("click", () => { + new ShareManager().share(Translator.getInstance().translate("share-text", [window.location])); + }); + return res; + // this.findBy("#share-buttons").appendChild(ShareManager.generateDefaultShareElement("https://wordrotator.silas.link")); + } + async onStart(args) { // Matomo.update("Menu Sites"); let res = super.onStart(args); @@ -120,7 +193,7 @@ export class MainMenuSite extends WordRotatorBaseSite { async startLevelSite() { SoundManager.getInstance().resumeContext(); - this.startSite(LevelSite, Promise.race([this.loadLevelPromise, new Promise(async resolve => { + this.startSite(LevelSite, Promise.race([this.loadLevelPromise, new Promise(async resolve => { let levelData = await LevelPlayed.getNextLevelData(LevelSite.RENDERER_TYPES); if (levelData !== null) { resolve(); @@ -128,130 +201,64 @@ export class MainMenuSite extends WordRotatorBaseSite { })])); } - async onFirstStart() { - super.onFirstStart(); - - let playButton = this.findBy("#play-button"); - playButton.addEventListener("click", () => { - // Matomo.push(["trackEvent", "MainMenu", "startButton"]); - this.startLevelSite(); - }); - - let leafSegmentTemplate = this.findBy("#segment-leaf-template"); - let parentSegmentTemplate = this.findBy("#segment-parent-template"); - let rowSegmentTemplate = this.findBy("#segment-row-template"); - let triangleTemplate = this.findBy("#segment-triangle-template"); - - leafSegmentTemplate.id = null; - parentSegmentTemplate.id = null; - rowSegmentTemplate.id = null; - triangleTemplate.id = null; - - leafSegmentTemplate.remove(); - parentSegmentTemplate.remove(); - rowSegmentTemplate.remove(); - triangleTemplate.remove(); - - this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); - - if (Helper.nonNull(MainMenuSite.app._cookieClosePromise)) { - MainMenuSite.app._cookieClosePromise.then(() => { - if (this.listener) { - this.listener(); - } - }); - } - - let soundManager = SoundManager.getInstance(); - - let playMusicButton = this.findBy("#play-music"); - playMusicButton.checked = (await NativeStoragePromise.getItem("play-music", "1") === "1"); - playMusicButton.addEventListener("change", async () => { - await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0"); - soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC); - if (playMusicButton.checked) { - soundManager.play(SoundManager.CHANNELS.MUSIC); - } - - //TODO [MIG] Matomo - Matomo.push(["trackEvent", "MainMenu", "PlayMusic", "Play Music", (playMusicButton.checked) ? 1 : 0]); - }); - - let playSoundButton = this.findBy("#play-sound"); - playSoundButton.checked = (await NativeStoragePromise.getItem("play-sound", "1") === "1"); - playSoundButton.addEventListener("change", async () => { - await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0"); - soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND); - - //TODO [MIG] Matomo - Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]); - }); - - this.findBy("#share-button").addEventListener("click", () => { - new ShareManager().share(Translator.getInstance().translate("share-text", [window.location])); - }); - // this.findBy("#share-buttons").appendChild(ShareManager.generateDefaultShareElement("https://wordrotator.silas.link")); - } - - onPause(args) { + onPause() { clearTimeout(this.randomRotateTimeout); window.removeEventListener("resize", this.listener); - return super.onPause(args); + return super.onPause(); } - async loadLevels() { - try { - const db = await WordRotatorDb.getInstance(); - const dateLastSync = Helper.nonNull(await db.loadDateLastSync(), 0); - // const dateLastSync = Helper.nonNull(localStorage.getItem("date-last-sync"), 0); - - // let numberLevels = db.countLevels(); - let newLastSync = null; - let maxRuns = 1; - let levelPromises = []; - for (let run = 0; run < maxRuns; run++) { - let res = await DataManager.load("wordRotator/levels" + DataManager.buildQuery({ - "currentRun": run, - "dateLastSync": dateLastSync - })); - if (!res["success"]) { - if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) { - new Toast("sync-error", 6000).show(); - } - newLastSync = null; - break; - } - res = res["result"]; - newLastSync = Helper.nonNull(newLastSync, res["currentSyncDate"]); - maxRuns = res["maxRuns"]; - - let levels = res["levels"]; - for (let i = 0; i < levels.length; i++) { - let currentLevel = levels[i]; - levelPromises.push(db.loadLevel(levels[i]["id"]).then(level => { - currentLevel["played"] = (Helper.nonNull(Helper.nonNull(level, {}).played, false)); - return currentLevel; - })); - } - } - let levels = await Promise.all(levelPromises); - await db.saveManyLevels(levels); - - if (newLastSync != null && newLastSync !== "null") { - await NativeStoragePromise.setItem("date-last-sync", newLastSync); - db.saveDateLastSync(newLastSync); - } - } - catch(e){ - // if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) { - new Toast("sync-error", 6000); - // } - console.error(e); - } - } + // async loadLevels() { + // try { + // const db = await WordRotatorDb.getInstance(); + // const dateLastSync = Helper.nonNull(await db.loadDateLastSync(), 0); + // // const dateLastSync = Helper.nonNull(localStorage.getItem("date-last-sync"), 0); + // + // // let numberLevels = db.countLevels(); + // let newLastSync = null; + // let maxRuns = 1; + // let levelPromises = []; + // for (let run = 0; run < maxRuns; run++) { + // let res = await DataManager.load("wordRotator/levels" + DataManager.buildQuery({ + // "currentRun": run, + // "dateLastSync": dateLastSync + // })); + // if (!res["success"]) { + // if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) { + // new Toast("sync-error", 6000).show(); + // } + // newLastSync = null; + // break; + // } + // res = res["result"]; + // newLastSync = Helper.nonNull(newLastSync, res["currentSyncDate"]); + // maxRuns = res["maxRuns"]; + // + // let levels = res["levels"]; + // for (let i = 0; i < levels.length; i++) { + // let currentLevel = levels[i]; + // levelPromises.push(db.loadLevel(levels[i]["id"]).then(level => { + // currentLevel["played"] = (Helper.nonNull(Helper.nonNull(level, {}).played, false)); + // return currentLevel; + // })); + // } + // } + // let levels = await Promise.all(levelPromises); + // await db.saveManyLevels(levels); + // + // if (newLastSync != null && newLastSync !== "null") { + // await NativeStoragePromise.setItem("date-last-sync", newLastSync); + // db.saveDateLastSync(newLastSync); + // } + // } + // catch(e){ + // // if (await db.loadNextLevel(LevelSite.RENDERER_TYPES) === null) { + // new Toast("sync-error", 6000); + // // } + // console.error(e); + // } + // } } -MainMenuSite.app = null; App.addInitialization(app => { MainMenuSite.app = app; -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/PrivacyPolicySite.js b/src/client/js/Sites/PrivacyPolicySite.ts similarity index 82% rename from src/client/js/Sites/PrivacyPolicySite.js rename to src/client/js/Sites/PrivacyPolicySite.ts index 9abb4d6..748fdd3 100644 --- a/src/client/js/Sites/PrivacyPolicySite.js +++ b/src/client/js/Sites/PrivacyPolicySite.ts @@ -1,10 +1,9 @@ -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; - -import view from "../../html/sites/privacyPolicy.html" +const view = require("../../html/sites/privacyPolicy.html"); import {App} from "cordova-sites/dist/client/js/App"; import {Matomo} from "cordova-sites/dist/client/js/Legacy/Matomo"; +import {MenuSite} from "cordova-sites/dist/client"; -export class PrivacyPolicySite extends WordRotatorBaseSite { +export class PrivacyPolicySite extends MenuSite { constructor(siteManager) { super(siteManager,view); } @@ -31,4 +30,4 @@ export class PrivacyPolicySite extends WordRotatorBaseSite { App.addInitialization(app => { app.addDeepLink("privacyPolicy", PrivacyPolicySite); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/SelectWordsSite.js b/src/client/js/Sites/SelectWordsSite.ts similarity index 90% rename from src/client/js/Sites/SelectWordsSite.js rename to src/client/js/Sites/SelectWordsSite.ts index 45abf5e..f6b90d1 100644 --- a/src/client/js/Sites/SelectWordsSite.js +++ b/src/client/js/Sites/SelectWordsSite.ts @@ -1,17 +1,19 @@ -import view from "../../html/sites/selectWords.html" -import {WordRotatorBaseSite} from "./WordRotatorBaseSite"; +const view = require("../../html/sites/selectWords.html"); import {UserMenuAction, UserSite} from "cordova-sites-user-management/dist/client"; import {NavbarFragment} from "cordova-sites/dist/client/js/Context/Menu/NavbarFragment"; import {App} from "cordova-sites/dist/client/js/App"; -import {DataManager} from "cordova-sites/dist/dist/client/js/DataManager"; +import {DataManager} from "cordova-sites/dist/client/js/DataManager"; import {ViewHelper} from "js-helper/dist/client/ViewHelper"; +import {MenuSite} from "cordova-sites/dist/client"; -export class SelectWordsSite extends WordRotatorBaseSite{ +export class SelectWordsSite extends MenuSite{ + private stats: any; + private words: any; constructor(siteManager) { super(siteManager, view); - this.addDelegate(new UserSite("select-words")) + this.addDelegate(new UserSite(this, "select-words")) } async onConstruct(args) { @@ -80,4 +82,4 @@ App.addInitialization(app => { NavbarFragment.defaultActions.push(new UserMenuAction("select-words", "select-words", () => { app.startSite(SelectWordsSite); })); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/SettingsSite.js b/src/client/js/Sites/SettingsSite.ts similarity index 88% rename from src/client/js/Sites/SettingsSite.js rename to src/client/js/Sites/SettingsSite.ts index 289923c..b2f723b 100644 --- a/src/client/js/Sites/SettingsSite.js +++ b/src/client/js/Sites/SettingsSite.ts @@ -1,5 +1,4 @@ - -import view from "../../html/sites/settingsSite.html" +const view = require("../../html/sites/settingsSite.html"); import {MenuSite} from "cordova-sites/dist/client/js/Context/MenuSite"; import {WordRotatorSettingFragment} from "../Fragment/WordRotatorSettingFragment"; import {App} from "cordova-sites/dist/client/js/App"; @@ -14,4 +13,4 @@ export class SettingsSite extends MenuSite { App.addInitialization((app) => { app.addDeepLink("settings", SettingsSite); -}); \ No newline at end of file +}); diff --git a/src/client/js/Sites/WordRotatorBaseSite.js b/src/client/js/Sites/WordRotatorBaseSite.js deleted file mode 100644 index a959d2a..0000000 --- a/src/client/js/Sites/WordRotatorBaseSite.js +++ /dev/null @@ -1,12 +0,0 @@ -import {MenuSite} from "cordova-sites/dist/client"; - -export class WordRotatorBaseSite extends MenuSite { - - async onViewLoaded() { - let res = super.onViewLoaded(); - await this.onFirstStart(); - return res; - } - - async onFirstStart(){} -} \ No newline at end of file diff --git a/src/client/js/model/LevelPlayed.ts b/src/client/js/model/LevelPlayed.ts index 959b23d..73721da 100644 --- a/src/client/js/model/LevelPlayed.ts +++ b/src/client/js/model/LevelPlayed.ts @@ -2,6 +2,7 @@ import {BaseModel} from "cordova-sites-database/dist/BaseModel"; import {BaseDatabase} from "cordova-sites-database/dist/cordova-sites-database"; import {LevelData} from "../../../shared/model/LevelData"; import {Helper} from "js-helper/dist/shared/Helper"; +import {QueryBuilder, SelectQueryBuilder} from "typeorm"; export class LevelPlayed extends BaseModel { @@ -35,7 +36,7 @@ export class LevelPlayed extends BaseModel { } static async getNextLevelData(renderer){ - let qb = await this._database.createQueryBuilder(LevelData); + let qb = >await this._database.createQueryBuilder(LevelData); qb = qb.select("COUNT(*) as count, difficulty") .leftJoin(LevelPlayed, "levelPlayed", "levelPlayed.levelData = LevelData.id") @@ -61,7 +62,7 @@ export class LevelPlayed extends BaseModel { return null; } - qb = await this._database.createQueryBuilder(LevelData); + qb = >await this._database.createQueryBuilder(LevelData); qb = qb .leftJoin(LevelPlayed, "levelPlayed", "levelPlayed.levelData = LevelData.id") .where("(deleted = 0 OR deleted = 'false')") @@ -75,4 +76,4 @@ export class LevelPlayed extends BaseModel { return await qb.getOne(); } } -BaseDatabase.addModel(LevelPlayed); \ No newline at end of file +BaseDatabase.addModel(LevelPlayed); diff --git a/src/client/js/wordrotator/Level/LevelHelper.js b/src/client/js/wordrotator/Level/LevelHelper.ts similarity index 72% rename from src/client/js/wordrotator/Level/LevelHelper.js rename to src/client/js/wordrotator/Level/LevelHelper.ts index 7a3fdba..8eb0b09 100644 --- a/src/client/js/wordrotator/Level/LevelHelper.js +++ b/src/client/js/wordrotator/Level/LevelHelper.ts @@ -12,8 +12,25 @@ import {SimpleFourWordsLevel10_3} from "./SimpleFourWordsLevel10_3"; import {TwoSegmentFourWordsLevel10_0_3} from "./TwoSegmentFourWordsLevel10_0_3"; import {TwoSegmentFourWordsLevel10_1_3} from "./TwoSegmentFourWordsLevel10_1_3"; import {TwoSegmentFourWordsLevel10_0_2} from "./TwoSegmentFourWordsLevel10_0_2"; +import {Level} from "./Level"; export class LevelHelper { + public static readonly types = { + 20: SimpleLevel, + 40: RowLevel8, + 60: RowLevel10, + 80: SimpleFourWordsLevel10_0, + 81: SimpleFourWordsLevel10_1, + 82: SimpleFourWordsLevel10_2, + 83: SimpleFourWordsLevel10_3, + 100: SixWordsRowLevel8, + 110: TwoSegmentFourWordsLevel10_0_3, + 111: TwoSegmentFourWordsLevel10_1_3, + 112: TwoSegmentFourWordsLevel10_0_2, + 120: FourWordsLevel8, + 140: SixWordsRowLevel12, + 160: FourWordsLevel12, + }; static setLevelType(typeId, level) { LevelHelper.types[typeId] = level; } @@ -22,7 +39,7 @@ export class LevelHelper { return LevelHelper.types[type]; } - static inflateLevel(levelData, templateContainer) { + static inflateLevel(levelData, templateContainer): Level { let level = new (LevelHelper.types[levelData["renderer"]])(templateContainer); level.setWords(JSON.parse(levelData["words"].replace(/"/g, '"'))); level.setId(levelData["id"]); @@ -39,20 +56,3 @@ export class LevelHelper { return level; } } - -LevelHelper.types = { - 20: SimpleLevel, - 40: RowLevel8, - 60: RowLevel10, - 80: SimpleFourWordsLevel10_0, - 81: SimpleFourWordsLevel10_1, - 82: SimpleFourWordsLevel10_2, - 83: SimpleFourWordsLevel10_3, - 100: SixWordsRowLevel8, - 110: TwoSegmentFourWordsLevel10_0_3, - 111: TwoSegmentFourWordsLevel10_1_3, - 112: TwoSegmentFourWordsLevel10_0_2, - 120: FourWordsLevel8, - 140: SixWordsRowLevel12, - 160: FourWordsLevel12, -}; \ No newline at end of file diff --git a/src/client/sass/_mainMenu.scss b/src/client/sass/_mainMenu.scss deleted file mode 100644 index e69de29..0000000 diff --git a/src/client/sass/_navbarOverride.scss b/src/client/sass/_navbarOverride.scss new file mode 100644 index 0000000..9d6e83a --- /dev/null +++ b/src/client/sass/_navbarOverride.scss @@ -0,0 +1,44 @@ +nav.top-bar { + padding: 0; + + @each $breakpoint, $value in $margins { + @include breakpoint($breakpoint) { + margin-left: -$value; + margin-right: -$value; + //width: calc(100% + #{4*$value}); + //max-width: calc(100% + #{4*$value}); + } + } + + &.with-image .background-img { + display: none; + } + + .background-img { + display: none; + } + + > .grid-container { + background: inherit; + position: fixed; + top: 0; + left: 0; + right: 0; + + > .grid-padding-x { + display: block; + padding: 0.5rem; + margin: 0; + } + } + + ul > li { + display: flex; + align-items: center; + + &.level-counter { + margin-top: 0.2rem; + } + } + +} diff --git a/src/client/sass/_themeBlue.scss b/src/client/sass/_themeBlue.scss new file mode 100644 index 0000000..348bcc4 --- /dev/null +++ b/src/client/sass/_themeBlue.scss @@ -0,0 +1,88 @@ + +// Blue +//$primaryColor: #427081; +//$secondaryColor: #4d575a; +//$accentColor: #e3ab6e; +//$textColor: white; +//$svgColor: black; + +// Blue different Accent +//$primaryColor: #427081; +//$secondaryColor: #4d575a; +//$accentColor: #d3e7eb; +//$textColor: white; +//$svgColor: black; + +// Blau Invers +//$primaryColor: #4d575a; +//$secondaryColor: #427081; +//$accentColor: #e3ab6e; +//$textColor: white; +//$svgColor: black; + +// Grün +$primaryColor: #6b8778; +$secondaryColor: #012f25; +$accentColor: #b8acaa; +$textColor: white; +$svgColor: black; + +// Grün 2 +//$primaryColor: #234c42; +//$secondaryColor: #012f25; +//$accentColor: #b8acaa; +//$textColor: white; +//$svgColor: black; + +// Grün invers +//$primaryColor: #012f25; +//$secondaryColor: #234c42; +//$accentColor: #b8acaa; +//$textColor: white; +//$svgColor: white; + +// Grün invers andere Accent +//$primaryColor: #012f25; +//$secondaryColor: #234c42; +//$accentColor: #6b8778; +//$textColor: white; +//$svgColor: white; + +body.theme-blue{ + background: $primaryColor; + color: $textColor; + + .toast .message{ + background: $secondaryColor; + } + + nav.top-bar, nav.top-bar.with-image, nav.top-bar.with-image.solid{ + background: $secondaryColor; + } + + .button{ + background: $secondaryColor; + } + + .switch input:checked + .slider{ + background: $accentColor; + } + #level-number-container{ + background: $primaryColor; + } + svg { + color: $svgColor; + } + + ul.menu li a { + color: $textColor; + } + + a{ + color: $accentColor; + &.hidden-link{ + color: $textColor; + } + } + +} diff --git a/src/client/sass/_wordRotator_old.scss b/src/client/sass/_wordRotator_old.scss deleted file mode 100644 index 347de71..0000000 --- a/src/client/sass/_wordRotator_old.scss +++ /dev/null @@ -1,394 +0,0 @@ -@import "settings"; -@import "lib/_actionBar.scss"; -@import "lib/_form.scss"; -@import "lib/_listjs.scss"; -@import "lib/_modal.scss"; -@import "lib/_rotate.scss"; -@import "lib/_share.scss"; -@import "lib/_tabs.scss"; -@import "lib/_core.scss"; -@import "lib/_flashMessenger.scss"; -@import "lib/_framework.scss"; -@import "lib/_pwaAssets.scss"; -@import "lib/_settingsSite.scss"; -@import "lib/_style.scss"; -@import "lib/_theme.scss"; - -@import "tutorial"; -@import "wordrotatorTheme"; - -//ActionBar -nav.top-bar.title-bar { - padding: 0.3rem 0.6rem 0; -} - -#logo { - max-width: 2rem; - transition: none; -} - -#action-bar .top-bar-right .menu .action.img a { - padding-bottom: 0; - img { - max-height: 1.8rem; - } -} - -.menu, .dropdown.menu { - a { - padding: 0.2rem 0.5rem; - } -} - -#level-number-container { - z-index: 1; - transition: none; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - border: 3px solid white; - border-radius: 50%; - visibility: hidden; - display: table-cell; - - height: 35px; - width: 35px; - text-align: center; - vertical-align: middle; - - &.visible { - visibility: visible; - } - &.in-main-menu { - background: white; - border-color: black; - - height: 1em; - width: 1em; - min-height: 1em; - min-width: 1em; - max-height: 1em; - max-width: 1em; - } - - #level-number { - transition: none; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - font-weight: bold; - } -} - -$coinTowerDimension: 28px; -//coin element -.coin-counter { - display: inline-block; - position: relative; - font-size: 1.6rem; - @include breakpoint(small down) { - font-size: 1rem; - } - - :after { - background-image: url('../img/coinTower.png'); - background-size: $coinTowerDimension $coinTowerDimension; - width: $coinTowerDimension; - height: $coinTowerDimension; - display: inline-block; - content: ""; - } -} - -#coin-container { - line-height: 1; - .coin { - margin-left: 3px; - margin-right: 3px; - max-width: 20px; - display: inline-block; - @include breakpoint(smedium) { - max-width: 25px; - } - @include breakpoint(medium) { - max-width: 30px; - } - } -} - -//Segments - -@for $i from 1 through length($rotationDegrees) { - $startDegree: ((nth($rotationDegrees, $i)+270)%360); - - @keyframes rotate-#{nth($rotationDegrees, $i)} { - 0% { - //transform: rotate(#{$startDegree}deg); - transform: #{map-get($degreeMatrix, $startDegree)}; - } - 100% { - //transform: rotate(#{nth($rotationDegrees, $i)}deg); - transform: #{map-get($degreeMatrix, nth($rotationDegrees, $i))}; - } - } - @keyframes rotate-reverse-#{nth($rotationDegrees, $i)} { - 0% { - //transform: rotate(#{(nth($rotationDegrees, $i))+90}deg); - transform: #{map-get($degreeMatrix, nth($rotationDegrees, $i)+90)} - } - 100% { - //transform: rotate(#{$startDegree+90}deg); - transform: #{map-get($degreeMatrix, $startDegree+90)}; - } - } -} - -.segment:not(.segment-row):not(.segment-triangle) { - &.rotating { - z-index: 10 !important; - overflow: hidden; - - @for $i from 1 through length($rotationDegrees) { - &.rotate-#{nth($rotationDegrees, $i)} { - animation-name: rotate-#{nth($rotationDegrees, $i)}; - animation-duration: $animationDuration; - animation-fill-mode: forwards; - animation-timing-function: linear; - - > .child-container { - > .segment { - animation-name: rotate-#{450- nth($rotationDegrees, $i)}; - animation-duration: $animationDuration; - animation-fill-mode: forwards; - animation-direction: reverse; - animation-timing-function: linear; - - @for $j from 1 through length($rotationDegrees) { - $animationName: ((nth($rotationDegrees, $j)- nth($rotationDegrees, $i)+360)%360)+90; - &.rotate-#{nth($rotationDegrees, $j)} { - animation-name: rotate-#{$animationName}; - } - } - } - } - - &.reverse { - //animation-name: rotate-reverse-#{(nth($rotationDegrees, $i))%360+90}; - animation-name: rotate-reverse-#{nth($rotationDegrees, $i)}; - > .child-container { - > .segment { - //animation-name: rotate-reverse-#{360- (nth($rotationDegrees, $i)%360)}; - animation-name: rotate-reverse-#{(540- nth($rotationDegrees, $i))%360+90}; - @for $j from 1 through length($rotationDegrees) { - $animationName: ((nth($rotationDegrees, $j)- nth($rotationDegrees, $i)+360)%360)+90; - &.rotate-#{nth($rotationDegrees, $j)} { - animation-name: rotate-reverse-#{($animationName+90)%360+90}; - } - } - } - } - } - } - } - } - - &:not(.rotating) { - @for $i from 1 through length($rotationDegrees) { - &.rotate-#{nth($rotationDegrees, $i)} { - transform: rotate(#{nth($rotationDegrees, $i)}deg); - background-color: inherit; - z-index: 1; - > .child-container { - > .segment { - transform: rotate(#{360- nth($rotationDegrees, $i)}deg); - background-color: inherit; - z-index: 1; - - @for $j from 1 through length($rotationDegrees) { - $animationName: ((nth($rotationDegrees, $j)- nth($rotationDegrees, $i)+360)%360); - @if $animationName==0 { - $animationName: 360; - } - - &.rotate-#{nth($rotationDegrees, $j)} { - transform: rotate(#{$animationName}deg); - background-color: inherit; - z-index: 1; - - &.rotating { - animation-name: rotate-#{$animationName}; - animation-duration: $animationDuration; - animation-fill-mode: forwards; - animation-timing-function: linear; - - &.reverse { - animation-name: rotate-reverse-#{$animationName}; - } - } - } - } - } - } - } - } - } -} - -#level { - user-select: none; - white-space: nowrap; - transition: none; - max-width: 100%; - -webkit-tap-highlight-color: rgba(255, 255, 255, 0); - //width: 100%; - - * { - transition: none; - } - overflow-y: visible; -} - -.segment { - vertical-align: top; - white-space: initial; - cursor: pointer; - display: inline-block; - text-align: center; - position: relative; - transition: none; - user-select: none; - z-index: 1; - background-color: inherit; - line-height: 0; - - &.segment-row { - display: block; - width: 100%; - animation: none !important; - white-space: nowrap; - } - - &.segment-leaf { - background-color: transparent !important; - min-width: 1em; - padding: 0.8em; - &:before { - content: " "; - display: block; - padding-top: 100%; - } - .leaf-element { - position: absolute; - width: 100%; - height: 100%; - line-height: 1.5em; - top: 0; - left: 0; - } - } - - &.segment-parent { - border: solid 1px #a9a9a9; - border-radius: 3px; - padding: 1px; - - &.layer-2 { - border: solid 3px #000000; - } - } - - &.segment-triangle { - > .child-container { - > .segment-parent { - //border: solid 3px #000000; - //position: relative; - } - } - } -} - -//Won-screen -#site-content > :not(.won) { - .show-when-won { - display: none; - } -} - -.level-container { - //flex: 1; - transition: none; -} - -.won { - .level-container { - //height: 60%; - } - .show-when-won { - //visibility: initial; - } - .show-while-playing { - display: none; - } -} - -.text-right { - text-align: right; -} - -#continue-button { - margin-bottom: 2px; - @include breakpoint(small down) { - margin-bottom: 0; - padding: 0.3em .6em; - } -} - -#play-button { - @include breakpoint(small down) { - margin-bottom: 2px; - } -} - -#help-button { - margin: 0; - padding: 0.4em 0.4em; - max-width: 3em; - @include breakpoint(smedium down) { - padding: 0.2em 0.2em; - max-width: 2em; - } -} - -.line-height-1 { - line-height: 1; -} - -body { - overscroll-behavior: contain; - user-select: none; -} - -#site-content { - overflow: visible; -} -div.mainContainer{ - overflow-x: hidden; - -} - -//#img-sound:before { -// content: ""; -// max-width: 1.4em; -// background: url('../img/speaker.svg') -//} - -.clickable{ - cursor: pointer; -} - -#share-button svg{ - cursor: pointer; - max-width: 1.5rem; -} diff --git a/src/client/sass/_wordrotatorTheme.scss b/src/client/sass/_wordrotatorTheme.scss index 656451c..eff7096 100644 --- a/src/client/sass/_wordrotatorTheme.scss +++ b/src/client/sass/_wordrotatorTheme.scss @@ -73,9 +73,16 @@ body { } &.default { - background: url('../img/background.png'); - background-size: cover; - background-position: center; + //background: #07076d; + background: #0f0f49; + //background: #1c1c44; + color: white; + * { + color: white; + } + //background: url('../img/background.png'); + //background-size: cover; + //background-position: center; #level-number-container { &.in-main-menu { @@ -144,17 +151,13 @@ body { } } - label { - font-size: 1em !important; - } - - .setting-row:not(.hidden) { - line-height: 1; - padding-top: 0.5em; - padding-bottom: 0.5em; - width: 100%; - cursor: pointer; - background: rgba(195, 195, 195, 0.13); - //display: inline-block; - } + //.setting-row:not(.hidden) { + // line-height: 1; + // padding-top: 0.5em; + // padding-bottom: 0.5em; + // width: 100%; + // cursor: pointer; + // background: rgba(195, 195, 195, 0.13); + // //display: inline-block; + //} } diff --git a/src/client/sass/foundation.scss b/src/client/sass/foundation.scss deleted file mode 100644 index b9570fa..0000000 --- a/src/client/sass/foundation.scss +++ /dev/null @@ -1,67 +0,0 @@ -@import "../../node_modules/foundation-sites/scss/foundation"; -@import "settings"; - -@include foundation-global-styles; -@include foundation-visibility-classes; -@include foundation-grid; -@include foundation-forms; -//@include foundation-flex-grid; -//@include foundation-flex-classes; -@include foundation-button; -@include foundation-top-bar; - -@include foundation-menu; -@include foundation-menu-icon; - -@include foundation-prototype-overflow; - -@include foundation-dropdown; -@include foundation-dropdown-menu; -@include foundation-accordion; -@include foundation-accordion-menu; - -@include foundation-prototype-spacing; - -//@include foundation-everything; - -.top-bar-title { - padding: 0; -} - -.row:not(.expanded) .row { - max-width: 100%; - margin-right: 0; - margin-left: 0; - .column, .columns { - &.no-padding-left { - padding-left: 0 !important; - } - - &.no-padding-right { - padding-right: 0 !important; - } - - @each $size in $breakpoints { - &.#{nth($size, 1)}-first { - @include breakpoint(nth($size, 1)) { - padding-left: 0 !important; - } - } - &.#{nth($size, 1)}-last { - @include breakpoint(nth($size, 1)) { - padding-right: 0 !important; - } - } - } - } -} - -.row.low-padding { - .column, .columns { - //&:not(:first-child) - //{ - //} - padding-left: 0.15rem; - padding-right: 0.15rem; - } -} \ No newline at end of file diff --git a/src/client/sass/index.scss b/src/client/sass/index.scss index e4fce1d..3e048f9 100644 --- a/src/client/sass/index.scss +++ b/src/client/sass/index.scss @@ -1,8 +1,7 @@ @import "../../../node_modules/foundation-sites/scss/foundation"; //Settings nach foundation für mixins in settings -@import "wordRotator"; -@import "animations"; +@import "settings"; //Include foundation before other styles, so that other one can override foundation @include foundation-everything; @@ -12,6 +11,10 @@ @import "../../../node_modules/cordova-sites-user-management/cordova-sites-user-management"; //Anderes nach Settings, damit Settings bereits angewendet werden +@import "wordRotator"; +@import "animations"; +@import "navbarOverride"; +@import "themeBlue"; .translation{} @@ -189,4 +192,4 @@ a.hidden-link { body{ //background-image: url("../img/background.png"); -} \ No newline at end of file +} diff --git a/src/client/sass/lib/_actionBar.scss b/src/client/sass/lib/_actionBar.scss deleted file mode 100644 index 917fa2d..0000000 --- a/src/client/sass/lib/_actionBar.scss +++ /dev/null @@ -1,250 +0,0 @@ -@import "../../../node_modules/foundation-sites/scss/foundation"; - -nav.top-bar.title-bar { - padding: 0.3rem 0.6rem 0; -} - -#logo { - max-width: 2rem; - transition: none; -} - -.menu, .dropdown.menu { - a { - padding: 0.2rem 0.5rem; - } - > li > a { - background-color: transparent; - padding: 0.2rem 0.7rem; - } -} - -.top-bar-title -{ - white-space: nowrap; -} - -#action-bar { - .close-listener { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: transparent; - z-index: 9000; - } - #responsive-menu { - .top-bar-right { - position: relative; - text-align: right; - width: 100%; - } - - } - .top-bar-right { - width: auto; - - - - .menu { - &.action-bar { - a { - img + span { - display: none; - } - } - .action { - position: relative; - z-index: 9000; - &.is-dropdown-submenu-parent{ - z-index: 9001; - } - - &.hidden { - display: none; - } - @include breakpoint(small down) { - &.smedium { - display: none; - } - } - @include breakpoint(smedium down) { - li { - display: table-cell; - } - &.medium { - display: none; - } - } - @include breakpoint(medium down) { - &.large { - display: none; - } - } - &.never { - display: none; - } - } - - &.hidden { - display: inline-block; - //float: right; - position: absolute; - z-index: 9000; - border: 1px solid rgb(202, 202, 202); - padding: 0.2rem; - transform: translateX(-100%); - text-align: left; - - .action { - &.hidden { - display: none; - } - &.is-dropdown-submenu-parent { - z-index: 9001; - ul.is-dropdown-submenu { - top: auto; - > li.action, > .close-listener { - z-index: 9001; - } - } - > a:after { - display: block; - width: 0; - height: 0; - border: 6px inset; - content: ""; - border-bottom-width: 0; - border-top-style: solid; - border-color: #ffffff transparent transparent; - right: 5px; - left: auto; - margin-top: -3px; - } - } - a { - white-space: nowrap; - img { - display: none; - + span { - display: inherit; - } - } - } - @include breakpoint(medium) { - &.medium { - display: none; - } - } - @include breakpoint(smedium) { - &.smedium { - display: none; - } - } - @include breakpoint(large) { - &.large { - display: none; - } - } - - @include breakpoint(small down) { - &.smedium { - display: block; - &.hidden { - display: none; - } - } - } - @include breakpoint(smedium down) { - &.medium { - display: block; - &.hidden { - display: none; - } - } - } - @include breakpoint(medium down) { - &.large { - display: block; - &.hidden { - display: none; - } - } - } - &.never { - display: block; - &.hidden { - display: none; - } - } - &.always { - display: none; - } - } - } - } - - .action { - z-index: 100; - @include breakpoint(smedium down) { - a { - width: 100%; - //text-align: left; - } - } - - @include breakpoint(smedium down) { - a { - padding-left: 0.68rem; - } - } - @include breakpoint(small down) { - a { - padding-left: 0.236rem; - } - } - - &:not(.is-dropdown-submenu-parent) { - @include breakpoint(smedium down) { - a { - padding-right: 0.68rem; - } - } - @include breakpoint(small down) { - a { - padding-right: 0.236rem; - } - } - } - - &.img a { - padding-top: 0; - padding-bottom: 0; - img { - vertical-align: inherit; - max-height: 1.8rem; - } - } - - } - > li > ul.is-dropdown-submenu { - min-width: 0; - .action { - display: inherit; - } - } - > li.opens-right > ul.is-dropdown-submenu { - right: auto; - left: auto; - a { - text-align: left; - } - } - } - } -} - -.dropdown.menu > li.is-dropdown-submenu-parent > a:after { - border-color: #ffffff transparent transparent; -} \ No newline at end of file diff --git a/src/client/sass/lib/_core.scss b/src/client/sass/lib/_core.scss index 03ea1ac..6f588c2 100644 --- a/src/client/sass/lib/_core.scss +++ b/src/client/sass/lib/_core.scss @@ -8,7 +8,7 @@ html { min-height: 100%; width: 100%; height: 100%; - font-size: 18px; + //font-size: 18px; letter-spacing: 1px; } @@ -364,4 +364,4 @@ img.back-button { .no-margin-bottom { margin-bottom: 0; -} \ No newline at end of file +} diff --git a/src/client/sass/lib/_form.scss b/src/client/sass/lib/_form.scss deleted file mode 100644 index 8518925..0000000 --- a/src/client/sass/lib/_form.scss +++ /dev/null @@ -1,86 +0,0 @@ - -form { - position: relative; -} - -.sending { - .sending-loader { - position: absolute; - background-color: rgba(125, 125, 125, 0.3); - display: block; - pointer-events: all; - width: 100%; - height: 100%; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: 10; - .loader { - position: absolute - } - border-radius: 2px; - } -} - -.sending-loader { - display: none; -} - -//input.notEmpty:invalid { -// background-color: lightcoral; -//} - -label { - position: relative; - [type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], textarea, input[type=text], input:not([type]) { - display: block; - width: 100%; - height: 2.4375rem; - padding: 0.5rem; - box-shadow: none !important; - font-size: 1rem; - font-weight: normal; - line-height: 1.5; - border: none; - //border-bottom: solid black; - outline: 0; - margin: 0 0 15px; - - &:focus { - border: none; - box-shadow: none !important; - //border-bottom: solid black; - } - - &:focus, &.notEmpty:not(:focus) { - ~ span { - top: -11px; - left: 0; - bottom: 0; - font-size: 11px; - opacity: 1; - //color: black; - } - } - ~ span { - position: absolute; - pointer-events: none; - left: 10px; - bottom: 10px; - top: 7px; - transition: 0.2s ease all; - //color: #626262; - } - } - textarea { - height: 10rem; - //border: 1px solid rgba(136, 136, 136, 0.31); - //box-shadow: 0 0 3px 2px hsla(0, 0%, 53%, .31) !important; - border-top-right-radius: 3px; - border-top-left-radius: 3px; - } - [type="checkbox"].before-text { - margin-bottom: 0; - } -} diff --git a/src/client/sass/lib/_foundationSettings.scss b/src/client/sass/lib/_foundationSettings.scss deleted file mode 100644 index e122f0f..0000000 --- a/src/client/sass/lib/_foundationSettings.scss +++ /dev/null @@ -1,621 +0,0 @@ -// Foundation for Sites Settings -// ----------------------------- -// -// Table of Contents: -// -// 1. Global -// 2. Breakpoints -// 3. The Grid -// 4. Base Typography -// 5. Typography Helpers -// 6. Abide -// 7. Accordion -// 8. Accordion Menu -// 9. Badge -// 10. Breadcrumbs -// 11. Button -// 12. Button Group -// 13. Callout -// 14. Card -// 15. Close Button -// 16. Drilldown -// 17. Dropdown -// 18. Dropdown Menu -// 19. Forms -// 20. Label -// 21. Media Object -// 22. Menu -// 23. Meter -// 24. Off-canvas -// 25. Orbit -// 26. Pagination -// 27. Progress Bar -// 28. Responsive Embed -// 29. Reveal -// 30. Slider -// 31. Switch -// 32. Table -// 33. Tabs -// 34. Thumbnail -// 35. Title Bar -// 36. Tooltip -// 37. Top Bar - -@import '../../../node_modules/foundation-sites/scss/util/util'; - -// 1. Global -// --------- - -$global-font-size: 100%; -$global-width: rem-calc(1200); -$global-lineheight: 1.5; -$foundation-palette: ( - primary: #1779ba, - secondary: #767676, - success: #3adb76, - warning: #ffae00, - alert: #cc4b37, -); -$light-gray: #e6e6e6; -$medium-gray: #cacaca; -$dark-gray: #8a8a8a; -$black: #0a0a0a; -$white: #fefefe; -$body-background: $white; -$body-font-color: $black; -$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; -$body-antialiased: true; -$global-margin: 1rem; -$global-padding: 1rem; -$global-weight-normal: normal; -$global-weight-bold: bold; -$global-radius: 0; -$global-text-direction: ltr; -$global-flexbox: false; -$print-transparent-backgrounds: true; - -@include add-foundation-colors; - -// 2. Breakpoints -// -------------- - -$breakpoints: ( - small:0, - smedium: 400px, - medium: 640px, - large: 1024px, - xlarge: 1200px, - xxlarge: 1440px, -); -$print-breakpoint: large; -$breakpoint-classes: (small smedium medium large); - -// 3. The Grid -// ----------- - -$grid-row-width: $global-width; -$grid-column-count: 12; -$grid-column-gutter: ( - small: 20px, - medium: 30px, -); -$grid-column-align-edge: true; -$block-grid-max: 8; - -// 4. Base Typography -// ------------------ - -$header-font-family: $body-font-family; -$header-font-weight: $global-weight-normal; -$header-font-style: normal; -$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace; -$header-color: inherit; -$header-lineheight: 1.4; -$header-margin-bottom: 0.5rem; -$header-styles: ( - small: ( - 'h1': ('font-size': 24), - 'h2': ('font-size': 20), - 'h3': ('font-size': 19), - 'h4': ('font-size': 18), - 'h5': ('font-size': 17), - 'h6': ('font-size': 16), - ), - medium: ( - 'h1': ('font-size': 48), - 'h2': ('font-size': 40), - 'h3': ('font-size': 31), - 'h4': ('font-size': 25), - 'h5': ('font-size': 20), - 'h6': ('font-size': 16), - ), -); -$header-text-rendering: optimizeLegibility; -$small-font-size: 80%; -$header-small-font-color: $medium-gray; -$paragraph-lineheight: 1.6; -$paragraph-margin-bottom: 1rem; -$paragraph-text-rendering: optimizeLegibility; -$code-color: $black; -$code-font-family: $font-family-monospace; -$code-font-weight: $global-weight-normal; -$code-background: $light-gray; -$code-border: 1px solid $medium-gray; -$code-padding: rem-calc(2 5 1); -$anchor-color: $primary-color; -$anchor-color-hover: scale-color($anchor-color, $lightness: -14%); -$anchor-text-decoration: none; -$anchor-text-decoration-hover: none; -$hr-width: $global-width; -$hr-border: 1px solid $medium-gray; -$hr-margin: rem-calc(20) auto; -$list-lineheight: $paragraph-lineheight; -$list-margin-bottom: $paragraph-margin-bottom; -$list-style-type: disc; -$list-style-position: outside; -$list-side-margin: 1.25rem; -$list-nested-side-margin: 1.25rem; -$defnlist-margin-bottom: 1rem; -$defnlist-term-weight: $global-weight-bold; -$defnlist-term-margin-bottom: 0.3rem; -$blockquote-color: $dark-gray; -$blockquote-padding: rem-calc(9 20 0 19); -$blockquote-border: 1px solid $medium-gray; -$cite-font-size: rem-calc(13); -$cite-color: $dark-gray; -$cite-pseudo-content: '\2014 \0020'; -$keystroke-font: $font-family-monospace; -$keystroke-color: $black; -$keystroke-background: $light-gray; -$keystroke-padding: rem-calc(2 4 0); -$keystroke-radius: $global-radius; -$abbr-underline: 1px dotted $black; - -// 5. Typography Helpers -// --------------------- - -$lead-font-size: $global-font-size * 1.25; -$lead-lineheight: 1.6; -$subheader-lineheight: 1.4; -$subheader-color: $dark-gray; -$subheader-font-weight: $global-weight-normal; -$subheader-margin-top: 0.2rem; -$subheader-margin-bottom: 0.5rem; -$stat-font-size: 2.5rem; - -// 6. Abide -// -------- - -$abide-inputs: true; -$abide-labels: true; -$input-background-invalid: get-color(alert); -$form-label-color-invalid: get-color(alert); -$input-error-color: get-color(alert); -$input-error-font-size: rem-calc(12); -$input-error-font-weight: $global-weight-bold; - -// 7. Accordion -// ------------ - -$accordion-background: $white; -$accordion-plusminus: true; -$accordion-title-font-size: rem-calc(12); -$accordion-item-color: $primary-color; -$accordion-item-background-hover: $light-gray; -$accordion-item-padding: 1.25rem 1rem; -$accordion-content-background: $white; -$accordion-content-border: 1px solid $light-gray; -$accordion-content-color: $body-font-color; -$accordion-content-padding: 1rem; - -// 8. Accordion Menu -// ----------------- - -$accordionmenu-arrows: true; -$accordionmenu-arrow-color: $primary-color; -$accordionmenu-arrow-size: 6px; - -// 9. Badge -// -------- - -$badge-background: $primary-color; -$badge-color: $white; -$badge-color-alt: $black; -$badge-palette: $foundation-palette; -$badge-padding: 0.3em; -$badge-minwidth: 2.1em; -$badge-font-size: 0.6rem; - -// 10. Breadcrumbs -// --------------- - -$breadcrumbs-margin: 0 0 $global-margin 0; -$breadcrumbs-item-font-size: rem-calc(11); -$breadcrumbs-item-color: $primary-color; -$breadcrumbs-item-color-current: $black; -$breadcrumbs-item-color-disabled: $medium-gray; -$breadcrumbs-item-margin: 0.75rem; -$breadcrumbs-item-uppercase: true; -$breadcrumbs-item-slash: true; - -// 11. Button -// ---------- - -$button-padding: 0.85em 1em; -$button-margin: 0 0 $global-margin 0; -$button-fill: solid; -$button-background: $primary-color; -$button-background-hover: scale-color($button-background, $lightness: -15%); -$button-color: $white; -$button-color-alt: $black; -$button-radius: $global-radius; -$button-sizes: ( - tiny: 0.6rem, - small: 0.75rem, - default: 0.9rem, - large: 1.25rem, -); -$button-palette: $foundation-palette; -$button-opacity-disabled: 0.25; -$button-background-hover-lightness: -20%; -$button-hollow-hover-lightness: -50%; -$button-transition: background-color 0.25s ease-out, color 0.25s ease-out; - -// 12. Button Group -// ---------------- - -$buttongroup-margin: 1rem; -$buttongroup-spacing: 1px; -$buttongroup-child-selector: '.button'; -$buttongroup-expand-max: 6; -$buttongroup-radius-on-each: true; - -// 13. Callout -// ----------- - -$callout-background: $white; -$callout-background-fade: 85%; -$callout-border: 1px solid rgba($black, 0.25); -$callout-margin: 0 0 1rem 0; -$callout-padding: 1rem; -$callout-font-color: $body-font-color; -$callout-font-color-alt: $body-background; -$callout-radius: $global-radius; -$callout-link-tint: 30%; - -// 14. Card -// -------- - -$card-background: $white; -$card-font-color: $body-font-color; -$card-divider-background: $light-gray; -$card-border: 1px solid $light-gray; -$card-shadow: none; -$card-border-radius: $global-radius; -$card-padding: $global-padding; -$card-margin: $global-margin; - -// 15. Close Button -// ---------------- - -$closebutton-position: right top; -$closebutton-offset-horizontal: ( - small: 0.66rem, - medium: 1rem, -); -$closebutton-offset-vertical: ( - small: 0.33em, - medium: 0.5rem, -); -$closebutton-size: ( - small: 1.5em, - medium: 2em, -); -$closebutton-lineheight: 1; -$closebutton-color: $dark-gray; -$closebutton-color-hover: $black; - -// 16. Drilldown -// ------------- - -$drilldown-transition: transform 0.15s linear; -$drilldown-arrows: true; -$drilldown-arrow-color: $primary-color; -$drilldown-arrow-size: 6px; -$drilldown-background: $white; - -// 17. Dropdown -// ------------ - -$dropdown-padding: 1rem; -$dropdown-background: $body-background; -$dropdown-border: 1px solid $medium-gray; -$dropdown-font-size: 1rem; -$dropdown-width: 300px; -$dropdown-radius: $global-radius; -$dropdown-sizes: ( - tiny: 100px, - small: 200px, - large: 400px, -); - -// 18. Dropdown Menu -// ----------------- - -$dropdownmenu-arrows: true; -$dropdownmenu-arrow-color: $anchor-color; -$dropdownmenu-arrow-size: 6px; -$dropdownmenu-min-width: 200px; -$dropdownmenu-background: $white; -$dropdownmenu-border: 1px solid $medium-gray; - -// 19. Forms -// --------- - -$fieldset-border: 1px solid $medium-gray; -$fieldset-padding: rem-calc(20); -$fieldset-margin: rem-calc(18 0); -$legend-padding: rem-calc(0 3); -$form-spacing: rem-calc(16); -$helptext-color: $black; -$helptext-font-size: rem-calc(13); -$helptext-font-style: italic; -$input-prefix-color: $black; -$input-prefix-background: $light-gray; -$input-prefix-border: 1px solid $medium-gray; -$input-prefix-padding: 1rem; -$form-label-color: $black; -$form-label-font-size: rem-calc(14); -$form-label-font-weight: $global-weight-normal; -$form-label-line-height: 1.8; -$select-background: $white; -$select-triangle-color: $dark-gray; -$select-radius: $global-radius; -$input-color: $black; -$input-placeholder-color: $medium-gray; -$input-font-family: inherit; -$input-font-size: rem-calc(16); -$input-font-weight: $global-weight-normal; -$input-background: $white; -$input-background-focus: $white; -$input-background-disabled: $light-gray; -$input-border: 1px solid $medium-gray; -$input-border-focus: 1px solid $dark-gray; -$input-shadow: inset 0 1px 2px rgba($black, 0.1); -$input-shadow-focus: 0 0 5px $medium-gray; -$input-cursor-disabled: not-allowed; -$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out; -$input-number-spinners: true; -$input-radius: $global-radius; -$form-button-radius: $global-radius; - -// 20. Label -// --------- - -$label-background: $primary-color; -$label-color: $white; -$label-color-alt: $black; -$label-palette: $foundation-palette; -$label-font-size: 0.8rem; -$label-padding: 0.33333rem 0.5rem; -$label-radius: $global-radius; - -// 21. Media Object -// ---------------- - -$mediaobject-margin-bottom: $global-margin; -$mediaobject-section-padding: $global-padding; -$mediaobject-image-width-stacked: 100%; - -// 22. Menu -// -------- - -$menu-margin: 0; -$menu-margin-nested: 1rem; -$menu-item-padding: 0.7rem 1rem; -$menu-item-color-active: $white; -$menu-item-background-active: get-color(primary); -$menu-icon-spacing: 0.25rem; -$menu-item-background-hover: $light-gray; -$menu-border: $light-gray; - -// 23. Meter -// --------- - -$meter-height: 1rem; -$meter-radius: $global-radius; -$meter-background: $medium-gray; -$meter-fill-good: $success-color; -$meter-fill-medium: $warning-color; -$meter-fill-bad: $alert-color; - -// 24. Off-canvas -// -------------- - -$offcanvas-size: 250px; -$offcanvas-vertical-size: 250px; -$offcanvas-background: $light-gray; -$offcanvas-shadow: 0 0 10px rgba($black, 0.7); -$offcanvas-push-zindex: 1; -$offcanvas-overlap-zindex: 10; -$offcanvas-reveal-zindex: 1; -$offcanvas-transition-length: 0.5s; -$offcanvas-transition-timing: ease; -$offcanvas-fixed-reveal: true; -$offcanvas-exit-background: rgba($white, 0.25); -$maincontent-class: 'off-canvas-content'; - -// 25. Orbit -// --------- - -$orbit-bullet-background: $medium-gray; -$orbit-bullet-background-active: $dark-gray; -$orbit-bullet-diameter: 1.2rem; -$orbit-bullet-margin: 0.1rem; -$orbit-bullet-margin-top: 0.8rem; -$orbit-bullet-margin-bottom: 0.8rem; -$orbit-caption-background: rgba($black, 0.5); -$orbit-caption-padding: 1rem; -$orbit-control-background-hover: rgba($black, 0.5); -$orbit-control-padding: 1rem; -$orbit-control-zindex: 10; - -// 26. Pagination -// -------------- - -$pagination-font-size: rem-calc(14); -$pagination-margin-bottom: $global-margin; -$pagination-item-color: $black; -$pagination-item-padding: rem-calc(3 10); -$pagination-item-spacing: rem-calc(1); -$pagination-radius: $global-radius; -$pagination-item-background-hover: $light-gray; -$pagination-item-background-current: $primary-color; -$pagination-item-color-current: $white; -$pagination-item-color-disabled: $medium-gray; -$pagination-ellipsis-color: $black; -$pagination-mobile-items: false; -$pagination-mobile-current-item: false; -$pagination-arrows: true; - -// 27. Progress Bar -// ---------------- - -$progress-height: 1rem; -$progress-background: $medium-gray; -$progress-margin-bottom: $global-margin; -$progress-meter-background: $primary-color; -$progress-radius: $global-radius; - -// 28. Responsive Embed -// -------------------- - -$responsive-embed-margin-bottom: rem-calc(16); -$responsive-embed-ratios: ( - default: 4 by 3, - widescreen: 16 by 9, -); - -// 29. Reveal -// ---------- - -$reveal-background: $white; -$reveal-width: 600px; -$reveal-max-width: $global-width; -$reveal-padding: $global-padding; -$reveal-border: 1px solid $medium-gray; -$reveal-radius: $global-radius; -$reveal-zindex: 1005; -$reveal-overlay-background: rgba($black, 0.45); - -// 30. Slider -// ---------- - -$slider-width-vertical: 0.5rem; -$slider-transition: all 0.2s ease-in-out; -$slider-height: 0.5rem; -$slider-background: $light-gray; -$slider-fill-background: $medium-gray; -$slider-handle-height: 1.4rem; -$slider-handle-width: 1.4rem; -$slider-handle-background: $primary-color; -$slider-opacity-disabled: 0.25; -$slider-radius: $global-radius; - -// 31. Switch -// ---------- - -$switch-background: $medium-gray; -$switch-background-active: $primary-color; -$switch-height: 2rem; -$switch-height-tiny: 1.5rem; -$switch-height-small: 1.75rem; -$switch-height-large: 2.5rem; -$switch-radius: $global-radius; -$switch-margin: $global-margin; -$switch-paddle-background: $white; -$switch-paddle-offset: 0.25rem; -$switch-paddle-radius: $global-radius; -$switch-paddle-transition: all 0.25s ease-out; - -// 32. Table -// --------- - -$table-background: $white; -$table-color-scale: 5%; -$table-border: 1px solid smart-scale($table-background, $table-color-scale); -$table-padding: rem-calc(8 10 10); -$table-hover-scale: 2%; -$table-row-hover: darken($table-background, $table-hover-scale); -$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale); -$table-is-striped: true; -$table-striped-background: smart-scale($table-background, $table-color-scale); -$table-stripe: even; -$table-head-background: smart-scale($table-background, $table-color-scale / 2); -$table-head-row-hover: darken($table-head-background, $table-hover-scale); -$table-foot-background: smart-scale($table-background, $table-color-scale); -$table-foot-row-hover: darken($table-foot-background, $table-hover-scale); -$table-head-font-color: $body-font-color; -$table-foot-font-color: $body-font-color; -$show-header-for-stacked: false; - -// 33. Tabs -// -------- - -$tab-margin: 0; -$tab-background: $white; -$tab-color: $primary-color; -$tab-background-active: $light-gray; -$tab-active-color: $primary-color; -$tab-item-font-size: rem-calc(12); -$tab-item-background-hover: $white; -$tab-item-padding: 1.25rem 1.5rem; -$tab-expand-max: 6; -$tab-content-background: $white; -$tab-content-border: $light-gray; -$tab-content-color: $body-font-color; -$tab-content-padding: 1rem; - -// 34. Thumbnail -// ------------- - -$thumbnail-border: solid 4px $white; -$thumbnail-margin-bottom: $global-margin; -$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2); -$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5); -$thumbnail-transition: box-shadow 200ms ease-out; -$thumbnail-radius: $global-radius; - -// 35. Title Bar -// ------------- - -$titlebar-background: $black; -$titlebar-color: $white; -$titlebar-padding: 0.5rem; -$titlebar-text-font-weight: bold; -$titlebar-icon-color: $white; -$titlebar-icon-color-hover: $medium-gray; -$titlebar-icon-spacing: 0.25rem; - -// 36. Tooltip -// ----------- - -$has-tip-font-weight: $global-weight-bold; -$has-tip-border-bottom: dotted 1px $dark-gray; -$tooltip-background-color: $black; -$tooltip-color: $white; -$tooltip-padding: 0.75rem; -$tooltip-font-size: $small-font-size; -$tooltip-pip-width: 0.75rem; -$tooltip-pip-height: $tooltip-pip-width * 0.866; -$tooltip-radius: $global-radius; - -// 37. Top Bar -// ----------- - -$topbar-padding: 0.5rem; -$topbar-background: $light-gray; -$topbar-submenu-background: $topbar-background; -$topbar-title-spacing: 0.5rem 1rem 0.5rem 0; -$topbar-input-width: 200px; -$topbar-unstack-breakpoint: medium; diff --git a/src/client/sass/lib/_listjs.scss b/src/client/sass/lib/_listjs.scss deleted file mode 100644 index 4ce14ee..0000000 --- a/src/client/sass/lib/_listjs.scss +++ /dev/null @@ -1,54 +0,0 @@ -.listjs { - position: relative; - - label { - display: inline-block; - input { - margin-bottom: 0; - } - } - - table { - border-collapse: collapse; - thead, tfoot { - tr th { - text-align: left; - &.sort{ - cursor: pointer; - } - } - } - tbody.list { - tr:first-child td { - border-top: solid 1px #696969; - } - tr:last-child td { - border-bottom: solid 1px #696969; - } - - tr td { - border-top: solid 1px #c8c8c8; - padding: 0.3rem; - } - } - } - ul.pagination { - float: right; - display: inline-block; - margin: 0; - li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; - text-decoration: underline; - - &.active, &.disabled { - text-decoration: none; - } - - a.page { - - } - } - } -} \ No newline at end of file diff --git a/src/client/sass/lib/_modal.scss b/src/client/sass/lib/_modal.scss deleted file mode 100644 index 1a84c9d..0000000 --- a/src/client/sass/lib/_modal.scss +++ /dev/null @@ -1,91 +0,0 @@ - -.background { - position: fixed; - z-index: 1000000; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - //background-color: rgb(0, 0, 0); /* Fallback color */ - background-color: rgba(55, 55, 55, 0.6); - - .modal { - position: relative; - top: 50%; - //left: 10%; - //right: 10%; - margin: auto; - width: 80%; - - //background-color: #fefefe; - - transform: translateY(-50%); - padding: 0.5rem; - display: flex; - flex-direction: column; - max-height: 80%; - max-width: nth(nth($breakpoints, 4),2); - - &.small-margin { - @include breakpoint(medium down) { - width: 90%; - } - @include breakpoint(small down) { - width: 95%; - } - } - - @each $size in $breakpoints - { - &.max-#{nth($size, 1)} - { - max-width: nth($size, 2); - } - } - - .title { - font-weight: bold; - padding-bottom: 0.5rem; - } - - .content-container { - overflow-y: auto; - max-height: 100%; - - .loader{ - position:static; - transform: none; - } - } - - .close { - text-align: right; - //color: #aaa; - float: right; - font-size: 28px; - font-weight: bold; - line-height: 1; - - &:hover, - &:focus { - //color: black; - text-decoration: none; - cursor: pointer; - } - } - - .modal-button-container { - padding-top: 0.5rem; - .button { - margin-left: 0.2rem; - margin-bottom: 0 !important; - padding: 0.6em 0.8em; - @include breakpoint(small down) { - margin-left: 0.1rem; - padding: 0.3em 0.5em; - } - } - } - } -} diff --git a/src/client/sass/lib/_pwaAssets.scss b/src/client/sass/lib/_pwaAssets.scss deleted file mode 100644 index 4dd9dfc..0000000 --- a/src/client/sass/lib/_pwaAssets.scss +++ /dev/null @@ -1,7 +0,0 @@ - -.no-transition{ - transition: none !important; - * { - transition: none !important; - } -} \ No newline at end of file diff --git a/src/client/sass/lib/_settingsSite.scss b/src/client/sass/lib/_settingsSite.scss index 154e04c..ece4580 100644 --- a/src/client/sass/lib/_settingsSite.scss +++ b/src/client/sass/lib/_settingsSite.scss @@ -13,6 +13,7 @@ #settings-fragments { > * { display: none; + &.active { display: block; } @@ -24,26 +25,31 @@ .switch { position: relative; display: inline-block; + height: initial; - @include breakpoint(small down){ + @include breakpoint(small down) { font-size: 0.6em; } - @include breakpoint(smedium down){ + @include breakpoint(smedium down) { font-size: 0.7em; } + input { display: none; - &:checked + .slider{ + + &:checked + .slider { //background-color: #2196F3; - &:before{ + &:before { transform: translateX(1.5em); } } - &:focus + .slider{ + + &:focus + .slider { //box-shadow: 0 0 1px #2196F3; } } + .slider { display: inline-block; position: relative; @@ -55,7 +61,8 @@ transition: .4s; margin-bottom: 0; margin-top: 0; - &:before{ + + &:before { position: absolute; content: ""; height: 1.1em; @@ -67,30 +74,38 @@ border-radius: 50%; } } - img, svg{ + + img, svg { width: 1.4em; display: inline; vertical-align: initial; - path{ + + path { stroke-color: inherit; } } } -label{ + +label { font-size: 1em !important; } -.setting-row:not(.hidden){ + +.setting-row:not(.hidden) { line-height: 1; - padding-top: 0.5em; - padding-bottom: 0.5em; + display: flex; + padding: 0.5rem 0.4rem; + align-items: center; + width: 100%; cursor: pointer; background: rgba(195, 195, 195, 0.13); - //display: inline-block; - input[type=checkbox] - { + > * { + flex: 1; + } + + input[type=checkbox] { margin: 0; } } diff --git a/src/client/sass/wordRotator.scss b/src/client/sass/wordRotator.scss index 8f1e8e6..660050f 100644 --- a/src/client/sass/wordRotator.scss +++ b/src/client/sass/wordRotator.scss @@ -1,11 +1,9 @@ -@import "settings"; -@import "lib/_rotate.scss"; +//@import "lib/_rotate.scss"; @import "lib/_share.scss"; -@import "lib/_tabs.scss"; +//@import "lib/_tabs.scss"; @import "lib/_core.scss"; -@import "lib/_flashMessenger.scss"; -@import "lib/_framework.scss"; -@import "lib/_pwaAssets.scss"; +//@import "lib/_flashMessenger.scss"; +//@import "lib/_framework.scss"; @import "lib/_settingsSite.scss"; @import "lib/_style.scss"; @import "lib/_theme.scss"; @@ -13,19 +11,14 @@ @import "wordrotatorTheme"; -$text-shadow: /* - 0 0 3px #787878, - 0 0 10px #000000; -*/ - - /* - 0 3px 3px #787878, - 15px 15px 8px #000000 - */ - 0 0.2rem 0.2rem #464646, 0.6rem 0.8rem 0.4rem #00000090; - - +$text-shadow: 0 0.2rem 0.2rem #464646, 0.6rem 0.8rem 0.4rem #00000090; +.no-transition{ + transition: none !important; + * { + transition: none !important; + } +} //ActionBar nav.top-bar.title-bar { @@ -355,7 +348,7 @@ $coinTowerDimension: 28px; top: 0; left: 0; - text-shadow: $text-shadow; + //text-shadow: $text-shadow; } } @@ -405,7 +398,7 @@ $coinTowerDimension: 28px; display: none; } - #won-text{ + #won-text { text-shadow: $text-shadow; } @@ -425,7 +418,7 @@ $coinTowerDimension: 28px; #play-button { @include breakpoint(small down) { - margin-bottom: 2px; + margin-bottom: 0.5rem; } } @@ -482,4 +475,4 @@ svg { .fill-background { fill: white; } -} \ No newline at end of file +} diff --git a/src/client/translations/de.json b/src/client/translations/de.json index 7cab480..39035c1 100644 --- a/src/client/translations/de.json +++ b/src/client/translations/de.json @@ -48,5 +48,6 @@ "privacy policy accepted": " akzeptiert", "message": "Nachricht", "send": "Senden", - "the message was sent": "Die Nachricht wurde gesendet." -} \ No newline at end of file + "the message was sent": "Die Nachricht wurde gesendet.", + "wr": "WR" +} diff --git a/src/server/public/config.xml b/src/server/public/config.xml index 5d7407a..0b0dab0 100644 --- a/src/server/public/config.xml +++ b/src/server/public/config.xml @@ -1,5 +1,5 @@ - + WordRotator A word-game diff --git a/src/server/public/service-worker.js.map b/src/server/public/service-worker.js.map index 78622f8..374c953 100644 --- a/src/server/public/service-worker.js.map +++ b/src/server/public/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/c18028f2f290fd8fb18eae91b1e278f8/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/silas/Projekte/web/wordRotator/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"autobundle.js\",\n \"revision\": \"13c52d778d9424443ebc2f01ea905320\"\n },\n {\n \"url\": \"autohtml/abstractWindowTemplate.html\",\n \"revision\": \"6c3ea1af1622920ddbc5bf4b548792f1\"\n },\n {\n \"url\": \"autohtml/alphabeticListFragment.html\",\n \"revision\": \"17b160c9c961ee83eced3a2c7d5f7749\"\n },\n {\n \"url\": \"autohtml/changeUserSite.html\",\n \"revision\": \"32ca48dd5c17c3ca7259a192c6ad3e5f\"\n },\n {\n \"url\": \"autohtml/chooseDialog.html\",\n \"revision\": \"1e4a0cfb29c721b64799c342f7586ad6\"\n },\n {\n \"url\": \"autohtml/contactSite.html\",\n \"revision\": \"2cdee4e20c1728e1f8e03110cbfcbd4c\"\n },\n {\n \"url\": \"autohtml/container.html\",\n \"revision\": \"7c9ef0046546b6535e2197845804df3d\"\n },\n {\n \"url\": \"autohtml/credits.html\",\n \"revision\": \"7ad14642353efd449a3890122bb73b1e\"\n },\n {\n \"url\": \"autohtml/end.html\",\n \"revision\": \"162cd57d50145eb4dbf51ca7bc97256a\"\n },\n {\n \"url\": \"autohtml/forgotPasswordSite.html\",\n \"revision\": \"ef290b527ae9e6ecf6e2ec31ecc99b87\"\n },\n {\n \"url\": \"autohtml/impressum.html\",\n \"revision\": \"1533d5dba0bd88309b004d65bc59c5f1\"\n },\n {\n \"url\": \"autohtml/level.html\",\n \"revision\": \"05cef7e7e823c25ed8bb735da3cf585b\"\n },\n {\n \"url\": \"autohtml/loginSite.html\",\n \"revision\": \"28536b28261bdd966784e32ef8e8bda2\"\n },\n {\n \"url\": \"autohtml/menu.html\",\n \"revision\": \"a356869e90f07077cc3a07dd36c238c5\"\n },\n {\n \"url\": \"autohtml/menuSite.html\",\n \"revision\": \"926a7a940ae8741445644f16132a9f20\"\n },\n {\n \"url\": \"autohtml/navbar.html\",\n \"revision\": \"04c4cb0adaa4e69cb43fb35cc8482b0a\"\n },\n {\n \"url\": \"autohtml/notAllowedSite.html\",\n \"revision\": \"da6b73654dccd61eebe8f4f1ba06e340\"\n },\n {\n \"url\": \"autohtml/privacyPolicy.html\",\n \"revision\": \"7319848c6b090b0af30ac56492101ee8\"\n },\n {\n \"url\": \"autohtml/registrationSite.html\",\n \"revision\": \"0911eeabc518befa874ea1661b64c3d7\"\n },\n {\n \"url\": \"autohtml/selectUserDialog.html\",\n \"revision\": \"23ae55ef46c250f2ab2528f4422a14d6\"\n },\n {\n \"url\": \"autohtml/settings.html\",\n \"revision\": \"d8a6ead5c9f8dd6f6319b61caab9d359\"\n },\n {\n \"url\": \"autohtml/settingsSite.html\",\n \"revision\": \"06f47ad4321d3ede658035e0411df0b0\"\n },\n {\n \"url\": \"autohtml/shareDialog.html\",\n \"revision\": \"cc8b45e9c7f6264e7b61d6da3e6210c6\"\n },\n {\n \"url\": \"autohtml/swipeFragment.html\",\n \"revision\": \"553c580ff0a282c49a2efe35dabad809\"\n },\n {\n \"url\": \"autohtml/tabFragment.html\",\n \"revision\": \"ca8c3b2c4a353a0ee7900aef656cc958\"\n },\n {\n \"url\": \"autoimg/arrowLeft.svg\",\n \"revision\": \"6bbb4f0e313bb88cd0cc80c2b3cd36fc\"\n },\n {\n \"url\": \"autoimg/background.png\",\n \"revision\": \"be3db85ac9a143f4bcac7db7f5a4856e\"\n },\n {\n \"url\": \"autoimg/brightAndBeautifull__.mp3\",\n \"revision\": \"2b40fd6c076d254cf639f8f46819d5ca\"\n },\n {\n \"url\": \"autoimg/coin.png\",\n \"revision\": \"5b380862ff8349f6b4b8d5241893f508\"\n },\n {\n \"url\": \"autoimg/coinTower.png\",\n \"revision\": \"50cef0780a1affcd301c2c4be09ccb25\"\n },\n {\n \"url\": \"autoimg/errorIcon.png\",\n \"revision\": \"b48a01a1871b83b30c317f0fc4aed555\"\n },\n {\n \"url\": \"autoimg/help.png\",\n \"revision\": \"45a8dc0493279dc37f72f8026af5bc10\"\n },\n {\n \"url\": \"autoimg/logo.png\",\n \"revision\": \"5246599497de18a878951e1e98083493\"\n },\n {\n \"url\": \"autoimg/music.svg\",\n \"revision\": \"ce36074e94a8d19dfa383f98bd66a1f4\"\n },\n {\n \"url\": \"autoimg/settings.png\",\n \"revision\": \"c44ce577ac56632e53208833ff78e67f\"\n },\n {\n \"url\": \"autoimg/share.svg\",\n \"revision\": \"ac8fc0221ee400fc843090a834df7c9d\"\n },\n {\n \"url\": \"autoimg/single_coin_fall_on_concrete_.mp3\",\n \"revision\": \"7f0de4f503644a7fc14de7e307bbf722\"\n },\n {\n \"url\": \"autoimg/speaker.svg\",\n \"revision\": \"0d926850f1558dd431e1c6b10fe0c2ef\"\n },\n {\n \"url\": \"autoimg/telegram.svg\",\n \"revision\": \"e366fed4603e06142a2d6b8221be51b8\"\n },\n {\n \"url\": \"autoimg/whatsapp.svg\",\n \"revision\": \"0fa4092ac1f91a5390e74a3c2c03d5e3\"\n },\n {\n \"url\": \"autoindex.css\",\n \"revision\": \"57dd368ab96459de433a2a3cbacc765d\"\n },\n {\n \"url\": \"autoindex.html\",\n \"revision\": \"d9da26b18b24767c7bedb06a44bc31ce\"\n },\n {\n \"url\": \"autoscripts/localforage.js\",\n \"revision\": \"7ae08028a75fed2acce92b8e75fbe08c\"\n },\n {\n \"url\": \"autoscripts/sql-wasm.js\",\n \"revision\": \"b34648b4b4c89ba52bcd7468fa035583\"\n },\n {\n \"url\": \"autosql-wasm.wasm\",\n \"revision\": \"bff856e0a3429d33cfb88d20b7f9fcff\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"0yBAmBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,mCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gDACK,oCAEd,KACS,gDACK,oCAEd,KACS,wCACK,oCAEd,KACS,sCACK,oCAEd,KACS,qCACK,oCAEd,KACS,mCACK,oCAEd,KACS,iCACK,oCAEd,KACS,6BACK,oCAEd,KACS,4CACK,oCAEd,KACS,mCACK,oCAEd,KACS,+BACK,oCAEd,KACS,mCACK,oCAEd,KACS,8BACK,oCAEd,KACS,kCACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,0CACK,oCAEd,KACS,0CACK,oCAEd,KACS,kCACK,oCAEd,KACS,sCACK,oCAEd,KACS,qCACK,oCAEd,KACS,uCACK,oCAEd,KACS,qCACK,oCAEd,KACS,iCACK,oCAEd,KACS,kCACK,oCAEd,KACS,6CACK,oCAEd,KACS,4BACK,oCAEd,KACS,iCACK,oCAEd,KACS,iCACK,oCAEd,KACS,4BACK,oCAEd,KACS,4BACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,6BACK,oCAEd,KACS,qDACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,0BACK,oCAEd,KACS,sCACK,oCAEd,KACS,mCACK,oCAEd,KACS,6BACK,qCAEb"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/e3f29bc3b67803fdffb5ae8cb8dc01fe/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/silas/Projekte/web/wordRotator/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"autobundle.js\",\n \"revision\": \"13c52d778d9424443ebc2f01ea905320\"\n },\n {\n \"url\": \"autohtml/abstractWindowTemplate.html\",\n \"revision\": \"6c3ea1af1622920ddbc5bf4b548792f1\"\n },\n {\n \"url\": \"autohtml/alphabeticListFragment.html\",\n \"revision\": \"17b160c9c961ee83eced3a2c7d5f7749\"\n },\n {\n \"url\": \"autohtml/changeUserSite.html\",\n \"revision\": \"32ca48dd5c17c3ca7259a192c6ad3e5f\"\n },\n {\n \"url\": \"autohtml/chooseDialog.html\",\n \"revision\": \"1e4a0cfb29c721b64799c342f7586ad6\"\n },\n {\n \"url\": \"autohtml/contactSite.html\",\n \"revision\": \"2cdee4e20c1728e1f8e03110cbfcbd4c\"\n },\n {\n \"url\": \"autohtml/container.html\",\n \"revision\": \"7c9ef0046546b6535e2197845804df3d\"\n },\n {\n \"url\": \"autohtml/credits.html\",\n \"revision\": \"7ad14642353efd449a3890122bb73b1e\"\n },\n {\n \"url\": \"autohtml/end.html\",\n \"revision\": \"162cd57d50145eb4dbf51ca7bc97256a\"\n },\n {\n \"url\": \"autohtml/forgotPasswordSite.html\",\n \"revision\": \"ef290b527ae9e6ecf6e2ec31ecc99b87\"\n },\n {\n \"url\": \"autohtml/impressum.html\",\n \"revision\": \"1533d5dba0bd88309b004d65bc59c5f1\"\n },\n {\n \"url\": \"autohtml/level.html\",\n \"revision\": \"05cef7e7e823c25ed8bb735da3cf585b\"\n },\n {\n \"url\": \"autohtml/loginSite.html\",\n \"revision\": \"28536b28261bdd966784e32ef8e8bda2\"\n },\n {\n \"url\": \"autohtml/menu.html\",\n \"revision\": \"a356869e90f07077cc3a07dd36c238c5\"\n },\n {\n \"url\": \"autohtml/menuSite.html\",\n \"revision\": \"926a7a940ae8741445644f16132a9f20\"\n },\n {\n \"url\": \"autohtml/navbar.html\",\n \"revision\": \"04c4cb0adaa4e69cb43fb35cc8482b0a\"\n },\n {\n \"url\": \"autohtml/notAllowedSite.html\",\n \"revision\": \"da6b73654dccd61eebe8f4f1ba06e340\"\n },\n {\n \"url\": \"autohtml/privacyPolicy.html\",\n \"revision\": \"7319848c6b090b0af30ac56492101ee8\"\n },\n {\n \"url\": \"autohtml/registrationSite.html\",\n \"revision\": \"0911eeabc518befa874ea1661b64c3d7\"\n },\n {\n \"url\": \"autohtml/selectUserDialog.html\",\n \"revision\": \"23ae55ef46c250f2ab2528f4422a14d6\"\n },\n {\n \"url\": \"autohtml/settings.html\",\n \"revision\": \"d8a6ead5c9f8dd6f6319b61caab9d359\"\n },\n {\n \"url\": \"autohtml/settingsSite.html\",\n \"revision\": \"06f47ad4321d3ede658035e0411df0b0\"\n },\n {\n \"url\": \"autohtml/shareDialog.html\",\n \"revision\": \"cc8b45e9c7f6264e7b61d6da3e6210c6\"\n },\n {\n \"url\": \"autohtml/swipeFragment.html\",\n \"revision\": \"553c580ff0a282c49a2efe35dabad809\"\n },\n {\n \"url\": \"autohtml/tabFragment.html\",\n \"revision\": \"ca8c3b2c4a353a0ee7900aef656cc958\"\n },\n {\n \"url\": \"autoimg/arrowLeft.svg\",\n \"revision\": \"6bbb4f0e313bb88cd0cc80c2b3cd36fc\"\n },\n {\n \"url\": \"autoimg/background.png\",\n \"revision\": \"be3db85ac9a143f4bcac7db7f5a4856e\"\n },\n {\n \"url\": \"autoimg/brightAndBeautifull__.mp3\",\n \"revision\": \"2b40fd6c076d254cf639f8f46819d5ca\"\n },\n {\n \"url\": \"autoimg/coin.png\",\n \"revision\": \"5b380862ff8349f6b4b8d5241893f508\"\n },\n {\n \"url\": \"autoimg/coinTower.png\",\n \"revision\": \"50cef0780a1affcd301c2c4be09ccb25\"\n },\n {\n \"url\": \"autoimg/errorIcon.png\",\n \"revision\": \"b48a01a1871b83b30c317f0fc4aed555\"\n },\n {\n \"url\": \"autoimg/help.png\",\n \"revision\": \"45a8dc0493279dc37f72f8026af5bc10\"\n },\n {\n \"url\": \"autoimg/logo.png\",\n \"revision\": \"5246599497de18a878951e1e98083493\"\n },\n {\n \"url\": \"autoimg/music.svg\",\n \"revision\": \"ce36074e94a8d19dfa383f98bd66a1f4\"\n },\n {\n \"url\": \"autoimg/settings.png\",\n \"revision\": \"c44ce577ac56632e53208833ff78e67f\"\n },\n {\n \"url\": \"autoimg/share.svg\",\n \"revision\": \"ac8fc0221ee400fc843090a834df7c9d\"\n },\n {\n \"url\": \"autoimg/single_coin_fall_on_concrete_.mp3\",\n \"revision\": \"7f0de4f503644a7fc14de7e307bbf722\"\n },\n {\n \"url\": \"autoimg/speaker.svg\",\n \"revision\": \"0d926850f1558dd431e1c6b10fe0c2ef\"\n },\n {\n \"url\": \"autoimg/telegram.svg\",\n \"revision\": \"e366fed4603e06142a2d6b8221be51b8\"\n },\n {\n \"url\": \"autoimg/whatsapp.svg\",\n \"revision\": \"0fa4092ac1f91a5390e74a3c2c03d5e3\"\n },\n {\n \"url\": \"autoindex.css\",\n \"revision\": \"57dd368ab96459de433a2a3cbacc765d\"\n },\n {\n \"url\": \"autoindex.html\",\n \"revision\": \"d9da26b18b24767c7bedb06a44bc31ce\"\n },\n {\n \"url\": \"autoscripts/localforage.js\",\n \"revision\": \"7ae08028a75fed2acce92b8e75fbe08c\"\n },\n {\n \"url\": \"autoscripts/sql-wasm.js\",\n \"revision\": \"b34648b4b4c89ba52bcd7468fa035583\"\n },\n {\n \"url\": \"autosql-wasm.wasm\",\n \"revision\": \"bff856e0a3429d33cfb88d20b7f9fcff\"\n }\n], {});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"0yBAmBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,mCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gDACK,oCAEd,KACS,gDACK,oCAEd,KACS,wCACK,oCAEd,KACS,sCACK,oCAEd,KACS,qCACK,oCAEd,KACS,mCACK,oCAEd,KACS,iCACK,oCAEd,KACS,6BACK,oCAEd,KACS,4CACK,oCAEd,KACS,mCACK,oCAEd,KACS,+BACK,oCAEd,KACS,mCACK,oCAEd,KACS,8BACK,oCAEd,KACS,kCACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,0CACK,oCAEd,KACS,0CACK,oCAEd,KACS,kCACK,oCAEd,KACS,sCACK,oCAEd,KACS,qCACK,oCAEd,KACS,uCACK,oCAEd,KACS,qCACK,oCAEd,KACS,iCACK,oCAEd,KACS,kCACK,oCAEd,KACS,6CACK,oCAEd,KACS,4BACK,oCAEd,KACS,iCACK,oCAEd,KACS,iCACK,oCAEd,KACS,4BACK,oCAEd,KACS,4BACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,6BACK,oCAEd,KACS,qDACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,0BACK,oCAEd,KACS,sCACK,oCAEd,KACS,mCACK,oCAEd,KACS,6BACK,qCAEb"} \ No newline at end of file diff --git a/src/server/public/wordRotator.apk b/src/server/public/wordRotator.apk index 189423d..39b87a1 100644 Binary files a/src/server/public/wordRotator.apk and b/src/server/public/wordRotator.apk differ diff --git a/tests/setup.js b/tests/setup.js index c33270d..8109a0c 100644 --- a/tests/setup.js +++ b/tests/setup.js @@ -39,7 +39,7 @@ async function startTestServer() { stdio: "pipe" }, reject); child.stdout.on("data", data => { - console.log("[SERVER]", data); + console.log("[SERVER]", data); if (data.indexOf("Server started on Port: ") !== -1){ resolve(); } diff --git a/tests/specs/shared/playLevels.js b/tests/specs/shared/playLevels.js index 8cc8030..a376736 100644 --- a/tests/specs/shared/playLevels.js +++ b/tests/specs/shared/playLevels.js @@ -5,7 +5,7 @@ const functions = require("../../lib/functions.js"); async function solveLevel() { await functions.pause(500); - await browser.executeAsync(async (delayFactor, done) => { + await browser.executeAsync((delayFactor, done) => { const delay = 100*delayFactor; let promise = Promise.resolve(); @@ -69,7 +69,6 @@ describe("fsj suite", () => { let baseUrl = null; beforeAll(async () => { - if (browser.config.baseUrl.trim() !== "") { baseUrl = browser.config.baseUrl; } else { @@ -82,7 +81,6 @@ describe("fsj suite", () => { }); beforeEach(async function () { - await browser.url(baseUrl); await browser.waitUntil(async () => { @@ -107,4 +105,4 @@ describe("fsj suite", () => { // await functions.pause(5000); }); -}); \ No newline at end of file +}); diff --git a/tests/wdio.config.browser.js b/tests/wdio.config.browser.js index 3497dd7..4fd5ead 100644 --- a/tests/wdio.config.browser.js +++ b/tests/wdio.config.browser.js @@ -58,6 +58,7 @@ exports.config = { maxInstances: 1, }], onPrepare: async function(){ + console.log("on prepare"); await Service.setup(); }, onComplete: async function(){ @@ -65,4 +66,4 @@ exports.config = { await Service.tearDown(); console.log("teared down!"); } -}; \ No newline at end of file +}; diff --git a/tsconfig.json b/tsconfig.json index 4cffd06..d11d3eb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,15 +11,10 @@ "allowJs": true }, "include": [ -// "./node_modules/cordova-sites/**/*", -// "./node_modules/cordova-sites-database/**/*", -// "./node_modules/cordova-sites-easy-sync/**/*", -// "./node_modules/cordova-sites-user-management/**/*", - // "./node_modules/js-helper/**/*", "./src/client/**/*", "./src/shared/**/*" ], "exclude": [], "emitDecoratorMetadata": true, "experimentalDecorators": true -} \ No newline at end of file +}