Merge branch 'enable-patterns'

This commit is contained in:
saber-nyan 2020-04-07 00:47:15 +03:00
commit 74c754c046
No known key found for this signature in database
GPG Key ID: 7B069E9C295E6B4A
2 changed files with 36 additions and 10 deletions

View File

@ -121,6 +121,14 @@
}); });
break; break;
} }
case 'ENABLE_PATTERN': {
this.$refs.navbar.$refs.patternsDropdown.togglePatternFromWs(parsed.value, true);
break;
}
case 'DISABLE_PATTERN': {
this.$refs.navbar.$refs.patternsDropdown.togglePatternFromWs(parsed.value, false);
break;
}
default: { default: {
console.error('[WS] Event is not implemented!', parsed); console.error('[WS] Event is not implemented!', parsed);
break; break;

View File

@ -9,16 +9,21 @@
<b-dropdown-divider/> <b-dropdown-divider/>
<b-dropdown-item-button v-for="pattern in this.$store.state.patterns" <b-dropdown-item-button v-for="pattern in this.$store.state.patterns"
:key="pattern.id" @click.stop.prevent="openPattern(pattern.id)"> :key="pattern.id" @click.stop.prevent="openPattern(pattern.id)">
<strong :style="`color: ${pattern.color};`">{{ pattern.name }}</strong>: <strong v-if="pattern.enabled" :style="`color: ${pattern.color};`">{{ pattern.name }}</strong>
<s v-else :style="`color: ${pattern.color};`">{{ pattern.name }}</s>:
<code>{{ getSearchTypeValue(pattern.searchType, pattern.value) }}</code>; <code>{{ getSearchTypeValue(pattern.searchType, pattern.value) }}</code>;
search search
<template v-if="pattern.directionType === 'BOTH'">anywhere</template> <template v-if="pattern.directionType === 'BOTH'">anywhere</template>
<template v-else-if="pattern.directionType === 'INPUT'">in request</template> <template v-else-if="pattern.directionType === 'INPUT'">in request</template>
<template v-else>in response</template> <template v-else>in response</template>
<div class="float-right" style="margin-left: 2em;"> <div class="float-right" style="margin-left: 2em;">
<button type="button" class="btn btn-outline-danger btn-block btn-sm" <button v-if="pattern.enabled" type="button" class="btn btn-outline-danger btn-block btn-sm"
@click.stop.prevent="deletePattern(pattern.id)"> @click.stop.prevent="togglePattern(pattern)">
<i class="far fa-trash-alt"/> <i class="fas fa-pause"></i>
</button>
<button v-else type="button" class="btn btn-outline-success btn-block btn-sm"
@click.stop.prevent="togglePattern(pattern)">
<i class="fas fa-play"></i>
</button> </button>
</div> </div>
</b-dropdown-item-button> </b-dropdown-item-button>
@ -63,19 +68,24 @@
query: {pattern: patternId,}, query: {pattern: patternId,},
}); });
}, },
deletePattern(patternId) { togglePattern(pattern) {
console.debug('Deleting pattern w/ id', patternId); const enabled = !pattern.enabled;
this.$http.delete(`pattern/${patternId}`) console.debug('Toggling pattern', pattern);
this.$http.post(`pattern/${pattern.id}/`, null, {
params: {
enabled,
},
})
.then(response => { .then(response => {
const data = response.data; const data = response.data;
console.debug('Done deleting pattern', data); console.debug('Done toggling pattern', data);
this.$emit('patternAddComplete'); this.$emit('patternAddComplete');
}).catch(e => { }).catch(e => {
this.$bvToast.toast(`Failed to delete pattern: ${e}`, { this.$bvToast.toast(`Failed to toggle pattern: ${e}`, {
title: 'Error', title: 'Error',
variant: 'danger', variant: 'danger',
}); });
console.error('Failed to delete pattern', e); console.error('Failed to toggle pattern', e);
}); });
}, },
@ -86,6 +96,14 @@
deletePatternFromWs(id) { deletePatternFromWs(id) {
this.$store.commit('setPatterns', this.$store.state.patterns.filter(o => o.id !== id)); this.$store.commit('setPatterns', this.$store.state.patterns.filter(o => o.id !== id));
}, },
togglePatternFromWs(id, enabled) {
this.$store.state.patterns.forEach(pattern => {
if (pattern.id === id) {
pattern.enabled = enabled;
}
});
},
}, },
}; };
</script> </script>