Storage-Info hinzugefügt

This commit is contained in:
silas 2018-10-30 11:20:58 +01:00
parent dc13bc019d
commit 068f72c447
8 changed files with 129 additions and 7 deletions

1
.idea/wordRotator.iml generated
View File

@ -3,6 +3,7 @@
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/module/Application/src" isTestSource="false" packagePrefix="Application\" />
<sourceFolder url="file://$MODULE_DIR$/src/module/Application/pwa/public" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/public/js" />
<excludeFolder url="file://$MODULE_DIR$/publicTest" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" />

View File

@ -1 +1 @@
<div class="max-height fill-me"><div class="row max-width grow flex-center"><div class="columns small-centered small-12 smedium-11 medium-9 large-7"><div class="row setting-row hidden" id=install-button><span class="columns small-6" data-translation=install></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=theme-chooser><span class="columns small-6" data-translation=theme></span> <span class="columns small-6 text-right"><div id=theme-name></div></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=sound></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-sound name=play-sound value=1 data-default=1> <span class=slider></span></span></label> <label class="switch row setting-row"><span class="columns small-6" data-translation=music></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-music name=play-music value=1 data-default=1> <span class=slider></span></span></label><div class="row setting-row" id=credits-button><span class="columns small-6" data-translation=credits></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=privacy-policy-button><span class="columns small-6" data-translation=privacy-policy></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=impressum-button><span class="columns small-6" data-translation=impressum></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=contact-button><span class="columns small-6" data-translation=contact></span> <span class="columns small-6 text-right" data-translation=">"></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=track></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=track-switch name=matomoShouldTrack value=1 data-default=1 data-raw=1> <span class=slider></span></span></label> <button id=reset-levels class="button hidden" data-translation=reset-levels></button></div></div></div>
<div class="max-height fill-me"><div class="row max-width grow flex-center"><div class="columns small-centered small-12 smedium-11 medium-9 large-7"><div class="row setting-row hidden" id=install-button><span class="columns small-6" data-translation=install></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=theme-chooser><span class="columns small-6" data-translation=theme></span> <span class="columns small-6 text-right"><div id=theme-name></div></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=sound></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-sound name=play-sound value=1 data-default=1> <span class=slider></span></span></label> <label class="switch row setting-row"><span class="columns small-6" data-translation=music></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=play-music name=play-music value=1 data-default=1> <span class=slider></span></span></label><div class="row setting-row" id=credits-button><span class="columns small-6" data-translation=credits></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=privacy-policy-button><span class="columns small-6" data-translation=privacy-policy></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=impressum-button><span class="columns small-6" data-translation=impressum></span> <span class="columns small-6 text-right" data-translation=">"></span></div><div class="row setting-row" id=contact-button><span class="columns small-6" data-translation=contact></span> <span class="columns small-6 text-right" data-translation=">"></span></div><label class="switch row setting-row"><span class="columns small-6" data-translation=track></span> <span class="columns small-6 text-right"><input type=checkbox class=setting id=track-switch name=matomoShouldTrack value=1 data-default=1 data-raw=1> <span class=slider></span></span></label><div class="row setting-row"><div class="column hidden" id=storage-info></div></div><button id=reset-levels class="button hidden" data-translation=reset-levels></button></div></div></div>

View File

