diff --git a/app/assets/javascripts/experiments/table.js b/app/assets/javascripts/experiments/table.js index 7ea9a3280..f0f0839d8 100644 --- a/app/assets/javascripts/experiments/table.js +++ b/app/assets/javascripts/experiments/table.js @@ -124,6 +124,30 @@ var ExperimnetTable = { return true; }); }, + initManageUsersDropdown: function() { + $(this.table).on('show.bs.dropdown', '.assign-users-dropdown', (e) => { + let usersList = $(e.target).find('.users-list'); + usersList.find('.user-container').remove(); + $.get(usersList.data('list-url'), (result) => { + $.each(result, (_i, user) => { + $(` +
+
+ + +
+
+ +
+
+ ${user.label} +
+
+ `).appendTo(usersList); + }); + }); + }); + }, checkActionPermission: function(permission) { let allMyModules; @@ -299,6 +323,7 @@ var ExperimnetTable = { this.initNewTaskModal(this); this.initMyModuleActions(); this.updateExperimentToolbar(); + this.initManageUsersDropdown(); } }; @@ -334,34 +359,48 @@ ExperimnetTable.render.status = function(data) { ExperimnetTable.render.assigned = function(data) { let users = ''; - $.each(data.users, (_i, user) => { + + $.each(data.users, (i, user) => { users += ` - + `; }); - if (data.length > 3) { + if (data.count > 4) { users += ` - - +${data.length - 3} + + +${data.count - 4} `; } - if (data.manage_url) { - users = ` - - ${users} - - - - + if (data.create_url) { + users += ` + + + `; } - return users; + return ` + + `; }; ExperimnetTable.render.tags = function(data) { diff --git a/app/assets/stylesheets/experiment/table.scss b/app/assets/stylesheets/experiment/table.scss index 554c8d406..84810878c 100644 --- a/app/assets/stylesheets/experiment/table.scss +++ b/app/assets/stylesheets/experiment/table.scss @@ -130,6 +130,59 @@ } } + .assign-users-dropdown { + .dropdown-menu { + padding: .5em; + width: 280px; + } + + .users-list { + max-height: 400px; + overflow: auto; + } + + .user-container { + align-items: center; + display: flex; + padding: .5em; + + .user-avatar { + padding: 0 .75em; + } + } + + .assigned-users-container { + cursor: pointer; + display: flex; + } + + .avatar-container { + border: 1px solid $color-white; + border-radius: 50%; + display: inline-block; + height: 26px; + margin-right: -5px; + width: 26px; + + img { + border-radius: 50%; + max-height: 100%; + max-width: 100%; + } + } + + .more-users { + font-size: 10px; + line-height: 24px; + } + + .new-user { + color: $color-silver-chalice; + line-height: 24px; + margin-left: 5px; + } + } + .my-module-status { color: $color-white; display: inline-block; diff --git a/app/assets/stylesheets/global_activities.scss b/app/assets/stylesheets/global_activities.scss index 5c8ff6820..dab6dfa18 100644 --- a/app/assets/stylesheets/global_activities.scss +++ b/app/assets/stylesheets/global_activities.scss @@ -456,6 +456,7 @@ .calendar-input { background-color: transparent !important; + border-color: $color-silver-chalice; box-shadow: none; color: inherit; cursor: pointer; diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index ad5f2eafb..08c64e9a2 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -14,7 +14,7 @@ module ProjectsHelper end def user_names_with_roles(user_assignments) - user_assignments.map { |up| user_name_with_role(up) }.join(' ').html_safe + user_assignments.map { |up| user_name_with_role(up) }.join(' ') end def user_name_with_role(user_assignment) diff --git a/app/services/experiments/table_view_service.rb b/app/services/experiments/table_view_service.rb index 5780fab6e..e7d61fc24 100644 --- a/app/services/experiments/table_view_service.rb +++ b/app/services/experiments/table_view_service.rb @@ -144,10 +144,10 @@ module Experiments }) end - result[:more_users_title] = user_names_with_roles(users[4..].to_a) if users.length > 3 - + result[:more_users_title] = users[4..].map(&:full_name).join(' ') if users.length > 4 + result[:list_url] = search_my_module_user_my_module_path(my_module, my_module_id: my_module.id) if can_manage_my_module_users?(@user, my_module) - result[:manage_url] = index_old_my_module_user_my_modules_url(my_module_id: my_module.id, format: :json) + result[:create_url] = my_module_user_my_modules_path(my_module_id: my_module.id) end result diff --git a/app/views/projects/index/_users_list.html.erb b/app/views/projects/index/_users_list.html.erb index e4c0a3187..3c7a7e296 100644 --- a/app/views/projects/index/_users_list.html.erb +++ b/app/views/projects/index/_users_list.html.erb @@ -6,7 +6,7 @@ <% more_users = project.user_assignments[4..-1].to_a %> <% if more_users.any? %> - + +<%= more_users.size %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index e22ccf20f..945191b58 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1346,6 +1346,7 @@ en: archived_tasks: 'Go to Archived tasks' active_tasks: 'Go to Active tasks' add_tag: '+ Add tag' + search: 'Search...' archive_group: success_flash: "%{number} task(s) successfully archived." error_flash: "Failed to archive task(s)."