name: data-build-dashboard description: 构建一个带有图表、过滤器和表格的交互式HTML仪表板
构建交互式仪表板
如果您看到不熟悉的占位符或需要检查哪些工具已连接,请询问可用的集成。
构建一个自包含的交互式HTML仪表板,带有图表、过滤器、表格和专业样式。可直接在浏览器中打开——无需服务器或依赖。
使用方法
您可以要求构建一个仪表板,并附上描述(例如,“构建销售仪表板”或“创建支持票证仪表板”)。
参数
description— 仪表板目的和内容的描述data source—(可选)要使用的数据
工作流程
1. 理解仪表板需求
确定:
- 目的:高管概述、运营监控、深入分析、团队报告
- 受众:谁将使用此仪表板?
- 关键指标:哪些数字最重要?
- 维度:用户应能通过什么进行过滤或切片?
- 数据源:实时查询、粘贴数据、CSV文件或样本数据
2. 收集数据
如果连接了数据仓库:
- 查询必要数据
- 将结果以JSON格式嵌入HTML文件中
如果数据已粘贴或上传:
- 解析并清理数据
- 以JSON格式嵌入仪表板
如果根据描述工作而无数据:
- 创建一个符合描述模式的真实样本数据集
- 在仪表板中注明使用样本数据
- 提供替换真实数据的说明
3. 设计仪表板布局
遵循标准仪表板布局模式:
┌──────────────────────────────────────────────────┐
│ 仪表板标题 [过滤器 ▼] │
├────────────┬────────────┬────────────┬───────────┤
│ KPI卡片 │ KPI卡片 │ KPI卡片 │ KPI卡片 │
├────────────┴────────────┼────────────┴───────────┤
│ │ │
│ 主要图表 │ 次要图表 │
│ (最大区域) │ │
│ │ │
├─────────────────────────┴────────────────────────┤
│ │
│ 详情表格(可排序、可滚动) │
│ │
└──────────────────────────────────────────────────┘
根据内容调整布局:
- 顶部2-4个KPI卡片,用于显示关键数字
- 中间部分1-3个图表,用于趋势和细分
- 底部可选详情表格,用于深入数据
- 过滤器位于标题或侧边栏,取决于复杂性
4. 构建HTML仪表板
生成单个自包含HTML文件,包括:
结构(HTML):
- 语义HTML5布局
- 使用CSS Grid或Flexbox的响应式网格
- 过滤器控件(下拉菜单、日期选择器、切换按钮)
- 带值和标签的KPI卡片
- 图表容器
- 带可排序标题的数据表格
样式(CSS):
- 专业配色方案(干净的白色、灰色,数据使用强调色)
- 基于卡片的布局,带轻微阴影
- 一致的排版(系统字体,便于快速加载)
- 响应式设计,适用于不同屏幕尺寸
- 打印友好样式
交互性(JavaScript):
- Chart.js用于交互式图表(通过CDN包含)
- 过滤器下拉菜单,可同时更新所有图表和表格
- 可排序表格列
- 图表上的悬停工具提示
- 数字格式化(逗号、货币、百分比)
数据(嵌入JSON):
- 所有数据直接以JavaScript变量嵌入HTML中
- 无需外部数据获取
- 仪表板完全离线工作
5. 实现图表类型
所有图表使用Chart.js。常见仪表板图表模式:
- 折线图:时间序列趋势
- 柱状图:类别比较
- 环形图:组成(当类别少于6个时)
- 堆叠柱状图:随时间变化的组成
- 混合图(柱状+折线):量与率叠加
6. 添加交互性
过滤器:
// 所有过滤器更新中心过滤器状态
// 当过滤器变化时,图表和表格重新渲染
function applyFilters() {
const filtered = data.filter((row) => matchesFilters(row));
updateKPIs(filtered);
updateCharts(filtered);
updateTable(filtered);
}
表格排序:
- 点击列标题以升序/降序排序
- 当前排序列和方向的视觉指示器
工具提示:
- 图表在悬停时显示详细值
- KPI卡片显示与上一时期的比较
7. 保存和打开
- 将仪表板保存为描述性名称的HTML文件(例如,
sales_dashboard.html) - 在用户的默认浏览器中打开它
- 确认渲染正确
- 提供更新数据或自定义的说明
输出模板
生成的HTML文件遵循此结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>[仪表板标题]</title>
<script
src="https://cdn.jsdelivr.net/npm/chart.js@4.5.1"
integrity="sha384-jb8JQMbMoBUzgWatfe6COACi2ljcDdZQ2OxczGA3bGNeWe+6DChMTBJemed7ZnvJ"
crossorigin="anonymous"
></script>
<style>
/* 专业仪表板CSS */
</style>
</head>
<body>
<div class="dashboard">
<header><!-- 标题和过滤器 --></header>
<section class="kpis"><!-- KPI卡片 --></section>
<section class="charts"><!-- 图表容器 --></section>
<section class="details"><!-- 数据表格 --></section>
</div>
<script>
const DATA = [
/* 嵌入JSON数据 */
];
// 仪表板初始化和交互性
</script>
</body>
</html>
提示
- 仪表板是完全自包含的HTML文件——通过发送文件与任何人分享
- 对于实时仪表板,考虑连接BI工具。这些仪表板是点-in-time快照
- 请求“黑暗模式”或“演示模式”以获取不同样式
- 您可以请求特定配色方案以匹配品牌