Merge pull request #1432 from basecamp/stream-changes
Improve the system to subscribe to page changes via turbo streams
This commit is contained in:
@@ -9,7 +9,7 @@ class CollectionsController < ApplicationController
|
||||
|
||||
def show
|
||||
if @filter.used?(ignore_collections: true)
|
||||
show_filtered_events
|
||||
show_filtered_cards
|
||||
else
|
||||
show_columns
|
||||
end
|
||||
@@ -45,7 +45,7 @@ class CollectionsController < ApplicationController
|
||||
@collection = Current.user.collections.find params[:id]
|
||||
end
|
||||
|
||||
def show_filtered_events
|
||||
def show_filtered_cards
|
||||
@filter.collection_ids = [ @collection.id ]
|
||||
set_page_and_extract_portion_from @filter.cards
|
||||
end
|
||||
|
||||
@@ -12,8 +12,4 @@ module CollectionsHelper
|
||||
icon_tag("settings") + tag.span("Settings for #{collection.name}", class: "for-screen-reader")
|
||||
end
|
||||
end
|
||||
|
||||
def referenced_collections_from(records)
|
||||
Current.user.collections.where id: records.pluck(:collection_id).uniq
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,8 +13,7 @@ export default class extends Controller {
|
||||
}
|
||||
|
||||
connect() {
|
||||
this.labelTarget.textContent = this.#selectedLabel
|
||||
this.#updateHiddenFields()
|
||||
this.refresh()
|
||||
}
|
||||
|
||||
change(event) {
|
||||
@@ -24,6 +23,10 @@ export default class extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
refresh() {
|
||||
this.labelTarget.textContent = this.#selectedLabel
|
||||
this.#updateHiddenFields()
|
||||
}
|
||||
|
||||
clear(event) {
|
||||
this.#deselectAll()
|
||||
|
||||
@@ -3,5 +3,6 @@ module Collection::Broadcastable
|
||||
|
||||
included do
|
||||
broadcasts_refreshes
|
||||
broadcasts_refreshes_to ->(_) { :all_collections }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
<% referenced_collections_from(records).each do |collection| %>
|
||||
<%= turbo_stream_from collection %>
|
||||
<% if filter.collections.any? %>
|
||||
<% filter.collections.each do |collection| %>
|
||||
<%= turbo_stream_from collection %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= turbo_stream_from :all_collections %>
|
||||
<% end %>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = @user_filtering.selected_collections_label %>
|
||||
<% turbo_exempts_page_from_cache %>
|
||||
|
||||
<%= render "cards/broadcasts", records: @page.records %>
|
||||
<%= render "cards/broadcasts", filter: @filter %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<h1 class="header__title divider divider--fade full-width">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Home" %>
|
||||
<% @header_class = "header--events" %>
|
||||
|
||||
<%= render "cards/broadcasts", records: @day_timeline.events %>
|
||||
<%= render "cards/broadcasts", filter: @filter %>
|
||||
|
||||
<% content_for :header do %>
|
||||
<%= render "events/index/add_card_button", user_filtering: @user_filtering %>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<%= tag.div class: "flex-inline position-relative quick-filter",
|
||||
data: {
|
||||
controller: "dialog multi-selection-combobox",
|
||||
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside",
|
||||
action: "keydown.esc->dialog#close click@document->dialog#closeOnClickOutside turbo:morph@window->multi-selection-combobox#refresh",
|
||||
filter_show: user_filtering.show_collections?,
|
||||
multi_selection_combobox_no_selection_label_value: user_filtering.selected_collections_label } do %>
|
||||
<button type="button" class="btn borderless btn--plain events__filter-select" data-action="click->dialog#toggle:stop">
|
||||
|
||||
Reference in New Issue
Block a user