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

View File

@@ -1,4 +1,5 @@
import {
AndroidBridge,
App, applyPolyfills,
InitPromise, MenuAction,
ShareManager,
@@ -46,17 +47,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");
@@ -79,4 +80,6 @@ InitPromise.resolve(app).then(async function(){
InstallManager.setCanInstallListener(e => {
console.log("can install!", e);
});
window["applyAndroidBridge"] = AndroidBridge.applyDefinitions;
});

View File

@@ -1,4 +1,4 @@
import { Helper, InitPromise, MultipleShareButton, Fragment, Translator } from './pwa-lib.js';
import { Helper, InitPromise, MultipleShareButton, AndroidBridge, Fragment, Translator } from './pwa-lib.js';
class DelayPromise extends Promise {
static async delay(delay) {
@@ -174,6 +174,8 @@ class MatomoShareButton extends MultipleShareButton{
}
}
AndroidBridge.addDefinition("MatomoShareButton", MatomoShareButton);
class RotateHelper {
rotate(element, degrees){
let rotateText = element.innerText;

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) {
@@ -3291,33 +3366,6 @@ class GapiHandler {
}
}
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;
@@ -3716,6 +3764,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 CopyShareButton extends ShareButton
{
constructor(icon, shouldLoadImg) {
@@ -3847,6 +3901,8 @@ class ShareManager {
ShareManager.init();
AndroidBridge.addDefinition("ShareManager.addShareButton", ShareManager.addShareButton);
class SmsShareButton extends ShareButton
{
constructor(icon, shouldLoadImg) {
@@ -4379,4 +4435,4 @@ function applyPolyfills() {
});
}
export { App, ChainAble, CookieCompliance, ConfirmDialog, Dialog, FlashMessenger, AbstractService, AbstractGapiResponse, Achievement, AchievementList, GameService, GapiPlayer, Leaderboard, Score, GapiHandler, Helper, InitPromise, ActionBarMenu, Menu, MenuAction, OpenSubmenuAction, Submenu, MyDb, Prioritised, ScriptLoader, CopyShareButton, MultipleShareButton, ShareButton, ShareManager, SmsShareButton, TelegramShareButton, WhatsappShareButton, SimpleWS, AbstractSite, Context, Fragment, PauseSite, SiteContainer, SiteManager, SystemSettings, Theme, ThemeManager, DBTranslator, Translator, TranslatorDB, ViewInflater, applyPolyfills };
export { AndroidBridge, App, ChainAble, CookieCompliance, ConfirmDialog, Dialog, FlashMessenger, AbstractService, AbstractGapiResponse, Achievement, AchievementList, GameService, GapiPlayer, Leaderboard, Score, GapiHandler, Helper, InitPromise, ActionBarMenu, Menu, MenuAction, OpenSubmenuAction, Submenu, MyDb, Prioritised, ScriptLoader, CopyShareButton, MultipleShareButton, ShareButton, ShareManager, SmsShareButton, TelegramShareButton, WhatsappShareButton, SimpleWS, AbstractSite, Context, Fragment, PauseSite, SiteContainer, SiteManager, SystemSettings, Theme, ThemeManager, DBTranslator, Translator, TranslatorDB, ViewInflater, applyPolyfills };