- 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