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 @@
</span>
</td>
</tr>
<tr>
<tr v-if="project && project.feature_assignement">
<td>
Membre assigné
</td>
<td>
<ProjectMemberSelect
v-if="fastEditionMode && canEditFeature && form"
:selected-user-id="form.assigned_member.value"
@update:user="$store.commit('feature/UPDATE_FORM_FIELD', { name: 'assigned_member', value: $event })"
:selected-user-id="assignedMemberId"
:disabled="!fastEditionMode || !canEditFeature"
class="inline"
/>
<span v-else>
{{ 'TO DO' }}
</span>
@update:user="$store.commit('feature/UPDATE_FORM_FIELD', { name: 'assigned_member', value: $event })"
/>
</td>
</tr>
<tr>
......@@ -202,6 +199,9 @@ export default {
},
computed: {
...mapState('projects', [
'project'
]),
...mapState('feature', [
'currentFeature',
'linked_features',
......@@ -254,6 +254,13 @@ export default {
featureFields() {
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>
<div class="field">
<Dropdown
v-if="!disabled"
:options="projectMemberOptions"
:selected="selectedProjectUser ? selectedProjectUser.name : ''"
:selection.sync="selectedProjectUser"
:selected="selectedMember ? selectedMember.name : ''"
:selection.sync="selectedMember"
:search="true"
:clearable="true"
/>
<div v-else-if="selectedMember && selectedMember.name && Array.isArray(selectedMember.name)">
<span> {{ selectedMember.name[0] || selectedMember.name[1] }}</span>
</div>
</div>
</template>
......@@ -26,6 +30,10 @@ export default {
selectedUserId: {
type: Number,
default: null,
},
disabled: {
type: Boolean,
default: false,
}
},
......@@ -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)
.map((el) => formatUserOption(el.user)); // Format user data to fit dropdown option structure
},
selectedProjectUser: {
// getter
selectedMember: {
get() {
return this.projectMemberOptions.find(el => el.value === this.selectedUserId);
},
// setter
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 = {
status: state.form.status.value.value || state.form.status.value,
project: rootState.projects.project.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 ? state.form.assigned_member.value : null,
assigned_member: state.form.assigned_member.value,
...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