    ﻿import {
        Zondy
    } from '../../common/Base';
    import {
        AnalysisBase
    } from "./AnalysisBase";
    import {
        NetAnalyType
    } from "../../common/EnumComm";
    import {
        NetElemType
    } from "../../common/EnumComm";

    /**
     * 网络分析类
     * @class module:分析服务.NetAnalysis
     * @classdesc 网络分析类
     * @description Zondy.Service.NetAnalysis
     * @extends Zondy.Service.AnalysisBase
     * @param {Object} option 属性键值对
     * @param {String} [option.netClsUrl = null] 网络类URL
     * @param {String} [option.flagPosStr = null] 网标序列，包括点上网标、线上网标
     * @param {String} [option.barrierPosStr = null] 障碍序列，包括点上障碍、线上障碍
     * @param {NetAnalyType} [option.analyType =  NetAnalyType.UserMod] Zondy.Enum.Net.NetAnalyType
     * @param {String} [option.weight = ",Weight1,Weight1"] 权值字段名序列
     * @param {NetElemType} [option.elementType = NetElemType.Edge] 网络元素类型 Zondy.Enum.Net.NetElemType
     * @param {Number} [option.nearDis = 0.001] 网络元素搜索半径
     * @param {String} [option.outFormat = "json"] 分析结果输出格式, json（默认值）|xml
     * @example
     var netAnalyParam = new Zondy.Service.NetAnalysis({
                        //设置网络类URL
                        netClsUrl: "gdbp://MapGisLocal/sample/ds/网络分析/ncls/道路交通网",
                        //指定感兴趣路径点坐标序列
                        flagPosStr: "114.44,38.06,114.56,38.03",
                        //分析类型：用户自定义
                        analyTp: 'UserMode',
                        //设置网络类某些属性字段为权值字段
                        weight: ",Weight1,Weight1",
                        //网络类型：1/2:节点网标/线网标
                        elementType: 2,
                        //设置网标搜索半径
                        nearDis: 0.01,
                        //设置障碍点的坐标序列
                        barrierPosStr: "",
                        //返回格式
                        outFormat: 'JSON',
                        //IGServer所在ip地址
                        ip: "develop.smaryun.com",
                        //IGServer请求端口号
                        port: "6163"
                    });
     netAnalyParam.execute(function (res) {
                        console.log(res);
                    }, "post",function (error) {
                        console.log(error);
                    });
     */
    class NetAnalysis extends AnalysisBase {
        constructor(option) {
            var options = option || {};
            super(options);

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.netClsUrl
             * @type {String}
             * @description 网络类URL
             * @default null
             */
            this.netClsUrl = options.netClsUrl !== undefined ? options.netClsUrl : null;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.flagPosStr
             * @type {String}
             * @description 网标序列，包括点上网标、线上网标
             * @default null
             */
            this.flagPosStr = options.flagPosStr !== undefined ? options.flagPosStr : null;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.barrierPosStr
             * @type {String}
             * @description 障碍序列，包括点上障碍、线上障碍
             * @default null
             */
            this.barrierPosStr = options.barrierPosStr !== undefined ? options.barrierPosStr : null;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.analyType
             * @type {NetAnalyType}
             * @description 分析类型 Zondy.Enum.Net.NetAnalyType
             * @default null
             */
            this.analyType = options.analyType !== undefined ? options.analyType : NetAnalyType.UserMode;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.weight
             * @type {String}
             * @description 权值字段名序列
             * @default ",Weight1,Weight1"
             */
            this.weight = options.weight !== undefined ? options.weight : ",Weight1,Weight1";

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.elementType
             * @type {NetElemType}
             * @description 网络元素类型 Zondy.Enum.Net.NetElemType
             * @default NetElemType.Edge
             */
            this.elementType = options.elementType !== undefined ? options.elementType : NetElemType.Edge;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.nearDis
             * @type {Number}
             * @description 网络元素搜索半径
             * @default 0.001
             */
            this.nearDis = options.nearDis !== undefined ? options.nearDis : 0.001;

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.outFormat
             * @type {String}
             * @description 分析结果输出格式, json（默认值）|xml
             * @default "json"
             */
            this.outFormat = options.outFormat !== undefined ? options.outFormat : "json";

            /**
             * @private
             * @member Zondy.Service.NetAnalysis.prototype.flowID
             * @type {String}
             * @description 工作流ID
             * @default "600233"
             */
            this.flowID = "600233";
        }
    }
    export {
        NetAnalysis
    };
    Zondy.Service.NetAnalysis = NetAnalysis;