From ccf33c50a0eca3098a665857c42e2f06737cdf8f Mon Sep 17 00:00:00 2001 From: Julianna Tetreault <32834804+juliannatetreault@users.noreply.github.com> Date: Wed, 6 Apr 2022 11:48:25 -0600 Subject: [PATCH] Add Data (User Details, Status, etc.) to the Member Index View Columns (#17033) * Adds data to the member column in Member Index View * Adds roles, statuses, and latest activity to Member Index views * Adds the list of orgs a user belongs to in Member Index view * Updates the image URL to link to each users member detail view * Adds comment_suspended to user current_status and makes roles prettier * Fixes bullet warning and encapsulates org logic in method * Properly displays today and yesterday in words * Refactors #current_organizations to use ternary * Updates user.rb Member Index View-related methods * Adjusts the styling of user roles and adds tooltip to roles * Updates Member Index View to be mobile-friendly * Updates userIndexView.spec.js * Updates capitalization within userIndexView.spec.js * Updates Member Index View per mobile designs and feedback * Adds member status logic inline with SVGs * Updates the status column for mobile layout * Adjust current_role tooltips for Member Index View * Adds organization name tooltip to member orgas * Adds organization pics to Member Index View and cleans up helpers * Addresses PR review feedback (Thanks, Suzanne!) * Uses CSS in place of SVGs for member statuses * Adds E2E test for and removes link to org page from Member Index View * Addresses PR feedback comments by refactoring Member Index View code * Removes leftover code in user.rb * Update method that tooltips rely on * Spells regular correctly : * Adds a spec that tests Admin::UsersHelper#format_last_activity_timestamp * Adjusts #cascading_high_level_roles logic and roles * Adds a spec for #cascading_high_level_roles * Adds a #last_activity spec to the User model * Adjusts code a bit per PR feedback. Thanks, Ridhwana! :) * Updates specs for Member Index View helpers * Adds Timecop.freeze to help with timestamp failure in user_spec.rb --- app/helpers/admin/users_helper.rb | 25 +++++ app/models/user.rb | 7 ++ app/views/admin/users/_member_index.html.erb | 93 ++++++++++++++++--- .../adminFlows/users/userIndexView.spec.js | 29 ++++-- spec/helpers/admin/users_helper_spec.rb | 52 +++++++++++ spec/models/user_spec.rb | 9 ++ 6 files changed, 195 insertions(+), 20 deletions(-) create mode 100644 app/helpers/admin/users_helper.rb create mode 100644 spec/helpers/admin/users_helper_spec.rb diff --git a/app/helpers/admin/users_helper.rb b/app/helpers/admin/users_helper.rb new file mode 100644 index 000000000..3876346fe --- /dev/null +++ b/app/helpers/admin/users_helper.rb @@ -0,0 +1,25 @@ +module Admin + module UsersHelper + def format_last_activity_timestamp(timestamp) + return if timestamp.blank? + + if timestamp.today? + "Today, #{timestamp.strftime('%d %b')}" + elsif timestamp.yesterday? + "Yesterday, #{timestamp.strftime('%d %b')}" + else + timestamp.strftime("%d %b, %Y") + end + end + + def cascading_high_level_roles(user) + if user.super_admin? + "Super Admin" + elsif user.admin? + "Admin" + elsif user.single_resource_admin_for?(:any) + "Resource Admin" + end + end + end +end diff --git a/app/models/user.rb b/app/models/user.rb index 79c736803..2f07dc7fd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -554,6 +554,13 @@ class User < ApplicationRecord Reaction.for_user(self) end + def last_activity + return unless registered == true + + [registered_at, last_comment_at, last_article_at, latest_article_updated_at, last_reacted_at, profile_updated_at, + last_moderation_notification, last_notification_activity].compact.max + end + protected # Send emails asynchronously diff --git a/app/views/admin/users/_member_index.html.erb b/app/views/admin/users/_member_index.html.erb index 2cb382495..ab96ffdf0 100644 --- a/app/views/admin/users/_member_index.html.erb +++ b/app/views/admin/users/_member_index.html.erb @@ -7,34 +7,59 @@
-

Members

-