From ab76a4f3291c160df0d439c914fb54430590b3eb Mon Sep 17 00:00:00 2001 From: wisonic-s Date: Fri, 29 Mar 2024 12:25:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE):=20AntV=20=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E8=A1=A8=E5=A4=B4=E6=8E=92=E5=BA=8F=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E8=A1=A8=E5=A4=B4=E5=AD=97=E4=BD=93=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=20#8147?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/chart/chart/table/table-info.js | 133 +++++++++--------- 1 file changed, 69 insertions(+), 64 deletions(-) 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 80ecc4543b..7e94bed258 100644 --- a/core/frontend/src/views/chart/chart/table/table-info.js +++ b/core/frontend/src/views/chart/chart/table/table-info.js @@ -182,38 +182,7 @@ export function baseTableInfo(container, chart, action, tableData, pageInfo, vue } // 表头排序 if (customAttr.size.tableHeaderSort) { - const sortIconMap = { - 'asc': 'SortUp', - 'desc': 'SortDown' - } - s2Options.headerActionIcons = [ - { - iconNames: ['GroupAsc', 'SortUp', 'SortDown'], - belongsCell: 'colCell', - displayCondition: (meta, iconName) => { - if (meta.field === SERIES_NUMBER_FIELD) { - return false - } - const sortMethodMap = meta.spreadsheet.store.get('sortMethodMap') - const sortType = sortMethodMap?.[meta.field] - if (sortType) { - return iconName === sortIconMap[sortType] - } - return iconName === 'GroupAsc' - }, - onClick: (props) => { - const { meta, event } = props - meta.spreadsheet.showTooltip({ - position: { - x: event.clientX, - y: event.clientY - }, - event, - ...props - }) - } - } - ] + configHeaderSort(chart, s2Options) } // 开启序号之后,第一列就是序号列,修改 label 即可 if (s2Options.showSeriesNumber) { @@ -426,38 +395,7 @@ export function baseTableNormal(container, chart, action, tableData, vueCom, res } // 表头排序 if (customAttr.size.tableHeaderSort) { - const sortIconMap = { - 'asc': 'SortUp', - 'desc': 'SortDown' - } - s2Options.headerActionIcons = [ - { - iconNames: ['GroupAsc', 'SortUp', 'SortDown'], - belongsCell: 'colCell', - displayCondition: (meta, iconName) => { - if (meta.field === SERIES_NUMBER_FIELD) { - return false - } - const sortMethodMap = meta.spreadsheet.store.get('sortMethodMap') - const sortType = sortMethodMap?.[meta.field] - if (sortType) { - return iconName === sortIconMap[sortType] - } - return iconName === 'GroupAsc' - }, - onClick: (props) => { - const { meta, event } = props - meta.spreadsheet.showTooltip({ - position: { - x: event.clientX, - y: event.clientY - }, - event, - ...props - }) - } - } - ] + configHeaderSort(chart, s2Options) } // 开启序号之后,第一列就是序号列,修改 label 即可 if (s2Options.showSeriesNumber) { @@ -1211,3 +1149,70 @@ function copyContent(s2Instance, event, fieldMeta) { copyString(content, true) } } + +const SORT_DEFAULT = '' +const SORT_UP = '' +const SORT_DOWN = '' + +function configHeaderSort(chart, options) { + const { tableHeaderFontColor } = JSON.parse(chart.customAttr).color + const iconColor = tableHeaderFontColor ?? '#666' + const sortDefault = svg2Base64(SORT_DEFAULT.replace('{fill}', iconColor)) + const sortUp = svg2Base64(SORT_UP.replace('{fill}', iconColor)) + const sortDown = svg2Base64(SORT_DOWN.replace('{fill}', iconColor)) + const randomSuffix = Math.random() + const sortIconMap = { + 'asc': `customSortUp${randomSuffix}`, + 'desc': `customSortDown${randomSuffix}` + } + options.customSVGIcons = [ + { + name: `customSortDefault${randomSuffix}`, + svg: sortDefault + }, + { + name: `customSortUp${randomSuffix}`, + svg: sortUp + }, + { + name: `customSortDown${randomSuffix}`, + svg: sortDown + } + ] + options.headerActionIcons = [ + { + iconNames: [ + `customSortDefault${randomSuffix}`, + `customSortUp${randomSuffix}`, + `customSortDown${randomSuffix}` + ], + belongsCell: 'colCell', + displayCondition: (meta, iconName) => { + if (meta.field === SERIES_NUMBER_FIELD) { + return false + } + const sortMethodMap = meta.spreadsheet.store.get('sortMethodMap') + const sortType = sortMethodMap?.[meta.field] + if (sortType) { + return iconName === sortIconMap[sortType] + } + return iconName === `customSortDefault${randomSuffix}` + }, + onClick: (props) => { + const { meta, event } = props + meta.spreadsheet.showTooltip({ + position: { + x: event.clientX, + y: event.clientY + }, + event, + ...props + }) + } + } + ] +} + +function svg2Base64(svg) { + return `data:image/svg+xml;charset=utf-8;base64,${btoa(svg)}` +}