import { ModelTool } from '@ibizstudio/runtime';
import { MainViewBase } from './mainview-base';
/**
 * 工作流动态操作视图基类
 *
 * @export
 * @class WFDynaActionViewBase
 * @extends {MainViewBase}
 * @implements {WFDynaActionViewInterface}
 */
export class WFDynaActionViewBase extends MainViewBase {
    /**
     * 初始化挂载状态集合
     *
     * @memberof WFDynaActionViewBase
     */
    initMountedMap() {
        this.mountedMap.set('self', false);
    }
    /**
     * 设置已经绘制完成状态
     *
     * @memberof WFDynaActionViewBase
     */
    setIsMounted(name = 'self') {
        var _a;
        super.setIsMounted(name);
        if (((_a = this.editFormInstance) === null || _a === void 0 ? void 0 : _a.name) == name) {
            this.viewState.next({ tag: this.editFormInstance.name, action: 'autoload', data: { srfkey: this.context[this.appDeCodeName.toLowerCase()] } });
        }
    }
    /**
     *  视图挂载
     *
     * @memberof WFDynaActionViewBase
     */
    viewMounted() {
        super.viewMounted();
        if (this.viewparams && this.viewparams.actionForm) {
            this.computeActivedForm(this.viewparams.actionForm);
        }
        else {
            this.computeActivedForm(null);
        }
    }
    /**
     * 计算激活表单
     *
     * @memberof WFDynaActionViewBase
     */
    computeActivedForm(inputForm) {
        if (!inputForm) {
            this.editFormInstance = ModelTool.findPSControlByName('form', this.viewInstance.getPSControls());
        }
        else {
            this.editFormInstance = ModelTool.findPSControlByName(`wfform_${inputForm.toLowerCase()}`, this.viewInstance.getPSControls());
        }
        this.mountedMap.set(this.editFormInstance.name, false);
        this.$forceUpdate();
    }
    /**
     * 确认
     *
     * @memberof WFDynaActionViewBase
     */
    onClickOk() {
        let xData = this.$refs.form.ctrl;
        if (xData && xData.formValidateStatus()) {
            let preFormData = xData.getData();
            let nextFormData = xData.transformData(preFormData);
            Object.assign(preFormData, nextFormData);
            this.$emit("view-event", { action: "viewdataschange", data: [preFormData] });
            this.$emit("view-event", { action: "close", data: null });
        }
    }
    /**
     * 取消
     *
     * @memberof WFDynaActionViewBase
     */
    onClickCancel() {
        this.$emit("view-event", { action: "close", data: null });
    }
    /**
     * 初始化编辑视图实例
     *
     * @memberof WFDynaActionViewBase
     */
    async viewModelInit() {
        await super.viewModelInit();
    }
    /**
     * 渲染视图主体内容区
     *
     * @memberof WFDynaActionViewBase
     */
    renderMainContent() {
        if (!this.editFormInstance) {
            return;
        }
        let { targetCtrlName, targetCtrlParam, targetCtrlEvent } = this.computeTargetCtrlData(this.editFormInstance);
        return this.$createElement(targetCtrlName, { slot: 'default', props: targetCtrlParam, ref: "form", on: targetCtrlEvent });
    }
}
