Skip to content
Snippets Groups Projects
Commit a05b2946 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

Add assigned_member display in classic mode & fix delete

parent 3ab4b35e
No related branches found
No related tags found
2 merge requests!8516.2.x,!849v6.2.x <- REDMINE_ISSUE-21162 | Assignation d’un signalement à un utilisateur - envoi d’un mail de notification immédiat à la personnes assignée
...@@ -80,20 +80,17 @@ ...@@ -80,20 +80,17 @@
</span> </span>
</td> </td>
</tr> </tr>
<tr> <tr v-if="project && project.feature_assignement">
<td> <td>
Membre assigné Membre assigné
</td> </td>
<td> <td>
<ProjectMemberSelect <ProjectMemberSelect
v-if="fastEditionMode && canEditFeature && form" :selected-user-id="assignedMemberId"
:selected-user-id="form.assigned_member.value" :disabled="!fastEditionMode || !canEditFeature"
@update:user="$store.commit('feature/UPDATE_FORM_FIELD', { name: 'assigned_member', value: $event })"
class="inline" class="inline"
/> @update:user="$store.commit('feature/UPDATE_FORM_FIELD', { name: 'assigned_member', value: $event })"
<span v-else> />
{{ 'TO DO' }}
</span>
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -202,6 +199,9 @@ export default { ...@@ -202,6 +199,9 @@ export default {
}, },
computed: { computed: {
...mapState('projects', [
'project'
]),
...mapState('feature', [ ...mapState('feature', [
'currentFeature', 'currentFeature',
'linked_features', 'linked_features',
...@@ -254,6 +254,13 @@ export default { ...@@ -254,6 +254,13 @@ export default {
featureFields() { featureFields() {
return this.fastEditionMode ? this.extra_forms : this.featureData; return this.fastEditionMode ? this.extra_forms : this.featureData;
},
assignedMemberId() {
if (this.form && this.form.assigned_member) {
return this.form.assigned_member.value
}
return this.currentFeature.properties.assigned_member;
} }
}, },
}; };
......
<template> <template>
<div class="field"> <div class="field">
<Dropdown <Dropdown
v-if="!disabled"
:options="projectMemberOptions" :options="projectMemberOptions"
:selected="selectedProjectUser ? selectedProjectUser.name : ''" :selected="selectedMember ? selectedMember.name : ''"
:selection.sync="selectedProjectUser" :selection.sync="selectedMember"
:search="true" :search="true"
:clearable="true" :clearable="true"
/> />
<div v-else-if="selectedMember && selectedMember.name && Array.isArray(selectedMember.name)">
<span> {{ selectedMember.name[0] || selectedMember.name[1] }}</span>
</div>
</div> </div>
</template> </template>
...@@ -26,6 +30,10 @@ export default { ...@@ -26,6 +30,10 @@ export default {
selectedUserId: { selectedUserId: {
type: Number, type: Number,
default: null, default: null,
},
disabled: {
type: Boolean,
default: false,
} }
}, },
...@@ -38,14 +46,18 @@ export default { ...@@ -38,14 +46,18 @@ export default {
.filter((el) => el.level.codename !== 'logged_user') // Filter out user not member of the project (with level lower than contributor) .filter((el) => el.level.codename !== 'logged_user') // Filter out user not member of the project (with level lower than contributor)
.map((el) => formatUserOption(el.user)); // Format user data to fit dropdown option structure .map((el) => formatUserOption(el.user)); // Format user data to fit dropdown option structure
}, },
selectedProjectUser: { selectedMember: {
// getter
get() { get() {
return this.projectMemberOptions.find(el => el.value === this.selectedUserId); return this.projectMemberOptions.find(el => el.value === this.selectedUserId);
}, },
// setter
set(newValue) { set(newValue) {
this.$emit('update:user', newValue.value); /**
* If the user delete previous assigned_member the value is undefined
* We replace it by null in order to allow empty field to be sent with the request
* & to comply with UPDATE_FORM_FIELD mutation logic
* TODO: If refactoring the app one day -> merge together both featureEdit form and feature store form to work the same way
*/
this.$emit('update:user', newValue.value || null);
}, },
} }
}, },
......
...@@ -277,8 +277,7 @@ const feature = { ...@@ -277,8 +277,7 @@ const feature = {
status: state.form.status.value.value || state.form.status.value, status: state.form.status.value.value || state.form.status.value,
project: rootState.projects.project.slug, project: rootState.projects.project.slug,
feature_type: rootState['feature-type'].current_feature_type_slug, feature_type: rootState['feature-type'].current_feature_type_slug,
// if is undefined using null to allow sending empty field in order to delete previous assigned_member assigned_member: state.form.assigned_member.value,
assigned_member: state.form.assigned_member.value ? state.form.assigned_member.value : null,
...extraFormObject ...extraFormObject
} }
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment