From 07ec3f49fdbf2d532813da31a7ecf497304737a2 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 7 Nov 2025 17:39:43 +0100 Subject: [PATCH] Save three requests per card view Trade off is potentially a tiny delay on opening when reassigning, but that seems worth it. --- app/javascript/controllers/dialog_controller.js | 5 +++++ app/views/cards/display/perma/_assignees.html.erb | 2 +- app/views/cards/display/perma/_board.html.erb | 2 +- app/views/cards/display/perma/_tags.html.erb | 12 ++++++++---- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/javascript/controllers/dialog_controller.js b/app/javascript/controllers/dialog_controller.js index 16204bd28..4fbf25dc5 100644 --- a/app/javascript/controllers/dialog_controller.js +++ b/app/javascript/controllers/dialog_controller.js @@ -24,6 +24,7 @@ export default class extends Controller { limitHeightToViewport(this.dialogTarget, true) + this.#loadLazyFrames() this.dialogTarget.setAttribute("aria-hidden", "false") this.dispatch("show") } @@ -54,4 +55,8 @@ export default class extends Controller { event.stopPropagation() } } + + #loadLazyFrames() { + Array.from(this.dialogTarget.querySelectorAll("turbo-frame")).forEach(frame => { frame.loading = "eager" }) + } } diff --git a/app/views/cards/display/perma/_assignees.html.erb b/app/views/cards/display/perma/_assignees.html.erb index a115f39b2..1292573d4 100644 --- a/app/views/cards/display/perma/_assignees.html.erb +++ b/app/views/cards/display/perma/_assignees.html.erb @@ -1,3 +1,3 @@ <%= render "cards/display/common/assignees", card: card do %> - <%= turbo_frame_tag card, :assignment, src: new_card_assignment_path(card), refresh: "morph" %> + <%= turbo_frame_tag card, :assignment, src: new_card_assignment_path(card), loading: :lazy, refresh: "morph" %> <% end %> diff --git a/app/views/cards/display/perma/_board.html.erb b/app/views/cards/display/perma/_board.html.erb index f816683b9..e78a33579 100644 --- a/app/views/cards/display/perma/_board.html.erb +++ b/app/views/cards/display/perma/_board.html.erb @@ -6,7 +6,7 @@ - <%= turbo_frame_tag "board_picker", src: edit_card_board_path(card), target: "_top", refresh: "morph" %> + <%= turbo_frame_tag "board_picker", src: edit_card_board_path(card), target: "_top", loading: :lazy, refresh: "morph" %> <% end %> diff --git a/app/views/cards/display/perma/_tags.html.erb b/app/views/cards/display/perma/_tags.html.erb index 015f7990a..b618ada12 100644 --- a/app/views/cards/display/perma/_tags.html.erb +++ b/app/views/cards/display/perma/_tags.html.erb @@ -1,12 +1,16 @@
-
> - - - <%= turbo_frame_tag card, :tagging, src: new_card_tagging_path(card), refresh: "morph" %> + + <%= turbo_frame_tag card, :tagging, src: new_card_tagging_path(card), loading: :lazy, refresh: :morph %>