import { SParser } from "./SParser"; import { ElementData } from "../types/ElementData"; import { Legend } from "../types/topology/Legend"; import { Marker } from "../types/topology/Marker"; import { Relation } from "../types/topology/Relation"; import { SImageLegendItem, SLineLegendItem, SNoneLegendItem, SRelation, SZoneLegendItem, SImageMarkerItem, SLineMarkerItem, STextMarkerItem } from ".."; import { SGraphElementType } from "../enums/SGraphElementType"; import {SMarkerType} from "../enums/SMarkerType"; /** * 拓扑图信息解析器 * */ export class STopologyParser extends SParser { /** 图例list(非图例类型) */ noneLegendList: SNoneLegendItem[] = []; /** 图例list(线类型) */ lineLegendList: SLineLegendItem[] = []; /** 图例list(区域类型) */ zoneLegendList: SZoneLegendItem[] = []; /** 图例list(图标类型) */ imageLegendList: SImageLegendItem[] = []; /** 标识list(图类型) */ imageMarkerList: SImageMarkerItem[] = []; /** 标识list(线类型) */ lineMarkerList: SLineMarkerItem[] = []; /** 标识list(文本类型) */ textMarkerList: STextMarkerItem[] = []; /** 管线关系对象关系list */ relationList: SRelation[] = []; /** * 解析数据 * * @param data 系统图数据 * */ parseData(data: ElementData): void { if (data.Nodes) { data.Nodes.forEach((t: Legend): void => { this.addLegend(t); }); } if (data.Markers) { data.Markers.forEach((t: Marker): void => { this.addMarker(t); }); } if (data.Relations) { data.Relations.forEach((t: Relation): void => { this.addRelation(t); }); } } // Function parseData() /** * 添加图例节点至场景中 * * @param t 图例节点数据 * */ private addLegend(t: Legend): void { if (t.GraphElementType == SGraphElementType.None) { let item = this.factory.createNoneLegend(t); this.noneLegendList.push(item); } else if (t.GraphElementType == SGraphElementType.Line) { let item = this.factory.createLineLegend(t); this.lineLegendList.push(item); } else if (t.GraphElementType == SGraphElementType.Zone) { let item = this.factory.createZoneLegend(t); this.zoneLegendList.push(item); } else if (t.GraphElementType == SGraphElementType.Image) { let item = this.factory.createImageLegend(t); this.imageLegendList.push(item); } } // Function addNode() /** * 添加标识对象至场景中 * * @param t 标识对象数据 * */ private addMarker(t: Marker): void { if (t.Type == SMarkerType.Image) { let item = this.factory.createImageMarker(t); this.imageMarkerList.push(item); } else if (t.Type == SMarkerType.Line) { let item = this.factory.createLineMarker(t); this.lineMarkerList.push(item); } else if (t.Type == SMarkerType.Text) { let item = this.factory.createTextMarker(t); this.textMarkerList.push(item); } } // Function addMarker() /** * 添加管线关系至场景中 * * @param t 管线关系对象数据 * */ private addRelation(t: Relation): void { let item = this.factory.createRelation(t); this.relationList.push(item); } // Function addRelation() } // class STopologyParser