diff --git a/app/controllers/cards_controller.rb b/app/controllers/cards_controller.rb index e5a8212d3..054b1ff71 100644 --- a/app/controllers/cards_controller.rb +++ b/app/controllers/cards_controller.rb @@ -15,6 +15,8 @@ class CardsController < ApplicationController @on_deck = page_and_filter_for @filter.with(engagement_status: "on_deck"), per_page: PAGE_SIZE @doing = page_and_filter_for @filter.with(engagement_status: "doing"), per_page: PAGE_SIZE @closed = page_and_filter_for_closed_cards + + fresh_when etag: [ @considering, @on_deck, @doing, @closed ].collect { it.page.records } end def create diff --git a/app/models/filter.rb b/app/models/filter.rb index 9bb569bb9..82c2e9307 100644 --- a/app/models/filter.rb +++ b/app/models/filter.rb @@ -61,8 +61,12 @@ class Filter < ApplicationRecord ActiveSupport::Cache.expand_cache_key [ params_digest ], "filter" end + def only_closed? + indexed_by.closed? || closure_window || closers.present? + end + private def include_closed_cards? - indexed_by.closed? || closure_window || closers.present? || card_ids.present? + only_closed? || card_ids.present? end end diff --git a/app/models/filter/params.rb b/app/models/filter/params.rb index b1a2f7ecd..b1a917bd4 100644 --- a/app/models/filter/params.rb +++ b/app/models/filter/params.rb @@ -45,7 +45,7 @@ module Filter::Params # +as_params+ uses `resource#ids` instead of `#resource_ids` # because the latter won't work on unpersisted filters. def as_params - {}.tap do |params| + @as_params ||= {}.tap do |params| params[:indexed_by] = indexed_by params[:sorted_by] = sorted_by params[:engagement_status] = engagement_status diff --git a/app/models/user/filtering.rb b/app/models/user/filtering.rb index bf8def116..b355876a8 100644 --- a/app/models/user/filtering.rb +++ b/app/models/user/filtering.rb @@ -4,6 +4,7 @@ class User::Filtering attr_reader :user, :filter, :expanded delegate :as_params, :any?, to: :filter + delegate :only_closed?, to: :filter def initialize(user, filter, expanded: false) @user, @filter, @expanded = user, filter, expanded diff --git a/app/views/cards/index.html.erb b/app/views/cards/index.html.erb index c343623fa..a3529fe4f 100644 --- a/app/views/cards/index.html.erb +++ b/app/views/cards/index.html.erb @@ -40,15 +40,6 @@ dragover->drag-and-drop#dragOver drop->drag-and-drop#drop dragend->drag-and-drop#dragEnd" } do %> - -
- <% unless @filter.closers.any? %> - <%= render "cards/index/engagement/on_deck", **@on_deck.to_h %> - <%= render "cards/index/engagement/considering", **@considering.to_h %> - <%= render "cards/index/engagement/doing", **@doing.to_h %> - <% end %> -
- - <%= render "cards/index/engagement/closed", **@closed.to_h %> + <%= render "cards/index/columns", user_filtering: @user_filtering, on_deck: @on_deck, considering: @considering, doing: @doing, closed: @closed %> <% end %> diff --git a/app/views/cards/index/_columns.html.erb b/app/views/cards/index/_columns.html.erb new file mode 100644 index 000000000..ad20b769a --- /dev/null +++ b/app/views/cards/index/_columns.html.erb @@ -0,0 +1,11 @@ +<% cache [ on_deck, considering, doing, closed ].collect { it.page.records } do %> +
+ <% unless user_filtering.only_closed? %> + <%= render "cards/index/engagement/on_deck", user_filtering: user_filtering, **on_deck.to_h %> + <%= render "cards/index/engagement/considering", user_filtering: user_filtering, **considering.to_h %> + <%= render "cards/index/engagement/doing", user_filtering: user_filtering, **doing.to_h %> + <% end %> + + <%= render "cards/index/engagement/closed", user_filtering: user_filtering, **closed.to_h %> +
+<% end %> diff --git a/app/views/cards/index/engagement/_closed.html.erb b/app/views/cards/index/engagement/_closed.html.erb index bd13d855b..364da8279 100644 --- a/app/views/cards/index/engagement/_closed.html.erb +++ b/app/views/cards/index/engagement/_closed.html.erb @@ -10,6 +10,6 @@ <% end %> <% else %> -

<%= @user_filtering.any? ? "No matches" : "Nothing here" %>

+

<%= user_filtering.any? ? "No matches" : "Nothing here" %>

<% end %> diff --git a/app/views/cards/index/engagement/_considering.html.erb b/app/views/cards/index/engagement/_considering.html.erb index edc18a039..44a80c0e5 100644 --- a/app/views/cards/index/engagement/_considering.html.erb +++ b/app/views/cards/index/engagement/_considering.html.erb @@ -5,7 +5,7 @@ data-related-element-group-value="card-columns" data-action="mouseover->related-element#highlight mouseout->related-element#unhighlight">
- <%= render "cards/index/add_card_button", user_filtering: @user_filtering %> + <%= render "cards/index/add_card_button", user_filtering: user_filtering %> <% if page.used? %> <%= render partial: "cards/display/preview", collection: page.records, as: :card, locals: { draggable: true }, cached: true %> diff --git a/app/views/cards/index/engagement/_doing.html.erb b/app/views/cards/index/engagement/_doing.html.erb index f17e26190..7d69e9322 100644 --- a/app/views/cards/index/engagement/_doing.html.erb +++ b/app/views/cards/index/engagement/_doing.html.erb @@ -21,6 +21,6 @@ <% end %> <% else %> -

<%= @user_filtering.any? ? "No matches" : "Nothing here" %>

+

<%= user_filtering.any? ? "No matches" : "Nothing here" %>

<% end %> diff --git a/app/views/cards/index/engagement/_on_deck.html.erb b/app/views/cards/index/engagement/_on_deck.html.erb index 95ed1e800..bac0375f8 100644 --- a/app/views/cards/index/engagement/_on_deck.html.erb +++ b/app/views/cards/index/engagement/_on_deck.html.erb @@ -15,6 +15,6 @@ <% end %> <% else %> -

<%= filter.any? ? "No matches" : "Nothing here" %>

+

<%= user_filtering.any? ? "No matches" : "Nothing here" %>

<% end %> diff --git a/app/views/filters/_settings.html.erb b/app/views/filters/_settings.html.erb index 1ec499420..6ddeb2476 100644 --- a/app/views/filters/_settings.html.erb +++ b/app/views/filters/_settings.html.erb @@ -1,17 +1,19 @@ - +<% end %>