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:
evazion
2022-08-28 20:18:16 -05:00
parent 6afdb921de
commit fa0d7990fb
3 changed files with 30 additions and 14 deletions

View File

@@ -18,35 +18,37 @@ class PostNavbarComponent < ApplicationComponent
def pools
@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
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 = 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|
[favgroup.id == favgroup_id ? 0 : 1, favgroup.name]
[favgroup == selected_favgroup ? 0 : 1, favgroup.name]
end
end
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
def pool_id
@pool_id ||= query.find_metatag(:pool, :ordpool)&.to_i
def selected_pool
value = query.find_metatag(:pool, :ordpool)
Pool.find_by_name(value) if value.present?
end
def favgroup_id
@favgroup_id ||= query.find_metatag(:favgroup, :ordfavgroup)&.to_i
def selected_favgroup
value = query.find_metatag(:favgroup, :ordfavgroup)
FavoriteGroup.find_by_name_or_id(value, current_user) if value.present?
end
def query
@query ||= PostQuery.new(search)
end
memoize :favgroups
memoize :favgroups, :selected_pool, :selected_favgroup
end

View File

@@ -8,7 +8,7 @@
<% end %>
<% pools.each do |pool| %>
<% selected = pool_id == pool.id %>
<% selected = selected_pool == pool %>
<% first_post_id = pool.post_ids.first %>
<% last_post_id = pool.post_ids.last %>
<% previous_post_id = pool.previous_post_id(post.id) %>
@@ -38,7 +38,7 @@
<% end %>
<% favgroups.each do |favgroup| %>
<% selected = favgroup_id == favgroup.id %>
<% selected = selected_favgroup == favgroup %>
<% first_post_id = favgroup.post_ids.first %>
<% last_post_id = favgroup.post_ids.last %>
<% previous_post_id = favgroup.previous_post_id(post.id) %>

View File

@@ -35,12 +35,19 @@ class PostNavbarComponentTest < ViewComponent::TestCase
assert_css(".pool-name", text: "Pool: #{@pool2.pretty_name}")
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}")
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
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
context "for a post with favgroups" do
@@ -58,13 +65,20 @@ class PostNavbarComponentTest < ViewComponent::TestCase
assert_css(".favgroup-name", text: "Favgroup: #{@favgroup2.pretty_name}")
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}")
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 "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
render_post_navbar(@post, current_user: create(:user), search: "favgroup:#{@favgroup1.id}")