ü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

@@ -1,4 +1,4 @@
import { Helper, Fragment, Translator } from './pwa-lib.js';
import { Helper, InitPromise, Fragment, Translator } from './pwa-lib.js';
class DelayPromise extends Promise {
static async delay(delay) {
@@ -8,6 +8,88 @@ class DelayPromise extends Promise {
}
}
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 RotateHelper {
rotate(element, degrees){
let rotateText = element.innerText;
@@ -271,4 +353,4 @@ class TabbedFragment extends Fragment {
}
}
export { DelayPromise, RotateHelper, ScaleHelper, SoundManager, TabbedFragment };
export { DelayPromise, Matomo, RotateHelper, ScaleHelper, SoundManager, TabbedFragment };

View File

@@ -355,16 +355,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"])) {
@@ -387,19 +393,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"];