Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
274aa85cf7 | ||
|
|
4317e4fe87 | ||
|
|
b7dec825ca | ||
|
|
6ca6a79dc3 | ||
|
|
d1e5d753b4 | ||
|
|
7afacc3fff | ||
|
|
77ea57d643 | ||
|
|
a72c462483 | ||
|
|
b739e6cc4e | ||
|
|
eb47cdf016 | ||
|
|
12c1a614bb | ||
|
|
0fb1bb0462 |
20
.github/ISSUE_TEMPLATE/-de--feature-anfrage.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/-de--feature-anfrage.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: "[DE] Feature-Anfrage"
|
||||||
|
about: Schlage eine Idee für dieses Projekt vor
|
||||||
|
title: ''
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Bezieht sich Deine Feature-Anfrage auf ein Problem? Bitte beschreiben.**
|
||||||
|
Eine klare und präzise Beschreibung des Problems. Z.B. Ich bin immer frustriert, wenn [...]
|
||||||
|
|
||||||
|
**Beschreibe die gewünschte Lösung**
|
||||||
|
Eine klare und präzise Beschreibung dessen, was passieren soll.
|
||||||
|
|
||||||
|
**Beschreibe Alternativen, die Du in Betracht gezogen hast**
|
||||||
|
Eine klare und präzise Beschreibung aller alternativen Lösungen oder Funktionen, die Du in Betracht gezogen hast.
|
||||||
|
|
||||||
|
**Zusätzlicher Kontext**
|
||||||
|
Füge hier weitere Kontexte oder Screenshots zur Feature-Anfrage hinzu.
|
||||||
38
.github/ISSUE_TEMPLATE/-de--fehlerbericht.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/-de--fehlerbericht.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: "[DE] Fehlerbericht"
|
||||||
|
about: Erstelle einen Bericht, um uns zu helfen, die App zu verbessern
|
||||||
|
title: ''
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Beschreibe den Fehler**
|
||||||
|
Eine klare und präzise Beschreibung des Fehlers.
|
||||||
|
|
||||||
|
**Reproduzierung**
|
||||||
|
Schritte zum Reproduzieren des Fehlers:
|
||||||
|
1. Gehe zu '...'
|
||||||
|
2. Klicke auf '....'
|
||||||
|
3. Scrolle nach unten zu '....'
|
||||||
|
4. Sieh den Fehler
|
||||||
|
|
||||||
|
**Erwartetes Verhalten**
|
||||||
|
Eine klare und präzise Beschreibung dessen, was Du erwartet hattest.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
Füge gegebenenfalls Screenshots hinzu, um Dein Problem zu erklären.
|
||||||
|
|
||||||
|
**Desktop (bitte verfolständige die folgenden Informationen):**
|
||||||
|
- Betriebssystem: [z.B. Windows 10]
|
||||||
|
- Browser [z.B. chrome, safari]
|
||||||
|
- Version [z.B. 2.14]
|
||||||
|
|
||||||
|
**Smartphone (bitte verfolständige die folgenden Informationen):**
|
||||||
|
- Gerät: [z.B. iPhone 6]
|
||||||
|
- Betriebssystem: [z.B. iOS 8.1]
|
||||||
|
- Browser [z.B. stock browser, safari]
|
||||||
|
- Version [z.B. 2.14]
|
||||||
|
|
||||||
|
**Zusätzlicher Kontext**
|
||||||
|
Füge hier einen anderen Kontext zum Problem hinzu.
|
||||||
38
.github/ISSUE_TEMPLATE/-en--bug-report.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/-en--bug-report.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: "[EN] Bug report"
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS: [e.g. Windows 10]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 2.14]
|
||||||
|
|
||||||
|
**Smartphone (please complete the following information):**
|
||||||
|
- Device: [e.g. iPhone 6]
|
||||||
|
- OS: [e.g. iOS 8.1]
|
||||||
|
- Browser [e.g. stock browser, safari]
|
||||||
|
- Version [e.g. 2.14]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
20
.github/ISSUE_TEMPLATE/-en--feature-request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/-en--feature-request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: "[EN] Feature request"
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
11
README.md
Normal file
11
README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Regatten.net App
|
||||||
|
|
||||||
|
Willkommen im GitHub-Repository unserer neuen Regatten.net App.
|
||||||
|
|
||||||
|
Falls sich jemand dafür interessiert, ist hier der gesamte Quellcode unserer neuen App zu finden.
|
||||||
|
Bitte beachtet, dass diese App einschließlich dem gesamten Quellcode exklusivem Urheberrecht unterliegt. Sie darf also nicht kopiert, verteilt oder verändert werden.
|
||||||
|
Sollte Interesse an einer Anbindung an unser System bestehen, kontaktiere uns bitte einfach (https://regatten.net/contact)
|
||||||
|
|
||||||
|
Der Hauptzweck dieses Repository besteht jedoch darin, Feedback von Euch zu unserer neuen App zu bekommen.
|
||||||
|
Selbstverständlich könnt Ihr uns auch weiterhin auf anderen Kanälen erreichen, doch für Problem-Meldungen und Verbesserungsvorschläge ist GitHub am besten geeignet.
|
||||||
|
Wie Du Teil unseres BETA-Programmes wirst, die App installierst und Feedback gibst, erfährst Du in unserem [Wiki](https://github.com/ostertun/RegattenApp/wiki).
|
||||||
1484
client/scripts/mobileconsole.js
Normal file
1484
client/scripts/mobileconsole.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -206,7 +206,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="menu-developer" class="menu menu-box-bottom menu-box-detached rounded-m" data-menu-height="310">
|
<div id="menu-developer" class="menu menu-box-bottom menu-box-detached rounded-m" data-menu-height="360">
|
||||||
<div class="menu-title"><h1>Entwickler-Optionen</h1><p class="color-highlight">Version <?php echo PWA_VERSION; ?></p><a href="#" class="close-menu"><i class="fa fa-times"></i></a></div>
|
<div class="menu-title"><h1>Entwickler-Optionen</h1><p class="color-highlight">Version <?php echo PWA_VERSION; ?></p><a href="#" class="close-menu"><i class="fa fa-times"></i></a></div>
|
||||||
<div class="divider divider-margins mb-n2"></div>
|
<div class="divider divider-margins mb-n2"></div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@@ -226,11 +226,16 @@
|
|||||||
<span>Reset Cache</span>
|
<span>Reset Cache</span>
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://report.regatten.net/" class="border-0">
|
<a href="https://report.regatten.net/">
|
||||||
<i class="fa font-14 fa-bug rounded-s bg-highlight color-white"></i>
|
<i class="fa font-14 fa-bug rounded-s bg-highlight color-white"></i>
|
||||||
<span>Problem melden</span>
|
<span>Problem melden</span>
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
</a>
|
</a>
|
||||||
|
<a href="#" onclick="mobileConsole.displayConsole(); return false;" class="border-0 menu-close">
|
||||||
|
<i class="fa font-14 fa-terminal rounded-s bg-highlight color-white"></i>
|
||||||
|
<span>Console anzeigen</span>
|
||||||
|
<i class="fa fa-angle-right"></i>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -258,7 +263,7 @@
|
|||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
Momentan kannst Du Dich leider nicht in der App registrieren.<br>
|
Momentan kannst Du Dich leider nicht in der App registrieren.<br>
|
||||||
Das ist aber kein Problem, registriere Dich einfach kostenlos auf unserer Website!
|
Das ist aber kein Problem, registriere Dich einfach kostenlos auf unserer Website!
|
||||||
</p>
|
</p>
|
||||||
<a href="https://regatten.net/de/signup" class="btn btn-center-xl btn-m shadow-xl rounded-s bg-highlight font-900 text-center">Registrieren</a>
|
<a href="https://regatten.net/de/signup" class="btn btn-center-xl btn-m shadow-xl rounded-s bg-highlight font-900 text-center">Registrieren</a>
|
||||||
<p class="text-center font-10 bottom-0">Du kannst Dich danach in dieser App anmelden.</p>
|
<p class="text-center font-10 bottom-0">Du kannst Dich danach in dieser App anmelden.</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -289,8 +294,8 @@
|
|||||||
<h1 class="text-center mt-5 font-900">Update Verfügbar</h1>
|
<h1 class="text-center mt-5 font-900">Update Verfügbar</h1>
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
Eine neue Version unserer App ist verfügbar. Keine Sorge, Du musst nichts machen. Wir aktuallisieren den Inhalt in wenigen Sekunden.
|
Eine neue Version unserer App ist verfügbar. Keine Sorge, Du musst nichts machen. Wir aktuallisieren den Inhalt in wenigen Sekunden.
|
||||||
</p>
|
</p>
|
||||||
<a href="#" class="page-update btn btn-center-xl btn-m shadow-xl rounded-s bg-highlight font-900 text-center">Update</a>
|
<a href="#" class="page-update btn btn-center-xl btn-m shadow-xl rounded-s bg-highlight font-900 text-center">Update</a>
|
||||||
<p class="text-center font-10 bottom-0">Die App wird neu laden und das Update ist abgeschlossen.</p>
|
<p class="text-center font-10 bottom-0">Die App wird neu laden und das Update ist abgeschlossen.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<!DOCTYPE HTML>
|
<!DOCTYPE HTML>
|
||||||
<html lang="de">
|
<html lang="de">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/mobileconsole.js"></script>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||||
@@ -16,36 +17,36 @@
|
|||||||
<link rel="icon" type="image/x-icon" href="<?php echo SERVER_ADDR; ?>/client/app/icons/favicon.ico">
|
<link rel="icon" type="image/x-icon" href="<?php echo SERVER_ADDR; ?>/client/app/icons/favicon.ico">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="<?php echo SERVER_ADDR; ?>/client/app/icons/icon-192x192.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="<?php echo SERVER_ADDR; ?>/client/app/icons/icon-192x192.png">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="detect-theme" data-background="none" data-highlight="blue2">
|
<body class="detect-theme" data-background="none" data-highlight="blue2">
|
||||||
|
|
||||||
<div id="preloader"><div class="spinner-border color-highlight" role="status"></div></div>
|
<div id="preloader"><div class="spinner-border color-highlight" role="status"></div></div>
|
||||||
|
|
||||||
<div id="page">
|
<div id="page">
|
||||||
|
|
||||||
<?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-medium">
|
||||||
<?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-->
|
||||||
|
|
||||||
<?php include(__DIR__ . '/menus.php'); ?>
|
<?php include(__DIR__ . '/menus.php'); ?>
|
||||||
|
|
||||||
<?php echo $sp['menus']; ?>
|
<?php echo $sp['menus']; ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if ($site == 'index') {
|
if ($site == 'index') {
|
||||||
include(__DIR__ . '/install.php');
|
include(__DIR__ . '/install.php');
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!--end of div id page-->
|
<!--end of div id page-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php echo $sp['scripts']; ?>
|
<?php echo $sp['scripts']; ?>
|
||||||
|
|
||||||
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/jquery.js"></script>
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/jquery.js"></script>
|
||||||
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/bootstrap.min.js"></script>
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/bootstrap.min.js"></script>
|
||||||
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/strings.js.php"></script>
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/strings.js.php"></script>
|
||||||
@@ -55,5 +56,5 @@
|
|||||||
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/custom.js.php"></script>
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/custom.js.php"></script>
|
||||||
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/pwa.js.php"></script>
|
<script type="text/javascript" src="<?php echo SERVER_ADDR; ?>/client/scripts/pwa.js.php"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ var today;
|
|||||||
|
|
||||||
var siteScript = async function() {
|
var siteScript = async function() {
|
||||||
today = getToday();
|
today = getToday();
|
||||||
|
|
||||||
if (isLoggedIn()) {
|
if (isLoggedIn()) {
|
||||||
$('#card-notloggedin').hide();
|
$('#card-notloggedin').hide();
|
||||||
|
|
||||||
var user = await dbGetData('users', localStorage.getItem('auth_user'));
|
var user = await dbGetData('users', localStorage.getItem('auth_user'));
|
||||||
|
|
||||||
// Favorites
|
// Favorites
|
||||||
var watched = [];
|
var watched = [];
|
||||||
for (var i = 1; i <= 5; i ++) {
|
for (var i = 1; i <= 5; i ++) {
|
||||||
@@ -46,7 +46,7 @@ var siteScript = async function() {
|
|||||||
$('#p-favorites').show();
|
$('#p-favorites').show();
|
||||||
}
|
}
|
||||||
$('#card-favorites').show();
|
$('#card-favorites').show();
|
||||||
|
|
||||||
// Your next
|
// Your next
|
||||||
var planningsDB = await dbGetDataIndex('plannings', 'user', user.id);
|
var planningsDB = await dbGetDataIndex('plannings', 'user', user.id);
|
||||||
var minDate = getToday();
|
var minDate = getToday();
|
||||||
@@ -75,35 +75,35 @@ var siteScript = async function() {
|
|||||||
for (i in plannings) {
|
for (i in plannings) {
|
||||||
var planning = plannings[i];
|
var planning = plannings[i];
|
||||||
var regatta = planning.regatta;
|
var regatta = planning.regatta;
|
||||||
|
|
||||||
if (regatta['length'] < 1) continue;
|
if (regatta['length'] < 1) continue;
|
||||||
|
|
||||||
var club = null;
|
var club = null;
|
||||||
if (regatta['club'] != null)
|
if (regatta['club'] != null)
|
||||||
club = await dbGetData('clubs', regatta['club']);
|
club = await dbGetData('clubs', regatta['club']);
|
||||||
var dateFrom = regatta['dateFrom'];
|
var dateFrom = regatta['dateFrom'];
|
||||||
var dateTo = regatta['dateTo'];
|
var dateTo = regatta['dateTo'];
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
||||||
|
|
||||||
// ZEILE 1
|
// ZEILE 1
|
||||||
// Name
|
// Name
|
||||||
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
||||||
|
|
||||||
// ZEILE 2
|
// ZEILE 2
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Number
|
// Number
|
||||||
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
||||||
|
|
||||||
// Club
|
// Club
|
||||||
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
list += '<div>' + regatta['special'] + '</div>';
|
list += '<div>' + regatta['special'] + '</div>';
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
var icons = [];
|
var icons = [];
|
||||||
if (regatta['info'] != '')
|
if (regatta['info'] != '')
|
||||||
@@ -120,8 +120,10 @@ var siteScript = async function() {
|
|||||||
ms = parseDate(regatta['meldungSchluss']);
|
ms = parseDate(regatta['meldungSchluss']);
|
||||||
}
|
}
|
||||||
var diff = Math.round((ms - today) / 86400000);
|
var diff = Math.round((ms - today) / 86400000);
|
||||||
if ((ms >= today) && (diff < 7)) {
|
if (ms < today) {
|
||||||
color = ' color-red2-dark';
|
color = ' color-red2-dark';
|
||||||
|
} else if (diff < 7) {
|
||||||
|
color = ' color-yellow2-dark';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,18 +136,18 @@ var siteScript = async function() {
|
|||||||
icons.push('<i class="fas fa-times color-red2-dark"></i>');
|
icons.push('<i class="fas fa-times color-red2-dark"></i>');
|
||||||
}
|
}
|
||||||
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
||||||
|
|
||||||
list += '</div>';
|
list += '</div>';
|
||||||
|
|
||||||
// ZEILE 3
|
// ZEILE 3
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
||||||
|
|
||||||
// RLF
|
// RLF
|
||||||
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
||||||
|
|
||||||
list += '</div></div>';
|
list += '</div></div>';
|
||||||
}
|
}
|
||||||
$('#div-yournext').html(list);
|
$('#div-yournext').html(list);
|
||||||
@@ -161,7 +163,7 @@ var siteScript = async function() {
|
|||||||
$('#card-yournext').hide();
|
$('#card-yournext').hide();
|
||||||
$('#card-notloggedin').show();
|
$('#card-notloggedin').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next
|
// Next
|
||||||
var minDate = getToday();
|
var minDate = getToday();
|
||||||
minDate.setDate(minDate.getDate() - 1);
|
minDate.setDate(minDate.getDate() - 1);
|
||||||
@@ -172,35 +174,35 @@ var siteScript = async function() {
|
|||||||
list = '';
|
list = '';
|
||||||
for (i in regattas) {
|
for (i in regattas) {
|
||||||
var regatta = regattas[i];
|
var regatta = regattas[i];
|
||||||
|
|
||||||
if (regatta['length'] < 1) continue;
|
if (regatta['length'] < 1) continue;
|
||||||
|
|
||||||
var club = null;
|
var club = null;
|
||||||
if (regatta['club'] != null)
|
if (regatta['club'] != null)
|
||||||
club = await dbGetData('clubs', regatta['club']);
|
club = await dbGetData('clubs', regatta['club']);
|
||||||
var plannings = await dbGetDataIndex('plannings', 'regatta', regatta['id']);
|
var plannings = await dbGetDataIndex('plannings', 'regatta', regatta['id']);
|
||||||
var dateFrom = regatta['dateFrom'];
|
var dateFrom = regatta['dateFrom'];
|
||||||
var dateTo = regatta['dateTo'];
|
var dateTo = regatta['dateTo'];
|
||||||
|
|
||||||
// output
|
// output
|
||||||
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
||||||
|
|
||||||
// ZEILE 1
|
// ZEILE 1
|
||||||
// Name
|
// Name
|
||||||
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
||||||
|
|
||||||
// ZEILE 2
|
// ZEILE 2
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Number
|
// Number
|
||||||
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
||||||
|
|
||||||
// Club
|
// Club
|
||||||
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
list += '<div>' + regatta['special'] + '</div>';
|
list += '<div>' + regatta['special'] + '</div>';
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
var icons = [];
|
var icons = [];
|
||||||
if (regatta['info'] != '')
|
if (regatta['info'] != '')
|
||||||
@@ -227,8 +229,10 @@ var siteScript = async function() {
|
|||||||
ms = parseDate(regatta['meldungSchluss']);
|
ms = parseDate(regatta['meldungSchluss']);
|
||||||
}
|
}
|
||||||
var diff = Math.round((ms - today) / 86400000);
|
var diff = Math.round((ms - today) / 86400000);
|
||||||
if ((ms >= today) && (diff < 7)) {
|
if (ms < today) {
|
||||||
color = ' color-red2-dark';
|
color = ' color-red2-dark';
|
||||||
|
} else if (diff < 7) {
|
||||||
|
color = ' color-yellow2-dark';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,18 +245,18 @@ var siteScript = async function() {
|
|||||||
icons.push('<i class="fas fa-times color-red2-dark"></i>');
|
icons.push('<i class="fas fa-times color-red2-dark"></i>');
|
||||||
}
|
}
|
||||||
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
||||||
|
|
||||||
list += '</div>';
|
list += '</div>';
|
||||||
|
|
||||||
// ZEILE 3
|
// ZEILE 3
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
||||||
|
|
||||||
// RLF
|
// RLF
|
||||||
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
||||||
|
|
||||||
list += '</div></div>';
|
list += '</div></div>';
|
||||||
}
|
}
|
||||||
$('#div-next').html(list);
|
$('#div-next').html(list);
|
||||||
@@ -262,7 +266,7 @@ var siteScript = async function() {
|
|||||||
$('#div-next').hide();
|
$('#div-next').hide();
|
||||||
$('#p-next').show();
|
$('#p-next').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last
|
// Last
|
||||||
var minDate = getToday();
|
var minDate = getToday();
|
||||||
minDate.setDate(minDate.getDate() - 14);
|
minDate.setDate(minDate.getDate() - 14);
|
||||||
@@ -279,35 +283,35 @@ var siteScript = async function() {
|
|||||||
list = '';
|
list = '';
|
||||||
for (i in regattas) {
|
for (i in regattas) {
|
||||||
var regatta = regattas[i];
|
var regatta = regattas[i];
|
||||||
|
|
||||||
if (regatta['length'] < 1) continue;
|
if (regatta['length'] < 1) continue;
|
||||||
|
|
||||||
var club = null;
|
var club = null;
|
||||||
if (regatta['club'] != null)
|
if (regatta['club'] != null)
|
||||||
club = await dbGetData('clubs', regatta['club']);
|
club = await dbGetData('clubs', regatta['club']);
|
||||||
var dateFrom = regatta['dateFrom'];
|
var dateFrom = regatta['dateFrom'];
|
||||||
var dateTo = regatta['dateTo'];
|
var dateTo = regatta['dateTo'];
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
list += '<div onclick="onRegattaClicked(' + regatta['id'] + ');">';
|
||||||
|
|
||||||
// ZEILE 1
|
// ZEILE 1
|
||||||
// Name
|
// Name
|
||||||
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
list += '<div><b>' + (regatta['canceled'] == 1 ? '<s>' : '') + regatta['name'] + (regatta['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
||||||
|
|
||||||
// ZEILE 2
|
// ZEILE 2
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Number
|
// Number
|
||||||
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
list += '<div>' + ((regatta['number'] != null) ? ('# ' + regatta['number']) : '') + '</div>';
|
||||||
|
|
||||||
// Club
|
// Club
|
||||||
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
list += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
list += '<div>' + regatta['special'] + '</div>';
|
list += '<div>' + regatta['special'] + '</div>';
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
var icons = [];
|
var icons = [];
|
||||||
if (regatta['info'] != '')
|
if (regatta['info'] != '')
|
||||||
@@ -320,18 +324,18 @@ var siteScript = async function() {
|
|||||||
icons.push('<i class="fas fa-poll"></i>');
|
icons.push('<i class="fas fa-poll"></i>');
|
||||||
}
|
}
|
||||||
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
list += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
||||||
|
|
||||||
list += '</div>';
|
list += '</div>';
|
||||||
|
|
||||||
// ZEILE 3
|
// ZEILE 3
|
||||||
list += '<div>';
|
list += '<div>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
list += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
||||||
|
|
||||||
// RLF
|
// RLF
|
||||||
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
list += '<div>' + parseFloat(regatta['rlf']).toFixed(2) + '</div>';
|
||||||
|
|
||||||
list += '</div></div>';
|
list += '</div></div>';
|
||||||
}
|
}
|
||||||
$('#div-last').html(list);
|
$('#div-last').html(list);
|
||||||
@@ -341,6 +345,6 @@ var siteScript = async function() {
|
|||||||
$('#div-last').hide();
|
$('#div-last').hide();
|
||||||
$('#p-last').show();
|
$('#p-last').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
hideLoader();
|
hideLoader();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ function selectChange(callSiteScript = true) {
|
|||||||
$('#input-from').parent().hide();
|
$('#input-from').parent().hide();
|
||||||
$('#input-to').parent().hide();
|
$('#input-to').parent().hide();
|
||||||
$('#button-show').hide();
|
$('#button-show').hide();
|
||||||
|
|
||||||
$('#input-from').val(val + '-01-01');
|
$('#input-from').val(val + '-01-01');
|
||||||
$('#input-to').val(val + '-12-31');
|
$('#input-to').val(val + '-12-31');
|
||||||
|
|
||||||
if (callSiteScript && (typeof siteScript === 'function'))
|
if (callSiteScript && (typeof siteScript === 'function'))
|
||||||
siteScript();
|
siteScript();
|
||||||
}
|
}
|
||||||
@@ -20,10 +20,10 @@ function selectChange(callSiteScript = true) {
|
|||||||
function initYear() {
|
function initYear() {
|
||||||
var year = findGetParameter('year');
|
var year = findGetParameter('year');
|
||||||
if (year === null) year = new Date().getFullYear();
|
if (year === null) year = new Date().getFullYear();
|
||||||
|
|
||||||
$('#select-year').html('<option value="' + year + '">' + year + '</option>');
|
$('#select-year').html('<option value="' + year + '">' + year + '</option>');
|
||||||
$('#select-year').val(year);
|
$('#select-year').val(year);
|
||||||
|
|
||||||
selectChange(false);
|
selectChange(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,9 +53,9 @@ var siteScript = async function() {
|
|||||||
$('#button-show').click(siteScript);
|
$('#button-show').click(siteScript);
|
||||||
$('#input-search').on('input', drawList);
|
$('#input-search').on('input', drawList);
|
||||||
}
|
}
|
||||||
|
|
||||||
today = getToday();
|
today = getToday();
|
||||||
|
|
||||||
var minDate = parseDate($('#input-from').val());
|
var minDate = parseDate($('#input-from').val());
|
||||||
var maxDate = parseDate($('#input-to').val());
|
var maxDate = parseDate($('#input-to').val());
|
||||||
var regattas = await dbGetRegattasRange(minDate, maxDate);
|
var regattas = await dbGetRegattasRange(minDate, maxDate);
|
||||||
@@ -65,9 +65,9 @@ var siteScript = async function() {
|
|||||||
var results = await dbGetDataIndex('results', 'regatta', entry['id']);
|
var results = await dbGetDataIndex('results', 'regatta', entry['id']);
|
||||||
regattaResults[entry['id']] = (results.length > 0);
|
regattaResults[entry['id']] = (results.length > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectedYear = $('#select-year').val();
|
var selectedYear = $('#select-year').val();
|
||||||
|
|
||||||
var years = await dbGetData('years');
|
var years = await dbGetData('years');
|
||||||
years.sort(function (a, b) {
|
years.sort(function (a, b) {
|
||||||
if (a['year'] > b['year']) return -1;
|
if (a['year'] > b['year']) return -1;
|
||||||
@@ -81,7 +81,7 @@ var siteScript = async function() {
|
|||||||
}
|
}
|
||||||
$('#select-year').html(options);
|
$('#select-year').html(options);
|
||||||
$('#select-year').val(selectedYear);
|
$('#select-year').val(selectedYear);
|
||||||
|
|
||||||
var count = regattas.length;
|
var count = regattas.length;
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
@@ -91,49 +91,49 @@ var siteScript = async function() {
|
|||||||
}
|
}
|
||||||
$('#div-regattas').show();
|
$('#div-regattas').show();
|
||||||
$('#input-search').parent().show();
|
$('#input-search').parent().show();
|
||||||
|
|
||||||
var heute = false;
|
var heute = false;
|
||||||
|
|
||||||
rows = [];
|
rows = [];
|
||||||
|
|
||||||
for (id in regattas) {
|
for (id in regattas) {
|
||||||
var entry = regattas[id];
|
var entry = regattas[id];
|
||||||
var club = null;
|
var club = null;
|
||||||
if (entry['club'] != null)
|
if (entry['club'] != null)
|
||||||
club = await dbGetData('clubs', entry['club']);
|
club = await dbGetData('clubs', entry['club']);
|
||||||
var plannings = await dbGetDataIndex('plannings', 'regatta', entry['id']);
|
var plannings = await dbGetDataIndex('plannings', 'regatta', entry['id']);
|
||||||
|
|
||||||
var dateFrom = entry['dateFrom'];
|
var dateFrom = entry['dateFrom'];
|
||||||
var dateTo = entry['dateTo'];
|
var dateTo = entry['dateTo'];
|
||||||
|
|
||||||
var row = { keywords: [], content: '' };
|
var row = { keywords: [], content: '' };
|
||||||
row.keywords.push(entry['name']);
|
row.keywords.push(entry['name']);
|
||||||
if (entry['number'] != null) row.keywords.push(entry['number']);
|
if (entry['number'] != null) row.keywords.push(entry['number']);
|
||||||
if (club != null) row.keywords.push(club['kurz'], club['name']);
|
if (club != null) row.keywords.push(club['kurz'], club['name']);
|
||||||
|
|
||||||
if (!heute && (today <= dateFrom)) {
|
if (!heute && (today <= dateFrom)) {
|
||||||
rows.push(null);
|
rows.push(null);
|
||||||
heute = true;
|
heute = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
row.content += '<div onclick="onRegattaClicked(' + entry['id'] + ');">';
|
row.content += '<div onclick="onRegattaClicked(' + entry['id'] + ');">';
|
||||||
|
|
||||||
// ZEILE 1
|
// ZEILE 1
|
||||||
// Name
|
// Name
|
||||||
row.content += '<div><b>' + (entry['canceled'] == 1 ? '<s>' : '') + entry['name'] + (entry['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
row.content += '<div><b>' + (entry['canceled'] == 1 ? '<s>' : '') + entry['name'] + (entry['canceled'] == 1 ? '</s>' : '') + '</b></div>';
|
||||||
|
|
||||||
// ZEILE 2
|
// ZEILE 2
|
||||||
row.content += '<div>';
|
row.content += '<div>';
|
||||||
|
|
||||||
// Number
|
// Number
|
||||||
row.content += '<div>' + ((entry['number'] != null) ? ('# ' + entry['number']) : '') + '</div>';
|
row.content += '<div>' + ((entry['number'] != null) ? ('# ' + entry['number']) : '') + '</div>';
|
||||||
|
|
||||||
// Club
|
// Club
|
||||||
row.content += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
row.content += '<div>' + ((club != null) ? club['kurz'] : '') + '</div>';
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
row.content += '<div>' + entry['special'] + '</div>';
|
row.content += '<div>' + entry['special'] + '</div>';
|
||||||
|
|
||||||
// Icons
|
// Icons
|
||||||
var icons = [];
|
var icons = [];
|
||||||
if (entry['info'] != '')
|
if (entry['info'] != '')
|
||||||
@@ -160,8 +160,10 @@ var siteScript = async function() {
|
|||||||
ms = parseDate(entry['meldungSchluss']);
|
ms = parseDate(entry['meldungSchluss']);
|
||||||
}
|
}
|
||||||
var diff = Math.round((ms - today) / 86400000);
|
var diff = Math.round((ms - today) / 86400000);
|
||||||
if ((ms >= today) && (diff < 7)) {
|
if (ms < today) {
|
||||||
color = ' color-red2-dark';
|
color = ' color-red2-dark';
|
||||||
|
} else if (diff < 7) {
|
||||||
|
color = ' color-yellow2-dark';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,12 +180,12 @@ var siteScript = async function() {
|
|||||||
icons.push('<i class="fas fa-poll"></i>');
|
icons.push('<i class="fas fa-poll"></i>');
|
||||||
}
|
}
|
||||||
row.content += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
row.content += '<div class="color-green2-dark">' + icons.join(' ') + '</div>';
|
||||||
|
|
||||||
row.content += '</div>';
|
row.content += '</div>';
|
||||||
|
|
||||||
// ZEILE 3
|
// ZEILE 3
|
||||||
row.content += '<div>';
|
row.content += '<div>';
|
||||||
|
|
||||||
// Date
|
// Date
|
||||||
if (entry['length'] < 1) {
|
if (entry['length'] < 1) {
|
||||||
if (formatDate('d.m', dateFrom) == '01.01') {
|
if (formatDate('d.m', dateFrom) == '01.01') {
|
||||||
@@ -194,26 +196,26 @@ var siteScript = async function() {
|
|||||||
} else {
|
} else {
|
||||||
row.content += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
row.content += '<div>' + formatDate("d.m.Y", dateFrom) + ' - ' + formatDate("d.m.Y", dateTo) + '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// RLF
|
// RLF
|
||||||
row.content += '<div>' + parseFloat(entry['rlf']).toFixed(2) + '</div>';
|
row.content += '<div>' + parseFloat(entry['rlf']).toFixed(2) + '</div>';
|
||||||
|
|
||||||
row.content += '</div></div>';
|
row.content += '</div></div>';
|
||||||
|
|
||||||
rows.push(row);
|
rows.push(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!heute) {
|
if (!heute) {
|
||||||
rows.push(null);
|
rows.push(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawList();
|
drawList();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$('#p-count').html('Keine Regatten gefunden!');
|
$('#p-count').html('Keine Regatten gefunden!');
|
||||||
$('#div-regattas').hide();
|
$('#div-regattas').hide();
|
||||||
$('#input-search').parent().hide();
|
$('#input-search').parent().hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
hideLoader();
|
hideLoader();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
define('PWA_VERSION', '1.6');
|
define('PWA_VERSION', '1.7');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
header('Content-Type: text/javascript');
|
header('Content-Type: text/javascript');
|
||||||
|
|
||||||
require_once(__DIR__ . '/server/config.php');
|
require_once(__DIR__ . '/server/config.php');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');
|
importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ workbox.precaching.precacheAndRoute([
|
|||||||
return $hash;
|
return $hash;
|
||||||
}
|
}
|
||||||
$hash = md5(getDirHash(__DIR__));
|
$hash = md5(getDirHash(__DIR__));
|
||||||
|
|
||||||
$path = __DIR__ . '/server/content/';
|
$path = __DIR__ . '/server/content/';
|
||||||
$dir = opendir($path);
|
$dir = opendir($path);
|
||||||
while ($file = readdir($dir)) {
|
while ($file = readdir($dir)) {
|
||||||
@@ -50,21 +50,25 @@ workbox.precaching.precacheAndRoute([
|
|||||||
echo "\t{url: '$file', revision: '$hash'},\n";
|
echo "\t{url: '$file', revision: '$hash'},\n";
|
||||||
}
|
}
|
||||||
closedir($dir);
|
closedir($dir);
|
||||||
|
|
||||||
// ASSETS
|
// ASSETS
|
||||||
$filesToCache = [
|
$filesToCache = [
|
||||||
'/manifest.json.php',
|
'/manifest.json.php',
|
||||||
];
|
];
|
||||||
$dirsToCache = [
|
$dirsToCache = [
|
||||||
'/client',
|
'/client/app',
|
||||||
|
'/client/fonts/css',
|
||||||
|
'/client/fonts/webfonts',
|
||||||
|
'/client/images',
|
||||||
|
'/client/scripts',
|
||||||
|
'/client/styles',
|
||||||
];
|
];
|
||||||
|
|
||||||
function addDir($path) {
|
function addDir($path) {
|
||||||
global $filesToCache;
|
global $filesToCache;
|
||||||
if ($dir = opendir(__DIR__ . $path)) {
|
if ($dir = opendir(__DIR__ . $path)) {
|
||||||
while (($file = readdir($dir)) !== false) {
|
while (($file = readdir($dir)) !== false) {
|
||||||
if ($file == '.') continue;
|
if (substr($file, 0, 1) == '.') continue;
|
||||||
if ($file == '..') continue;
|
|
||||||
if (is_dir(__DIR__ . $path . '/' . $file)) {
|
if (is_dir(__DIR__ . $path . '/' . $file)) {
|
||||||
addDir($path . '/' . $file);
|
addDir($path . '/' . $file);
|
||||||
} else {
|
} else {
|
||||||
@@ -74,11 +78,11 @@ workbox.precaching.precacheAndRoute([
|
|||||||
closedir($dir);
|
closedir($dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($dirsToCache as $path) {
|
foreach ($dirsToCache as $path) {
|
||||||
addDir($path);
|
addDir($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($filesToCache as $file) {
|
foreach ($filesToCache as $file) {
|
||||||
$revision = md5_file(__DIR__ . $file);
|
$revision = md5_file(__DIR__ . $file);
|
||||||
$file = SERVER_ADDR . $file;
|
$file = SERVER_ADDR . $file;
|
||||||
@@ -109,30 +113,41 @@ workbox.routing.registerRoute(
|
|||||||
|
|
||||||
// DB
|
// DB
|
||||||
|
|
||||||
var db = null;
|
function openDb() {
|
||||||
if (indexedDB) {
|
return new Promise(function(resolve) {
|
||||||
var request = indexedDB.open('regatten_app_db_<?php echo BOATCLASS; ?>');
|
if (indexedDB) {
|
||||||
request.onerror = function (e) {
|
var request = indexedDB.open('regatten_app_db_<?php echo BOATCLASS; ?>');
|
||||||
console.log('[sW] Cannot open DB:', e.target.errorCode);
|
request.onerror = function (e) {
|
||||||
};
|
console.log('[sW] Cannot open DB:', e.targer.errorCode);
|
||||||
request.onupgradeneeded = function (e) {
|
resolve(null);
|
||||||
console.log('[sW] DB does not exist');
|
};
|
||||||
e.target.transaction.abort();
|
request.onupgradeneeded = function (e) {
|
||||||
};
|
console.log('[sW] DB does not exist');
|
||||||
request.onsuccess = function (e) {
|
e.target.transaction.abort();
|
||||||
console.log('[sW] DB loaded');
|
resolve(null);
|
||||||
db = e.target.result;
|
};
|
||||||
db.onerror = function (e) {
|
request.onsuccess = function (e) {
|
||||||
console.log('[sW] DB Error:', e)
|
console.log('[sW] DB loaded');
|
||||||
|
var db = e.target.result;
|
||||||
|
db.onerror = function (e) {
|
||||||
|
console.log('[sW] DB Error:', e);
|
||||||
|
};
|
||||||
|
resolve(db);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resolve(null);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function dbSettingsGet(key) {
|
function dbSettingsGet(key) {
|
||||||
return new Promise(function(resolve) {
|
return new Promise(async function(resolve) {
|
||||||
if (db != null) {
|
var db = await openDb();
|
||||||
|
if (db !== null) {
|
||||||
var request = db.transaction('settings').objectStore('settings').get(key);
|
var request = db.transaction('settings').objectStore('settings').get(key);
|
||||||
request.onsuccess = function (event) {
|
request.onsuccess = function (event) {
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
resolve(typeof request.result != 'undefined' ? request.result.value : null);
|
resolve(typeof request.result != 'undefined' ? request.result.value : null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -141,10 +156,20 @@ function dbSettingsGet(key) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function dbSettingsSet(key, value) {
|
async function dbSettingsSet(key, value) {
|
||||||
|
var db = await openDb();
|
||||||
if (db != null) {
|
if (db != null) {
|
||||||
var os = db.transaction('settings', 'readwrite').objectStore('settings');
|
var os = db.transaction('settings', 'readwrite').objectStore('settings');
|
||||||
os.put({ key: key, value: value});
|
var request = os.put({ key: key, value: value});
|
||||||
|
request.onerror = function (event) {
|
||||||
|
console.log('[sW] Error while saving data to DB:', e);
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
|
request.onsuccess = function (event) {
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,7 +192,7 @@ function isMyRegatta(id) {
|
|||||||
|
|
||||||
self.addEventListener('push', async function(event) {
|
self.addEventListener('push', async function(event) {
|
||||||
console.log('[sW] Push received:', event.data.text());
|
console.log('[sW] Push received:', event.data.text());
|
||||||
|
|
||||||
var data;
|
var data;
|
||||||
try {
|
try {
|
||||||
data = JSON.parse(event.data.text());
|
data = JSON.parse(event.data.text());
|
||||||
@@ -175,14 +200,14 @@ self.addEventListener('push', async function(event) {
|
|||||||
console.log(e);
|
console.log(e);
|
||||||
data = undefined;
|
data = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof data.type !== "undefined") {
|
if (typeof data.type !== "undefined") {
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case 'notification':
|
case 'notification':
|
||||||
if (typeof data.title === "undefined") break;
|
if (typeof data.title === "undefined") break;
|
||||||
if (typeof data.body === "undefined") break;
|
if (typeof data.body === "undefined") break;
|
||||||
if (typeof data.channel === "undefined") break;
|
if (typeof data.channel === "undefined") break;
|
||||||
|
|
||||||
// check channel
|
// check channel
|
||||||
var okay = false;
|
var okay = false;
|
||||||
switch (data.channel) {
|
switch (data.channel) {
|
||||||
@@ -214,37 +239,74 @@ self.addEventListener('push', async function(event) {
|
|||||||
console.log('Notification channel not subscribed');
|
console.log('Notification channel not subscribed');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
data: data,
|
data: data,
|
||||||
body: data.body,
|
body: data.body,
|
||||||
icon: getEntry(data, 'icon', '<?php echo SERVER_ADDR; ?>/client/app/icons/icon-512x512.png'),
|
icon: getEntry(data, 'icon', '<?php echo SERVER_ADDR; ?>/client/app/icons/icon-512x512.png'),
|
||||||
badge: '<?php echo SERVER_ADDR; ?>/client/app/icons/icon-96x96.png',
|
badge: '<?php echo SERVER_ADDR; ?>/client/app/icons/badge-128x128.png',
|
||||||
vibrate: [500,100,500]
|
vibrate: [500,100,500]
|
||||||
};
|
};
|
||||||
if ((image = getEntry(data, 'image', null)) !== null) {
|
if ((image = getEntry(data, 'image', null)) !== null) {
|
||||||
options.image = image;
|
options.image = image;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force refresh on next app open
|
// Force refresh on next app open
|
||||||
var os = db.transaction('update_times', 'readwrite').objectStore('update_times');
|
var db = await openDb();
|
||||||
os.put({ table: 'last_sync', time: 0 });
|
if (db != null) {
|
||||||
|
var os = db.transaction('update_times', 'readwrite').objectStore('update_times');
|
||||||
|
var request = os.put({ table: 'last_sync', time: 0 });
|
||||||
|
request.onerror = function (event) {
|
||||||
|
console.log('[sW] Error while saving data to DB:', e);
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
|
request.onsuccess = function (event) {
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.log('Showing notification');
|
console.log('Showing notification');
|
||||||
self.registration.showNotification(data.title, options);
|
self.registration.showNotification(data.title, options);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'forcesync':
|
||||||
|
// Force refresh on next app open
|
||||||
|
var db = await openDb();
|
||||||
|
if (db != null) {
|
||||||
|
var os = db.transaction('update_times', 'readwrite').objectStore('update_times');
|
||||||
|
var request = os.put({ table: 'last_sync', time: 0 });
|
||||||
|
request.onerror = function (event) {
|
||||||
|
console.log('[sW] Error while saving data to DB:', e);
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
|
request.onsuccess = function (event) {
|
||||||
|
console.log('[sW] Data successfully saved');
|
||||||
|
db.close();
|
||||||
|
console.log('[sW] DB closed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
console.log('[sW] Push type unknown:', data.type);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
console.log('[sW] No push type given!');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
self.addEventListener('notificationclick', function(event) {
|
self.addEventListener('notificationclick', function(event) {
|
||||||
var data = event.notification.data;
|
var data = event.notification.data;
|
||||||
|
|
||||||
event.notification.close();
|
event.notification.close();
|
||||||
|
|
||||||
var url = '<?php echo SERVER_ADDR; ?>' + getEntry(data, 'url', '');
|
var url = '<?php echo SERVER_ADDR; ?>' + getEntry(data, 'url', '');
|
||||||
|
|
||||||
event.waitUntil(
|
event.waitUntil(
|
||||||
clients.openWindow(url)
|
clients.openWindow(url)
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user