update für die Vorlesung

This commit is contained in:
silas
2018-10-22 23:07:57 +02:00
parent 50526bc1ca
commit cd2105a747
16 changed files with 663 additions and 112 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
<div class="max-height flex-center"><div id=segment-leaf-template class="segment segment-leaf"><div class=leaf-element></div></div><div id=segment-parent-template class="segment segment-parent"><div class=child-container></div></div><div id=segment-row-template class="segment segment-row"><div class=child-container></div></div><div id=segment-triangle-template class="segment segment-triangle"><div class=child-container></div></div><div class="height-60 max-width flex-center"><div id=level></div><span id=level-number-container class="visible in-main-menu"><span id=level-number>1</span></span></div><div class="height-30 flex-center fill-me"><button class="button grow text-center" id=play-button><span data-translation=play></span></button><div class="max-width line-height-1 fill-me vertical"><label class=switch><div data-view=img/speaker.svg></div><input type=checkbox class=setting id=play-sound> <span class=slider></span></label><div class="grow center" id=share-button><span data-view=img/share.svg></span></div><label class="switch right"><div data-view=img/music.svg></div><input type=checkbox class=setting id=play-music> <span class=slider></span></label></div></div></div>
<div class="max-height flex-center"><div id=segment-leaf-template class="segment segment-leaf"><div class=leaf-element></div></div><div id=segment-parent-template class="segment segment-parent"><div class=child-container></div></div><div id=segment-row-template class="segment segment-row"><div class=child-container></div></div><div id=segment-triangle-template class="segment segment-triangle"><div class=child-container></div></div><div class="height-60 max-width flex-center relative"><div id=level></div><span id=level-number-container class="visible in-main-menu"><span id=level-number>1</span></span></div><div class="height-30 flex-center fill-me"><button class="button grow text-center" id=play-button><span data-translation=play></span></button><div class="max-width line-height-1 fill-me vertical"><label class=switch><div data-view=img/speaker.svg></div><input type=checkbox class=setting id=play-sound> <span class=slider></span></label><div class="grow center" id=share-button><span data-view=img/share.svg></span></div><label class="switch right"><div data-view=img/music.svg></div><input type=checkbox class=setting id=play-music> <span class=slider></span></label></div></div></div>

View File

