D&D to now now working

This commit is contained in:
Jorge Manrubia
2025-09-26 12:33:22 +02:00
parent 67d57cb02a
commit f6ad04a9e9
7 changed files with 27 additions and 76 deletions
-64
View File
@@ -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
@@ -0,0 +1,6 @@
class Columns::Cards::Drops::ClosuresController < ApplicationController
include CardScoped
def create
end
end
@@ -0,0 +1,6 @@
class Columns::Cards::Drops::ColumnsController < ApplicationController
include CardScoped
def create
end
end
@@ -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
@@ -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" } })
}
}
-1
View File
@@ -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
+3 -2
View File
@@ -1,7 +1,8 @@
<section id="on-deck-cards" class="cards cards--on-deck is-collapsed" style="--card-color: var(--color-card-complete);"
<section id="now-now-cards" class="cards cards--on-deck is-collapsed" style="--card-color: var(--color-card-complete);"
data-collapsible-columns-target="column"
data-drag-and-drop-target="container"
data-drop-target="on_deck">
data-drag-and-drop-url="<%= columns_card_drops_not_now_path("__id__") %>"
>
<%= cards_expander "Not Now", collection.cards.postponed.count %>