物理区段

This commit is contained in:
Yuan 2023-07-17 16:13:45 +08:00
parent 28ffe0f52b
commit e1353feb43
13 changed files with 489 additions and 48 deletions

@ -1 +1 @@
Subproject commit 0a7e6144bad3d943b5adfec4595c70209d8b1127 Subproject commit 6899504fef7c623a9539905812aba3a93a58395f

View File

@ -66,7 +66,7 @@ function main() {
recursiveGenerate(f, [], prepareCmds); recursiveGenerate(f, [], prepareCmds);
}); });
console.log(prepareCmds); // console.log(prepareCmds);
exec( exec(
prepareCmds.join(' && '), prepareCmds.join(' && '),

View File

@ -7,7 +7,14 @@
@blur="onUpdate" @blur="onUpdate"
label="编号" label="编号"
/> />
<q-field class="q-mt-lg" outlined label="关联区段" readonly stack-label> <q-field
v-if="!isTurnoutPhysicalSection"
class="q-mt-lg"
outlined
label="关联区段"
readonly
stack-label
>
<template #control> <template #control>
<q-chip <q-chip
color="primary" color="primary"
@ -19,7 +26,14 @@
> >
</template> </template>
</q-field> </q-field>
<q-field class="q-mt-lg" outlined label="关联道岔" readonly stack-label> <q-field
v-if="!isTurnoutPhysicalSection"
class="q-mt-lg"
outlined
label="关联道岔"
readonly
stack-label
>
<template #control> <template #control>
<q-chip <q-chip
color="primary" color="primary"
@ -31,16 +45,28 @@
> >
</template> </template>
</q-field> </q-field>
<q-field class="q-mt-lg" outlined label="计轴列表" readonly stack-label>
<template #control>
<q-chip
color="primary"
text-color="white"
v-for="code in axleCountingRelations"
:key="code"
square
>{{ code }}</q-chip
>
</template>
</q-field>
</q-form> </q-form>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { SectionData } from 'src/drawApp/graphics/SectionInteraction'; import { SectionData } from 'src/drawApp/graphics/SectionInteraction';
import { AxleCounting } from 'src/graphics/axleCounting/AxleCounting';
import { Section, SectionType } from 'src/graphics/section/Section'; import { Section, SectionType } from 'src/graphics/section/Section';
import { Turnout } from 'src/graphics/turnout/Turnout'; import { Turnout } from 'src/graphics/turnout/Turnout';
import { graphicData } from 'src/protos/stationLayoutGraphics';
import { useDrawStore } from 'src/stores/draw-store'; import { useDrawStore } from 'src/stores/draw-store';
import { computed, ref, shallowRef, toRaw, watchEffect } from 'vue'; import { computed, shallowRef, watchEffect } from 'vue';
const drawStore = useDrawStore(); const drawStore = useDrawStore();
@ -78,6 +104,24 @@ const turnoutRelations = computed(() => {
); );
}); });
const isTurnoutPhysicalSection = computed(() => {
const section = drawStore.selectedGraphic as Section;
return section.datas.sectionType === SectionType.TurnoutPhysical;
});
const axleCountingRelations = computed(() => {
const section = drawStore.selectedGraphic as Section;
const axleCountingRelations =
section.relationManage.getRelationsOfGraphicAndOtherType(
section,
AxleCounting.Type
);
return axleCountingRelations.map(
(relation) => relation.getOtherGraphic<AxleCounting>(section).datas.code
);
});
watchEffect(() => { watchEffect(() => {
const section = drawStore.selectedGraphic; const section = drawStore.selectedGraphic;
if (section && section instanceof Section) { if (section && section instanceof Section) {

View File

@ -0,0 +1,51 @@
import {
ILogicSectionData,
LogicSection,
} from 'src/graphics/logicSection/LogicSection';
import * as pb_1 from 'google-protobuf';
import { GraphicDataBase } from './GraphicDataBase';
import { graphicData } from 'src/protos/stationLayoutGraphics';
import { IPointData } from 'pixi.js';
export class LogicSectionData
extends GraphicDataBase
implements ILogicSectionData
{
constructor(data?: graphicData.Section) {
let section;
if (!data) {
section = new graphicData.Section({
common: GraphicDataBase.defaultCommonInfo(LogicSection.Type),
});
} else {
section = data;
}
super(section);
}
public get data(): graphicData.Section {
return this.getData<graphicData.Section>();
}
get code(): string {
return this.data.code;
}
set code(v: string) {
this.data.code = v;
}
get points(): IPointData[] {
return this.data.points;
}
set points(points: IPointData[]) {
this.data.points = points.map(
(p) => new graphicData.Point({ x: p.x, y: p.y })
);
}
clone(): LogicSectionData {
return new LogicSectionData(this.data.cloneMessage());
}
copyFrom(data: LogicSectionData): void {
pb_1.Message.copyInto(data.data, this.data);
}
eq(other: LogicSectionData): boolean {
return pb_1.Message.equals(this.data, other.data);
}
}

View File

@ -51,6 +51,12 @@ export class SectionData extends GraphicDataBase implements ISectionData {
set sectionType(type: graphicData.Section.SectionType) { set sectionType(type: graphicData.Section.SectionType) {
this.data.sectionType = type; this.data.sectionType = type;
} }
get axleCountings(): string[] {
return this.data.axleCountings;
}
set axleCountings(axleCountings: string[]) {
this.data.axleCountings = axleCountings;
}
get children(): string[] { get children(): string[] {
return this.data.children; return this.data.children;
} }

View File

@ -82,6 +82,9 @@ import { toStorageTransform } from './graphics/GraphicDataBase';
import { SeparatorDraw } from 'src/graphics/separator/SeparatorDrawAssistant'; import { SeparatorDraw } from 'src/graphics/separator/SeparatorDrawAssistant';
import { Separator, SeparatorTemplate } from 'src/graphics/separator/Separator'; import { Separator, SeparatorTemplate } from 'src/graphics/separator/Separator';
import { SeparatorData } from './graphics/SeparatorInteraction'; import { SeparatorData } from './graphics/SeparatorInteraction';
import { LogicSectionDraw } from 'src/graphics/logicSection/LogicSectionDrawAssistant';
import { LogicSectionTemplate } from 'src/graphics/logicSection/LogicSection';
import { LogicSectionData } from './graphics/LogicSectionInteraction';
// export function fromStoragePoint(p: graphicData.Point): Point { // export function fromStoragePoint(p: graphicData.Point): Point {
// return new Point(p.x, p.y); // return new Point(p.x, p.y);
@ -166,6 +169,7 @@ export function initDrawApp(dom: HTMLElement): JlDrawApp {
| TurnoutDraw | TurnoutDraw
| RunLineDraw | RunLineDraw
| SectionDraw | SectionDraw
| LogicSectionDraw
| StationLineDraw | StationLineDraw
| RectDraw | RectDraw
| TrainLineDraw | TrainLineDraw
@ -192,6 +196,10 @@ export function initDrawApp(dom: HTMLElement): JlDrawApp {
), ),
new TrainDraw(app, new TrainTemplate(new TrainData(), new TrainState())), new TrainDraw(app, new TrainTemplate(new TrainData(), new TrainState())),
new SectionDraw(app, new SectionTemplate(new SectionData())), new SectionDraw(app, new SectionTemplate(new SectionData())),
new LogicSectionDraw(
app,
new LogicSectionTemplate(new LogicSectionData())
),
new TurnoutDraw( new TurnoutDraw(
app, app,
new TurnoutTemplate(new TurnoutData(), new TurnoutStates()) new TurnoutTemplate(new TurnoutData(), new TurnoutStates())

View File

@ -0,0 +1,93 @@
import { Graphics, IPointData } from 'pixi.js';
import {
GraphicData,
JlGraphic,
JlGraphicTemplate,
VectorText,
} from 'src/jl-graphic';
import { ILineGraphic } from 'src/jl-graphic/plugins/GraphicEditPlugin';
import { SectionConsts } from '../section/Section';
export interface ILogicSectionData extends GraphicData {
get code(): string; // 编号
set code(v: string);
get points(): IPointData[]; // 线坐标点
set points(points: IPointData[]);
clone(): ILogicSectionData;
copyFrom(data: ILogicSectionData): void;
eq(other: ILogicSectionData): boolean;
}
export class LogicSection extends JlGraphic implements ILineGraphic {
static Type = 'LogicSection';
lineGraphic: Graphics;
labelGraphic: VectorText;
constructor() {
super(LogicSection.Type);
this.lineGraphic = new Graphics();
this.labelGraphic = new VectorText();
this.labelGraphic.setVectorFontSize(14);
this.labelGraphic.anchor.set(0.5);
this.labelGraphic.style.fill = '#0f0';
this.labelGraphic.transformSave = true;
this.labelGraphic.name = 'label';
this.transformSave = true;
this.addChild(this.lineGraphic);
this.addChild(this.labelGraphic);
}
get datas(): ILogicSectionData {
return this.getDatas<ILogicSectionData>();
}
get linePoints(): IPointData[] {
return this.datas.points;
}
set linePoints(points: IPointData[]) {
const old = this.datas.clone();
old.points = points;
this.updateData(old);
}
doRepaint() {
if (this.datas.points.length < 2) {
throw new Error('Link坐标数据异常');
}
this.lineGraphic.clear();
this.lineGraphic.lineStyle(
SectionConsts.lineWidth,
SectionConsts.lineColor
);
this.datas.points.forEach((p, i) => {
if (i !== 0) {
this.lineGraphic.lineTo(p.x, p.y);
} else {
this.lineGraphic.moveTo(p.x, p.y);
}
});
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(
this.datas.points[0].x,
this.datas.points[0].y + 20
);
}
}
}
export class LogicSectionTemplate extends JlGraphicTemplate<LogicSection> {
constructor(dataTemplate: ILogicSectionData) {
super(LogicSection.Type, { dataTemplate });
}
new() {
return new LogicSection();
}
}

View File

@ -0,0 +1,34 @@
import { GraphicDrawAssistant, JlDrawApp } from 'src/jl-graphic';
import { LogicSectionTemplate } from './LogicSection';
import { LogicSectionData } from 'src/drawApp/graphics/LogicSectionInteraction';
import { Graphics, Point } from 'pixi.js';
import { SectionConsts } from '../section/Section';
export class LogicSectionDraw extends GraphicDrawAssistant<
LogicSectionTemplate,
LogicSectionData
> {
points: Point[] = [];
graphic = new Graphics();
constructor(app: JlDrawApp, template: LogicSectionTemplate) {
super(app, template, 'sym_o_timeline', '不展示');
this.container.addChild(this.graphic);
}
redraw(cp: Point): void {
if (this.points.length < 1) return;
this.graphic.clear();
this.graphic.lineStyle(SectionConsts.lineWidth, SectionConsts.lineColor);
this.points.forEach((p, i) => {
if (i !== 0) {
this.graphic.lineTo(p.x, p.y);
} else {
this.graphic.moveTo(p.x, p.y);
}
});
this.graphic.lineTo(cp.x, cp.y);
}
prepareData(data: LogicSectionData): boolean {
return true;
}
}

View File

@ -16,12 +16,11 @@ import {
protoPort2Data, protoPort2Data,
} from '../CommonGraphics'; } from '../CommonGraphics';
import { Turnout } from '../turnout/Turnout'; import { Turnout } from '../turnout/Turnout';
import { SectionData } from 'src/drawApp/graphics/SectionInteraction';
import Vector2 from 'src/jl-graphic/math/Vector2'; import Vector2 from 'src/jl-graphic/math/Vector2';
import { AxleCounting } from '../axleCounting/AxleCounting';
export enum SectionType { export enum SectionType {
Physical = 0, Physical = 0,
Logic = 1,
TurnoutPhysical = 2, TurnoutPhysical = 2,
} }
@ -41,6 +40,8 @@ export interface ISectionData extends GraphicData {
set pbRef(ref: IRelatedRefData | undefined); set pbRef(ref: IRelatedRefData | undefined);
get sectionType(): SectionType; get sectionType(): SectionType;
set sectionType(type: SectionType); set sectionType(type: SectionType);
get axleCountings(): string[];
set axleCountings(axleCountings: string[]);
get children(): string[]; get children(): string[];
set children(children: string[]); set children(children: string[]);
clone(): ISectionData; clone(): ISectionData;
@ -82,7 +83,10 @@ export class Section extends JlGraphic implements ILineGraphic {
} }
this.lineGraphic.clear(); this.lineGraphic.clear();
if (this.datas.sectionType === SectionType.Physical) { if (
this.datas.sectionType === SectionType.Physical &&
!(this.datas.children?.length > 0)
) {
this.lineGraphic.lineStyle( this.lineGraphic.lineStyle(
SectionConsts.lineWidth, SectionConsts.lineWidth,
SectionConsts.lineColor SectionConsts.lineColor
@ -285,6 +289,14 @@ export class Section extends JlGraphic implements ILineGraphic {
) )
); );
} }
if (this.datas.axleCountings) {
this.datas.axleCountings.forEach((acId) => {
this.relationManage.addRelation(
this,
this.queryStore.queryById<AxleCounting>(acId)
);
});
}
} }
} }

View File

@ -49,6 +49,9 @@ import { SectionData } from 'src/drawApp/graphics/SectionInteraction';
import { graphicData } from 'src/protos/stationLayoutGraphics'; import { graphicData } from 'src/protos/stationLayoutGraphics';
import SectionSplitDialog from 'src/components/draw-app/dialogs/SectionSplitDialog.vue'; import SectionSplitDialog from 'src/components/draw-app/dialogs/SectionSplitDialog.vue';
import { AxleCounting } from '../axleCounting/AxleCounting'; import { AxleCounting } from '../axleCounting/AxleCounting';
import { LogicSectionData } from 'src/drawApp/graphics/LogicSectionInteraction';
import { LogicSectionDraw } from '../logicSection/LogicSectionDrawAssistant';
import { LogicSection } from '../logicSection/LogicSection';
export class SectionDraw extends GraphicDrawAssistant< export class SectionDraw extends GraphicDrawAssistant<
SectionTemplate, SectionTemplate,
@ -172,13 +175,16 @@ export class SectionDraw extends GraphicDrawAssistant<
turnoutPhysicalSectionData.axleCountings = result.axleCountings.map( turnoutPhysicalSectionData.axleCountings = result.axleCountings.map(
(ac) => ac.datas.id (ac) => ac.datas.id
); );
turnoutPhysicalSectionData.code = result.turnouts turnoutPhysicalSectionData.code = 'DG000';
.map((t) => t.datas.code) let labelPosition: IPointData;
.join('-'); if (result.turnouts.length === 2) {
const labelPosition = calculateLineMidpoint( labelPosition = calculateLineMidpoint(
result.turnouts[0].position, result.turnouts[0].position,
result.turnouts[1].position result.turnouts[1].position
); );
} else {
labelPosition = { x: result.turnouts[0].x, y: result.turnouts[0].y };
}
labelPosition.y += 20; labelPosition.y += 20;
const labelTransform = GraphicTransform.default(); const labelTransform = GraphicTransform.default();
labelTransform.position = labelPosition; labelTransform.position = labelPosition;
@ -206,6 +212,11 @@ class SectionGraphicHitArea implements IHitArea {
this.section = section; this.section = section;
} }
contains(x: number, y: number): boolean { contains(x: number, y: number): boolean {
if (
this.section.datas.sectionType === SectionType.Physical &&
this.section.datas.children?.length > 0
)
return false;
for (let i = 1; i < this.section.datas.points.length; i++) { for (let i = 1; i < this.section.datas.points.length; i++) {
const p1 = this.section.datas.points[i - 1]; const p1 = this.section.datas.points[i - 1];
const p2 = this.section.datas.points[i]; const p2 = this.section.datas.points[i];
@ -436,8 +447,8 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
}; };
if ( if (
section.datas.children && section.datas.sectionType === SectionType.Physical &&
section.datas.sectionType === SectionType.Physical !(section.datas.children?.length > 0)
) { ) {
splitSectionConfig.disabled = false; splitSectionConfig.disabled = false;
splitSectionConfig.handler = () => { splitSectionConfig.handler = () => {
@ -451,7 +462,7 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
const { num, dir } = data; const { num, dir } = data;
const sectionData = section.datas; const sectionData = section.datas;
const points = section.getSplitPoints(num); const points = section.getSplitPoints(num);
const children: Section[] = []; const children: LogicSection[] = [];
let codeAppend = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.slice(0, num); let codeAppend = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.slice(0, num);
if ( if (
(dir === 'ltr' && (dir === 'ltr' &&
@ -464,14 +475,15 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
codeAppend = codeAppend.split('').reverse().join(''); codeAppend = codeAppend.split('').reverse().join('');
} }
points.forEach((ps, i) => { points.forEach((ps, i) => {
const data = new SectionData(); const data = new LogicSectionData();
data.id = this.drawAssistant.nextId(); const logicSectionDA = this.drawAssistant.app.drawAssistants.find(
data.code = `${sectionData.code}-${codeAppend.charAt(i % 26)}`; (da) => da instanceof LogicSectionDraw
data.sectionType = SectionType.Logic; ) as LogicSectionDraw;
data.id = logicSectionDA.nextId();
data.code = `${codeAppend.charAt(i % 26)}`;
data.points = ps.map( data.points = ps.map(
(p) => new graphicData.Point({ x: p.x, y: p.y }) (p) => new graphicData.Point({ x: p.x, y: p.y })
); );
data.id = this.drawAssistant.nextId();
data.childTransforms = [ data.childTransforms = [
new ChildTransform( new ChildTransform(
'label', 'label',
@ -491,9 +503,9 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
) )
), ),
]; ];
const g = this.drawAssistant.graphicTemplate.new(); const g = logicSectionDA.graphicTemplate.new();
g.loadData(data); g.loadData(data);
this.drawAssistant.storeGraphic(g); logicSectionDA.storeGraphic(g);
children.push(g); children.push(g);
}); });
sectionData.children = children.map((g) => g.datas.id); sectionData.children = children.map((g) => g.datas.id);
@ -513,10 +525,7 @@ export class SectionPointEditPlugin extends GraphicInteractionPlugin<Section> {
onSelected(g: DisplayObject): void { onSelected(g: DisplayObject): void {
const section = g as Section; const section = g as Section;
if ( if (section.datas.sectionType === SectionType.TurnoutPhysical) {
section.datas.children.length > 0 &&
section.datas.sectionType === SectionType.Physical
) {
return; return;
} }
let lep = section.getAssistantAppend<SectionPolylineEditPlugin>( let lep = section.getAssistantAppend<SectionPolylineEditPlugin>(

View File

@ -4,7 +4,7 @@
* source: alertInfo.proto * source: alertInfo.proto
* git: https://github.com/thesayyn/protoc-gen-ts */ * git: https://github.com/thesayyn/protoc-gen-ts */
import * as pb_1 from "google-protobuf"; import * as pb_1 from "google-protobuf";
export namespace state { export namespace alert {
export class NccAlertInfoMessage extends pb_1.Message { export class NccAlertInfoMessage extends pb_1.Message {
#one_of_decls: number[][] = []; #one_of_decls: number[][] = [];
constructor(data?: any[] | { constructor(data?: any[] | {
@ -81,6 +81,8 @@ export namespace state {
alert_time?: string; alert_time?: string;
info?: string; info?: string;
alert_tip_id?: number; alert_tip_id?: number;
device_info?: string;
reason?: string;
}) { }) {
super(); super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
@ -100,6 +102,12 @@ export namespace state {
if ("alert_tip_id" in data && data.alert_tip_id != undefined) { if ("alert_tip_id" in data && data.alert_tip_id != undefined) {
this.alert_tip_id = data.alert_tip_id; this.alert_tip_id = data.alert_tip_id;
} }
if ("device_info" in data && data.device_info != undefined) {
this.device_info = data.device_info;
}
if ("reason" in data && data.reason != undefined) {
this.reason = data.reason;
}
} }
} }
get id() { get id() {
@ -132,12 +140,26 @@ export namespace state {
set alert_tip_id(value: number) { set alert_tip_id(value: number) {
pb_1.Message.setField(this, 5, value); pb_1.Message.setField(this, 5, value);
} }
get device_info() {
return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
}
set device_info(value: string) {
pb_1.Message.setField(this, 6, value);
}
get reason() {
return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
}
set reason(value: string) {
pb_1.Message.setField(this, 7, value);
}
static fromObject(data: { static fromObject(data: {
id?: string; id?: string;
level?: string; level?: string;
alert_time?: string; alert_time?: string;
info?: string; info?: string;
alert_tip_id?: number; alert_tip_id?: number;
device_info?: string;
reason?: string;
}): Message { }): Message {
const message = new Message({}); const message = new Message({});
if (data.id != null) { if (data.id != null) {
@ -155,6 +177,12 @@ export namespace state {
if (data.alert_tip_id != null) { if (data.alert_tip_id != null) {
message.alert_tip_id = data.alert_tip_id; message.alert_tip_id = data.alert_tip_id;
} }
if (data.device_info != null) {
message.device_info = data.device_info;
}
if (data.reason != null) {
message.reason = data.reason;
}
return message; return message;
} }
toObject() { toObject() {
@ -164,6 +192,8 @@ export namespace state {
alert_time?: string; alert_time?: string;
info?: string; info?: string;
alert_tip_id?: number; alert_tip_id?: number;
device_info?: string;
reason?: string;
} = {}; } = {};
if (this.id != null) { if (this.id != null) {
data.id = this.id; data.id = this.id;
@ -180,6 +210,12 @@ export namespace state {
if (this.alert_tip_id != null) { if (this.alert_tip_id != null) {
data.alert_tip_id = this.alert_tip_id; data.alert_tip_id = this.alert_tip_id;
} }
if (this.device_info != null) {
data.device_info = this.device_info;
}
if (this.reason != null) {
data.reason = this.reason;
}
return data; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
@ -196,6 +232,10 @@ export namespace state {
writer.writeString(4, this.info); writer.writeString(4, this.info);
if (this.alert_tip_id != 0) if (this.alert_tip_id != 0)
writer.writeInt32(5, this.alert_tip_id); writer.writeInt32(5, this.alert_tip_id);
if (this.device_info.length)
writer.writeString(6, this.device_info);
if (this.reason.length)
writer.writeString(7, this.reason);
if (!w) if (!w)
return writer.getResultBuffer(); return writer.getResultBuffer();
} }
@ -220,6 +260,12 @@ export namespace state {
case 5: case 5:
message.alert_tip_id = reader.readInt32(); message.alert_tip_id = reader.readInt32();
break; break;
case 6:
message.device_info = reader.readString();
break;
case 7:
message.reason = reader.readString();
break;
default: reader.skipField(); default: reader.skipField();
} }
} }

View File

@ -3392,9 +3392,10 @@ export namespace graphicData {
pbRef?: RelatedRef; pbRef?: RelatedRef;
sectionType?: Section.SectionType; sectionType?: Section.SectionType;
axleCountings?: string[]; axleCountings?: string[];
children?: string[];
}) { }) {
super(); super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 7], this.#one_of_decls); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 7, 8], this.#one_of_decls);
if (!Array.isArray(data) && typeof data == "object") { if (!Array.isArray(data) && typeof data == "object") {
if ("common" in data && data.common != undefined) { if ("common" in data && data.common != undefined) {
this.common = data.common; this.common = data.common;
@ -3417,6 +3418,9 @@ export namespace graphicData {
if ("axleCountings" in data && data.axleCountings != undefined) { if ("axleCountings" in data && data.axleCountings != undefined) {
this.axleCountings = data.axleCountings; this.axleCountings = data.axleCountings;
} }
if ("children" in data && data.children != undefined) {
this.children = data.children;
}
} }
} }
get common() { get common() {
@ -3470,6 +3474,12 @@ export namespace graphicData {
set axleCountings(value: string[]) { set axleCountings(value: string[]) {
pb_1.Message.setField(this, 7, value); pb_1.Message.setField(this, 7, value);
} }
get children() {
return pb_1.Message.getFieldWithDefault(this, 8, []) as string[];
}
set children(value: string[]) {
pb_1.Message.setField(this, 8, value);
}
static fromObject(data: { static fromObject(data: {
common?: ReturnType<typeof CommonInfo.prototype.toObject>; common?: ReturnType<typeof CommonInfo.prototype.toObject>;
code?: string; code?: string;
@ -3478,6 +3488,7 @@ export namespace graphicData {
pbRef?: ReturnType<typeof RelatedRef.prototype.toObject>; pbRef?: ReturnType<typeof RelatedRef.prototype.toObject>;
sectionType?: Section.SectionType; sectionType?: Section.SectionType;
axleCountings?: string[]; axleCountings?: string[];
children?: string[];
}): Section { }): Section {
const message = new Section({}); const message = new Section({});
if (data.common != null) { if (data.common != null) {
@ -3501,6 +3512,9 @@ export namespace graphicData {
if (data.axleCountings != null) { if (data.axleCountings != null) {
message.axleCountings = data.axleCountings; message.axleCountings = data.axleCountings;
} }
if (data.children != null) {
message.children = data.children;
}
return message; return message;
} }
toObject() { toObject() {
@ -3512,6 +3526,7 @@ export namespace graphicData {
pbRef?: ReturnType<typeof RelatedRef.prototype.toObject>; pbRef?: ReturnType<typeof RelatedRef.prototype.toObject>;
sectionType?: Section.SectionType; sectionType?: Section.SectionType;
axleCountings?: string[]; axleCountings?: string[];
children?: string[];
} = {}; } = {};
if (this.common != null) { if (this.common != null) {
data.common = this.common.toObject(); data.common = this.common.toObject();
@ -3534,6 +3549,9 @@ export namespace graphicData {
if (this.axleCountings != null) { if (this.axleCountings != null) {
data.axleCountings = this.axleCountings; data.axleCountings = this.axleCountings;
} }
if (this.children != null) {
data.children = this.children;
}
return data; return data;
} }
serialize(): Uint8Array; serialize(): Uint8Array;
@ -3554,6 +3572,8 @@ export namespace graphicData {
writer.writeEnum(6, this.sectionType); writer.writeEnum(6, this.sectionType);
if (this.axleCountings.length) if (this.axleCountings.length)
writer.writeRepeatedString(7, this.axleCountings); writer.writeRepeatedString(7, this.axleCountings);
if (this.children.length)
writer.writeRepeatedString(8, this.children);
if (!w) if (!w)
return writer.getResultBuffer(); return writer.getResultBuffer();
} }
@ -3584,6 +3604,9 @@ export namespace graphicData {
case 7: case 7:
pb_1.Message.addToRepeatedField(message, 7, reader.readString()); pb_1.Message.addToRepeatedField(message, 7, reader.readString());
break; break;
case 8:
pb_1.Message.addToRepeatedField(message, 8, reader.readString());
break;
default: reader.skipField(); default: reader.skipField();
} }
} }
@ -3599,10 +3622,125 @@ export namespace graphicData {
export namespace Section { export namespace Section {
export enum SectionType { export enum SectionType {
Physical = 0, Physical = 0,
Logic = 1,
TurnoutPhysical = 2 TurnoutPhysical = 2
} }
} }
export class LogicSection extends pb_1.Message {
#one_of_decls: number[][] = [];
constructor(data?: any[] | {
common?: CommonInfo;
code?: string;
points?: Point[];
}) {
super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3], 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;
}
if ("points" in data && data.points != undefined) {
this.points = data.points;
}
}
}
get common() {
return pb_1.Message.getWrapperField(this, CommonInfo, 1) as CommonInfo;
}
set common(value: 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);
}
get points() {
return pb_1.Message.getRepeatedWrapperField(this, Point, 3) as Point[];
}
set points(value: Point[]) {
pb_1.Message.setRepeatedWrapperField(this, 3, value);
}
static fromObject(data: {
common?: ReturnType<typeof CommonInfo.prototype.toObject>;
code?: string;
points?: ReturnType<typeof Point.prototype.toObject>[];
}): LogicSection {
const message = new LogicSection({});
if (data.common != null) {
message.common = CommonInfo.fromObject(data.common);
}
if (data.code != null) {
message.code = data.code;
}
if (data.points != null) {
message.points = data.points.map(item => Point.fromObject(item));
}
return message;
}
toObject() {
const data: {
common?: ReturnType<typeof CommonInfo.prototype.toObject>;
code?: string;
points?: ReturnType<typeof Point.prototype.toObject>[];
} = {};
if (this.common != null) {
data.common = this.common.toObject();
}
if (this.code != null) {
data.code = this.code;
}
if (this.points != null) {
data.points = this.points.map((item: Point) => item.toObject());
}
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 (this.points.length)
writer.writeRepeatedMessage(3, this.points, (item: Point) => item.serialize(writer));
if (!w)
return writer.getResultBuffer();
}
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): LogicSection {
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new LogicSection();
while (reader.nextField()) {
if (reader.isEndGroup())
break;
switch (reader.getFieldNumber()) {
case 1:
reader.readMessage(message.common, () => message.common = CommonInfo.deserialize(reader));
break;
case 2:
message.code = reader.readString();
break;
case 3:
reader.readMessage(message.points, () => pb_1.Message.addToRepeatedWrapperField(message, 3, Point.deserialize(reader), Point));
break;
default: reader.skipField();
}
}
return message;
}
serializeBinary(): Uint8Array {
return this.serialize();
}
static deserializeBinary(bytes: Uint8Array): LogicSection {
return LogicSection.deserialize(bytes);
}
}
export class KilometerPoint extends pb_1.Message { export class KilometerPoint extends pb_1.Message {
#one_of_decls: number[][] = []; #one_of_decls: number[][] = [];
constructor(data?: any[] | { constructor(data?: any[] | {
@ -3727,7 +3865,7 @@ export namespace graphicData {
points?: Point[]; points?: Point[];
isUp?: boolean; isUp?: boolean;
kilometerPoints?: KilometerPoint[]; kilometerPoints?: KilometerPoint[];
aToB?: boolean; isKmIncrease?: boolean;
}) { }) {
super(); super();
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 5], this.#one_of_decls); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 5], this.#one_of_decls);
@ -3747,8 +3885,8 @@ export namespace graphicData {
if ("kilometerPoints" in data && data.kilometerPoints != undefined) { if ("kilometerPoints" in data && data.kilometerPoints != undefined) {
this.kilometerPoints = data.kilometerPoints; this.kilometerPoints = data.kilometerPoints;
} }
if ("aToB" in data && data.aToB != undefined) { if ("isKmIncrease" in data && data.isKmIncrease != undefined) {
this.aToB = data.aToB; this.isKmIncrease = data.isKmIncrease;
} }
} }
} }
@ -3785,10 +3923,10 @@ export namespace graphicData {
set kilometerPoints(value: KilometerPoint[]) { set kilometerPoints(value: KilometerPoint[]) {
pb_1.Message.setRepeatedWrapperField(this, 5, value); pb_1.Message.setRepeatedWrapperField(this, 5, value);
} }
get aToB() { get isKmIncrease() {
return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean; return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean;
} }
set aToB(value: boolean) { set isKmIncrease(value: boolean) {
pb_1.Message.setField(this, 6, value); pb_1.Message.setField(this, 6, value);
} }
static fromObject(data: { static fromObject(data: {
@ -3797,7 +3935,7 @@ export namespace graphicData {
points?: ReturnType<typeof Point.prototype.toObject>[]; points?: ReturnType<typeof Point.prototype.toObject>[];
isUp?: boolean; isUp?: boolean;
kilometerPoints?: ReturnType<typeof KilometerPoint.prototype.toObject>[]; kilometerPoints?: ReturnType<typeof KilometerPoint.prototype.toObject>[];
aToB?: boolean; isKmIncrease?: boolean;
}): PathLine { }): PathLine {
const message = new PathLine({}); const message = new PathLine({});
if (data.common != null) { if (data.common != null) {
@ -3815,8 +3953,8 @@ export namespace graphicData {
if (data.kilometerPoints != null) { if (data.kilometerPoints != null) {
message.kilometerPoints = data.kilometerPoints.map(item => KilometerPoint.fromObject(item)); message.kilometerPoints = data.kilometerPoints.map(item => KilometerPoint.fromObject(item));
} }
if (data.aToB != null) { if (data.isKmIncrease != null) {
message.aToB = data.aToB; message.isKmIncrease = data.isKmIncrease;
} }
return message; return message;
} }
@ -3827,7 +3965,7 @@ export namespace graphicData {
points?: ReturnType<typeof Point.prototype.toObject>[]; points?: ReturnType<typeof Point.prototype.toObject>[];
isUp?: boolean; isUp?: boolean;
kilometerPoints?: ReturnType<typeof KilometerPoint.prototype.toObject>[]; kilometerPoints?: ReturnType<typeof KilometerPoint.prototype.toObject>[];
aToB?: boolean; isKmIncrease?: boolean;
} = {}; } = {};
if (this.common != null) { if (this.common != null) {
data.common = this.common.toObject(); data.common = this.common.toObject();
@ -3844,8 +3982,8 @@ export namespace graphicData {
if (this.kilometerPoints != null) { if (this.kilometerPoints != null) {
data.kilometerPoints = this.kilometerPoints.map((item: KilometerPoint) => item.toObject()); data.kilometerPoints = this.kilometerPoints.map((item: KilometerPoint) => item.toObject());
} }
if (this.aToB != null) { if (this.isKmIncrease != null) {
data.aToB = this.aToB; data.isKmIncrease = this.isKmIncrease;
} }
return data; return data;
} }
@ -3863,8 +4001,8 @@ export namespace graphicData {
writer.writeBool(4, this.isUp); writer.writeBool(4, this.isUp);
if (this.kilometerPoints.length) if (this.kilometerPoints.length)
writer.writeRepeatedMessage(5, this.kilometerPoints, (item: KilometerPoint) => item.serialize(writer)); writer.writeRepeatedMessage(5, this.kilometerPoints, (item: KilometerPoint) => item.serialize(writer));
if (this.aToB != false) if (this.isKmIncrease != false)
writer.writeBool(6, this.aToB); writer.writeBool(6, this.isKmIncrease);
if (!w) if (!w)
return writer.getResultBuffer(); return writer.getResultBuffer();
} }
@ -3890,7 +4028,7 @@ export namespace graphicData {
reader.readMessage(message.kilometerPoints, () => pb_1.Message.addToRepeatedWrapperField(message, 5, KilometerPoint.deserialize(reader), KilometerPoint)); reader.readMessage(message.kilometerPoints, () => pb_1.Message.addToRepeatedWrapperField(message, 5, KilometerPoint.deserialize(reader), KilometerPoint));
break; break;
case 6: case 6:
message.aToB = reader.readBool(); message.isKmIncrease = reader.readBool();
break; break;
default: reader.skipField(); default: reader.skipField();
} }

@ -1 +1 @@
Subproject commit 6c2387311aa3c744e380e772df9cba6a49ace989 Subproject commit a91685b8deaa6390480ad4ce735898f7ceb5bf1a