From 597c7e94931f1a747259ccd89a270c5e12126fec Mon Sep 17 00:00:00 2001 From: "ben.qin" Date: Thu, 21 Apr 2022 17:03:01 +0800 Subject: [PATCH] Add ctrl object archive function --- source/Model/CtrlObject.ts | 25 +++++++++++++++++++---- source/Model/Parameter.ts | 3 ++- source/Page/SimulatorWeb/SimulatorWeb.tsx | 5 ++++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/source/Model/CtrlObject.ts b/source/Model/CtrlObject.ts index 613355c..394bbc1 100644 --- a/source/Model/CtrlObject.ts +++ b/source/Model/CtrlObject.ts @@ -1,5 +1,6 @@ import { LabelObject } from "@Model/Label" import { v4 as uuid } from "uuid"; +import { parameter2ArchiveObject, archiveObject2Parameter, IArchiveParseFn } from "@Model/Parameter"; import type { IAnyObject, Model } from "@Model/Model"; import type { ObjectID } from "@Model/Model"; @@ -9,7 +10,7 @@ interface IArchiveCtrlObject { display: CtrlObject["display"]; update: CtrlObject["update"]; id: string; - renderParameter: Record; + renderParameter: any; deleteFlag: CtrlObject["deleteFlag"]; } @@ -109,11 +110,27 @@ class CtrlObject extends LabelObject { } public toArchive(): IArchiveCtrlObject { - return {} as any; + return { + displayName: this.displayName, + color: this.color.concat([]), + display: !!this.display, + update: !!this.update, + id: this.id, + renderParameter: parameter2ArchiveObject(this.renderParameter), + deleteFlag: !!this.deleteFlag + }; } - public fromArchive(archive: IArchiveCtrlObject): void { - + public fromArchive(archive: IArchiveCtrlObject, paster?: IArchiveParseFn): void { + this.displayName = archive.displayName; + this.color = archive.color.concat([]); + this.display = !!archive.display; + this.update = !!archive.update; + this.id = archive.id; + this.renderParameter = archiveObject2Parameter( + archive.renderParameter, paster ?? (() => undefined) + ); + this.deleteFlag = !!archive.deleteFlag; } } diff --git a/source/Model/Parameter.ts b/source/Model/Parameter.ts index 06a4683..b77702b 100644 --- a/source/Model/Parameter.ts +++ b/source/Model/Parameter.ts @@ -350,5 +350,6 @@ function archiveObject2Parameter

export { IParamType, IParamValue, isObjectType, isVectorType, getDefaultValue, IParameterOptionItem, IParameter, IParameterOption, IParameterValue, - object2ArchiveObject, parameter2ArchiveObject + object2ArchiveObject, parameter2ArchiveObject, archiveObject2Parameter, + IArchiveParseFn } \ No newline at end of file diff --git a/source/Page/SimulatorWeb/SimulatorWeb.tsx b/source/Page/SimulatorWeb/SimulatorWeb.tsx index b8ef191..0414893 100644 --- a/source/Page/SimulatorWeb/SimulatorWeb.tsx +++ b/source/Page/SimulatorWeb/SimulatorWeb.tsx @@ -153,7 +153,10 @@ class SimulatorWeb extends Component { }, 200) } - (window as any).s = this; + (window as any).LT = { + status: this.status, + setting: this.setting + }; } public componentDidMount() {