import { ELogic } from './enum'; import { GlobalDSLParamsPeriod } from './period'; import { DashboardReport } from './report'; export interface SubjectItemInfo { subject_id: number; subject_name: string; apps: Array<{ app_en_name: string; app_id: number; app_name: string; }>; } export interface BaseProps { globalVariables: { [key: string]: any; projectId: number; }; payload: Record; setPayload: (value: Record) => void; } export interface FusionEditorProps> extends BaseProps { dsl: T; /** * 看板 id */ dashboardId: string; /** * 报表 id */ reportId: string; /** * 返回看板编辑页 */ onBack: () => void; /** * 保存报表 */ onSaveReport: (dsl: any, reportName: string) => Promise; /** * 保存报表,并返回看板编辑页 */ onSaveAndBack: (dsl: any, reportName: string) => Promise; /** * 用户是否有报表的编辑权限 */ reportEditorAuth: boolean; /** * 全量主体信息 */ subjects: SubjectItemInfo[]; } export interface FusionReportProps> extends BaseProps { dsl: T; globalFilter: { /** * 多个筛选项关系,暂时未使用 */ logic: ELogic; /** * 全局时间筛选 */ period: GlobalDSLParamsPeriod | null; skipCache?: boolean; }; cardOps: { /** * 是否隐藏卡片标题和操作按钮 */ hideTitleAndOps: boolean; /** * 是否处于看板编辑态中 */ isEditor: boolean; }; /** * 报表详情 */ report: DashboardReport; /** * 设置报表为已选中状态,用于图表下钻返回时,设置图表状态 */ setReportActive: () => void; /** * 打开报表的编辑组件,等同于在编辑态点击卡片 Wrapper 上的编辑按钮 */ onEditReport: () => void; /** * 全量主体信息 */ subjects: SubjectItemInfo[]; } export interface FusionReportHooks { /** * 复制图表时,如果实现了此方法,会调用此方法进行图表的深拷贝,如果未实现,则进行图表的浅拷贝 */ onCopy: (dsl: T) => Promise; } export interface FusionConfigProps> extends BaseProps { dsl: T; /** * 配置区有任意值变化时,都需要调用此方法通知重新渲染图表 */ onConfigSave: (dsl: T, reportName?: string) => void; /** * 是否有图表的编辑权限 */ reportEditorAuth: boolean; /** * 全量主体信息 */ subjects: SubjectItemInfo[]; }