Merge branch 'dev-v2' into pr@dev-v2@perf_report_ws_refresh

This commit is contained in:
fit2cloud-chenyw 2024-05-30 18:50:55 +08:00
commit 636e18edd4
35 changed files with 146 additions and 54 deletions

View File

@ -48,6 +48,10 @@
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
</exclusion> </exclusion>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions> </exclusions>
<classifier>de</classifier> <classifier>de</classifier>
</dependency> </dependency>

View File

@ -207,7 +207,7 @@ public class DatasetDataManage {
Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap);
String querySQL; String querySQL;
if (start == null || count == null) { if (start == null || count == null) {
querySQL = SQLProvider.createQuerySQL(sqlMeta, false, false, needOrder); querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, false);
} else { } else {
querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, start, count); querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, start, count);
} }
@ -231,7 +231,7 @@ public class DatasetDataManage {
map.put("allFields", fieldList); map.put("allFields", fieldList);
} }
map.put("sql", Base64.getEncoder().encodeToString(querySQL.getBytes())); map.put("sql", Base64.getEncoder().encodeToString(querySQL.getBytes()));
String replaceSql = SqlUtils.rebuildSQL(SQLProvider.createQuerySQL(sqlMeta, false, false, needOrder), sqlMeta, crossDs, dsMap); String replaceSql = SqlUtils.rebuildSQL(SQLProvider.createQuerySQL(sqlMeta, false, false, false), sqlMeta, crossDs, dsMap);
map.put("total", getDatasetTotal(datasetGroupInfoDTO, replaceSql, null)); map.put("total", getDatasetTotal(datasetGroupInfoDTO, replaceSql, null));
return map; return map;
} }

View File

@ -4,6 +4,7 @@
:append-to-body="true" :append-to-body="true"
v-model="dialogShow" v-model="dialogShow"
width="340px" width="340px"
:show-close="false"
trigger="click" trigger="click"
> >
<el-row style="height: 20px"> <el-row style="height: 20px">

View File

