嵌入式分析SDK - 仪表盘
⚠️此功能处于测试阶段。请随意尝试,但请注意,某些功能可能会发生变化(可能无法按预期工作)。
您可以将交互式、可编辑或静态仪表板嵌入。
嵌入仪表板
您可以使用仪表板组件之一来嵌入仪表板
InteractiveDashboard
StaticDashboard
EditableDashboard
仪表板组件属性
属性 | 类型 | 描述 |
---|---|---|
dashboardId | 数字 \| 字符串 |
仪表板的ID。这是 - 访问仪表板链接时的数值ID,例如 https://127.0.0.1:3000/dashboard/1-my-dashboard ,其中ID为 1 - 在直接使用API或使用SDK集合浏览器返回数据时,仪表板对象的 entity_id 键中找到的字符串ID |
initialParameterValues | Record |
仪表板的查询参数。对于单个选项,使用一个string 值,对于多个选项,使用字符串列表。 |
withTitle | boolean |
仪表板是否应显示标题。 |
withCardTitle | boolean |
仪表板卡片是否应显示标题。 |
withDownloads | boolean \| null |
是否隐藏下载按钮。 |
hiddenParameters | string[] \| null |
要隐藏的参数列表。 |
questionHeight* | number \| null |
从仪表板钻取到问题级别时问题组件的高度。 |
questionPlugins* | { mapQuestionClickActions: Function } \| null |
用于覆盖或添加钻取菜单的附加映射函数。有关详细信息,请参阅实现自定义操作部分。 |
onLoad | (dashboard: Dashboard \| null) => void |
事件处理器,在仪表板加载并显示所有可见卡片及其内容后触发。 |
onLoadWithoutCards | (dashboard: Dashboard \| null) => void |
事件处理器,在仪表板加载后触发,但未加载其卡片 - 在此阶段仪表板标题、选项卡和卡片网格已渲染,但卡片内容尚未加载。 |
* 对于StaticDashboard
不可用。
默认情况下,仪表板组件占满整个页面高度(100vh)。您可以通过传递到style
或className
属性的自定义样式来覆盖此行为。
<EditableDashboard
style=
dashboardId={dashboardId}
/>
使用InteractiveDashboard
组件的示例嵌入式仪表板
import React from "react";
import {MetabaseProvider, InteractiveDashboard} from "@metabase/embedding-sdk-react";
const config = {...}
export default function App() {
const dashboardId = 1; // This is the dashboard ID you want to embed
const initialParameterValues = {}; // Define your query parameters here
// choose parameter names that are in your dashboard
const hiddenParameters = ["location", "city"]
return (
<MetabaseProvider config={config}>
<InteractiveDashboard
dashboardId={dashboardId}
initialParameterValues={initialParameterValues}
withTitle={false}
withDownloads={false}
hiddenParameters={hideParameters}
/>
</MetabaseProvider>
);
}
仪表板插件
dashcardMenu
此插件允许您向仪表板卡片的溢出菜单中添加、删除和修改自定义操作。该插件在卡片的右上角显示为下拉菜单。
插件默认配置如下
const plugins = {
dashboard: {
dashcardMenu: {
withDownloads: true,
withEditLink: true,
customItems: [],
},
},
};
dashcardMenu
:可以在InteractiveDashboard中使用如下
<InteractiveDashboard
questionId={1}
plugins={{
dashboard: {
dashcardMenu: null,
},
}}
/>
启用/禁用默认操作
要从dashcard菜单中删除下载按钮,将withDownloads
设置为false
。要从dashcard菜单中删除编辑链接,将withEditLink
设置为false
。
const plugins = {
dashboard: {
dashcardMenu: {
withDownloads: false,
withEditLink: false,
customItems: [],
},
},
};
向现有菜单添加自定义操作
您可以通过向customItems
数组中添加对象来向dashcard菜单添加自定义操作。每个元素可以是对象或函数,该函数接受dashcard的问题,并输出以下形式的自定义项列表
{
iconName: string;
label: string;
onClick: () => void;
disabled ? : boolean;
}
以下是一个示例
const plugins: SdkPluginsConfig = {
dashboard: {
dashcardMenu: {
customItems: [
{
iconName: "chevronright",
label: "Custom action",
onClick: () => {
alert(`Custom action clicked`);
},
},
({ question }) => {
return {
iconName: "chevronright",
label: "Custom action",
onClick: () => {
alert(`Custom action clicked ${question.name}`);
},
};
},
],
},
},
};
用您自己的组件替换现有菜单
如果您想用您自己的组件替换现有菜单,可以提供一个返回React组件的函数。此函数也可以接收问题作为参数。
const plugins: SdkPluginsConfig = {
dashboard: {
dashcardMenu: ({ question }) => (
<button onClick={() => console.log(question.name)}>Click me</button>
),
},
};
创建仪表板
可以使用useCreateDashboardApi
钩子或CreateDashboardModal
组件创建仪表板。
钩子
const { createDashboard } = useCreateDashboardApi();
const handleDashboardCreate = async () => {
const dashboard = await createDashboard(props);
// do something with created empty dashboard, e.g., use the dashboard in EditableDashboard component
};
return <Button onClick={handleDashboardCreate}>Create new dashboard</Button>;
属性
属性 | 类型 | 描述 |
---|---|---|
name | string |
(必需)仪表板标题 |
description | string \| null |
可选的仪表板描述 |
collectionId | number \| 'root' \| 'personal' \| null |
创建新仪表板的位置集合。您可以使用预定义的系统值,如root 或personal 。 |
组件
const [dashboard, setDashboard] = useState<Dashboard | null>(null);
if (dashboard) {
return <EditableDashboard dashboardId={dashboard.id} />;
}
return <CreateDashboardModal onClose={handleClose} onCreate={setDashboard} />;
支持的组件属性
属性 | 类型 | 描述 |
---|---|---|
collectionId? | number \| 'root' \| 'personal' \| null |
初始集合字段值。您可以使用预定义的系统值,如root 或personal 。 |
onCreate | (dashboard: Dashboard) => void |
处理仪表板创建的处理器。 |
onClose | () => void |
关闭模态组件的处理程序 |
阅读关于Metabase其他版本的文档。