Delete populated circuit groups safely
This commit is contained in:
@@ -55,11 +55,13 @@ import {
|
||||
buildCircuitGroupMovePlan,
|
||||
buildCircuitGroupRenumberPlan,
|
||||
buildCircuitGroupReorderAssignments,
|
||||
buildCircuitGroupSubtreeSnapshot,
|
||||
buildNewCircuitGroupSnapshot,
|
||||
canMoveCircuitToGroup,
|
||||
canRenumberCircuitGroups,
|
||||
canDeleteCircuitGroup,
|
||||
renameCircuitGroupSnapshot,
|
||||
summarizeCircuitGroupSubtree,
|
||||
toCircuitGroupSnapshot,
|
||||
} from "../utils/circuit-group-editing";
|
||||
import {
|
||||
@@ -87,6 +89,7 @@ import {
|
||||
deleteCircuitCommand,
|
||||
deleteCircuitDeviceRowCommand,
|
||||
deleteCircuitGroupCommand,
|
||||
deleteCircuitGroupSubtreeCommand,
|
||||
deleteDistributionBoardComponentCommand,
|
||||
getCircuitTree,
|
||||
getNextCircuitIdentifier,
|
||||
@@ -1222,23 +1225,40 @@ export function CircuitTreeEditor(props: { projectId: string; circuitListId: str
|
||||
});
|
||||
}
|
||||
|
||||
async function handleDeleteEmptyCircuitGroup(
|
||||
async function handleDeleteCircuitGroup(
|
||||
section: CircuitTreeResponseDto["sections"][number]
|
||||
) {
|
||||
if (!canDeleteCircuitGroup(section)) {
|
||||
return;
|
||||
}
|
||||
if (!confirm(`Leere Stromkreisgruppe „${section.displayName}“ entfernen?`)) {
|
||||
const isEmpty = canDeleteCircuitGroup(section);
|
||||
const subtree = isEmpty
|
||||
? null
|
||||
: buildCircuitGroupSubtreeSnapshot(section, circuitListId);
|
||||
const summary = subtree
|
||||
? summarizeCircuitGroupSubtree(subtree)
|
||||
: null;
|
||||
const warning = isEmpty
|
||||
? `Leere Stromkreisgruppe „${section.displayName}“ entfernen?`
|
||||
: `Stromkreisgruppe „${section.displayName}“ vollständig entfernen?\n\n` +
|
||||
`Dabei werden ${summary!.circuitCount} Stromkreis(e), ${summary!.deviceRowCount} Gerätezeile(n) und ${summary!.protectionComponentCount} Gruppenschutzgerät(e) gelöscht.\n\n` +
|
||||
"Die Änderung kann über die projektweite Versionshistorie rückgängig gemacht werden.";
|
||||
if (!confirm(warning)) {
|
||||
return;
|
||||
}
|
||||
await runCommand({
|
||||
label: "Leere Stromkreisgruppe entfernen",
|
||||
label: isEmpty
|
||||
? "Leere Stromkreisgruppe entfernen"
|
||||
: "Befüllte Stromkreisgruppe entfernen",
|
||||
redo: async () => {
|
||||
const result = await deleteCircuitGroupCommand(
|
||||
projectId,
|
||||
getExpectedProjectRevision(),
|
||||
toCircuitGroupSnapshot(section, circuitListId)
|
||||
);
|
||||
const result = subtree
|
||||
? await deleteCircuitGroupSubtreeCommand(
|
||||
projectId,
|
||||
getExpectedProjectRevision(),
|
||||
subtree
|
||||
)
|
||||
: await deleteCircuitGroupCommand(
|
||||
projectId,
|
||||
getExpectedProjectRevision(),
|
||||
toCircuitGroupSnapshot(section, circuitListId)
|
||||
);
|
||||
applyProjectCommandResult(result);
|
||||
setCircuitGroupEditorIntent(null);
|
||||
return null;
|
||||
@@ -3711,14 +3731,13 @@ export function CircuitTreeEditor(props: { projectId: string; circuitListId: str
|
||||
<button
|
||||
type="button"
|
||||
tabIndex={-1}
|
||||
disabled={!canDeleteCircuitGroup(section)}
|
||||
title={
|
||||
canDeleteCircuitGroup(section)
|
||||
? undefined
|
||||
: "Befüllte Gruppen werden später über einen eigenen Warn- und Löschdialog entfernt."
|
||||
? "Leere Stromkreisgruppe entfernen"
|
||||
: "Befüllte Stromkreisgruppe mit vollständiger Warnung entfernen"
|
||||
}
|
||||
onClick={() =>
|
||||
void handleDeleteEmptyCircuitGroup(section)
|
||||
void handleDeleteCircuitGroup(section)
|
||||
}
|
||||
>
|
||||
Gruppe entfernen
|
||||
|
||||
Reference in New Issue
Block a user