Merge branch 'dev' into pr@dev_one_dot_x

This commit is contained in:
dataeaseShu 2023-12-22 09:41:41 +08:00
commit 868cfbe28e
17 changed files with 95 additions and 39 deletions

View File

@ -781,11 +781,38 @@ public class DorisQueryProvider extends QueryProvider {
List<SQLObj> yFields = new ArrayList<>(); // 要把两个时间字段放进y里面 List<SQLObj> yFields = new ArrayList<>(); // 要把两个时间字段放进y里面
List<String> yWheres = new ArrayList<>(); List<String> yWheres = new ArrayList<>();
List<SQLObj> yOrders = new ArrayList<>();
if (CollectionUtils.isNotEmpty(xAxis)) { if (CollectionUtils.isNotEmpty(xAxis)) {
for (int i = 0; i < xAxis.size(); i++) { for (int i = 0; i < xAxis.size(); i++) {
ChartViewFieldDTO x = xAxis.get(i); ChartViewFieldDTO x = xAxis.get(i);
String originField; String originField;
if (StringUtils.equalsIgnoreCase(x.getGroupType(), "q")) {
if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(x.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 1) {
originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getDataeaseName());
} else {
originField = String.format(DorisConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getDataeaseName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_Y_PREFIX, i);
// 处理纵轴字段
yFields.add(getYFields(x, originField, fieldAlias));
// 处理纵轴过滤
yWheres.add(getYWheres(x, originField, fieldAlias));
// 处理纵轴排序
if (StringUtils.isNotEmpty(x.getSort()) && Utils.joinSort(x.getSort())) {
yOrders.add(SQLObj.builder()
.orderField(originField)
.orderAlias(fieldAlias)
.orderDirection(x.getSort())
.build());
}
continue;
}
if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) { if (ObjectUtils.isNotEmpty(x.getExtField()) && x.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式 // 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(x.getOriginName(), tableObj); originField = calcFieldRegex(x.getOriginName(), tableObj);
@ -824,8 +851,6 @@ public class DorisQueryProvider extends QueryProvider {
} }
} }
List<SQLObj> yOrders = new ArrayList<>();
// 处理视图中字段过滤 // 处理视图中字段过滤
String customWheres = transChartFilterTrees(tableObj, fieldCustomFilter); String customWheres = transChartFilterTrees(tableObj, fieldCustomFilter);
// 处理仪表板字段过滤 // 处理仪表板字段过滤

View File

@ -1386,9 +1386,9 @@ export default {
filter_value_can_not_str: 'Value type can not input string', filter_value_can_not_str: 'Value type can not input string',
enum_value_can_not_null: 'Enum Value can not empty.', enum_value_can_not_null: 'Enum Value can not empty.',
column: 'Column', column: 'Column',
table_freeze: 'Table Freeze',
table_config: 'Table Config', table_config: 'Table Config',
table_column_width_config: 'Column Width', table_column_width_config: 'Column Width',
table_column_freeze: 'Column Freeze',
table_column_adapt: 'Adapt', table_column_adapt: 'Adapt',
table_column_custom: 'Custom', table_column_custom: 'Custom',
chart_table_pivot: 'Pivot Table', chart_table_pivot: 'Pivot Table',

View File

@ -1386,7 +1386,7 @@ export default {
column: '列', column: '列',
table_config: '表格配置', table_config: '表格配置',
table_column_width_config: '列寬調整', table_column_width_config: '列寬調整',
table_column_freeze: '列凍結', table_freeze: '表格凍結',
table_column_adapt: '自適應', table_column_adapt: '自適應',
table_column_custom: '自定義', table_column_custom: '自定義',
chart_table_pivot: '透視表', chart_table_pivot: '透視表',
@ -1522,7 +1522,7 @@ export default {
ignore_data: '隱藏空值', ignore_data: '隱藏空值',
empty_data_field_ctrl: '字段設置', empty_data_field_ctrl: '字段設置',
sub_dimension_tip: '該字段為必填項,且不應使用類別軸中的字段,若無需該字段,請選擇基礎圖表進行展示,否則展示效果不理想', sub_dimension_tip: '該字段為必填項,且不應使用類別軸中的字段,若無需該字段,請選擇基礎圖表進行展示,否則展示效果不理想',
time_bar_tip: '該字段為必填項,且需要兩個指標或者時間類型度字段', time_bar_tip: '該字段為必填項,且需要兩個指標或者時間類型度字段',
drill_dimension_tip: '鑽取字段僅支持數據集中的字段', drill_dimension_tip: '鑽取字段僅支持數據集中的字段',
table_scroll_tip: '明細表僅在分頁模式為"下拉"時生效。', table_scroll_tip: '明細表僅在分頁模式為"下拉"時生效。',
table_threshold_tip: '提示:請勿重複選擇字段,若同一字段重複配置,則只有最後的字段配置生效。', table_threshold_tip: '提示:請勿重複選擇字段,若同一字段重複配置,則只有最後的字段配置生效。',

View File

@ -1384,9 +1384,9 @@ export default {
filter_value_can_not_str: '数值类型字段过滤值不能包含文本', filter_value_can_not_str: '数值类型字段过滤值不能包含文本',
enum_value_can_not_null: '字段枚举值不能为空', enum_value_can_not_null: '字段枚举值不能为空',
column: '列', column: '列',
table_freeze: '表格冻结',
table_config: '表格配置', table_config: '表格配置',
table_column_width_config: '列宽调整', table_column_width_config: '列宽调整',
table_column_freeze: '列冻结',
table_column_adapt: '自适应', table_column_adapt: '自适应',
table_column_custom: '自定义', table_column_custom: '自定义',
chart_table_pivot: '透视表', chart_table_pivot: '透视表',
@ -1522,7 +1522,7 @@ export default {
set_zero: '置为0', set_zero: '置为0',
ignore_data: '隐藏空值', ignore_data: '隐藏空值',
sub_dimension_tip: '该字段为必填项,且不应使用类别轴中的字段,若无需该字段,请选择基础图表进行展示,否则展示效果不理想。', sub_dimension_tip: '该字段为必填项,且不应使用类别轴中的字段,若无需该字段,请选择基础图表进行展示,否则展示效果不理想。',
time_bar_tip: '该字段为必填项,且需要两个指标或者时间类型度字段', time_bar_tip: '该字段为必填项,且需要两个指标或者时间类型度字段',
drill_dimension_tip: '钻取字段仅支持数据集中的字段', drill_dimension_tip: '钻取字段仅支持数据集中的字段',
table_scroll_tip: '明细表仅在分页模式为"下拉"时生效。', table_scroll_tip: '明细表仅在分页模式为"下拉"时生效。',
table_threshold_tip: '提示:请勿重复选择字段,若同一字段重复配置,则只有最后的字段配置生效', table_threshold_tip: '提示:请勿重复选择字段,若同一字段重复配置,则只有最后的字段配置生效',

View File

@ -172,7 +172,8 @@ export const DEFAULT_SIZE = {
quotaSuffixLetterSpace: '0', quotaSuffixLetterSpace: '0',
quotaSuffixFontShadow: false, quotaSuffixFontShadow: false,
tableColumnFreezeHead: 0, tableColumnFreezeHead: 0,
tableColumnFreezeTail: 0 tableColumnFreezeTail: 0,
tableRowFreezeHead: 0
} }
export const DEFAULT_SUSPENSION = { export const DEFAULT_SUSPENSION = {
show: true show: true

View File

@ -92,7 +92,8 @@ export function baseTableInfo(s2, container, chart, action, tableData, pageInfo)
showSeriesNumber: customAttr.size.showIndex, showSeriesNumber: customAttr.size.showIndex,
style: getSize(chart), style: getSize(chart),
conditions: getConditions(chart), conditions: getConditions(chart),
frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0 frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0,
frozenRowCount: customAttr.size.tableRowFreezeHead ?? 0
} }
// 开启序号之后,第一列就是序号列,修改 label 即可 // 开启序号之后,第一列就是序号列,修改 label 即可
if (s2Options.showSeriesNumber) { if (s2Options.showSeriesNumber) {
@ -285,16 +286,16 @@ export function baseTableNormal(s2, container, chart, action, tableData) {
showSeriesNumber: customAttr.size.showIndex, showSeriesNumber: customAttr.size.showIndex,
style: getSize(chart), style: getSize(chart),
conditions: getConditions(chart), conditions: getConditions(chart),
frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0 frozenColCount: customAttr.size.tableColumnFreezeHead ?? 0,
frozenRowCount: customAttr.size.tableRowFreezeHead ?? 0
} }
// 开启序号之后,第一列就是序号列,修改 label 即可 // 开启序号之后,第一列就是序号列,修改 label 即可
if (s2Options.showSeriesNumber) { if (s2Options.showSeriesNumber) {
s2Options.colCell = (node) => { s2Options.colCell = (node) => {
if (node.colIndex === 0) { if (node.colIndex === 0) {
if (!customAttr.size.indexLabel) { node.label = customAttr.size.indexLabel
if (!customAttr.size.indexLabel || customAttr.size.showTableHeader === false) {
node.label = ' ' node.label = ' '
} else {
node.label = customAttr.size.indexLabel
} }
} }
} }
@ -310,6 +311,11 @@ export function baseTableNormal(s2, container, chart, action, tableData) {
colCellVertical: false colCellVertical: false
} }
} }
s2Options.colCell = (node) => {
if (node.colIndex === 0) {
node.label = ' '
}
}
} }
// 开始渲染 // 开始渲染

View File

@ -63,7 +63,7 @@ export const TYPE_CONFIGS = [
'tableTitleHeight', 'tableTitleHeight',
'tableItemHeight', 'tableItemHeight',
'tableColumnMode', 'tableColumnMode',
'tableColumnFreeze', 'tableFreeze',
'showIndex', 'showIndex',
'indexLabel', 'indexLabel',
'tableColTooltip', 'tableColTooltip',
@ -121,7 +121,7 @@ export const TYPE_CONFIGS = [
'indexLabel', 'indexLabel',
'tableColTooltip', 'tableColTooltip',
'showTableHeader', 'showTableHeader',
'tableColumnFreeze' 'tableFreeze'
], ],
'title-selector-ant-v': [ 'title-selector-ant-v': [
'show', 'show',
@ -2083,7 +2083,7 @@ export const TYPE_CONFIGS = [
'tableTitleHeight', 'tableTitleHeight',
'tableItemHeight', 'tableItemHeight',
'tableColumnWidth', 'tableColumnWidth',
'tableColumnFreeze', 'tableFreeze',
'showIndex', 'showIndex',
'indexLabel', 'indexLabel',
'tableAutoBreakLine', 'tableAutoBreakLine',
@ -2133,7 +2133,7 @@ export const TYPE_CONFIGS = [
'tableColumnWidth', 'tableColumnWidth',
'showIndex', 'showIndex',
'indexLabel', 'indexLabel',
'tableColumnFreeze', 'tableFreeze',
'tableAutoBreakLine', 'tableAutoBreakLine',
'showTableHeader' 'showTableHeader'
], ],

View File

@ -456,6 +456,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_XAXIS_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine.dashStyle))
} }

View File

@ -447,6 +447,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_EXT_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.splitLine.dashStyle))
} }

