diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 13dba2478..d91effe87 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -26,100 +26,106 @@ module EventsHelper
end
private
-
- def event_column_title(base_title, count, day)
- date_tag = local_datetime_tag day, style: :agoorweekday
- if count > 0
- "#{h base_title} #{date_tag} (#{h count})".html_safe
- else
- "#{h base_title} #{date_tag}".html_safe
- end
- end
-
- def event_column(event)
- case event.action
- when "card_closed"
- 3
- when "card_published", "card_reopened"
- 1
- else
- 2
- end
- end
-
- def event_cluster_tag(hour, col, &)
- row = 25 - hour
- tag.div class: "events__time-block", style: "grid-area: #{row}/#{col}", &
- end
-
- def event_action_sentence(event)
- if event.action.comment_created?
- comment_event_action_sentence(event)
- else
- card_event_action_sentence(event)
- end
- end
-
- def comment_event_action_sentence(event)
- "#{h event_creator_name(event) } commented on \"#{h event.eventable.card.title }\"".html_safe
- end
-
- def event_creator_name(event)
- event.creator == Current.user ? "You" : event.creator.name
- end
-
- def card_event_action_sentence(event)
- card = event.eventable
- title = card.title
-
- case event.action
- when "card_assigned"
- if event.assignees.include?(Current.user)
- "#{h event_creator_name(event) } will handle \"#{h title }\"".html_safe
+ def event_column_title(base_title, count, day)
+ date_tag = local_datetime_tag day, style: :agoorweekday
+ if count > 0
+ "#{h base_title} #{date_tag} (#{h count})".html_safe
else
- "#{h event_creator_name(event) } assigned #{h event.assignees.pluck(:name).to_sentence } to \"#{h title }\"".html_safe
+ "#{h base_title} #{date_tag}".html_safe
end
- when "card_unassigned"
- "#{h event_creator_name(event) } unassigned #{ h(event.assignees.include?(Current.user) ? "yourself" : event.assignees.pluck(:name).to_sentence) } from \"#{h title }\"".html_safe
- when "card_published"
- "#{h event_creator_name(event) } added \"#{h title }\"".html_safe
- when "card_closed"
- "#{h event_creator_name(event) } moved \"#{h title }\" to done".html_safe
- when "card_reopened"
- "#{h event_creator_name(event) } reopened \"#{h title }\"".html_safe
- when "card_postponed"
- "#{h event_creator_name(event) } moved \"#{h title }\" to “Not Now”".html_safe
- when "card_auto_postponed"
- "\"#{h title }\" was closed as “Not Now” due to inactivity".html_safe
- when "card_resumed"
- "#{h event_creator_name(event) } resumed \"#{h title }\"".html_safe
- when "card_due_date_added"
- "#{h event_creator_name(event)} set the date to #{h event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on \"#{h title }\"".html_safe
- when "card_due_date_changed"
- "#{h event_creator_name(event)} changed the date to #{h event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on \"#{h title }\"".html_safe
- when "card_due_date_removed"
- "#{h event_creator_name(event)} removed the date on \"#{h title }\"".html_safe
- when "card_title_changed"
- "#{h event_creator_name(event)} renamed \"#{h title }\" (was: '#{h event.particulars.dig('particulars', 'old_title')})'".html_safe
- when "card_collection_changed"
- "#{h event_creator_name(event)} moved \"#{h title }\" to '#{h event.particulars.dig('particulars', 'new_collection')}'".html_safe
end
- end
- def event_action_icon(event)
- case event.action
- when "card_assigned"
- "assigned"
- when "card_unassigned"
- "minus"
- when "comment_created"
- "comment"
- when "card_title_changed"
- "rename"
- when "card_collection_changed"
- "move"
- else
- "person"
+ def event_column(event)
+ case event.action
+ when "card_closed"
+ 3
+ when "card_published", "card_reopened"
+ 1
+ else
+ 2
+ end
+ end
+
+ def event_cluster_tag(hour, col, &)
+ row = 25 - hour
+ tag.div class: "events__time-block", style: "grid-area: #{row}/#{col}", &
+ end
+
+ def event_action_sentence(event)
+ if event.action.comment_created?
+ comment_event_action_sentence(event)
+ else
+ card_event_action_sentence(event)
+ end
+ end
+
+ def comment_event_action_sentence(event)
+ "#{event_creator_name(event)} commented on #{event_card_title(event.eventable.card)}".html_safe
+ end
+
+ def event_creator_name(event)
+ h(event.creator == Current.user ? "You" : event.creator.name)
+ end
+
+ def card_event_action_sentence(event)
+ card = event.eventable
+
+ case event.action
+ when "card_assigned"
+ if event.assignees.include?(Current.user)
+ "#{event_creator_name(event)} will handle #{event_card_title(card)}"
+ else
+ "#{event_creator_name(event)} assigned #{h event.assignees.pluck(:name).to_sentence} to #{event_card_title(card)}"
+ end
+ when "card_unassigned"
+ "#{event_creator_name(event)} unassigned #{h(event.assignees.include?(Current.user) ? "yourself" : event.assignees.pluck(:name).to_sentence)} from #{event_card_title(card)}"
+ when "card_published"
+ "#{event_creator_name(event)} added #{event_card_title(card)}"
+ when "card_closed"
+ "#{event_creator_name(event)} moved #{event_card_title(card)} to done"
+ when "card_reopened"
+ "#{event_creator_name(event)} reopened #{event_card_title(card)}"
+ when "card_postponed"
+ "#{event_creator_name(event)} moved #{event_card_title(card)} to 'Not Now'"
+ when "card_auto_postponed"
+ "#{event_card_title(card)} was closed as 'Not Now' due to inactivity"
+ when "card_resumed"
+ "#{event_creator_name(event)} resumed #{event_card_title(card)}"
+ when "card_due_date_added"
+ "#{event_creator_name(event)} set the date to #{h event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{event_card_title(card)}"
+ when "card_due_date_changed"
+ "#{event_creator_name(event)} changed the date to #{h event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{event_card_title(card)}"
+ when "card_due_date_removed"
+ "#{event_creator_name(event)} removed the date on #{event_card_title(card)}"
+ when "card_title_changed"
+ "#{event_creator_name(event)} renamed #{event_card_title(card)} (was: '#{h event.particulars.dig('particulars', 'old_title')}')"
+ when "card_collection_changed"
+ "#{event_creator_name(event)} moved #{event_card_title(card)} to '#{h event.particulars.dig('particulars', 'new_collection')}'"
+ when "card_triaged"
+ "#{event_creator_name(event)} moved #{event_card_title(card)} to '#{h event.particulars.dig('particulars', 'column')}'"
+ when "card_sent_back_to_triage"
+ "#{event_creator_name(event)} moved #{event_card_title(card)} back to the stream"
+ end.html_safe
+ end
+
+ def event_card_title(card)
+ tag.span card.title, style: "color: var(--card-color)"
+ end
+
+ def event_action_icon(event)
+ case event.action
+ when "card_assigned"
+ "assigned"
+ when "card_unassigned"
+ "minus"
+ when "comment_created"
+ "comment"
+ when "card_title_changed"
+ "rename"
+ when "card_collection_changed"
+ "move"
+ else
+ "person"
+ end
end
- end
end
diff --git a/app/models/card/triageable.rb b/app/models/card/triageable.rb
index e310e1bce..1e19bed9a 100644
--- a/app/models/card/triageable.rb
+++ b/app/models/card/triageable.rb
@@ -22,6 +22,7 @@ module Card::Triageable
transaction do
resume
update! column: column
+ track_event "triaged", particulars: { column: column.name }
end
end
@@ -29,6 +30,7 @@ module Card::Triageable
transaction do
resume
update! column: nil
+ track_event "sent_back_to_triage"
end
end
end
diff --git a/app/models/user/day_timeline.rb b/app/models/user/day_timeline.rb
index 1745cb82b..104395edf 100644
--- a/app/models/user/day_timeline.rb
+++ b/app/models/user/day_timeline.rb
@@ -44,6 +44,9 @@ class User::DayTimeline
card_due_date_changed
card_due_date_removed
card_collection_changed
+ card_postponed
+ card_triaged
+ card_sent_back_to_triage
comment_created
]
diff --git a/test/models/card/triageable_test.rb b/test/models/card/triageable_test.rb
index e096e1d0c..50836e821 100644
--- a/test/models/card/triageable_test.rb
+++ b/test/models/card/triageable_test.rb
@@ -24,7 +24,9 @@ class Card::TriageableTest < ActiveSupport::TestCase
assert_nil card.column
assert card.awaiting_triage?
- card.triage_into(column)
+ assert_difference -> { card.reload.events.where(action: "card_triaged").count }, +1 do
+ card.triage_into(column)
+ end
assert_equal column, card.reload.column
assert card.triaged?
@@ -47,7 +49,9 @@ class Card::TriageableTest < ActiveSupport::TestCase
card = cards(:logo)
assert card.triaged?
- card.send_back_to_triage
+ assert_difference -> { card.reload.events.where(action: "card_sent_back_to_triage").count }, +1 do
+ card.send_back_to_triage
+ end
assert card.reload.awaiting_triage?
end