diff --git a/src/components/draw-app/DrawRelayCabinetProperties.vue b/src/components/draw-app/DrawRelayCabinetProperties.vue index 8606124..678f791 100644 --- a/src/components/draw-app/DrawRelayCabinetProperties.vue +++ b/src/components/draw-app/DrawRelayCabinetProperties.vue @@ -21,6 +21,12 @@ + @@ -33,6 +39,8 @@ import RelayCabinetProperty from './properties/RelayCabinetProperty.vue'; import { RelayCabinet } from 'src/graphics/relayCabinet/RelayCabinet'; import RelayProperty from './properties/RelayProperty.vue'; import { Relay } from 'src/graphics/relay/Relay'; +import PhaseFailureProtectorProperty from './properties/PhaseFailureProtectorProperty.vue'; +import { PhaseFailureProtector } from 'src/graphics/phaseFailureProtector/PhaseFailureProtector'; import { useRelayCabinetStore } from 'src/stores/relayCabinet-store'; const relayCabinetStore = useRelayCabinetStore(); diff --git a/src/components/draw-app/properties/PhaseFailureProtectorProperty.vue b/src/components/draw-app/properties/PhaseFailureProtectorProperty.vue new file mode 100644 index 0000000..e9d503d --- /dev/null +++ b/src/components/draw-app/properties/PhaseFailureProtectorProperty.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/draw-app/properties/RelateRelayConfig.vue b/src/components/draw-app/properties/RelateRelayConfig.vue index adb240e..12b46d8 100644 --- a/src/components/draw-app/properties/RelateRelayConfig.vue +++ b/src/components/draw-app/properties/RelateRelayConfig.vue @@ -103,6 +103,7 @@ import { RelateRelaylistItem, } from 'src/drawApp/relayCabinetLayoutApp'; import { graphicData } from 'src/protos/stationLayoutGraphics'; +import { PhaseFailureProtector } from 'src/graphics/phaseFailureProtector/PhaseFailureProtector'; defineExpose({ editRelateRelays }); @@ -138,7 +139,7 @@ watch( (val) => { if (val && val.length > 0 && clickIndex !== null) { const selectFilter = relayCabinetStore.selectedGraphics?.filter( - (g) => g.type == Relay.Type + (g) => g.type == Relay.Type || g.type == PhaseFailureProtector.Type ) as JlGraphic[]; selectGraphic.push(...selectFilter); selectGraphic = Array.from(new Set(selectGraphic)); diff --git a/src/drawApp/relayCabinetGraphics/PhaseFailureProtectorInteraction.ts b/src/drawApp/relayCabinetGraphics/PhaseFailureProtectorInteraction.ts new file mode 100644 index 0000000..e3c5a8f --- /dev/null +++ b/src/drawApp/relayCabinetGraphics/PhaseFailureProtectorInteraction.ts @@ -0,0 +1,46 @@ +import * as pb_1 from 'google-protobuf'; +import { + IPhaseFailureProtectorData, + PhaseFailureProtector, +} from 'src/graphics/phaseFailureProtector/PhaseFailureProtector'; +import { relayCabinetGraphicData } from 'src/protos/relayCabinetLayoutGraphics'; +import { GraphicDataBase } from '../graphics/GraphicDataBase'; + +export class PhaseFailureProtectorData + extends GraphicDataBase + implements IPhaseFailureProtectorData +{ + constructor(data?: relayCabinetGraphicData.PhaseFailureProtector) { + let phaseFailureProtector; + if (!data) { + phaseFailureProtector = new relayCabinetGraphicData.PhaseFailureProtector( + { + common: GraphicDataBase.defaultCommonInfo(PhaseFailureProtector.Type), + } + ); + } else { + phaseFailureProtector = data; + } + super(phaseFailureProtector); + } + + public get data(): relayCabinetGraphicData.PhaseFailureProtector { + return this.getData(); + } + + get code(): string { + return this.data.code; + } + set code(v: string) { + this.data.code = v; + } + clone(): PhaseFailureProtectorData { + return new PhaseFailureProtectorData(this.data.cloneMessage()); + } + copyFrom(data: PhaseFailureProtectorData): void { + pb_1.Message.copyInto(data.data, this.data); + } + eq(other: PhaseFailureProtectorData): boolean { + return pb_1.Message.equals(this.data, other.data); + } +} diff --git a/src/drawApp/relayCabinetGraphics/RelayInteraction.ts b/src/drawApp/relayCabinetGraphics/RelayInteraction.ts index 1539e07..c45873d 100644 --- a/src/drawApp/relayCabinetGraphics/RelayInteraction.ts +++ b/src/drawApp/relayCabinetGraphics/RelayInteraction.ts @@ -26,12 +26,6 @@ export class RelayData extends GraphicDataBase implements IRelayData { set code(v: string) { this.data.code = v; } - get model(): string { - return this.data.model; - } - set model(v: string) { - this.data.model = v; - } get newModel(): relayCabinetGraphicData.Relay.ModelType { return this.data.newModel; } diff --git a/src/drawApp/relayCabinetLayoutApp.ts b/src/drawApp/relayCabinetLayoutApp.ts index 961e1ac..f7968eb 100644 --- a/src/drawApp/relayCabinetLayoutApp.ts +++ b/src/drawApp/relayCabinetLayoutApp.ts @@ -27,6 +27,12 @@ import { RelayCabinetDraw } from 'src/graphics/relayCabinet/RelayCabinetDrawAssi import { Relay, RelayTemplate } from 'src/graphics/relay/Relay'; import { RelayData } from './relayCabinetGraphics/RelayInteraction'; import { RelayDraw } from 'src/graphics/relay/RelayDrawAssistant'; +import { + PhaseFailureProtector, + PhaseFailureProtectorTemplate, +} from 'src/graphics/phaseFailureProtector/PhaseFailureProtector'; +import { PhaseFailureProtectorData } from './relayCabinetGraphics/PhaseFailureProtectorInteraction'; +import { PhaseFailureProtectorDraw } from 'src/graphics/phaseFailureProtector/PhaseFailureProtectorDrawAssistant'; const UndoOptions: MenuItemOptions = { name: '撤销', @@ -70,6 +76,10 @@ export function initDrawApp(): IDrawApp { const app = drawApp; new RelayCabinetDraw(app, new RelayCabinetTemplate(new RelayCabinetData())); new RelayDraw(app, new RelayTemplate(new RelayData())); + new PhaseFailureProtectorDraw( + app, + new PhaseFailureProtectorTemplate(new PhaseFailureProtectorData()) + ); // 画布右键菜单 app.registerMenu(DefaultCanvasMenu); @@ -112,6 +122,15 @@ export function initDrawApp(): IDrawApp { relays.forEach((relay) => { relay.refDevice.text = map.get(relay.id) as string; }); + const phaseFailureProtectors = + app.queryStore.queryByType( + PhaseFailureProtector.Type + ); + phaseFailureProtectors.forEach((phaseFailureProtector) => { + phaseFailureProtector.refDevice.text = map.get( + phaseFailureProtector.id + ) as string; + }); }); app.on('destroy', async () => { refRelaysList = []; @@ -179,6 +198,12 @@ export function saveDrawDatas(app: IDrawApp) { const relayData = (g as Relay).saveData(); storage.relays.push((relayData as RelayData).data); } + if (PhaseFailureProtector.Type === g.type) { + const phaseFailureProtectorData = (g as PhaseFailureProtector).saveData(); + storage.phaseFailureProtectors.push( + (phaseFailureProtectorData as PhaseFailureProtectorData).data + ); + } }); storage.deviceRelateRelayList.push(...refRelaysList); storage.UniqueIdPrefix = UniqueIdPrefix; @@ -208,6 +233,9 @@ export async function loadDrawDatas(): Promise { storage.relays.forEach((relay) => { datas.push(new RelayData(relay)); }); + storage.phaseFailureProtectors.forEach((phaseFailureProtector) => { + datas.push(new PhaseFailureProtectorData(phaseFailureProtector)); + }); storage.deviceRelateRelayList.forEach((relay) => { refRelaysList.push(relay); }); diff --git a/src/graphics/phaseFailureProtector/PhaseFailureProtector.ts b/src/graphics/phaseFailureProtector/PhaseFailureProtector.ts new file mode 100644 index 0000000..b9d1bc1 --- /dev/null +++ b/src/graphics/phaseFailureProtector/PhaseFailureProtector.ts @@ -0,0 +1,98 @@ +import { Color, Graphics, Rectangle } from 'pixi.js'; +import { + GraphicData, + JlGraphic, + JlGraphicTemplate, + VectorText, + getRectangleCenter, +} from 'src/jl-graphic'; + +export interface IPhaseFailureProtectorData extends GraphicData { + get code(): string; // 编号 + set code(v: string); + clone(): IPhaseFailureProtectorData; + copyFrom(data: IPhaseFailureProtectorData): void; + eq(other: IPhaseFailureProtectorData): boolean; +} + +export const phaseFailureProtectorConsts = { + width: 16, + height: 16, + lineWidth: 3, + lineColor: '0xff0000', +}; +export class PhaseFailureProtector extends JlGraphic { + static Type = 'PhaseFailureProtector'; + phaseFailureProtectorGraphic: Graphics = new Graphics(); + labelGraphic = new VectorText(); + refDevice = new VectorText(); + + constructor() { + super(PhaseFailureProtector.Type); + this.addChild(this.phaseFailureProtectorGraphic); + this.setTextGraphic(this.labelGraphic, 'label'); + this.setTextGraphic(this.refDevice, 'refDevice'); + this.addChild(this.labelGraphic); + this.addChild(this.refDevice); + } + + get datas(): IPhaseFailureProtectorData { + return this.getDatas(); + } + doRepaint(): void { + this.labelGraphic.text = this.datas.code; + const labelPosition = this.datas.childTransforms?.find( + (t) => t.name === this.labelGraphic.name + )?.transform.position; + if (labelPosition) { + this.labelGraphic.position.set(labelPosition.x, labelPosition.y); + } else { + this.labelGraphic.position.set(0, 20); + } + this.refDevice.position.set(0, -20); + const phaseFailureProtectorGraphic = this.phaseFailureProtectorGraphic; + phaseFailureProtectorGraphic + .clear() + .lineStyle( + phaseFailureProtectorConsts.lineWidth, + new Color(phaseFailureProtectorConsts.lineColor) + ); + phaseFailureProtectorGraphic.beginFill( + phaseFailureProtectorConsts.lineColor + ); + phaseFailureProtectorGraphic.drawRect( + 0, + 0, + phaseFailureProtectorConsts.width, + phaseFailureProtectorConsts.height + ); + const rectP = new Rectangle( + 0, + 0, + phaseFailureProtectorConsts.width, + phaseFailureProtectorConsts.height + ); + phaseFailureProtectorGraphic.pivot = getRectangleCenter(rectP); + phaseFailureProtectorGraphic.endFill; + } + setTextGraphic(g: VectorText, name: string) { + g.setVectorFontSize(10); + g.anchor.set(0.5); + g.style.fill = '#0f0'; + g.transformSave = true; + g.name = name; + } +} + +export class PhaseFailureProtectorTemplate extends JlGraphicTemplate { + constructor(dataTemplate: IPhaseFailureProtectorData) { + super(PhaseFailureProtector.Type, { + dataTemplate, + }); + } + new(): PhaseFailureProtector { + const relay = new PhaseFailureProtector(); + relay.loadData(this.datas); + return relay; + } +} diff --git a/src/graphics/phaseFailureProtector/PhaseFailureProtectorDrawAssistant.ts b/src/graphics/phaseFailureProtector/PhaseFailureProtectorDrawAssistant.ts new file mode 100644 index 0000000..3802c6a --- /dev/null +++ b/src/graphics/phaseFailureProtector/PhaseFailureProtectorDrawAssistant.ts @@ -0,0 +1,127 @@ +import { FederatedPointerEvent, Point } from 'pixi.js'; +import { + AbsorbableLine, + AbsorbablePosition, + GraphicDrawAssistant, + GraphicInteractionPlugin, + IDrawApp, + JlGraphic, +} from 'src/jl-graphic'; + +import { + IPhaseFailureProtectorData, + PhaseFailureProtector, + PhaseFailureProtectorTemplate, +} from './PhaseFailureProtector'; +import { Relay } from '../relay/Relay'; + +export interface IPhaseFailureProtectorDrawOptions { + newData: () => IPhaseFailureProtectorData; +} + +export class PhaseFailureProtectorDraw extends GraphicDrawAssistant< + PhaseFailureProtectorTemplate, + IPhaseFailureProtectorData +> { + phaseFailureProtectorGraphic: PhaseFailureProtector; + + constructor(app: IDrawApp, template: PhaseFailureProtectorTemplate) { + super(app, template, 'sym_o_square', '断相保护器PhaseFailureProtector'); + this.phaseFailureProtectorGraphic = this.graphicTemplate.new(); + this.container.addChild(this.phaseFailureProtectorGraphic); + phaseFailureProtectorInteraction.init(app); + } + bind(): void { + super.bind(); + this.phaseFailureProtectorGraphic.loadData(this.graphicTemplate.datas); + this.phaseFailureProtectorGraphic.doRepaint(); + } + + clearCache(): void { + //this.phaseFailureProtectorGraphic.clear(); + } + onLeftDown(e: FederatedPointerEvent): void { + this.container.position.copyFrom(this.toCanvasCoordinates(e.global)); + this.createAndStore(true); + } + + redraw(p: Point): void { + this.container.position.copyFrom(p); + } + prepareData(data: IPhaseFailureProtectorData): boolean { + data.transform = this.container.saveTransform(); + return true; + } +} + +/** + * 构建吸附位置 + * @param polygon + * @returns + */ +function buildAbsorbablePositions( + phaseFailureProtectorCabinet: PhaseFailureProtector +): AbsorbablePosition[] { + const aps: AbsorbablePosition[] = []; + const relays = phaseFailureProtectorCabinet.queryStore.queryByType( + Relay.Type + ); + const phaseFailureProtectorCabinets = + phaseFailureProtectorCabinet.queryStore.queryByType( + PhaseFailureProtector.Type + ); + const { width, height } = phaseFailureProtectorCabinet.getGraphicApp().canvas; + relays.forEach((relay) => { + const ps = relay.position; + const xs = new AbsorbableLine({ x: 0, y: ps.y }, { x: width, y: ps.y }); + const ys = new AbsorbableLine({ x: ps.x, y: 0 }, { x: ps.x, y: height }); + aps.push(xs, ys); + }); + phaseFailureProtectorCabinets.forEach((other) => { + if (other.id == phaseFailureProtectorCabinet.id) { + return; + } + const ps = other.position; + const xs = new AbsorbableLine({ x: 0, y: ps.y }, { x: width, y: ps.y }); + const ys = new AbsorbableLine({ x: ps.x, y: 0 }, { x: ps.x, y: height }); + aps.push(xs, ys); + }); + return aps; +} + +export class phaseFailureProtectorInteraction extends GraphicInteractionPlugin { + static Name = 'phaseFailureProtector_transform'; + constructor(app: IDrawApp) { + super(phaseFailureProtectorInteraction.Name, app); + } + static init(app: IDrawApp) { + return new phaseFailureProtectorInteraction(app); + } + filter(...grahpics: JlGraphic[]): PhaseFailureProtector[] | undefined { + return grahpics + .filter((g) => g.type === PhaseFailureProtector.Type) + .map((g) => g as PhaseFailureProtector); + } + bind(g: PhaseFailureProtector): void { + g.eventMode = 'static'; + g.cursor = 'pointer'; + g.labelGraphic.eventMode = 'static'; + g.labelGraphic.selectable = true; + g.labelGraphic.draggable = true; + g.on('transformstart', this.move, this); + } + unbind(g: PhaseFailureProtector): void { + g.eventMode = 'none'; + g.labelGraphic.eventMode = 'none'; + g.labelGraphic.selectable = false; + g.labelGraphic.draggable = false; + g.off('transformstart', this.move, this); + } + move(): void { + const phaseFailureProtector = this.app + .selectedGraphics[0] as PhaseFailureProtector; + this.app.setOptions({ + absorbablePositions: buildAbsorbablePositions(phaseFailureProtector), + }); + } +} diff --git a/src/graphics/relay/Relay.ts b/src/graphics/relay/Relay.ts index 809492b..4242529 100644 --- a/src/graphics/relay/Relay.ts +++ b/src/graphics/relay/Relay.ts @@ -9,8 +9,6 @@ import { relayCabinetGraphicData } from 'src/protos/relayCabinetLayoutGraphics'; export interface IRelayData extends GraphicData { get code(): string; // 编号 set code(v: string); - get model(): string; // 型号 - set model(v: string); get newModel(): relayCabinetGraphicData.Relay.ModelType; // 计轴、区段边界 set newModel(v: relayCabinetGraphicData.Relay.ModelType); clone(): IRelayData; diff --git a/src/graphics/relay/RelayDrawAssistant.ts b/src/graphics/relay/RelayDrawAssistant.ts index bf1db73..c96a1a0 100644 --- a/src/graphics/relay/RelayDrawAssistant.ts +++ b/src/graphics/relay/RelayDrawAssistant.ts @@ -53,9 +53,9 @@ export class RelayDraw extends GraphicDrawAssistant { */ function buildAbsorbablePositions(relayCabinet: Relay): AbsorbablePosition[] { const aps: AbsorbablePosition[] = []; - const relayCabinets = relayCabinet.queryStore.queryByType(Relay.Type); + const relays = relayCabinet.queryStore.queryByType(Relay.Type); const { width, height } = relayCabinet.getGraphicApp().canvas; - relayCabinets.forEach((other) => { + relays.forEach((other) => { if (other.id == relayCabinet.id) { return; } diff --git a/src/layouts/RelayCabinetLayout.vue b/src/layouts/RelayCabinetLayout.vue index 1d63b83..de66816 100644 --- a/src/layouts/RelayCabinetLayout.vue +++ b/src/layouts/RelayCabinetLayout.vue @@ -185,6 +185,7 @@ import { ApiError } from 'src/boot/axios'; import { DialogChainObject, useQuasar } from 'quasar'; import { Relay } from 'src/graphics/relay/Relay'; import { RelayCabinet } from 'src/graphics/relayCabinet/RelayCabinet'; +import { PhaseFailureProtector } from 'src/graphics/phaseFailureProtector/PhaseFailureProtector'; import { relayCabinetGraphicData } from 'src/protos/relayCabinetLayoutGraphics'; const $q = useQuasar(); @@ -264,7 +265,11 @@ onMounted(() => { } else { relayCabinetStore.setDraftId(null); } - const drawAssistantsTypes = [Relay.Type, RelayCabinet.Type]; + const drawAssistantsTypes = [ + RelayCabinet.Type, + Relay.Type, + PhaseFailureProtector.Type, + ]; drawAssistantsTypes.forEach((type) => { const drawAssistant = getDrawApp()?.getDrawAssistant(type); if (drawAssistant) { diff --git a/src/protos/relayCabinetLayoutGraphics.ts b/src/protos/relayCabinetLayoutGraphics.ts index b95310c..b7b845f 100644 --- a/src/protos/relayCabinetLayoutGraphics.ts +++ b/src/protos/relayCabinetLayoutGraphics.ts @@ -14,9 +14,11 @@ export namespace relayCabinetGraphicData { relays?: Relay[]; deviceRelateRelayList?: DeviceRelateRelay[]; UniqueIdPrefix?: UniqueIdType; + phaseFailureProtectors?: PhaseFailureProtector[]; + combinationtypeList?: Combinationtype[]; }) { super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3, 4], this.#one_of_decls); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3, 4, 7, 8], this.#one_of_decls); if (!Array.isArray(data) && typeof data == "object") { if ("canvas" in data && data.canvas != undefined) { this.canvas = data.canvas; @@ -33,6 +35,12 @@ export namespace relayCabinetGraphicData { if ("UniqueIdPrefix" in data && data.UniqueIdPrefix != undefined) { this.UniqueIdPrefix = data.UniqueIdPrefix; } + if ("phaseFailureProtectors" in data && data.phaseFailureProtectors != undefined) { + this.phaseFailureProtectors = data.phaseFailureProtectors; + } + if ("combinationtypeList" in data && data.combinationtypeList != undefined) { + this.combinationtypeList = data.combinationtypeList; + } } } get canvas() { @@ -71,12 +79,26 @@ export namespace relayCabinetGraphicData { get has_UniqueIdPrefix() { return pb_1.Message.getField(this, 6) != null; } + get phaseFailureProtectors() { + return pb_1.Message.getRepeatedWrapperField(this, PhaseFailureProtector, 7) as PhaseFailureProtector[]; + } + set phaseFailureProtectors(value: PhaseFailureProtector[]) { + pb_1.Message.setRepeatedWrapperField(this, 7, value); + } + get combinationtypeList() { + return pb_1.Message.getRepeatedWrapperField(this, Combinationtype, 8) as Combinationtype[]; + } + set combinationtypeList(value: Combinationtype[]) { + pb_1.Message.setRepeatedWrapperField(this, 8, value); + } static fromObject(data: { canvas?: ReturnType; relayCabinets?: ReturnType[]; relays?: ReturnType[]; deviceRelateRelayList?: ReturnType[]; UniqueIdPrefix?: ReturnType; + phaseFailureProtectors?: ReturnType[]; + combinationtypeList?: ReturnType[]; }): RelayCabinetGraphicStorage { const message = new RelayCabinetGraphicStorage({}); if (data.canvas != null) { @@ -94,6 +116,12 @@ export namespace relayCabinetGraphicData { if (data.UniqueIdPrefix != null) { message.UniqueIdPrefix = UniqueIdType.fromObject(data.UniqueIdPrefix); } + if (data.phaseFailureProtectors != null) { + message.phaseFailureProtectors = data.phaseFailureProtectors.map(item => PhaseFailureProtector.fromObject(item)); + } + if (data.combinationtypeList != null) { + message.combinationtypeList = data.combinationtypeList.map(item => Combinationtype.fromObject(item)); + } return message; } toObject() { @@ -103,6 +131,8 @@ export namespace relayCabinetGraphicData { relays?: ReturnType[]; deviceRelateRelayList?: ReturnType[]; UniqueIdPrefix?: ReturnType; + phaseFailureProtectors?: ReturnType[]; + combinationtypeList?: ReturnType[]; } = {}; if (this.canvas != null) { data.canvas = this.canvas.toObject(); @@ -119,6 +149,12 @@ export namespace relayCabinetGraphicData { if (this.UniqueIdPrefix != null) { data.UniqueIdPrefix = this.UniqueIdPrefix.toObject(); } + if (this.phaseFailureProtectors != null) { + data.phaseFailureProtectors = this.phaseFailureProtectors.map((item: PhaseFailureProtector) => item.toObject()); + } + if (this.combinationtypeList != null) { + data.combinationtypeList = this.combinationtypeList.map((item: Combinationtype) => item.toObject()); + } return data; } serialize(): Uint8Array; @@ -135,6 +171,10 @@ export namespace relayCabinetGraphicData { writer.writeRepeatedMessage(4, this.deviceRelateRelayList, (item: DeviceRelateRelay) => item.serialize(writer)); if (this.has_UniqueIdPrefix) writer.writeMessage(6, this.UniqueIdPrefix, () => this.UniqueIdPrefix.serialize(writer)); + if (this.phaseFailureProtectors.length) + writer.writeRepeatedMessage(7, this.phaseFailureProtectors, (item: PhaseFailureProtector) => item.serialize(writer)); + if (this.combinationtypeList.length) + writer.writeRepeatedMessage(8, this.combinationtypeList, (item: Combinationtype) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); } @@ -159,6 +199,12 @@ export namespace relayCabinetGraphicData { case 6: reader.readMessage(message.UniqueIdPrefix, () => message.UniqueIdPrefix = UniqueIdType.deserialize(reader)); break; + case 7: + reader.readMessage(message.phaseFailureProtectors, () => pb_1.Message.addToRepeatedWrapperField(message, 7, PhaseFailureProtector.deserialize(reader), PhaseFailureProtector)); + break; + case 8: + reader.readMessage(message.combinationtypeList, () => pb_1.Message.addToRepeatedWrapperField(message, 8, Combinationtype.deserialize(reader), Combinationtype)); + break; default: reader.skipField(); } } @@ -393,6 +439,99 @@ export namespace relayCabinetGraphicData { JZXC_H18 = 8 } } + export class PhaseFailureProtector extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + common?: dependency_1.graphicData.CommonInfo; + code?: string; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("common" in data && data.common != undefined) { + this.common = data.common; + } + if ("code" in data && data.code != undefined) { + this.code = data.code; + } + } + } + get common() { + return pb_1.Message.getWrapperField(this, dependency_1.graphicData.CommonInfo, 1) as dependency_1.graphicData.CommonInfo; + } + set common(value: dependency_1.graphicData.CommonInfo) { + pb_1.Message.setWrapperField(this, 1, value); + } + get has_common() { + return pb_1.Message.getField(this, 1) != null; + } + get code() { + return pb_1.Message.getFieldWithDefault(this, 2, "") as string; + } + set code(value: string) { + pb_1.Message.setField(this, 2, value); + } + static fromObject(data: { + common?: ReturnType; + code?: string; + }): PhaseFailureProtector { + const message = new PhaseFailureProtector({}); + if (data.common != null) { + message.common = dependency_1.graphicData.CommonInfo.fromObject(data.common); + } + if (data.code != null) { + message.code = data.code; + } + return message; + } + toObject() { + const data: { + common?: ReturnType; + code?: string; + } = {}; + if (this.common != null) { + data.common = this.common.toObject(); + } + if (this.code != null) { + data.code = this.code; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.has_common) + writer.writeMessage(1, this.common, () => this.common.serialize(writer)); + if (this.code.length) + writer.writeString(2, this.code); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PhaseFailureProtector { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PhaseFailureProtector(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + reader.readMessage(message.common, () => message.common = dependency_1.graphicData.CommonInfo.deserialize(reader)); + break; + case 2: + message.code = reader.readString(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): PhaseFailureProtector { + return PhaseFailureProtector.deserialize(bytes); + } + } export class DeviceRelateRelay extends pb_1.Message { #one_of_decls: number[][] = []; constructor(data?: any[] | {