From f6ad04a9e9abb0405b8ea6fc5e407bd1eb229975 Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Fri, 26 Sep 2025 12:33:22 +0200 Subject: [PATCH] D&D to now now working --- app/controllers/cards/drops_controller.rb | 64 ------------------- .../cards/drops/closures_controller.rb | 6 ++ .../columns/cards/drops/columns_controller.rb | 6 ++ .../cards/drops/not_nows_controller.rb | 9 +++ .../controllers/drag_and_drop_controller.js | 12 +--- app/views/collections/show.html.erb | 1 - app/views/collections/show/_not_now.html.erb | 5 +- 7 files changed, 27 insertions(+), 76 deletions(-) delete mode 100644 app/controllers/cards/drops_controller.rb create mode 100644 app/controllers/columns/cards/drops/closures_controller.rb create mode 100644 app/controllers/columns/cards/drops/columns_controller.rb create mode 100644 app/controllers/columns/cards/drops/not_nows_controller.rb diff --git a/app/controllers/cards/drops_controller.rb b/app/controllers/cards/drops_controller.rb deleted file mode 100644 index af4f985f5..000000000 --- a/app/controllers/cards/drops_controller.rb +++ /dev/null @@ -1,64 +0,0 @@ -class Cards::DropsController < ApplicationController - include FilterScoped - - before_action :set_card, :set_drop_target - - def create - perform_drop_action - render_column_replacement - end - - private - VALID_DROP_TARGETS = %w[ considering on_deck doing closed ] - - def set_card - @card = Current.user.accessible_cards.find(params[:dropped_item_id]) - end - - def set_drop_target - if params[:drop_target].in?(VALID_DROP_TARGETS) - @drop_target = params[:drop_target].to_sym - else - head :bad_request - end - end - - def perform_drop_action - case @drop_target - when :considering - @card.reconsider - when :on_deck - @card.move_to_on_deck - when :doing - @card.engage - if params[:stage_id].present? - stage = Workflow::Stage.find(params[:stage_id]) - @card.change_stage_to(stage) - end - when :closed - @card.close - end - end - - def render_column_replacement - columns = Cards::OldColumns.new(user_filtering: @user_filtering, page_size: CardsController::PAGE_SIZE) - column = columns.public_send(@drop_target) - - if @drop_target == :doing && params[:stage_id].present? - # For stage-specific doing columns, we need to render the specific stage - stage = Workflow::Stage.find(params[:stage_id]) - render \ - turbo_stream: turbo_stream.replace("doing-cards-#{stage.id}", - method: :morph, - partial: "cards/index/engagement/doing", - locals: { column: column, stage: stage }) - else - # For other columns, use the standard approach - render \ - turbo_stream: turbo_stream.replace("#{@drop_target.to_s.gsub('_', '-')}-cards", - method: :morph, - partial: "cards/index/engagement/#{@drop_target}", - locals: { column: column }) - end - end -end diff --git a/app/controllers/columns/cards/drops/closures_controller.rb b/app/controllers/columns/cards/drops/closures_controller.rb new file mode 100644 index 000000000..e8dca094b --- /dev/null +++ b/app/controllers/columns/cards/drops/closures_controller.rb @@ -0,0 +1,6 @@ +class Columns::Cards::Drops::ClosuresController < ApplicationController + include CardScoped + + def create + end +end \ No newline at end of file diff --git a/app/controllers/columns/cards/drops/columns_controller.rb b/app/controllers/columns/cards/drops/columns_controller.rb new file mode 100644 index 000000000..80c01c0ec --- /dev/null +++ b/app/controllers/columns/cards/drops/columns_controller.rb @@ -0,0 +1,6 @@ +class Columns::Cards::Drops::ColumnsController < ApplicationController + include CardScoped + + def create + end +end \ No newline at end of file diff --git a/app/controllers/columns/cards/drops/not_nows_controller.rb b/app/controllers/columns/cards/drops/not_nows_controller.rb new file mode 100644 index 000000000..6948efe9f --- /dev/null +++ b/app/controllers/columns/cards/drops/not_nows_controller.rb @@ -0,0 +1,9 @@ +class Columns::Cards::Drops::NotNowsController < ApplicationController + include CardScoped + + def create + @card.postpone + + render turbo_stream: turbo_stream.replace("now-now-cards", partial: "collections/show/not_now", locals: { collection: @card.collection }) + end +end diff --git a/app/javascript/controllers/drag_and_drop_controller.js b/app/javascript/controllers/drag_and_drop_controller.js index 0c7c08e49..da37c79ef 100644 --- a/app/javascript/controllers/drag_and_drop_controller.js +++ b/app/javascript/controllers/drag_and_drop_controller.js @@ -4,7 +4,6 @@ import { nextFrame } from "helpers/timing_helpers" export default class extends Controller { static targets = [ "item", "container" ] - static values = { url: String } static classes = [ "draggedItem", "hoverContainer" ] // Actions @@ -72,14 +71,9 @@ export default class extends Controller { async #submitDropRequest(item, container) { const body = new FormData() const id = item.dataset.id - const containerTarget = container.dataset.dropTarget - const stageId = container.dataset.stageId + const url = container.dataset.dragAndDropUrl.replaceAll("__id__", id) + console.debug("Es", container.dataset.dragAndDropUrl, container.dataset.dragAndDropUrl.replaceAll("__id__", id)); - body.append("dropped_item_id", id) - body.append("drop_target", containerTarget) - if (stageId) { - body.append("stage_id", stageId) - } - return post(this.urlValue, { body, headers: { Accept: "text/vnd.turbo-stream.html" } }) + return post(url, { body, headers: { Accept: "text/vnd.turbo-stream.html" } }) } } diff --git a/app/views/collections/show.html.erb b/app/views/collections/show.html.erb index 0f60d814f..29e30b082 100644 --- a/app/views/collections/show.html.erb +++ b/app/views/collections/show.html.erb @@ -27,7 +27,6 @@ controller: "drag-and-drop", drag_and_drop_dragged_item_class: "drag-and-drop__dragged-item", drag_and_drop_hover_container_class: "drag-and-drop__hover-container", - drag_and_drop_url_value: cards_drops_path(**@filter.as_params), action: " dragstart->drag-and-drop#dragStart dragover->drag-and-drop#dragOver diff --git a/app/views/collections/show/_not_now.html.erb b/app/views/collections/show/_not_now.html.erb index 3b4e9f0b0..3a8e27657 100644 --- a/app/views/collections/show/_not_now.html.erb +++ b/app/views/collections/show/_not_now.html.erb @@ -1,7 +1,8 @@ -