import { Util } from '@ibizstudio/runtime';
import { MainControlBase } from './main-control-base';
/**
 * 选择视图面板部件基类
 *
 * @export
 * @class PickUpViewPanelControlBase
 * @extends {MainControlBase}
 */
export class PickUpViewPanelControlBase extends MainControlBase {
    constructor() {
        super(...arguments);
        /**
         * 视图模式
         * 0: 默认模式（选择视图，多项数据选择视图）
         * 1：左右关系（选择视图[左右关系], 多项数据选择视图[左右关系]）
         * 2: 分页关系（选择视图[分页关系], 多项数据选择视图[分页关系]）
         *
         * @type {string}
         * @memberof PickUpViewPanelControlBase
         */
        this.viewMode = 0;
        /**
         * 视图名称
         *
         * @type {*}
         * @memberof PickUpViewPanelControlBase
         */
        this.view = {
            viewName: '',
            data: {},
        };
        /**
         * 局部上下文
         *
         * @type {*}
         * @memberof PickUpViewPanelControlBase
         */
        this.localContext = "";
        /**
         * 局部视图参数
         *
         * @type {*}
         * @memberof PickUpViewPanelControlBase
         */
        this.localViewParam = "";
        /**
         * 视图数据
         *
         * @type {*}
         * @memberof PickUpViewPanelControlBase
         */
        this.viewdata = JSON.stringify(this.context);
        /**
         * 视图参数
         *
         * @type {*}
         * @memberof PickUpViewPanelControlBase
         */
        this.viewparam = JSON.stringify(this.viewparams);
        /**
         * 初始化完成
         *
         * @type {boolean}
         * @memberof PickUpViewPanelControlBase
         */
        this.inited = false;
    }
    /**
     * 监听部件动态参数变化
     *
     * @param {*} newVal
     * @param {*} oldVal
     * @memberof PickUpViewPanelControlBase
     */
    onDynamicPropsChange(newVal, oldVal) {
        super.onDynamicPropsChange(newVal, oldVal);
        if ((newVal === null || newVal === void 0 ? void 0 : newVal.selectedData) && newVal.selectedData != (oldVal === null || oldVal === void 0 ? void 0 : oldVal.selectedData)) {
            this.selectedData = newVal.selectedData;
        }
    }
    /**
     * 监听部件参数变化
     *
     * @param {*} newVal
     * @param {*} oldVal
     * @memberof PickUpViewPanelControlBase
     */
    onStaticPropsChange(newVal, oldVal) {
        this.isShowButton = newVal.isShowButton;
        this.isSingleSelect = newVal.isSingleSelect;
        this.viewMode = newVal.viewMode || 0;
        super.onStaticPropsChange(newVal, oldVal);
    }
    /**
      * 初始化面板部件实例
      *
      * @memberof PickUpViewPanelControlBase
      */
    async ctrlModelInit() {
        super.ctrlModelInit();
        this.view.viewName = 'app-view-shell';
    }
    /**
     * 部件初始化
     *
     *  @memberof PickUpViewPanelControlBase
     */
    ctrlInit() {
        super.ctrlInit();
        this.initNavParam();
    }
    viewStateAction(tag, action, data) {
        if (!Object.is(tag, this.name)) {
            return;
        }
        super.viewStateAction(tag, action, data);
        if (Object.is('load', action)) {
            this.viewdata = JSON.stringify(this.context);
            this.viewparam = JSON.stringify(this.viewparams);
            this.inited = true;
        }
    }
    /**
     * 初始化导航参数
     *
     *  @memberof PickUpViewPanelControlBase
     */
    initNavParam() {
        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);
    }
    /**
     * 视图数据变化
     *
     * @param {*} $event
     * @memberof PickUpViewPanelControlBase
     */
    onViewDatasChange($event) {
        if ($event.length > 0) {
            $event.forEach((item, index) => {
                let srfmajortext = item.srfmajortext ? item.srfmajortext : item[this.appDeMajorFieldName.toLowerCase()];
                if (srfmajortext) {
                    Object.assign($event[index], { srfmajortext: srfmajortext });
                }
            });
        }
        this.$emit("ctrl-event", { controlname: "pickupviewpanel", action: "selectionchange", data: $event });
    }
    /**
     * 获取多项数据
     *
     * @returns {any[]}
     * @memberof PickUpViewPanelControlBase
     */
    getDatas() {
        return [];
    }
    /**
     * 获取单项数据
     *
     * @returns {*}
     * @memberof PickUpViewPanelControlBase
     */
    getData() {
        return {};
    }
}
