Merge pull request #6498 from dataease/dev

merge v1.18.12
This commit is contained in:
fit2cloudrd 2023-11-01 18:10:27 +08:00 committed by GitHub
commit 99801b2f54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 135 additions and 62 deletions

View File

@ -67,6 +67,10 @@ public class IndexController {
if (StringUtils.isNotEmpty(attachParams)) {
url = url + "&attachParams=" + attachParams;
}
String fromLink = request.getParameter("fromLink");
if (StringUtils.isNotEmpty(fromLink)) {
url = url + "&fromLink=" + fromLink;
}
response.sendRedirect(url);
} catch (IOException e) {
LogUtil.error(e.getMessage());

View File

@ -653,7 +653,7 @@ public class DorisQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -602,7 +602,7 @@ public class MysqlQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -633,7 +633,7 @@ public class CKQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -621,7 +621,7 @@ public class Db2QueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -627,7 +627,7 @@ public class EsQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -586,7 +586,7 @@ public class HiveQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -573,7 +573,7 @@ public class ImpalaQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -557,7 +557,7 @@ public class MongoQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -611,7 +611,7 @@ public class MysqlQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -676,7 +676,7 @@ public class OracleQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -614,7 +614,7 @@ public class PgQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -621,7 +621,7 @@ public class RedshiftQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -623,7 +623,7 @@ public class SqlserverQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -913,6 +913,9 @@ public class ChartViewService {
ChartDrillRequest head = drillRequestList.get(0);
Map<String, String> dimValMap = new HashMap<>();
head.getDimensionList().forEach(item -> dimValMap.put(item.getId(), item.getValue()));
boolean isAntVScatterNumberXAxis = CollectionUtils.isNotEmpty(xAxis) && StringUtils.equals(xAxis.get(0).getGroupType(), "q") && StringUtils.equalsIgnoreCase(view.getRender(), "antv");
for (int i = 0; i < drillRequestList.size(); i++) {
ChartDrillRequest request = drillRequestList.get(i);
ChartViewFieldDTO chartViewFieldDTO = drill.get(i);
@ -924,19 +927,28 @@ public class ChartViewService {
dimValMap.put(requestDimension.getId(), requestDimension.getValue());
if (!checkDrillExist(xAxis, extStack, requestDimension.getId(), view)) {
chartFieldMap.put(chartViewFieldDTO.getId(), chartViewFieldDTO);
if (isAntVScatterNumberXAxis) {
extStack.add(chartViewFieldDTO);
} else {
xAxis.add(chartViewFieldDTO);
}
}
if (i == drillRequestList.size() - 1) {
ChartViewFieldDTO nextDrillField = drill.get(i + 1);
if (!checkDrillExist(xAxis, extStack, nextDrillField.getId(), view)) {
// get drill list first element's sort,then assign to nextDrillField
nextDrillField.setSort(getDrillSort(xAxis, drill.get(0)));
if (isAntVScatterNumberXAxis) {
extStack.add(nextDrillField);
} else {
xAxis.add(nextDrillField);
}
}
}
}
}
}
for (int i = 0; i < fieldsToFilter.size(); i++) {
ChartViewFieldDTO tmpField = fieldsToFilter.get(i);
ChartExtFilterRequest tmpFilter = new ChartExtFilterRequest();
@ -1656,6 +1668,20 @@ public class ChartViewService {
}
private boolean checkDrillExist(List<ChartViewFieldDTO> xAxis, List<ChartViewFieldDTO> extStack, String fieldId, ChartViewWithBLOBs view) {
if (CollectionUtils.isNotEmpty(xAxis)) {
//针对判断 antv 散点图
if (StringUtils.equals(xAxis.get(0).getGroupType(), "q") && StringUtils.equalsIgnoreCase(view.getRender(), "antv")) {
if (CollectionUtils.isNotEmpty(extStack)) {
for (ChartViewFieldDTO x : extStack) {
if (StringUtils.equalsIgnoreCase(x.getId(), fieldId)) {
return true;
}
}
}
}
}
if (CollectionUtils.isNotEmpty(xAxis)) {
for (ChartViewFieldDTO x : xAxis) {
if (StringUtils.equalsIgnoreCase(x.getId(), fieldId)) {
@ -2129,7 +2155,7 @@ public class ChartViewService {
JSONObject jsonObject = JSONObject.parseObject(senior);
List<ChartSeniorAssistDTO> list = new ArrayList<>();
JSONObject threshold = jsonObject.getJSONObject("threshold");
if (ObjectUtils.isEmpty(threshold) || StringUtils.isBlank(threshold.toJSONString())){
if (ObjectUtils.isEmpty(threshold) || StringUtils.isBlank(threshold.toJSONString())) {
return list;
}
JSONArray tableThreshold = threshold.getJSONArray("tableThreshold");
@ -2161,7 +2187,7 @@ public class ChartViewService {
return list;
}
private boolean solveThresholdCondition(ChartSeniorAssistDTO fieldDTO, String tableId){
private boolean solveThresholdCondition(ChartSeniorAssistDTO fieldDTO, String tableId) {
String fieldId = fieldDTO.getFieldId();
String summary = fieldDTO.getSummary();
if (StringUtils.isEmpty(fieldId) || StringUtils.isEmpty(summary)) {
@ -2177,7 +2203,7 @@ public class ChartViewService {
return true;
}
private List<ChartSeniorAssistDTO> getConditionFields(ChartSeniorThresholdDTO condition){
private List<ChartSeniorAssistDTO> getConditionFields(ChartSeniorThresholdDTO condition) {
List<ChartSeniorAssistDTO> list = new ArrayList<>();
if (StringUtils.equalsIgnoreCase(condition.getField(), "0")) {
return list;

View File

@ -313,7 +313,7 @@ public class ChartDataBuild {
String[] row = data.get(i1);
StringBuilder a = new StringBuilder();
if (isDrill) {
if (isDrill && !xIsNumber) {
a.append(row[extGroupList.size() + xAxis.size() - 1]);
} else {
for (int i = extGroupList.size(); i < extGroupList.size() + xAxis.size(); i++) {
@ -329,7 +329,7 @@ public class ChartDataBuild {
AxisChartDataAntVDTO axisChartDataDTO = new AxisChartDataAntVDTO();
if (xIsNumber) {
BigDecimal v = null;
Object v = a.toString();
try {
v = new BigDecimal(a.toString());
} catch (Exception ignore) {
@ -345,12 +345,21 @@ public class ChartDataBuild {
List<ChartDimensionDTO> dimensionList = new ArrayList<>();
List<ChartQuotaDTO> quotaList = new ArrayList<>();
if (xIsNumber && CollectionUtils.isNotEmpty(extGroupList)) {
for (int j = 0; j < extGroupList.size(); j++) {
ChartDimensionDTO chartDimensionDTO = new ChartDimensionDTO();
chartDimensionDTO.setId(extGroupList.get(j).getId());
chartDimensionDTO.setValue(row[j]);
dimensionList.add(chartDimensionDTO);
}
} else {
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() - extGroupList.size();
@ -365,7 +374,11 @@ public class ChartDataBuild {
}
if (CollectionUtils.isNotEmpty(extGroup) && xIsNumber) { //有分组时其实就是第一个
if (isDrill) {
axisChartDataDTO.setCategory(row[extGroupList.size() - 1]);
} else {
axisChartDataDTO.setCategory(row[0]);
}
} else {
axisChartDataDTO.setCategory(yAxis.get(j).getName());
}
@ -988,7 +1001,7 @@ public class ChartDataBuild {
}
}
if (xIsNumber && CollectionUtils.isNotEmpty(extStack)) {
fields.add(extStack.get(0));
fields.addAll(extStack);
}
if (xIsNumber) {

View File

@ -33,6 +33,7 @@
const user = getQueryVariable('user')
const terminal = getQueryVariable('terminal')
const attachParams = getQueryVariable('attachParams')
const fromLink = getQueryVariable('fromLink')
const baseUrl = window.location.pathname.replace('link.html', '')
let url = baseUrl + "#/delink?link=" + encodeURIComponent(link)
if (terminal) {
@ -44,6 +45,9 @@
if (attachParams) {
url += '&attachParams=' + encodeURIComponent(attachParams)
}
if (fromLink) {
url += '&fromLink=' + fromLink
}
window.location.href = url
</script>

View File

@ -12,7 +12,7 @@
>
<el-button-group size="mini">
<el-button
v-if="!isNewBlank"
v-if="fromLink"
size="mini"
type="button"
@click="back2Last"
@ -89,8 +89,8 @@ export default {
isPublicLink() {
return this.$router.currentRoute.path === '/delink'
},
isNewBlank() {
return window.history.length === 1
fromLink() {
return this.$route.query.fromLink === 'true'
},
containerClass() {
return this.isPublicLink ? 'trans-pc' : 'bar-main'

View File

@ -145,32 +145,31 @@
</template>
<script>
import {getStyle} from '@/components/canvas/utils/style'
import {mapState} from 'vuex'
import { getStyle } from '@/components/canvas/utils/style'
import { mapState } from 'vuex'
import ComponentWrapper from './ComponentWrapper'
import {changeStyleWithScale} from '@/components/canvas/utils/translate'
import {uuid} from 'vue-uuid'
import {deepCopy, imgUrlTrans} from '@/components/canvas/utils/utils'
import { changeStyleWithScale } from '@/components/canvas/utils/translate'
import { uuid } from 'vue-uuid'
import { deepCopy, imgUrlTrans } from '@/components/canvas/utils/utils'
import eventBus from '@/components/canvas/utils/eventBus'
import elementResizeDetectorMaker from 'element-resize-detector'
import CanvasOptBar from '@/components/canvas/components/editor/CanvasOptBar'
import bus from '@/utils/bus'
import {buildFilterMap, buildViewKeyMap, formatCondition, valueValid, viewIdMatch} from '@/utils/conditionUtil'
import {hasDataPermission} from '@/utils/permission'
import {activeWatermark} from '@/components/canvas/tools/watermark'
import {proxyUserLoginInfo, userLoginInfo} from '@/api/systemInfo/userLogin'
import { buildFilterMap, buildViewKeyMap, formatCondition, valueValid, viewIdMatch } from '@/utils/conditionUtil'
import { hasDataPermission } from '@/utils/permission'
import { activeWatermark } from '@/components/canvas/tools/watermark'
import { proxyUserLoginInfo, userLoginInfo } from '@/api/systemInfo/userLogin'
import html2canvas from 'html2canvasde'
import {queryAll} from '@/api/panel/pdfTemplate'
import { queryAll } from '@/api/panel/pdfTemplate'
import PDFPreExport from '@/views/panel/export/PDFPreExport'
import {listenGlobalKeyDownPreview} from '@/components/canvas/utils/shortcutKey'
import { listenGlobalKeyDownPreview } from '@/components/canvas/utils/shortcutKey'
import UserViewDialog from '@/components/canvas/customComponent/UserViewDialog'
import {hexColorToRGBA} from "@/views/chart/chart/util";
import {isMobile} from '@/utils/index'
import { hexColorToRGBA } from '@/views/chart/chart/util'
import { isMobile } from '@/utils/index'
const erd = elementResizeDetectorMaker()
export default {
components: {UserViewDialog, ComponentWrapper, CanvasOptBar, PDFPreExport},
components: { UserViewDialog, ComponentWrapper, CanvasOptBar, PDFPreExport },
model: {
prop: 'show',
event: 'change'
@ -207,14 +206,14 @@ export default {
componentData: {
type: Array,
required: false,
default: function () {
default: function() {
return []
}
},
canvasStyleData: {
type: Object,
required: false,
default: function () {
default: function() {
return {}
}
},
@ -463,7 +462,7 @@ export default {
return this.$refs['viewWrapperChild']
},
getAllWrapperChildRefs() {
let allChildRefs = []
const allChildRefs = []
const currentChildRefs = this.getWrapperChildRefs()
if (currentChildRefs && currentChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentChildRefs)
@ -649,7 +648,7 @@ export default {
},
clearAllLinkage() {
this.$store.commit('clearPanelLinkageInfo')
bus.$emit('clear_panel_linkage', {viewId: 'all'})
bus.$emit('clear_panel_linkage', { viewId: 'all' })
},
changeStyleWithScale,
getStyle,
@ -714,7 +713,7 @@ export default {
},
deselectCurComponent(e) {
if (!this.isClickComponent) {
this.$store.commit('setCurComponent', {component: null, index: null})
this.$store.commit('setCurComponent', { component: null, index: null })
if (this.$refs?.['canvas-opt-bar']) {
this.$refs['canvas-opt-bar'].setWidgetStatus()
}

View File

@ -3,7 +3,7 @@
<img
v-if="!showLink"
:style="imageAdapter"
:src="element.propValue"
:src="imgUrl"
>
<a
v-if="showLink"
@ -13,13 +13,15 @@
>
<img
:style="imageAdapter"
:src="element.propValue"
:src="imgUrl"
>
</a>
</div>
</template>
<script>
import { imgUrlTrans } from '@/components/canvas/utils/utils'
export default {
props: {
element: {
@ -33,6 +35,9 @@ export default {
}
},
computed: {
imgUrl() {
return imgUrlTrans(this.element.propValue)
},
showLink() {
return this.editMode === 'preview' && this.element && this.element.hyperlinks && this.element.hyperlinks.enable
},

View File

@ -1038,7 +1038,7 @@ export default {
if (this.publicLinkStatus) {
// ID
if (jumpInfo.publicJumpId) {
const url = '/link/' + jumpInfo.publicJumpId
const url = '/link/' + jumpInfo.publicJumpId + '?fromLink=true'
const currentUrl = window.location.href
localStorage.setItem('beforeJumpUrl', currentUrl)
this.windowsJump(url, jumpInfo.jumpType)

View File

@ -50,10 +50,32 @@ const unlockMap = {
let isCtrlOrCommandDown = false
// 检查当前页面是否有弹框
const checkDialog = () => {
let haveDialog = false
document.querySelectorAll('.el-dialog__wrapper').forEach(element => {
if (window.getComputedStyle(element).getPropertyValue('display') !== 'none') {
haveDialog = true
}
})
document.querySelectorAll('.el-popover').forEach(element => {
if (window.getComputedStyle(element).getPropertyValue('display') !== 'none') {
haveDialog = true
}
})
// 富文本单框
if (document.querySelector('.tox-dialog-wrap')) {
haveDialog = true
}
return haveDialog
}
// Monitor key operations globally and execute corresponding commands
export function listenGlobalKeyDown() {
window.onkeydown = (e) => {
if (!store.state.isInEditor) return
if (!store.state.isInEditor || checkDialog()) return
const { keyCode } = e
if (keyCode === ctrlKey || keyCode === commandKey) {
isCtrlOrCommandDown = true

View File

@ -1,7 +1,7 @@
<template>
<el-popover
placement="right"
placement="left"
title=""
width="150"
:append-to-body="false"

View File

@ -77,7 +77,7 @@ export default {
})
},
setPanelInfo() {
loadResource(this.resourceId,this.user).then(res => {
loadResource(this.resourceId, this.user).then(res => {
this.show = false
let loadingCount = 0
const watermarkInfo = {

View File

@ -725,7 +725,7 @@ public class DmQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -747,7 +747,7 @@ public class KingbaseQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -577,7 +577,7 @@ public class KylinQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -592,7 +592,7 @@ public class MaxcomputeQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -592,7 +592,7 @@ public class MongobiQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {

View File

@ -582,7 +582,7 @@ public class PrestoQueryProvider extends QueryProvider {
//然后是数值格式的情况还需要传extGroup
if (xIsNumber && CollectionUtils.isNotEmpty(extGroup)) {
xAxisList.add(extGroup.get(0));
xAxisList.addAll(extGroup);
}
if (CollectionUtils.isNotEmpty(xAxisList)) {