From b3b881da174991bd1f794e82b4beb3c86e356cfb Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Wed, 19 Feb 2025 14:02:07 -0600 Subject: [PATCH] Try a more Basecamp style activity event card --- app/assets/stylesheets/events.css | 5 +++ app/assets/stylesheets/utilities.css | 1 + app/helpers/events_helper.rb | 39 ++++++---------------- app/views/events/_event.html.erb | 25 ++++++++------ test/controllers/events_controller_test.rb | 4 +-- 5 files changed, 33 insertions(+), 41 deletions(-) diff --git a/app/assets/stylesheets/events.css b/app/assets/stylesheets/events.css index 75635a719..1900443d1 100644 --- a/app/assets/stylesheets/events.css +++ b/app/assets/stylesheets/events.css @@ -81,6 +81,11 @@ margin-block-start: calc(var(--grid-lines) * -1); } +.event__title { + font-size: 1.1em; + line-height: 1.2; +} + .event__wrapper { align-content: end; display: grid; diff --git a/app/assets/stylesheets/utilities.css b/app/assets/stylesheets/utilities.css index 54f33f5ee..62f98c2c5 100644 --- a/app/assets/stylesheets/utilities.css +++ b/app/assets/stylesheets/utilities.css @@ -39,6 +39,7 @@ .txt-nowrap { white-space: nowrap; } .txt-break { word-break: break-word; } .txt-uppercase { text-transform: uppercase; } +.txt-link { color: var(--color-link); text-decoration: underline; } /* Flexbox and Grid */ .justify-end { justify-content: end; } diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index d20c733fe..3f04dfdc5 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -67,44 +67,27 @@ module EventsHelper def event_action_sentence(event) case event.action when "assigned" - "Assigned to #{ event.assignees.pluck(:name).to_sentence }".html_safe + "#{ event.creator.name } assigned #{ event.assignees.pluck(:name).to_sentence } to #{ event.bubble.title }".html_safe when "unassigned" - "Unassigned #{ event.assignees.pluck(:name).to_sentence }".html_safe + "#{ event.creator.name } unassigned #{ event.assignees.pluck(:name).to_sentence } from #{ event.bubble.title }".html_safe when "boosted" - "Boosted by #{ event.creator.name }".html_safe + "#{ event.creator.name } boosted #{ event.bubble.title }".html_safe when "commented" - "#{ strip_tags(event.comment.body_html).blank? ? "#{ event.creator.name } replied.".html_safe : "#{ event.creator.name }:" } #{ strip_tags(event.comment.body_html).truncate(200) }".html_safe + "#{ event.creator.name } commented on #{ event.bubble.title }".html_safe when "published" - "Added by #{ event.creator.name }".html_safe + "#{ event.creator.name } added #{ event.bubble.title }".html_safe when "popped" - "Popped by #{ event.creator.name }".html_safe + "#{ event.creator.name } popped #{ event.bubble.title }".html_safe when "staged" - "#{event.creator.name} moved to #{event.stage_name}.".html_safe + "#{event.creator.name} changed the stage to #{event.stage_name} on #{ event.bubble.title }".html_safe when "due_date_added" - "#{event.creator.name} set the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')}".html_safe + "#{event.creator.name} set the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{ event.bubble.title }".html_safe when "due_date_changed" - "#{event.creator.name} changed the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')}".html_safe + "#{event.creator.name} changed the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{ event.bubble.title }".html_safe when "due_date_removed" - "#{event.creator.name} removed the date" + "#{event.creator.name} removed the date on #{ event.bubble.title }" when "title_changed" - "#{event.creator.name} renamed this (was: '#{event.particulars.dig('particulars', 'old_title')})'".html_safe - end - end - - def event_action_icon(event) - case event.action - when "assigned" - "arrow-right" - when "boosted" - "thumb-up" - when "staged" - "bolt" - when "unassigned" - "remove-med" - when "due_date_added", "due_date_changed" - "calendar" - else - "person" + "#{event.creator.name} renamed on #{ event.bubble.title } (was: '#{event.particulars.dig('particulars', 'old_title')})'".html_safe end end end diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb index c43c5f24a..64f99c2e6 100644 --- a/app/views/events/_event.html.erb +++ b/app/views/events/_event.html.erb @@ -10,18 +10,21 @@ animation_play_class: "bubble--wobble", animation_play_on_load_value: "true", action: "mouseover->animation#play mouseover->related-element#highlight mouseout->related-element#unhighlight" } do %> -
+
+ <%= avatar_image_tag(event.creator) %> +
-
- - <%= event.action == "commented" ? "RE: #{ bubble.title }" : bubble.title %> +
+ + <%= event_action_sentence(event) %> - - <% if event_column(event) == 1 %> - <%= image_tag "#{event_action_icon(event)}.svg", aria: { hidden: true }, size: 13, class: "colorize--black" %> - <% end %> - <%= event_action_sentence(event) %> - - <%= bubble.bucket.name %> + + <% if event.action == "commented" && !strip_tags(event&.comment&.body_html).blank? %> + + <%= strip_tags(event.comment.body_html).truncate(200) -%> + + <% end %> + + <%= bubble.bucket.name %>
<% end %> diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index 66833d506..5fa3f9bf4 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -12,7 +12,7 @@ class EventsControllerTest < ActionDispatch::IntegrationTest get events_url assert_select "div.event__wrapper[style='grid-area: 17/1']" do - assert_select "strong", text: "Layout is broken" + assert_select "strong", text: "David assigned JZ to Layout is broken" end end @@ -22,7 +22,7 @@ class EventsControllerTest < ActionDispatch::IntegrationTest get events_url assert_select "div.event__wrapper[style='grid-area: 22/1']" do - assert_select "strong", text: "Layout is broken" + assert_select "strong", text: "David assigned JZ to Layout is broken" end end end