posts: fix selected pool not being highlighted when doing pool:<name> search.
Fix the pool name not being bolded in the pool navbar when doing a pool:<name> search. Previously the selected pool was only bolded when doing a pool:<id> search.
This commit is contained in:
@@ -18,35 +18,37 @@ class PostNavbarComponent < ApplicationComponent
|
|||||||
|
|
||||||
def pools
|
def pools
|
||||||
@pools ||= post.pools.undeleted.sort_by do |pool|
|
@pools ||= post.pools.undeleted.sort_by do |pool|
|
||||||
[pool.id == pool_id ? 0 : 1, pool.is_series? ? 0 : 1, pool.name]
|
[pool == selected_pool ? 0 : 1, pool.is_series? ? 0 : 1, pool.name]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def favgroups
|
def favgroups
|
||||||
return [] if current_user.is_anonymous? && favgroup_id.nil?
|
return [] if current_user.is_anonymous? && selected_favgroup.nil?
|
||||||
|
|
||||||
favgroups = FavoriteGroup.visible(current_user).for_post(post.id)
|
favgroups = FavoriteGroup.visible(current_user).for_post(post.id)
|
||||||
favgroups = favgroups.where(creator: current_user).or(favgroups.where(id: favgroup_id))
|
favgroups = favgroups.where(creator: current_user).or(favgroups.where(id: selected_favgroup))
|
||||||
favgroups.sort_by do |favgroup|
|
favgroups.sort_by do |favgroup|
|
||||||
[favgroup.id == favgroup_id ? 0 : 1, favgroup.name]
|
[favgroup == selected_favgroup ? 0 : 1, favgroup.name]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def has_search_navbar?
|
def has_search_navbar?
|
||||||
!query.has_metatag?(:order, :ordfav, :ordpool) && pool_id.blank? && favgroup_id.blank?
|
!query.has_metatag?(:order, :ordfav, :ordpool) && selected_pool.blank? && selected_favgroup.blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
def pool_id
|
def selected_pool
|
||||||
@pool_id ||= query.find_metatag(:pool, :ordpool)&.to_i
|
value = query.find_metatag(:pool, :ordpool)
|
||||||
|
Pool.find_by_name(value) if value.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def favgroup_id
|
def selected_favgroup
|
||||||
@favgroup_id ||= query.find_metatag(:favgroup, :ordfavgroup)&.to_i
|
value = query.find_metatag(:favgroup, :ordfavgroup)
|
||||||
|
FavoriteGroup.find_by_name_or_id(value, current_user) if value.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def query
|
def query
|
||||||
@query ||= PostQuery.new(search)
|
@query ||= PostQuery.new(search)
|
||||||
end
|
end
|
||||||
|
|
||||||
memoize :favgroups
|
memoize :favgroups, :selected_pool, :selected_favgroup
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% pools.each do |pool| %>
|
<% pools.each do |pool| %>
|
||||||
<% selected = pool_id == pool.id %>
|
<% selected = selected_pool == pool %>
|
||||||
<% first_post_id = pool.post_ids.first %>
|
<% first_post_id = pool.post_ids.first %>
|
||||||
<% last_post_id = pool.post_ids.last %>
|
<% last_post_id = pool.post_ids.last %>
|
||||||
<% previous_post_id = pool.previous_post_id(post.id) %>
|
<% previous_post_id = pool.previous_post_id(post.id) %>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% favgroups.each do |favgroup| %>
|
<% favgroups.each do |favgroup| %>
|
||||||
<% selected = favgroup_id == favgroup.id %>
|
<% selected = selected_favgroup == favgroup %>
|
||||||
<% first_post_id = favgroup.post_ids.first %>
|
<% first_post_id = favgroup.post_ids.first %>
|
||||||
<% last_post_id = favgroup.post_ids.last %>
|
<% last_post_id = favgroup.post_ids.last %>
|
||||||
<% previous_post_id = favgroup.previous_post_id(post.id) %>
|
<% previous_post_id = favgroup.previous_post_id(post.id) %>
|
||||||
|
|||||||
@@ -35,12 +35,19 @@ class PostNavbarComponentTest < ViewComponent::TestCase
|
|||||||
assert_css(".pool-name", text: "Pool: #{@pool2.pretty_name}")
|
assert_css(".pool-name", text: "Pool: #{@pool2.pretty_name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
should "highlight the selected pool" do
|
should "highlight the selected pool when doing a pool:<id> search" do
|
||||||
render_post_navbar(@post, current_user: @user, search: "pool:#{@pool1.id}")
|
render_post_navbar(@post, current_user: @user, search: "pool:#{@pool1.id}")
|
||||||
|
|
||||||
assert_css(".pool-navbar[data-selected=true] .pool-name", text: "Pool: #{@pool1.pretty_name}")
|
assert_css(".pool-navbar[data-selected=true] .pool-name", text: "Pool: #{@pool1.pretty_name}")
|
||||||
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool2.pretty_name}")
|
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool2.pretty_name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "highlight the selected pool when doing a pool:<name> search" do
|
||||||
|
render_post_navbar(@post, current_user: @user, search: "pool:#{@pool1.name}")
|
||||||
|
|
||||||
|
assert_css(".pool-navbar[data-selected=true] .pool-name", text: "Pool: #{@pool1.pretty_name}")
|
||||||
|
assert_css(".pool-navbar[data-selected=false] .pool-name", text: "Pool: #{@pool2.pretty_name}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "for a post with favgroups" do
|
context "for a post with favgroups" do
|
||||||
@@ -58,13 +65,20 @@ class PostNavbarComponentTest < ViewComponent::TestCase
|
|||||||
assert_css(".favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
assert_css(".favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
should "highlight the selected favgroup" do
|
should "highlight the selected favgroup when doing a favgroup:<id> search" do
|
||||||
render_post_navbar(@post, current_user: @user, search: "favgroup:#{@favgroup1.id}")
|
render_post_navbar(@post, current_user: @user, search: "favgroup:#{@favgroup1.id}")
|
||||||
|
|
||||||
assert_css(".favgroup-navbar[data-selected=true] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
|
assert_css(".favgroup-navbar[data-selected=true] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
|
||||||
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "highlight the selected favgroup when doing a favgroup:<name> search" do
|
||||||
|
render_post_navbar(@post, current_user: @user, search: "favgroup:#{@favgroup1.name}")
|
||||||
|
|
||||||
|
assert_css(".favgroup-navbar[data-selected=true] .favgroup-name", text: "Favgroup: #{@favgroup1.pretty_name}")
|
||||||
|
assert_css(".favgroup-navbar[data-selected=false] .favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
|
||||||
|
end
|
||||||
|
|
||||||
should "show public favgroups that belong to another user when doing a favgroup:<id> search" do
|
should "show public favgroups that belong to another user when doing a favgroup:<id> search" do
|
||||||
render_post_navbar(@post, current_user: create(:user), search: "favgroup:#{@favgroup1.id}")
|
render_post_navbar(@post, current_user: create(:user), search: "favgroup:#{@favgroup1.id}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user