View File

@ -451,6 +451,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine.dashStyle))
} }

View File

@ -330,8 +330,8 @@
/> />
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="showProperty('tableColumnFreeze')" v-if="showProperty('tableFreeze')"
:label="$t('chart.table_column_freeze')" :label="$t('chart.table_freeze')"
class="form-item" class="form-item"
> >
<span>{{ $t('dynamic_time.before') }} </span> <span>{{ $t('dynamic_time.before') }} </span>

View File

@ -296,8 +296,8 @@
/> />
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="showProperty('tableColumnFreeze')" v-if="showProperty('tableFreeze')"
:label="$t('chart.table_column_freeze')" :label="$t('chart.table_freeze')"
class="form-item" class="form-item"
> >
<span>{{ $t('dynamic_time.before') }} </span> <span>{{ $t('dynamic_time.before') }} </span>
@ -309,6 +309,16 @@
@change="changeBarSizeCase('tableColumnFreezeHead')" @change="changeBarSizeCase('tableColumnFreezeHead')"
/> />
<span> {{ $t('chart.column') }}</span> <span> {{ $t('chart.column') }}</span>
<div style="margin: 5px 0" />
<span>{{ $t('dynamic_time.before') }} </span>
<el-input-number
v-model="sizeForm.tableRowFreezeHead"
:min="0"
:max="1000"
:step-strictly="true"
@change="changeBarSizeCase('tableRowFreezeHead')"
/>
<span> {{ $t('deDataset.row') }}</span>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-if="showProperty('showIndex')" v-if="showProperty('showIndex')"
@ -1697,6 +1707,7 @@ export default {
this.sizeForm.tableColTooltip = this.sizeForm.tableColTooltip ?? DEFAULT_SIZE.tableColTooltip this.sizeForm.tableColTooltip = this.sizeForm.tableColTooltip ?? DEFAULT_SIZE.tableColTooltip
this.sizeForm.tableColumnFreezeHead = this.sizeForm.tableColumnFreezeHead ?? DEFAULT_SIZE.tableColumnFreezeHead this.sizeForm.tableColumnFreezeHead = this.sizeForm.tableColumnFreezeHead ?? DEFAULT_SIZE.tableColumnFreezeHead
this.sizeForm.tableColumnFreezeTail = this.sizeForm.tableColumnFreezeTail ?? DEFAULT_SIZE.tableColumnFreezeTail this.sizeForm.tableColumnFreezeTail = this.sizeForm.tableColumnFreezeTail ?? DEFAULT_SIZE.tableColumnFreezeTail
this.sizeForm.tableRowFreezeHead = this.sizeForm.tableRowFreezeHead ?? DEFAULT_SIZE.tableRowFreezeHead
this.sizeForm.showIndex = this.sizeForm.showIndex ? this.sizeForm.showIndex : DEFAULT_SIZE.showIndex this.sizeForm.showIndex = this.sizeForm.showIndex ? this.sizeForm.showIndex : DEFAULT_SIZE.showIndex
this.sizeForm.showTableHeader = this.sizeForm.showTableHeader !== false this.sizeForm.showTableHeader = this.sizeForm.showTableHeader !== false

View File

@ -239,7 +239,11 @@ export default {
tableStyle() { tableStyle() {
return { return {
width: '100%', width: '100%',
'--scroll-bar-color': this.scrollBarColor '--scroll-bar-color': this.scrollBarColor,
'--footer-font-color': this.table_header_class.color,
'--footer-bg-color': this.table_header_class.background,
'--footer-font-size': this.table_header_class.fontSize,
'--footer-height': this.table_header_class.height
} }
}, },
...mapState([ ...mapState([
@ -441,16 +445,14 @@ export default {
this.table_item_class.fontSize = customAttr.size.tableItemFontSize + 'px' this.table_item_class.fontSize = customAttr.size.tableItemFontSize + 'px'
this.table_header_class.height = customAttr.size.tableTitleHeight + 'px' this.table_header_class.height = customAttr.size.tableTitleHeight + 'px'
this.table_item_class.height = customAttr.size.tableItemHeight + 'px' this.table_item_class.height = customAttr.size.tableItemHeight + 'px'
const visibleColumn = this.$refs.plxTable.getTableColumn().fullColumn const visibleColumn = this.$refs.plxTable.getTableColumn().fullColumn
for (let i = 0, column = visibleColumn[i]; i < visibleColumn.length; i++) { for (let i = 0, column = visibleColumn[i]; i < visibleColumn.length; i++) {
//
if (column.type === 'index' && column.visible !== customAttr.size.showIndex) { if (column.type === 'index' && column.visible !== customAttr.size.showIndex) {
column.visible = customAttr.size.showIndex column.visible = customAttr.size.showIndex
this.$refs.plxTable.refreshColumn()
break break
} }
} }
this.$refs.plxTable.refreshColumn()
if (!customAttr.size.indexLabel) { if (!customAttr.size.indexLabel) {
this.indexLabel = ' ' this.indexLabel = ' '
} else { } else {
@ -506,20 +508,6 @@ export default {
this.bg_class.background = hexColorToRGBA(customStyle.background.color, customStyle.background.alpha) this.bg_class.background = hexColorToRGBA(customStyle.background.color, customStyle.background.alpha)
} }
} }
// footer
const table = document.getElementsByClassName(this.chart.id)
this.$refs.plxTable.updateFooter().then(() => {
for (let i = 0; i < table.length; i++) {
const s_table = table[i].getElementsByClassName('elx-table--footer')
let s = ''
for (const i in this.table_header_class) {
s += (i === 'fontSize' ? 'font-size' : i) + ':' + this.table_header_class[i] + ';'
}
for (let i = 0; i < s_table.length; i++) {
s_table[i].setAttribute('style', s)
}
}
})
}, },
getRowStyle({ row, rowIndex }) { getRowStyle({ row, rowIndex }) {
if (rowIndex % 2 !== 0) { if (rowIndex % 2 !== 0) {
@ -828,6 +816,12 @@ export default {
text-overflow: var(--text-overflow, 'ellipsis'); text-overflow: var(--text-overflow, 'ellipsis');
white-space: var(--white-space, 'nowrap'); white-space: var(--white-space, 'nowrap');
} }
::v-deep .elx-table--footer {
color: var(--footer-font-color);
background: var(--footer-bg-color);
font-size: var(--footer-font-size);
height: var(--footer-height);
}
} }
</style> </style>

View File

@ -71,6 +71,7 @@
</el-row> </el-row>
<el-row class="padding-lr" style="margin-top: 6px;"> <el-row class="padding-lr" style="margin-top: 6px;">
<span>test</span>
<span class="data-area-label"> <span class="data-area-label">
<span>{{ $t('chart.result_filter') }}</span> <span>{{ $t('chart.result_filter') }}</span>
<span <span

View File

@ -367,6 +367,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_XAXIS_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_XAXIS_STYLE.splitLine.dashStyle))
} }

View File

@ -424,6 +424,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_EXT_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_EXT_STYLE.splitLine.dashStyle))
} }

View File

@ -424,6 +424,9 @@ export default {
if (!this.axisForm.axisLine) { if (!this.axisForm.axisLine) {
this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.axisLine)) this.axisForm.axisLine = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.axisLine))
} }
if (this.axisForm.splitLine.enableDash === undefined) {
this.axisForm.splitLine.enableDash = DEFAULT_YAXIS_STYLE.splitLine.enableDash
}
if (!this.axisForm.splitLine.dashStyle) { if (!this.axisForm.splitLine.dashStyle) {
this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine.dashStyle)) this.axisForm.splitLine.dashStyle = JSON.parse(JSON.stringify(DEFAULT_YAXIS_STYLE.splitLine.dashStyle))
} }