From ef3f175ede18007e0ef49f913c6a7258fff6c3ec Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 10 Jan 2025 15:57:30 +0100 Subject: [PATCH] (search) Don't clobber the search query URL with default values --- .../search/command/SearchParameters.java | 37 +++++++++++++------ .../command/commands/SearchCommand.java | 7 +--- .../resources/jte/serp/part/searchform.jte | 9 +++-- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/command/SearchParameters.java b/code/services-application/search-service/java/nu/marginalia/search/command/SearchParameters.java index d507c44c..311e0d0c 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/command/SearchParameters.java +++ b/code/services-application/search-service/java/nu/marginalia/search/command/SearchParameters.java @@ -84,18 +84,33 @@ public record SearchParameters(WebsiteUrl url, } public String renderUrl() { - String path = String.format("/search?query=%s&profile=%s&js=%s&adtech=%s&recent=%s&searchTitle=%s&newfilter=%s&page=%d", - URLEncoder.encode(query, StandardCharsets.UTF_8), - URLEncoder.encode(profile.filterId, StandardCharsets.UTF_8), - URLEncoder.encode(js.value, StandardCharsets.UTF_8), - URLEncoder.encode(adtech.value, StandardCharsets.UTF_8), - URLEncoder.encode(recent.value, StandardCharsets.UTF_8), - URLEncoder.encode(searchTitle.value, StandardCharsets.UTF_8), - Boolean.valueOf(newFilter).toString(), - page - ); - return path; + StringBuilder pathBuilder = new StringBuilder("/search?"); + pathBuilder.append("query=").append(URLEncoder.encode(query, StandardCharsets.UTF_8)); + + if (profile != SearchProfile.NO_FILTER) { + pathBuilder.append("&profile=").append(URLEncoder.encode(profile.filterId, StandardCharsets.UTF_8)); + } + if (js != SearchJsParameter.DEFAULT) { + pathBuilder.append("&js=").append(URLEncoder.encode(js.value, StandardCharsets.UTF_8)); + } + if (adtech != SearchAdtechParameter.DEFAULT) { + pathBuilder.append("&adtech=").append(URLEncoder.encode(adtech.value, StandardCharsets.UTF_8)); + } + if (recent != SearchRecentParameter.DEFAULT) { + pathBuilder.append("&recent=").append(URLEncoder.encode(recent.value, StandardCharsets.UTF_8)); + } + if (searchTitle != SearchTitleParameter.DEFAULT) { + pathBuilder.append("&searchTitle=").append(URLEncoder.encode(searchTitle.value, StandardCharsets.UTF_8)); + } + if (page != 1) { + pathBuilder.append("&page=").append(page); + } + if (newFilter) { + pathBuilder.append("&newfilter=").append(Boolean.valueOf(newFilter).toString()); + } + + return pathBuilder.toString(); } public RpcTemporalBias.Bias temporalBias() { diff --git a/code/services-application/search-service/java/nu/marginalia/search/command/commands/SearchCommand.java b/code/services-application/search-service/java/nu/marginalia/search/command/commands/SearchCommand.java index 419bf394..da023e62 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/command/commands/SearchCommand.java +++ b/code/services-application/search-service/java/nu/marginalia/search/command/commands/SearchCommand.java @@ -3,27 +3,22 @@ package nu.marginalia.search.command.commands; import com.google.inject.Inject; import io.jooby.MapModelAndView; import io.jooby.ModelAndView; -import nu.marginalia.search.JteRenderer; import nu.marginalia.search.SearchOperator; import nu.marginalia.search.command.SearchCommandInterface; import nu.marginalia.search.command.SearchParameters; import nu.marginalia.search.model.DecoratedSearchResults; import nu.marginalia.search.model.NavbarModel; -import java.io.IOException; import java.util.Map; import java.util.Optional; public class SearchCommand implements SearchCommandInterface { private final SearchOperator searchOperator; - private final JteRenderer jteRenderer; @Inject - public SearchCommand(SearchOperator searchOperator, - JteRenderer jteRenderer) throws IOException { + public SearchCommand(SearchOperator searchOperator){ this.searchOperator = searchOperator; - this.jteRenderer = jteRenderer; } @Override diff --git a/code/services-application/search-service/resources/jte/serp/part/searchform.jte b/code/services-application/search-service/resources/jte/serp/part/searchform.jte index 65dd849e..cf4e0ce0 100644 --- a/code/services-application/search-service/resources/jte/serp/part/searchform.jte +++ b/code/services-application/search-service/resources/jte/serp/part/searchform.jte @@ -36,10 +36,11 @@ + @if (filters.showRecentOption.isSet()) @endif + @if (filters.reduceAdtechOption.isSet()) @endif + @if (filters.searchTitleOption.isSet()) @endif + @if (filters.showRecentOption.isSet()) @endif - - - - +