- Anpassung Serviceworker Cache - Anpassung Einstellungen - Funktion Export/Importbackup
parent
4e29a5e189
commit
e225877860
@ -0,0 +1,59 @@
|
||||
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("exported_data.json", jsonData);
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Exportieren der Daten:", error);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
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);
|
||||
};
|
||||
}
|
||||
Loading…
Reference in new issue