Bugfixes
This commit is contained in:
parent
bdd8d19af1
commit
f03ed8c3c2
2
.idea/watcherTasks.xml
generated
2
.idea/watcherTasks.xml
generated
@ -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" />
|
||||||
|
|||||||
206
public/js/app.js
206
public/js/app.js
@ -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
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 };
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user