Compare commits
No commits in common. 'main' and 'Dienstjahr' have entirely different histories.
main
...
Dienstjahr
@ -1,59 +0,0 @@
|
||||
function getAllDataFromIndexedDB(dbName, storeName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = indexedDB.open(dbName);
|
||||
request.onsuccess = function () {
|
||||
const db = request.result;
|
||||
const transaction = db.transaction(storeName, "readonly");
|
||||
const store = transaction.objectStore(storeName);
|
||||
const data = [];
|
||||
const cursorRequest = store.openCursor();
|
||||
|
||||
cursorRequest.onsuccess = function (event) {
|
||||
const cursor = event.target.result;
|
||||
if (cursor) {
|
||||
data.push(cursor.value);
|
||||
cursor.continue();
|
||||
} else {
|
||||
resolve(data);
|
||||
}
|
||||
};
|
||||
|
||||
cursorRequest.onerror = function (event) {
|
||||
reject(event.target.error);
|
||||
};
|
||||
};
|
||||
|
||||
request.onerror = function (event) {
|
||||
reject(event.target.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function convertToJSON(data) {
|
||||
return JSON.stringify(data, null, 2); // Formatiertes JSON
|
||||
}
|
||||
|
||||
function downloadData(filename, content) {
|
||||
const blob = new Blob([content], { type: "application/json" }); // JSON als Beispiel
|
||||
const url = URL.createObjectURL(blob);
|
||||
const a = document.createElement("a");
|
||||
a.href = url;
|
||||
a.download = filename;
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
async function exportIndexedDBData() {
|
||||
const dbName = "myDB";
|
||||
const storeName = "hours";
|
||||
|
||||
try {
|
||||
const data = await getAllDataFromIndexedDB(dbName, storeName);
|
||||
const jsonData = convertToJSON(data);
|
||||
downloadData("piomint_backup.json", jsonData);
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Exportieren der Daten:", error);
|
||||
}
|
||||
}
|
||||
@ -1,64 +0,0 @@
|
||||
function triggerFileInput() {
|
||||
document.getElementById("fileInput").click();
|
||||
}
|
||||
|
||||
document.getElementById("fileInput").addEventListener("change", handleFileUpload);
|
||||
|
||||
function handleFileUpload(event) {
|
||||
const file = event.target.files[0];
|
||||
if (!file) return;
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
try {
|
||||
const data = JSON.parse(e.target.result);
|
||||
importDataToIndexedDB(data);
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Lesen der Datei:", error);
|
||||
alert("Ungültiges JSON-Format.");
|
||||
}
|
||||
};
|
||||
|
||||
reader.onerror = function () {
|
||||
console.error("Fehler beim Lesen der Datei.");
|
||||
};
|
||||
|
||||
reader.readAsText(file);
|
||||
}
|
||||
|
||||
function importDataToIndexedDB(data) {
|
||||
const dbName = "myDB";
|
||||
const storeName = "hours";
|
||||
|
||||
const request = indexedDB.open(dbName);
|
||||
|
||||
request.onsuccess = function () {
|
||||
const db = request.result;
|
||||
const transaction = db.transaction(storeName, "readwrite");
|
||||
const store = transaction.objectStore(storeName);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
data.forEach(item => {
|
||||
store.put(item);
|
||||
});
|
||||
} else {
|
||||
console.error("Die importierten Daten müssen ein Array sein.");
|
||||
alert("Ungültige Datenstruktur. Erwartet wird ein Array.");
|
||||
}
|
||||
|
||||
transaction.oncomplete = function () {
|
||||
if (alert("Daten erfolgreich importiert! \nBitte Seite aktualisieren...")) {
|
||||
location.reload(); // Seite neu laden
|
||||
}
|
||||
};
|
||||
|
||||
transaction.onerror = function () {
|
||||
console.error("Fehler beim Importieren der Daten:", transaction.error);
|
||||
alert("Fehler beim Importieren der Daten.");
|
||||
};
|
||||
};
|
||||
|
||||
request.onerror = function (event) {
|
||||
console.error("Fehler beim Öffnen der IndexedDB:", event.target.error);
|
||||
};
|
||||
}
|
||||
@ -1,22 +1,21 @@
|
||||
<br>
|
||||
<h1>Update Time!</h1>
|
||||
<br>
|
||||
<h5>v1.3.3</h5>
|
||||
<h5>v1.2.0</h5>
|
||||
<p>
|
||||
<b style="color: red">Fehler Behebung! 🔥</b>
|
||||
<br>Anicht vom falschen Jahr!
|
||||
<b style="color: red">WICHTIGE NEUIGKEIT!</b>
|
||||
<br>Wieder ein kleiner Schritt 😀
|
||||
<br>
|
||||
<br><b>Was ist neu?</b>
|
||||
<br> Aufrund des Dienstjahres was nicht mit Kalender
|
||||
<br> übereinstimmt, geht es gegen die Natur.
|
||||
<br> Du kannst jetzt die Monate wechseln.
|
||||
<br>
|
||||
<!-- <br><b>Hinweise:</b>
|
||||
<br> 1. Backup muss Manuell gemacht werden (aktuell)!
|
||||
<br> 2. Backup muss Gespeichert werden! */}}
|
||||
<br> -->
|
||||
<br>Danke für die Geduld und das du Piomint nutzt!
|
||||
<br><b>Gruß Samuel</b>
|
||||
<br><b>Wie?</b>
|
||||
<br> Tippe dazu einfach auf die "Monats"-Kachel
|
||||
<br> mit dem übersichtsbalken.
|
||||
<br>
|
||||
<br>Viel Freude beim Testen und Gruß,
|
||||
<br><b>Samuel</b>
|
||||
|
||||
</p>
|
||||
<br>
|
||||
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="1.3.3-5">
|
||||
<input type="text" name="versionnumber" id="versionnumber" class="d-none" value="1.2.0">
|
||||
@ -1,7 +0,0 @@
|
||||
asgiref==3.8.1
|
||||
Django==5.1.1
|
||||
django-pwa==2.0.0
|
||||
gunicorn==23.0.0
|
||||
mysqlclient==2.2.4
|
||||
packaging==24.1
|
||||
sqlparse==0.5.1
|
||||
Loading…
Reference in new issue