fix:修改alertMessage 异步加载的问题

This commit is contained in:
zhangyu
2020-11-25 11:53:37 +08:00
parent 67b702edd1
commit c5314392fa
3 changed files with 104 additions and 68 deletions

View File

@@ -566,13 +566,15 @@
}, },
promQueryParamConvert(obj){ promQueryParamConvert(obj){
let r = "(" + obj.alertRule.expr + ")"; let r = "(" + obj.alertRule.expr + ")";
let intoLabels=false
if (Object.keys(obj.labels).length > 0) { if (Object.keys(obj.labels).length > 0) {
r += " and " + function(){ r += function(){
let group = "(group({"; let group =" and " + "(group({";
let by = " by ("; let by = " by (";
for (let k in obj.labels) { for (let k in obj.labels) {
if (k != 'alertname' && k != 'severity') { if (k != 'alertname' && k != 'severity') {
intoLabels=true;
group += k; group += k;
group += "="; group += "=";
group += ("'" + obj.labels[k] + "',"); group += ("'" + obj.labels[k] + "',");
@@ -580,12 +582,16 @@
by += "," by += ","
} }
} }
if(intoLabels){
group = group.substring(0, group.length-1); group = group.substring(0, group.length-1);
group += "})";
by = by.substring(0, by.length-1); by = by.substring(0, by.length-1);
group += "})";
by += ")"; by += ")";
return group + by + ")"; return group + by + ")";
}else{
return ''
}
}(); }();
} }
return r; return r;

View File

@@ -524,12 +524,21 @@
this.$get('alert/message', this.searchLabel).then(response => { this.$get('alert/message', this.searchLabel).then(response => {
if (response.code == 200) { if (response.code == 200) {
this.tableData = response.data.list; this.tableData = response.data.list;
let axiosAll=[]
this.$nextTick(() => {
this.tableData.forEach((item) => { this.tableData.forEach((item) => {
item.labels = JSON.parse(item.labels); item.labels = JSON.parse(item.labels);
if(item.alertRule.buildIn != 1) { if(item.alertRule.buildIn != 1){
let paramStr = JSON.stringify(this.promQueryParamConvert(item)); let paramStr = JSON.stringify(this.promQueryParamConvert(item));
this.$get('/prom/api/v1/query?query=' + paramStr.substring(1, paramStr.length - 1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")).then(response2 => { axiosAll.push(axios.get('/prom/api/v1/query?query=' + paramStr.substring(1, paramStr.length-1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")))
}else{
axiosAll.push('')
}
});
axios.all(axiosAll).then(res=>{
res.forEach((item,index)=>{
let current = []; let current = [];
let response2 = item.data;
if (response2.data && response2.data.result && response2.data.result.length > 0) { if (response2.data && response2.data.result && response2.data.result.length > 0) {
current = response2.data.result[0].value.map((item, i) => { current = response2.data.result[0].value.map((item, i) => {
if (i == 0) { if (i == 0) {
@@ -539,16 +548,12 @@
} }
}); });
}else{ }else{
current=[null,null]; current=[null,null]
}
this.requestIndex += 1;
item.current = current;
if (this.requestIndex === this.tableData.length) {
this.$set(item, "current", current);
this.requestIndex = 0;
}
});
} }
this.tableData[index].current=current;
})
this.tableData=[...this.tableData];
})
}); });
this.pageObj.total = response.data.total; this.pageObj.total = response.data.total;
this.loading = false; this.loading = false;
@@ -556,15 +561,17 @@
}); });
}, 1000); }, 1000);
}, },
promQueryParamConvert(obj) { promQueryParamConvert(obj){
let r = "(" + obj.alertRule.expr + ")"; let r = "(" + obj.alertRule.expr + ")";
if (Object.keys(obj.labels).length > 2) { let intoLabels=false
r += " and " + function(){ if (Object.keys(obj.labels).length > 0) {
let group = "(group({"; r += function(){
let group =" and " + "(group({";
let by = " by ("; let by = " by (";
for (let k in obj.labels) { for (let k in obj.labels) {
if (k != 'alertname' && k != 'severity') { if (k != 'alertname' && k != 'severity') {
intoLabels=true;
group += k; group += k;
group += "="; group += "=";
group += ("'" + obj.labels[k] + "',"); group += ("'" + obj.labels[k] + "',");
@@ -572,30 +579,44 @@
by += "," by += ","
} }
} }
if(intoLabels){
group = group.substring(0, group.length-1); group = group.substring(0, group.length-1);
group += "})";
by = by.substring(0, by.length-1); by = by.substring(0, by.length-1);
group += "})";
by += ")"; by += ")";
return group + by + ")"; return group + by + ")";
}else{
return ''
}
}(); }();
} }
return r; return r;
/*return "(" + obj.alertRule.expr + ") and (" + function(){ /*let result="(" + obj.alertRule.expr + ")";
if(obj.labels){
if(obj.labels.alertname){
delete obj.labels.alertname;
}
if(obj.labels.severity){
delete obj.labels.severity;
}
}
if(Object.keys(obj.labels).length>0){
result+=" and ("+function(){
let q = "{"; let q = "{";
for (let k in obj.labels) { for (let k in obj.labels) {
if (k != 'alertname' && k != 'severity') {
q += k; q += k;
q += "="; q += "=";
q += ("'" + obj.labels[k] + "',"); q += ("'" + obj.labels[k] + "',");
}
}; };
if (q.length > 1) { if (q.length > 1) {
q = q.substring(0, q.length-1); q = q.substring(0, q.length-1);
} }
q += "}"; q += "}";
return q; return q;
}() + ")";*/ }() + ")";
}
return result;*/
}, },
pageNo(val) { pageNo(val) {
this.pageObj.pageNo = val; this.pageObj.pageNo = val;

View File

@@ -362,13 +362,21 @@
this.tools.loading = false; this.tools.loading = false;
if (response.code == 200) { if (response.code == 200) {
this.tableData = response.data.list; this.tableData = response.data.list;
let axiosAll=[]
this.$nextTick(() => { this.$nextTick(() => {
this.tableData.forEach((item) => { this.tableData.forEach((item) => {
item.labels = JSON.parse(item.labels); item.labels = JSON.parse(item.labels);
if(item.alertRule.buildIn != 1){ if(item.alertRule.buildIn != 1){
let paramStr = JSON.stringify(this.promQueryParamConvert(item)); let paramStr = JSON.stringify(this.promQueryParamConvert(item));
this.$get('/prom/api/v1/query?query=' + paramStr.substring(1, paramStr.length-1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")).then(response2 => { axiosAll.push(axios.get('/prom/api/v1/query?query=' + paramStr.substring(1, paramStr.length-1).replace(/\+/g, "%2B").replace(/ /g, "%20").replace(/\\/g, "")))
}else{
axiosAll.push('')
}
});
axios.all(axiosAll).then(res=>{
res.forEach((item,index)=>{
let current = []; let current = [];
let response2 = item.data;
if (response2.data && response2.data.result && response2.data.result.length > 0) { if (response2.data && response2.data.result && response2.data.result.length > 0) {
current = response2.data.result[0].value.map((item, i) => { current = response2.data.result[0].value.map((item, i) => {
if (i == 0) { if (i == 0) {
@@ -380,15 +388,10 @@
}else{ }else{
current=[null,null] current=[null,null]
} }
this.requestIndex+=1; this.tableData[index].current=current;
item.current=current; })
if(this.requestIndex===this.tableData.length){ this.tableData=[...this.tableData];
this.$set(item, "current", current); })
this.requestIndex=0;
}
});
}
});
}); });
this.deleteBox.ids=''; this.deleteBox.ids='';
this.pageObj.total = response.data.total; this.pageObj.total = response.data.total;
@@ -397,13 +400,15 @@
}, },
promQueryParamConvert(obj){ promQueryParamConvert(obj){
let r = "(" + obj.alertRule.expr + ")"; let r = "(" + obj.alertRule.expr + ")";
let intoLabels=false
if (Object.keys(obj.labels).length > 0) { if (Object.keys(obj.labels).length > 0) {
r += " and " + function(){ r += function(){
let group = "(group({"; let group =" and " + "(group({";
let by = " by ("; let by = " by (";
for (let k in obj.labels) { for (let k in obj.labels) {
if (k != 'alertname' && k != 'severity') { if (k != 'alertname' && k != 'severity') {
intoLabels=true;
group += k; group += k;
group += "="; group += "=";
group += ("'" + obj.labels[k] + "',"); group += ("'" + obj.labels[k] + "',");
@@ -411,12 +416,16 @@
by += "," by += ","
} }
} }
if(intoLabels){
group = group.substring(0, group.length-1); group = group.substring(0, group.length-1);
group += "})";
by = by.substring(0, by.length-1); by = by.substring(0, by.length-1);
group += "})";
by += ")"; by += ")";
return group + by + ")"; return group + by + ")";
}else{
return ''
}
}(); }();
} }
return r; return r;