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)}`
+}