diff --git a/core/core-frontend/src/models/chart/chart-attr.d.ts b/core/core-frontend/src/models/chart/chart-attr.d.ts
index e00292cd07..147d822037 100644
--- a/core/core-frontend/src/models/chart/chart-attr.d.ts
+++ b/core/core-frontend/src/models/chart/chart-attr.d.ts
@@ -389,6 +389,10 @@ declare interface ChartBasicStyle {
* 透视表行头宽度
*/
tableRowHeaderWidth: number
+ /**
+ * 透视表行头宽度百分比
+ */
+ tableRowHeaderWidthPercent: number
}
/**
* 表头属性
diff --git a/core/core-frontend/src/utils/canvasStyle.ts b/core/core-frontend/src/utils/canvasStyle.ts
index b567b832b1..986cd1e0a9 100644
--- a/core/core-frontend/src/utils/canvasStyle.ts
+++ b/core/core-frontend/src/utils/canvasStyle.ts
@@ -121,7 +121,8 @@ export const customAttrTrans = {
'lineSymbolSize',
'leftLineWidth',
'leftLineSymbolSize',
- 'tableColumnWidth'
+ 'tableColumnWidth',
+ 'tableRowHeaderWidth'
],
tableHeader: [
'tableTitleFontSize',
diff --git a/core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue b/core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue
index ed45938aac..93cf315ff0 100644
--- a/core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue
+++ b/core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue
@@ -65,12 +65,27 @@ const state = reactive({
fieldId: '',
width: 0
},
- fileList: []
+ fileList: [],
+ treeRowWidth: 10
})
const emit = defineEmits(['onBasicStyleChange', 'onMiscChange'])
const changeBasicStyle = (prop?: string, requestData = false, render = true) => {
emit('onBasicStyleChange', { data: state.basicStyleForm, requestData, render }, prop)
}
+
+const changeTreeRowWidth = () => {
+ if (state.basicStyleForm.tableRowHeaderMode === 'percent') {
+ state.basicStyleForm.tableRowHeaderWidthPercent = state.treeRowWidth
+ }
+ if (state.basicStyleForm.tableRowHeaderMode === 'fixed') {
+ state.basicStyleForm.tableRowHeaderWidth = state.treeRowWidth
+ }
+ changeBasicStyle(
+ state.basicStyleForm.tableRowHeaderMode === 'percent'
+ ? 'tableRowHeaderWidthPercent'
+ : 'tableRowHeaderWidth'
+ )
+}
const onAlphaChange = v => {
const _v = parseInt(v)
if (_v >= 0 && _v <= 100) {
@@ -146,13 +161,15 @@ const init = () => {
tableExpandLevelOptions.push({ name, value: i })
}
if (basicStyle.tableRowHeaderMode === 'percent') {
- if (basicStyle.tableRowHeaderWidth > 50) {
- state.basicStyleForm.tableRowHeaderWidth = 20
+ state.treeRowWidth = basicStyle.tableRowHeaderWidthPercent
+ if (basicStyle.tableRowHeaderWidthPercent > 80) {
+ state.treeRowWidth = 80
}
}
if (basicStyle.tableRowHeaderMode === 'fixed') {
+ state.treeRowWidth = basicStyle.tableRowHeaderWidth
if (basicStyle.tableRowHeaderWidth < 10) {
- state.basicStyleForm.tableRowHeaderWidth = 120
+ state.treeRowWidth = 120
}
}
}
@@ -1029,11 +1046,11 @@ onMounted(async () => {
>
diff --git a/core/core-frontend/src/views/chart/components/editor/util/chart.ts b/core/core-frontend/src/views/chart/components/editor/util/chart.ts
index 7a18937324..67af08570c 100644
--- a/core/core-frontend/src/views/chart/components/editor/util/chart.ts
+++ b/core/core-frontend/src/views/chart/components/editor/util/chart.ts
@@ -1733,7 +1733,8 @@ export const DEFAULT_BASIC_STYLE: ChartBasicStyle = {
quotaPosition: 'col',
quotaColLabel: t('dataset.value'),
tableRowHeaderMode: 'adapt',
- tableRowHeaderWidth: 10
+ tableRowHeaderWidth: 120,
+ tableRowHeaderWidthPercent: 20
}
export const BASE_VIEW_CONFIG = {
diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/table/table-pivot.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/table/table-pivot.ts
index 370257b055..9640d5f259 100644
--- a/core/core-frontend/src/views/chart/components/js/panel/charts/table/table-pivot.ts
+++ b/core/core-frontend/src/views/chart/components/js/panel/charts/table/table-pivot.ts
@@ -267,7 +267,12 @@ export class TablePivot extends S2ChartView {
// options
s2Options.style = this.configStyle(chart, s2DataConfig)
if (basicStyle.tableLayoutMode === 'tree') {
- const { defaultExpandLevel, tableRowHeaderMode, tableRowHeaderWidth } = basicStyle
+ const {
+ defaultExpandLevel,
+ tableRowHeaderMode,
+ tableRowHeaderWidth,
+ tableRowHeaderWidthPercent
+ } = basicStyle
// 默认展开层级
if (isNumeric(defaultExpandLevel)) {
if ((defaultExpandLevel as number) >= chart.xAxis.length) {
@@ -292,11 +297,11 @@ export class TablePivot extends S2ChartView {
s2Options.style.treeRowsWidth = treeRowsWidth
}
if (tableRowHeaderMode === 'percent') {
- let treeRowsWidth = tableRowHeaderWidth
- if (treeRowsWidth > 50) {
- treeRowsWidth = 20
+ let treeRowsWidthPercent = tableRowHeaderWidthPercent
+ if (treeRowsWidthPercent > 80) {
+ treeRowsWidthPercent = 20
}
- const width = containerDom.offsetWidth * (treeRowsWidth / 100)
+ const width = containerDom.offsetWidth * (treeRowsWidthPercent / 100)
s2Options.style.treeRowsWidth = width
}
}