"use strict";
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
/**
 * 计数器
 *
 * @class IBizUICounter
 * @extends {IBizControl}
 */
var IBizUICounter = /** @class */ (function (_super) {
    __extends(IBizUICounter, _super);
    /**
     * Creates an instance of IBizUICounter.
     * 创建 IBizUICounter 服务对象
     *
     * @param {*} [config={}]
     * @memberof IBizUICounter
     */
    function IBizUICounter(config) {
        if (config === void 0) { config = {}; }
        var _this = _super.call(this, config) || this;
        /**
         * 定时器时间
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.timer = null;
        /**
         * 定时器
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.timerTag = null;
        /**
         * 计数器id
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.counterId = '';
        /**
         * 计数器参数
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.counterParam = {};
        /**
         * 最后加载数据
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.lastReloadArg = {};
        /**
         * 计数器结果
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.result = {};
        /**
         * 计数器交互数据
         *
         * @type {*}
         * @memberof IBizUICounter
         */
        _this.data = {};
        /**
         * url
         *
         * @type {string}
         * @memberof IBizUICounter
         */
        _this.url = '';
        _this.counterId = config.counterId;
        Object.assign(_this.counterParam, config.counterParam);
        _this.timer = config.timer;
        _this.url = config.url;
        _this.load();
        return _this;
    }
    /**
     * 加载定时器
     *
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.load = function () {
        var _this = this;
        if (this.timer > 1000) {
            this.timerTag = setInterval(function () {
                _this.reload();
            }, this.timer);
        }
        this.reload();
    };
    /**
     * 刷新计数器
     *
     * @param {*} [arg={}]
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.reload = function (arg) {
        var _this = this;
        if (arg === void 0) { arg = {}; }
        var params = {};
        Object.assign(this.lastReloadArg, arg);
        Object.assign(params, this.lastReloadArg);
        Object.assign(params, { srfcounterid: this.counterId, srfaction: 'FETCH', srfcounterparam: JSON.stringify(this.counterParam) });
        this.iBizHttp.post2(this.url, params).subscribe(function (res) {
            if (res.ret === 0) {
                _this.setData(res);
            }
        }, function (error) {
            console.log('加载计数器异常');
        });
    };
    /**
     * 处理数据
     *
     * @param {*} result
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.setData = function (result) {
        this.result = result;
        this.data = result.data;
        this.fire(IBizUICounter.COUNTERCHANGED, this.data);
    };
    /**
     * 获取结果
     *
     * @returns {*}
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.getResult = function () {
        return this.result;
    };
    /**
     * 获取数据
     *
     * @returns {*}
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.getData = function () {
        return this.data;
    };
    /**
     * 关闭计数器
     *
     * @memberof IBizUICounter
     */
    IBizUICounter.prototype.close = function () {
        if (this.timerTag !== undefined) {
            clearInterval(this.timerTag);
            delete this.timer;
        }
    };
    /**
     * 计数发生变化
     *
     * @static
     * @memberof IBizUICounter
     */
    IBizUICounter.COUNTERCHANGED = "COUNTERCHANGED";
    return IBizUICounter;
}(IBizObject));
