packmate/src/views/AddPattern.vue
2019-11-25 19:36:40 +03:00

109 lines
3.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<b-modal @ok="addPattern" @cancel="reset" id="addPatternModal"
title="Добавить паттерн"
cancel-title="Отмена"
centered scrollable>
<form ref="addPatternForm">
<b-form-group
label-cols-sm="4"
label-cols-lg="3"
label="Название"
description="Отображается в списке и при успешном поиске"
label-for="pattern-name">
<b-form-input @keydown.native.enter="addPattern" id="pattern-name" required v-model="newPattern.name"/>
</b-form-group>
<b-form-group
label-cols-sm="4"
label-cols-lg="3"
label="Паттерн"
description="Подстрока или регулярное выражение"
label-for="pattern-value">
<b-form-input @keydown.native.enter="addPattern" id="pattern-value" required
v-model="newPattern.value"/>
</b-form-group>
<b-form-group
label-cols-sm="4"
label-cols-lg="3"
label="Цвет"
description="Как выделять найденный паттерн в пакете и стриме"
label-for="pattern-color">
<b-form-input id="pattern-color" required type="color" v-model="newPattern.color"/>
</b-form-group>
<b-form-group
label-cols-sm="4"
label-cols-lg="3"
label="Регулярное выражение?"
description="Искать регулярное выражение в Java-формате вместо подстроки?"
label-for="pattern-regex">
<b-form-checkbox id="pattern-regex" required v-model="newPattern.regex"/>
</b-form-group>
<b-form-group
label-cols-sm="4"
label-cols-lg="3"
label="Тип поиска"
description="В каких пакетах искать паттерн"
label-for="pattern-type">
<b-form-select id="pattern-type" required v-model="newPattern.type">
<option value="INPUT">Запрос</option>
<option value="OUTPUT">Ответ</option>
<option value="BOTH" selected>Везде</option>
</b-form-select>
</b-form-group>
</form>
</b-modal>
</template>
<script>
export default {
name: 'AddPattern',
data() {
return {
newPattern: {
name: String(),
value: String(),
color: String(),
regex: Boolean(),
type: String(),
},
};
},
methods: {
checkValidity() {
return this.$refs.addPatternForm.reportValidity();
},
reset() {
this.newPattern = {};
},
addPattern(ev) {
ev.preventDefault();
if (!this.checkValidity()) {
console.debug('Form is invalid');
return;
}
console.debug('Adding pattern...', this.newPattern);
this.$http.post('pattern/', this.newPattern)
.then(response => {
const data = response.data;
console.debug('Done adding pattern', data);
this.$emit('patternAddComplete');
this.reset();
this.$bvModal.hide('addPatternModal');
}).catch(e => {
this.$bvToast.toast(`Не удалось добавить паттерн: ${e}`, {
title: 'Сбой',
variant: 'danger',
});
console.error('Failed to add pattern', e);
});
},
},
};
</script>
<style scoped>
</style>