reactive toggle flags emergency and confidential

This commit is contained in:
Mathieu Jaumotte 2021-05-14 20:42:22 +02:00
parent 0e53a081c7
commit d872bf65dd
3 changed files with 81 additions and 13 deletions

View File

@ -19,17 +19,15 @@
<dt>{{ $t('course.flags') }}</dt> <dt>{{ $t('course.flags') }}</dt>
<dd> <dd>
<div v-if="accompanyingCourse.emergency === true"
class="badge badge-pill badge-primary"> <toggle-flags
{{ $t('course.emergency') }}</div> v-bind:emergency="accompanyingCourse.emergency"
<div v-else class="badge badge-pill badge-secondary"> v-bind:confidential="accompanyingCourse.confidential">
{{ $t('course.emergency') }}</div> </toggle-flags>
<div v-if="accompanyingCourse.confidential === true"
class="badge badge-pill badge-primary">
{{ $t('course.confidential') }}</div>
<div v-else class="badge badge-pill badge-secondary">
{{ $t('course.confidential') }}</div>
</dd> </dd>
<dt>{{ $t('course.opening_date') }}</dt> <dt>{{ $t('course.opening_date') }}</dt>
@ -49,8 +47,13 @@
</template> </template>
<script> <script>
import ToggleFlags from './ToggleFlags';
export default { export default {
name: 'AccompanyingCourse', name: 'AccompanyingCourse',
components: {
ToggleFlags
},
computed: { computed: {
accompanyingCourse() { accompanyingCourse() {
return this.$store.state.accompanyingCourse return this.$store.state.accompanyingCourse

View File

@ -0,0 +1,38 @@
<template>
<button class="badge badge-pill"
:class="{ 'badge-primary': isEmergency }"
@click="toggleEmergency">
{{ $t('course.emergency') }}
</button>
<button class="badge badge-pill"
:class="{ 'badge-primary': isConfidential }"
@click="toggleConfidential">
{{ $t('course.confidential') }}
</button>
</template>
<script>
export default {
name: "ToggleFlags",
props: ['emergency', 'confidential'],
computed: {
isEmergency() {
return (this.emergency) ? true : false;
},
isConfidential() {
return (this.confidential) ? true : false;
}
},
methods: {
toggleEmergency() {
this.$store.dispatch('toggleEmergency', (!this.isEmergency));
},
toggleConfidential() {
this.$store.dispatch('toggleConfidential', (!this.isConfidential));
}
}
}
</script>

View File

@ -51,13 +51,21 @@ let initPromise = getAccompanyingCourse(id)
state.accompanyingCourse.requestorAnonymous = value; state.accompanyingCourse.requestorAnonymous = value;
}, },
removeResource(state, resource) { removeResource(state, resource) {
console.log('### mutation: removeResource', resource); //console.log('### mutation: removeResource', resource);
state.accompanyingCourse.resources = state.accompanyingCourse.resources.filter(element => element !== resource); state.accompanyingCourse.resources = state.accompanyingCourse.resources.filter(element => element !== resource);
}, },
addResource(state, resource) { addResource(state, resource) {
console.log('### mutation: addResource', resource); //console.log('### mutation: addResource', resource);
state.accompanyingCourse.resources.push(resource); state.accompanyingCourse.resources.push(resource);
}, },
toggleEmergency(state, value) {
//console.log('### mutation: toggleEmergency');
state.accompanyingCourse.emergency = value;
},
toggleConfidential(state, value) {
//console.log('### mutation: toggleConfidential');
state.accompanyingCourse.confidential = value;
}
}, },
actions: { actions: {
removeParticipation({ commit }, payload) { removeParticipation({ commit }, payload) {
@ -141,8 +149,27 @@ let initPromise = getAccompanyingCourse(id)
.catch((error) => { .catch((error) => {
state.errorMsg.push(error.message); state.errorMsg.push(error.message);
}); });
}, },
toggleEmergency({ commit }, payload) {
patchAccompanyingCourse(id, { type: "accompanying_period", emergency: payload })
.then(course => new Promise((resolve, reject) => {
commit('toggleEmergency', course.emergency);
resolve();
}))
.catch((error) => {
state.errorMsg.push(error.message);
});
},
toggleConfidential({ commit }, payload) {
patchAccompanyingCourse(id, { type: "accompanying_period", confidential: payload })
.then(course => new Promise((resolve, reject) => {
commit('toggleConfidential', course.confidential);
resolve();
}))
.catch((error) => {
state.errorMsg.push(error.message);
});
}
} }
}); });
resolve(store); resolve(store);