diff --git a/nezha-fronted/src/components/charts/chart-list.vue b/nezha-fronted/src/components/charts/chart-list.vue index 2f1724fa2..504c7d4cc 100644 --- a/nezha-fronted/src/components/charts/chart-list.vue +++ b/nezha-fronted/src/components/charts/chart-list.vue @@ -659,23 +659,6 @@ } this.dataList = [...this.dataTotalList]; - // this.dataList.push({ // 拓扑图 - // id: -10, - // panelId: 0, - // title: this.$t("alert.config.chart.alertNumTrend"), - // span: 8, - // height: 800, - // type: "topology", - // prev: -11, - // next: -1, - // unit: 1, - // buildIn: 1, - // elements: [{ - // id: '', - // expression: `nz_alert_nums{id="${3333}"}`, - // type: '' - // }] - // }); this.$nextTick(() => { if (this.dataList.length > 0 ) { this.dataList.forEach((item,index) => { @@ -854,6 +837,10 @@ const axiosArr = chartItem.elements.map((ele) => { const filterItem = ele; let query = encodeURIComponent(filterItem.expression); + if(chartInfo.type==='line'||chartInfo.type==='bar'||chartInfo.type==='stackArea'){//如果是这三个 默认给connected + chartInfo.param.nullType=chartInfo.param.nullType||'connected'; + query+='&nullType='+chartInfo.param.nullType; + } return this.$get('/prom/api/v1/query_range?query=' + query + "&start=" + this.$stringTimeParseToUnix(startTime) + "&end=" + this.$stringTimeParseToUnix(endTime) + '&step=' + step); }); // 一个图表的所有element单独获取数据 @@ -1249,6 +1236,10 @@ let step = bus.getStep(startTime, endTime); this.$nextTick(() => { let query = chartInfo.elements[0].expression; + if(chartInfo.type==='line'||chartInfo.type==='bar'||chartInfo.type==='stackArea'){ + chartInfo.param.nullType=chartInfo.param.nullType||'connected'; + query+='&nullType='+chartInfo.param.nullType; + } this.$get('/prom/api/v1/query_range?query='+query+"&start="+this.$stringTimeParseToUnix(startTime)+"&end="+this.$stringTimeParseToUnix(endTime)+'&step=5m').then(response => { if (response.status === 'success') { if (response.data.result) { @@ -1683,6 +1674,7 @@ mounted() { this.tempDomInit(); }, + }; diff --git a/nezha-fronted/src/components/charts/line-chart-block.vue b/nezha-fronted/src/components/charts/line-chart-block.vue index bcf94b875..0564a2a76 100644 --- a/nezha-fronted/src/components/charts/line-chart-block.vue +++ b/nezha-fronted/src/components/charts/line-chart-block.vue @@ -1229,15 +1229,27 @@ axiosArr = this.data.elements.map((ele) => { const filterItem = ele; let query = encodeURIComponent(filterItem.expression); + if(this.chartInfo.type==='line'||this.chartInfo.type==='bar'||this.chartInfo.type==='stackArea'){//如果是这三个 默认给connected + this.chartInfo.param.nullType=this.chartInfo.param.nullType||'connected'; + query+='&nullType='+this.chartInfo.param.nullType; + } return this.$get('/prom/api/v1/query_range?query='+query+"&start="+this.$stringTimeParseToUnix(startTime)+"&end="+this.$stringTimeParseToUnix(endTime)+'&step='+step); }); } else if (type === 'dashboard') { // 概览模式,指标概览中使用 // 概览模式,需要区分单独一个和多个 if (this.stableFilter.chartCount === 'multiple') { let query = encodeURIComponent(this.data.title); + if(this.chartInfo.type==='line'||this.chartInfo.type==='bar'||this.chartInfo.type==='stackArea'){//如果是这三个 默认给connected + this.chartInfo.param.nullType=this.chartInfo.param.nullType||'connected'; + query+='&nullType='+this.chartInfo.param.nullType; + } axiosArr = [this.$get('/prom/api/v1/query_range?query='+query+"&start="+this.$stringTimeParseToUnix(startTime)+"&end="+this.$stringTimeParseToUnix(endTime)+'&step='+step)]; } else { let query = encodeURIComponent(this.data.elements[0].expression); + if(this.chartInfo.type==='line'||this.chartInfo.type==='bar'||this.chartInfo.type==='stackArea'){//如果是这三个 默认给connected + this.chartInfo.param.nullType=this.chartInfo.param.nullType||'connected'; + query+='&nullType='+this.chartInfo.param.nullType; + } axiosArr = [this.$get('/prom/api/v1/query_range?query='+query+"&start="+this.$stringTimeParseToUnix(startTime)+"&end="+this.$stringTimeParseToUnix(endTime)+'&step='+step)]; } } @@ -1677,7 +1689,7 @@ unit, oldDot } - } + }, }, mounted() { this.firstLoad = false; diff --git a/nezha-fronted/src/components/page/dashboard/chartBox.vue b/nezha-fronted/src/components/page/dashboard/chartBox.vue index 0ac02472e..df6fbbb61 100644 --- a/nezha-fronted/src/components/page/dashboard/chartBox.vue +++ b/nezha-fronted/src/components/page/dashboard/chartBox.vue @@ -152,7 +152,13 @@ - + + + + + + + @@ -374,6 +380,16 @@ elementTarget: [], // 本地保存数据 alertParams:{}, spanList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + nullTypeList:[{ + label:'connected', + value:'connected' + },{ + label:'null', + value:'null' + },{ + label:'zero', + value:'zero' + }], // 是否为编辑已有信息 isedit: false, //productId: 0,//不需要这个参数,可以删除 @@ -717,6 +733,7 @@ } if(this.editChart.type==='line'||this.editChart.type==='bar'||this.editChart.type==='stackArea'){ params.param.threshold=this.editChart.param.threshold; + params.param.nullType=this.editChart.param.nullType; } else { delete params.param.threshold; } @@ -993,6 +1010,9 @@ }else{ this.editChart.param.threshold=''; } + if((this.editChart.type==='line'||this.editChart.type==='bar'||this.editChart.type==='stackArea')&&data.param){ + this.editChart.param.nullType=data.param.nullType; + } this.setIsOtherChart(); //this.getSuggestMetric();//获得指标列表 // 指标 @@ -1029,7 +1049,8 @@ param.url=''; param.threshold=''; param.valueMapping={type:'text',mapping:[{value:'',text:''}]}; - param.legendValue={min:'off',max:'off',avg:'off',last:'off',total:'off'} + param.legendValue={min:'off',max:'off',avg:'off',last:'off',total:'off'}; + param.nullType='connected'; this.$set(this.editChart, "param", param); this.elements = [1]; this.elementTarget = []; @@ -1090,7 +1111,7 @@ }else { this.setIsOtherChart(); if(chartType === 'bar'||chartType === 'line'||chartType === 'stackArea'){ - this.editChart.param={threshold:'',legendValue:{min:'off',max:'off',avg:'off',last:'off',total:'off'}} + this.editChart.param={nullType:this.editChart.param.nullType,threshold:'',legendValue:{min:'off',max:'off',avg:'off',last:'off',total:'off'}} } /*if(this.$refs.chartTag){ this.$refs.chartTag.forEach((item, index) => { @@ -1163,9 +1184,11 @@ } if(this.editChart.type==='line'||this.editChart.type==='bar'||this.editChart.type==='stackArea'){ params.param.threshold=this.editChart.param.threshold; + params.param.nullType=this.editChart.param.nullType; params.param.legendValue=this.editChart.param.legendValue; } else { delete params.param.threshold; + delete params.param.nullType; } //生成指标数组 const elements = []; @@ -1254,6 +1277,9 @@ immediate: true, handler(n) { this.editChart = JSON.parse(JSON.stringify(n)); + if(!n.param.nullType){ + this.editChart.param.nullType='connected'; + } if (n.type === 'url') { this.setIsUrl(); } else if(n.type === 'alertList'){