import { PortalViewActionType, IPortalViewAbility, IParam, IPortalViewController, IDashboardAbility, } from '@/core/interface'; import { IPortalViewStore } from '@/core/interface/view/store'; import { deepCopy } from '@/core/utils'; import { ViewController } from './view-controller'; /** * 应用看板视图控制器 * * @export * @class PortalViewController * @extends {ViewController} */ export class PortalViewController extends ViewController< PortalViewActionType, IPortalViewStore, IPortalViewAbility > implements IPortalViewController { /** * 获取看板部件能力 * * @protected * @return {*} {(IDashboardAbility | undefined)} * @memberof PortalViewController */ protected getMainCtrlAbility(): IDashboardAbility | undefined { const dashboard = this.model.ctrls.find( (ctrl: IParam) => ctrl.controlType === 'DASHBOARD' ); if (dashboard) { return this.getSubAbility(dashboard.name); } return undefined; } /** * 视图加载 * * @param {IParam} [opts={}] * @return {*} * @memberof PortalViewController */ public viewMounted(opts: IParam = {}) { super.viewMounted(opts); if (this.model.useDefaultLayout) { const dashboard = this.getMainCtrlAbility(); if (dashboard) { const tempViewParams = deepCopy(this.store.viewParams); dashboard.load(Object.assign(tempViewParams, opts)); } } else { this.initLayout(); } } }