Skip to content

Commit

Permalink
Merge pull request #333 from johnsusek/time_window_feature
Browse files Browse the repository at this point in the history
Time window feature
  • Loading branch information
nsano-rururu authored Mar 16, 2021
2 parents 93e439c + f193a66 commit 9587e1d
Show file tree
Hide file tree
Showing 11 changed files with 212 additions and 39 deletions.
5 changes: 4 additions & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
module.exports = {
presets: ['@vue/cli-plugin-babel/preset'],
plugins: ['babel-plugin-istanbul']
plugins: [
'babel-plugin-istanbul',
'@babel/plugin-proposal-nullish-coalescing-operator'
]
};
51 changes: 19 additions & 32 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
"zrender": "5.0.4"
},
"devDependencies": {
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
"@vue/cli-plugin-babel": "^4.5.11",
"@vue/cli-plugin-e2e-cypress": "^4.5.11",
"@vue/cli-plugin-eslint": "^4.5.11",
Expand Down
6 changes: 2 additions & 4 deletions run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/alertText.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/ConfigAlert.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/ConfigCondition.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/ConfigYaml.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/ErrorsLog.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/luceneSyntaxBuilder.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/QueriesLog.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/RuleView.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/SilenceLog.spec.js

# TODO:
# ./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/ConfigYaml.spec.js &&
./node_modules/.bin/vue-cli-service test:unit tests/unit/specs/SilenceLog.spec.js
121 changes: 121 additions & 0 deletions src/components/config/ConfigTimeWindowFeature.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<template>
<el-row :gutter="19">
<el-col :span="useTimeWindow ? 6 : 19">
<el-form-item label="Use Time Window">
<el-switch
v-model="useTimeWindow"
:disabled="viewOnly"
@change="changeTimeWindow" />
<label>
Use time window in order to send alerts only at specific time range.
</label>
</el-form-item>
</el-col>

<el-col v-if="useTimeWindow" :span="6">
<el-form-item label="Start time" prop="timeWindowStartTime" required>
<el-time-select
v-model="timeWindowStartTime"
:disabled="viewOnly"
:picker-options="{
start: '00:00',
step: '00:15',
end: '23:59'
}"
placeholder="Select time" />
<label v-if="!viewOnly">Start time of the range.</label>
</el-form-item>
</el-col>

<el-col v-if="useTimeWindow" :span="6">
<el-form-item label="End time" prop="timeWindowEndTime" required>
<el-time-select
v-model="timeWindowEndTime"
:disabled="viewOnly"
:picker-options="{
start: '00:00',
step: '00:15',
end: '23:59'
}"
placeholder="Select time" />
<label v-if="!viewOnly">Start time of the range.</label>
</el-form-item>
</el-col>

<el-col v-if="useTimeWindow" :span="6">
<el-form-item label="Drop if" prop="timeWindowDropIf" required>
<el-select v-model="timeWindowDropIf" :disabled="viewOnly" placeholder="" class="el-select-wide">
<el-option key="outside" label="Outside" value="outside" />
<el-option key="inside" label="Inside" value="inside" />
</el-select>
<label v-if="!viewOnly">Drop if inside/outside given range.</label>
</el-form-item>
</el-col>
</el-row>
</template>

<script>
export default {
props: ['viewOnly'],
data() {
return {};
},
computed: {
// time_window_change
useTimeWindow: {
get() {
return this.$store.state.config.alert.useTimeWindow;
},
set(value) {
this.$store.commit('config/alert/UPDATE_USE_TIME_WINDOW', value);
}
},
timeWindowStartTime: {
get() {
return this.$store.state.config.alert.timeWindowStartTime;
},
set(value) {
this.$store.commit('config/alert/UPDATE_TIME_WINDOW_START_TIME', value);
}
},
timeWindowEndTime: {
get() {
return this.$store.state.config.alert.timeWindowEndTime;
},
set(value) {
this.$store.commit('config/alert/UPDATE_TIME_WINDOW_END_TIME', value);
}
},
timeWindowDropIf: {
get() {
return this.$store.state.config.alert.timeWindowDropIf;
},
set(value) {
this.$store.commit('config/alert/UPDATE_TIME_WINDOW_DROP_IF', value);
}
},
},
mounted() {
if (this.timeWindowStartTime && this.timeWindowEndTime && this.timeWindowDropIf) {
this.useTimeWindow = true;
}
},
methods: {
// time_window_change
changeTimeWindow(val) {
if (val) {
this.useTimeWindow = true;
} else {
this.useTimeWindow = false;
}
},
}
};
</script>
7 changes: 7 additions & 0 deletions src/components/config/alert/ConfigAlert.vue
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@
</el-col>
</el-row>

<!-- time_window_change -->
<el-row class="m-s-sm">
<el-col :span="19">
<ConfigTimeWindowFeature ref="timeWindowFeature" :view-only="viewOnly" />
</el-col>
</el-row>

<el-row class="m-s-sm">
<el-col :span="enableLimitExcecution ? 6 : 24">
<el-form-item label="Limit Excecution">
Expand Down
2 changes: 2 additions & 0 deletions src/registration.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import ConfigQuery from '@/components/config/ConfigQuery.vue';
import ConfigAggregation from '@/components/config/ConfigAggregation.vue';
import ConfigAlert from '@/components/config/alert/ConfigAlert.vue';
import ConfigKibanaDiscover from '@/components/config/ConfigKibanaDiscover.vue';
import ConfigTimeWindowFeature from '@/components/config/ConfigTimeWindowFeature.vue';
import ConfigSettings from '@/components/config/ConfigSettings.vue';
import ConfigCondition from '@/components/config/ConfigCondition.vue';

Expand All @@ -25,6 +26,7 @@ Vue.component('ConfigAlert', ConfigAlert);
Vue.component('ConfigAggregation', ConfigAggregation);
Vue.component('ConfigSettings', ConfigSettings);
Vue.component('ConfigKibanaDiscover', ConfigKibanaDiscover);
Vue.component('ConfigTimeWindowFeature', ConfigTimeWindowFeature);
Vue.component('ConfigCondition', ConfigCondition);
Vue.component('DefinitionTable', DefinitionTable);
Vue.component('ElastalertTimePicker', ElastalertTimePicker);
Expand Down
20 changes: 20 additions & 0 deletions src/store/config/alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@ function initialState() {
/* Gitter */
gitterMsgLevel: 'error',

/* time_window_change */
useTimeWindow: false,
timeWindowStartTime: '',
timeWindowEndTime: '',
timeWindowDropIf: '',

/* Jira */
jiraProject: '',
jiraIssueType: '',
Expand Down Expand Up @@ -361,6 +367,20 @@ export default {
state.gitterMsgLevel = gitterMsgLevel;
},

// time_window_change
UPDATE_USE_TIME_WINDOW(state, useTimeWindow) {
state.useTimeWindow = useTimeWindow;
},
UPDATE_TIME_WINDOW_START_TIME(state, timeWindowStartTime) {
state.timeWindowStartTime = timeWindowStartTime;
},
UPDATE_TIME_WINDOW_END_TIME(state, timeWindowEndTime) {
state.timeWindowEndTime = timeWindowEndTime;
},
UPDATE_TIME_WINDOW_DROP_IF(state, timeWindowDropIf) {
state.timeWindowDropIf = timeWindowDropIf;
},

UPDATE_JIRA_PROJECT(state, jiraProject) {
state.jiraProject = jiraProject;
},
Expand Down
Loading

0 comments on commit 9587e1d

Please sign in to comment.