@datafinder/embed-sdk
Version:
Embed SDK for DataFinder
113 lines (112 loc) • 2.98 kB
TypeScript
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<string, any>;
setPayload: (value: Record<string, any>) => void;
}
export interface FusionEditorProps<T extends Record<string, any>> extends BaseProps {
dsl: T;
/**
* 看板 id
*/
dashboardId: string;
/**
* 报表 id
*/
reportId: string;
/**
* 返回看板编辑页
*/
onBack: () => void;
/**
* 保存报表
*/
onSaveReport: (dsl: any, reportName: string) => Promise<void>;
/**
* 保存报表,并返回看板编辑页
*/
onSaveAndBack: (dsl: any, reportName: string) => Promise<void>;
/**
* 用户是否有报表的编辑权限
*/
reportEditorAuth: boolean;
/**
* 全量主体信息
*/
subjects: SubjectItemInfo[];
}
export interface FusionReportProps<T extends Record<string, any>> 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<T> {
/**
* 复制图表时,如果实现了此方法,会调用此方法进行图表的深拷贝,如果未实现,则进行图表的浅拷贝
*/
onCopy: (dsl: T) => Promise<T>;
}
export interface FusionConfigProps<T extends Record<string, any>> extends BaseProps {
dsl: T;
/**
* 配置区有任意值变化时,都需要调用此方法通知重新渲染图表
*/
onConfigSave: (dsl: T, reportName?: string) => void;
/**
* 是否有图表的编辑权限
*/
reportEditorAuth: boolean;
/**
* 全量主体信息
*/
subjects: SubjectItemInfo[];
}