From fe3aaf38ff80793da3b548f36a359a7b5edc2e86 Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Wed, 28 Feb 2024 11:34:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE):=20=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E5=8F=B3=E9=94=AE=E5=A4=8D=E5=88=B6=E6=8C=87=E5=AE=9A=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/chart/chart/table/table-info.js | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/core/frontend/src/views/chart/chart/table/table-info.js b/core/frontend/src/views/chart/chart/table/table-info.js index 1286b42d8d..ad2ff103c2 100644 --- a/core/frontend/src/views/chart/chart/table/table-info.js +++ b/core/frontend/src/views/chart/chart/table/table-info.js @@ -17,6 +17,8 @@ import { formatterItem, valueFormatter } from '@/views/chart/chart/formatter' import { handleTableEmptyStrategy, hexColorToRGBA } from '@/views/chart/chart/util' import { maxBy, minBy, find } from 'lodash-es' import TableTooltip from '@/views/chart/components/table/TableTooltip.vue' +import Vue from 'vue' + class SortTooltip extends BaseTooltip { vueCom constructor(spreadsheet, vueCom) { @@ -256,6 +258,8 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo, if (size.tableCellTooltip?.show) { s2.on(S2Event.DATA_CELL_HOVER, event => showTooltipValue(s2, event, meta)) } + // right click + s2.on(S2Event.GLOBAL_CONTEXT_MENU, event => copyContent(s2, event, meta)) // column resize if (size.tableColumnMode === 'field') { s2.on(S2Event.LAYOUT_RESIZE_COL_WIDTH, event => resizeFunc(event)) @@ -494,6 +498,8 @@ export function baseTableNormal(s2, container, chart, action, tableData, vueCom, if (size.tableCellTooltip?.show) { s2.on(S2Event.DATA_CELL_HOVER, event => showTooltipValue(s2, event, meta)) } + // right click + s2.on(S2Event.GLOBAL_CONTEXT_MENU, event => copyContent(s2, event, meta)) // column resize if (size.tableColumnMode === 'field') { s2.on(S2Event.LAYOUT_RESIZE_COL_WIDTH, event => resizeFunc(event)) @@ -727,6 +733,8 @@ export function baseTablePivot(s2, container, chart, action, headerAction, table if (size.tableCellTooltip?.show) { s2.on(S2Event.DATA_CELL_HOVER, event => showTooltipValue(s2, event, meta)) } + // right click + s2.on(S2Event.GLOBAL_CONTEXT_MENU, event => copyContent(s2, event, meta)) // theme const customTheme = getCustomTheme(chart) s2.setThemeCfg({ theme: customTheme }) @@ -1103,3 +1111,31 @@ function getTooltipPosition(event) { } return result } + +function copyContent(s2Instance, event, fieldMap) { + event.preventDefault() + const cell = s2Instance.getCell(event.target) + const valueField = cell.getMeta().valueField + const cellMeta = cell.getMeta() + let content + // 单元格 + if (cellMeta?.data) { + const value = cellMeta.data[valueField] + const metaObj = find(fieldMap, m => + m.field === valueField + ) + content = value?.toString() + if (metaObj) { + content = metaObj.formatter(value) + } + } else { + // 列头&行头 + content = cellMeta.value + if (fieldMap?.[content]) { + content = fieldMap[content] + } + } + if (content) { + navigator.clipboard.writeText(content) + } +}