Skip to content
Snippets Groups Projects
Commit eb7be7f2 authored by Heinz-Ullrich Rings's avatar Heinz-Ullrich Rings
Browse files

changed all msgs to english

parent 2a9699f2
No related branches found
No related tags found
No related merge requests found
...@@ -30,9 +30,9 @@ ...@@ -30,9 +30,9 @@
const handleSave = async () => { const handleSave = async () => {
try { try {
await saveProjectsAsZip(); await saveProjectsAsZip();
console.log("Projekte wurden erfolgreich gespeichert."); console.log("Projects saved successfully");
} catch (error) { } catch (error) {
console.error("Fehler beim Speichern der Projekte:", error); console.error("Error while trying to save the project list", error);
} }
} }
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
if (fileInput) { if (fileInput) {
fileInput.click(); fileInput.click();
} else { } else {
console.error('Datei-Input-Element nicht gefunden.'); console.error('file-input not found');
} }
} }
</script> </script>
...@@ -66,14 +66,14 @@ ...@@ -66,14 +66,14 @@
<Button on:click={handleSave}> <Button on:click={handleSave}>
<Icon name="cloud-download"/> <Icon name="cloud-download"/>
Projekte als ZIP speichern Save Project list to a zip-file
</Button> </Button>
<input type="file" accept=".zip" id="file-input" on:change={handleFileUpload} style="display: none;" /> <input type="file" accept=".zip" id="file-input" on:change={handleFileUpload} style="display: none;" />
<Button on:click={triggerFileInput}> <Button on:click={triggerFileInput}>
<Icon name="cloud-upload"/> <Icon name="cloud-upload"/>
Project Liste von ZIP-Datei Load project Liste von zip-file
</Button> </Button>
{#if showModal} {#if showModal}
......
...@@ -2,9 +2,8 @@ import { writable } from 'svelte/store'; ...@@ -2,9 +2,8 @@ import { writable } from 'svelte/store';
import JSZip from 'jszip'; import JSZip from 'jszip';
//TODO project url and so
function getStoredProjects() { function getStoredProjects() {
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
const storedProjects = localStorage.getItem('userProjects'); const storedProjects = localStorage.getItem('userProjects');
return storedProjects ? JSON.parse(storedProjects) : []; return storedProjects ? JSON.parse(storedProjects) : [];
} }
...@@ -57,13 +56,14 @@ export function removeProjectbyId(id) { ...@@ -57,13 +56,14 @@ export function removeProjectbyId(id) {
* @typedef {Object} Project * @typedef {Object} Project
* @property {string} name - Der Name des Projekts * @property {string} name - Der Name des Projekts
* @property {number} id - Die Projektid * @property {number} id - Die Projektid
* very basic structure for the Projects
*/ */
/** /**
* Saves to Projects to a zip file * Saves to Projects to a zip file
* @returns {Promise<void>} * @returns {Promise<void>}
*/ */
export const saveProjectsAsZip = async ()=> { export const saveProjectsAsZip = async () => {
const zip = new JSZip(); const zip = new JSZip();
/** @type {Project[]} */ /** @type {Project[]} */
...@@ -76,51 +76,54 @@ export const saveProjectsAsZip = async ()=> { ...@@ -76,51 +76,54 @@ export const saveProjectsAsZip = async ()=> {
const folder = zip.folder(project.name); const folder = zip.folder(project.name);
if (folder) { if (folder) {
const fileContent = JSON.stringify({ id : project.id}, null, 2); const fileContent = JSON.stringify({ id: project.id }, null, 2);
folder.file("data.json", fileContent); folder.file("data.json", fileContent);
} else { } else {
console.error(`Could not create folder for project: ${project.name}`); console.error(`Could not create folder for project: ${project.name}`);
} }
}); });
const blob = await zip.generateAsync({ type: "blob" }); const blob = await zip.generateAsync({ type: "blob" });
const url = URL.createObjectURL(blob); const url = URL.createObjectURL(blob);
const a = document.createElement('a'); const a = document.createElement('a');
a.href = url; a.href = url;
a.download = 'projects.zip'; a.download = 'projects.zip';
a.click(); a.click();
URL.revokeObjectURL(url); URL.revokeObjectURL(url);
}; };
export const loadProjectsFromZip = (/** @type {File} */ file) => { /**
const zip = new JSZip(); * Loads the Project List from a zip file
zip.loadAsync(file).then(async (zipContent) => { */
/** @type {Project[]} */ export const loadProjectsFromZip = (/** @type {File} */ file) => {
const projectArray = []; const zip = new JSZip();
/** @type {any[]} */ zip.loadAsync(file).then(async (zipContent) => {
const promises = []; /** @type {Project[]} */
zipContent.forEach(async (relativePath, file) => { const projectArray = [];
const folderName = relativePath.split("/")[0]; /** @type {any[]} */
if (file.dir) return; const promises = [];
zipContent.forEach(async (relativePath, file) => {
const fileName = file.name.split("/")[1]; const folderName = relativePath.split("/")[0];
if (fileName === "data.json") { if (file.dir) return;
const promise = file.async("text").then(content => {
try { const fileName = file.name.split("/")[1];
const projectData = JSON.parse(content); if (fileName === "data.json") {
projectArray.push({ name: folderName, id: projectData.id }); const promise = file.async("text").then(content => {
} catch (error) { try {
console.error(`Fehler beim Verarbeiten von ${folderName}:`, error); const projectData = JSON.parse(content);
} projectArray.push({ name: folderName, id: projectData.id });
}); } catch (error) {
promises.push(promise); // Füge das Promise zum Array hinzu console.error(`Error while trying to load ${folderName}:`, error);
} }
}); });
await Promise.all(promises); promises.push(promise);
userProjects.set(projectArray); }
alert("Projekte erfolgreich geladen!");
}).catch(error => {
alert("Fehler beim Laden des ZIP-Archivs.");
console.error(error);
}); });
}; await Promise.all(promises);
\ No newline at end of file userProjects.set(projectArray);
alert("Project list loaded successfully");
}).catch(error => {
alert("Error while loading the project list from a file");
console.error(error);
});
};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment