bricks/docs/ai.old/line.md
2025-11-18 14:59:26 +08:00

115 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ChartLine
ChartLine 是一个基于 ECharts 的折线图控件,用于可视化展示一组或多组数值型数据随某一维度(如时间、类别)的变化趋势。它是 **普通控件**,继承自 `bricks.EchartsExt`,属于 bricks 框架中用于数据可视化的扩展组件。
---
## 主要方法
- **`values_from_data(data, name)`**
从数据数组中提取指定字段的值,返回值数组,用于生成折线的数据点。
- **`lineinfo_from_data(data, name)`**
根据字段名生成单条折线的配置对象(包含名称和数据),供 ECharts 使用。
- **`setup_options(data)`**
核心方法,根据传入的数据和控件配置项(如 `nameField`, `valueFields`)动态构建完整的 ECharts 配置项(`option`),并返回。
---
## 主要事件
该控件本身不派发自定义业务事件,但作为 ECharts 实例,支持以下原生事件绑定:
- `'click'`:当用户点击图表中的某个数据点时触发。
- `'mouseover'`:鼠标悬停在图表元素上时触发。
- 可通过 `binds` 绑定这些事件,并结合 `dispatch_event``script` 做进一步处理。
---
## 源码例子
```json
{
"id": "chart_sales_trend",
"widgettype": "ChartLine",
"options": {
// 数据来源 URL将从服务器获取原始数据
"data_url": "/api/sales/data",
"data_params": {
"period": "monthly",
"category": "electronics"
},
"method": "GET",
// 图表显示所需的关键字段配置
"nameField": "month", // X轴显示的维度字段如月份
"valueFields": [ // 多个要绘制的指标字段
"sales_amount",
"profit"
],
// 自定义 ECharts 选项扩展(可选)
"line_options": {
"tooltip": {
"formatter": "{b}: {c}"
},
"series": {
"smooth": true
}
},
// 初始静态数据(可选,若无 data_url 可直接使用)
"data": [
{ "month": "Jan", "sales_amount": 120, "profit": 30 },
{ "month": "Feb", "sales_amount": 140, "profit": 35 },
{ "month": "Mar", "sales_amount": 160, "profit": 40 },
{ "month": "Apr", "sales_amount": 150, "profit": 38 }
]
},
// 事件绑定:点击图表时弹出当前点击的数据信息
"binds": [
{
"actiontype": "script",
"wid": "chart_sales_trend",
"event": "click",
"target": "chart_sales_trend",
"script": "async function({ params }) { console.log('点击了图表:', params); alert('你点击了: ' + params.name + ',数值: ' + params.value); }",
"params": {
"params": "=event.params" // 获取 ECharts 事件参数
}
},
{
"actiontype": "method",
"wid": "chart_sales_trend",
"event": "refresh",
"target": "chart_sales_trend",
"method": "refreshData",
"params": {
"params": {
"period": "quarterly"
}
}
}
]
}
```
> ✅ **注释说明:**
>
> - `id`: 控件唯一标识符,在页面中必须唯一。
> - `widgettype`: 必须为已注册的控件类型,此处为 `"ChartLine"`。
> - `options.data_url`: 若提供,则控件会在初始化时自动发起请求获取数据。
> - `options.data_params`: 请求参数,与 `data_url` 配合使用。
> - `options.method`: HTTP 方法,默认为 GET。
> - `options.nameField`: 定义 X 轴使用的字段名(例如 “month”、“date”
> - `options.valueFields`: 定义需要绘制为折线的多个数值字段。
> - `options.data`: 可选的本地静态数据,优先级低于远程数据。
> - `binds[0]`: 监听图表的 click 事件,执行脚本打印或提示用户点击内容。
> - `binds[1]`: 支持调用控件自身的 `refreshData` 方法来刷新数据(例如切换时间段后重新加载)。
---
📌 **提示:**
此控件适合用于仪表盘、报表系统等需要动态展示趋势图的场景。配合 `urlwidget` 可实现按需加载不同图表模块,提升应用性能。