From aa9d7664efdd3489643af325abba78af707bda4b Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Fri, 26 Sep 2025 11:14:02 +0200 Subject: [PATCH] Move cards to different columns from the perma --- app/controllers/cards/not_nows_controller.rb | 8 ++++++++ app/controllers/cards/triages_controller.rb | 15 +++++++++++++++ .../collections/columns/streams_controller.rb | 2 +- app/controllers/collections_controller.rb | 2 +- app/helpers/columns_helper.rb | 11 +++++++++++ app/models/card/postponable.rb | 2 +- app/models/card/triageable.rb | 15 ++++++++++++--- app/views/cards/_container.html.erb | 2 +- app/views/cards/show.html.erb | 2 +- app/views/cards/triage/_columns.html.erb | 14 ++++++++++++++ config/routes.rb | 14 ++++++++++++++ 11 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 app/controllers/cards/not_nows_controller.rb create mode 100644 app/controllers/cards/triages_controller.rb create mode 100644 app/helpers/columns_helper.rb create mode 100644 app/views/cards/triage/_columns.html.erb diff --git a/app/controllers/cards/not_nows_controller.rb b/app/controllers/cards/not_nows_controller.rb new file mode 100644 index 000000000..c0a916041 --- /dev/null +++ b/app/controllers/cards/not_nows_controller.rb @@ -0,0 +1,8 @@ +class Cards::NotNowsController < ApplicationController + include CardScoped + + def create + @card.postpone + render_card_replacement + end +end \ No newline at end of file diff --git a/app/controllers/cards/triages_controller.rb b/app/controllers/cards/triages_controller.rb new file mode 100644 index 000000000..3cb749b3b --- /dev/null +++ b/app/controllers/cards/triages_controller.rb @@ -0,0 +1,15 @@ +class Cards::TriagesController < ApplicationController + include CardScoped + + def create + column = @card.collection.columns.find(params[:column_id]) + @card.triage_to(column) + + render_card_replacement + end + + def destroy + @card.send_back_to_triage + render_card_replacement + end +end diff --git a/app/controllers/collections/columns/streams_controller.rb b/app/controllers/collections/columns/streams_controller.rb index e5b9dbb6b..72ab32b13 100644 --- a/app/controllers/collections/columns/streams_controller.rb +++ b/app/controllers/collections/columns/streams_controller.rb @@ -2,6 +2,6 @@ class Collections::Columns::StreamsController < ApplicationController include CollectionScoped def show - set_page_and_extract_portion_from @collection.cards.untriaged.reverse_chronologically + set_page_and_extract_portion_from @collection.cards.awaiting_triage.reverse_chronologically end end diff --git a/app/controllers/collections_controller.rb b/app/controllers/collections_controller.rb index 60d358857..c14ee2e25 100644 --- a/app/controllers/collections_controller.rb +++ b/app/controllers/collections_controller.rb @@ -8,7 +8,7 @@ class CollectionsController < ApplicationController end def show - set_page_and_extract_portion_from @collection.cards.untriaged.reverse_chronologically + set_page_and_extract_portion_from @collection.cards.awaiting_triage.reverse_chronologically end def create diff --git a/app/helpers/columns_helper.rb b/app/helpers/columns_helper.rb new file mode 100644 index 000000000..bc69ace13 --- /dev/null +++ b/app/helpers/columns_helper.rb @@ -0,0 +1,11 @@ +module ColumnsHelper + def button_to_set_column(card, column) + button_to \ + tag.span(column.name, class: "overflow-ellipsis"), + card_triage_path(card, column_id: column), + method: :post, + class: [ "btn justify-start workflow-stage txt-uppercase", { "workflow-stage--current": column == card.column } ], + form_class: "flex align-center gap-half", + data: { turbo_frame: "_top" } + end +end diff --git a/app/models/card/postponable.rb b/app/models/card/postponable.rb index 6877a06f7..9ed1c9e46 100644 --- a/app/models/card/postponable.rb +++ b/app/models/card/postponable.rb @@ -19,7 +19,7 @@ module Card::Postponable def postpone unless postponed? transaction do - update!(column: nil) + send_back_to_triage reopen activity_spike&.destroy create_not_now! diff --git a/app/models/card/triageable.rb b/app/models/card/triageable.rb index 694845298..5662f5b5f 100644 --- a/app/models/card/triageable.rb +++ b/app/models/card/triageable.rb @@ -4,7 +4,7 @@ module Card::Triageable included do belongs_to :column, optional: true - scope :untriaged, -> { active.where.missing(:column) } + scope :awaiting_triage, -> { active.where.missing(:column) } scope :triaged, -> { active.joins(:column) } end @@ -12,7 +12,16 @@ module Card::Triageable active? && column.present? end - def untriaged? - !triaged? + def awaiting_triage? + active? && !triaged? + end + + def triage_to(column) + raise "The column must belong to the card collection" unless collection == column.collection + update! column: column + end + + def send_back_to_triage + update!(column: nil) end end diff --git a/app/views/cards/_container.html.erb b/app/views/cards/_container.html.erb index abd4c3c9a..057282d85 100644 --- a/app/views/cards/_container.html.erb +++ b/app/views/cards/_container.html.erb @@ -20,7 +20,7 @@ <%= render "cards/container/title", card: card %> <%= render "cards/display/perma/steps", card: card %> - <%= render "cards/stagings/stages", card: card if card.open? %> + <%= render "cards/triage/columns", card: card if card.open? %>