From 278a883221c7f0c6532cf80e7a05f9e018b70a3b Mon Sep 17 00:00:00 2001 From: xiaoluoHe Date: Sun, 26 Jan 2025 15:14:27 +0800 Subject: [PATCH] docs: add label tooltip demo --- .../examples/en/label/label-mark-tooltip.md | 124 ++++++++++++++++++ docs/assets/examples/menu.json | 9 +- .../examples/zh/label/label-mark-tooltip.md | 124 ++++++++++++++++++ .../vchart/preview/label-tooltip-1.13.5.png | Bin 0 -> 36941 bytes 4 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 docs/assets/examples/en/label/label-mark-tooltip.md create mode 100644 docs/assets/examples/zh/label/label-mark-tooltip.md create mode 100644 docs/public/vchart/preview/label-tooltip-1.13.5.png diff --git a/docs/assets/examples/en/label/label-mark-tooltip.md b/docs/assets/examples/en/label/label-mark-tooltip.md new file mode 100644 index 0000000000..1e6c4f88c3 --- /dev/null +++ b/docs/assets/examples/en/label/label-mark-tooltip.md @@ -0,0 +1,124 @@ +--- +category: examples +group: label +title: Label-Triggered Tooltips +keywords: label,richtext +cover: /vchart/preview/label-tooltip-1.13.5.png +option: barChart#label +--- + +# Label-Triggered Tooltips + +Starting from version `1.13.5`, VChart supports displaying tooltips on labels. The label tooltip maintains consistency with the mark tooltip and is affected by the tooltip.mark configuration. You can distinguish whether the tooltip is triggered by a label or a shape in related callbacks. + +## Key Configuration + +- `label`: Label configuration. + - `visible`: Display labels. + - `interactive`: Whether labels respond to interactions. + - `showRelatedMarkTooltip`: Whether labels display tooltips associated with the related marks. + +## Demo source + +```javascript livedemo +const data = [ + { year: '2012', type: 'Forest', value: 320 }, + { year: '2012', type: 'Steppe', value: 220 }, + { year: '2012', type: 'Desert', value: 150 }, + { year: '2012', type: 'Wetland', value: 98 }, + { year: '2013', type: 'Forest', value: 332 }, + { year: '2013', type: 'Steppe', value: 182 }, + { year: '2013', type: 'Desert', value: 232 }, + { year: '2013', type: 'Wetland', value: 77 }, + { year: '2014', type: 'Forest', value: 301 }, + { year: '2014', type: 'Steppe', value: 191 }, + { year: '2014', type: 'Desert', value: 201 }, + { year: '2014', type: 'Wetland', value: 101 }, + { year: '2015', type: 'Forest', value: 334 }, + { year: '2015', type: 'Steppe', value: 234 }, + { year: '2015', type: 'Desert', value: 154 }, + { year: '2015', type: 'Wetland', value: 99 }, + { year: '2016', type: 'Forest', value: 390 }, + { year: '2016', type: 'Steppe', value: 290 }, + { year: '2016', type: 'Desert', value: 190 }, + { year: '2016', type: 'Wetland', value: 40 } +]; +const aggregation = {}; +data.forEach(({ year, value }) => { + if (!aggregation[year]) { + aggregation[year] = 0; + } + aggregation[year] += value; +}); +const spec = { + type: 'bar', + data: [ + { + id: 'bar', + values: data + } + ], + xField: ['year', 'type'], + yField: 'value', + seriesField: 'type', + bar: { + state: { + legend_hover_reverse: { + fill: '#ccc' + } + } + }, + legends: { + visible: true + }, + label: { visible: true, interactive: true, showRelatedMarkTooltip: true }, + tooltip: { + mark: { + title: { + value: (datum, { node }) => (node.type === 'text' ? `Label: ${datum['year']}` : datum['type']) + }, + content: [ + { + key: datum => datum['type'], + value: datum => datum['value'] + }, + { + hasShape: false, + key: 'Proportion', + value: (datum, ...args) => Math.round((datum['value'] / aggregation[datum['year']]) * 10000) / 100 + '%' + } + ] + }, + dimension: { + title: { + value: datum => `Y${datum['year']} (mouse scrolling available)` + }, + content: [ + { + key: datum => datum['type'], + value: datum => datum['value'] + }, + { + hasShape: false, + key: datum => datum['type'] + ' Proportion', + value: datum => Math.round((datum['value'] / aggregation[datum['year']]) * 10000) / 100 + '%' + } + ] + }, + enterable: true, + style: { + maxContentHeight: 120 + } + } +}; + +const vchart = new VChart(spec, { dom: CONTAINER_ID }); +vchart.renderSync(); + +// Just for the convenience of console debugging, DO NOT COPY! +window['vchart'] = vchart; +``` + +## Related Tutorials + +[Scatter Plot](link) diff --git a/docs/assets/examples/menu.json b/docs/assets/examples/menu.json index 99cda693d3..e1b3520f0c 100644 --- a/docs/assets/examples/menu.json +++ b/docs/assets/examples/menu.json @@ -2862,6 +2862,13 @@ "zh": "富文本标签", "en": "RichText Label" } + }, + { + "path": "label-mark-tooltip", + "title": { + "zh": "标签触发图元 Tooltip", + "en": "Enable mark tooltip triggered by label" + } } ] }, @@ -3130,4 +3137,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/docs/assets/examples/zh/label/label-mark-tooltip.md b/docs/assets/examples/zh/label/label-mark-tooltip.md new file mode 100644 index 0000000000..55b04edaea --- /dev/null +++ b/docs/assets/examples/zh/label/label-mark-tooltip.md @@ -0,0 +1,124 @@ +--- +category: examples +group: label +title: 标签触发提示信息(Tooltip) +keywords: label,tooltip +cover: /vchart/preview/label-tooltip-1.13.5.png +option: barChart#label +--- + +# 标签触发提示信息(Tooltip) + +自 `1.13.5` 版本开始,VChart 支持在标签上显示提示信息,即 Tooltip 组件。标签的 tooltip 与图元 tooltip 保持一致,同时受到 tooltip.mark 配置项的影响,可以在相关回调中区分是由标签触发还是由图形触发。 + +## 关键配置 + +- `label`: 标签配置。 + - `visible`: 显示标签。 + - `interactive`: 标签是否响应交互。 + - `showRelatedMarkTooltip`: 标签是否显示关联的图形的 tooltip。 + +## 代码演示 + +```javascript livedemo +const data = [ + { year: '2012', type: 'Forest', value: 320 }, + { year: '2012', type: 'Steppe', value: 220 }, + { year: '2012', type: 'Desert', value: 150 }, + { year: '2012', type: 'Wetland', value: 98 }, + { year: '2013', type: 'Forest', value: 332 }, + { year: '2013', type: 'Steppe', value: 182 }, + { year: '2013', type: 'Desert', value: 232 }, + { year: '2013', type: 'Wetland', value: 77 }, + { year: '2014', type: 'Forest', value: 301 }, + { year: '2014', type: 'Steppe', value: 191 }, + { year: '2014', type: 'Desert', value: 201 }, + { year: '2014', type: 'Wetland', value: 101 }, + { year: '2015', type: 'Forest', value: 334 }, + { year: '2015', type: 'Steppe', value: 234 }, + { year: '2015', type: 'Desert', value: 154 }, + { year: '2015', type: 'Wetland', value: 99 }, + { year: '2016', type: 'Forest', value: 390 }, + { year: '2016', type: 'Steppe', value: 290 }, + { year: '2016', type: 'Desert', value: 190 }, + { year: '2016', type: 'Wetland', value: 40 } +]; +const aggregation = {}; +data.forEach(({ year, value }) => { + if (!aggregation[year]) { + aggregation[year] = 0; + } + aggregation[year] += value; +}); +const spec = { + type: 'bar', + data: [ + { + id: 'bar', + values: data + } + ], + xField: ['year', 'type'], + yField: 'value', + seriesField: 'type', + bar: { + state: { + legend_hover_reverse: { + fill: '#ccc' + } + } + }, + legends: { + visible: true + }, + label: { visible: true, interactive: true, showRelatedMarkTooltip: true }, + tooltip: { + mark: { + title: { + value: (datum, { node }) => (node.type === 'text' ? `Label: ${datum['year']}` : datum['type']) + }, + content: [ + { + key: datum => datum['type'], + value: datum => datum['value'] + }, + { + hasShape: false, + key: 'Proportion', + value: (datum, ...args) => Math.round((datum['value'] / aggregation[datum['year']]) * 10000) / 100 + '%' + } + ] + }, + dimension: { + title: { + value: datum => `Y${datum['year']} (mouse scrolling available)` + }, + content: [ + { + key: datum => datum['type'], + value: datum => datum['value'] + }, + { + hasShape: false, + key: datum => datum['type'] + ' Proportion', + value: datum => Math.round((datum['value'] / aggregation[datum['year']]) * 10000) / 100 + '%' + } + ] + }, + enterable: true, + style: { + maxContentHeight: 120 + } + } +}; + +const vchart = new VChart(spec, { dom: CONTAINER_ID }); +vchart.renderSync(); + +// Just for the convenience of console debugging, DO NOT COPY! +window['vchart'] = vchart; +``` + +## 相关教程 + +[散点图](link) diff --git a/docs/public/vchart/preview/label-tooltip-1.13.5.png b/docs/public/vchart/preview/label-tooltip-1.13.5.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bcc12096ab21bd7741d89eeeb7bb6fbaf80102 GIT binary patch literal 36941 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