import {CatalogService}  from  "./CatalogService";
import {IgsServiceBase}  from  "../../baseserver/IServiceBase";
/**
 * @author 基础平台/产品2部 龚跃健
 * @class module:目录服务.ColorInfo
 * @classdesc  颜色信息类
 * @description Zondy.Catalog.ColorInfo 
 * @extends  Zondy.Catalog.CatalogService
 * @param option - {Object} 属性键值对，颜色属性字段。<br>
 * @param {Number} [option.SystemLibID = 0] 系统库索引号
 * @param {Number} [option.ColorNO = 6] 颜色号
 * @param {Number} [option.Red = 0] (红色)值，0~255取值
 * @param {Number} [option.Green = 0] (绿色)值，0~255取值
 * @param {Number} [option.Blue = 0] (蓝色)值，0~255取值
 * @param {Boolean} [option.addNew = false] 是否增加新的颜色
 */
class ColorInfo extends CatalogService {
    constructor(option) {
        var options = option || {};
        super(options);
        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.SystemLibID
         * @type {Number}
         * @description 系统库索引号
         * @default 0
         */
        this.SystemLibID = options.SystemLibID !== undefined ? options.SystemLibID : 0;

        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.ColorNO
         * @type {Number}
         * @description 颜色号
         * @default 6
         */
        this.ColorNO = options.ColorNO !== undefined ? options.ColorNO : 6;

        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.Red
         * @type {Number}
         * @description (红色)值，0~255取值
         * @default 0
         */
        this.Red = options.Red !== undefined ? options.Red : 0;

        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.Green
         * @type {Number}
         * @description (绿色)值，0~255取值
         * @default 0
         */
        this.Green = options.Green !== undefined ? options.Green : 0;

        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.Blue
         * @type {Number}
         * @description (蓝色)值，0~255取值
         * @default 0
         */
        this.Blue = options.Blue !== undefined ? options.Blue : 0;

        /**
         * @private
         * @member Zondy.Catalog.ColorInfo.prototype.addNew
         * @type {Boolean}
         * @description 是否增加新的颜色
         * @default false
         */
        this.addNew = options.addNew !== undefined ? options.addNew : false;
    }

    /**
     * @description 根据RGB值获取该颜色在颜色库中的颜色号
     * @function Zondy.Catalog.ColorInfo.prototype.getColorNO
     * @description  返回颜色值在系统库中对应的ID编号
     * @param options - {Object} 颜色信息相关参数。
     * @param onSuccess - {Function} 成功回调函数。
     * @param onError - {Function} 失败回调函数。
     * @example
     var CatalogServer = new Zondy.Catalog.ColorInfo({
                    //IGServer所在地址
                    ip: "develop.smaryun.com",
                    //IGServer请求端口
                    port: "6163",
                    //颜色库ID
                    SystemLibID: 1
                });
     CatalogServer.getColorNO({ Red: 255, Green: 145, Blue: 145 }, function (res) {
                    console.log(res);
                },function (error) {
                    console.log(error);
                });
     */
    getColorNO(options, onSuccess, onError) {
        var me = this;
        if (options !== null && options !== undefined) {
            if (options.SystemLibID !== undefined) {
                me.SystemLibID = options.SystemLibID;
            }
            if (options.Red !== undefined) {
                me.Red = options.Red;
            }
            if (options.Green !== undefined) {
                me.Green = options.Green;
            }
            if (options.Blue !== undefined) {
                me.Blue = options.Blue;
            }
            if (options.addNew !== undefined) {
                me.addNew = options.addNew;
            }
        }
        me.partUrl = "ColorLib/getColorNO?f=json&libID=" + me.SystemLibID + "&r=" + me.Red + "&g=" + me.Green + "&b=" + me.Blue + "&addNew=" + me.addNew;
        var url = me.getFullUrl();
        var service = new IgsServiceBase(url, {
            eventListeners: {
                scope: me,
                processCompleted: onSuccess,
                processFailed: onError
            }
        });
        service.processAsync();
    }

    /**
     * @description 根据颜色号获取颜色RGB值
     * @function Zondy.Catalog.ColorInfo.prototype.getColorRGB
     * @description  返回颜色信息对象
     * @param options - {Object} 属性键值对。
     * @param onSuccess - {Function} 成功回调函数。
     * @param onError - {Function} 失败回调函数。
     * @example
     var CatalogServer = new Zondy.Catalog.ColorInfo({
                    //IGServer所在地址
                    ip: "develop.smaryun.com",
                    //IGServer请求端口
                    port: "6163",
                    //颜色库ID
                    SystemLibID: 1
                });
     CatalogServer.getColorRGB({ ColorNO: 23 }, function (res) {
                    console.log(res);
                },function (error) {
                    console.log(error);
                });
     */
    getColorRGB(options, onSuccess, onError) {
        var me = this;
        if (options !== null && options !== undefined) {
            if (options.SystemLibID !== undefined) {
                me.SystemLibID = options.SystemLibID;
            }
            if (options.ColorNO !== undefined) {
                me.ColorNO = options.ColorNO;
            }
        }
        me.partUrl = "ColorLib/getColorRGB?f=json&libID=" + me.SystemLibID + "&colorNO=" + me.ColorNO;
        var url = me.getFullUrl();
        var service = new IgsServiceBase(url, {
            eventListeners: {
                scope: me,
                processCompleted: onSuccess,
                processFailed: onError
            }
        });
        service.processAsync();
    }
}
export {ColorInfo};
Zondy.Catalog.ColorInfo = ColorInfo;

