    ﻿/// <summary>空间分析服务基类构造函数</summary>
    /// <param name="opt_options" type="Object">属性键值对</param>

    import { Zondy } from "../../common/Base";
    import { extend }  from  "../../common/Util";
    import { ServiceBase }  from  "../../ServiceBase";
    import { IgsServiceBase }  from  "../../baseserver/IServiceBase";

    class NetAnalysisExtent extends ServiceBase{
        constructor(opt_options) {
            var options = opt_options || {};
            super(options);
            /// <summary>工作流ID号,Interger</summary>
            //网络类url
            this.netClsUrl = options.netClsUrl !== undefined ? options.netClsUrl : null;
            //网标序列，包括点上网标、网线网标
            this.flagPosStr = options.flagPosStr !== undefined ? options.flagPosStr : null;
            //分析模式，包括用户模式、系统模式（系统模型下有六种分析方式）
            this.analyTp = options.analyTp !== undefined ? options.analyTp : 'UserMode';
            //权值
            this.weight = options.weight !== undefined ? options.weight : ',Weight1,Weight1';
            //返回格式
            this.outFormat = options.outFormat !== undefined ? options.outFormat : 'JSON';
            //网络元素类型，包括结点元素、边线元素、以及其他分析中会用到的如源、汇等类型。
            this.elementType = options.elementType !== undefined ? options.elementType : 2;
            //网标或障碍的捕捉精度
            this.nearDis = options.nearDis !== undefined ? options.nearDis : 0.001;
            //障碍序列，包括点上障碍、线上障碍
            this.barrierPosStr = options.barrierPosStr !== undefined ? options.barrierPosStr : null;
            //生成报告时道路名称字段
            this.roadName = options.roadName !== undefined ? options.roadName : "name";

            this.baseUrl = "igs/rest/netAnaly";
        }
        /**
        * 获取网络类权值信息（只支持GET方式）
        * Parameters:
        * infoType-{string}获取网络类信息类型,取值"weight"
        * onSuccess - {function} 执行成功的回调函数
        * onError - {function} 执行失败的回调函数
        * resultFormat-{string}回调结果的包装形式，取值为'json','xml',默认为json格式
        * type-{string}请求类型,取值"Get","Post"，当前功能默认只取值GET，设置POST无效，只做兼容保留
        * contentType-{string}get方式默认为‘application/x-www-form-urlencoded’，post默认为text/plain,一般使用默认即可
        * options-{Object} 主要用来扩展ajax的参数，一般无需设置
        */
        getNetInfo(infoType, onSuccess, onError, options) {
            if (infoType == null || infoType == undefined) {
                infoType = "weight";
            }
            //当前服务默认只支持GET方式
            this.partUrl = "netClsInfo?netCls=" + this.netClsUrl + "&type=" + infoType;

            var me = this;
            var url = me.getFullUrl();

            var service = new IgsServiceBase(url, {
                eventListeners: {
                    scope: me,
                    processCompleted: onSuccess,
                    processFailed: onError
                }
            });
            service.processAsync();
        }
        /**
        * 添加网标(支持GET和POST两种方式)
        * Parameters:
        * dotVal-{string}添加网标点坐标,格式为"x1,y1,x2,y2,...",
        * onSuccess - {function} 执行成功的回调函数
        * onError - {function} 执行失败的回调函数
        * resultFormat-{string}回调结果的包装形式，取值为'json','xml',默认为json格式
        * type-{string}请求类型,取值"Get","Post"，当前功能默认GET方式，也可以设置POST的方式
        * contentType-{string}get方式默认为‘application/x-www-form-urlencoded’，post默认为text/plain,一般使用默认即可
        * options-{Object} 主要用来扩展ajax的参数，一般无需设置
        */
        addNetFlag(dotVal, onSuccess, onError, type, options) {
            var postString = null;
            var postObj = {};
            if (type != null && type.toUpperCase() == "POST") {
                postObj.dotVal = dotVal;
                this.partUrl = "netClsFlag?netCls=" + this.netClsUrl + "&type=" + this.elementType + "&nearDis=" + this.nearDis;
            }
            else {
                this.partUrl = "netClsFlag?netCls=" + this.netClsUrl + "&type=" + this.elementType + "&value=" + dotVal + "&nearDis=" + this.nearDis;
            }
            var me = this;
            var url = me.getFullUrl();

            var service = new IgsServiceBase(url, {
                eventListeners: {
                    scope: me,
                    processCompleted: onSuccess,
                    processFailed: onError
                }
            });
            if (type != null && type.toUpperCase() == "POST") {
                service.processAsync({ method: 'POST', data: JSON.stringify(postObj), headers: { 'Content-Type': 'text/plain;charset=UTF-8'} });
            }
            else {
                service.processAsync();
            }
        }
        /**
        * 执行网络分析（只支持POST方式）
        * Parameters:
        * dataObject-{Object}服务器发送的数据
        * onSuccess - {function} 执行成功的回调函数
        * onError - {function} 执行失败的回调函数
        * resultFormat-{string}回调结果的包装形式，取值为'json','xml',默认为json格式
        * type-{string}请求类型,取值"Get","Post"，当前功能默认只提供POST的方式，GET方式设置无效，只做兼容保留
        * contentType-{string}get方式默认为‘application/x-www-form-urlencoded’，post默认为text/plain,一般使用默认即可
        * options-{Object} 主要用来扩展ajax的参数，一般无需设置
        */
        netAnalyse(dataObject, onSuccess, onError, options) {
            this.partUrl = "netAnalyse";
            //当前服务只支持POST的方式
            var me = this;
            var url = me.getFullUrl();

            var service = new IgsServiceBase(url, {
                eventListeners: {
                    scope: me,
                    processCompleted: onSuccess,
                    processFailed: onError
                }
            });
            service.processAsync({ method: 'POST', data: JSON.stringify(dataObject), headers: { 'Content-Type': 'text/plain;charset=UTF-8'} });
        }
        /**
        * 执行多策略网络分析（只支持POST方式）
        * Parameters:
        * dataObject-{Object}服务器发送的数据
        * onSuccess - {function} 执行成功的回调函数
        * onError - {function} 执行失败的回调函数
        * resultFormat-{string}回调结果的包装形式，取值为'json','xml',默认为json格式
        * type-{string}请求类型,取值"Get","Post"，当前功能默认只提供POST的方式，GET方式设置无效，只做兼容保留
        * contentType-{string}get方式默认为‘application/x-www-form-urlencoded’，post默认为text/plain,一般使用默认即可
        * options-{Object} 主要用来扩展ajax的参数，一般无需设置
        */
        comNetAnalyse(dataObject, onSuccess, onError, options) {
            this.partUrl = "comNetAnalyse";
            var me = this;
            var url = me.getFullUrl();
            var service = new IgsServiceBase(url, {
                eventListeners: {
                    scope: me,
                    processCompleted: onSuccess,
                    processFailed: onError
                }
            });
            service.processAsync({ method: 'POST', data: JSON.stringify(dataObject), headers: { 'Content-Type': 'text/plain;charset=UTF-8'} });
        }
        /**
        * 执行多路网络分析（只支持POST方式）
        * Parameters:
        * dataObject-{Object}服务器发送的数据
        * onSuccess - {function} 执行成功的回调函数
        * onError - {function} 执行失败的回调函数
        * resultFormat-{string}回调结果的包装形式，取值为'json','xml',默认为json格式
        * type-{string}请求类型,取值"Get","Post"，当前功能默认只提供POST的方式，GET方式设置无效，只做兼容保留
        * contentType-{string}get方式默认为‘application/x-www-form-urlencoded’，post默认为text/plain,一般使用默认即可
        * options-{Object} 主要用来扩展ajax的参数，一般无需设置
        */
        pluNetAnalyse(dataObject, onSuccess, onError, options) {
            this.partUrl = "pluNetAnalyse";
            //当前服务只支持post的方式
            var me = this;
            var url = me.getFullUrl();
            var service = new IgsServiceBase(url, {
                eventListeners: {
                    scope: me,
                    processCompleted: onSuccess,
                    processFailed: onError
                }
            });
            service.processAsync({ method: 'POST', data: JSON.stringify(dataObject), headers: { 'Content-Type': 'text/plain;charset=UTF-8'} });
        }
    };

    export { NetAnalysisExtent};
    Zondy.Service.NetAnalysisExtent = NetAnalysisExtent;