@@ -1,3 +1,65 @@
class InitPromise
{
static addPromise(promise)
{
if (typeof promise === 'function')
{
let func = promise;
promise = InitPromise.mainPromise.then(function(app){
return (func(app));
});
}
InitPromise.promises.push(promise);
}
static resolve(app)
{
InitPromise.mainResolver(app);
return InitPromise.mainPromise.then(function(){
return Promise.all(InitPromise.promises);
});
}
}
InitPromise.promises = [];
InitPromise.mainPromise = new Promise(function(resolver){
InitPromise.mainResolver = resolver;
});
class AndroidBridge {
static addDefinition(definition, object) {
if (typeof definition !== "function") {
if (typeof definition === "string"){
let parts = definition.split(".");
for (let i = parts.length-1; i >= 1; i--) {
let newObject = {};
newObject[parts[i]] = object;
object = newObject;
}
definition = parts[0];
console.log("parts for", definition, parts, object);
}
let textDefinition = definition;
definition = () => {
console.log("defining", textDefinition, object);
window[textDefinition] = object;
};
}
AndroidBridge.definitions.push(definition);
}
static applyDefinitions() {
for (let i = 0; i < AndroidBridge.definitions.length; i++) {
AndroidBridge.definitions[i]();
}
return Promise.resolve();
}
}
AndroidBridge.definitions = [];
AndroidBridge.addDefinition("InitPromise.addPromise", InitPromise.addPromise);
class MenuAction {
constructor(title, callback, showFor, order) {
this.title = Helper.nonNull(title, null);
@@ -840,6 +902,9 @@ Translator.languageBasePath = "js/lang/";
Translator.currentLanguage = null;
Translator.translations = {};
AndroidBridge.addDefinition("Translator.setLanguage", Translator.setLanguage);
class Helper {
static init() {
Helper.heightMmToPxFactor = null;
@@ -1367,11 +1432,21 @@ class ThemeManager {
static addChangeListener(listener) {
ThemeManager.changeListeners.push(listener);
}
static getCurrentTheme(){
return ThemeManager.currentTheme;
}
}
ThemeManager.currentTheme = null;
ThemeManager.themes = [];
ThemeManager.changeListeners = [];
AndroidBridge.addDefinition("ThemeManager", {
"addChangeListener": ThemeManager.addChangeListener,
"getCurrentTheme": ThemeManager.getCurrentTheme,
});
class CookieCompliance {
static async showIfNeeded(cookieContainer) {
@@ -2626,33 +2701,6 @@ FlashMessenger.MESSAGE_TYPE_DEFAULT = 'default';
FlashMessenger.MESSAGE_TYPE_INFO = 'info';
FlashMessenger.MESSAGE_TYPE_WARNING = 'warning';
class InitPromise
{
static addPromise(promise)
{
if (typeof promise === 'function')
{
let func = promise;
promise = InitPromise.mainPromise.then(function(app){
return (func(app));
});
}
InitPromise.promises.push(promise);
}
static resolve(app)
{
InitPromise.mainResolver(app);
return InitPromise.mainPromise.then(function(){
return Promise.all(InitPromise.promises);
});
}
}
InitPromise.promises = [];
InitPromise.mainPromise = new Promise(function(resolver){
InitPromise.mainResolver = resolver;
});
class MyDb {
constructor(dbName, version) {
let indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;
@@ -2987,6 +3035,12 @@ ShareButton.TYPE_MOBILE_LEFTOVER = 4;
ShareButton.TYPE_MOBILE = ShareButton.TYPE_MOBILE_APPLE+ShareButton.TYPE_MOBILE_LEFTOVER;
ShareButton.TYPE_ALL = ShareButton.TYPE_DESKTOP+ShareButton.TYPE_MOBILE;
AndroidBridge.addDefinition(() => {
window["ShareButton"] = ShareButton;
window["ShareButton"]["TYPE_ALL"] = ShareButton.TYPE_ALL;
});
class MultipleShareButton extends ShareButton{
constructor(deviceType, icon, callbacks, shouldLoadImg)
{
@@ -3087,6 +3141,8 @@ class ShareManager {
ShareManager.init();
AndroidBridge.addDefinition("ShareManager.addShareButton", ShareManager.addShareButton);
class SmsShareButton extends ShareButton
{
constructor(icon, shouldLoadImg) {
@@ -4888,6 +4944,8 @@ class MatomoShareButton extends MultipleShareButton{
}
}
AndroidBridge.addDefinition("MatomoShareButton", MatomoShareButton);
class ScaleHelper {
async scaleTo(scale, fontElement, container, ignoreHeight, ignoreWidth, margin, fontWeight, animationDelay, addListener) {
@@ -5420,14 +5478,16 @@ class ParentSegment extends Segment {
let self = this;
this.touchendListener = function (e) {
let target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
if (e.targetTouches.length === 0 && e.changedTouches.length === 1 && self.element.contains(ParentSegment.mouseDownTarget) && self.element.contains(target)) {
let position = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY};
if (e.changedTouches.length >= 1) {
let target = document.elementFromPoint(e.changedTouches[0].pageX, e.changedTouches[0].pageY);
if (e.targetTouches.length === 0 && e.changedTouches.length === 1 && self.element.contains(ParentSegment.mouseDownTarget) && self.element.contains(target)) {
let position = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY};
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);
e.stopPropagation();
e.preventDefault();
self.getLevel().segmentClickedListener(self);
self.rotate(ParentSegment.mouseDownTarget, target, ParentSegment.clickPosition, position);
e.stopPropagation();
e.preventDefault();
}
}
};
this.mouseupListener = function (e) {
@@ -7071,13 +7131,14 @@ InitPromise.addPromise(function () {
class SelectWordsSite extends UserSite{
constructor(siteManager) {
super(siteManager, "version/1/html/selectWords.html", null, "admin");
super(siteManager, "version/2/html/selectWords.html", null, "select-words");
}
async onConstruct(args) {
let res = await super.onConstruct(args);
this.stats = (await DataManager.load("words"))["result"];
this.words = this.stats["wordsToCheck"];
console.log(this.stats);
return res;
}
@@ -7087,6 +7148,7 @@ class SelectWordsSite extends UserSite{
this.findBy("#checked").appendChild(document.createTextNode(this.stats["wordsChecked"]));
this.findBy("#not-sure").appendChild(document.createTextNode(this.stats["wordsUnsure"]));
this.findBy("#deleted").appendChild(document.createTextNode(this.stats["wordsDeleted"]));
this.findBy("#unused").appendChild(document.createTextNode(this.stats["wordsNotUsed"]));
let template = this.findBy("#word-template");
template.id = null;
@@ -7128,7 +7190,6 @@ class SelectWordsSite extends UserSite{
}
setWord(wordElement, word){
console.log(wordElement, word);
wordElement.querySelector(".word").removeAllChildren().appendChild(document.createTextNode(word["word"]));
wordElement.dataset["id"] = word["id"];
}
@@ -7137,12 +7198,12 @@ class SelectWordsSite extends UserSite{
InitPromise.addPromise(app => {
app.addDefaultAction(new UserAction("select-words", () => {
app.startSite(SelectWordsSite);
}, null, null, "admin"));
}, null, null, "select-words"));
});
class DeleteWordsSite extends UserSite {
constructor(siteManager) {
super(siteManager, "version/1/html/deleteLevels.html", null, "admin");
super(siteManager, "version/2/html/deleteLevels.html", null, "admin");
}
async onConstruct(args) {
@@ -7223,17 +7284,17 @@ ShareManager.addShareButton(new MatomoShareButton(new TelegramShareButton('img/t
// ShareManager.addShareButton(new CopyShareButton('img/copy.svg'));
let app = new App();
// app.addDeepLink("policy", PrivatePolicySite.name);
AndroidBridge.addDefinition(() => {
window["app"] = app;
window["app"]["pause"] = app.pause;
window["app"]["resume"] = app.resume;
// window["app"]["refreshCurrentSite"] = app.refreshCurrentSite;
});
// bridge für Android
// window["ThemeManager"] = ThemeManager;
// window["ThemeManager"]["addChangeListener"] = ThemeManager.addChangeListener;
// window["app"] = app;
// window["app"]["refreshCurrentSite"] = app.refreshCurrentSite;
// window["Translator"] = Translator;
// window["Translator"]["setLanguage"] = Translator.setLanguage;
// window["InitPromise"] = InitPromise;
// window["InitPromise"]["addPromise"] = InitPromise.addPromise;
SettingsSite.setTemplate("html/application/setting-template.html");
@@ -7256,4 +7317,6 @@ InitPromise.resolve(app).then(async function(){
InstallManager.setCanInstallListener(e => {
console.log("can install!", e);
});
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
});

File diff suppressed because one or more lines are too long