Compare commits

...

12 Commits

Author SHA1 Message Date
ostertun
3ee722f6c2 Merge branch 'hotfix/site_build_logging' 2020-10-11 16:57:17 +02:00
ostertun
28ba380cca gitflow-hotfix-stash: site_build_logging 2020-10-11 16:57:09 +02:00
ostertun
357449c1c6 Merge branch 'hotfix/update_subscription' 2020-10-09 12:59:35 +02:00
ostertun
de70522850 gitflow-hotfix-stash: update_subscription 2020-10-09 12:59:20 +02:00
ostertun
cf5f71d14e Merge branch 'hotfix/hide_preloader_console_button' 2020-10-08 12:56:42 +02:00
ostertun
34b47e40ab gitflow-hotfix-stash: hide_preloader_console_button 2020-10-08 12:56:19 +02:00
ostertun
32ea581437 Merge branch 'release/v_1.10.3' 2020-10-08 12:48:12 +02:00
ostertun
16ccbca2af Release v_1.10.3 2020-10-08 12:47:53 +02:00
ostertun
3fd9beae1e Add last sync info 2020-10-06 00:21:23 +02:00
ostertun
01d0ae96f9 Fix no-db warning 2020-10-05 23:55:20 +02:00
ostertun
c211817f78 Added no-db warning 2020-10-05 23:52:09 +02:00
ostertun
7a3413b339 Merge branch 'release/v_1.10.2' into develop 2020-10-05 20:32:21 +02:00
7 changed files with 104 additions and 37 deletions

View File

