diff --git a/nezha-fronted/src/components/charts/chart-list.vue b/nezha-fronted/src/components/charts/chart-list.vue index 354fa5e64..982d94a02 100644 --- a/nezha-fronted/src/components/charts/chart-list.vue +++ b/nezha-fronted/src/components/charts/chart-list.vue @@ -105,6 +105,16 @@ :panel-id="filter.panelId" :chart-index="index" :editChartId="'editChartId' + item.id"> + + @@ -115,6 +125,7 @@ import axios from 'axios'; import bus from '../../libs/bus'; import lineChartBlock from './line-chart-block'; import chartTable from './chart-table'; +import chartUrl from './chart-url'; import draggable from 'vuedraggable' export default { @@ -124,6 +135,7 @@ export default { components: { lineChartBlock, chartTable, + chartUrl, draggable, }, data() { @@ -489,6 +501,7 @@ export default { }else { this.dataList = this.dataTotalList; } + console.log('0000==========',this.dataList); this.$nextTick(() => { if (this.dataList.length > 0 && this.$refs.editChart) { this.$refs.editChart.forEach((item, i) => { @@ -508,7 +521,12 @@ export default { if(oldDataListLen){ realIndex += oldDataListLen; } - this.getChartData(item, realIndex); + let chartType = item.type; + if(chartType!=='url'){ + this.getChartData(item, realIndex); + }else { + this.setSize(item.span, realIndex); // 设置该图表宽度 + } }); } }, diff --git a/nezha-fronted/src/components/charts/chart-url.scss b/nezha-fronted/src/components/charts/chart-url.scss new file mode 100644 index 000000000..4b3ea93ba --- /dev/null +++ b/nezha-fronted/src/components/charts/chart-url.scss @@ -0,0 +1,196 @@ +/* ---------edit-chart-move--------- */ +.clearfix:after{ + display: block; + content: ""; + clear: both; +} +.clearfix{ + margin-bottom: 10px; +} +.loading-font{ + color:#232f3e !important; +} +.dialog-tool { + margin-right: 40px; +} +.hidden{ + visibility: hidden; +} +.visible{ + visibility: visible; +} +.nz-chart-dropdown { + height: 147px; + li { + /*padding: 0 20px !important;*/ + padding-left:15px !important; + padding-right:0px !important; + width:140px; + text-align: left; + i { + margin-right: 10px; + } + } +} +.chart-url { + width: 100%; + height: 100%;//calc(100% - 40px); + // min-height: 500px; + position: relative; + background: #FFF; + border: 1px solid #d8dce1; + padding: 0px 0px; + margin-bottom: 10px; + padding-bottom: 3px; + .url-container{ + padding-left: 8px; + padding-right: 8px; + } + .vue-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + bottom: 0; + right: 0; + cursor: se-resize; + box-sizing: border-box; + } + .vue-resizable-handle:after { + border-right: 2px solid #555; + border-bottom: 2px solid #555; + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 5px; + height: 5px; + /*border-right: 2px solid rgba(0,0,0,.4); + border-bottom: 2px solid rgba(0,0,0,.4);*/ + box-sizing: inherit; + } + .chartTitle:hover { + background-color:#d8dce1; + } + .dragTitle{ + background-color:#d8dce1; + } + .chartTitle { + text-align: center; + width: 100%; + line-height: 28px; + .nz-chart-top{ + width:100%; + } + .el-dropdown-link { + cursor: move; + } + .el-icon-arrow-down { + font-size: 12px; + } + .chart-title { + font-weight: bold; + font-size: 18px; + line-height: 26px; + color: #333; + margin: -3px 0 3px 3px; + display:flex; + justify-content:center; + align-items:center; + .chart-title-text{ + max-width:calc(100% - 20px); + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + } + .chart-title-icon{ + display: inline-block; + cursor: pointer; + } + } + } + .edit:after{ + display: block; + content: ""; + clear: both; + } + + .button-panel-height{ + height:26px; + } + .button-panel-height button{ + height:26px; + } + .edit { + position: absolute; + right: 20px; + top: 17px; + z-index: 10; + /*background: $btn-light-background-color; + border-radius: 6px;; + border: 1px solid #ccc; + .set-icon { + display: inline-block; + cursor: pointer; + padding: 5px 15px; + border-right: 1px solid #ccc; + + } + .set-icon:hover{ + background: $btn-light-background-color-hover; + } + .set-icon:last-child{ + border-right: none !important; + } + .el-icon-refresh-right{ + color: #F0BF84; + } + i{ + font-size: 16px; + color: #000; + } + .list-icon { + float: left; + } + .show-icon { + cursor: pointer; + float: right; + font-size: 14px; + }*/ + } + .chart-select { + position: absolute; + left: 40px; + top: 25px; + z-index: 10; + font-size: 14px; + .chart-select-btn { + margin-right: 10px; + cursor: pointer; + &.active { + color: #5aacff; + } + } + } + /*没有数据显示*/ + .null { + position: absolute; + top: 50%; + width: 100%; + text-align: center; + font-size: 24px; + font-weight: 600; + } + .chart-table-col{ + width: 100%; + } + .element-bottom-border { + border-bottom: 1px solid #dfe7f2; + margin-bottom:-20px; + } + .element-top-border { + padding-top: 10px; + border-top: 1px solid #dfe7f2; + margin-top:-25px; + } +} diff --git a/nezha-fronted/src/components/charts/chart-url.vue b/nezha-fronted/src/components/charts/chart-url.vue new file mode 100644 index 000000000..924a5e982 --- /dev/null +++ b/nezha-fronted/src/components/charts/chart-url.vue @@ -0,0 +1,374 @@ + + + + + + + + + + + {{data.title}} + + + + + {{$t('dashboard.refresh')}} + + {{$t('dashboard.edit')}} + + {{$t('dashboard.delete')}} + + {{$t('dashboard.screen')}} + + + + + + + + + + + {{data.title}} + + + + + + + + + + diff --git a/nezha-fronted/src/components/charts/chartPreview.vue b/nezha-fronted/src/components/charts/chartPreview.vue index 96045e117..fb73e155d 100644 --- a/nezha-fronted/src/components/charts/chartPreview.vue +++ b/nezha-fronted/src/components/charts/chartPreview.vue @@ -12,6 +12,11 @@ visibility: visible; } + {{chart.title}} - + + + + + + + @@ -108,12 +121,6 @@ xAxis: [], theData: [], // series数据组 }, - //panelIdInner: '', // 看板id=panelId,原写作chart,由set_data获取 - //chartName: '', - //firstLoad: false, // 是否第一次加载 - //divFirstShow:false, - //highchartStore: null, // 保存图表数据 - //echartStore:null,// 保存图表数据 echartModalStore: null, // 全屏查看时数据 chartType: 'line', // 图表类型 screenModal: false, @@ -136,6 +143,7 @@ //dropdownMenuShow:false, showLegend:true, tableShow:true, + urlShow:true, searchTime:[new Date().setHours(new Date().getHours()-1),new Date()], //oldSearchTime:[], minHeight:200, @@ -234,25 +242,19 @@ show(chartInfo) { this.searchTime = [new Date().setHours(new Date().getHours()-1),new Date()]; this.chart=chartInfo; + let chartType= chartInfo.type; let chartContainerId = 'chartEchartPreview' if(chartType==='table'){ - /* - for(let i=0;i<8;i++){ - this.seriesItemScreen.push({//表格数据 - // label: '',//label - // metric: '',//metric列 - element:'', - time: '',//采集时间 - value: '',//数值 - }); - }*/ this.tableShow = false; chartContainerId = 'chartTablePreview'; }else if (chartType === 'line' || chartType === 'bar' || chartType === 'stackArea' || chartType === 4) { this.isGreyScreen=[]; this.showLegend = false; chartContainerId = 'chartEchartPreview'; + }else if(chartType==='url'){ + this.urlShow = false; + chartContainerId = 'chartUrlPreview'; } //设置高度 chart-table @@ -275,6 +277,33 @@ this.setSize(chartInfo.span); // 设置该图表宽度 this.screenModal = true; + + }, + setLoadFrame(){ + if(this.chart.type==='url'){ + let that = this; + this.$nextTick(() => { + let iframeBox = document.querySelector('#chartUrlPreview'); + let iframe = document.querySelector('#chartUrlFrame'); + + // 处理兼容行问题 + if (iframe.attachEvent) { + iframe.attachEvent('onload', function () { + // iframe加载完毕以后执行操作 + console.log('iframe已加载完毕'); + that.$refs.loadingPreview.endLoading(); + }) + } else { + iframe.onload = function () { + // iframe加载完毕以后执行操作 + console.log('iframe已加载完毕'); + that.$refs.loadingPreview.endLoading(); + } + } +console.log('=======',this.chart) + iframe.src = this.chart.param.url; + }); + } }, filterShowData(source,pageObj){ return source.slice((pageObj.pageNo-1)*pageObj.pageSize,pageObj.pageNo*pageObj.pageSize) @@ -288,10 +317,18 @@ if(this.echartModalStore){ this.echartModalStore.clear(); } + }else if(chartType==='url'){ + } //后台获得数据 - this.$refs.loadingPreview.startLoading(); - this.getChartData(); + if(this.chart.type!=='url'){ + this.$refs.loadingPreview.startLoading(); + this.getChartData(); + }else { + this.$refs.loadingPreview.startLoading(); + this.urlShow = true; + this.setLoadFrame(); + } }, // 设置图表的宽度 setSize(size) { @@ -789,6 +826,12 @@ this.seriesItemScreen = []; this.searchTime[0] = new Date().setHours(new Date().getHours()-1); this.searchTime[1] =new Date(); + + let iframe = document.querySelector('#chartUrlFrame'); + if(iframe){ + iframe.src=""; + } + }, // 重新请求数据 刷新操作 /* @@ -955,6 +998,7 @@ }, }, mounted() { + }, beforeDestroy() { this.clearChart(); diff --git a/nezha-fronted/src/components/charts/line-chart-block.scss b/nezha-fronted/src/components/charts/line-chart-block.scss index 6f318713f..6abee510f 100644 --- a/nezha-fronted/src/components/charts/line-chart-block.scss +++ b/nezha-fronted/src/components/charts/line-chart-block.scss @@ -61,6 +61,19 @@ } } } +.nz-chart-dropdown-one { + height: 36px; + li { + /*padding: 0 20px !important;*/ + padding-left:15px !important; + padding-right:0px !important; + width:140px; + text-align: left; + i { + margin-right: 10px; + } + } +} .line-chart-block { height: 100%; //min-height: 0px; diff --git a/nezha-fronted/src/components/charts/line-chart-block.vue b/nezha-fronted/src/components/charts/line-chart-block.vue index 39ada87e5..52c7fd436 100644 --- a/nezha-fronted/src/components/charts/line-chart-block.vue +++ b/nezha-fronted/src/components/charts/line-chart-block.vue @@ -38,12 +38,12 @@ {{$t('dashboard.screen')}} --> - - + + {{$t('dashboard.refresh')}} - + {{$t('dashboard.edit')}} - + {{$t('dashboard.delete')}} {{$t('dashboard.screen')}} @@ -80,8 +80,9 @@ width="90%" @close="screenModal = false" @opened="initDialog"> - - {{data.title}} + + {{data.title}} + 0){ @@ -576,7 +599,8 @@ } }, created() { - window.addEventListener('resize',this.windowChange); + //window.addEventListener('resize',this.windowChange); + window.addEventListener('resize',this.debounce(this.windowChange, 1000),false); }, mounted() { diff --git a/nezha-fronted/src/components/common/calendar.vue b/nezha-fronted/src/components/common/calendar.vue new file mode 100644 index 000000000..282236a08 --- /dev/null +++ b/nezha-fronted/src/components/common/calendar.vue @@ -0,0 +1,150 @@ + + + + + + + {{searchTime[0]}} + + + to + + + {{searchTime[1]}} + + + + {{showTime.text}} + + + + + {{$t('dashboard.panel.customTimeRange')}} + + {{item.text}} + + + + + + + + + diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index 2e2c4436c..837235e8c 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -82,6 +82,7 @@ const cn = { chartId:"ID", chartName:"图表名称", type:"类型", + url:"Url", typeVal:{ line:{ label:"曲线图" @@ -91,7 +92,13 @@ const cn = { }, table:{ label:"表格" - } + }, + stackArea:{ + label:"面积图" + }, + url:{ + label:"Url" + }, }, width:"宽", high:"高", @@ -115,6 +122,18 @@ const cn = { recOneMonth:'最近1月', curMonth:'本月', lastMonth:'上月', + customTimeRange:'Custom time range', + lastFiveMin:'最近5分钟', + lastFifteenMin:'最近15分钟', + lastThirtyMin:'最近30分钟', + lastOneHour:'最近1小时', + lastThreeHour:'最近3小时', + lastSixHour:'最近6小时', + lastTwelveHour:'最近12小时', + lastTwentyFourHour:'最近24小时', + lastTwo:'最近2天', + lastSevenDay:'最近7天', + lastThirtyDay:'最近30天', refreshInterval:{ never:'从不', oneMinute:'1分钟', diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index 9c2984057..8d92fe4c1 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -71,8 +71,7 @@ const en = { failedDetail:'Failed Detail' }, reset:'Reset', - submit:'Submit', - noData:'No data', + submit:'Submit' }, pageSize: '/page', webshell:{ @@ -117,6 +116,7 @@ const en = { chartName:"Chart Name", type:"Type", unit:"Unit", + url:"Url", legend:'Legend', legendTip:'Controls the name of the time series, using name or pattern. For example {{hostname}} will be replaced with label value for the label hostname.', typeVal:{ @@ -131,6 +131,9 @@ const en = { }, stackArea:{ label:"Stack Area" + }, + url:{ + label:"Url" } }, width:'Width', //"宽" @@ -157,6 +160,18 @@ const en = { recOneMonth:'Last 1 month',//'最近1月' curMonth:'This month',//'本月' lastMonth:'Last month',//'上月' + customTimeRange:'Custom time range', + lastFiveMin:'Last 5 minutes', + lastFifteenMin:'Last 15 minutes', + lastThirtyMin:'Last 30 minutes', + lastOneHour:'Last 1 hour', + lastThreeHour:'Last 3 hours', + lastSixHour:'Last 6 hours', + lastTwelveHour:'Last 12 hours', + lastTwentyFourHour:'Last 24 hours', + lastTwoDay:'Last 2 days', + lastSevenDay:'Last 7 days', + lastThirtyDay:'Last 30 days', refreshInterval:{ never:'Never', //'从不' oneMinute:'1 minute', // 1 minute @@ -284,7 +299,6 @@ const en = { assetConfirmDelete: 'Related endpoints and alerts will be removed, are you sure you want to delete this asset?',//Related endpoints and alerts will be removed, are you sure you want to delete this asset? yes: 'Yes', //"是" no: "No",//No - success: "Success", deleteSuccess: 'Delete success',//"删除成功" saveSuccess: 'Save success', //"保存成功" coverSuccess: 'Override success',//'覆盖成功' @@ -574,12 +588,8 @@ const en = { username: 'User', operation: 'Operation', type: 'Type', - createDate: 'Date', - ip: "IP", - userId: "UserId", - operaId: "OperaId", - time: "time(ms)", - params: "Params" + createDate: 'CreateDate', + ip: "IP" }, mib:{ mib:'SNMP mib', @@ -591,12 +601,11 @@ const en = { models:'Models', modelTip:'please select models', createMib:'Create Mib', - mibFiles:'Mib Files', + mibFile:'Mib File', uploadTip:'please upload mib file', requiredMibFile:'mib file is required', vendor:'Vendor', type:'Type', - mibBrowser: 'Mib browser', }, system:{ system:'System', diff --git a/nezha-fronted/src/components/page/dashboard/chartBox.vue b/nezha-fronted/src/components/page/dashboard/chartBox.vue index 398c7138a..b68c11ca1 100644 --- a/nezha-fronted/src/components/page/dashboard/chartBox.vue +++ b/nezha-fronted/src/components/page/dashboard/chartBox.vue @@ -75,34 +75,34 @@ - - - - + + + --> @@ -120,7 +120,7 @@ - + {{item.name}} @@ -128,10 +128,10 @@ - + {{$t('dashboard.panel.chartForm.unit')}} - + - {{$t('dashboard.panel.chartForm.metric')}} - + + + - + {{$t('dashboard.panel.chartForm.metric')}} + + + - + {{$t('dashboard.panel.chartForm.addMetric')}} @@ -250,6 +254,9 @@ span:12, height:'400', unit:2, + param:{ + url:'' + }, elements:{ id: '', expression: '', @@ -258,9 +265,13 @@ }, panel: '' }, + isUrl:false, rules: { title: [ {required: true, message: this.$t('validate.required'), trigger: 'blur'} + ], + url: [ + {required: true, message: this.$t('validate.required'), trigger: 'blur'} ] }, chartTypeList: [ @@ -279,6 +290,10 @@ { id:'stackArea', name:this.$t("dashboard.panel.chartForm.typeVal.stackArea.label") + }, + { + id:'url', + name:this.$t("dashboard.panel.chartForm.typeVal.url.label") } ], elements: [1], // 指标部分 tarNum @@ -311,6 +326,7 @@ methods: { show(show) { this.rightBox.show = show; + this.isUrl = false; }, clickos() { this.esc(); @@ -452,12 +468,12 @@ if (this.subCount === this.elements.length) { this.subCount = 0; // 保存完成,进行删除操作 - console.log('box第二步,deleteIndex='+this.deleteIndex+'=开始删除一个元素') - console.log('box第二步,删除之前,elements='+JSON.stringify(this.elements)+' elementTarget='+JSON.stringify(this.elementTarget)+' bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); + //('box第二步,deleteIndex='+this.deleteIndex+'=开始删除一个元素') + //console.log('box第二步,删除之前,elements='+JSON.stringify(this.elements)+' elementTarget='+JSON.stringify(this.elementTarget)+' bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); this.elements.splice(this.deleteIndex, 1); this.elementTarget.splice(this.deleteIndex, 1);//没有作用,此处是[] bus.chartAddInfo.metricTarget.splice(this.deleteIndex, 1); - console.log('box第二步,删除完毕,elements='+JSON.stringify(this.elements),' elementTarget='+JSON.stringify(this.elementTarget),' bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); + //console.log('box第二步,删除完毕,elements='+JSON.stringify(this.elements),' elementTarget='+JSON.stringify(this.elementTarget),' bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); this.$nextTick(() => { this.$refs.chartTag.forEach((item, index) => { @@ -522,7 +538,12 @@ this.$emit("reloadOnlyPanel"); this.$store.commit('panelListChange', true); } else { - this.$message.error(response.msg); + if(response.msg){ + this.$message.error(response.msg); + }else { + this.$message.error(response); + } + } }); } @@ -541,7 +562,11 @@ let panel = this.panelData.find(p => p.id === this.panelId); this.$emit('on-create-success', 'create', response.data,params, panel); } else { - this.$message.error(response.msg); + if(response.msg){ + this.$message.error(response.msg); + }else { + this.$message.error(response); + } } }); clearInterval(interval); @@ -555,7 +580,6 @@ }, // 更新图表 updateCharts(params) { - console.log('))))))))))))=',params) this.$put('panel/' + this.panelId + '/charts', params).then(response2 => { if (response2.code === 200) { this.esc(); @@ -564,7 +588,11 @@ this.panelName2 = ''; this.$emit('on-create-success', 'update', response2.data, params); } else { - this.$message.error(response2.msg); + if(response2.msg){ + this.$message.error(response2.msg); + }else { + this.$message.error(response2); + } } }); }, @@ -626,19 +654,41 @@ }, confirmAdd() { this.elementTarget = []; // 初始化清空参数 - this.$refs.chartTag.forEach((item, index) => {//循环指标列表 - // 触发每个tag组件内部进行校验 - item.saveTarget(index); - }); - this.$refs.chartForm.validate(); + if(this.chart.type!=='url'){ + this.$refs.chartTag.forEach((item, index) => {//循环指标列表 + // 触发每个tag组件内部进行校验 + item.saveTarget(index); + }); + }else { + this.$refs.chartForm.validate((valid) => { + const params = { + title: this.chart.title,//this.chart + span: this.chart.span, + height: this.chart.height, + type: this.chart.type, + unit:this.chart.unit, + param:{ + url:this.chart.param.url, + } + }; + + if (valid) { + params.elements = []; + if (this.isedit) { + params.id = this.chart.id; + this.updateCharts(params); + } else { + this.addCharts(params); + } + } + }); + } }, // 获取metric列表 getSuggestMetric() { //this.$get('/prom/api/v1/label/__name__/values').then(response => { this.$get('/module?pageSize=-1').then(response => { - console.log('---response---',response); if (response.code === 200) { - console.log('---response200---',response); this.metricList = response.data.list; const cascaderMap = new Map(); this.metricList.forEach((item,index) => { @@ -682,7 +732,6 @@ }); this.metricCascaderList = metricCascaderArr; - console.log('---response200metricCascaderList---',this.metricCascaderList); }else { this.metricList = []; this.metricCascaderList = []; @@ -714,7 +763,6 @@ } else { this.$nextTick(() => { - console.log('1_+_+_+_+_+_+',JSON.stringify(elementInfo.elements[0])); this.$refs.chartTag[0].setMdata(elementInfo.elements[0]); }); } @@ -742,20 +790,26 @@ this.chart.height = data.height+''; this.chart.type = data.type; this.chart.unit=data.unit; - //this.getSuggestMetric();//获得指标列表 - // 指标 - this.elements = []; - bus.chartAddInfo.metricTarget = []; - data.elements.forEach((item, index) => { - this.elements.push(index); - }); - this.$nextTick(() => { - const cSet = this.$refs.chartTag; - // 派发charttag数据 - cSet.forEach((item, index) => { - item.setMdata(data.elements[index]); + if(this.chart.type==='url'){ + this.chart.param.url = data.param.url; + this.isUrl = true; + this.elements = [1]; + }else{ + //this.getSuggestMetric();//获得指标列表 + // 指标 + this.elements = []; + bus.chartAddInfo.metricTarget = []; + data.elements.forEach((item, index) => { + this.elements.push(index); }); - }); + this.$nextTick(() => { + const cSet = this.$refs.chartTag; + // 派发charttag数据 + cSet.forEach((item, index) => { + item.setMdata(data.elements[index]); + }); + }); + } }, // 初始化信息 @@ -797,7 +851,15 @@ unitSelected:function(value){ this.chart.unit=value[value.length-1]; }, - + chartTypeChange(){ + let chartType = this.chart.type; + this.chart.param.url=''; + if(chartType==='url'){ + this.isUrl = true; + }else { + this.isUrl = false; + } + }, /*panel搜索建议*/ panelSuggestion(queryString, callback) { let data = []; @@ -818,11 +880,41 @@ preview(){ //验证图表数据是否合法??,合法了再显示预览窗口 this.elementTarget = []; // 初始化清空参数 - this.$refs.chartTag.forEach((item, index) => {//循环指标列表 - // 触发每个tag组件内部进行校验 - item.saveTarget(index,'preview'); - }); - this.$refs.chartForm.validate(); + if(this.chart.type!=='url'){ + this.$refs.chartTag.forEach((item, index) => {//循环指标列表 + // 触发每个tag组件内部进行校验 + item.saveTarget(index,'preview'); + }); + }else { + this.$refs.chartForm.validate((valid) => { + const params = { + title: this.chart.title,//this.chart + span: this.chart.span, + height: this.chart.height, + type: this.chart.type, + unit:this.chart.unit, + param:{ + url:this.chart.param.url, + } + }; + + if (valid) { + if (this.isedit) { + params.id = this.chart.id; + } + this.$refs.chartsPreview.show(params); + /* + if (this.isedit) { + params.id = this.chart.id; + this.updateCharts(params); + } else { + this.addCharts(params); + } + */ + } + }); + } + //this.$refs.chartForm.validate(); }, //preview--end @@ -854,6 +946,7 @@ item.clearSelectedTagList(); }); } + this.isUrl = false; }, } diff --git a/nezha-fronted/src/components/page/dashboard/chartMetric.vue b/nezha-fronted/src/components/page/dashboard/chartMetric.vue index 7eadb49b0..02ed176d3 100644 --- a/nezha-fronted/src/components/page/dashboard/chartMetric.vue +++ b/nezha-fronted/src/components/page/dashboard/chartMetric.vue @@ -343,7 +343,6 @@ export default { let module = node.data.label; let metricArr = []; let metricArrTmp = []; - console.log('success=3',project,module,_this.metricCascaderList); let metricLabelValMap = new Map(); let projectItem = _this.metricAllData.get(project); @@ -363,10 +362,8 @@ export default { }; metricArr.push(childOption); }); - console.log('success=111',metricArr); resolve(metricArr); }else { - console.log('success=222'); _this.metricCascaderList.map((item, index) => { if(item.label===project){//选择的project item.children.map((innerItem, innerIndex) => { @@ -375,7 +372,6 @@ export default { // 当二级分类的的child为空时才请求一次数据 let match = '{project="'+project+'",module="'+module+'"}'; _this.$get('/prom/api/v1/series?match[]='+match).then(res => { - console.log('success=5',res) if (res.status === 'success') { res.data.forEach((tag, i) => { let metricName = tag.__name__; @@ -432,12 +428,10 @@ export default { }); resolve(metricArr); }else { - console.log('success=999') resolve([]); } }) }else {//已经加载过了 - console.log('success=78') resolve([]); } } @@ -474,11 +468,11 @@ export default { }, // 第三步,将数据重新赋值,sub-save-ok回调 setSubdata(index) { - console.log('metric第三步,bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); - console.log('metric第三步,bus('+this.pointer+')='+JSON.stringify(bus.chartAddInfo.metricTarget[this.pointer])); + //('metric第三步,bus='+JSON.stringify(bus.chartAddInfo.metricTarget)); + //console.log('metric第三步,bus('+this.pointer+')='+JSON.stringify(bus.chartAddInfo.metricTarget[this.pointer])); this.elementInfo = bus.chartAddInfo.metricTarget[this.pointer]; - console.log('metric第三步,index'+index+',如果index是当前pointer('+this.pointer+'),则继续,把bus中的值赋值给当前metric') - console.log('metric第三步,elementInfo='+JSON.stringify(this.elementInfo)); + //console.log('metric第三步,index'+index+',如果index是当前pointer('+this.pointer+'),则继续,把bus中的值赋值给当前metric') + //console.log('metric第三步,elementInfo='+JSON.stringify(this.elementInfo)); if(this.elementInfo.type==='expert'){ //alert('metric第三步,expert'); // 当该项expression为空时,重置一下 @@ -497,36 +491,29 @@ export default { } }, clearSelectedTagList(){ - console.log('--------clear selected') this.elementInfo.selectedTagList.forEach((selectItem)=>{ selectItem.value = [];//清空值,再进行赋值 }); }, convertLabelValueCascadeVal(){ - //把级联选择label及value,转换为selectedTagList里的value?????? + //把级联选择label及value,转换为selectedTagList里的value this.clearSelectedTagList(); - console.log('*** this.labelValueCascaderVal***',JSON.stringify(this.labelValueCascaderVal)) this.labelValueCascaderVal.forEach((item)=>{//[label,value] let casLabel = item[0]; let casValue = item[1]; - console.log('*** this.elementInfo.selectedTagList***',JSON.stringify(this.elementInfo.selectedTagList)) this.elementInfo.selectedTagList.forEach((selectItem)=>{ let selectLabel = selectItem.name; let selectValue = selectItem.value; - console.log('111',selectLabel,casLabel) if(selectLabel===casLabel){ - console.log('222',selectValue.indexOf(casValue),selectValue,casValue) if(selectValue.indexOf(casValue)===-1){ selectValue.push(casValue); } } }); - console.log('*** this.elementInfo.selectedTagList***end',JSON.stringify(this.elementInfo.selectedTagList)) }); }, // (最后整体保存添加的图标的时候执行)保存, chartdata点击确认后保存本身数据并返回给chartdata saveTarget(pointer,optType) { - console.log(this.pointer,pointer,'this.labelValueCascaderVal=====',JSON.stringify(this.labelValueCascaderVal)); if (this.pointer === pointer) { this.$refs.elementInfo.validate((valid) => { if (valid) {//根据设置的rules进行验证,验证通过,则返回,继续进行保存(每个el-form-item都需要验证) @@ -536,7 +523,6 @@ export default { if(this.elementInfo.type==='normal' && this.elementInfo.metric instanceof Array){ this.elementInfo.metric = this.elementInfo.metric[2]; } - console.log('+++++++',JSON.stringify(this.labelValueCascaderVal)); this.convertLabelValueCascadeVal();//将label,value级联选择的值,转换为selectTagList里 this.$emit('on-add-target-success', this.elementInfo, pointer,optType); } @@ -785,7 +771,6 @@ export default { } this.labelValueCascaderOptions.push(labelOption); - console.log('++++item.val.length',item.value); if(item.value.length>0){ item.value.forEach((valueItem)=>{ let labelVal = []; @@ -795,8 +780,6 @@ export default { }); } }); - console.log('++++val',this.labelValueCascaderVal); - console.log('++++22',this.labelValueCascaderOptions); }, changeTag(){ this.$emit('on-change-condition'); @@ -806,7 +789,6 @@ export default { }, // 选择metric selectMetric() { - console.log('---setMetricToLabelValue---start') if (this.elementInfo.metric) {//选择了metric,则设置tagList,否则设置为空 this.getSuggestTags(this.elementInfo.metric); this.setLabelValueCascader(); @@ -858,14 +840,12 @@ export default { }, // 获取tags列表 getSuggestTags(metricArr) { - console.log('---getSuggestTags---start',this.metricLabelValInfo) let metric = metricArr[2]; let proTmp = metricArr[0]; let project = proTmp.substring(0, proTmp.length - 4); let module = metricArr[1]; this.elementInfo.selectedTagList = []; if(this.metricLabelValInfo.has(metric)){ - console.log('---metricLabelValInfo--has---start') let tagListTmp = []; tagListTmp = [...this.metricLabelValInfo.get(metric)]; tagListTmp.forEach((selectItem)=>{ @@ -988,7 +968,6 @@ export default { }); //排序label顺序 this.sortLabel(tagListTmp,this.elementInfo.selectedTagList); - console.log('11111111111111'); this.setLabelValueCascader(); } }else { @@ -1062,7 +1041,6 @@ export default { }); this.elementInfo.selectedTagList = []; - console.log('---response---start',this.metricLabelValInfo) if(this.metricLabelValInfo.has(metric)){ let tagListTmp = []; tagListTmp = [...this.metricLabelValInfo.get(metric)];//[...this.metricList], @@ -1133,7 +1111,6 @@ export default { // 编辑已有图表状态时,先填充数据 setMdata(data) { - console.log('-------data******',JSON.stringify(data)) this.setDataFlag = true; this.target = Object.assign({}, data); //this.pointer = @@ -1344,7 +1321,6 @@ export default { bus.$on('clear_history', () => { this.clearHistory(); }); - console.log('@#$%%',this.metricCascaderList); //this.metricCascaderList = [...this.metricCascaderListTmp]; }, beforeDestroy() { diff --git a/nezha-fronted/src/components/page/dashboard/metricPreview.vue b/nezha-fronted/src/components/page/dashboard/metricPreview.vue index 29d47ce5e..5b2790be5 100644 --- a/nezha-fronted/src/components/page/dashboard/metricPreview.vue +++ b/nezha-fronted/src/components/page/dashboard/metricPreview.vue @@ -33,10 +33,10 @@ - + - - + + + - + @@ -85,7 +88,7 @@ ref="chartList"> - + @@ -98,6 +101,7 @@ import ChartBox from "./chartBox"; import ChartList from '../../charts/chart-list'; import bus from '../../../libs/bus'; + //import calendar from '../../common/calendar' export default { name: "panel", @@ -267,7 +271,8 @@ }, components: { 'chart-box': ChartBox, - 'chart-list': ChartList + 'chart-list': ChartList, + //'calendar':calendar }, methods: { //刷新 @@ -366,14 +371,14 @@ type: 'success', message: this.$t("tip.deleteSuccess") }); - let chartList=this.$refs.chartList.dataList; - for (let i =0;i< chartList.length;i++){ - if(chartList[i].id === data.id){ - chartList.splice(i,1); - break; - } + let chartList=this.$refs.chartList.dataList; + for (let i =0;i< chartList.length;i++){ + if(chartList[i].id === data.id){ + chartList.splice(i,1); + break; } - // this.getTableData(); //删除相关图表后,刷新面板数据 + } + // this.getTableData(); //删除相关图表后,刷新面板数据 } else { this.$message.error(response.msg); }