This commit is contained in:
silas 2018-12-01 16:38:12 +01:00
parent bdd8d19af1
commit f03ed8c3c2
7 changed files with 243 additions and 99 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectTasksOptions"> <component name="ProjectTasksOptions">
<TaskOptions isEnabled="true"> <TaskOptions isEnabled="false">
<option name="arguments" value="--no-source-map --update $FileName$:$FileNameWithoutExtension$.css" /> <option name="arguments" value="--no-source-map --update $FileName$:$FileNameWithoutExtension$.css" />
<option name="checkSyntaxErrors" value="true" /> <option name="checkSyntaxErrors" value="true" />
<option name="description" /> <option name="description" />

View File

@ -1366,22 +1366,22 @@ class SystemSettings {
SystemSettings.setBasePath("/"); SystemSettings.setBasePath("/");
SystemSettings._settings = {}; SystemSettings._settings = {};
class ThemeManager { class ThemeManager$1 {
static init() { static init() {
ThemeManager.loadCurrentTheme(); ThemeManager$1.loadCurrentTheme();
} }
static changeCurrentTheme(newTheme) { static changeCurrentTheme(newTheme) {
let theme = null; let theme = null;
if (typeof newTheme === 'string') { if (typeof newTheme === 'string') {
let themes = ThemeManager.themes.filter(function (theme) { let themes = ThemeManager$1.themes.filter(function (theme) {
return theme._name === newTheme; return theme._name === newTheme;
}); });
if (themes.length > 0) { if (themes.length > 0) {
theme = themes[0]; theme = themes[0];
} }
} }
else if (ThemeManager.themes.indexOf(newTheme) !== -1) { else if (ThemeManager$1.themes.indexOf(newTheme) !== -1) {
theme = newTheme; theme = newTheme;
} }
if (Helper.isNotNull(theme)) { if (Helper.isNotNull(theme)) {
@ -1392,59 +1392,59 @@ class ThemeManager {
}); });
}); });
document.body.className = theme._className; document.body.className = theme._className;
ThemeManager.currentTheme = theme; ThemeManager$1.currentTheme = theme;
for (let i = 0, n = ThemeManager.changeListeners.length; i < n; i++) { for (let i = 0, n = ThemeManager$1.changeListeners.length; i < n; i++) {
ThemeManager.changeListeners[i](ThemeManager.currentTheme, themePromise); ThemeManager$1.changeListeners[i](ThemeManager$1.currentTheme, themePromise);
} }
} }
} }
static addTheme(theme) { static addTheme(theme) {
ThemeManager.themes.push(theme); ThemeManager$1.themes.push(theme);
} }
static loadCurrentTheme() { static loadCurrentTheme() {
ThemeManager.changeCurrentTheme(localStorage.getItem("currentTheme")); ThemeManager$1.changeCurrentTheme(localStorage.getItem("currentTheme"));
if (Helper.isNull(ThemeManager.currentTheme)) { if (Helper.isNull(ThemeManager$1.currentTheme)) {
let className = document.body.className; let className = document.body.className;
let themes = ThemeManager.themes.filter(function (theme) { let themes = ThemeManager$1.themes.filter(function (theme) {
return theme._className === className; return theme._className === className;
}); });
if (themes.length > 0) { if (themes.length > 0) {
ThemeManager.changeCurrentTheme(themes[0]); ThemeManager$1.changeCurrentTheme(themes[0]);
} }
else if (ThemeManager.themes.length > 0) { else if (ThemeManager$1.themes.length > 0) {
ThemeManager.changeCurrentTheme(ThemeManager.themes[0]); ThemeManager$1.changeCurrentTheme(ThemeManager$1.themes[0]);
} }
} }
} }
static generateChangeThemeMenuAction() { static generateChangeThemeMenuAction() {
return new MenuAction(ThemeManager.currentTheme._name, function (action) { return new MenuAction(ThemeManager$1.currentTheme._name, function (action) {
let currentThemeIndex = ThemeManager.themes.indexOf(ThemeManager.currentTheme); let currentThemeIndex = ThemeManager$1.themes.indexOf(ThemeManager$1.currentTheme);
let nextIndex = (currentThemeIndex + 1) % ThemeManager.themes.length; let nextIndex = (currentThemeIndex + 1) % ThemeManager$1.themes.length;
ThemeManager.changeCurrentTheme(ThemeManager.themes[nextIndex]); ThemeManager$1.changeCurrentTheme(ThemeManager$1.themes[nextIndex]);
action.title = ThemeManager.currentTheme._name; action.title = ThemeManager$1.currentTheme._name;
action._menu.redraw(); action._menu.redraw();
}, Menu.SHOW_ALWAYS) }, Menu.SHOW_ALWAYS)
} }
static addChangeListener(listener) { static addChangeListener(listener) {
ThemeManager.changeListeners.push(listener); ThemeManager$1.changeListeners.push(listener);
} }
static getCurrentTheme(){ static getCurrentTheme(){
return ThemeManager.currentTheme; return ThemeManager$1.currentTheme;
} }
} }
ThemeManager.currentTheme = null; ThemeManager$1.currentTheme = null;
ThemeManager.themes = []; ThemeManager$1.themes = [];
ThemeManager.changeListeners = []; ThemeManager$1.changeListeners = [];
AndroidBridge.addDefinition("ThemeManager", { AndroidBridge.addDefinition("ThemeManager", {
"addChangeListener": ThemeManager.addChangeListener, "addChangeListener": ThemeManager$1.addChangeListener,
"getCurrentTheme": ThemeManager.getCurrentTheme, "getCurrentTheme": ThemeManager$1.getCurrentTheme,
}); });
class CookieCompliance { class CookieCompliance {
@ -2456,9 +2456,9 @@ class App {
this._startSite = fallbackStartSite; this._startSite = fallbackStartSite;
Translator.init(); Translator.init();
ThemeManager.init(); ThemeManager$1.init();
if (this._addThemeAction) { if (this._addThemeAction) {
this.addDefaultAction(ThemeManager.generateChangeThemeMenuAction()); this.addDefaultAction(ThemeManager$1.generateChangeThemeMenuAction());
} }
this._siteManager = new SiteManager(this._siteContentId, this._actionBarMenuSelector); this._siteManager = new SiteManager(this._siteContentId, this._actionBarMenuSelector);
this._siteManager.defaultActions = this._defaultActions; this._siteManager.defaultActions = this._defaultActions;
@ -3877,6 +3877,7 @@ class SettingsManager {
_loadSettings() { _loadSettings() {
this._settings = localStorage.getItem(this._localStorageKey); this._settings = localStorage.getItem(this._localStorageKey);
console.log("settings", this._settings);
if (this._settings === null) { if (this._settings === null) {
this._settings = {}; this._settings = {};
} }
@ -4256,6 +4257,37 @@ class ListHelper {
} }
} }
class ChooseThemeDialog extends Dialog {
constructor() {
let viewPromise = ViewInflater.inflate("core/html/dialog/chooseTheme.html").then(view => {
let template = view.querySelector("#choose-theme-template");
template.remove();
template.id = null;
let themeTemplateContainer = view.querySelector("#theme-choose-container");
for (let i = 0; i < ThemeManager.themes.length; i++) {
let themeElem = Helper.cloneNode(template);
let theme = ThemeManager.themes[i];
themeElem.querySelector(".name").appendChild(Translator.makePersistentTranslation(theme._name));
themeElem["dataset"]["theme"] = theme._name;
themeElem.addEventListener("click", () => {
this.result = themeElem["dataset"]["theme"];
this.close();
});
themeTemplateContainer.appendChild(themeElem);
}
return view;
});
super(viewPromise, "choose-theme-dialog-title");
}
}
class SettingsSite extends AbstractSite { class SettingsSite extends AbstractSite {
constructor(siteManager) { constructor(siteManager) {
super(siteManager, SettingsSite.template, "settings"); super(siteManager, SettingsSite.template, "settings");
@ -4370,6 +4402,41 @@ InitPromise.addPromise(function (app) {
} }
}); });
class GeneralSettingsFragment extends LocalStorageSettingsFragment {
constructor(site) {
super(site, "core/html/fragment/generalSettingsFragment.html");
}
onFirstStart() {
this.addThemeListener();
return super.onFirstStart();
}
addThemeListener(){
let currentThemeName = ThemeManager$1.currentTheme._name;
SettingsManager.getInstance().setSetting("theme", currentThemeName);
let themeNameElem = this.findBy("#theme-name");
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(currentThemeName));
this.findBy("#theme-chooser").addEventListener("click", async () => {
let newTheme = await (new ChooseThemeDialog()).show();
if (Helper.isNotNull(newTheme)) {
SettingsManager.getInstance().setSetting("theme", newTheme);
ThemeManager$1.changeCurrentTheme(newTheme);
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(newTheme));
}
});
}
}
GeneralSettingsFragment.addFragment = false;
InitPromise.addPromise(function () {
if (GeneralSettingsFragment.addFragment) {
SettingsSite.addSettingsFragment("general-settings-fragment", GeneralSettingsFragment);
}
});
class UserManager { class UserManager {
static init(app) { static init(app) {
UserManager.getMeUrl = null; UserManager.getMeUrl = null;
@ -5310,7 +5377,7 @@ class SoundManager {
}; };
window.addEventListener("visibilitychange", (e) => { window.addEventListener("visibilitychange", (e) => {
console.log("visibility Change event", e); // console.log("visibility Change event", e);
this.handleVisibilityChange(); this.handleVisibilityChange();
}); });
//For safari //For safari
@ -5435,7 +5502,6 @@ class SoundManager {
} }
handleVisibilityChange() { handleVisibilityChange() {
console.log("handling visibillity change...");
if (document.hidden) { if (document.hidden) {
this.stopAll(); this.stopAll();
} }
@ -6879,8 +6945,7 @@ class LevelSite extends WordRotatorBaseSite {
this.level.checkHasWon(); this.level.checkHasWon();
return res; return res;
} }
} } catch (e) {
catch (e) {
console.error(e); console.error(e);
} }
return this.nextLevel(); return this.nextLevel();
@ -6891,11 +6956,11 @@ class LevelSite extends WordRotatorBaseSite {
this.finish(); this.finish();
} }
async nextLevel() { async nextLevel(loadingElement) {
try { loadingElement = Helper.nonNull(loadingElement, Helper.createLoadingSymbol());
this._siteContent.classList.remove('won'); this._siteContent.replaceWith(loadingElement);
this.wonText.style.fontSize = "0";
try {
const db = await WordRotatorDb.getInstance(); const db = await WordRotatorDb.getInstance();
const nextLevelJson = await db.loadNextLevel(LevelSite.RENDERER_TYPES); const nextLevelJson = await db.loadNextLevel(LevelSite.RENDERER_TYPES);
@ -6905,9 +6970,17 @@ class LevelSite extends WordRotatorBaseSite {
return; return;
} }
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer); const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
const self = this;
//Waiting for Level to be done
if (this.level && level.id === this.level.id) {
console.log("Level is the same as before! reload!");
await new Promise((resolve) => setTimeout(resolve, 50));
// return;
return this.nextLevel(loadingElement);
}
level.getWonPromise().then(() => { level.getWonPromise().then(() => {
self.levelWon(level); this.levelWon(level);
}); });
level.createSegments(); level.createSegments();
@ -6917,14 +6990,14 @@ class LevelSite extends WordRotatorBaseSite {
let levelSegment = this.findBy("#level"); let levelSegment = this.findBy("#level");
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement()); levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
this._siteContent.classList.remove('won');
this.wonText.style.fontSize = "0";
loadingElement.replaceWith(this._siteContent);
let scaleHelper = new ScaleHelper(); let scaleHelper = new ScaleHelper();
this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0); this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);
//Waiting for Level to be done
if (level.id === this.level.id){
return new Promise((resolve) => setTimeout(resolve, 50));
}
this.level = level; this.level = level;
this.levelCounterAction.innerText = this.levelCounter; this.levelCounterAction.innerText = this.levelCounter;
this.levelNumberScaler(); this.levelNumberScaler();
@ -6940,8 +7013,8 @@ class LevelSite extends WordRotatorBaseSite {
this.level.checkHasWon(); this.level.checkHasWon();
return this.tutorial(); return this.tutorial();
} } catch (e) {
catch (e) { // loadingElement.replaceWith(this._siteContent);
console.log("Fehler!"); console.log("Fehler!");
console.error(e); console.error(e);
this.startEndSite(); this.startEndSite();
@ -6980,6 +7053,10 @@ class LevelSite extends WordRotatorBaseSite {
const db = await WordRotatorDb.getInstance(); const db = await WordRotatorDb.getInstance();
const savePromise = db.saveLevelPlayed(level.getId()); const savePromise = db.saveLevelPlayed(level.getId());
savePromise.then((r) => console.log("levelSaved!", r)).then(() => {
return db.loadLevel(level.id);
}).then(level => console.log("saved level", level));
this.levelCounter++; this.levelCounter++;
localStorage.setItem("levelCounter", this.levelCounter); localStorage.setItem("levelCounter", this.levelCounter);
@ -7029,8 +7106,7 @@ class LevelSite extends WordRotatorBaseSite {
this.coinAction.redraw(); this.coinAction.redraw();
} }
}, timeout / 2); }, timeout / 2);
} } else {
else {
r(); r();
} }
//Always do the next promise for garbage collection //Always do the next promise for garbage collection
@ -7050,8 +7126,7 @@ class LevelSite extends WordRotatorBaseSite {
Matomo.push(["trackEvent", "LevelSite", "LevelWon", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "LevelWon", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
await savePromise; await savePromise;
} } catch (e) {
catch (e) {
console.error(e); console.error(e);
} }
} }
@ -7081,8 +7156,7 @@ class LevelSite extends WordRotatorBaseSite {
this.level.saveAsCurrentLevel(); this.level.saveAsCurrentLevel();
Matomo.push(["trackEvent", "LevelSite", "Help", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "Help", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
} } else {
else {
FlashMessenger.addMessage("not-enough-coins"); FlashMessenger.addMessage("not-enough-coins");
Matomo.push(["trackEvent", "LevelSite", "Help", "Not enough Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "Help", "Not enough Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
} }
@ -7138,8 +7212,7 @@ class LevelSite extends WordRotatorBaseSite {
this._siteContent.classList.remove("tutorial"); this._siteContent.classList.remove("tutorial");
} }
} }
} } else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {
else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {
let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "3"); let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "3");
switch (currentStep) { switch (currentStep) {
@ -7168,8 +7241,7 @@ class LevelSite extends WordRotatorBaseSite {
this._siteContent.classList.remove("tutorial"); this._siteContent.classList.remove("tutorial");
} }
} }
} } else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {
else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {
let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "4"); let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "4");
switch (currentStep) { switch (currentStep) {
@ -7519,7 +7591,7 @@ InitPromise.addPromise(app => {
app.addDeepLink("credits", CreditsSite); app.addDeepLink("credits", CreditsSite);
}); });
class ChooseThemeDialog extends Dialog { class ChooseThemeDialog$1 extends Dialog {
constructor() { constructor() {
let viewPromise = ViewInflater.inflate("html/application/dialog/chooseTheme.html").then(view => { let viewPromise = ViewInflater.inflate("html/application/dialog/chooseTheme.html").then(view => {
@ -7530,9 +7602,9 @@ class ChooseThemeDialog extends Dialog {
let themeTemplateContainer = view.querySelector("#theme-choose-container"); let themeTemplateContainer = view.querySelector("#theme-choose-container");
for (let i = 0; i < ThemeManager.themes.length; i++) { for (let i = 0; i < ThemeManager$1.themes.length; i++) {
let themeElem = Helper.cloneNode(template); let themeElem = Helper.cloneNode(template);
let theme = ThemeManager.themes[i]; let theme = ThemeManager$1.themes[i];
themeElem.querySelector(".name").appendChild(Translator.makePersistentTranslation(theme._name)); themeElem.querySelector(".name").appendChild(Translator.makePersistentTranslation(theme._name));
themeElem["dataset"]["theme"] = theme._name; themeElem["dataset"]["theme"] = theme._name;
@ -7572,16 +7644,16 @@ class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
} }
onFirstStart() { onFirstStart() {
let currentThemeName = ThemeManager.currentTheme._name; let currentThemeName = ThemeManager$1.currentTheme._name;
SettingsManager.getInstance().setSetting("theme", currentThemeName); SettingsManager.getInstance().setSetting("theme", currentThemeName);
let themeNameElem = this.findBy("#theme-name"); let themeNameElem = this.findBy("#theme-name");
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(currentThemeName)); themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(currentThemeName));
this.findBy("#theme-chooser").addEventListener("click", async () => { this.findBy("#theme-chooser").addEventListener("click", async () => {
let newTheme = await (new ChooseThemeDialog()).show(); let newTheme = await (new ChooseThemeDialog$1()).show();
if (Helper.isNotNull(newTheme)) { if (Helper.isNotNull(newTheme)) {
SettingsManager.getInstance().setSetting("theme", newTheme); SettingsManager.getInstance().setSetting("theme", newTheme);
ThemeManager.changeCurrentTheme(newTheme); ThemeManager$1.changeCurrentTheme(newTheme);
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(newTheme)); themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(newTheme));
} }
}); });
@ -7855,12 +7927,12 @@ window.onerror = (e, u, l) => {
applyPolyfills(); applyPolyfills();
ThemeManager.addTheme(new Theme('red', 'red')); ThemeManager$1.addTheme(new Theme('red', 'red'));
ThemeManager.addTheme(new Theme("blue", "blue")); ThemeManager$1.addTheme(new Theme("blue", "blue"));
ThemeManager.addTheme(new Theme("black", "black")); ThemeManager$1.addTheme(new Theme("black", "black"));
ThemeManager.addTheme(new Theme("green", "green")); ThemeManager$1.addTheme(new Theme("green", "green"));
ThemeManager.addTheme(new Theme("pink", "pink")); ThemeManager$1.addTheme(new Theme("pink", "pink"));
ThemeManager.addTheme(new Theme("dark", "dark")); ThemeManager$1.addTheme(new Theme("dark", "dark"));
ShareManager.addShareButton(new MatomoShareButton(new WhatsappShareButton('img/whatsapp.svg'), "whatsapp", true)); ShareManager.addShareButton(new MatomoShareButton(new WhatsappShareButton('img/whatsapp.svg'), "whatsapp", true));
ShareManager.addShareButton(new MatomoShareButton(new SmsShareButton('img/sms.svg'), "sms", true)); ShareManager.addShareButton(new MatomoShareButton(new SmsShareButton('img/sms.svg'), "sms", true));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -457,7 +457,7 @@ class SoundManager {
}; };
window.addEventListener("visibilitychange", (e) => { window.addEventListener("visibilitychange", (e) => {
console.log("visibility Change event", e); // console.log("visibility Change event", e);
this.handleVisibilityChange(); this.handleVisibilityChange();
}); });
//For safari //For safari
@ -582,7 +582,6 @@ class SoundManager {
} }
handleVisibilityChange() { handleVisibilityChange() {
console.log("handling visibillity change...");
if (document.hidden) { if (document.hidden) {
this.stopAll(); this.stopAll();
} }

View File

@ -1,4 +1,4 @@
import { MenuAction, Helper, Dialog, Translator, Fragment, AbstractSite, InitPromise } from './pwa-lib.js'; import { MenuAction, Helper, Dialog, Translator, Fragment, ViewInflater, AbstractSite, InitPromise, ThemeManager as ThemeManager$1 } from './pwa-lib.js';
class ConditionAction extends MenuAction class ConditionAction extends MenuAction
{ {
@ -343,6 +343,7 @@ class SettingsManager {
_loadSettings() { _loadSettings() {
this._settings = localStorage.getItem(this._localStorageKey); this._settings = localStorage.getItem(this._localStorageKey);
console.log("settings", this._settings);
if (this._settings === null) { if (this._settings === null) {
this._settings = {}; this._settings = {};
} }
@ -775,6 +776,37 @@ class ListHelper {
} }
} }
class ChooseThemeDialog extends Dialog {
constructor() {
let viewPromise = ViewInflater.inflate("core/html/dialog/chooseTheme.html").then(view => {
let template = view.querySelector("#choose-theme-template");
template.remove();
template.id = null;
let themeTemplateContainer = view.querySelector("#theme-choose-container");
for (let i = 0; i < ThemeManager.themes.length; i++) {
let themeElem = Helper.cloneNode(template);
let theme = ThemeManager.themes[i];
themeElem.querySelector(".name").appendChild(Translator.makePersistentTranslation(theme._name));
themeElem["dataset"]["theme"] = theme._name;
themeElem.addEventListener("click", () => {
this.result = themeElem["dataset"]["theme"];
this.close();
});
themeTemplateContainer.appendChild(themeElem);
}
return view;
});
super(viewPromise, "choose-theme-dialog-title");
}
}
class SettingsSite extends AbstractSite { class SettingsSite extends AbstractSite {
constructor(siteManager) { constructor(siteManager) {
super(siteManager, SettingsSite.template, "settings"); super(siteManager, SettingsSite.template, "settings");
@ -889,4 +921,39 @@ InitPromise.addPromise(function (app) {
} }
}); });
export { ConditionAction, Constants, DataManager, Form, LocalStorageSettingsFragment, SettingsManager, AliasImgSmartColumn, ConstSmartColumn, DataSmartColumn, ImgConstSmartColumn, ImgSmartColumn, ListHelper, SmartColumn, SettingsSite }; class GeneralSettingsFragment extends LocalStorageSettingsFragment {
constructor(site) {
super(site, "core/html/fragment/generalSettingsFragment.html");
}
onFirstStart() {
this.addThemeListener();
return super.onFirstStart();
}
addThemeListener(){
let currentThemeName = ThemeManager$1.currentTheme._name;
SettingsManager.getInstance().setSetting("theme", currentThemeName);
let themeNameElem = this.findBy("#theme-name");
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(currentThemeName));
this.findBy("#theme-chooser").addEventListener("click", async () => {
let newTheme = await (new ChooseThemeDialog()).show();
if (Helper.isNotNull(newTheme)) {
SettingsManager.getInstance().setSetting("theme", newTheme);
ThemeManager$1.changeCurrentTheme(newTheme);
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(newTheme));
}
});
}
}
GeneralSettingsFragment.addFragment = false;
InitPromise.addPromise(function () {
if (GeneralSettingsFragment.addFragment) {
SettingsSite.addSettingsFragment("general-settings-fragment", GeneralSettingsFragment);
}
});
export { ConditionAction, Constants, DataManager, Form, LocalStorageSettingsFragment, SettingsManager, AliasImgSmartColumn, ConstSmartColumn, DataSmartColumn, ImgConstSmartColumn, ImgSmartColumn, ListHelper, SmartColumn, ChooseThemeDialog, GeneralSettingsFragment, SettingsSite };

View File

@ -140,8 +140,7 @@ export class LevelSite extends WordRotatorBaseSite {
this.level.checkHasWon(); this.level.checkHasWon();
return res; return res;
} }
} } catch (e) {
catch (e) {
console.error(e); console.error(e);
} }
return this.nextLevel(); return this.nextLevel();
@ -152,11 +151,11 @@ export class LevelSite extends WordRotatorBaseSite {
this.finish(); this.finish();
} }
async nextLevel() { async nextLevel(loadingElement) {
try { loadingElement = Helper.nonNull(loadingElement, Helper.createLoadingSymbol());
this._siteContent.classList.remove('won'); this._siteContent.replaceWith(loadingElement);
this.wonText.style.fontSize = "0";
try {
const db = await WordRotatorDb.getInstance(); const db = await WordRotatorDb.getInstance();
const nextLevelJson = await db.loadNextLevel(LevelSite.RENDERER_TYPES); const nextLevelJson = await db.loadNextLevel(LevelSite.RENDERER_TYPES);
@ -166,9 +165,17 @@ export class LevelSite extends WordRotatorBaseSite {
return; return;
} }
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer); const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
const self = this;
//Waiting for Level to be done
if (this.level && level.id === this.level.id) {
console.log("Level is the same as before! reload!");
await new Promise((resolve) => setTimeout(resolve, 50));
// return;
return this.nextLevel(loadingElement);
}
level.getWonPromise().then(() => { level.getWonPromise().then(() => {
self.levelWon(level); this.levelWon(level);
}); });
level.createSegments(); level.createSegments();
@ -178,14 +185,14 @@ export class LevelSite extends WordRotatorBaseSite {
let levelSegment = this.findBy("#level"); let levelSegment = this.findBy("#level");
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement()); levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
this._siteContent.classList.remove('won');
this.wonText.style.fontSize = "0";
loadingElement.replaceWith(this._siteContent);
let scaleHelper = new ScaleHelper(); let scaleHelper = new ScaleHelper();
this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0); this.levelScaler = await scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 1, level.words[0].length * 1.5, null, 0);
//Waiting for Level to be done
if (level.id === this.level.id){
return new Promise((resolve) => setTimeout(resolve, 50));
}
this.level = level; this.level = level;
this.levelCounterAction.innerText = this.levelCounter; this.levelCounterAction.innerText = this.levelCounter;
this.levelNumberScaler(); this.levelNumberScaler();
@ -201,8 +208,8 @@ export class LevelSite extends WordRotatorBaseSite {
this.level.checkHasWon(); this.level.checkHasWon();
return this.tutorial(); return this.tutorial();
} } catch (e) {
catch (e) { // loadingElement.replaceWith(this._siteContent);
console.log("Fehler!"); console.log("Fehler!");
console.error(e); console.error(e);
this.startEndSite(); this.startEndSite();
@ -241,6 +248,10 @@ export class LevelSite extends WordRotatorBaseSite {
const db = await WordRotatorDb.getInstance(); const db = await WordRotatorDb.getInstance();
const savePromise = db.saveLevelPlayed(level.getId()); const savePromise = db.saveLevelPlayed(level.getId());
savePromise.then((r) => console.log("levelSaved!", r)).then(() => {
return db.loadLevel(level.id);
}).then(level => console.log("saved level", level));
this.levelCounter++; this.levelCounter++;
localStorage.setItem("levelCounter", this.levelCounter); localStorage.setItem("levelCounter", this.levelCounter);
@ -290,8 +301,7 @@ export class LevelSite extends WordRotatorBaseSite {
this.coinAction.redraw(); this.coinAction.redraw();
} }
}, timeout / 2); }, timeout / 2);
} } else {
else {
r(); r();
} }
//Always do the next promise for garbage collection //Always do the next promise for garbage collection
@ -311,8 +321,7 @@ export class LevelSite extends WordRotatorBaseSite {
Matomo.push(["trackEvent", "LevelSite", "LevelWon", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "LevelWon", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
await savePromise; await savePromise;
} } catch (e) {
catch (e) {
console.error(e); console.error(e);
} }
} }
@ -342,8 +351,7 @@ export class LevelSite extends WordRotatorBaseSite {
this.level.saveAsCurrentLevel(); this.level.saveAsCurrentLevel();
Matomo.push(["trackEvent", "LevelSite", "Help", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "Help", "Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
} } else {
else {
FlashMessenger.addMessage("not-enough-coins"); FlashMessenger.addMessage("not-enough-coins");
Matomo.push(["trackEvent", "LevelSite", "Help", "Not enough Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]); Matomo.push(["trackEvent", "LevelSite", "Help", "Not enough Coins", parseInt(Helper.nonNull(localStorage.getItem("coins"), "0"))]);
} }
@ -399,8 +407,7 @@ export class LevelSite extends WordRotatorBaseSite {
this._siteContent.classList.remove("tutorial"); this._siteContent.classList.remove("tutorial");
} }
} }
} } else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {
else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {
let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "3"); let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "3");
switch (currentStep) { switch (currentStep) {
@ -429,8 +436,7 @@ export class LevelSite extends WordRotatorBaseSite {
this._siteContent.classList.remove("tutorial"); this._siteContent.classList.remove("tutorial");
} }
} }
} } else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {
else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {
let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "4"); let currentStep = Helper.nonNull(localStorage.getItem("tutorial-step"), "4");
switch (currentStep) { switch (currentStep) {