import { SParser } from '@saga-web/big/lib';
import { SNoneLegendItem } from '../items/SNoneLegendItem';
import { SZoneLegendItem } from '../items/SZoneLegendItem';
import { SImageLegendItem } from '../items/SImageLegendItem';
import { SImageMarkerItem } from '../items/SImageMarkerItem';
import { SLineMarkerItem } from '../items/SLineMarkerItem';
import { STextMarkerItem } from '../items/STextMarkerItem';
import { TipelineItem } from '../items/TipelineItem';
import { SSCPZZoneLegendItem } from '../items/SSCPZZoneLegendItem';
import { SFHFQZoneLegendItem } from '../items/SFHFQZoneLegendItem';
/**
 * 拓扑图信息解析器
 *
 */
export class STopologyParser extends SParser {
    constructor() {
        super(...arguments);
        /** 图例list(非图例类型)   */
        this.noneLegendList = [];
        /** 图例list(线类型)   */
        this.lineLegendList = [];
        /** 图例list(区域类型)   */
        this.zoneLegendList = [];
        /** 图例list(图标类型)   */
        this.imageLegendList = [];
        /** 标识list(图类型)   */
        this.imageMarkerList = [];
        /** 标识list(线类型)   */
        this.lineMarkerList = [];
        /** 标识list(文本类型)   */
        this.textMarkerList = [];
        /** 管线关系对象关系list   */
        this.relationList = [];
    }
    /**
     * 解析数据
     *
     * @param   data    系统图数据
     * */
    parseData(data) {
        if (data.Nodes) {
            data.Nodes.forEach((t) => {
                this.addLegend(t);
            });
        }
        if (data.Markers) {
            data.Markers.forEach((t) => {
                this.addMarker(t);
            });
        }
        if (data.Relations) {
            data.Relations.forEach((t) => {
                this.addRelation(t);
            });
        }
    } // Function parseData()
    /**
     * 添加图例节点至场景中
     *
     * @param   t       图例节点数据
     * */
    addLegend(t) {
        if (t.GraphElementType == 'None') {
            let item = new SNoneLegendItem(null, t);
            this.noneLegendList.push(item);
        }
        else if (t.GraphElementType == "Zone") {
            if (t.SubType == "SCPZ") {
                let item = new SSCPZZoneLegendItem(null, t);
                item.selectable = true;
                this.zoneLegendList.push(item);
            }
            else if (t.SubType == "FHFQ") {
                let item = new SFHFQZoneLegendItem(null, t);
                item.selectable = true;
                this.zoneLegendList.push(item);
            }
            else {
                let item = new SZoneLegendItem(null, t);
                item.selectable = true;
                this.zoneLegendList.push(item);
            }
        }
        else if (t.GraphElementType == 'Image') {
            let item = new SImageLegendItem(null, t);
            item.selectable = true;
            this.imageLegendList.push(item);
        }
    } // Function addNode()
    /**
     * 添加标识对象至场景中
     *
     * @param   t       标识对象数据
     * */
    addMarker(t) {
        if (t.Type == "Image") {
            let item = new SImageMarkerItem(null, t);
            this.imageMarkerList.push(item);
            item.selectable = true;
        }
        else if (t.Type == "Line") {
            let item = new SLineMarkerItem(null, t);
            item.selectable = true;
            this.lineMarkerList.push(item);
        }
        else if (t.Type == "Text") {
            let item = new STextMarkerItem(null, t);
            item.selectable = true;
            this.textMarkerList.push(item);
        }
    } // Function addMarker()
    /**
     * 添加管线关系至场景中
     *
     * @param   t       管线关系对象数据
     * */
    addRelation(t) {
        let item = new TipelineItem(null, t);
        item.selectable = true;
        this.relationList.push(item);
    } // Function addRelation()
} // class STopologyParser
