/// <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;