Delete populated circuit groups safely
This commit is contained in:
@@ -16,6 +16,12 @@ import type {
|
||||
import type {
|
||||
CircuitGroupMovePlan,
|
||||
} from "../../domain/services/circuit-group-move-planning";
|
||||
import type {
|
||||
CircuitGroupSubtreeSnapshot,
|
||||
} from "../../domain/models/circuit-group-subtree-snapshot.model";
|
||||
import {
|
||||
toDistributionBoardComponentSnapshot,
|
||||
} from "./distribution-board-component-editing";
|
||||
|
||||
export function toCircuitGroupSnapshot(
|
||||
section: CircuitTreeSectionDto,
|
||||
@@ -86,6 +92,116 @@ export function canDeleteCircuitGroup(
|
||||
return section.circuits.length === 0 && section.components.length === 0;
|
||||
}
|
||||
|
||||
export function buildCircuitGroupSubtreeSnapshot(
|
||||
section: CircuitTreeSectionDto,
|
||||
circuitListId: string
|
||||
): CircuitGroupSubtreeSnapshot {
|
||||
const components = [...section.components]
|
||||
.sort(
|
||||
(left, right) =>
|
||||
left.sortOrder - right.sortOrder ||
|
||||
left.id.localeCompare(right.id)
|
||||
)
|
||||
.map(toDistributionBoardComponentSnapshot);
|
||||
const circuits = [...section.circuits]
|
||||
.sort(
|
||||
(left, right) =>
|
||||
left.sortOrder - right.sortOrder ||
|
||||
left.id.localeCompare(right.id)
|
||||
)
|
||||
.map((circuit) => ({
|
||||
circuit: {
|
||||
id: circuit.id,
|
||||
circuitListId: circuit.circuitListId,
|
||||
sectionId: circuit.sectionId,
|
||||
equipmentIdentifier: circuit.equipmentIdentifier,
|
||||
displayName: circuit.displayName ?? null,
|
||||
sortOrder: circuit.sortOrder,
|
||||
protectionType: circuit.protectionType ?? null,
|
||||
protectionRatedCurrent:
|
||||
circuit.protectionRatedCurrent ?? null,
|
||||
protectionCharacteristic:
|
||||
circuit.protectionCharacteristic ?? null,
|
||||
cableType: circuit.cableType ?? null,
|
||||
cableCrossSection: circuit.cableCrossSection ?? null,
|
||||
cableLength: circuit.cableLength ?? null,
|
||||
rcdAssignment: circuit.rcdAssignment ?? null,
|
||||
terminalDesignation: circuit.terminalDesignation ?? null,
|
||||
voltage: circuit.voltage ?? null,
|
||||
controlRequirement: circuit.controlRequirement ?? null,
|
||||
status: circuit.status ?? null,
|
||||
isReserve: circuit.isReserve,
|
||||
remark: circuit.remark ?? null,
|
||||
deviceRows: [...circuit.deviceRows]
|
||||
.sort(
|
||||
(left, right) =>
|
||||
left.sortOrder - right.sortOrder ||
|
||||
left.id.localeCompare(right.id)
|
||||
)
|
||||
.map((row) => ({
|
||||
id: row.id,
|
||||
circuitId: circuit.id,
|
||||
linkedProjectDeviceId:
|
||||
row.linkedProjectDeviceId ?? null,
|
||||
legacyConsumerId: row.legacyConsumerId ?? null,
|
||||
sortOrder: row.sortOrder,
|
||||
name: row.name,
|
||||
displayName: row.displayName,
|
||||
phaseType: row.phaseType ?? null,
|
||||
connectionKind: row.connectionKind ?? null,
|
||||
costGroup: row.costGroup ?? null,
|
||||
category: row.category ?? null,
|
||||
level: row.level ?? null,
|
||||
roomId: row.roomId ?? null,
|
||||
roomNumberSnapshot: row.roomNumberSnapshot ?? null,
|
||||
roomNameSnapshot: row.roomNameSnapshot ?? null,
|
||||
quantity: row.quantity,
|
||||
powerPerUnit: row.powerPerUnit,
|
||||
simultaneityFactor: row.simultaneityFactor,
|
||||
cosPhi: row.cosPhi ?? null,
|
||||
remark: row.remark ?? null,
|
||||
overriddenFields: row.overriddenFields ?? null,
|
||||
})),
|
||||
},
|
||||
protectionDevice: circuit.protectionDevice
|
||||
? {
|
||||
circuitId: circuit.id,
|
||||
type: circuit.protectionDevice.type,
|
||||
ratedCurrentA:
|
||||
circuit.protectionDevice.ratedCurrentA,
|
||||
fuseUtilizationCategory:
|
||||
circuit.protectionDevice.fuseUtilizationCategory ??
|
||||
null,
|
||||
tripCharacteristic:
|
||||
circuit.protectionDevice.tripCharacteristic ?? null,
|
||||
rcdType: circuit.protectionDevice.rcdType ?? null,
|
||||
ratedResidualCurrentMa:
|
||||
circuit.protectionDevice.ratedResidualCurrentMa ??
|
||||
null,
|
||||
}
|
||||
: null,
|
||||
}));
|
||||
return {
|
||||
group: toCircuitGroupSnapshot(section, circuitListId),
|
||||
components,
|
||||
circuits,
|
||||
};
|
||||
}
|
||||
|
||||
export function summarizeCircuitGroupSubtree(
|
||||
snapshot: CircuitGroupSubtreeSnapshot
|
||||
) {
|
||||
return {
|
||||
circuitCount: snapshot.circuits.length,
|
||||
deviceRowCount: snapshot.circuits.reduce(
|
||||
(count, entry) =>
|
||||
count + entry.circuit.deviceRows.length,
|
||||
0
|
||||
),
|
||||
protectionComponentCount: snapshot.components.length,
|
||||
};
|
||||
}
|
||||
|
||||
export function buildCircuitGroupReorderAssignments(
|
||||
sections: readonly CircuitTreeSectionDto[],
|
||||
groupId: string,
|
||||
|
||||
Reference in New Issue
Block a user