diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 83a8946f65..e78ddb6e70 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -305,10 +305,10 @@ public class ChartViewService { filterRequest.setFieldId(fId); DatasetTableField datasetTableField = dataSetTableFieldsService.get(fId); - if(datasetTableField == null){ + if (datasetTableField == null) { continue; } - if(!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())){ + if (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) { filterRequest.setDatasetTableField(datasetTableField); if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) { if (CollectionUtils.isNotEmpty(filterRequest.getViewIds())) { @@ -329,7 +329,7 @@ public class ChartViewService { if (ObjectUtils.isNotEmpty(requestList.getLinkageFilters())) { for (ChartExtFilterRequest request : requestList.getLinkageFilters()) { DatasetTableField datasetTableField = dataSetTableFieldsService.get(request.getFieldId()); - if(!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())){ + if (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) { request.setDatasetTableField(datasetTableField); if (StringUtils.equalsIgnoreCase(datasetTableField.getTableId(), view.getTableId())) { if (CollectionUtils.isNotEmpty(request.getViewIds())) { @@ -814,34 +814,66 @@ public class ChartViewService { } } - for (int i = xAxis.size(); i < xAxis.size() + yAxis.size(); i++) { - AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO(); - axisChartDataDTO.setField(a.toString()); - axisChartDataDTO.setName(a.toString()); + if (StringUtils.containsIgnoreCase(view.getType(), "table")) { + for (int i = 0; i < xAxis.size() + yAxis.size(); i++) { + AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO(); + axisChartDataDTO.setField(a.toString()); + axisChartDataDTO.setName(a.toString()); - List dimensionList = new ArrayList<>(); - List quotaList = new ArrayList<>(); + List dimensionList = new ArrayList<>(); + List quotaList = new ArrayList<>(); - for (int j = 0; j < xAxis.size(); j++) { - ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO(); - chartDimensionDTO.setId(xAxis.get(j).getId()); - chartDimensionDTO.setValue(row[j]); - dimensionList.add(chartDimensionDTO); + for (int j = 0; j < xAxis.size(); j++) { + ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO(); + chartDimensionDTO.setId(xAxis.get(j).getId()); + chartDimensionDTO.setValue(row[j]); + dimensionList.add(chartDimensionDTO); + } + axisChartDataDTO.setDimensionList(dimensionList); + + int j = i - xAxis.size(); + if (j > -1) { + ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO(); + chartQuotaDTO.setId(yAxis.get(j).getId()); + quotaList.add(chartQuotaDTO); + axisChartDataDTO.setQuotaList(quotaList); + try { + axisChartDataDTO.setValue(StringUtils.isEmpty(row[i]) ? null : new BigDecimal(row[i])); + } catch (Exception e) { + axisChartDataDTO.setValue(new BigDecimal(0)); + } + } + datas.add(axisChartDataDTO); } - axisChartDataDTO.setDimensionList(dimensionList); + } else { + for (int i = xAxis.size(); i < xAxis.size() + yAxis.size(); i++) { + AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO(); + axisChartDataDTO.setField(a.toString()); + axisChartDataDTO.setName(a.toString()); - int j = i - xAxis.size(); - ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO(); - chartQuotaDTO.setId(yAxis.get(j).getId()); - quotaList.add(chartQuotaDTO); - axisChartDataDTO.setQuotaList(quotaList); - try { - axisChartDataDTO.setValue(StringUtils.isEmpty(row[i]) ? null : new BigDecimal(row[i])); - } catch (Exception e) { - axisChartDataDTO.setValue(new BigDecimal(0)); + List dimensionList = new ArrayList<>(); + List quotaList = new ArrayList<>(); + + for (int j = 0; j < xAxis.size(); j++) { + ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO(); + chartDimensionDTO.setId(xAxis.get(j).getId()); + chartDimensionDTO.setValue(row[j]); + dimensionList.add(chartDimensionDTO); + } + axisChartDataDTO.setDimensionList(dimensionList); + + int j = i - xAxis.size(); + ChartQuotaDTO chartQuotaDTO = new ChartQuotaDTO(); + chartQuotaDTO.setId(yAxis.get(j).getId()); + quotaList.add(chartQuotaDTO); + axisChartDataDTO.setQuotaList(quotaList); + try { + axisChartDataDTO.setValue(StringUtils.isEmpty(row[i]) ? null : new BigDecimal(row[i])); + } catch (Exception e) { + axisChartDataDTO.setValue(new BigDecimal(0)); + } + datas.add(axisChartDataDTO); } - axisChartDataDTO.setCategory(yAxis.get(j).getName()); - datas.add(axisChartDataDTO); } } map.put("datas", datas); diff --git a/frontend/package.json b/frontend/package.json index 3da6eec8cd..5d9f2444c6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@antv/g2plot": "^2.3.32", - "@antv/s2": "^1.6.0", + "@antv/s2": "^1.7.0", "@riophae/vue-treeselect": "0.4.0", "@tinymce/tinymce-vue": "^3.2.8", "axios": "^0.21.1", diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index 611338e0e1..d03de10662 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -37,6 +37,16 @@ @onChartClick="chartClick" @onJumpClick="jumpClick" /> + { + columns.push(ele.dataeaseName) + + meta.push({ + field: ele.dataeaseName, + name: ele.name + }) + }) + + // data config + const s2DataConfig = { + fields: { + columns: columns + }, + meta: meta, + data: tableData + } + + // options + const s2Options = { + width: containerDom.offsetWidth, + height: containerDom.offsetHeight, + // showSeriesNumber: true + style: getSize(chart) + } + + // 开始渲染 + if (s2) { + s2.destroy() + } + s2 = new TableSheet(containerDom, s2DataConfig, s2Options) + + // click + s2.on(S2Event.DATA_CELL_CLICK, action) + + // theme + const customTheme = getCustomTheme(chart) + s2.setThemeCfg({ theme: customTheme }) + + return s2 +} + +export function baseTableNormal(s2, container, chart, action, tableData) { + const containerDom = document.getElementById(container) + + // data + const fields = chart.data.fields + if (!fields || fields.length === 0) { + if (s2) { + s2.destroy() + } + return + } + + const columns = [] + const meta = [] + fields.forEach(ele => { + columns.push(ele.dataeaseName) + + meta.push({ + field: ele.dataeaseName, + name: ele.name + }) + }) + + // data config + const s2DataConfig = { + fields: { + columns: columns + }, + meta: meta, + data: tableData + } + + // options + const s2Options = { + width: containerDom.offsetWidth, + height: containerDom.offsetHeight, + // showSeriesNumber: true + style: getSize(chart) + } + + // 开始渲染 + if (s2) { + s2.destroy() + } + s2 = new TableSheet(containerDom, s2DataConfig, s2Options) + + // theme + const customTheme = getCustomTheme(chart) + s2.setThemeCfg({ theme: customTheme }) + + return s2 +} diff --git a/frontend/src/views/chart/components/ChartComponentS2.vue b/frontend/src/views/chart/components/ChartComponentS2.vue new file mode 100644 index 0000000000..42b9593482 --- /dev/null +++ b/frontend/src/views/chart/components/ChartComponentS2.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/frontend/src/views/chart/components/shape-attr/SizeSelectorAntV.vue b/frontend/src/views/chart/components/shape-attr/SizeSelectorAntV.vue index ad36ad6972..74dfa0bf06 100644 --- a/frontend/src/views/chart/components/shape-attr/SizeSelectorAntV.vue +++ b/frontend/src/views/chart/components/shape-attr/SizeSelectorAntV.vue @@ -81,6 +81,16 @@ + + + + + @@ -92,20 +102,29 @@ - + - + - - - - + + + {{ $t('chart.table_column_adapt') }} + + {{ $t('chart.table_column_custom') }} + + + +
+ 列宽并非任何时候都能生效。 +
+ 容器宽度优先级高于列宽,即(表格容器宽度 / 列数 > 指定列宽),则列宽优先取(容器宽度 / 列数)。 +
+ +
+
+ +
@@ -322,6 +341,9 @@ export default { this.sizeForm.liquidWaveCount = this.sizeForm.liquidWaveCount ? this.sizeForm.liquidWaveCount : DEFAULT_SIZE.liquidWaveCount this.sizeForm.tablePageSize = this.sizeForm.tablePageSize ? this.sizeForm.tablePageSize : DEFAULT_SIZE.tablePageSize + + this.sizeForm.tableColumnMode = this.sizeForm.tableColumnMode ? this.sizeForm.tableColumnMode : DEFAULT_SIZE.tableColumnMode + this.sizeForm.tableColumnWidth = this.sizeForm.tableColumnWidth ? this.sizeForm.tableColumnWidth : DEFAULT_SIZE.tableColumnWidth } } }, @@ -361,7 +383,9 @@ export default { .el-select-dropdown__item{ padding: 0 20px; } - span{font-size: 12px} +span{ + font-size: 12px +} .el-form-item{ margin-bottom: 6px; diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index f32461c88f..73c15a2f72 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -565,7 +565,7 @@ +