Files
fizzy/app/models/cards/columns.rb
T
2025-09-18 12:47:54 +02:00

42 lines
1.1 KiB
Ruby

class Cards::Columns
attr_reader :user_filtering, :page_size
delegate :filter, to: :user_filtering
def initialize(user_filtering:, page_size:)
@user_filtering = user_filtering
@page_size = page_size
end
def considering
@considering ||= build_column(filter.with(engagement_status: "considering"))
end
def on_deck
@on_deck ||= build_column(filter.with(engagement_status: "on_deck"))
end
def doing
@doing ||= build_column(filter.with(engagement_status: "doing"))
end
def closed
@closed ||= if filter.indexed_by.stalled?
build_column(filter) { |cards| cards.recently_closed_first }
else
build_column(filter.with(indexed_by: "closed")) { |cards| cards.recently_closed_first }
end
end
def cache_key
ActiveSupport::Cache.expand_cache_key([ considering, on_deck, doing, closed, Workflow.all, user_filtering ])
end
private
def build_column(filter, &block)
cards = block ? yield(filter.cards) : filter.cards
Column.new(page: GearedPagination::Recordset.new(cards, per_page: page_size).page(1), filter: filter, user_filtering: user_filtering)
end
end