import type { ProjectRevisionSourceDto, ProjectRevisionSummaryDto, ProjectSnapshotMetadataDto, } from "../types"; const sourceLabels: Record = { user: "Bearbeitung", undo: "Rückgängig", redo: "Wiederholt", restore: "Wiederherstellung", migration: "Migration", }; const commandTypeLabels: Record = { "circuit.update": "Stromkreis bearbeitet", "circuit.insert": "Stromkreis angelegt", "circuit.delete": "Stromkreis gelöscht", "circuit-device-row.update": "Gerätezeile bearbeitet", "circuit-device-row.insert": "Gerätezeile angelegt", "circuit-device-row.delete": "Gerätezeile gelöscht", "circuit-device-row.move": "Gerätezeile verschoben", "circuit-device-row.move-with-new-circuit": "Gerätezeile in neuen Stromkreis verschoben", "circuit.reorder-section": "Stromkreise sortiert", "circuit.reorder-sections": "Stromkreise bereichsübergreifend sortiert", "circuit.renumber-section": "Bereich neu nummeriert", "project-device.update": "Projektgerät bearbeitet", "project-device.insert": "Projektgerät angelegt", "project-device.delete": "Projektgerät gelöscht", "project-device.sync-rows": "Projektgerät-Verknüpfungen geändert", "project.update-settings": "Projekteinstellungen bearbeitet", "distribution-board.insert": "Verteilung angelegt", "distribution-board.delete": "Verteilung entfernt", "project.restore-state": "Projektstand wiederhergestellt", }; export function getProjectRevisionSourceLabel( source: ProjectRevisionSourceDto ) { return sourceLabels[source]; } export function getProjectRevisionDescription( revision: ProjectRevisionSummaryDto ) { return ( revision.description?.trim() || commandTypeLabels[revision.commandType] || revision.commandType ); } export function getProjectSnapshotKindLabel( kind: ProjectSnapshotMetadataDto["kind"] ) { return kind === "automatic" ? "Automatisch" : "Benannt"; } export function mergeProjectRevisionPages( current: ProjectRevisionSummaryDto[], next: ProjectRevisionSummaryDto[] ) { const byId = new Map( [...current, ...next].map((revision) => [ revision.revisionId, revision, ]) ); return [...byId.values()].sort( (left, right) => right.revisionNumber - left.revisionNumber ); }