|
|
|
@@ -1,4 +1,4 @@
|
|
|
|
const DB_VERSION = 8;
|
|
|
|
const DB_VERSION = 9;
|
|
|
|
|
|
|
|
|
|
|
|
const USER_ID = localStorage.getItem('auth_user');
|
|
|
|
const USER_ID = localStorage.getItem('auth_user');
|
|
|
|
const USER_NAME = localStorage.getItem('auth_username');
|
|
|
|
const USER_NAME = localStorage.getItem('auth_username');
|
|
|
|
@@ -163,6 +163,15 @@ function dbGetResultCalculated(regatta) {
|
|
|
|
if (results.length > 0) {
|
|
|
|
if (results.length > 0) {
|
|
|
|
|
|
|
|
|
|
|
|
var gemeldet = results.length;
|
|
|
|
var gemeldet = results.length;
|
|
|
|
|
|
|
|
var started = [];
|
|
|
|
|
|
|
|
for (var i = 0; i < regatta['races']; i++) {
|
|
|
|
|
|
|
|
started[i] = 0;
|
|
|
|
|
|
|
|
for (id in results) {
|
|
|
|
|
|
|
|
if (results[id]['race' + (i + 1)] != 'DNC') {
|
|
|
|
|
|
|
|
started[i]++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (id in results) {
|
|
|
|
for (id in results) {
|
|
|
|
results[id]['finished'] = false;
|
|
|
|
results[id]['finished'] = false;
|
|
|
|
@@ -179,24 +188,25 @@ function dbGetResultCalculated(regatta) {
|
|
|
|
results[id]['texts'][i] = race;
|
|
|
|
results[id]['texts'][i] = race;
|
|
|
|
results[id]['finished'] = true;
|
|
|
|
results[id]['finished'] = true;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
var p1points = (regatta.a53 ? started[i] : gemeldet) + 1;
|
|
|
|
switch (race.toUpperCase()) {
|
|
|
|
switch (race.toUpperCase()) {
|
|
|
|
// Nicht gestartet
|
|
|
|
// Nicht gestartet
|
|
|
|
case 'DNC': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Did not come
|
|
|
|
case 'DNC': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Did not come
|
|
|
|
case 'DNS': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Did not started
|
|
|
|
case 'DNS': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Did not started
|
|
|
|
// Startfehler
|
|
|
|
// Startfehler
|
|
|
|
case 'OCS': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // On course site
|
|
|
|
case 'OCS': results[id]['values'][i] = p1points; copy[i] = p1points; break; // On course site
|
|
|
|
case 'UFD': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Uniform Flag Disqualified (disqu. nach 30.3)
|
|
|
|
case 'UFD': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Uniform Flag Disqualified (disqu. nach 30.3)
|
|
|
|
case 'BFD': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Black Flag Disqualified (disqu. nach 30.4)
|
|
|
|
case 'BFD': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Black Flag Disqualified (disqu. nach 30.4)
|
|
|
|
// Nicht durch Ziel gegangen
|
|
|
|
// Nicht durch Ziel gegangen
|
|
|
|
case 'DNF': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Did not finish
|
|
|
|
case 'DNF': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Did not finish
|
|
|
|
case 'RET': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Retired (Aufgegeben)
|
|
|
|
case 'RET': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Retired (Aufgegeben)
|
|
|
|
case 'RAF': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Retired after finish
|
|
|
|
case 'RAF': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Retired after finish
|
|
|
|
// Kursfehler
|
|
|
|
// Kursfehler
|
|
|
|
case 'NSC': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Not sailed course
|
|
|
|
case 'NSC': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Not sailed course
|
|
|
|
// Disqualifizierun
|
|
|
|
// Disqualifizierun
|
|
|
|
case 'DSQ': results[id]['values'][i] = gemeldet + 1; copy[i] = gemeldet + 1; break; // Disqualified
|
|
|
|
case 'DSQ': results[id]['values'][i] = p1points; copy[i] = p1points; break; // Disqualified
|
|
|
|
case 'DNE': results[id]['values'][i] = gemeldet + 1; copy[i] = -1; break; // Disqualified, not excludable (disqu. kann nach 90.3(b) nicht gestrichen werden)
|
|
|
|
case 'DNE': results[id]['values'][i] = p1points; copy[i] = -1; break; // Disqualified, not excludable (disqu. kann nach 90.3(b) nicht gestrichen werden)
|
|
|
|
case 'DGM': results[id]['values'][i] = gemeldet + 1; copy[i] = -2; break; // Disqualification Gross Missconduct (kann nach 69.1(b)(2) nicht gestr. werden, grobes Fehlverhalten)
|
|
|
|
case 'DGM': results[id]['values'][i] = p1points; copy[i] = -2; break; // Disqualification Gross Missconduct (kann nach 69.1(b)(2) nicht gestr. werden, grobes Fehlverhalten)
|
|
|
|
// Unbekannt
|
|
|
|
// Unbekannt
|
|
|
|
default: results[id]['values'][i] = 0; copy[i] = 0; break;
|
|
|
|
default: results[id]['values'][i] = 0; copy[i] = 0; break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -224,9 +234,10 @@ function dbGetResultCalculated(regatta) {
|
|
|
|
var netto = 0;
|
|
|
|
var netto = 0;
|
|
|
|
for (var i = 0; i < regatta['races']; i ++) {
|
|
|
|
for (var i = 0; i < regatta['races']; i ++) {
|
|
|
|
brutto += results[id]['values_all'][i];
|
|
|
|
brutto += results[id]['values_all'][i];
|
|
|
|
if (copy[i] == -1) { results[id]['values'][i] = gemeldet + 1; }
|
|
|
|
/*if (copy[i] == -1) { results[id]['values'][i] = gemeldet + 1; }
|
|
|
|
else if (copy[i] == -2) { results[id]['values'][i] = gemeldet + 1; }
|
|
|
|
else if (copy[i] == -2) { results[id]['values'][i] = gemeldet + 1; }
|
|
|
|
else { results[id]['values'][i] = copy[i]; }
|
|
|
|
else { results[id]['values'][i] = copy[i]; }*/
|
|
|
|
|
|
|
|
if (copy[i] == 0) results[id]['values'][i] = 0;
|
|
|
|
if (results[id]['values'][i] == 0) {
|
|
|
|
if (results[id]['values'][i] == 0) {
|
|
|
|
results[id]['texts'][i] = '[' + results[id]['texts'][i] + ']';
|
|
|
|
results[id]['texts'][i] = '[' + results[id]['texts'][i] + ']';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -608,7 +619,7 @@ function sync() {
|
|
|
|
localTimes[entry['table']] = entry['time'];
|
|
|
|
localTimes[entry['table']] = entry['time'];
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
syncInProgress = 13;
|
|
|
|
syncInProgress = 14;
|
|
|
|
var syncOkay = true;
|
|
|
|
var syncOkay = true;
|
|
|
|
log("[db] Sync Start");
|
|
|
|
log("[db] Sync Start");
|
|
|
|
$('#i-sync').addClass('fa-spin');
|
|
|
|
$('#i-sync').addClass('fa-spin');
|
|
|
|
@@ -997,8 +1008,35 @@ function sync() {
|
|
|
|
syncInProgress --;
|
|
|
|
syncInProgress --;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// FOLLOWS
|
|
|
|
|
|
|
|
getJSON(QUERY_URL + 'get_follows', function (code, data) {
|
|
|
|
|
|
|
|
if (code == 200) {
|
|
|
|
|
|
|
|
var os = db.transaction('follows', 'readwrite').objectStore('follows');
|
|
|
|
|
|
|
|
data.data.forEach(function (entry) {
|
|
|
|
|
|
|
|
os.put(entry);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
os.openCursor().onsuccess = function (event) {
|
|
|
|
|
|
|
|
var cursor = event.target.result;
|
|
|
|
|
|
|
|
if (cursor) {
|
|
|
|
|
|
|
|
if (!data.keys.includes(parseInt(cursor.key))) {
|
|
|
|
|
|
|
|
os.delete(cursor.key);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
cursor.continue();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
syncInProgress -= 3;
|
|
|
|
syncInProgress --;
|
|
|
|
|
|
|
|
log('[db] follows synced, remaining:', syncInProgress);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
log("[db] follows: Something went wrong (HTTP " + code + ")");
|
|
|
|
|
|
|
|
syncOkay = false;
|
|
|
|
|
|
|
|
syncInProgress --;
|
|
|
|
|
|
|
|
log('[db] follows failed, remaining:', syncInProgress);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
syncInProgress -= 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// NEWS
|
|
|
|
// NEWS
|
|
|
|
@@ -1225,6 +1263,11 @@ function initDatabase() {
|
|
|
|
var osRankings = db.createObjectStore('rankings', { keyPath: 'id' });
|
|
|
|
var osRankings = db.createObjectStore('rankings', { keyPath: 'id' });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((oldVersion < 9) && (newVersion >= 9)) {
|
|
|
|
|
|
|
|
log('[db] to version 9');
|
|
|
|
|
|
|
|
var osFollows = db.createObjectStore('follows', { keyPath: 'id' });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Force resync after db update
|
|
|
|
// Force resync after db update
|
|
|
|
if (oldVersion >= 1) {
|
|
|
|
if (oldVersion >= 1) {
|
|
|
|
var osUpdateTimes = upgradeTransaction.objectStore('update_times');
|
|
|
|
var osUpdateTimes = upgradeTransaction.objectStore('update_times');
|
|
|
|
|