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)."