import { ICtrlAbility, IViewAbility, IViewController, IViewStore, } from '@/core'; import { UILogicParamType } from '../const/ui-logic-param-type'; import { UILogicParamBase } from './ui-logic-param-base'; /** * 当前视图 * * @export * @class UILogicActiveViewParam */ export class UILogicActiveViewParam extends UILogicParamBase { /** * Creates an instance of UILogicActiveViewParam. * @param {*} opts * @memberof UILogicActiveViewParam */ public constructor(opts: any) { super(opts); } /** * 初始化 * * @protected * @memberof UILogicActiveViewParam */ protected init(params: any) { this.logicParamType = UILogicParamType.activeViewParam; this.setReal(this.getActiveView(params)); } /** * 获取激活视图 * * @private * @param {any} params * @memberof UILogicActiveViewParam */ private getActiveView(params: any) { const { actionContext } = params; if (actionContext && actionContext.viewCtx && actionContext.viewCtx.view) { return actionContext.viewCtx.view; } else { return null; } } /** * 获取指定属性值(获取当前视图指定名称部件) * * @param {string} strName * @memberof UILogicActiveViewParam */ public get(strName: string) { const ability = this.actionSession.additionalParam.actionContext; if (ability && ability.viewCtx && ability.viewCtx.view) { const view = ability.viewCtx.view; let ctrl = ( view as IViewController ).getSubAbility(strName.toLowerCase()); if (ctrl) { return ctrl; } else { // 视图布局面板获取 if (Object.is(ability.controller.type, 'VIEWLAYOUT')) { const layoutDetailsModel = ability.controller.panel.getLayoutModelDetails(); const { data } = this.actionSession.additionalParam; // 多数据域 if (layoutDetailsModel) { if (data[0] && data[0].hasMulParent) { ctrl = ability.layoutDetailsModel[ `${strName.toLowerCase()}_${data[0].index}` ]; } else { ctrl = ability.layoutDetailsModel[strName.toLowerCase()]; } } if (ctrl) { return ctrl; } else { throw new Error(`逻辑参数${this.strCodeName}无法找到指定部件`); } } else { throw new Error(`逻辑参数${this.strCodeName}无法找到指定部件`); } } } } /** * 重置指定属性 * * @param {string} strName * @memberof UILogicActiveViewParam */ public reset(strName: string) { throw new Error( `逻辑参数${this.strCodeName}为当前视图类型,无法重置指定属性` ); } /** * 重置全部 * * @memberof UILogicActiveViewParam */ public resetAll() { throw new Error(`逻辑参数${this.strCodeName}为当前视图类型,无法重置全部`); } /** * 拷贝当前变量到指定变量 * * @param {*} dstParam * @memberof UILogicActiveViewParam */ public copyTo(dstParam: any) { throw new Error( `逻辑参数${this.strCodeName}为当前视图类型,无法拷贝当前变量到指定变量` ); } /** * 绑定指定参数对象 * * @param {*} opts * @memberof UILogicActiveViewParam */ public bind(opts: any) { throw new Error( `逻辑参数${this.strCodeName}为当前视图类型,无法绑定指定参数对象` ); } /** * 重新建立参数对象 * * @memberof UILogicActiveViewParam */ public renew() { throw new Error( `逻辑参数${this.strCodeName}为当前视图类型,无法重新建立参数对象` ); } }