Fix designated users on task and new task modal [SCI-10488]

This commit is contained in:
Anton 2024-03-20 15:59:38 +01:00
parent 44c8ccb3b0
commit 93b75403df
4 changed files with 25 additions and 19 deletions

View file

@ -117,9 +117,7 @@ class UserMyModulesController < ApplicationController
user_hash
end
render json: {
users: users.compact
}
render json: users.compact
end
private

View file

@ -45,18 +45,20 @@
:placeholder="i18n.t('experiments.canvas.new_my_module_modal.assigned_tags_placeholder')"
:tagsView="true" ></SelectDropdown>
<label class="sci-label">
{{ i18n.t('experiments.canvas.new_my_module_modal.assigned_users') }}
</label>
<SelectDropdown
@change="setUsers"
:options="formattedUsers"
:option-renderer="usersRenderer"
:label-renderer="usersRenderer"
:multiple="true"
:searchable="true"
:placeholder="i18n.t('experiments.canvas.new_my_module_modal.assigned_users_placeholder')"
:tagsView="true" ></SelectDropdown>
<template v-if="this.assignedUsersUrl">
<label class="sci-label">
{{ i18n.t('experiments.canvas.new_my_module_modal.assigned_users') }}
</label>
<SelectDropdown
@change="setUsers"
:options="formattedUsers"
:option-renderer="usersRenderer"
:label-renderer="usersRenderer"
:multiple="true"
:searchable="true"
:placeholder="i18n.t('experiments.canvas.new_my_module_modal.assigned_users_placeholder')"
:tagsView="true" ></SelectDropdown>
</template>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">{{ i18n.t('general.cancel') }}</button>
@ -169,6 +171,8 @@ export default {
});
},
loadUsers() {
if (!this.assignedUsersUrl) return;
axios.get(this.assignedUsersUrl).then((response) => {
this.allUsers = response.data.data;
});

View file

@ -106,12 +106,16 @@ export default {
}
})
.then((response) => {
let result = response.data;
if (!Array.isArray(result)) result = [];
if (setSelectedUsers) {
this.selectedUsers = response.data.users.filter((item) => this.users.some((user) => user.id === item.value));
this.allUsers = response.data.users;
this.selectedUsers = result.filter((item) => this.users.some((user) => user.id === item.value));
this.allUsers = result;
this.flyoutLoaded = true;
} else {
const nonAssignedUsers = response.data.users.filter((item) => !this.selectedUsers.some(({ value }) => value === item.value));
const nonAssignedUsers = result.filter((item) => !this.selectedUsers.some(({ value }) => value === item.value));
this.allUsers = this.selectedUsers.concat(nonAssignedUsers);
}
});

View file

@ -11,7 +11,7 @@
active-page-url="<%= my_modules_path(experiment_id: @experiment, view_mode: :active) %>"
archived-page-url="<%= my_modules_path(experiment_id: @experiment, view_mode: :archived) %>"
current-view-mode="<%= view_mode %>"
assigned-users-url="<%= assigned_users_experiment_path(@experiment) %>"
assigned-users-url="<%= (assigned_users_experiment_path(@experiment) if can_designate_users_to_new_task?(@experiment)) %>"
users-filter-url="<%= users_filter_projects_path %>"v
user-roles-url="<%= user_roles_projects_path %>"
:tags-colors="<%= Constants::TAG_COLORS.to_json %>"