@ -5340,6 +5340,50 @@ InitPromise.addPromise(() => {
});
});
// AndroidBridge.addDefinition(() => {
// window["soundManagerInstance"] = SoundManager.getInstance();
// window["soundManagerInstance"]["stopAll"] = window["soundManagerInstance"].stopAll;
// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted;
// });
class StorageManager {
static getInstance() {
if (Helper.isNull(StorageManager.instance)) {
StorageManager.instance = new StorageManager();
}
return StorageManager.instance;
}
async estimate() {
if ('storage' in navigator && 'estimate' in navigator.storage) {
// We've got the real thing! Return its response.
return navigator.storage.estimate();
}
if ('webkitTemporaryStorage' in navigator &&
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
// Return a promise-based wrapper that will follow the expected interface.
return new Promise(function (resolve, reject) {
navigator.webkitTemporaryStorage.queryUsageAndQuota(
function (usage, quota) {
resolve({usage: usage, quota: quota});
},
reject
);
});
}
// If we can't estimate the values, return a Promise that resolves with NaN.
return Promise.resolve({usage: NaN, quota: NaN});
}
canEstimateStorage() {
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
}
}
StorageManager.instance = null;
class Code {
constructor(args) {
if (typeof args === "string") {
@ -6772,6 +6816,9 @@ class LevelSite extends WordRotatorBaseSite {
break;
}
default:{
this._siteContent.classList.remove("tutorial");
}
}
}
else if (this.level.id === LevelSite.TUTORIAL.SECOND_LEVEL) {
@ -6799,6 +6846,9 @@ class LevelSite extends WordRotatorBaseSite {
scaleHelper.scaleToFull(textElem, textElem.parentElement, null, true, 1, 2);
break;
}
default:{
this._siteContent.classList.remove("tutorial");
}
}
}
else if (this.level.id === LevelSite.TUTORIAL.BIG_SEGMENT_LEVEL) {
@ -6834,6 +6884,9 @@ class LevelSite extends WordRotatorBaseSite {
break;
}
default:{
this._siteContent.classList.remove("tutorial");
}
}
}
}
@ -7242,7 +7295,7 @@ class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
installButton.classList.add("hidden");
InstallManager.prompt().then((e) => {
console.log("clicked", e);
if (e["outcome"] === "accepted"){
if (e["outcome"] === "accepted") {
Matomo.trackEvent("installed", "installed");
}
});
@ -7250,6 +7303,19 @@ class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
installButton.classList.remove("hidden");
});
let storageManager = StorageManager.getInstance();
if (storageManager.canEstimateStorage()) {
console.log("can estimate storage!");
storageManager.estimate().then(storage => {
let storageObject = this.findBy("#storage-info");
console.log("estimating storage 2", storageObject);
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
console.log("estimating storage 3", storage);
storageObject.classList.remove("hidden");
console.log("estimating storage 4", storage);
});
}
return super.onFirstStart();
}

File diff suppressed because one or more lines are too long

View File

