feat(视图):指标卡支持同环比配置
This commit is contained in:
parent
df3e6b1174
commit
f759f95223
@ -520,7 +520,7 @@ public class ChartViewService {
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.DB.name())) {
|
||||
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
||||
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
if (StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view, ds));
|
||||
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
|
||||
datasourceRequest.setQuery(qp.getSQLStack(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, extStack, ds, view));
|
||||
@ -539,7 +539,7 @@ public class ChartViewService {
|
||||
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
|
||||
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
|
||||
sql = handleVariable(sql, requestList, qp, table, ds);
|
||||
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
if (StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
|
||||
datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, extStack, view));
|
||||
@ -559,7 +559,7 @@ public class ChartViewService {
|
||||
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
||||
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
||||
String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds);
|
||||
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
if (StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
|
||||
datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, extStack, view));
|
||||
@ -580,7 +580,7 @@ public class ChartViewService {
|
||||
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
|
||||
String sql = (String) sqlMap.get("sql");
|
||||
|
||||
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
if (StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view));
|
||||
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
|
||||
datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, extStack, view));
|
||||
@ -610,7 +610,7 @@ public class ChartViewService {
|
||||
String tableName = "ds_" + table.getId().replaceAll("-", "_");
|
||||
datasourceRequest.setTable(tableName);
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
if (StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummary(tableName, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view, ds));
|
||||
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
|
||||
datasourceRequest.setQuery(qp.getSQLStack(tableName, xAxis, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, extStack, ds, view));
|
||||
@ -781,6 +781,28 @@ public class ChartViewService {
|
||||
}
|
||||
break;
|
||||
case "text":
|
||||
xAxis = new ArrayList<>();
|
||||
yAxis = yAxis.stream().filter(item -> chartViewFieldNameList.contains(item.getDataeaseName()) || (!desensitizationList.keySet().contains(item.getDataeaseName()) && dataeaseNames.contains(item.getDataeaseName()))).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(yAxis)) {
|
||||
return emptyChartViewDTO(view);
|
||||
}
|
||||
ChartFieldCompareDTO compareCalc = yAxis.get(0).getCompareCalc();
|
||||
boolean isYoy = StringUtils.isNotEmpty(compareCalc.getType()) && !StringUtils.equalsIgnoreCase(compareCalc.getType(),"none");
|
||||
if(isYoy){
|
||||
List<DatasetTableField> xField = fields.stream().filter(item->StringUtils.equalsIgnoreCase(item.getId(),compareCalc.getField())).collect(Collectors.toList());
|
||||
if(CollectionUtils.isNotEmpty(xField)){
|
||||
ChartViewFieldDTO xFieldChartViewFieldDTO = new ChartViewFieldDTO();
|
||||
org.springframework.beans.BeanUtils.copyProperties(xField.get(0), xFieldChartViewFieldDTO);
|
||||
xAxis.add(xFieldChartViewFieldDTO);
|
||||
xAxis.get(0).setSort("desc");
|
||||
if(Objects.isNull(compareCalc.getCustom())){
|
||||
xAxis.get(0).setDateStyle("y_M_d");
|
||||
}else{
|
||||
xAxis.get(0).setDateStyle(compareCalc.getCustom().getTimeType());
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "gauge":
|
||||
case "liquid":
|
||||
xAxis = new ArrayList<>();
|
||||
@ -1229,7 +1251,7 @@ public class ChartViewService {
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.DB.name())) {
|
||||
datasourceRequest.setTable(dataTableInfoDTO.getTable());
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "text", "gauge", "liquid")) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
|
||||
querySql = qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view, ds);
|
||||
if (isYOY) {
|
||||
yoySql = qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, rowPermissionsTree, yoyFilterList, view, ds);
|
||||
@ -1269,7 +1291,7 @@ public class ChartViewService {
|
||||
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
|
||||
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
|
||||
sql = handleVariable(sql, chartExtRequest, qp, table, ds);
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "text", "gauge", "liquid")) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
|
||||
querySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view);
|
||||
if (isYOY) {
|
||||
yoySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, yoyFilterList, view);
|
||||
@ -1311,7 +1333,7 @@ public class ChartViewService {
|
||||
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
||||
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
|
||||
String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds);
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "text", "gauge", "liquid")) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
|
||||
querySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view);
|
||||
if (isYOY) {
|
||||
yoySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, yoyFilterList, view);
|
||||
@ -1352,7 +1374,7 @@ public class ChartViewService {
|
||||
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
|
||||
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
|
||||
String sql = (String) sqlMap.get("sql");
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "text", "gauge", "liquid")) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
|
||||
querySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view);
|
||||
if (isYOY) {
|
||||
yoySql = qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, rowPermissionsTree, yoyFilterList, view);
|
||||
@ -1433,7 +1455,7 @@ public class ChartViewService {
|
||||
String tableName = "ds_" + table.getId().replaceAll("-", "_");
|
||||
datasourceRequest.setTable(tableName);
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "text", "gauge", "liquid")) {
|
||||
if (StringUtils.equalsAnyIgnoreCase(view.getType(), "gauge", "liquid")) {
|
||||
datasourceRequest.setQuery(qp.getSQLSummary(tableName, yAxis, fieldCustomFilter, rowPermissionsTree, extFilterList, view, ds));
|
||||
if (isYOY) {
|
||||
yoySql = qp.getSQLSummary(tableName, yAxis, fieldCustomFilter, rowPermissionsTree, yoyFilterList, view, ds);
|
||||
|
||||
@ -17,12 +17,30 @@
|
||||
<el-option
|
||||
v-for="field in fieldList"
|
||||
:key="field.id"
|
||||
:label="field.name + '(' + $t('chart.' + field.dateStyle) + ')'"
|
||||
:label="fieldFormatter(field)"
|
||||
:value="field.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
v-if="isIndicator"
|
||||
:label="$t('chart.datePattern')"
|
||||
>
|
||||
<el-select
|
||||
v-model="dateFormatter"
|
||||
:placeholder="$t('chart.datePattern')"
|
||||
@change="changeDateFormatter"
|
||||
>
|
||||
<el-option
|
||||
v-for="field in dateFormatterList"
|
||||
:key="field.value"
|
||||
:label="field.name"
|
||||
:value="field.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="$t('chart.compare_type')">
|
||||
<el-radio-group v-model="compareItem.compareCalc.type">
|
||||
<el-radio
|
||||
@ -73,23 +91,40 @@ export default {
|
||||
chart: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
dimensionData: {
|
||||
type: Array,
|
||||
required: false
|
||||
},
|
||||
quotaData: {
|
||||
type: Array,
|
||||
required: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fieldList: [],
|
||||
compareList: []
|
||||
compareList: [],
|
||||
dateFormatter: 'y_M_d',
|
||||
dateFormatterList: [
|
||||
{ name: this.$t('chart.y'), value: 'y' },
|
||||
{ name: this.$t('chart.y_W'), value: 'y_W' },
|
||||
{ name: this.$t('chart.y_M'), value: 'y_M' },
|
||||
{ name: this.$t('chart.y_M_d'), value: 'y_M_d' }
|
||||
]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'chart': function() {
|
||||
this.initFieldList()
|
||||
this.initCompareType()
|
||||
this.initDateFormatter()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initFieldList()
|
||||
this.initCompareType()
|
||||
this.initDateFormatter()
|
||||
},
|
||||
methods: {
|
||||
// 过滤xaxis,extStack所有日期字段
|
||||
@ -114,6 +149,12 @@ export default {
|
||||
t1.push(...t2)
|
||||
}
|
||||
|
||||
if (this.isIndicator) {
|
||||
t1.length = 0
|
||||
t1.push(...this.dimensionData.filter(ele => ele.deType === 1))
|
||||
t1.push(...this.quotaData.filter(ele => ele.deType === 1))
|
||||
}
|
||||
|
||||
this.fieldList = t1
|
||||
// 如果没有选中字段,则默认选中第一个
|
||||
if ((!this.compareItem.compareCalc.field || this.compareItem.compareCalc.field === '') && this.fieldList.length > 0) {
|
||||
@ -147,6 +188,36 @@ export default {
|
||||
if ((!this.compareItem.compareCalc.type || this.compareItem.compareCalc.type === '' || this.compareItem.compareCalc.type === 'none') && this.compareList.length > 0) {
|
||||
this.compareItem.compareCalc.type = this.compareList[0].value
|
||||
}
|
||||
},
|
||||
changeDateFormatter() {
|
||||
const checkedField = this.fieldList.filter(ele => ele.id === this.compareItem.compareCalc.field)
|
||||
if (checkedField && checkedField.length > 0) {
|
||||
checkedField[0].dateStyle = this.dateFormatter
|
||||
if (!this.compareItem.compareCalc.custom) {
|
||||
this.compareItem.compareCalc.custom = { timeType: 'y_M_d' }
|
||||
}
|
||||
this.compareItem.compareCalc.custom.timeType = this.dateFormatter
|
||||
}
|
||||
this.initCompareType()
|
||||
},
|
||||
initDateFormatter() {
|
||||
const timeType = this.compareItem.compareCalc.custom?.timeType
|
||||
if (this.isIndicator && timeType) {
|
||||
this.dateFormatter = timeType==='0'?'y_M_d':timeType
|
||||
this.changeDateFormatter()
|
||||
}
|
||||
},
|
||||
fieldFormatter(field) {
|
||||
if (this.isIndicator) {
|
||||
return field.name
|
||||
} else {
|
||||
return field.name + '(' + this.$t('chart.' + field.dateStyle) + ')'
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isIndicator() {
|
||||
return this.chart.type === 'text'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -323,6 +323,11 @@ export default {
|
||||
}
|
||||
},
|
||||
isEnableCompare() {
|
||||
// 指标卡直接放行同环比配置
|
||||
if (this.chart.type === 'text') {
|
||||
this.disableEditCompare = false
|
||||
return
|
||||
}
|
||||
let xAxis = null
|
||||
if (Object.prototype.toString.call(this.chart.xaxis) === '[object Array]') {
|
||||
xAxis = JSON.parse(JSON.stringify(this.chart.xaxis))
|
||||
|
||||
@ -1772,6 +1772,8 @@
|
||||
<compare-edit
|
||||
:compare-item="quotaItemCompare"
|
||||
:chart="chart"
|
||||
:dimension-data="dimensionData"
|
||||
:quota-data="quotaData"
|
||||
/>
|
||||
<div
|
||||
slot="footer"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user