übertrag zum PC

This commit is contained in:
silas
2018-09-30 16:11:06 +02:00
parent ad1064ffd3
commit ac32aa83dd
32 changed files with 830 additions and 205 deletions

View File

@@ -3672,16 +3672,22 @@ class LocalStorageSettingsFragment extends Fragment {
let settings = this.findBy(".setting", true);
const settingsManager = SettingsManager.getInstance();
for (let i = 0; i < settings.length; i++) {
for (let i = 0; i < settings.length; i++) {
let setting = settings[i];
const name = setting.name;
let value = settingsManager.getSetting(name);
let value;
if (!setting["dataset"]["raw"]) {
value = settingsManager.getSetting(name);
} else {
value = localStorage.getItem(name);
}
let isCheckable = false;
if (setting instanceof HTMLInputElement && (setting.type === 'checkbox' || setting.type === 'radio')) {
isCheckable = true;
}
if (!settingsManager.hasSetting(name) && Helper.isNotNull(settings[i]["dataset"]["default"])) {
if (((!setting["dataset"]["raw"] && !settingsManager.hasSetting(name)) || (setting["dataset"]["raw"] && value === null))
&& Helper.isNotNull(settings[i]["dataset"]["default"])) {
value = setting["dataset"]["default"];
if (Helper.isNotNull(setting["dataset"]["defaultTranslateable"])) {
@@ -3704,19 +3710,15 @@ class LocalStorageSettingsFragment extends Fragment {
}
setting.addEventListener("change", function () {
// console.log(setting);
let value = this.value;
if (isCheckable) {
if (this.checked)
{
settingsManager.setSetting(name, value);
}
else
{
settingsManager.setSetting(name, null);
}
if (isCheckable && !this.checked) {
value = null;
}
else {
if (!setting["dataset"]["raw"]) {
settingsManager.setSetting(name, value);
} else {
localStorage.setItem(name, value);
}
delete setting["dataset"]["translationValue"];
delete setting["dataset"]["translation"];
@@ -4599,6 +4601,88 @@ InitPromise.addPromise(function(app){
app.addDeepLink("newPassword", SetNewPasswordSite);
});
class Matomo {
static init() {
Matomo.isTrackingPromise = new Promise(async (resolve) => {
let shouldTrack = localStorage.getItem(Matomo.LOCAL_STORAGE_KEY);
console.log(shouldTrack,Helper.isNull(shouldTrack));
if (Helper.isNull(shouldTrack)) {
shouldTrack = await Matomo._askIsTracking();
localStorage.setItem(Matomo.LOCAL_STORAGE_KEY, shouldTrack);
}
else {
console.log(shouldTrack, (shouldTrack === "1"));
shouldTrack = (shouldTrack === "1");
Matomo.setTrack(shouldTrack);
}
resolve(shouldTrack);
});
Matomo.isTrackingPromise.then(() => {
Matomo.push(['trackPageView']);
Matomo.push(['enableLinkTracking']);
Matomo.push(['setTrackerUrl', Matomo.TRACK_SITE + '/piwik.php']);
Matomo.push(['setSiteId', '1']);
let d = document, g = d.createElement('script'), s = d.getElementsByTagName('head')[0];
g.type = 'text/javascript';
g.async = true;
g.defer = true;
g.src = Matomo.TRACK_SITE + '/piwik.js';
s.appendChild(g);
});
}
static async _askIsTracking() {
console.log(Matomo.TRACK_SITE + Matomo.BASE_PATH + "isTracked");
Matomo.isTrackingPromise = Matomo.query("isTracked")
.then(xml => {
let textContent = xml.firstChild.textContent;
// localStorage.setItem(Matomo.LOCAL_STORAGE_KEY, textContent);
return (textContent === "1")
});
return Matomo.isTrackingPromise;
}
static async query(method) {
return fetch(Matomo.TRACK_SITE + Matomo.BASE_PATH + method, {
// "method":"POST",
"mode": "cors",
"credentials": "include",
// "headers": {
// 'Access-Control-Allow-Origin': '*',
// 'Access-Control-Allow-Credentials': 'true',
// },
}).then(res => res.text()).then(text => (new window.DOMParser()).parseFromString(text, "text/xml"));
}
static getTrackingPromise() {
return Matomo.isTrackingPromise;
}
static async setTrack(shouldTrack) {
Matomo.isTrackingPromise = Promise.resolve(shouldTrack);
localStorage.setItem(Matomo.LOCAL_STORAGE_KEY, (shouldTrack === true) ? "1" : "0");
return await Matomo.query((shouldTrack) ? "doTrack" : "doIgnore");
}
static async push(arr) {
if (await Matomo.getTrackingPromise()) {
window["_paq"].push(arr);
}
}
}
Matomo.LOCAL_STORAGE_KEY = "matomoShouldTrack";
Matomo.TRACK_SITE = "//matomo.silas.link";
Matomo.BASE_PATH = "/index.php?module=API&method=AjaxOptOut.";
InitPromise.addPromise(() => {
window["_paq"] = window["_paq"] || [];
Matomo.init();
});
class ScaleHelper {
async scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, addListener) {
@@ -5899,7 +5983,7 @@ class LevelSite extends WordRotatorBaseSite {
let levelSegment = this.findBy("#level");
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
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);
this.level = level;
return this.tutorial();
@@ -6003,14 +6087,9 @@ class LevelSite extends WordRotatorBaseSite {
}).then(() => {
return Promise.all([new Promise((r) => {
setTimeout(() => {
console.log("fadeIn");
r(continueButton.fadeIn().then(() => {
console.log("fade in ended!");
}));
r(continueButton.fadeIn());
}, 500);
}), audioOptions.loadedPromise.then(() => {
console.log("audio loaded");
}).catch(e => {
}), audioOptions.loadedPromise.catch(e => {
console.error(e);
})]);
});
@@ -6406,34 +6485,98 @@ InitPromise.addPromise(app => {
MenuSite.app = app;
});
class PrivacyPolicySite extends WordRotatorBaseSite {
constructor(siteManager) {
super(siteManager, "html/application/privacyPolicy.html", "privacyPolicy");
}
}
InitPromise.addPromise(app => {
app.addDeepLink("privacyPolicy", PrivacyPolicySite);
});
class CreditsSite extends WordRotatorBaseSite{
constructor(siteManager) {
super(siteManager, "html/application/credits.html", "credits");
}
}
InitPromise.addPromise(app => {
app.addDeepLink("credits", PrivacyPolicySite);
});
class ChooseThemeDialog extends Dialog {
constructor() {
let viewPromise = ViewInflater.inflate("html/application/dialog/chooseTheme.html").then(view => {
let template = view.querySelector("#choose-theme-template");
template.remove();
template.id = null;
let themeTemplateContainer = template.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 WordRotatorSettingFragment extends LocalStorageSettingsFragment {
constructor(site) {
super(site, "html/application/fragment/settings.html");
}
onFirstStart() {
let themeTemplate = this.findBy("#theme-radio-template");
delete themeTemplate["id"];
let themeTemplateContainer = themeTemplate.parentNode;
themeTemplateContainer.removeAllChildren();
// let themeTemplate = this.findBy("#theme-radio-template");
// delete themeTemplate["id"];
// let themeTemplateContainer = themeTemplate.parentNode;
// themeTemplateContainer.removeAllChildren();
//
// for (let i = 0; i < ThemeManager.themes.length; i++) {
// let themeElem = Helper.cloneNode(themeTemplate);
// let theme = ThemeManager.themes[i];
// themeElem.appendChild(Translator.makePersistentTranslation(theme._name));
//
// let inputElem = themeElem.querySelector("input");
// inputElem.value = theme._className;
//
// inputElem.addEventListener("change", function() {
// if (this.checked){
// ThemeManager.changeCurrentTheme(theme)
// }
// });
// themeTemplateContainer.appendChild(themeElem);
// }
for (let i = 0; i < ThemeManager.themes.length; i++) {
let themeElem = Helper.cloneNode(themeTemplate);
let theme = ThemeManager.themes[i];
themeElem.appendChild(Translator.makePersistentTranslation(theme._name));
let currentThemeName = ThemeManager.currentTheme._name;
SettingsManager.getInstance().setSetting("theme", currentThemeName);
let inputElem = themeElem.querySelector("input");
inputElem.value = theme._className;
let themeNameElem = this.findBy("#theme-name");
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(currentThemeName));
this.findBy("#theme-chooser").addEventListener("click", async () => {
console.log("clicked");
let newTheme = (new ChooseThemeDialog()).show();
if (Helper.isNotNull(newTheme)){
SettingsManager.getInstance().setSetting("theme", newTheme);
ThemeManager.changeCurrentTheme(newTheme);
themeNameElem.removeAllChildren().appendChild(Translator.makePersistentTranslation(newTheme));
}
});
inputElem.addEventListener("change", function() {
if (this.checked){
ThemeManager.changeCurrentTheme(theme);
}
});
themeTemplateContainer.appendChild(themeElem);
}
SettingsManager.getInstance().setSetting("theme", ThemeManager.currentTheme._name);
this.findBy("#reset-levels").addEventListener("click", () => {
localStorage.removeItem("currentLevel");
@@ -6443,6 +6586,28 @@ class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
WordRotatorDb.getInstance().removeAll(WordRotatorDb.OBJECT_STORE.LEVEL);
});
let playMusicButton = this.findBy("#play-music");
playMusicButton.addEventListener("change", () => {
let soundManager = SoundManager.getInstance();
soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC);
if (playMusicButton.checked){
soundManager.play(SoundManager.CHANNELS.MUSIC);
}
});
this.findBy("#track-switch").addEventListener("change", function(e) {
Matomo.setTrack(this.checked === true);
e.stopPropagation();
e.preventDefault();
});
this.findBy("#credits-button").addEventListener("click", () => {
this.getSite().startSite(CreditsSite);
});
this.findBy("#privacy-policy-button").addEventListener("click", () => {
this.getSite().startSite(PrivacyPolicySite);
});
return super.onFirstStart();
}
}
@@ -6452,7 +6617,7 @@ InitPromise.addPromise(function () {
});
let basePath = "/pwa/wordRotator/public/";
if (window.location.pathname.endsWith("publicTest/"))
if (window.location.pathname.includes("publicTest/"))
{
basePath = "/pwa/wordRotator/publicTest/";
}
@@ -6477,8 +6642,6 @@ ShareManager.addShareButton(new TelegramShareButton('img/telegram.svg'));
let app = new App();
// app.addDeepLink("policy", PrivatePolicySite.name);
// app.setAddThemeAction(true);
// app.addDefaultAction(Translator.generateChangeLanguageMenuAction());
// bridge für Android
window["ThemeManager"] = ThemeManager;
@@ -6494,7 +6657,7 @@ SettingsSite.setTemplate("html/application/setting-template.html");
RegistrationSite.addAction = false;
LoginSite.addLoginAction = false;
InitPromise.resolve(app).then(function(){
InitPromise.resolve(app).then(async function(){
SettingsSite.settingsAction.showFor = MenuAction.SHOW_ALWAYS;
let settingsManager = SettingsManager.getInstance();
@@ -6504,4 +6667,7 @@ InitPromise.resolve(app).then(function(){
app.start(MenuSite);
Translator.setLanguage("de");
// let matomo = new Matomo();
// console.log(await matomo._askIsTracking());
});

File diff suppressed because one or more lines are too long