Include external models in project snapshots
This commit is contained in:
@@ -91,6 +91,13 @@ export function remapProjectState(
|
||||
circuit.deviceRows.map((row) => [row.id, createId()] as const)
|
||||
)
|
||||
);
|
||||
const externalSourceId = source.externalModel.source ? createId() : null;
|
||||
const externalBatchIds = idMap(source.externalModel.importBatches, createId);
|
||||
const externalRoomMappingIds = idMap(
|
||||
source.externalModel.roomMappings,
|
||||
createId
|
||||
);
|
||||
const externalObjectIds = idMap(source.externalModel.objects, createId);
|
||||
return parseProjectStateSnapshot({
|
||||
...source,
|
||||
project: { ...source.project, id: targetProjectId, name },
|
||||
@@ -102,6 +109,68 @@ export function remapProjectState(
|
||||
id: createId(),
|
||||
projectId: targetProjectId,
|
||||
},
|
||||
externalModel: {
|
||||
source: source.externalModel.source === null
|
||||
? null
|
||||
: {
|
||||
...source.externalModel.source,
|
||||
id: externalSourceId!,
|
||||
projectId: targetProjectId,
|
||||
},
|
||||
importBatches: source.externalModel.importBatches.map((batch) => ({
|
||||
...batch,
|
||||
id: requiredId(externalBatchIds, batch.id),
|
||||
projectId: targetProjectId,
|
||||
sourceId: externalSourceId!,
|
||||
})),
|
||||
roomMappings: source.externalModel.roomMappings.map((mapping) => ({
|
||||
...mapping,
|
||||
id: requiredId(externalRoomMappingIds, mapping.id),
|
||||
projectId: targetProjectId,
|
||||
sourceId: externalSourceId!,
|
||||
roomId:
|
||||
mapping.roomId === null
|
||||
? null
|
||||
: requiredId(roomIds, mapping.roomId),
|
||||
defaultDistributionBoardId:
|
||||
mapping.defaultDistributionBoardId === null
|
||||
? null
|
||||
: requiredId(boardIds, mapping.defaultDistributionBoardId),
|
||||
})),
|
||||
objects: source.externalModel.objects.map((object) => ({
|
||||
...object,
|
||||
id: requiredId(externalObjectIds, object.id),
|
||||
projectId: targetProjectId,
|
||||
sourceId: externalSourceId!,
|
||||
lastSeenImportBatchId: requiredId(
|
||||
externalBatchIds,
|
||||
object.lastSeenImportBatchId
|
||||
),
|
||||
lastAcceptedImportBatchId: requiredId(
|
||||
externalBatchIds,
|
||||
object.lastAcceptedImportBatchId
|
||||
),
|
||||
externalRoomMappingId:
|
||||
object.externalRoomMappingId === null
|
||||
? null
|
||||
: requiredId(
|
||||
externalRoomMappingIds,
|
||||
object.externalRoomMappingId
|
||||
),
|
||||
distributionBoardId:
|
||||
object.distributionBoardId === null
|
||||
? null
|
||||
: requiredId(boardIds, object.distributionBoardId),
|
||||
linkedProjectDeviceId:
|
||||
object.linkedProjectDeviceId === null
|
||||
? null
|
||||
: requiredId(deviceIds, object.linkedProjectDeviceId),
|
||||
circuitDeviceRowId:
|
||||
object.circuitDeviceRowId === null
|
||||
? null
|
||||
: requiredId(rowIds, object.circuitDeviceRowId),
|
||||
})),
|
||||
},
|
||||
distributionBoards: source.distributionBoards.map((board) => ({
|
||||
...board,
|
||||
id: requiredId(boardIds, board.id),
|
||||
|
||||
Reference in New Issue
Block a user