Skip to content

仪表盘

仪表盘用于创建由多个区块构成的信息展示页面,这些区块可以灵活排练,可以是图表、表格、卡片等。

用法

一般用法

html
<div id="dashboardExample"></div>

<script>
const dashboard = new zui.Dashboard('#dashboardExample', {
    blocks: [
        {id: 1},
        {id: 2, size: 'md'},
        {id: 3, size: {width: 4, height: 4}},
        {id: 4, placeholder: 'placeholder'},
        {id: 5},
        {id: 6, left: 8, top: 0},
        {id: 7, size: 'smWide'},
        {id: 8, size: 'xsLong'},
        {id: 9, size: 'xs'},
    ],
    blockFetch: '/dashboard/block-{id}.html',
});
</script>

选项

通过选项来定义仪表盘上显示的区块或进行其他设置,选项对象支持的属性包括:

属性类型说明
responsiveboolean是否响应式,可选,默认为 true
blocksBlockSetting[]区块定义列表,可选,默认为 []
gridnumber网格水平个数,可选,默认为 3
gapnumber区块之间的间隔,可选,默认为 16
cellHeightnumber单个网格的高度,可选,默认为 64
blockFetchBlockFetcher区块内容的获取方式,可选,默认为 undefined
blockDefaultSize[width: number, height: number] | {width: number, height: number}区块的默认大小,可选,默认为 [1, 4]
blockSizeMapRecord<string, [width: number, height: number] | {width: number, height: number}>区块的大小映射表,可选,默认为 {}
blockMenuContextMenuOptions定义区块操作菜单
onLayoutChange(blocks: BlockSetting[]) => void区块布局变更回调函数

预设区块尺寸

ts
blockSizeMap: {
    xs: [1, 3],
    sm: [1, 4],
    md: [1, 5],
    lg: [1, 6],
    xl: [1, 8],
    xsWide: [2, 3],
    smWide: [2, 4],
    mdWide: [2, 5],
    lgWide: [2, 6],
    xlWide: [2, 8],
    xsLong: [3, 3],
    smLong: [3, 4],
    mdLong: [3, 5],
    lgLong: [3, 6],
    xlLong: [3, 8],
}

区块定义

仪表盘上可以显示一个或多个区块,在初始化时需要按需传入响应的内容,每个区块定义对象支持的属性包括:

属性类型说明
idstring区块的唯一标识,必须
sizestring | {width: number, height: number} | [width: number, height: number]区块的大小,可选,默认为 md
leftnumber区块的左边距,可选,如果不指定位置则自动根据顺序排列
topnumber区块的上边距,可选,如果不指定位置则自动根据顺序排列
fetchBlockFetcher区块内容的获取方式,可选,默认为 undefined
titlestring区块的标题,可选,默认为 undefined
toolbarToolbarOptions区块的工具栏,可选,默认为 undefined
placeholderComponentChildren区块的占位内容,可选,默认为 undefined
contentComponentChildren | {html: string}区块的内容,可选,默认为 undefined,当设置为 {html: string} 时可以设置 HTML。
menuContextMenuOptions区块的右键菜单,可选,默认为 undefined

方法

load

该方法用于手动重新载入指定区块的内容,定义为:

ts
function load(id: string): void;

render

通过该方法来手动渲染仪表盘,可以传入新的选项来覆盖原有的选项,定义为:

ts
function render(options: DashboardOptions): void;

addBlock

通过该方法向仪表盘添加一个新的区块,定义为:

ts
function addBlock(block: BlockSetting): void;

removeBlock

通过该方法向仪表盘移除一个区块,定义为:

ts
function removeBlock(id: string): void;

API

BlockFetcher

ts
type BlockFetchUrl = string;

type BlockFetchInit = RequestInit & {url: string};

type BlockFetchFn = (id: string, block: BlockSetting) => BlockFetchInit;

type BlockFetcher = BlockFetchInit | BlockFetchUrl | BlockFetchFn;

BlockSetting

ts
type BlockInfo = {
    id: string | number;
    size?: string | {width: number, height: number} | [width: number, height: number];
    left?: number;
    top?: number;
    fetch?: BlockFetcher;
    title?: string;
    toolbar?: ToolbarOptions;
    placeholder?: ComponentChildren;
    content?: ComponentChildren;
    menu?: ContextMenuOptions;
};

DashboardOptions

ts
type DashboardOptions =  {
    responsive?: boolean;
    blocks?: BlockSetting[];
    grid?: number;
    gap?: number;
    cellHeight?: number;
    blockFetch?: BlockFetcher;
    blockDefaultSize?: [width: number, height: number] | {width: number, height: number};
    blockSizeMap: Record<string, [width: number, height: number] | {width: number, height: number}>;
    blockMenu?: ContextMenuOptions;
    onLayoutChange?: (blocks: BlockSetting[]) => void;
};

MIT License (MIT)