Assets & Prozesse: Detail/Bearbeiten/Anlegen als Popups

- Wiederverwendbares, serverseitig gerendertes Modal (searchParams-
  gesteuert: ?detail= / ?edit= / ?new=1) — Browser-Zurück schließt,
  kein Client-State nötig
- Assets: Read-only-Detail-Popup (Stammdaten, C/I/A, Abhängigkeiten,
  Prozesse, Risiken-Platzhalter), Bearbeiten-Popup (Formular +
  Abhängigkeiten verwalten + Löschen), Anlegen-Popup
- Prozesse: "Bearbeiten" wechselt jetzt innerhalb des Popups in den
  Editiermodus (Stammdaten, Asset-Zuordnung, BIA, Löschen) statt auf
  die alte Detailseite zu springen; Anlegen ebenfalls als Popup
- Server-Actions leiten auf die Popup-URLs zurück (Speichern im
  Bearbeiten-Popup → Detail-Popup; BIA-/Zuordnungs-Änderungen lassen
  das Popup offen); BIA-Formular remountet nach dem Speichern (key)
- Alte Routen (/assets/[id], /assets/new, /processes/[id], …) leiten
  auf die Popup-URLs um

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Martin
2026-07-02 14:59:21 +02:00
co-authored by Claude Fable 5
parent 9997597663
commit c5a1f0095b
13 changed files with 811 additions and 789 deletions
+4 -6
View File
@@ -47,7 +47,7 @@ export async function createProcess(formData: FormData) {
after: data,
});
revalidatePath("/processes");
redirect(`/processes/${process.id}`);
redirect(`/processes?edit=${process.id}`);
}
export async function updateProcess(processId: string, formData: FormData) {
@@ -71,8 +71,7 @@ export async function updateProcess(processId: string, formData: FormData) {
after: data,
});
revalidatePath("/processes");
revalidatePath(`/processes/${processId}`);
redirect(`/processes/${processId}`);
redirect(`/processes?detail=${processId}`);
}
export async function deleteProcess(processId: string) {
@@ -123,7 +122,7 @@ export async function assignAsset(processId: string, formData: FormData) {
entityId: processId,
after: { processId, assetId, role },
});
revalidatePath(`/processes/${processId}`);
revalidatePath("/processes");
}
export async function unassignAsset(processId: string, processAssetId: string) {
@@ -143,7 +142,7 @@ export async function unassignAsset(processId: string, processAssetId: string) {
entityId: processAssetId,
before,
});
revalidatePath(`/processes/${processId}`);
revalidatePath("/processes");
}
const hours = z
@@ -188,5 +187,4 @@ export async function saveBia(processId: string, formData: FormData) {
after: { ...data, criticality },
});
revalidatePath("/processes");
revalidatePath(`/processes/${processId}`);
}