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
|
||||
@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
|
||||
|
||||
@@ -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) %>
|
||||
|
||||
@@ -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}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user