NEZ-343 feat: chart、alert-rule侧滑的expr

This commit is contained in:
chenjinsong
2020-07-03 11:45:54 +08:00
parent 127ac61ee0
commit 71a3a48c3e
4 changed files with 22 additions and 10 deletions

View File

@@ -37,9 +37,7 @@
:expression-list.sync="expressions" :expression-list.sync="expressions"
:index="0" :index="0"
:styleType="2" :styleType="2"
:plugins="['metric']" :plugins="['metric-input']"
@change="expressionChange"
@removeExpression="removeExpression"
></promql-input> ></promql-input>
<!--operator--> <!--operator-->
<el-form-item :label="$t('alert.config.operator')" prop="operator" style="width: 400px;display: inline-block;"> <el-form-item :label="$t('alert.config.operator')" prop="operator" style="width: 400px;display: inline-block;">
@@ -142,7 +140,11 @@
}, },
data() { data() {
return { return {
expressions: [], promqlCount: 1,
promqlKeys: [0],
expressions: [''],
legends: [''],
alertRule: {id: '', receiverShow: [], receiver: ''}, alertRule: {id: '', receiverShow: [], receiver: ''},
rightBox: {show: false, isEdit: false, title: ''}, rightBox: {show: false, isEdit: false, title: ''},
rules:{ rules:{
@@ -248,6 +250,7 @@
this.rightBox.isEdit = isEdit; this.rightBox.isEdit = isEdit;
}, },
save: function() { save: function() {
this.alertRule.expr = this.expressions[0];
this.$refs.alertRuleForm.validate((valid) => { this.$refs.alertRuleForm.validate((valid) => {
if (valid) { if (valid) {
this.alertRule.receiver = this.alertRule.receiverShow.join(","); this.alertRule.receiver = this.alertRule.receiverShow.join(",");
@@ -353,6 +356,14 @@
} else if (this.alertRule.type == 3) { } else if (this.alertRule.type == 3) {
this.getAssetList(); this.getAssetList();
} }
this.expressions = [this.alertRule.expr];
this.$nextTick(() => {
this.expressions.forEach((ex, index) => {
if (ex) {
this.$refs.promql.metricChange(ex);
}
});
});
} }
if (this.rightBox.show) { if (this.rightBox.show) {
if (this.rightBox.isEdit && this.alertRule.id) { if (this.rightBox.isEdit && this.alertRule.id) {

View File

@@ -199,7 +199,7 @@
:expression-list.sync="expressions" :expression-list.sync="expressions"
:index="index-1" :index="index-1"
:styleType="2" :styleType="2"
:plugins="['metric', 'remove']" :plugins="['metric-selector', 'metric-input', 'remove']"
@change="expressionChange" @change="expressionChange"
@removeExpression="removeExpression" @removeExpression="removeExpression"
></promql-input> ></promql-input>

View File

@@ -36,7 +36,7 @@
:expression-list="expressions" :expression-list="expressions"
:index="index-1" :index="index-1"
:styleType="1" :styleType="1"
:plugins="['metric', 'add', 'remove']" :plugins="['metric-selector', 'metric-input', 'add', 'remove']"
@change="expressionChange" @change="expressionChange"
@addExpression="addExpression" @addExpression="addExpression"
@removeExpression="removeExpression" @removeExpression="removeExpression"

View File

@@ -20,16 +20,17 @@
</template> </template>
<!--right-box里的样式--> <!--right-box里的样式-->
<template v-if="styleType == 2"> <template v-if="styleType == 2">
<el-row v-if="plugins.indexOf('metric') > -1" style="width: 100%;"> <el-row v-if="plugins.indexOf('metric-input') > -1 || plugins.indexOf('metric-selector') > -1" style="width: 100%;">
<el-col style="width: 120px; padding-right: 20px; text-align: right; color: #666"> <el-col style="width: 120px; padding-right: 20px; text-align: right; color: #666">
<el-dropdown class="metric-selector"> <el-dropdown class="metric-selector" v-if="plugins.indexOf('metric-selector') > -1">
<el-dropdown-menu style="display: none"></el-dropdown-menu> <el-dropdown-menu style="display: none"></el-dropdown-menu>
<span style="cursor: pointer;" @click="toggleDropdown">Metric&nbsp;<i class="el-icon-arrow-down" style="font-size: 14px; -webkit-transform:scale(0.75);display:inline-block;"></i></span> <span style="cursor: pointer;" @click="toggleDropdown">Metric&nbsp;<i class="el-icon-arrow-down" style="font-size: 14px; -webkit-transform:scale(0.75);display:inline-block;"></i></span>
<el-cascader-panel v-show="dropDownVisible" v-model="cascaderValue" style="text-align: left;" slot="dropdown" ref="metricSelector" :props="{emitPath:false}" :options="metricOptions" @change="metricChange"></el-cascader-panel> <el-cascader-panel v-show="dropDownVisible" v-model="cascaderValue" style="text-align: left;" slot="dropdown" ref="metricSelector" :props="{emitPath:false}" :options="metricOptions" @change="metricChange"></el-cascader-panel>
</el-dropdown> </el-dropdown>
<label style="line-height: 30px;" v-else>{{$t("alert.config.expr")}}</label>
</el-col> </el-col>
<el-col style="width: calc(100% - 120px);"> <el-col style="width: calc(100% - 120px);">
<div class="input-box" @click="dropDownVisible=false"> <div class="input-box" @click="dropDownVisible=false" v-if="plugins.indexOf('metric-input') > -1">
<editor :styleType="styleType" :metric-list="metricStore" v-model="expressionList[index]" ref="editor" @on-enter="expressionChange" @on-blur="expressionChange" ></editor> <editor :styleType="styleType" :metric-list="metricStore" v-model="expressionList[index]" ref="editor" @on-enter="expressionChange" @on-blur="expressionChange" ></editor>
<div class="append-msg error" v-if="errorMsg"><span>{{errorMsg}}</span></div> <div class="append-msg error" v-if="errorMsg"><span>{{errorMsg}}</span></div>
<div class="append-msg error" v-if="appendMsg"><span>{{appendMsg}}</span></div> <div class="append-msg error" v-if="appendMsg"><span>{{appendMsg}}</span></div>
@@ -47,7 +48,7 @@
</div> </div>
<div v-if="styleType == 2"> <div v-if="styleType == 2">
<div class="option" @click="addExpression" v-if="plugins.indexOf('add') > -1"><i class="el-icon-plus"></i></div> <div class="option" @click="addExpression" v-if="plugins.indexOf('add') > -1"><i class="el-icon-plus"></i></div>
<div class="option" @click="removeExpression" v-if="plugins.indexOf('remove') > -1"><i class="el-icon-minus"></i></div> <div class="option" style="margin-left: 5px; line-height: 32px;" @click="removeExpression" v-if="plugins.indexOf('remove') > -1"><i class="el-icon-minus"></i></div>
</div> </div>
</div> </div>
</template> </template>