feat:图表交互

This commit is contained in:
2026-10-15 03:38:20 -07:00
parent 565ecf4558
commit 9b64f9fc0b
43 changed files with 1537 additions and 727 deletions
+5 -37
View File
@@ -44,44 +44,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "area-chart",
"name": "面积图",
+5 -37
View File
@@ -121,44 +121,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "bar-chart",
"name": "柱状图",
+5 -37
View File
@@ -205,44 +205,12 @@
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "bar-line-chart",
"name": "柱线混合图",
+52
View File
@@ -0,0 +1,52 @@
[
{
"key": "dom-events",
"options": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
]
},
{
"key": "chart-events",
"options": [
{
"label": "点击数据项",
"value": "itemClick"
}
]
}
]
+5 -37
View File
@@ -71,44 +71,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "funnel-chart",
"name": "漏斗图",
+5 -37
View File
@@ -100,44 +100,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "gauge-chart",
"name": "仪表盘",
+5 -37
View File
@@ -205,44 +205,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "hbar-chart",
"name": "条形图",
+5 -37
View File
@@ -198,44 +198,12 @@
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "heatmap-chart",
"name": "热力图",
+5 -37
View File
@@ -26,44 +26,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "line-chart",
"name": "折线图",
+193
View File
@@ -0,0 +1,193 @@
{
"order": 18,
"key": "nav",
"type": "nav",
"name": "选项导航",
"description": "一组可点击的选项(页签、模型选择器),点击某项把它的 value 写进变量,值等于当前变量的项高亮;配合组件的显示条件做整页切换,配合筛选做钻取",
"tags": [
"info",
"导航",
"页签",
"切换",
"选择器",
"tabs",
"nav"
],
"renderer": "nav",
"group": "info",
"icon": "solar:list-bold",
"usage_notes": [
"props.var 写变量 ID,变量先在画布 variables 里声明;点击选项写变量不需要配事件",
"items 每项 {label, value},value 不能为空且不重复;可以写 $query,例如 SELECT DISTINCT model AS label, model AS value FROM t ORDER BY 1",
"变量的默认值取 items 里的某个 value,打开大屏时那一项高亮"
],
"field_groups": [
"node-base",
{
"key": "nav-content",
"label": "选项",
"description": "写哪个变量、有哪些选项、横排还是竖排",
"fields": [
{
"path": "props.var",
"label": "变量",
"description": "点击选项时写入的变量 ID,值等于该变量的选项高亮",
"value_type": "string",
"aliases": [
"绑定变量",
"变量名"
]
},
{
"path": "props.items",
"label": "选项",
"description": "选项列表,每项 {label: 显示文字, value: 写入变量的值}",
"value_type": "array",
"item_type": "object",
"panel": false,
"example": "label",
"identifies": true,
"aliases": [
"选项列表",
"页签",
"标签页",
"菜单项"
]
},
{
"path": "props.direction",
"label": "排列方向",
"description": "选项横排还是竖排",
"value_type": "enum",
"options": [
{
"value": "horizontal",
"label": "横排"
},
{
"value": "vertical",
"label": "竖排"
}
],
"aliases": [
"方向",
"横向",
"纵向"
]
}
]
},
{
"key": "nav-style",
"label": "样式",
"description": "选项文字的字号、颜色、对齐和选中项的颜色",
"fields": [
{
"path": "style.fontSize",
"label": "字号",
"description": "选项文字的大小",
"value_type": "number",
"minimum": 8,
"maximum": 100,
"unit": "px",
"aliases": [
"字体大小",
"文字大小"
]
},
{
"path": "style.color",
"label": "文字颜色",
"description": "未选中选项的文字颜色",
"value_type": "color",
"themed": true,
"aliases": [
"字体颜色",
"颜色"
]
},
{
"path": "style.activeColor",
"label": "选中文字色",
"description": "选中选项的文字颜色",
"value_type": "color",
"themed": true,
"aliases": [
"高亮颜色",
"选中颜色"
]
},
{
"path": "style.activeBackground",
"label": "选中背景色",
"description": "选中选项的背景颜色",
"value_type": "color",
"themed": true,
"aliases": [
"高亮背景",
"选中底色"
]
},
{
"path": "style.textAlign",
"label": "对齐",
"description": "选项在组件内的水平位置",
"value_type": "enum",
"options": [
{
"value": "left",
"label": "左对齐"
},
{
"value": "center",
"label": "居中"
},
{
"value": "right",
"label": "右对齐"
}
],
"aliases": [
"水平对齐"
]
}
]
}
],
"event_groups": [
"dom-events"
],
"schema": {
"type": "nav",
"name": "选项导航",
"layout": {
"x": 0,
"y": 0,
"width": 480,
"height": 48
},
"props": {
"var": "",
"items": [
{
"label": "选项一",
"value": "a"
},
{
"label": "选项二",
"value": "b"
},
{
"label": "选项三",
"value": "c"
}
],
"direction": "horizontal"
},
"style": {
"fontSize": 16,
"textAlign": "center"
},
"events": []
}
}
@@ -127,44 +127,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "pictorial-bar-chart",
"name": "象形柱图",
+5 -37
View File
@@ -25,44 +25,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "pie-chart",
"name": "饼图",
@@ -67,44 +67,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "progress-ring-chart",
"name": "进度环",
+5 -37
View File
@@ -148,44 +148,12 @@
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "radar-chart",
"name": "雷达图",
+5 -37
View File
@@ -45,44 +45,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "ring-chart",
"name": "环形图",
+5 -37
View File
@@ -66,44 +66,12 @@
"chart-dataset",
"chart-encode-item"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "rose-chart",
"name": "玫瑰图",
+5 -37
View File
@@ -70,44 +70,12 @@
"chart-dataset",
"chart-encode-xy"
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "scatter-chart",
"name": "散点图",
+5 -37
View File
@@ -151,44 +151,12 @@
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events",
"chart-events"
],
"rows_path": "props.option.dataset.source",
"data_source": true,
"schema": {
"type": "stacked-bar-chart",
"name": "堆叠柱状图",
+39 -39
View File
@@ -23,7 +23,9 @@
"成本、退款率、投诉量等越低越好的指标把 downIsGood 设为 true,涨跌颜色随之反过来",
"数值、对比的变化量和趋势数据可以写 $query:数值和变化量的结果要一行一列,趋势数据只选一列",
"迷你趋势线的 trend.data 是按时间先后排列的一组数字;trend.show 设为 true 才显示",
"前缀、后缀、说明为空字符串时不显示;对比用 show 控制是否显示"
"前缀、后缀、说明为空字符串时不显示;对比用 show 控制是否显示",
"明细指标卡:rows 写按筛选字段汇总好的数据行(可写 $query),bind 把列绑定到字段,例如 {\"value\": \"calls\", \"compare.value\": \"calls_mom\", \"trend.data\": \"trend\"};先按 filters 筛选,取第一行按 bind 覆盖对应字段",
"rows 里每个筛选值只对应一行;趋势用数组列,例如 DuckDB 的 list(calls ORDER BY day) AS trend"
],
"field_groups": [
"node-base",
@@ -488,46 +490,42 @@
]
}
]
},
{
"key": "stat-rows",
"label": "数据行",
"description": "按数据行显示指标:rows 是数据行,bind 把列绑定到指标卡字段,配合 filters 按变量取对应的一行",
"fields": [
{
"path": "props.rows",
"label": "数据行",
"description": "对象数组,每行一组指标值,按 filters 的字段汇总好,每个筛选值一行;可以写 $query",
"value_type": "array",
"item_type": "object",
"panel": false,
"aliases": [
"明细数据",
"行数据"
]
},
{
"path": "props.bind",
"label": "列绑定",
"description": "键是 props 下的字段路径(value、compare.value、compare2.value、trend.data 等),值是数据行的列名;有数据行时取筛选后的第一行,按它覆盖这些字段",
"value_type": "object",
"panel": false,
"aliases": [
"绑定",
"字段绑定"
]
}
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events"
],
"rows_path": "props.rows",
"schema": {
"type": "stat-card",
"name": "指标卡",
@@ -565,7 +563,9 @@
"type": "area",
"position": "right",
"data": []
}
},
"rows": [],
"bind": {}
},
"style": {
"textAlign": "left",
+6 -47
View File
@@ -25,7 +25,7 @@
{
"path": "props.content",
"label": "内容",
"description": "文本组件显示的文字",
"description": "文本组件显示的文字;可以写 {{变量ID}} 引用大屏变量,例如“{{model}} 调用明细”,变量变化时文字跟着变",
"value_type": "string",
"aliases": [
"文字",
@@ -34,7 +34,8 @@
"名字"
],
"example": "label",
"identifies": true
"identifies": true,
"template": true
}
]
},
@@ -147,43 +148,8 @@
]
}
],
"eventOptions": [
{
"label": "点击事件",
"value": "click"
},
{
"label": "双击事件",
"value": "dblclick"
},
{
"label": "鼠标进入事件",
"value": "mouseenter"
},
{
"label": "鼠标离开事件",
"value": "mouseleave"
},
{
"label": "鼠标按下事件",
"value": "mousedown"
},
{
"label": "鼠标抬起事件",
"value": "mouseup"
},
{
"label": "鼠标移动事件",
"value": "mousemove"
},
{
"label": "鼠标滚轮事件",
"value": "mousewheel"
},
{
"label": "生命周期事件",
"value": "vnodeMounted"
}
"event_groups": [
"dom-events"
],
"schema": {
"type": "text",
@@ -202,13 +168,6 @@
"textAlign": "center",
"alignItems": "center"
},
"events": [
{
"type": "click",
"title": "点击事件",
"name": "fn",
"code": "console.log(123)"
}
]
"events": []
}
}