import { Util, ModelTool } from '@ibizstudio/runtime';
import { MainControlBase } from './main-control-base';
/**
 * 分页视图面板部件基类
 *
 * @export
 * @class TabViewPanelBase
 * @extends {MainControlBase}
 */
export class TabViewPanelBase extends MainControlBase {
    constructor() {
        super(...arguments);
        /**
         * 是否被激活
         *
         * @type {boolean}
         * @memberof TabViewPanelBase
         */
        this.isActivied = false;
        /**
         * 传入上下文
         *
         * @type {string}
         * @memberof TabViewPanelBase
         */
        this.viewdata = "";
        /**
         * 传入视图参数
         *
         * @type {string}
         * @memberof TabViewPanelBase
         */
        this.viewparam = "";
        /**
         * 视图面板过滤项
         *
         * @type {string}
         * @memberof TabViewPanelBase
         */
        this.navFilter = "";
    }
    /**
     * 部件模型数据初始化实例
     *
     * @memberof TabViewPanelBase
     */
    async ctrlModelInit(args) {
        const { navFilter, name } = this.controlInstance;
        await super.ctrlModelInit();
        this.name = name;
        this.navFilter = navFilter;
        this.isActivied = this.staticProps.isActivied;
        this.localContext = ModelTool.getNavigateContext(this.controlInstance);
        this.localViewParam = ModelTool.getNavigateParams(this.controlInstance);
        const embedView = this.controlInstance.getEmbeddedPSAppDEView();
        if (this.isActivied && !embedView) {
            await this.activiedChange();
        }
    }
    /**
     * 初始化导航参数
     *
     *  @memberof TabViewPanelBase
     */
    initNavParam() {
        if (!Util.isEmpty(this.navFilter)) {
            Object.assign(this.viewparams, { [this.navFilter]: this.context[this.appDeCodeName.toLowerCase()] });
        }
        if (this.localContext && Object.keys(this.localContext).length > 0) {
            let _context = Util.computedNavData({}, this.context, this.viewparams, this.localContext);
            Object.assign(this.context, _context);
        }
        if (this.localViewParam && Object.keys(this.localViewParam).length > 0) {
            let _param = Util.computedNavData({}, this.context, this.viewparams, this.localViewParam);
            Object.assign(this.viewparams, _param);
        }
        this.viewdata = JSON.stringify(this.context);
        this.viewparam = JSON.stringify(this.viewparams);
    }
    /**
     * 部件初始化
     *
     * @memberof TabViewPanelBase
     */
    ctrlInit() {
        super.ctrlInit();
    }
    viewStateAction(tag, action, data) {
        if (!Object.is(tag, this.name)) {
            return;
        }
        super.viewStateAction(tag, action, data);
        this.activiedChange();
    }
    /**
     * 视图数据变化
     *
     * @param {*} $event
     * @memberof TabViewPanelBase
     */
    viewDatasChange($event) {
        this.$emit('ctrl-event', { controlname: 'tabviewpanel', action: 'viewpanelDatasChange', data: $event });
    }
    /**
     * 激活项变化
     *
     * @memberof TabViewPanelBase
     */
    async activiedChange() {
        const embedView = this.controlInstance.getEmbeddedPSAppDEView();
        if (embedView && !embedView.name) {
            await embedView.fill();
        }
        this.isActivied = false;
        this.$nextTick(() => {
            this.isActivied = true;
        });
        this.$nextTick(() => {
            this.initNavParam();
        });
    }
}