@ -535,6 +535,44 @@ InitPromise.addPromise(() => {
// window["soundManagerInstance"]["resumeAllIfNotMuted"] = window["soundManagerInstance"].resumeAllIfNotMuted;
// });
class StorageManager {
static getInstance() {
if (Helper.isNull(StorageManager.instance)) {
StorageManager.instance = new StorageManager();
}
return StorageManager.instance;
}
async estimate() {
if ('storage' in navigator && 'estimate' in navigator.storage) {
// We've got the real thing! Return its response.
return navigator.storage.estimate();
}
if ('webkitTemporaryStorage' in navigator &&
'queryUsageAndQuota' in navigator.webkitTemporaryStorage) {
// Return a promise-based wrapper that will follow the expected interface.
return new Promise(function (resolve, reject) {
navigator.webkitTemporaryStorage.queryUsageAndQuota(
function (usage, quota) {
resolve({usage: usage, quota: quota});
},
reject
);
});
}
// If we can't estimate the values, return a Promise that resolves with NaN.
return Promise.resolve({usage: NaN, quota: NaN});
}
canEstimateStorage() {
return ('storage' in navigator && 'estimate' in navigator.storage || 'webkitTemporaryStorage' in navigator &&
'queryUsageAndQuota' in navigator.webkitTemporaryStorage);
}
}
StorageManager.instance = null;
class TabbedFragment extends Fragment {
constructor(site) {
super(site, 'pwaAssets/html/fragment/tabbedFragment.html');
@ -600,4 +638,4 @@ class TabbedFragment extends Fragment {
}
}
export { DelayPromise, InstallManager, Matomo, MatomoShareButton, RotateHelper, ScaleHelper, AudioChain, SoundManager, TabbedFragment };
export { DelayPromise, InstallManager, Matomo, MatomoShareButton, RotateHelper, ScaleHelper, AudioChain, SoundManager, StorageManager, TabbedFragment };

View File

@ -1,7 +1,7 @@
import {LocalStorageSettingsFragment, SettingsManager, SettingsSite} from "../../../../../js/lib/pwa-core";
import {Helper, InitPromise, ThemeManager, Translator} from "../../../../../js/lib/pwa-lib";
import {WordRotatorDb} from "../WordRotatorDb";
import {InstallManager, Matomo, SoundManager} from "../../../../../js/lib/pwa-assets";
import {InstallManager, Matomo, SoundManager, StorageManager} from "../../../../../js/lib/pwa-assets";
import {CreditsSite} from "../site/CreditsSite";
import {PrivacyPolicySite} from "../site/PrivacyPolicySite";
import {ChooseThemeDialog} from "../dialog/ChooseThemeDialog";
@ -74,7 +74,7 @@ export class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
installButton.classList.add("hidden");
InstallManager.prompt().then((e) => {
console.log("clicked", e);
if (e["outcome"] === "accepted"){
if (e["outcome"] === "accepted") {
Matomo.trackEvent("installed", "installed")
}
});
@ -82,6 +82,19 @@ export class WordRotatorSettingFragment extends LocalStorageSettingsFragment {
installButton.classList.remove("hidden");
});
let storageManager = StorageManager.getInstance();
if (storageManager.canEstimateStorage()) {
console.log("can estimate storage!");
storageManager.estimate().then(storage => {
let storageObject = this.findBy("#storage-info");
console.log("estimating storage 2", storageObject);
storageObject.appendChild(Translator.makePersistentTranslation("storage-info", [Math.round(storage.usage/(1024*1024)*100)/100, Math.round(storage.quota/(1024*1024)*100)/100, Math.round(storage.usage/storage.quota*10000)/100]));
console.log("estimating storage 3", storage);
storageObject.classList.remove("hidden");
console.log("estimating storage 4", storage);
});
}
return super.onFirstStart();
}

View File

@ -51,6 +51,9 @@
<span class="slider"></span>
</span>
</label>
<div class='row setting-row' >
<div class = "column hidden" id='storage-info'></div>
</div>
<!--<iframe-->
<!--style="border: 0; height: 200px; width: 600px;"-->

View File

@ -31,5 +31,6 @@
"credits-sister-text":"Ich danke meiner Lieblingsschwester, denn ohne Sie würde diese App nicht so aussehen, wie sie aussieht (wahrscheinlich eher schlechter :p)",
"credits-coin-text":"Sound:<br/>Der Münz-Sound ist von der Webseite <a href = '{0}' target='_blank' rel='noopener' class = 'link'>{0}</a>. Alle Rechte für diesen Münz-Sound gehören <a target='_blank' rel='noopener' href = '{0}' class = 'link'>{0}</a>.",
"credits-music-text":"Musik:<br/>Bright And Beautiful - GEMAfreie Musik von <a href = '{0}' target='_blank' rel='noopener' class = 'link'>{0}</a><br/>Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)<br/><a href = '{1}' target='_blank' rel='noopener' class = 'link'>{1}</a><br/>Angepasst (geschnitten) für diese App"
"credits-music-text":"Musik:<br/>Bright And Beautiful - GEMAfreie Musik von <a href = '{0}' target='_blank' rel='noopener' class = 'link'>{0}</a><br/>Licensed under Creative Commons: By Attribution 4.0 International (CC BY 4.0)<br/><a href = '{1}' target='_blank' rel='noopener' class = 'link'>{1}</a><br/>Angepasst (geschnitten) für diese App",
"storage-info":"Ungefähr {0}/{1}MB genutzt ({2}%)"
}