@@ -6,6 +6,8 @@
?> ?>
log('Script "custom.js" loaded');
var loaderCount = 2; var loaderCount = 2;
var showLoader = function() { var showLoader = function() {
if (loaderCount < 1) { if (loaderCount < 1) {
@@ -19,6 +21,7 @@ var hideLoader = function() {
if (loaderCount < 1) { if (loaderCount < 1) {
$('#preloader').addClass('preloader-hide'); $('#preloader').addClass('preloader-hide');
loaderCount = 0; loaderCount = 0;
log('Loader hidden');
} }
} }
@@ -27,14 +30,23 @@ $(window).on('load',function(){
hideLoader(); hideLoader();
}) })
//Generating Cookies
function createCookie(e, t, n) {if (n) {var o = new Date;o.setTime(o.getTime() + n * 365 * 24 * 3600 * 1e3);var r = "; expires=" + o.toGMTString()} else var r = "";document.cookie = e + "=" + t + r + "; path=/"}
function readCookie(e) {for (var t = e + "=", n = document.cookie.split(";"), o = 0; o < n.length; o++) {for (var r = n[o];" " == r.charAt(0);) r = r.substring(1, r.length);if (0 == r.indexOf(t)) return r.substring(t.length, r.length)}return null}
function eraseCookie(e) {createCookie(e, "", -1)}
$(document).ready(function(){ $(document).ready(function(){
'use strict' 'use strict'
log('Document ready');
var isAJAX = false; //Enables or disable AJAX page transitions and loading. var isAJAX = false; //Enables or disable AJAX page transitions and loading.
var isDevelopment = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults. var isDevelopment = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults.
function init_template(){ function init_template(){
log('Initializing template...');
//ADD YOUR CUSTOM JAVASCRIPT CODES HERE! //ADD YOUR CUSTOM JAVASCRIPT CODES HERE!
//Do not put inside HTML files. //Do not put inside HTML files.
//The init_template() function will be triggered when pages open. //The init_template() function will be triggered when pages open.
@@ -187,11 +199,6 @@ $(document).ready(function(){
return false; return false;
}); });
//Generating Cookies
function createCookie(e, t, n) {if (n) {var o = new Date;o.setTime(o.getTime() + n * 365 * 24 * 3600 * 1e3);var r = "; expires=" + o.toGMTString()} else var r = "";document.cookie = e + "=" + t + r + "; path=/"}
function readCookie(e) {for (var t = e + "=", n = document.cookie.split(";"), o = 0; o < n.length; o++) {for (var r = n[o];" " == r.charAt(0);) r = r.substring(1, r.length);if (0 == r.indexOf(t)) return r.substring(t.length, r.length)}return null}
function eraseCookie(e) {createCookie(e, "", -1)}
//Disabling & Enabling Dark Transitions in Dark Mode to Speed up Performance. //Disabling & Enabling Dark Transitions in Dark Mode to Speed up Performance.
function allowTransitions(){$('body').find('#transitions-remove').remove();} function allowTransitions(){$('body').find('#transitions-remove').remove();}
function removeTransitions(){$('body').append('<style id="transitions-remove">.btn, .header, #footer-bar, .menu-box, .menu-active{transition:all 0ms ease!important;}</style>'); setTimeout(function(){allowTransitions();},10);} function removeTransitions(){$('body').append('<style id="transitions-remove">.btn, .header, #footer-bar, .menu-box, .menu-active{transition:all 0ms ease!important;}</style>'); setTimeout(function(){allowTransitions();},10);}
@@ -1345,6 +1352,9 @@ $(document).ready(function(){
$('#menu-welcome-a-okay').click(welcomeOk); $('#menu-welcome-a-okay').click(welcomeOk);
showWelcome(); showWelcome();
log('Template initialized');
log('Initializing app');
initRegatten(); initRegatten();
hideLoader(); hideLoader();

View File

@@ -417,32 +417,35 @@ function dbSettingsSet(key, value) {
} }
} }
async function updateSyncStatus() { // TODO async function updateSyncStatus() {
// var syncStatus = document.getElementById('syncstatus'); var lastSync = await dbGetData('update_times', 'last_sync');
// var lastSync = await dbGetData('update_times', 'last_sync'); lastSync = new Date(lastSync.time * 1000);
// lastSync = new Date(lastSync.time * 1000); if (lastSync > 0) {
// var now = new Date(); var now = new Date();
// var diff = Math.round((now - lastSync) / 1000); var diff = Math.round((now - lastSync) / 1000);
// var txt = ''; var txt = '';
//
// if (diff < 30) { // 30 sec if (diff < 30) { // 30 sec
// txt = 'jetzt'; txt = 'jetzt';
// } else if (diff < 3600) { // 60 min } else if (diff < 3600) { // 60 min
// diff = Math.round(diff / 60); diff = Math.round(diff / 60);
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Minute' : 'Minuten'); txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Minute' : 'Minuten');
// } else if (diff < 86400) { // 24 std } else if (diff < 86400) { // 24 std
// diff = Math.round(diff / 3600); diff = Math.round(diff / 3600);
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Stunde' : 'Stunden'); txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Stunde' : 'Stunden');
// } else { } else {
// diff = Math.round(diff / 86400); diff = Math.round(diff / 86400);
// txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Tag' : 'Tagen'); txt = 'vor ' + diff + ' ' + (diff == 1 ? 'Tag' : 'Tagen');
// } }
// } else {
// var btn = '<a href="#" onclick="setLoading(true); sync(); return false;"><i class="fas fa-sync"></i> Sync</a>'; var txt = 'nie';
// syncStatus.innerHTML = 'Zuletzt aktualisiert: ' + txt + btn; }
$('#syncstatus').html('Zuletzt aktualisiert: ' + txt);
} }
async function runPageScript() { async function runPageScript() {
log('running page script...')
if (canUseLocalDB) { if (canUseLocalDB) {
var osUpdateTimes = db.transaction('update_times').objectStore('update_times'); var osUpdateTimes = db.transaction('update_times').objectStore('update_times');
osUpdateTimes.get('loggedin').onsuccess = function (event) { osUpdateTimes.get('loggedin').onsuccess = function (event) {
@@ -460,21 +463,21 @@ async function runPageScript() {
dbSettingsSet('myregattas_' + BOATCLASS, plannings); dbSettingsSet('myregattas_' + BOATCLASS, plannings);
} }
} }
if (typeof updateSyncStatusTimer == 'undefined') { // TODO if (typeof updateSyncStatusTimer == 'undefined') {
// var syncStatus = document.getElementById('syncstatus');
if (canUseLocalDB) { if (canUseLocalDB) {
updateSyncStatusTimer = window.setInterval(updateSyncStatus, 10000); updateSyncStatusTimer = window.setInterval(updateSyncStatus, 10000);
} else { } else {
// syncStatus.innerHTML = 'Keine Offline-Nutzung möglich.'; $('#syncstatus').html('Keine Offline-Nutzung möglich.');
$('#i-sync').parent().hide(); $('#i-sync').parent().hide();
updateSyncStatusTimer = null; updateSyncStatusTimer = null;
} }
// syncStatus.style.display = 'block';
} }
if (typeof siteScript === 'function') { if (typeof siteScript === 'function') {
log('loading site script');
siteScript(); siteScript();
} else { } else {
log('no site script');
hideLoader(); hideLoader();
} }
} }
@@ -928,11 +931,14 @@ function checkSync() {
} }
function initDatabase() { function initDatabase() {
log('Initializing DB...');
if (window.indexedDB) { if (window.indexedDB) {
var request = window.indexedDB.open('regatten_app_db_' + BOATCLASS, DB_VERSION); var request = window.indexedDB.open('regatten_app_db_' + BOATCLASS, DB_VERSION);
request.onerror = function (event) { request.onerror = function (event) {
log("Cannot open DB: " + event.target); log("Cannot open DB: " + event.target);
if (typeof onDatabaseLoaded == 'function') onDatabaseLoaded();
runPageScript(); runPageScript();
}; };
request.onsuccess = function (event) { request.onsuccess = function (event) {
@@ -1048,6 +1054,8 @@ function initDatabase() {
osUpdateTimes.put({ table: 'last_sync', time: 0 }); osUpdateTimes.put({ table: 'last_sync', time: 0 });
} }
} else { } else {
if (typeof onDatabaseLoaded == 'function') onDatabaseLoaded();
runPageScript(); runPageScript();
} }
} }

View File

@@ -440,8 +440,12 @@ async function updateNewsBadge() {
var initRegatten = function() { var initRegatten = function() {
showLoader(); showLoader();
log('Initializing DB...');
initDatabase(); initDatabase();
log('Loading app specific code...');
if (isLoggedIn()) { if (isLoggedIn()) {
$('.show-loggedin').show(); $('.show-loggedin').show();
$('.show-notloggedin').hide(); $('.show-notloggedin').hide();
@@ -461,6 +465,7 @@ var initRegatten = function() {
} }
var onServiceWorkerLoaded = function() { var onServiceWorkerLoaded = function() {
log('sW loaded');
if ((swRegistration !== null) && canUseLocalDB) { if ((swRegistration !== null) && canUseLocalDB) {
pushesPossible = true; pushesPossible = true;
updatePushBadge(); updatePushBadge();
@@ -470,6 +475,21 @@ var onServiceWorkerLoaded = function() {
} }
var onDatabaseLoaded = function() { var onDatabaseLoaded = function() {
log('DB loaded');
if (!canUseLocalDB && !$('#menu-welcome').hasClass('menu-active')) {
function NoDbWarningOk() {
createCookie('regatten_nodb_banner', true, 1);
$('#menu-nodb-warning').hideMenu();
}
function showNoDbWarning() {
if (!readCookie('regatten_nodb_banner')) {
$('#menu-nodb-warning').showMenu();
}
}
$('#menu-nodb-warning-okay').click(NoDbWarningOk);
showNoDbWarning();
}
onServiceWorkerLoaded(); onServiceWorkerLoaded();
initPushSettings(); initPushSettings();
@@ -486,13 +506,13 @@ var addConsoleOpenerToPreloader = function() {
var preloader = document.getElementById('preloader'); var preloader = document.getElementById('preloader');
var button = document.createElement('a'); var button = document.createElement('a');
button.href = '#'; button.href = '#';
button.classList = 'btn btn-full rounded-s text-uppercase font-900 shadow-m bg-highlight m-3'; button.classList = 'btn rounded-s text-uppercase font-900 shadow-m m-3';
button.style.position = 'fixed'; button.style.position = 'fixed';
button.style.bottom = 0; button.style.bottom = 0;
button.style.left = 0;
button.style.right = 0; button.style.right = 0;
button.innerHTML = 'Show Console'; button.innerHTML = '&lt;/&gt;';
button.onclick = function(){ button.onclick = function(){
alert('CONSOLE OPENED\nDir werden jetzt einige Entwickler-Informationen angezeigt. Du kannst die Console über das X oben rechts wieder schließen.');
mobileConsole.displayConsole(); mobileConsole.displayConsole();
return false; return false;
} }

View File

@@ -291,6 +291,21 @@
</div> </div>
</div> </div>
<div id="menu-nodb-warning" class="menu menu-box-bottom menu-box-detached rounded-m" data-height="500">
<div class="menu-title"><h1>Warnung</h1><p class="color-highlight">Datenbank nicht unterst&uuml;tzt</p><a href="#" class="close-menu"><i class="fa fa-times"></i></a></div>
<div class="divider divider-margins mb-n2"></div>
<div class="content bottom-0">
<p>
Das Speichern der ben&ouml;tigten Daten wird von Deinem Ger&auml;t nicht unterst&uuml;tzt.<br>
Da deshalb die Daten jedesmal direkt vom Server geladen werden m&uuml;ssen, kannst Du die App nicht offline nutzen.<br>
Das Nachladen kann au&szlig;erdem gerade bei gro&szlig;en Datenmengen (wie Ranglisten) sehr lange dauern.
Wir empfehlen Dir daher, auf diesem Ger&auml;t unsere normale Website zu benutzen. Diese ist auch f&uuml;r Mobil-Ger&auml;te optimiert.
</p>
<a class="btn btn-m mt-2 btn-full bg-highlight text-uppercase font-900" href="https://regatten.net/">Zur Website</a>
<a id="menu-nodb-warning-okay" class="btn btn-m mt-2 mb-3 btn-full bg-highlight text-uppercase font-900" href="#">Nicht erneut anzeigen</a>
</div>
</div>
<div id="menu-update"> <div id="menu-update">
<div class="content bottom-0"> <div class="content bottom-0">
<p class="text-center mt-5"><i class="fa fa-sync-alt fa-7x color-highlight fa-spin"></i></p> <p class="text-center mt-5"><i class="fa fa-sync-alt fa-7x color-highlight fa-spin"></i></p>

View File

@@ -27,7 +27,8 @@
<?php include(__DIR__ . '/headerfooter.php'); ?> <?php include(__DIR__ . '/headerfooter.php'); ?>
<!--start of page content, add your stuff here--> <!--start of page content, add your stuff here-->
<div class="page-content header-clear-medium"> <div class="page-content header-clear">
<div id="syncstatus" class="text-right mr-2 mb-1">Zuletzt aktualisiert: nie</div>
<?php echo $sp['output']; ?> <?php echo $sp['output']; ?>
</div> </div>
<!--end of page content, off canvas elements here--> <!--end of page content, off canvas elements here-->

View File

@@ -1,5 +1,5 @@
<?php <?php
define('PWA_VERSION', '1.10.2'); define('PWA_VERSION', '1.10.3h2');
?> ?>

View File

@@ -311,3 +311,16 @@ self.addEventListener('notificationclick', function(event) {
clients.openWindow(url) clients.openWindow(url)
); );
}); });
self.addEventListener('pushsubscriptionchange', function(event) {
var formData = new URLSearchParams();
formData.append('old', JSON.stringify(event.oldSubscription));
formData.append('new', JSON.stringify(event.newSubscription));
event.waitUntil(
fetch('<?php echo QUERY_URL; ?>update_subscription', {
method: 'POST',
cache: 'no-cache',
body: formData
})
);
});