@ -322,6 +322,7 @@ export default {
please_input_host: '请输入主机', please_input_host: '请输入主机',
please_input_url: '请输入URL地址', please_input_url: '请输入URL地址',
please_input_port: '请输入端口', please_input_port: '请输入端口',
please_input_be_port: '请输入BE端口',
modify: '编辑数据源', modify: '编辑数据源',
copy: '复制数据源', copy: '复制数据源',
validate_success: '校验成功', validate_success: '校验成功',
@ -686,6 +687,7 @@ export default {
table_show_row_tooltip: '开启行头提示', table_show_row_tooltip: '开启行头提示',
table_show_col_tooltip: '开启列头提示', table_show_col_tooltip: '开启列头提示',
table_show_cell_tooltip: '开启单元格提示', table_show_cell_tooltip: '开启单元格提示',
table_show_header_tooltip: '开启表头提示',
stripe: '斑马纹', stripe: '斑马纹',
start_angle: '起始角度', start_angle: '起始角度',
end_angle: '结束角度', end_angle: '结束角度',

View File

@ -354,13 +354,14 @@ watch(
/> />
</collapse-switch-item> </collapse-switch-item>
<collapse-switch-item <collapse-switch-item
:themes="themes"
v-if="showProperties('tooltip-selector')" v-if="showProperties('tooltip-selector')"
v-model="chart.customAttr.tooltip.show" v-model="chart.customAttr.tooltip.show"
:themes="themes"
:change-model="chart.customAttr.tooltip" :change-model="chart.customAttr.tooltip"
@modelChange="val => onTooltipChange({ data: val }, 'show')"
name="tooltip"
:title="$t('chart.tooltip')" :title="$t('chart.tooltip')"
:show-switch="propertyInnerAll['tooltip-selector'].includes('show')"
name="tooltip"
@modelChange="val => onTooltipChange({ data: val }, 'show')"
> >
<tooltip-selector <tooltip-selector
class="attr-selector" class="attr-selector"
@ -438,7 +439,7 @@ watch(
:change-model="chart.customStyle.xAxis" :change-model="chart.customStyle.xAxis"
@modelChange="val => onChangeXAxisForm(val, 'show')" @modelChange="val => onChangeXAxisForm(val, 'show')"
name="xAxis" name="xAxis"
:title="chart.type === 'bidirectional-bar' ? $t('chart.yAxis') : t('chart.xAxis')" :title="selectorSpec['x-axis-selector']?.title"
> >
<x-axis-selector <x-axis-selector
class="attr-selector" class="attr-selector"
@ -473,7 +474,7 @@ watch(
:change-model="chart.customStyle.yAxis" :change-model="chart.customStyle.yAxis"
@modelChange="val => onChangeYAxisForm(val, 'show')" @modelChange="val => onChangeYAxisForm(val, 'show')"
name="yAxis" name="yAxis"
:title="chart.type === 'bidirectional-bar' ? $t('chart.xAxis') : $t('chart.yAxis')" :title="selectorSpec['dual-y-axis-selector']?.title"
> >
<dual-y-axis-selector <dual-y-axis-selector
class="attr-selector" class="attr-selector"

View File

@ -261,7 +261,11 @@ onMounted(() => {
v-model="state.tableHeaderForm.showColTooltip" v-model="state.tableHeaderForm.showColTooltip"
@change="changeTableHeader('showColTooltip')" @change="changeTableHeader('showColTooltip')"
> >
{{ t('chart.table_show_col_tooltip') }} {{
chart.type === 'table-pivot'
? t('chart.table_show_col_tooltip')
: t('chart.table_show_header_tooltip')
}}
</el-checkbox> </el-checkbox>
</el-form-item> </el-form-item>
<el-form-item <el-form-item

View File

@ -26,7 +26,7 @@ export class Bar extends G2PlotChartView<ColumnOptions, Column> {
propertyInner = { propertyInner = {
...BAR_EDITOR_PROPERTY_INNER, ...BAR_EDITOR_PROPERTY_INNER,
'label-selector': ['vPosition', 'seriesLabelFormatter'], 'label-selector': ['vPosition', 'seriesLabelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'y-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['y-axis-selector'], 'axisLabelFormatter'] 'y-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['y-axis-selector'], 'axisLabelFormatter']
} }
protected baseOptions: ColumnOptions = { protected baseOptions: ColumnOptions = {
@ -236,7 +236,7 @@ export class StackBar extends Bar {
propertyInner = { propertyInner = {
...this['propertyInner'], ...this['propertyInner'],
'label-selector': [...BAR_EDITOR_PROPERTY_INNER['label-selector'], 'vPosition'], 'label-selector': [...BAR_EDITOR_PROPERTY_INNER['label-selector'], 'vPosition'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter'] 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter', 'show']
} }
protected configLabel(chart: Chart, options: ColumnOptions): ColumnOptions { protected configLabel(chart: Chart, options: ColumnOptions): ColumnOptions {
const baseOptions = super.configLabel(chart, options) const baseOptions = super.configLabel(chart, options)
@ -372,7 +372,7 @@ export class PercentageStackBar extends GroupStackBar {
propertyInner = { propertyInner = {
...this['propertyInner'], ...this['propertyInner'],
'label-selector': ['color', 'fontSize', 'vPosition', 'reserveDecimalCount'], 'label-selector': ['color', 'fontSize', 'vPosition', 'reserveDecimalCount'],
'tooltip-selector': ['color', 'fontSize'] 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'show']
} }
protected configLabel(chart: Chart, options: ColumnOptions): ColumnOptions { protected configLabel(chart: Chart, options: ColumnOptions): ColumnOptions {
const baseOptions = super.configLabel(chart, options) const baseOptions = super.configLabel(chart, options)

View File

@ -88,7 +88,17 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'], 'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'],
'function-cfg': ['emptyDataStrategy'], 'function-cfg': ['emptyDataStrategy'],
'label-selector': ['hPosition', 'seriesLabelFormatter'], 'label-selector': ['hPosition', 'seriesLabelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'] 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show']
}
selectorSpec: EditorSelectorSpec = {
...this['selectorSpec'],
'dual-y-axis-selector': {
title: `${t('chart.xAxis')}`
},
'x-axis-selector': {
title: `${t('chart.yAxis')}`
}
} }
drawChart(drawOptions: G2PlotDrawOptions<G2BidirectionalBar>): G2BidirectionalBar { drawChart(drawOptions: G2PlotDrawOptions<G2BidirectionalBar>): G2BidirectionalBar {

View File

@ -30,7 +30,7 @@ export const BAR_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'basic-style-selector': ['colors', 'alpha', 'gradient'], 'basic-style-selector': ['colors', 'alpha', 'gradient'],
'label-selector': ['fontSize', 'color', 'labelFormatter'], 'label-selector': ['fontSize', 'color', 'labelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'tooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'tooltipFormatter', 'show'],
'x-axis-selector': [ 'x-axis-selector': [
'name', 'name',
'color', 'color',

View File

@ -34,7 +34,7 @@ export class HorizontalBar extends G2PlotChartView<BarOptions, Bar> {
propertyInner = { propertyInner = {
...BAR_EDITOR_PROPERTY_INNER, ...BAR_EDITOR_PROPERTY_INNER,
'label-selector': ['hPosition', 'seriesLabelFormatter'], 'label-selector': ['hPosition', 'seriesLabelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'x-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['x-axis-selector'], 'axisLabelFormatter'] 'x-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['x-axis-selector'], 'axisLabelFormatter']
} }
axis: AxisType[] = [...BAR_AXIS_TYPE] axis: AxisType[] = [...BAR_AXIS_TYPE]
@ -267,7 +267,7 @@ export class HorizontalStackBar extends HorizontalBar {
propertyInner = { propertyInner = {
...this['propertyInner'], ...this['propertyInner'],
'label-selector': ['color', 'fontSize', 'hPosition', 'labelFormatter'], 'label-selector': ['color', 'fontSize', 'hPosition', 'labelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter'] 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter', 'show']
} }
protected configLabel(chart: Chart, options: BarOptions): BarOptions { protected configLabel(chart: Chart, options: BarOptions): BarOptions {
const baseOptions = super.configLabel(chart, options) const baseOptions = super.configLabel(chart, options)
@ -328,7 +328,7 @@ export class HorizontalPercentageStackBar extends HorizontalStackBar {
propertyInner = { propertyInner = {
...this['propertyInner'], ...this['propertyInner'],
'label-selector': ['color', 'fontSize', 'hPosition', 'reserveDecimalCount'], 'label-selector': ['color', 'fontSize', 'hPosition', 'reserveDecimalCount'],
'tooltip-selector': ['color', 'fontSize'] 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'show']
} }
protected configLabel(chart: Chart, options: BarOptions): BarOptions { protected configLabel(chart: Chart, options: BarOptions): BarOptions {
const baseOptions = super.configLabel(chart, options) const baseOptions = super.configLabel(chart, options)

View File

@ -49,7 +49,7 @@ export class ProgressBar extends G2PlotChartView<BarOptions, G2Progress> {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'basic-style-selector': ['colors', 'alpha', 'gradient'], 'basic-style-selector': ['colors', 'alpha', 'gradient'],
'label-selector': ['hPosition', 'color', 'fontSize'], 'label-selector': ['hPosition', 'color', 'fontSize'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter', 'show'],
'y-axis-selector': ['name', 'color', 'fontSize', 'axisForm', 'axisLabel', 'position'], 'y-axis-selector': ['name', 'color', 'fontSize', 'axisForm', 'axisLabel', 'position'],
'function-cfg': ['emptyDataStrategy'] 'function-cfg': ['emptyDataStrategy']
} }

View File

@ -39,7 +39,14 @@ export class RangeBar extends G2PlotChartView<BarOptions, Bar> {
propertyInner = { propertyInner = {
...BAR_EDITOR_PROPERTY_INNER, ...BAR_EDITOR_PROPERTY_INNER,
'label-selector': ['hPosition', 'color', 'fontSize', 'labelFormatter', 'showGap'], 'label-selector': ['hPosition', 'color', 'fontSize', 'labelFormatter', 'showGap'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter', 'showGap'], 'tooltip-selector': [
'fontSize',
'color',
'backgroundColor',
'tooltipFormatter',
'showGap',
'show'
],
'x-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['x-axis-selector'], 'axisLabelFormatter'] 'x-axis-selector': [...BAR_EDITOR_PROPERTY_INNER['x-axis-selector'], 'axisLabelFormatter']
} }
axis: AxisType[] = [...BAR_AXIS_TYPE, 'yAxisExt'] axis: AxisType[] = [...BAR_AXIS_TYPE, 'yAxisExt']
@ -47,7 +54,7 @@ export class RangeBar extends G2PlotChartView<BarOptions, Bar> {
data: [], data: [],
xField: 'values', xField: 'values',
yField: 'field', yField: 'field',
colorFiled: 'category', colorField: 'category',
isGroup: true, isGroup: true,
interactions: [ interactions: [
{ {

View File

@ -23,7 +23,7 @@ export class Waterfall extends G2PlotChartView<WaterfallOptions, G2Waterfall> {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'basic-style-selector': ['colors', 'alpha', 'gradient'], 'basic-style-selector': ['colors', 'alpha', 'gradient'],
'label-selector': ['fontSize', 'color', 'vPosition', 'labelFormatter'], 'label-selector': ['fontSize', 'color', 'vPosition', 'labelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'title-selector': [ 'title-selector': [
'title', 'title',
'fontSize', 'fontSize',

View File

@ -261,7 +261,7 @@ export class StackArea extends Area {
propertyInner = { propertyInner = {
...this['propertyInner'], ...this['propertyInner'],
'label-selector': ['fontSize', 'color', 'labelFormatter'], 'label-selector': ['fontSize', 'color', 'labelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'tooltipFormatter'] 'tooltip-selector': ['fontSize', 'color', 'tooltipFormatter', 'show']
} }
protected configLabel(chart: Chart, options: AreaOptions): AreaOptions { protected configLabel(chart: Chart, options: AreaOptions): AreaOptions {
const customAttr = parseJson(chart.customAttr) const customAttr = parseJson(chart.customAttr)

View File

@ -15,7 +15,7 @@ export const LINE_EDITOR_PROPERTY: EditorProperty[] = [
export const LINE_EDITOR_PROPERTY_INNER: EditorPropertyInner = { export const LINE_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'label-selector': ['fontSize', 'color'], 'label-selector': ['fontSize', 'color'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'show'],
'basic-style-selector': [ 'basic-style-selector': [
'colors', 'colors',
'alpha', 'alpha',

View File

@ -34,7 +34,7 @@ export const MAP_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'showDimension', 'showDimension',
'showQuota' 'showQuota'
], ],
'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'tooltipFormatter'], 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'tooltipFormatter', 'show'],
'function-cfg': ['emptyDataStrategy'], 'function-cfg': ['emptyDataStrategy'],
'map-mapping': [''] 'map-mapping': ['']
} }

View File

@ -15,7 +15,7 @@ export const CHART_MIX_EDITOR_PROPERTY: EditorProperty[] = [
export const CHART_MIX_EDITOR_PROPERTY_INNER: EditorPropertyInner = { export const CHART_MIX_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'label-selector': ['fontSize', 'color'], 'label-selector': ['fontSize', 'color'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'show'],
'basic-style-selector': [ 'basic-style-selector': [
'colors', 'colors',
'alpha', 'alpha',

View File

@ -24,7 +24,7 @@ export class Funnel extends G2PlotChartView<FunnelOptions, G2Funnel> {
'background-overall-component': ['all'], 'background-overall-component': ['all'],
'basic-style-selector': ['colors', 'alpha'], 'basic-style-selector': ['colors', 'alpha'],
'label-selector': ['fontSize', 'color', 'hPosition', 'labelFormatter'], 'label-selector': ['fontSize', 'color', 'hPosition', 'labelFormatter'],
'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'title-selector': [ 'title-selector': [
'show', 'show',
'title', 'title',

View File

@ -30,7 +30,7 @@ export class Quadrant extends G2PlotChartView<ScatterOptions, G2Scatter> {
propertyInner: EditorPropertyInner = { propertyInner: EditorPropertyInner = {
'basic-style-selector': ['colors', 'alpha', 'scatterSymbol', 'scatterSymbolSize'], 'basic-style-selector': ['colors', 'alpha', 'scatterSymbol', 'scatterSymbolSize'],
'label-selector': ['fontSize', 'color'], 'label-selector': ['fontSize', 'color'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'x-axis-selector': [ 'x-axis-selector': [
'position', 'position',
'name', 'name',

View File

@ -24,7 +24,7 @@ export class Radar extends G2PlotChartView<RadarOptions, G2Radar> {
propertyInner: EditorPropertyInner = { propertyInner: EditorPropertyInner = {
'basic-style-selector': ['colors', 'alpha', 'radarShape'], 'basic-style-selector': ['colors', 'alpha', 'radarShape'],
'label-selector': ['seriesLabelFormatter'], 'label-selector': ['seriesLabelFormatter'],
'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'misc-style-selector': ['showName', 'color', 'fontSize', 'axisColor'], 'misc-style-selector': ['showName', 'color', 'fontSize', 'axisColor'],
'title-selector': [ 'title-selector': [
'show', 'show',
@ -42,6 +42,7 @@ export class Radar extends G2PlotChartView<RadarOptions, G2Radar> {
'legend-selector': ['icon', 'orient', 'color', 'fontSize', 'hPosition', 'vPosition'] 'legend-selector': ['icon', 'orient', 'color', 'fontSize', 'hPosition', 'vPosition']
} }
selectorSpec: EditorSelectorSpec = { selectorSpec: EditorSelectorSpec = {
...this['selectorSpec'],
'misc-style-selector': { 'misc-style-selector': {
title: `${t('chart.tooltip_axis')}` title: `${t('chart.tooltip_axis')}`
} }

View File

@ -45,7 +45,7 @@ export class RangeBar extends G2PlotChartView<SankeyOptions, Sankey> {
propertyInner = { propertyInner = {
...SANKEY_EDITOR_PROPERTY_INNER, ...SANKEY_EDITOR_PROPERTY_INNER,
'label-selector': ['color', 'fontSize'], 'label-selector': ['color', 'fontSize'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter'] 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'tooltipFormatter', 'show']
} }
axis: AxisType[] = [...SANKEY_AXIS_TYPE] axis: AxisType[] = [...SANKEY_AXIS_TYPE]
protected baseOptions: SankeyOptions = { protected baseOptions: SankeyOptions = {

View File

@ -29,7 +29,7 @@ export class Scatter extends G2PlotChartView<ScatterOptions, G2Scatter> {
propertyInner: EditorPropertyInner = { propertyInner: EditorPropertyInner = {
'basic-style-selector': ['colors', 'alpha', 'scatterSymbol', 'scatterSymbolSize'], 'basic-style-selector': ['colors', 'alpha', 'scatterSymbol', 'scatterSymbolSize'],
'label-selector': ['fontSize', 'color', 'labelFormatter'], 'label-selector': ['fontSize', 'color', 'labelFormatter'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'x-axis-selector': [ 'x-axis-selector': [
'position', 'position',
'name', 'name',

View File

@ -29,7 +29,7 @@ export class Treemap extends G2PlotChartView<TreemapOptions, G2Treemap> {
'basic-style-selector': ['colors', 'alpha'], 'basic-style-selector': ['colors', 'alpha'],
'label-selector': ['fontSize', 'color', 'showDimension', 'showQuota', 'showProportion'], 'label-selector': ['fontSize', 'color', 'showDimension', 'showQuota', 'showProportion'],
'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'], 'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'title-selector': [ 'title-selector': [
'title', 'title',
'fontSize', 'fontSize',

View File

@ -41,7 +41,7 @@ export class WordCloud extends G2PlotChartView<WordCloudOptions, G2WordCloud> {
'fontShadow' 'fontShadow'
], ],
'misc-selector': ['wordSizeRange', 'wordSpacing'], 'misc-selector': ['wordSizeRange', 'wordSpacing'],
'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter'] 'tooltip-selector': ['color', 'fontSize', 'backgroundColor', 'seriesTooltipFormatter', 'show']
} }
axis: AxisType[] = ['xAxis', 'yAxis', 'filter'] axis: AxisType[] = ['xAxis', 'yAxis', 'filter']
axisConfig: AxisConfig = { axisConfig: AxisConfig = {

View File

@ -22,7 +22,7 @@ export const PIE_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'showQuota', 'showQuota',
'showProportion' 'showProportion'
], ],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter'], 'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter', 'show'],
'basic-style-selector': ['colors', 'alpha', 'radius'], 'basic-style-selector': ['colors', 'alpha', 'radius'],
'title-selector': [ 'title-selector': [
'title', 'title',

View File

@ -4,6 +4,7 @@ export const TABLE_EDITOR_PROPERTY: EditorProperty[] = [
'table-header-selector', 'table-header-selector',
'table-cell-selector', 'table-cell-selector',
'title-selector', 'title-selector',
'tooltip-selector',
'function-cfg', 'function-cfg',
'threshold', 'threshold',
'scroll-cfg', 'scroll-cfg',
@ -45,6 +46,7 @@ export const TABLE_EDITOR_PROPERTY_INNER: EditorPropertyInner = {
'letterSpace', 'letterSpace',
'fontShadow' 'fontShadow'
], ],
'tooltip-selector': ['fontSize', 'color', 'backgroundColor'],
'function-cfg': ['emptyDataStrategy'], 'function-cfg': ['emptyDataStrategy'],
threshold: ['tableThreshold'] threshold: ['tableThreshold']
} }

View File

@ -5,7 +5,7 @@ import { S2ChartView, S2DrawOptions } from '../../types/impl/s2'
import { TABLE_EDITOR_PROPERTY, TABLE_EDITOR_PROPERTY_INNER } from './common' import { TABLE_EDITOR_PROPERTY, TABLE_EDITOR_PROPERTY_INNER } from './common'
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { isNumber } from 'lodash-es' import { isNumber } from 'lodash-es'
import { copyContent } from '@/views/chart/components/js/panel/common/common_table' import { copyContent, SortTooltip } from '@/views/chart/components/js/panel/common/common_table'
const { t } = useI18n() const { t } = useI18n()
@ -108,7 +108,8 @@ export class TableInfo extends S2ChartView<TableSheet> {
style: this.configStyle(chart), style: this.configStyle(chart),
conditions: this.configConditions(chart), conditions: this.configConditions(chart),
tooltip: { tooltip: {
getContainer: () => containerDom getContainer: () => containerDom,
renderTooltip: sheet => new SortTooltip(sheet)
} }
} }
// 开启序号之后第一列就是序号列修改 label 即可 // 开启序号之后第一列就是序号列修改 label 即可
@ -135,7 +136,7 @@ export class TableInfo extends S2ChartView<TableSheet> {
} }
} }
// tooltip // tooltip
this.configTooltip(s2Options) this.configTooltip(chart, s2Options)
// 隐藏表头保留顶部的分割线, 禁用表头横向 resize // 隐藏表头保留顶部的分割线, 禁用表头横向 resize
if (customAttr.tableHeader.showTableHeader === false) { if (customAttr.tableHeader.showTableHeader === false) {
s2Options.style.colCfg.height = 1 s2Options.style.colCfg.height = 1

View File

@ -2,7 +2,11 @@ import { S2ChartView, S2DrawOptions } from '@/views/chart/components/js/panel/ty
import { S2Event, S2Options, TableSheet, TableColCell, ViewMeta, TableDataCell } from '@antv/s2' import { S2Event, S2Options, TableSheet, TableColCell, ViewMeta, TableDataCell } from '@antv/s2'
import { parseJson } from '@/views/chart/components/js/util' import { parseJson } from '@/views/chart/components/js/util'
import { formatterItem, valueFormatter } from '@/views/chart/components/js/formatter' import { formatterItem, valueFormatter } from '@/views/chart/components/js/formatter'
import { copyContent, getCurrentField } from '@/views/chart/components/js/panel/common/common_table' import {
copyContent,
getCurrentField,
SortTooltip
} from '@/views/chart/components/js/panel/common/common_table'
import { TABLE_EDITOR_PROPERTY, TABLE_EDITOR_PROPERTY_INNER } from './common' import { TABLE_EDITOR_PROPERTY, TABLE_EDITOR_PROPERTY_INNER } from './common'
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { isNumber } from 'lodash-es' import { isNumber } from 'lodash-es'
@ -111,7 +115,8 @@ export class TableNormal extends S2ChartView<TableSheet> {
style: this.configStyle(chart), style: this.configStyle(chart),
conditions: this.configConditions(chart), conditions: this.configConditions(chart),
tooltip: { tooltip: {
getContainer: () => containerDom getContainer: () => containerDom,
renderTooltip: sheet => new SortTooltip(sheet)
} }
} }
// 开启序号之后第一列就是序号列修改 label 即可 // 开启序号之后第一列就是序号列修改 label 即可
@ -134,7 +139,7 @@ export class TableNormal extends S2ChartView<TableSheet> {
} }
} }
// tooltip // tooltip
this.configTooltip(s2Options) this.configTooltip(chart, s2Options)
// 隐藏表头保留顶部的分割线, 禁用表头横向 resize // 隐藏表头保留顶部的分割线, 禁用表头横向 resize
if (customAttr.tableHeader.showTableHeader === false) { if (customAttr.tableHeader.showTableHeader === false) {
s2Options.style.colCfg.height = 1 s2Options.style.colCfg.height = 1

View File

@ -1,4 +1,4 @@
import { EXTRA_FIELD, PivotSheet, S2Event, S2Options, TOTAL_VALUE, S2Theme } from '@antv/s2' import { EXTRA_FIELD, PivotSheet, S2Event, S2Options, TOTAL_VALUE, S2Theme, Totals } from '@antv/s2'
import { formatterItem, valueFormatter } from '../../../formatter' import { formatterItem, valueFormatter } from '../../../formatter'
import { hexColorToRGBA, parseJson } from '../../../util' import { hexColorToRGBA, parseJson } from '../../../util'
import { S2ChartView, S2DrawOptions } from '../../types/impl/s2' import { S2ChartView, S2DrawOptions } from '../../types/impl/s2'
@ -20,6 +20,7 @@ export class TablePivot extends S2ChartView<PivotSheet> {
'table-cell-selector', 'table-cell-selector',
'table-total-selector', 'table-total-selector',
'title-selector', 'title-selector',
'tooltip-selector',
'function-cfg', 'function-cfg',
'threshold', 'threshold',
'linkage', 'linkage',
@ -183,15 +184,20 @@ export class TablePivot extends S2ChartView<PivotSheet> {
sortParams: sortParams sortParams: sortParams
} }
// options // options
const s2Options = { const s2Options: S2Options = {
width: containerDom.offsetWidth, width: containerDom.offsetWidth,
height: containerDom.offsetHeight, height: containerDom.offsetHeight,
style: this.configStyle(chart), style: this.configStyle(chart),
totals: tableTotal, totals: tableTotal as Totals,
conditions: this.configConditions(chart), conditions: this.configConditions(chart),
tooltip: {
getContainer: () => containerDom
},
hierarchyType: basicStyle.tableLayoutMode ?? 'grid' hierarchyType: basicStyle.tableLayoutMode ?? 'grid'
} }
// tooltip
this.configTooltip(chart, s2Options)
// 开始渲染 // 开始渲染
const s2 = new PivotSheet(containerDom, s2DataConfig, s2Options as unknown as S2Options) const s2 = new PivotSheet(containerDom, s2DataConfig, s2Options as unknown as S2Options)
// hover // hover

View File

@ -611,7 +611,7 @@ export function handleTableEmptyStrategy(chart: Chart) {
} }
return newData return newData
} }
class SortTooltip extends BaseTooltip { export class SortTooltip extends BaseTooltip {
show(showOptions) { show(showOptions) {
const { iconName } = showOptions const { iconName } = showOptions
if (iconName) { if (iconName) {
@ -656,7 +656,10 @@ class SortTooltip extends BaseTooltip {
top: `${this.position?.y}px`, top: `${this.position?.y}px`,
pointerEvents: enterable ? 'all' : 'none', pointerEvents: enterable ? 'all' : 'none',
zIndex: 9999, zIndex: 9999,
position: 'absolute' position: 'absolute',
color: 'black',
background: 'white',
fontSize: '16px'
}, },
visible: true visible: true
}) })
@ -736,13 +739,22 @@ export function configHeaderInteraction(chart: Chart, option: S2Options) {
] ]
} }
export function configTooltip(option: S2Options) { export function configTooltip(chart: Chart, option: S2Options) {
const { tooltip } = parseJson(chart.customAttr)
option.tooltip = { option.tooltip = {
...option.tooltip, ...option.tooltip,
style: {
background: tooltip.backgroundColor,
fontSize: tooltip.fontSize + 'px',
color: tooltip.color,
boxShadow: 'rgba(0, 0, 0, 0.1) 0px 4px 8px 0px',
borderRadius: '3px',
padding: '4px 12px',
opacity: 0.95
},
adjustPosition: ({ event }) => { adjustPosition: ({ event }) => {
return getTooltipPosition(event) return getTooltipPosition(event)
}, }
renderTooltip: sheet => new SortTooltip(sheet)
} }
} }

View File

@ -3,7 +3,7 @@ import {
AntVDrawOptions, AntVDrawOptions,
ChartLibraryType ChartLibraryType
} from '@/views/chart/components/js/panel/types' } from '@/views/chart/components/js/panel/types'
import { S2Theme, SpreadSheet, Style, S2Options, Meta } from '@antv/s2' import { S2Theme, SpreadSheet, Style, S2Options, Meta, SERIES_NUMBER_FIELD } from '@antv/s2'
import { import {
configHeaderInteraction, configHeaderInteraction,
configTooltip, configTooltip,
@ -42,8 +42,8 @@ export abstract class S2ChartView<P extends SpreadSheet> extends AntVAbstractCha
return handleTableEmptyStrategy(chart) return handleTableEmptyStrategy(chart)
} }
protected configTooltip(option: S2Options) { protected configTooltip(chart: Chart, option: S2Options) {
configTooltip(option) configTooltip(chart, option)
} }
protected configHeaderInteraction(chart: Chart, option: S2Options) { protected configHeaderInteraction(chart: Chart, option: S2Options) {
@ -62,12 +62,19 @@ export abstract class S2ChartView<P extends SpreadSheet> extends AntVAbstractCha
switch (cell.cellType) { switch (cell.cellType) {
case 'dataCell': case 'dataCell':
field = find(metaConfig, item => item.field === meta.valueField) field = find(metaConfig, item => item.field === meta.valueField)
if (meta.fieldValue === 0) {
content = '0'
}
if (meta.fieldValue) { if (meta.fieldValue) {
content = field?.formatter?.(meta.fieldValue) content = field?.formatter?.(meta.fieldValue)
} }
break break
case 'rowCell': case 'rowCell':
case 'colCell': case 'colCell':
if (meta.field === SERIES_NUMBER_FIELD) {
content = cell.getTextShape()['attrs'].text
break
}
content = meta.label content = meta.label
field = find(metaConfig, item => item.field === content) field = find(metaConfig, item => item.field === content)
if (field) { if (field) {

View File

@ -100,6 +100,12 @@ export abstract class AntVAbstractChartView extends AbstractChartView {
selectorSpec: EditorSelectorSpec = { selectorSpec: EditorSelectorSpec = {
'misc-style-selector': { 'misc-style-selector': {
title: `${t('chart.size')}` title: `${t('chart.size')}`
},
'dual-y-axis-selector': {
title: `${t('chart.yAxis')}`
},
'x-axis-selector': {
title: `${t('chart.xAxis')}`
} }
} }
protected constructor(library: ChartLibraryType, name: string, defaultData?: any[]) { protected constructor(library: ChartLibraryType, name: string, defaultData?: any[]) {

12
pom.xml
View File

@ -19,7 +19,7 @@
</parent> </parent>
<properties> <properties>
<dataease.version>2.6.1</dataease.version> <dataease.version>2.7.0</dataease.version>
<java.version>21</java.version> <java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version> <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
@ -30,7 +30,7 @@
<mybatis-plus.version>3.5.6</mybatis-plus.version> <mybatis-plus.version>3.5.6</mybatis-plus.version>
<h2.version>2.2.220</h2.version> <h2.version>2.2.220</h2.version>
<knife4j.version>4.4.0</knife4j.version> <knife4j.version>4.4.0</knife4j.version>
<calcite-core.version>1.35.9</calcite-core.version> <calcite-core.version>1.35.10</calcite-core.version>
<commons-dbcp2.version>2.6.0</commons-dbcp2.version> <commons-dbcp2.version>2.6.0</commons-dbcp2.version>
<antlr.version>3.5.2</antlr.version> <antlr.version>3.5.2</antlr.version>
<java-jwt.version>3.12.1</java-jwt.version> <java-jwt.version>3.12.1</java-jwt.version>
@ -41,6 +41,7 @@
<httpclient.version>4.5.14</httpclient.version> <httpclient.version>4.5.14</httpclient.version>
<httpcore.version>4.4.16</httpcore.version> <httpcore.version>4.4.16</httpcore.version>
<easyexcel.version>3.3.4</easyexcel.version> <easyexcel.version>3.3.4</easyexcel.version>
<commons-io.version>2.16.1</commons-io.version>
<flatten-maven.version>1.3.0</flatten-maven.version> <flatten-maven.version>1.3.0</flatten-maven.version>
<maven.exec.version>3.1.0</maven.exec.version> <maven.exec.version>3.1.0</maven.exec.version>
<guava.version>33.0.0-jre</guava.version> <guava.version>33.0.0-jre</guava.version>
@ -50,7 +51,7 @@
<itextpdf.version>8.0.4</itextpdf.version> <itextpdf.version>8.0.4</itextpdf.version>
<flexmark.version>0.62.2</flexmark.version> <flexmark.version>0.62.2</flexmark.version>
<mybatis-spring.version>3.0.3</mybatis-spring.version> <mybatis-spring.version>3.0.3</mybatis-spring.version>
<commons-compress.version>1.19</commons-compress.version> <commons-compress.version>1.26.2</commons-compress.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
@ -127,6 +128,11 @@
<artifactId>commons-compress</artifactId> <artifactId>commons-compress</artifactId>
<version>${commons-compress.version}</version> <version>${commons-compress.version}</version>
</dependency> </dependency>
<dependency>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
<version>${commons-io.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>

View File

@ -36,7 +36,7 @@ public interface SyncDatasourceApi {
void save(@RequestBody SyncDatasourceDTO dataSourceDTO) throws DEException; void save(@RequestBody SyncDatasourceDTO dataSourceDTO) throws DEException;
@PostMapping("/update") @PostMapping("/update")
void update(@RequestBody SyncDatasourceDTO dataSourceDTO) throws DEException; Map<String,Object> update(@RequestBody SyncDatasourceDTO dataSourceDTO) throws DEException;
@PostMapping("/delete/{datasourceId}") @PostMapping("/delete/{datasourceId}")
void delete(@PathVariable("datasourceId") String datasourceId) throws DEException; void delete(@PathVariable("datasourceId") String datasourceId) throws DEException;

View File

@ -85,6 +85,17 @@
<groupId>org.ehcache</groupId> <groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId> <artifactId>ehcache</artifactId>
<classifier>jakarta</classifier> <classifier>jakarta</classifier>
<exclusions>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</dependency> </dependency>
<dependency> <dependency>
@ -105,6 +116,12 @@
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
<exclusions>
<exclusion>
<artifactId>commons-io</artifactId>
<groupId>commons-io</groupId>
</exclusion>
</exclusions>
</dependency> </dependency>
</dependencies> </dependencies>