Download-Update

This commit is contained in:
2026-09-07 08:29:52 +02:00
parent 2c2620a624
commit 59722ee255
4 changed files with 92 additions and 6 deletions

View File

@@ -75,6 +75,9 @@ async function renderDashboard() {
<h1 class="view-title">Projekte</h1>
<div class="view-subtitle">Lege ein Projekt an, um STL- und 3MF-Dateien zu verwalten.</div>
</div>
<div class="header-actions">
<a class="btn" href="/api/download-all" download>Alle Projekte herunterladen</a>
</div>
`;
view.appendChild(header);
@@ -161,9 +164,14 @@ async function renderProject(name) {
<h1 class="view-title"></h1>
<div class="view-subtitle">STL- und 3MF-Dateien dieses Projekts.</div>
</div>
<button class="btn btn-danger" type="button" data-action="delete-project">Projekt löschen</button>
<div class="header-actions">
<a class="btn" data-action="download-project" download>Alle herunterladen</a>
<button class="btn btn-danger" type="button" data-action="delete-project">Projekt löschen</button>
</div>
`;
header.querySelector(".view-title").textContent = name;
header.querySelector('[data-action="download-project"]').href =
`/api/projects/${encodeURIComponent(name)}/download`;
header.querySelector('[data-action="delete-project"]').addEventListener("click", async () => {
if (!confirm(`Projekt "${name}" inklusive aller Dateien löschen?`)) return;
try {
@@ -275,6 +283,11 @@ async function loadFileGrid(projectName, container) {
card.querySelector(".file-card-meta").textContent =
`${file.type.toUpperCase()} · ${formatSize(file.size)}`;
const fileUrl = `/api/projects/${encodeURIComponent(projectName)}/files/${encodeURIComponent(file.name)}`;
const downloadLink = card.querySelector(".file-card-download");
downloadLink.href = fileUrl;
downloadLink.download = file.name;
card.querySelector(".file-card-delete").addEventListener("click", async (e) => {
e.stopPropagation();
if (!confirm(`"${file.name}" löschen?`)) return;