From f050bf5c4c3b38abfcb20b427d84d638dafc3c58 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 14:00:17 +0100 Subject: [PATCH 001/177] (WIP) Initial semi-working transformation to new tailwind UI Still missing is a proper build, we're currently pulling in tailwind from a CDN, which is no bueno in prod. There's also a lot of polish remaining everywhere, dead links, etc. --- .gitignore | 1 + .../browse/model/BrowseResultSet.java | 4 + .../api/domains/model/DomainInformation.java | 17 ++ .../api/domains/model/SimilarDomain.java | 10 +- .../search-service/build.gradle | 1 + .../nu/marginalia/search/JteRenderer.java | 29 ++ .../nu/marginalia/search/SearchOperator.java | 46 ++-- .../search/SearchQueryParamFactory.java | 2 +- .../nu/marginalia/search/SearchService.java | 13 +- .../search/command/SearchParameters.java | 57 +++- .../command/commands/BrowseCommand.java | 62 ++--- .../command/commands/SearchCommand.java | 16 +- .../search/model/ClusteredUrlDetails.java | 48 ++++ .../search/model/DecoratedSearchResults.java | 24 +- .../search/model/GroupedUrlDetails.java | 35 +++ .../marginalia/search/model/NavbarModel.java | 85 ++++++ .../marginalia/search/model/ResultsPage.java | 4 + .../search/model/SearchErrorMessageModel.java | 6 + .../search/model/SearchFilters.java | 128 +++++++-- .../search/model/SearchProfile.java | 4 +- .../search/model/SimpleSearchResults.java | 13 + .../marginalia/search/model/UrlDetails.java | 65 +---- .../search/svc/SearchBrowseService.java | 39 ++- .../search/svc/SearchCrosstalkService.java | 7 +- .../search/svc/SearchErrorPageService.java | 57 ++-- .../search/svc/SearchFlagSiteService.java | 2 +- .../search/svc/SearchFrontPageService.java | 28 +- .../search/svc/SearchQueryService.java | 2 +- .../search/svc/SearchSiteInfoService.java | 181 ++++++------- .../search-service/resources/jte/.jteroot | 0 .../resources/jte/explore/main.jte | 58 ++++ .../resources/jte/part/footerLegal.jte | 36 +++ .../resources/jte/part/head.jte | 30 +++ .../resources/jte/part/navbar.jte | 33 +++ .../resources/jte/serp/error.jte | 48 ++++ .../resources/jte/serp/first.jte | 69 +++++ .../resources/jte/serp/main.jte | 91 +++++++ .../resources/jte/serp/part/footerHowto.jte | 91 +++++++ .../resources/jte/serp/part/matchogram.jte | 24 ++ .../resources/jte/serp/part/mobile-menu.jte | 50 ++++ .../resources/jte/serp/part/result.jte | 108 ++++++++ .../resources/jte/serp/part/searchform.jte | 41 +++ .../resources/jte/serp/part/sidebar.jte | 59 ++++ .../resources/jte/siteinfo/main.jte | 108 ++++++++ .../jte/siteinfo/part/linkedDomains.jte | 67 +++++ .../resources/jte/siteinfo/start.jte | 91 +++++++ .../resources/jte/siteinfo/view/backlinks.jte | 60 +++++ .../resources/jte/siteinfo/view/docs.jte | 89 +++++++ .../resources/jte/siteinfo/view/overview.jte | 195 ++++++++++++++ .../jte/siteinfo/view/reportDomain.jte | 111 ++++++++ .../command/commands/BangCommandTest.java | 2 +- .../search/paperdoll/JtePaperDoll.java | 122 +++++++++ .../search/rendering/MockedSearchResults.java | 252 ++++++++++++++++++ .../search/rendering/RenderingTest.java | 30 +++ settings.gradle | 4 + 55 files changed, 2521 insertions(+), 334 deletions(-) create mode 100644 code/services-application/search-service/java/nu/marginalia/search/JteRenderer.java create mode 100644 code/services-application/search-service/java/nu/marginalia/search/model/GroupedUrlDetails.java create mode 100644 code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java create mode 100644 code/services-application/search-service/java/nu/marginalia/search/model/ResultsPage.java create mode 100644 code/services-application/search-service/java/nu/marginalia/search/model/SearchErrorMessageModel.java create mode 100644 code/services-application/search-service/java/nu/marginalia/search/model/SimpleSearchResults.java create mode 100644 code/services-application/search-service/resources/jte/.jteroot create mode 100644 code/services-application/search-service/resources/jte/explore/main.jte create mode 100644 code/services-application/search-service/resources/jte/part/footerLegal.jte create mode 100644 code/services-application/search-service/resources/jte/part/head.jte create mode 100644 code/services-application/search-service/resources/jte/part/navbar.jte create mode 100644 code/services-application/search-service/resources/jte/serp/error.jte create mode 100644 code/services-application/search-service/resources/jte/serp/first.jte create mode 100644 code/services-application/search-service/resources/jte/serp/main.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/footerHowto.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/matchogram.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/result.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/searchform.jte create mode 100644 code/services-application/search-service/resources/jte/serp/part/sidebar.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/main.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/start.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/view/docs.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/view/overview.jte create mode 100644 code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte create mode 100644 code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java create mode 100644 code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java create mode 100644 code/services-application/search-service/test/nu/marginalia/search/rendering/RenderingTest.java diff --git a/.gitignore b/.gitignore index a970eb30..248049f5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ build/ lombok.config Dockerfile run +jte-classes \ No newline at end of file diff --git a/code/features-search/random-websites/java/nu/marginalia/browse/model/BrowseResultSet.java b/code/features-search/random-websites/java/nu/marginalia/browse/model/BrowseResultSet.java index 5d6f7b91..d828a230 100644 --- a/code/features-search/random-websites/java/nu/marginalia/browse/model/BrowseResultSet.java +++ b/code/features-search/random-websites/java/nu/marginalia/browse/model/BrowseResultSet.java @@ -6,4 +6,8 @@ public record BrowseResultSet(Collection results, String focusDoma public BrowseResultSet(Collection results) { this(results, ""); } + + public boolean hasFocusDomain() { + return focusDomain != null && !focusDomain.isBlank(); + } } diff --git a/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/DomainInformation.java b/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/DomainInformation.java index 5dff4d18..26b5a4c9 100644 --- a/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/DomainInformation.java +++ b/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/DomainInformation.java @@ -71,6 +71,23 @@ public class DomainInformation { return new String(Character.toChars(firstChar)) + new String(Character.toChars(secondChar)); } + public String getAsnFlag() { + if (asnCountry == null || asnCountry.codePointCount(0, asnCountry.length()) != 2) { + return ""; + } + String country = asnCountry; + + if ("UK".equals(country)) { + country = "GB"; + } + + int offset = 0x1F1E6; + int asciiOffset = 0x41; + int firstChar = Character.codePointAt(country, 0) - asciiOffset + offset; + int secondChar = Character.codePointAt(country, 1) - asciiOffset + offset; + return new String(Character.toChars(firstChar)) + new String(Character.toChars(secondChar)); + } + public EdgeDomain getDomain() { return this.domain; } diff --git a/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/SimilarDomain.java b/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/SimilarDomain.java index d15d0f3d..9efa2073 100644 --- a/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/SimilarDomain.java +++ b/code/functions/domain-info/api/java/nu/marginalia/api/domains/model/SimilarDomain.java @@ -52,12 +52,12 @@ public record SimilarDomain(EdgeUrl url, return NONE; } - public String toString() { + public String faIcon() { return switch (this) { - case FOWARD -> "→"; - case BACKWARD -> "←"; - case BIDIRECTIONAL -> "⇆"; - case NONE -> "-"; + case FOWARD -> "fa-solid fa-arrow-right"; + case BACKWARD -> "fa-solid fa-arrow-left"; + case BIDIRECTIONAL -> "fa-solid fa-arrow-right-arrow-left"; + case NONE -> ""; }; } diff --git a/code/services-application/search-service/build.gradle b/code/services-application/search-service/build.gradle index 55c2aa90..641405b0 100644 --- a/code/services-application/search-service/build.gradle +++ b/code/services-application/search-service/build.gradle @@ -70,6 +70,7 @@ dependencies { implementation libs.bundles.jetty implementation libs.opencsv implementation libs.trove + implementation libs.jte implementation libs.fastutil implementation libs.bundles.gson implementation libs.bundles.mariadb diff --git a/code/services-application/search-service/java/nu/marginalia/search/JteRenderer.java b/code/services-application/search-service/java/nu/marginalia/search/JteRenderer.java new file mode 100644 index 00000000..05bd63fe --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/JteRenderer.java @@ -0,0 +1,29 @@ +package nu.marginalia.search; + +import gg.jte.CodeResolver; +import gg.jte.ContentType; +import gg.jte.TemplateEngine; +import gg.jte.output.StringOutput; +import gg.jte.resolve.ResourceCodeResolver; +import jakarta.inject.Singleton; + +import java.util.Map; + +@Singleton +public class JteRenderer { + private final CodeResolver codeResolver = new ResourceCodeResolver("jte"); + private final TemplateEngine templateEngine = TemplateEngine.create(codeResolver, ContentType.Html); + + public String render(String template, Object model) { + StringOutput output = new StringOutput(); + templateEngine.render(template, model, output); + return output.toString(); + } + + public String render(String template, Map models) { + StringOutput output = new StringOutput(); + templateEngine.render(template, models, output); + return output.toString(); + } + +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java b/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java index 9a86db64..7416f963 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java +++ b/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java @@ -14,10 +14,7 @@ import nu.marginalia.model.EdgeDomain; import nu.marginalia.model.EdgeUrl; import nu.marginalia.model.crawl.DomainIndexingState; import nu.marginalia.search.command.SearchParameters; -import nu.marginalia.search.model.ClusteredUrlDetails; -import nu.marginalia.search.model.DecoratedSearchResults; -import nu.marginalia.search.model.SearchFilters; -import nu.marginalia.search.model.UrlDetails; +import nu.marginalia.search.model.*; import nu.marginalia.search.results.UrlDeduplicator; import nu.marginalia.search.svc.SearchQueryCountService; import nu.marginalia.search.svc.SearchUnitConversionService; @@ -75,9 +72,10 @@ public class SearchOperator { this.searchVisitorCount = searchVisitorCount; } - public List doSiteSearch(String domain, + public SimpleSearchResults doSiteSearch(String domain, int domainId, - int count) { + int count, + int page) { var queryParams = paramFactory.forSiteSearch(domain, domainId, count); var queryResponse = queryClient.search(queryParams); @@ -85,15 +83,16 @@ public class SearchOperator { return getResultsFromQuery(queryResponse); } - public List doBacklinkSearch(String domain) { + public SimpleSearchResults doBacklinkSearch(String domain, int page) { - var queryParams = paramFactory.forBacklinkSearch(domain); + var queryParams = paramFactory.forBacklinkSearch(domain, page); var queryResponse = queryClient.search(queryParams); + return getResultsFromQuery(queryResponse); } - public List doLinkSearch(String source, String dest) { + public SimpleSearchResults doLinkSearch(String source, String dest) { var queryParams = paramFactory.forLinkSearch(source, dest); var queryResponse = queryClient.search(queryParams); @@ -110,7 +109,7 @@ public class SearchOperator { var queryParams = paramFactory.forRegularSearch(userParams); QueryResponse queryResponse = queryClient.search(queryParams); - var queryResults = getResultsFromQuery(queryResponse); + var queryResults = getResultsFromQuery(queryResponse).results; // Cluster the results based on the query response List clusteredResults = SearchResultClusterer @@ -126,17 +125,17 @@ public class SearchOperator { String evalResult = getFutureOrDefault(eval, ""); String focusDomain = queryResponse.domain(); - int focusDomainId = focusDomain == null + int focusDomainId = (focusDomain == null || focusDomain.isBlank()) ? -1 - : domainQueries.tryGetDomainId(new EdgeDomain(focusDomain)).orElse(-1); + : domainQueries.tryGetDomainId(new EdgeDomain(focusDomain)).orElse(0); List problems = getProblems(evalResult, queryResults, queryResponse); - List resultPages = IntStream.rangeClosed(1, queryResponse.totalPages()) - .mapToObj(number -> new DecoratedSearchResults.Page( + List resultPages = IntStream.rangeClosed(1, queryResponse.totalPages()) + .mapToObj(number -> new ResultsPage( number, number == userParams.page(), - userParams.withPage(number).renderUrl(websiteUrl) + userParams.withPage(number).renderUrl() )) .toList(); @@ -146,7 +145,7 @@ public class SearchOperator { .problems(problems) .evalResult(evalResult) .results(clusteredResults) - .filters(new SearchFilters(websiteUrl, userParams)) + .filters(new SearchFilters(userParams)) .focusDomain(focusDomain) .focusDomainId(focusDomainId) .resultPages(resultPages) @@ -154,18 +153,28 @@ public class SearchOperator { } - public List getResultsFromQuery(QueryResponse queryResponse) { + public SimpleSearchResults getResultsFromQuery(QueryResponse queryResponse) { final QueryLimits limits = queryResponse.specs().queryLimits; final UrlDeduplicator deduplicator = new UrlDeduplicator(limits.resultsByDomain()); // Update the query count (this is what you see on the front page) searchVisitorCount.registerQuery(); - return queryResponse.results().stream() + List details = queryResponse.results().stream() .filter(deduplicator::shouldRetain) .limit(limits.resultsTotal()) .map(SearchOperator::createDetails) .toList(); + + List pages = IntStream.rangeClosed(1, queryResponse.totalPages()) + .mapToObj(number -> new ResultsPage( + number, + number == queryResponse.currentPage(), + "" + )) + .toList(); + + return new SimpleSearchResults(details, pages); } private static UrlDetails createDetails(DecoratedSearchResultItem item) { @@ -181,6 +190,7 @@ public class SearchOperator { item.rankingScore, // termScore item.resultsFromDomain, BrailleBlockPunchCards.printBits(item.bestPositions, 64), + item.bestPositions, Long.bitCount(item.bestPositions), item.rawIndexResult, item.rawIndexResult.keywordScores diff --git a/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java b/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java index 6852423a..2d1e8040 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java +++ b/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java @@ -62,7 +62,7 @@ public class SearchQueryParamFactory { ); } - public QueryParams forBacklinkSearch(String domain) { + public QueryParams forBacklinkSearch(String domain, int page) { return new QueryParams("links:"+domain, null, List.of(), diff --git a/code/services-application/search-service/java/nu/marginalia/search/SearchService.java b/code/services-application/search-service/java/nu/marginalia/search/SearchService.java index 6abdfcb3..1ba1e8bf 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/SearchService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/SearchService.java @@ -45,6 +45,7 @@ public class SearchService extends Service { SearchAddToCrawlQueueService addToCrawlQueueService, SearchSiteInfoService siteInfoService, SearchCrosstalkService crosstalkService, + SearchBrowseService searchBrowseService, SearchQueryService searchQueryService) throws Exception { @@ -56,26 +57,34 @@ public class SearchService extends Service { Spark.staticFiles.expireTime(600); SearchServiceMetrics.get("/search", searchQueryService::pathSearch); - SearchServiceMetrics.get("/", frontPageService::render); SearchServiceMetrics.get("/news.xml", frontPageService::renderNewsFeed); - SearchServiceMetrics.get("/:resource", this::serveStatic); SearchServiceMetrics.post("/site/suggest/", addToCrawlQueueService::suggestCrawling); SearchServiceMetrics.get("/site-search/:site/*", this::siteSearchRedir); + SearchServiceMetrics.get("/site", siteInfoService::handleOverview); SearchServiceMetrics.get("/site/:site", siteInfoService::handle); SearchServiceMetrics.post("/site/:site", siteInfoService::handlePost); + SearchServiceMetrics.get("/explore", searchBrowseService::handleBrowseRandom); + SearchServiceMetrics.get("/explore/:site", searchBrowseService::handleBrowseSite); + SearchServiceMetrics.get("/crosstalk/", crosstalkService::handle); + SearchServiceMetrics.get("/:resource", this::serveStatic); Spark.exception(Exception.class, (e,p,q) -> { logger.error("Error during processing", e); wmsa_search_service_error_count.labels(p.pathInfo(), p.requestMethod()).inc(); errorPageService.serveError(p, q); }); + // Add compression + Spark.after((rq, rs) -> { + rs.header("Content-Encoding", "gzip"); + }); + Spark.awaitInitialization(); } 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 c10d0092..07a47c91 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 @@ -4,16 +4,19 @@ import nu.marginalia.WebsiteUrl; import nu.marginalia.api.searchquery.model.results.ResultRankingParameters; import nu.marginalia.index.query.limit.QueryStrategy; import nu.marginalia.index.query.limit.SpecificationLimit; +import nu.marginalia.model.EdgeDomain; import nu.marginalia.search.model.SearchProfile; import spark.Request; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Objects; +import java.util.StringJoiner; import static nu.marginalia.search.command.SearchRecentParameter.RECENT; -public record SearchParameters(String query, +public record SearchParameters(WebsiteUrl url, + String query, SearchProfile profile, SearchJsParameter js, SearchRecentParameter recent, @@ -23,8 +26,21 @@ public record SearchParameters(String query, int page ) { - public SearchParameters(String queryString, Request request) { - this( + public static SearchParameters defaultsForQuery(WebsiteUrl url, String query, int page) { + return new SearchParameters( + url, + "test", + SearchProfile.NO_FILTER, + SearchJsParameter.DEFAULT, + SearchRecentParameter.DEFAULT, + SearchTitleParameter.DEFAULT, + SearchAdtechParameter.DEFAULT, + false, + page); + } + public static SearchParameters forRequest(String queryString, WebsiteUrl url, Request request) { + return new SearchParameters( + url, queryString, SearchProfile.getSearchProfile(request.queryParams("profile")), SearchJsParameter.parse(request.queryParams("js")), @@ -41,29 +57,48 @@ public record SearchParameters(String query, } public SearchParameters withProfile(SearchProfile profile) { - return new SearchParameters(query, profile, js, recent, searchTitle, adtech, true, page); + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page); } public SearchParameters withJs(SearchJsParameter js) { - return new SearchParameters(query, profile, js, recent, searchTitle, adtech, true, page); + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page); } public SearchParameters withAdtech(SearchAdtechParameter adtech) { - return new SearchParameters(query, profile, js, recent, searchTitle, adtech, true, page); + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page); } public SearchParameters withRecent(SearchRecentParameter recent) { - return new SearchParameters(query, profile, js, recent, searchTitle, adtech, true, page); + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, true, page); } public SearchParameters withTitle(SearchTitleParameter title) { - return new SearchParameters(query, profile, js, recent, title, adtech, true, page); + return new SearchParameters(url, query, profile, js, recent, title, adtech, true, page); } public SearchParameters withPage(int page) { - return new SearchParameters(query, profile, js, recent, searchTitle, adtech, false, page); + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page); } - public String renderUrl(WebsiteUrl baseUrl) { + public SearchParameters withQuery(String query) { + return new SearchParameters(url, query, profile, js, recent, searchTitle, adtech, false, page); + } + + public String renderUrlWithoutSiteFocus() { + String[] parts = query.split("\\s+"); + StringJoiner newQuery = new StringJoiner(" "); + for (var part : parts) { + if (!part.startsWith("site:")) { + newQuery.add(part); + } + } + return withQuery(newQuery.toString()).renderUrl(); + } + + public String renderUrlWithSiteFocus(EdgeDomain domain) { + return withQuery(query + " site:"+domain.toString()).renderUrl(); + } + + 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), @@ -75,7 +110,7 @@ public record SearchParameters(String query, page ); - return baseUrl.withPath(path); + return url.withPath(path); } public ResultRankingParameters.TemporalBias temporalBias() { diff --git a/code/services-application/search-service/java/nu/marginalia/search/command/commands/BrowseCommand.java b/code/services-application/search-service/java/nu/marginalia/search/command/commands/BrowseCommand.java index a889ec3d..83bf35be 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/command/commands/BrowseCommand.java +++ b/code/services-application/search-service/java/nu/marginalia/search/command/commands/BrowseCommand.java @@ -1,36 +1,21 @@ package nu.marginalia.search.command.commands; import com.google.inject.Inject; -import nu.marginalia.browse.model.BrowseResultSet; -import nu.marginalia.renderer.MustacheRenderer; -import nu.marginalia.renderer.RendererFactory; import nu.marginalia.search.command.SearchCommandInterface; import nu.marginalia.search.command.SearchParameters; -import nu.marginalia.search.svc.SearchBrowseService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import spark.Response; -import java.io.IOException; -import java.util.Map; import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; public class BrowseCommand implements SearchCommandInterface { - private final SearchBrowseService browseService; - private final MustacheRenderer browseResultsRenderer; - private final Logger logger = LoggerFactory.getLogger(getClass()); private final Predicate queryPatternPredicate = Pattern.compile("^browse:[.A-Za-z\\-0-9:]+$").asPredicate(); @Inject - public BrowseCommand(SearchBrowseService browseService, - RendererFactory rendererFactory) - throws IOException + public BrowseCommand() { - this.browseService = browseService; - browseResultsRenderer = rendererFactory.renderer("search/browse-results"); } @Override @@ -39,39 +24,24 @@ public class BrowseCommand implements SearchCommandInterface { return Optional.empty(); } - var model = browseSite(parameters.query()); - - if (null == model) - return Optional.empty(); - - return Optional.of(browseResultsRenderer.render(model, - Map.of("query", parameters.query(), - "profile", parameters.profileStr(), - "focusDomain", model.focusDomain()) - )); - } - - - private BrowseResultSet browseSite(String humanQuery) { String definePrefix = "browse:"; - String word = humanQuery.substring(definePrefix.length()).toLowerCase(); + String word = parameters.query().substring(definePrefix.length()).toLowerCase(); - try { - if ("random".equals(word)) { - return browseService.getRandomEntries(0); - } - if (word.startsWith("random:")) { - int set = Integer.parseInt(word.split(":")[1]); - return browseService.getRandomEntries(set); - } - else { - return browseService.getRelatedEntries(word); - } - } - catch (Exception ex) { - logger.info("No Results"); - return null; + String redirectPath; + + if (word.equals("random")) { + redirectPath = "/explore"; + } else { + redirectPath = "/explore/" + word; } + + return Optional.of(""" + + + + Redirecting... + + """.formatted(redirectPath)); } 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 6684bf74..9ce1e9d0 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 @@ -1,35 +1,37 @@ package nu.marginalia.search.command.commands; import com.google.inject.Inject; -import nu.marginalia.renderer.MustacheRenderer; -import nu.marginalia.renderer.RendererFactory; +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 spark.Response; import java.io.IOException; +import java.util.Map; import java.util.Optional; public class SearchCommand implements SearchCommandInterface { private final SearchOperator searchOperator; - private final MustacheRenderer searchResultsRenderer; + private final JteRenderer jteRenderer; @Inject public SearchCommand(SearchOperator searchOperator, - RendererFactory rendererFactory) throws IOException { + JteRenderer jteRenderer) throws IOException { this.searchOperator = searchOperator; - - searchResultsRenderer = rendererFactory.renderer("search/search-results"); + this.jteRenderer = jteRenderer; } @Override public Optional process(Response response, SearchParameters parameters) { try { DecoratedSearchResults results = searchOperator.doSearch(parameters); - return Optional.of(searchResultsRenderer.render(results)); + return Optional.of(jteRenderer.render("serp/main.jte", + Map.of("results", results, "navbar", NavbarModel.SEARCH) + )); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java index 701a2c51..eb391ed1 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java @@ -1,6 +1,7 @@ package nu.marginalia.search.model; import nu.marginalia.model.EdgeDomain; +import nu.marginalia.model.idx.DocumentFlags; import nu.marginalia.model.idx.WordFlags; import org.jetbrains.annotations.NotNull; @@ -16,6 +17,9 @@ public class ClusteredUrlDetails implements Comparable { @NotNull public final List rest; + /** Selects color scheme in the GUI for the result */ + public final PostColorScheme colorScheme; + /** Create a new ClusteredUrlDetails from a collection of UrlDetails, * with the best result as "first", and the others, in descending order * of quality as the "rest"... @@ -32,6 +36,7 @@ public class ClusteredUrlDetails implements Comparable { this.first = items.removeFirst(); this.rest = items; + this.colorScheme = PostColorScheme.select(first); double bestScore = first.termScore; double scoreLimit = Math.min(4.0, bestScore * 1.25); @@ -64,6 +69,14 @@ public class ClusteredUrlDetails implements Comparable { public ClusteredUrlDetails(@NotNull UrlDetails onlyFirst) { this.first = onlyFirst; this.rest = Collections.emptyList(); + this.colorScheme = PostColorScheme.select(first); + } + + /** For tests */ + public ClusteredUrlDetails(@NotNull UrlDetails onlyFirst, @NotNull List rest) { + this.first = onlyFirst; + this.rest = rest; + this.colorScheme = PostColorScheme.select(first); } // For renderer use, do not remove @@ -99,4 +112,39 @@ public class ClusteredUrlDetails implements Comparable { public int compareTo(@NotNull ClusteredUrlDetails o) { return Objects.compare(first, o.first, UrlDetails::compareTo); } + + public enum PostColorScheme { + Slate("bg-slate-100", "text-slate-950", "bg-slate-200", "text-black"), + Green("bg-green-50", "text-green-900", "bg-green-100", "text-black"), + Purple("bg-purple-50", "text-purple-900", "bg-purple-100", "text-black"), + White("bg-white", "text-blue-950", "bg-gray-100", "text-black"); + + PostColorScheme(String backgroundColor, String textColor, String backgroundColor2, String textColor2) { + this.backgroundColor = backgroundColor; + this.textColor = textColor; + this.backgroundColor2 = backgroundColor2; + this.textColor2 = textColor2; + } + + public static PostColorScheme select(UrlDetails result) { + long encodedMetadata = result.resultItem.encodedDocMetadata; + if (DocumentFlags.PlainText.isPresent(encodedMetadata)) { + return Slate; + } + else if (DocumentFlags.GeneratorWiki.isPresent(encodedMetadata)) { + return Green; + } + else if (DocumentFlags.GeneratorForum.isPresent(encodedMetadata)) { + return Purple; + } + else { + return White; + } + } + + public final String backgroundColor; + public final String textColor; + public final String backgroundColor2; + public final String textColor2; + } } diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/DecoratedSearchResults.java b/code/services-application/search-service/java/nu/marginalia/search/model/DecoratedSearchResults.java index 87fc336a..aed16e15 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/DecoratedSearchResults.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/DecoratedSearchResults.java @@ -1,5 +1,6 @@ package nu.marginalia.search.model; +import nu.marginalia.WebsiteUrl; import nu.marginalia.search.command.SearchParameters; import java.util.List; @@ -21,7 +22,7 @@ public class DecoratedSearchResults { String focusDomain, int focusDomainId, SearchFilters filters, - List resultPages) { + List resultPages) { this.params = params; this.problems = problems; this.evalResult = evalResult; @@ -62,27 +63,29 @@ public class DecoratedSearchResults { return focusDomainId; } + public boolean hasFocusDomain() { + return focusDomainId >= 0; + } + public SearchFilters getFilters() { return filters; } - public List getResultPages() { + public List getResultPages() { return resultPages; } private final String focusDomain; private final int focusDomainId; + private final SearchFilters filters; - private final List resultPages; + private final List resultPages; public boolean isMultipage() { return resultPages.size() > 1; } - public record Page(int number, boolean current, String href) { - } - // These are used by the search form, they look unused in the IDE but are used by the mustache template, // DO NOT REMOVE THEM public int getResultCount() { @@ -130,7 +133,8 @@ public class DecoratedSearchResults { private String focusDomain; private int focusDomainId; private SearchFilters filters; - private List resultPages; + private List resultPages; + private WebsiteUrl websiteUrl; DecoratedSearchResultsBuilder() { } @@ -170,7 +174,7 @@ public class DecoratedSearchResults { return this; } - public DecoratedSearchResultsBuilder resultPages(List resultPages) { + public DecoratedSearchResultsBuilder resultPages(List resultPages) { this.resultPages = resultPages; return this; } @@ -178,9 +182,5 @@ public class DecoratedSearchResults { public DecoratedSearchResults build() { return new DecoratedSearchResults(this.params, this.problems, this.evalResult, this.results, this.focusDomain, this.focusDomainId, this.filters, this.resultPages); } - - public String toString() { - return "DecoratedSearchResults.DecoratedSearchResultsBuilder(params=" + this.params + ", problems=" + this.problems + ", evalResult=" + this.evalResult + ", results=" + this.results + ", focusDomain=" + this.focusDomain + ", focusDomainId=" + this.focusDomainId + ", filters=" + this.filters + ", resultPages=" + this.resultPages + ")"; - } } } diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/GroupedUrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/GroupedUrlDetails.java new file mode 100644 index 00000000..43c18dae --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/model/GroupedUrlDetails.java @@ -0,0 +1,35 @@ +package nu.marginalia.search.model; + +import nu.marginalia.model.EdgeDomain; + +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +/** A number of url details grouped by their domain. This is conceptually similar to + * ClusteredUrlDetails, but it has more logic to conditionally perform this grouping operation, + * whereas this class always groups the domains. + * */ +public record GroupedUrlDetails (List urlDetails) { + public GroupedUrlDetails(List urlDetails) { + this.urlDetails = urlDetails; + if (urlDetails.isEmpty()) { + throw new IllegalArgumentException("urlDetails must never be empty"); + } + } + public EdgeDomain domain() { + return urlDetails.getFirst().getUrl().domain; + } + + public UrlDetails first() { + return urlDetails.getFirst(); + } + + public static List groupResults(List details) { + return details.stream() + .sorted(Comparator.comparing(d -> d.termScore)) + .collect(Collectors.groupingBy(d -> d.getUrl().domain)) + .values().stream().map(GroupedUrlDetails::new) + .toList(); + } +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java new file mode 100644 index 00000000..46aea24e --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java @@ -0,0 +1,85 @@ +package nu.marginalia.search.model; + +import java.util.List; + +public record NavbarModel(NavbarGroup first, NavbarGroup second) { + + public record NavbarEntry(String name, String url, boolean active) { } + public record NavbarGroup(List entries) { } + + public static NavbarModel LIMBO = + new NavbarModel( + new NavbarGroup( + List.of( + new NavbarEntry("Search", "/", false), + new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Explore", "/explore", false) + ) + ) + , + new NavbarGroup( + List.of( + new NavbarEntry("About", "/", false), + new NavbarEntry("API", "/", false), + new NavbarEntry("Donate", "/", false) + ) + ) + ); + + public static NavbarModel SEARCH = + new NavbarModel( + new NavbarGroup( + List.of( + new NavbarEntry("Search", "/", true), + new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Explore", "/explore", false) + ) + ) + , + new NavbarGroup( + List.of( + new NavbarEntry("About", "/", false), + new NavbarEntry("API", "/", false), + new NavbarEntry("Donate", "/", false) + ) + ) + ); + + public static NavbarModel SITEINFO = + new NavbarModel( + new NavbarGroup( + List.of( + new NavbarEntry("Search", "/", false), + new NavbarEntry("Domains", "/site", true), + new NavbarEntry("Explore", "/explore", false) + ) + ) + , + new NavbarGroup( + List.of( + new NavbarEntry("About", "/", false), + new NavbarEntry("API", "/", false), + new NavbarEntry("Donate", "/", false) + ) + ) + ); + + public static NavbarModel EXPLORE = + new NavbarModel( + new NavbarGroup( + List.of( + new NavbarEntry("Search", "/", false), + new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Explore", "/explore", true) + ) + ) + , + new NavbarGroup( + List.of( + new NavbarEntry("About", "/", false), + new NavbarEntry("API", "/", false), + new NavbarEntry("Donate", "/", false) + ) + ) + ); +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/ResultsPage.java b/code/services-application/search-service/java/nu/marginalia/search/model/ResultsPage.java new file mode 100644 index 00000000..625a03e4 --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/model/ResultsPage.java @@ -0,0 +1,4 @@ +package nu.marginalia.search.model; + +public record ResultsPage(int number, boolean current, String href) { +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/SearchErrorMessageModel.java b/code/services-application/search-service/java/nu/marginalia/search/model/SearchErrorMessageModel.java new file mode 100644 index 00000000..79430fd4 --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/model/SearchErrorMessageModel.java @@ -0,0 +1,6 @@ +package nu.marginalia.search.model; + +import nu.marginalia.search.command.SearchParameters; + +public record SearchErrorMessageModel(String errorTitle, String errorRest, SearchParameters parameters, SearchFilters filters) { +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/SearchFilters.java b/code/services-application/search-service/java/nu/marginalia/search/model/SearchFilters.java index bd46b7fa..207d6404 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/SearchFilters.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/SearchFilters.java @@ -7,8 +7,6 @@ import java.util.List; /** Models the search filters displayed next to the search results */ public class SearchFilters { - private final WebsiteUrl url; - public final String currentFilter; // These are necessary for the renderer to access the data @@ -45,9 +43,27 @@ public class SearchFilters { public List> getFilterGroups() { return filterGroups; } + public List searchOptions() { + return List.of( + searchTitleOption, + showRecentOption, + removeJsOption, + reduceAdtechOption + ); + } - public SearchFilters(WebsiteUrl url, SearchParameters parameters) { - this.url = url; + public SearchFilters(WebsiteUrl url) { + this(new SearchParameters(url, "", + SearchProfile.NO_FILTER, + SearchJsParameter.DEFAULT, + SearchRecentParameter.DEFAULT, + SearchTitleParameter.DEFAULT, + SearchAdtechParameter.DEFAULT, + false, + 1)); + } + + public SearchFilters(SearchParameters parameters) { removeJsOption = new RemoveJsOption(parameters); reduceAdtechOption = new ReduceAdtechOption(parameters); @@ -59,40 +75,48 @@ public class SearchFilters { filterGroups = List.of( List.of( - new Filter("No Filter", SearchProfile.NO_FILTER, parameters), -// new Filter("Popular", SearchProfile.POPULAR, parameters), - new Filter("Small Web", SearchProfile.SMALLWEB, parameters), - new Filter("Blogosphere", SearchProfile.BLOGOSPHERE, parameters), - new Filter("Academia", SearchProfile.ACADEMIA, parameters) + new Filter("All", "fa-globe", SearchProfile.NO_FILTER, parameters), + new Filter("Blogs", "fa-blog", SearchProfile.BLOGOSPHERE, parameters), + new Filter("Academia", "fa-university", SearchProfile.ACADEMIA, parameters) ), List.of( - new Filter("Vintage", SearchProfile.VINTAGE, parameters), - new Filter("Plain Text", SearchProfile.PLAIN_TEXT, parameters), - new Filter("~tilde", SearchProfile.TILDE, parameters) + new Filter("Vintage", "fa-clock-rotate-left", SearchProfile.VINTAGE, parameters), + new Filter("Plain Text", "fa-file", SearchProfile.PLAIN_TEXT, parameters), + new Filter("Tilde", "fa-house", SearchProfile.TILDE, parameters) ), List.of( - new Filter("Wiki", SearchProfile.WIKI, parameters), - new Filter("Forum", SearchProfile.FORUM, parameters), - new Filter("Docs", SearchProfile.DOCS, parameters), - new Filter("Recipes", SearchProfile.FOOD, parameters) + new Filter("Wikis", "fa-pencil", SearchProfile.WIKI, parameters), + new Filter("Forums", "fa-comments", SearchProfile.FORUM, parameters), + new Filter("Recipes", "fa-utensils", SearchProfile.FOOD, parameters) ) ); } - public class RemoveJsOption { + public class RemoveJsOption implements SearchOption { private final SearchJsParameter value; - + private final String icon = "fa-wrench"; public final String url; + + public String value() { + return this.value.name(); + } + public String getUrl() { return url; } - + public String id() { + return getClass().getSimpleName(); + } public boolean isSet() { return value.equals(SearchJsParameter.DENY_JS); } + public String icon() { + return icon; + } + public String name() { return "Remove Javascript"; } @@ -105,14 +129,26 @@ public class SearchFilters { default -> SearchJsParameter.DENY_JS; }; - this.url = parameters.withJs(toggledValue).renderUrl(SearchFilters.this.url); + this.url = parameters.withJs(toggledValue).renderUrl(); } } - public class ReduceAdtechOption { + public class ReduceAdtechOption implements SearchOption { private final SearchAdtechParameter value; - + private final String icon = "fa-dumpster-fire"; public final String url; + + public String value() { + return this.value.name(); + } + + public String id() { + return getClass().getSimpleName(); + } + public String icon() { + return icon; + } + public String getUrl() { return url; } @@ -133,17 +169,28 @@ public class SearchFilters { default -> SearchAdtechParameter.REDUCE; }; - this.url = parameters.withAdtech(toggledValue).renderUrl(SearchFilters.this.url); + this.url = parameters.withAdtech(toggledValue).renderUrl(); } } - public class ShowRecentOption { + public class ShowRecentOption implements SearchOption { private final SearchRecentParameter value; + private final String icon = "fa-baby"; + + public String value() { + return this.value.name(); + } public final String url; public String getUrl() { return url; } + public String id() { + return getClass().getSimpleName(); + } + public String icon() { + return icon; + } public boolean isSet() { return value.equals(SearchRecentParameter.RECENT); @@ -161,14 +208,26 @@ public class SearchFilters { default -> SearchRecentParameter.RECENT; }; - this.url = parameters.withRecent(toggledValue).renderUrl(SearchFilters.this.url); + this.url = parameters.withRecent(toggledValue).renderUrl(); } } - public class SearchTitleOption { + public class SearchTitleOption implements SearchOption { private final SearchTitleParameter value; + public String icon = "fa-angle-up"; public final String url; + + public String value() { + return this.value.name(); + } + + public String id() { + return getClass().getSimpleName(); + } + public String icon() { + return icon; + } public String getUrl() { return url; } @@ -189,23 +248,34 @@ public class SearchFilters { default -> SearchTitleParameter.TITLE; }; - this.url = parameters.withTitle(toggledValue).renderUrl(SearchFilters.this.url); + this.url = parameters.withTitle(toggledValue).renderUrl(); } } + public interface SearchOption { + String name(); + boolean isSet(); + String getUrl(); + String icon(); + String id(); + String value(); + } + public class Filter { + public final String icon; public final SearchProfile profile; public final String displayName; public final boolean current; public final String url; - public Filter(String displayName, SearchProfile profile, SearchParameters parameters) { + public Filter(String displayName, String icon, SearchProfile profile, SearchParameters parameters) { this.displayName = displayName; + this.icon = icon; this.profile = profile; this.current = profile.equals(parameters.profile()); - this.url = parameters.withProfile(profile).renderUrl(SearchFilters.this.url); + this.url = parameters.withProfile(profile).renderUrl(); } public String getDisplayName() { diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/SearchProfile.java b/code/services-application/search-service/java/nu/marginalia/search/model/SearchProfile.java index 955c3fcb..316663bf 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/SearchProfile.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/SearchProfile.java @@ -1,9 +1,9 @@ package nu.marginalia.search.model; -import nu.marginalia.index.query.limit.SpecificationLimit; -import nu.marginalia.model.crawl.HtmlFeature; import nu.marginalia.api.searchquery.model.query.SearchQuery; import nu.marginalia.api.searchquery.model.query.SearchSetIdentifier; +import nu.marginalia.index.query.limit.SpecificationLimit; +import nu.marginalia.model.crawl.HtmlFeature; import java.util.Objects; diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/SimpleSearchResults.java b/code/services-application/search-service/java/nu/marginalia/search/model/SimpleSearchResults.java new file mode 100644 index 00000000..2634b9be --- /dev/null +++ b/code/services-application/search-service/java/nu/marginalia/search/model/SimpleSearchResults.java @@ -0,0 +1,13 @@ +package nu.marginalia.search.model; + +import java.util.List; + +public class SimpleSearchResults { + public final List results; + public final List resultPages; + + public SimpleSearchResults(List results, List resultPages) { + this.results = results; + this.resultPages = resultPages; + } +} diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java index 1426f9dc..68500c4f 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java @@ -5,6 +5,7 @@ import nu.marginalia.api.searchquery.model.results.SearchResultKeywordScore; import nu.marginalia.model.EdgeUrl; import nu.marginalia.model.crawl.DomainIndexingState; import nu.marginalia.model.crawl.HtmlFeature; +import nu.marginalia.model.idx.DocumentMetadata; import java.util.ArrayList; import java.util.List; @@ -29,12 +30,14 @@ public class UrlDetails implements Comparable { public int resultsFromSameDomain; + public int topology; public String positions; + public long positionsMask; public int positionsCount; public SearchResultItem resultItem; public List keywordScores; - public UrlDetails(long id, int domainId, EdgeUrl url, String title, String description, String format, int features, DomainIndexingState domainState, double termScore, int resultsFromSameDomain, String positions, int positionsCount, SearchResultItem resultItem, List keywordScores) { + public UrlDetails(long id, int domainId, EdgeUrl url, String title, String description, String format, int features, DomainIndexingState domainState, double termScore, int resultsFromSameDomain, String positions, long positionsMask, int positionsCount, SearchResultItem resultItem, List keywordScores) { this.id = id; this.domainId = domainId; this.url = url; @@ -47,6 +50,8 @@ public class UrlDetails implements Comparable { this.resultsFromSameDomain = resultsFromSameDomain; this.positions = positions; this.positionsCount = positionsCount; + this.positionsMask = positionsMask; + this.topology = DocumentMetadata.decodeTopology(resultItem.encodedDocMetadata); this.resultItem = resultItem; this.keywordScores = keywordScores; } @@ -227,67 +232,11 @@ public class UrlDetails implements Comparable { return this.keywordScores; } - public UrlDetails withId(long id) { - return this.id == id ? this : new UrlDetails(id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withDomainId(int domainId) { - return this.domainId == domainId ? this : new UrlDetails(this.id, domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withUrl(EdgeUrl url) { - return this.url == url ? this : new UrlDetails(this.id, this.domainId, url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withTitle(String title) { - return this.title == title ? this : new UrlDetails(this.id, this.domainId, this.url, title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withDescription(String description) { - return this.description == description ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withFormat(String format) { - return this.format == format ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withFeatures(int features) { - return this.features == features ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withDomainState(DomainIndexingState domainState) { - return this.domainState == domainState ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withTermScore(double termScore) { - return this.termScore == termScore ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withResultsFromSameDomain(int resultsFromSameDomain) { - return this.resultsFromSameDomain == resultsFromSameDomain ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withPositions(String positions) { - return this.positions == positions ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, positions, this.positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withPositionsCount(int positionsCount) { - return this.positionsCount == positionsCount ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, positionsCount, this.resultItem, this.keywordScores); - } - - public UrlDetails withResultItem(SearchResultItem resultItem) { - return this.resultItem == resultItem ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, resultItem, this.keywordScores); - } - - public UrlDetails withKeywordScores(List keywordScores) { - return this.keywordScores == keywordScores ? this : new UrlDetails(this.id, this.domainId, this.url, this.title, this.description, this.format, this.features, this.domainState, this.termScore, this.resultsFromSameDomain, this.positions, this.positionsCount, this.resultItem, keywordScores); - } - public String toString() { return "UrlDetails(id=" + this.getId() + ", domainId=" + this.getDomainId() + ", url=" + this.getUrl() + ", title=" + this.getTitle() + ", description=" + this.getDescription() + ", format=" + this.getFormat() + ", features=" + this.getFeatures() + ", domainState=" + this.getDomainState() + ", termScore=" + this.getTermScore() + ", resultsFromSameDomain=" + this.getResultsFromSameDomain() + ", positions=" + this.getPositions() + ", positionsCount=" + this.getPositionsCount() + ", resultItem=" + this.getResultItem() + ", keywordScores=" + this.getKeywordScores() + ")"; } - public static record UrlProblem(String name, String description) { + public record UrlProblem(String name, String description) { } } diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchBrowseService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchBrowseService.java index 11c2e0e8..ceab6b7b 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchBrowseService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchBrowseService.java @@ -9,12 +9,14 @@ import nu.marginalia.browse.model.BrowseResultSet; import nu.marginalia.db.DbDomainQueries; import nu.marginalia.db.DomainBlacklist; import nu.marginalia.model.EdgeDomain; +import nu.marginalia.search.JteRenderer; +import nu.marginalia.search.model.NavbarModel; import nu.marginalia.search.results.BrowseResultCleaner; +import spark.Request; +import spark.Response; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.io.IOException; +import java.util.*; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -26,6 +28,7 @@ public class SearchBrowseService { private final DbDomainQueries domainQueries; private final DomainBlacklist blacklist; private final DomainInfoClient domainInfoClient; + private final JteRenderer jteRenderer; private final BrowseResultCleaner browseResultCleaner; @Inject @@ -33,15 +36,43 @@ public class SearchBrowseService { DbDomainQueries domainQueries, DomainBlacklist blacklist, DomainInfoClient domainInfoClient, + JteRenderer jteRenderer, BrowseResultCleaner browseResultCleaner) { this.randomDomains = randomDomains; this.domainQueries = domainQueries; this.blacklist = blacklist; this.domainInfoClient = domainInfoClient; + this.jteRenderer = jteRenderer; this.browseResultCleaner = browseResultCleaner; } + public String handleBrowseRandom(Request request, Response response) throws IOException { + return jteRenderer.render("explore/main.jte", + Map.of("navbar", NavbarModel.EXPLORE, + "results", getRandomEntries(1) + ) + ); + } + + public String handleBrowseSite(Request request, Response response) throws Exception { + String domainName = request.params("site"); + BrowseResultSet entries; + + try { + entries = getRelatedEntries(domainName); + } + catch (Exception ex) { + entries = new BrowseResultSet(List.of(), domainName); + } + + return jteRenderer.render("explore/main.jte", + Map.of("navbar", NavbarModel.EXPLORE, + "results", entries + ) + ); + } + public BrowseResultSet getRandomEntries(int set) { List results = randomDomains.getRandomDomains(25, blacklist, set); diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchCrosstalkService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchCrosstalkService.java index ddce56ac..968f5927 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchCrosstalkService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchCrosstalkService.java @@ -4,6 +4,7 @@ import com.google.inject.Inject; import nu.marginalia.renderer.MustacheRenderer; import nu.marginalia.renderer.RendererFactory; import nu.marginalia.search.SearchOperator; +import nu.marginalia.search.model.SimpleSearchResults; import nu.marginalia.search.model.UrlDetails; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -42,10 +43,10 @@ public class SearchCrosstalkService { parts[i] = parts[i].trim(); } - var resAtoB = searchOperator.doLinkSearch(parts[0], parts[1]); - var resBtoA = searchOperator.doLinkSearch(parts[1], parts[0]); + SimpleSearchResults resAtoB = searchOperator.doLinkSearch(parts[0], parts[1]); + SimpleSearchResults resBtoA = searchOperator.doLinkSearch(parts[1], parts[0]); - var model = new CrosstalkResult(parts[0], parts[1], resAtoB, resBtoA); + CrosstalkResult model = new CrosstalkResult(parts[0], parts[1], resAtoB.results, resBtoA.results); return renderer.render(model); } diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchErrorPageService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchErrorPageService.java index 346506e7..9ca9a391 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchErrorPageService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchErrorPageService.java @@ -1,9 +1,12 @@ package nu.marginalia.search.svc; import com.google.inject.Inject; -import nu.marginalia.index.api.IndexMqClient; -import nu.marginalia.renderer.MustacheRenderer; -import nu.marginalia.renderer.RendererFactory; +import nu.marginalia.WebsiteUrl; +import nu.marginalia.search.JteRenderer; +import nu.marginalia.search.command.SearchParameters; +import nu.marginalia.search.model.NavbarModel; +import nu.marginalia.search.model.SearchErrorMessageModel; +import nu.marginalia.search.model.SearchFilters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import spark.Request; @@ -13,35 +16,39 @@ import java.io.IOException; import java.util.Map; public class SearchErrorPageService { - private final IndexMqClient indexMqClient; + private final WebsiteUrl websiteUrl; + private final JteRenderer jteRenderer; private final Logger logger = LoggerFactory.getLogger(getClass()); - private final MustacheRenderer renderer; @Inject - public SearchErrorPageService(IndexMqClient indexMqClient, - RendererFactory rendererFactory) throws IOException { - - renderer = rendererFactory.renderer("search/error-page-search"); - - this.indexMqClient = indexMqClient; + public SearchErrorPageService(WebsiteUrl websiteUrl, + JteRenderer jteRenderer) throws IOException { + this.websiteUrl = websiteUrl; + this.jteRenderer = jteRenderer; } public void serveError(Request request, Response rsp) { - rsp.body(renderError(request, "Internal error", - """ - An error occurred when communicating with the search engine index. -

- This is hopefully a temporary state of affairs. It may be due to - an upgrade. The index typically takes a about two or three minutes - to reload from a cold restart. Thanks for your patience. - """)); - } - private String renderError(Request request, String title, String message) { - return renderer.render(Map.of("title", title, "message", message, - "profile", request.queryParamOrDefault("profile", ""), - "js", request.queryParamOrDefault("js", ""), - "query", request.queryParamOrDefault("query", "") + var params = SearchParameters.forRequest( + request.queryParamOrDefault("query", ""), + websiteUrl, + request); + + + rsp.body(jteRenderer.render("serp/error.jte", + Map.of("navbar", NavbarModel.LIMBO, + "model", new SearchErrorMessageModel( + "An error occurred when communicating with the search engine index.", + """ + This is hopefully a temporary state of affairs. It may be due to + an upgrade. The index typically takes a about two or three minutes + to reload from a cold restart. Thanks for your patience. + """, + params, + new SearchFilters(params) + ) + ) )); } + } diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFlagSiteService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFlagSiteService.java index c7ccfa34..e04381af 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFlagSiteService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFlagSiteService.java @@ -19,7 +19,7 @@ public class SearchFlagSiteService { private final CategoryItem unknownCategory = new CategoryItem("unknown", "Unknown"); - private final List categories = + public static final List categories = List.of( new CategoryItem("spam", "Spam"), new CategoryItem("freebooting", "Reposting Stolen Content"), diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFrontPageService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFrontPageService.java index 8ebd9f8f..1c606441 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFrontPageService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchFrontPageService.java @@ -3,9 +3,10 @@ package nu.marginalia.search.svc; import com.google.inject.Inject; import com.google.inject.Singleton; import com.zaxxer.hikari.HikariDataSource; -import nu.marginalia.renderer.MustacheRenderer; +import nu.marginalia.WebsiteUrl; import nu.marginalia.renderer.RendererFactory; -import nu.marginalia.search.svc.SearchQueryCountService; +import nu.marginalia.search.JteRenderer; +import nu.marginalia.search.model.NavbarModel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import spark.Request; @@ -19,34 +20,41 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** Renders the front page (index) */ @Singleton public class SearchFrontPageService { - private final MustacheRenderer template; private final HikariDataSource dataSource; + private final JteRenderer jteRenderer; private final SearchQueryCountService searchVisitorCount; + private final WebsiteUrl websiteUrl; private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject public SearchFrontPageService(RendererFactory rendererFactory, HikariDataSource dataSource, - SearchQueryCountService searchVisitorCount - ) throws IOException { - this.template = rendererFactory.renderer("search/index/index"); + JteRenderer jteRenderer, + SearchQueryCountService searchVisitorCount, WebsiteUrl websiteUrl + ) throws IOException { this.dataSource = dataSource; + this.jteRenderer = jteRenderer; this.searchVisitorCount = searchVisitorCount; + this.websiteUrl = websiteUrl; } public String render(Request request, Response response) { response.header("Cache-control", "public,max-age=3600"); - return template.render(new IndexModel( - getNewsItems(), - searchVisitorCount.getQueriesPerMinute() - )); + return jteRenderer.render("serp/first.jte", + Map.of("navbar", NavbarModel.SEARCH, "websiteUrl", websiteUrl) + ); +// return template.render(new IndexModel( +// getNewsItems(), +// searchVisitorCount.getQueriesPerMinute() +// )); } diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchQueryService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchQueryService.java index 0f4648da..5fd6a5b9 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchQueryService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchQueryService.java @@ -50,7 +50,7 @@ public class SearchQueryService { throw new RedirectException(websiteUrl.url()); } - return new SearchParameters(queryParam.trim(), request); + return SearchParameters.forRequest(queryParam.trim(), websiteUrl, request); } catch (Exception ex) { // Bots keep sending bad requests, suppress the error otherwise it will diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java index f56c3b79..e3395e9b 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java @@ -1,6 +1,7 @@ package nu.marginalia.search.svc; import com.google.inject.Inject; +import com.zaxxer.hikari.HikariDataSource; import nu.marginalia.api.domains.DomainInfoClient; import nu.marginalia.api.domains.model.DomainInformation; import nu.marginalia.api.domains.model.SimilarDomain; @@ -13,7 +14,11 @@ import nu.marginalia.model.EdgeDomain; import nu.marginalia.renderer.MustacheRenderer; import nu.marginalia.renderer.RendererFactory; import nu.marginalia.screenshot.ScreenshotService; +import nu.marginalia.search.JteRenderer; import nu.marginalia.search.SearchOperator; +import nu.marginalia.search.model.GroupedUrlDetails; +import nu.marginalia.search.model.NavbarModel; +import nu.marginalia.search.model.ResultsPage; import nu.marginalia.search.model.UrlDetails; import nu.marginalia.search.svc.SearchFlagSiteService.FlagSiteFormData; import org.slf4j.Logger; @@ -23,8 +28,7 @@ import spark.Response; import java.io.IOException; import java.sql.SQLException; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -42,6 +46,9 @@ public class SearchSiteInfoService { private final LiveCaptureClient liveCaptureClient; private final ScreenshotService screenshotService; + private final HikariDataSource dataSource; + private final JteRenderer jteRenderer; + @Inject public SearchSiteInfoService(SearchOperator searchOperator, DomainInfoClient domainInfoClient, @@ -50,7 +57,9 @@ public class SearchSiteInfoService { DbDomainQueries domainQueries, FeedsClient feedsClient, LiveCaptureClient liveCaptureClient, - ScreenshotService screenshotService) throws IOException + ScreenshotService screenshotService, + HikariDataSource dataSource, + JteRenderer jteRenderer) throws IOException { this.searchOperator = searchOperator; this.domainInfoClient = domainInfoClient; @@ -62,6 +71,32 @@ public class SearchSiteInfoService { this.feedsClient = feedsClient; this.liveCaptureClient = liveCaptureClient; this.screenshotService = screenshotService; + this.dataSource = dataSource; + this.jteRenderer = jteRenderer; + } + + public Object handleOverview(Request request, Response response) { + List domains = new ArrayList<>(); + + try (var conn = dataSource.getConnection(); + var stmt = conn.prepareStatement("SELECT DOMAIN_NAME, DISCOVER_DATE FROM EC_DOMAIN WHERE NODE_AFFINITY = 0 ORDER BY ID DESC LIMIT 10")) { + + var rs = stmt.executeQuery(); + while (rs.next()) { + domains.add(new SiteOverviewModel.DiscoveredDomain(rs.getString("DOMAIN_NAME"), rs.getString("DISCOVER_DATE"))); + } + } + catch (SQLException ex) { + throw new RuntimeException(); + } + + return jteRenderer.render("siteinfo/start.jte", + Map.of("navbar", NavbarModel.SITEINFO, + "model", new SiteOverviewModel(domains))); + } + + public record SiteOverviewModel(List domains) { + public record DiscoveredDomain(String name, String timestamp) {} } public Object handle(Request request, Response response) throws SQLException { @@ -72,15 +107,18 @@ public class SearchSiteInfoService { return null; } - var model = switch (view) { - case "links" -> listLinks(domainName); - case "docs" -> listDocs(domainName); + int page = Integer.parseInt(request.queryParamOrDefault("page", "1")); + + SiteInfoModel model = switch (view) { + case "links" -> listLinks(domainName, page); + case "docs" -> listDocs(domainName, page); case "info" -> listInfo(domainName); case "report" -> reportSite(domainName); default -> listInfo(domainName); }; - return renderer.render(model); + return jteRenderer.render("siteinfo/main.jte", + Map.of("model", model, "navbar", NavbarModel.SITEINFO)); } public Object handlePost(Request request, Response response) throws SQLException { @@ -108,10 +146,11 @@ public class SearchSiteInfoService { var model = new ReportDomain(domainName, domainId, complaints, List.of(), true); - return renderer.render(model); + return jteRenderer.render("siteinfo/main.jte", + Map.of("model", model, "navbar", NavbarModel.SITEINFO)); } - private Object reportSite(String domainName) throws SQLException { + private ReportDomain reportSite(String domainName) throws SQLException { int domainId = domainQueries.getDomainId(new EdgeDomain(domainName)); var existingComplaints = flagSiteService.getExistingComplaints(domainId); @@ -123,15 +162,20 @@ public class SearchSiteInfoService { } - private Backlinks listLinks(String domainName) { + private Backlinks listLinks(String domainName, int page) { + var results = searchOperator.doBacklinkSearch(domainName, page); return new Backlinks(domainName, domainQueries.tryGetDomainId(new EdgeDomain(domainName)).orElse(-1), - searchOperator.doBacklinkSearch(domainName)); + GroupedUrlDetails.groupResults(results.results), + results.resultPages + ); } private SiteInfoWithContext listInfo(String domainName) { - final int domainId = domainQueries.tryGetDomainId(new EdgeDomain(domainName)).orElse(-1); + var domain = new EdgeDomain(domainName); + final int domainId = domainQueries.tryGetDomainId(domain).orElse(-1); + boolean viableAliasDomain = domain.aliasDomain().map(alias -> domainQueries.tryGetDomainId(alias).isPresent()).orElse(false); final Future domainInfoFuture; final Future> similarSetFuture; @@ -161,12 +205,13 @@ public class SearchSiteInfoService { feedItemsFuture = feedsClient.getFeed(domainId); } - List sampleResults = searchOperator.doSiteSearch(domainName, domainId,5); + List sampleResults = searchOperator.doSiteSearch(domainName, domainId,5, 1).results; if (!sampleResults.isEmpty()) { url = sampleResults.getFirst().url.withPathAndParam("/", null).toString(); } var result = new SiteInfoWithContext(domainName, + viableAliasDomain ? domain.aliasDomain().map(EdgeDomain::toString) : Optional.empty(), domainId, url, hasScreenshot, @@ -240,20 +285,21 @@ public class SearchSiteInfoService { .build(); } - private Docs listDocs(String domainName) { + private Docs listDocs(String domainName, int page) { int domainId = domainQueries.tryGetDomainId(new EdgeDomain(domainName)).orElse(-1); + var results = searchOperator.doSiteSearch(domainName, domainId, 100, page); + return new Docs(domainName, domainQueries.tryGetDomainId(new EdgeDomain(domainName)).orElse(-1), - searchOperator.doSiteSearch(domainName, domainId, 100)); + results.results.stream().sorted(Comparator.comparing(deets -> -deets.topology)).toList(), + results.resultPages + ); } - public record Docs(Map view, - String domain, + public record Docs(String domain, long domainId, - List results) { - public Docs(String domain, long domainId, List results) { - this(Map.of("docs", true), domain, domainId, results); - } + List results, + List pages) implements SiteInfoModel { public String focusDomain() { return domain; } @@ -264,11 +310,12 @@ public class SearchSiteInfoService { } } - public record Backlinks(Map view, String domain, long domainId, List results) { - public Backlinks(String domain, long domainId, List results) { - this(Map.of("links", true), domain, domainId, results); - } - + public record Backlinks(String domain, + long domainId, + List results, + List pages + ) implements SiteInfoModel + { public String query() { return "links:" + domain; } public boolean isKnown() { @@ -276,9 +323,12 @@ public class SearchSiteInfoService { } } - public record SiteInfoWithContext(Map view, - Map domainState, - String domain, + public interface SiteInfoModel { + String domain(); + } + + public record SiteInfoWithContext(String domain, + Optional aliasDomain, int domainId, String siteUrl, boolean hasScreenshot, @@ -286,68 +336,12 @@ public class SearchSiteInfoService { List similar, List linking, FeedItems feed, - List samples - ) { - public SiteInfoWithContext(String domain, - int domainId, - String siteUrl, - boolean hasScreenshot, - DomainInformation domainInformation, - List similar, - List linking, - FeedItems feedInfo, - List samples - ) - { - this(Map.of("info", true), - Map.of(domainInfoState(domainInformation), true), - domain, - domainId, - siteUrl, - hasScreenshot, - domainInformation, - similar, - linking, - feedInfo, - samples); - } - - public String getLayout() { - // My CSS is too weak to handle this in CSS alone, so I guess we're doing layout in Java... - if (similar != null && similar.size() < 25) { - return "lopsided"; - } - else if (feed != null && !feed.items().isEmpty()) { - return "lopsided"; - } - else if (samples != null && !samples.isEmpty()) { - return "lopsided"; - } - else { - return "balanced"; - } - } + List samples) + implements SiteInfoModel + { public String query() { return "site:" + domain; } - private static String domainInfoState(DomainInformation info) { - if (info.isBlacklisted()) { - return "blacklisted"; - } - if (!info.isUnknownDomain() && info.isSuggestForCrawling()) { - return "suggestForCrawling"; - } - if (info.isInCrawlQueue()) { - return "inCrawlQueue"; - } - if (info.isUnknownDomain()) { - return "unknownDomain"; - } - else { - return "indexed"; - } - } - public boolean isKnown() { return domainId > 0; } @@ -391,21 +385,12 @@ public class SearchSiteInfoService { } public record ReportDomain( - Map view, String domain, int domainId, List complaints, List category, - boolean submitted) + boolean submitted) implements SiteInfoModel { - public ReportDomain(String domain, - int domainId, - List complaints, - List category, - boolean submitted) { - this(Map.of("report", true), domain, domainId, complaints, category, submitted); - } - public String query() { return "site:" + domain; } public boolean isKnown() { diff --git a/code/services-application/search-service/resources/jte/.jteroot b/code/services-application/search-service/resources/jte/.jteroot new file mode 100644 index 00000000..e69de29b diff --git a/code/services-application/search-service/resources/jte/explore/main.jte b/code/services-application/search-service/resources/jte/explore/main.jte new file mode 100644 index 00000000..21e14de7 --- /dev/null +++ b/code/services-application/search-service/resources/jte/explore/main.jte @@ -0,0 +1,58 @@ +@import nu.marginalia.browse.model.BrowseResult +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.browse.model.BrowseResultSet + +@param NavbarModel navbar +@param BrowseResultSet results + + + + +@template.part.head(title = "Marginalia Search - Explore") + + + +@template.part.navbar(navbar = navbar) + +

+
+
+

Explore Websites

+
+
+
+ +
+
+ @if (results.hasFocusDomain()) +
+ Showing websites similar to ${results.focusDomain()} + + +
+ @else + Showing a random selection of websites. Refresh the website to get a new selection. + @endif +
+
+ @for (BrowseResult result : results.results()) +
+
+ ${result.displayDomain()} +
+ + +
+ + + +
+ @endfor +
+
+ + +@template.part.footerLegal() + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/part/footerLegal.jte b/code/services-application/search-service/resources/jte/part/footerLegal.jte new file mode 100644 index 00000000..07539611 --- /dev/null +++ b/code/services-application/search-service/resources/jte/part/footerLegal.jte @@ -0,0 +1,36 @@ +
+
+

Policies

+ + This website complies with the GDPR by not collecting any personal information, + and with the EU Cookie Directive by not using cookies for any purpose other than + to provide service functionality. + + + Access logs containing IP-addresses are retained for up to 24 hours, + anonymized logs with source addresses removed are sometimes kept longer + for to help diagnosing bugs. + +
+
+

Contact

+ + You can reach the webmaster of the search engine at kontakt@marginalia.nu. + +

Sources

+ + The search engine is open source with an AGPL license. The sources can be perused at + https://git.marginalia.nu/. + +
+
+

Data

+ + IP geolocation is sourced from the IP2Location LITE data available from + https://lite.ip2location.com/ + under + CC-BY-SA 4.0. + +
+ +
\ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/part/head.jte b/code/services-application/search-service/resources/jte/part/head.jte new file mode 100644 index 00000000..91c72576 --- /dev/null +++ b/code/services-application/search-service/resources/jte/part/head.jte @@ -0,0 +1,30 @@ +@param String title + + + + + Marginalia Search Engine - ${title} + + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/part/navbar.jte b/code/services-application/search-service/resources/jte/part/navbar.jte new file mode 100644 index 00000000..976a1fd4 --- /dev/null +++ b/code/services-application/search-service/resources/jte/part/navbar.jte @@ -0,0 +1,33 @@ +@import nu.marginalia.search.model.NavbarModel + +@param NavbarModel navbar + +
+
+ +
+
\ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/error.jte b/code/services-application/search-service/resources/jte/serp/error.jte new file mode 100644 index 00000000..11cf15cd --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/error.jte @@ -0,0 +1,48 @@ +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.search.model.SearchErrorMessageModel + +@param SearchErrorMessageModel model +@param NavbarModel navbar + + + + +@template.part.head(title = "Marginalia Search - Error") + + + +@template.part.navbar(navbar = navbar) + +
+
+
+

Marginalia Search

+ @template.serp.part.searchform(query = model.parameters().query(), profile = model.parameters().profileStr(), filters = model.filters()) +
+
+
+ +
+ + +
+
+
+ +
${model.errorTitle()}
+
+ @if (!model.errorRest().isBlank()) +

+ ${model.errorRest()} +

+ @endif +
+ +
+ +
+ +@template.part.footerLegal() + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/first.jte b/code/services-application/search-service/resources/jte/serp/first.jte new file mode 100644 index 00000000..462610f6 --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/first.jte @@ -0,0 +1,69 @@ +@import nu.marginalia.WebsiteUrl +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.search.model.SearchFilters +@import nu.marginalia.search.model.SearchProfile + +@param NavbarModel navbar +@param WebsiteUrl websiteUrl + + + +@template.part.head(title = "Marginalia Search") + + + +@template.part.navbar(navbar = navbar) + +
+
+
+

Marginalia Search

+ @template.serp.part.searchform(query = "", profile = SearchProfile.NO_FILTER.filterId, filters = new SearchFilters(websiteUrl)) +
+
+
+ +
+
+
+
Explore the Web
+
    +
  • Prioritizes non-commercial content
  • +
  • Tools for both search and discovery
  • +
  • Find lost old websites
  • +
+
+ +
+
Open Source
+
    +
  • AGPL license
  • +
  • Custom index software
  • +
  • Custom crawler software
  • +
+ +
+ +
+
Privacy by default
+
    +
  • Filter out tracking and adtech
  • +
  • No user or search data shared with 3rd parties
  • +
  • No long-term retention of queries or IP addresses
  • +
+ +
+
+ +
+ +@template.part.footerLegal() + + + diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte new file mode 100644 index 00000000..b35cf312 --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -0,0 +1,91 @@ +@import nu.marginalia.search.model.DecoratedSearchResults +@import nu.marginalia.search.model.ClusteredUrlDetails +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.search.model.ResultsPage + +@param DecoratedSearchResults results +@param NavbarModel navbar + + + + +@template.part.head(title = "Marginalia Search - " + results.getQuery()) + + +@template.part.navbar(navbar = navbar) + +
+
+
+
+

Marginalia Search

+
+ @template.serp.part.searchform(query = results.getParams().query(), profile = results.getProfile(), filters = results.getFilters()) +
+
+
+ +
+
+
+
+ +
+ + @template.serp.part.sidebar(filters = results.getFilters()) + + +
+ + @if (results.hasFocusDomain()) +
+
Showing results from ${results.getFocusDomain()}
+
+ +
+ @endif + +
+ + @for(ClusteredUrlDetails details : results.results) + @template.serp.part.result(result = details, parameters = results.getParams(), domainSearch = results.hasFocusDomain()) + @endfor +
+ + + @if (results.getResultPages().size() > 1) +
+ @for(ResultsPage page : results.getResultPages()) + @if (page.current()) + ${page.number()} + @else + ${page.number()} + @endif + @endfor +
+ @endif +
+
+ +
+ +@template.serp.part.footerHowto() + +@template.part.footerLegal() + +<%-- Put this last to not bother SR users with double menus --%> +@template.serp.part.mobile-menu(filters = results.getFilters()) + + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte b/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte new file mode 100644 index 00000000..865de966 --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte @@ -0,0 +1,91 @@ +
+
+

Syntax

+

This is a keyword-based search engine. When entering multiple search terms, the search engine will attempt to match them against documents where the terms occur in close proximity.

+

Search terms can be excluded with a hyphen.

+

While the search engine at present does not allow full text search, quotes can be used to specifically search for names or terms in the title. Using quotes will also cause the search engine to be as literal as possible in interpreting the query.

+

Parentheses can be used to add terms to the query without giving weight to the terms when ranking the search results.

+ +

Samples

+
+
soup -chicken
+
Look for keywords that contain soup, but not + chicken.
+
"keyboard"
+
Look for pages containing the exact word + keyboard, not keyboards or the like.
+
"steve mcqueen"
+
Look for pages containing the exact words steve mcqueen + in that order, with no words in between.
+
apology (plato)
+
Look for pages containing apology and plato, but only rank them + based on their relevance to apology
+
+

Language Limitations

+

The search engine currently does not support any languages other than English.

+

Support for other languages is planned, + but not available right now. Adding support for additional languages and making it work well is somewhat time-consuming, + meanwhile having bad support for a language won't make anyone happy. +

+

Webmaster Information

+

If you wish to add your website to the index, follow the instructions in this git repository, + if you do not want to mess with git, you can also email kontakt@marginalia.nu with the domain name.

+

The search engine's crawler uses the user-agent string search.marginalia.nu, and requests come from the IPs indicated in + https://search.marginalia.nu/crawler-ips.txt.

+

If you do not want your website to be crawled, the search engine respects robots.txt. In case of questions, bug reports or concerns, email kontakt@marginalia.nu. +

+
+
+

Special Keywords

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeywordMeaning
site:example.comDisplay site information about example.com
site:example.com keywordSearch example.com for keyword
browse:example.comShow similar websites to example.com
ip:127.0.0.1Search documents hosted at 127.0.0.1
links:example.comSearch documents linking to example.com
tld:edu keywordSearch documents with the top level domain edu.
?tld:edu keywordPrefer but do not require results with the top level domain edu. + This syntax is also possible for links:..., ip:... and site:...
q>5The amount of javascript and modern features is at least 5 (on a scale 0 to 25)
q<5The amount of javascript and modern features is at most 5 (on a scale 0 to 25)
year>2005(beta) The document was ostensibly published in or after 2005
year=2005(beta) The document was ostensibly published in 2005
year<2005(beta) The document was ostensibly published in or before 2005
rank>50The ranking of the website is at least 50 in a span of 1 - 255
rank<50The ranking of the website is at most 50 in a span of 1 - 255
count>10 The search term must appear in at least 10 results form the domain
count<10 The search term must appear in at most 10 results from the domain
format:html5Filter documents using the HTML5 standard. This is typically modern websites.
format:xhtmlFilter documents using the XHTML standard
format:html123Filter documents using the HTML standards 1, 2, and 3. This is typically very old websites.
generator:wordpressFilter documents with the specified generator, in this case wordpress
file:zipFilter documents containing a link to a zip file (most file-endings work)
file:audioFilter documents containing a link to an audio file
file:videoFilter documents containing a link to a video file
file:archiveFilter documents containing a link to a compressed archive
file:documentFilter documents containing a link to a document
-special:mediaFilter out documents with audio or video tags
-special:scriptsFilter out documents with javascript
-special:affiliateFilter out documents with likely Amazon affiliate links
-special:trackingFilter out documents with analytics or tracking code
-special:cookiesFilter out documents with cookies
+
+ +
\ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/part/matchogram.jte b/code/services-application/search-service/resources/jte/serp/part/matchogram.jte new file mode 100644 index 00000000..423e115a --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/matchogram.jte @@ -0,0 +1,24 @@ +@import java.util.stream.IntStream + +@param long mask + + + +@for (int bit : IntStream.range(0, 56).filter(bit -> (mask & (1L << bit)) != 0).toArray()) + +@endfor + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte b/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte new file mode 100644 index 00000000..7f929a46 --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte @@ -0,0 +1,50 @@ +@import nu.marginalia.search.model.SearchFilters +@import java.util.List + +@param SearchFilters filters + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte new file mode 100644 index 00000000..30cccb0d --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -0,0 +1,108 @@ +@import nu.marginalia.model.idx.DocumentFlags +@import nu.marginalia.search.command.SearchParameters +@import nu.marginalia.search.model.ClusteredUrlDetails +@import nu.marginalia.search.model.UrlDetails + +@param ClusteredUrlDetails result +@param SearchParameters parameters +@param boolean domainSearch + +
+
+
+
+
+
+ @template.serp.part.matchogram(mask = result.first.positionsMask) +
+ +
+ + +

+ ${result.first.description} +

+ +
+ @if (!domainSearch) +
+ + + +
+ + +
+ @endif +
+ @if (result.hasMultiple() && !domainSearch) +
+

Also from ${result.getDomain().toString()}:

+ +
    + @for(UrlDetails item : result.rest) +
  • + ${item.title} +
  • + @endfor +
+
+ @endif + + + @if (!domainSearch && result.remainingCount() > 0) + + ${result.remainingCount()} more + + @endif + +
+ @if (DocumentFlags.PlainText.isPresent(result.getFirst().resultItem.encodedDocMetadata)) + Plain text + @endif + @if (DocumentFlags.GeneratorForum.isPresent(result.getFirst().resultItem.encodedDocMetadata)) + Forum + @endif + @if (DocumentFlags.GeneratorWiki.isPresent(result.getFirst().resultItem.encodedDocMetadata)) + Wiki + @endif + + @if(result.getFirst().isCookies()) + Cookies + @endif + + @if(result.getFirst().isTracking()) + Track + @endif + + @if(result.getFirst().isScripts()) + JS + @endif + + @if(result.getFirst().isAds()) + Ads + @endif + + @if(result.getFirst().isAffiliate()) + Affiliate + @endif + +
+
+ +
\ No newline at end of file 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 new file mode 100644 index 00000000..1f5f15bb --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/searchform.jte @@ -0,0 +1,41 @@ +@import nu.marginalia.search.model.SearchFilters + +@param String query +@param String profile +@param SearchFilters filters + + +
+
+ @if (query.isBlank()) + <%-- Add autofocus if the query is blank --%> + + @else + + @endif + + + +
+ + + + + + + +
diff --git a/code/services-application/search-service/resources/jte/serp/part/sidebar.jte b/code/services-application/search-service/resources/jte/serp/part/sidebar.jte new file mode 100644 index 00000000..3c4cbe4e --- /dev/null +++ b/code/services-application/search-service/resources/jte/serp/part/sidebar.jte @@ -0,0 +1,59 @@ +@import nu.marginalia.search.model.SearchFilters +@import java.util.List + +@param SearchFilters filters + + diff --git a/code/services-application/search-service/resources/jte/siteinfo/main.jte b/code/services-application/search-service/resources/jte/siteinfo/main.jte new file mode 100644 index 00000000..0f39b745 --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/main.jte @@ -0,0 +1,108 @@ +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.search.svc.* + +@param SearchSiteInfoService.SiteInfoModel model +@param NavbarModel navbar + + + + +@template.part.head(title = "Marginalia Search - " + model.domain()) + + + +@template.part.navbar(navbar = navbar) + +
+
+
+

Site Information

+ + + +
+
+ +
+ +
+ + @if (model instanceof SearchSiteInfoService.SiteInfoWithContext siteInfo) + @template.siteinfo.view.overview(siteInfo = siteInfo) + @elseif (model instanceof SearchSiteInfoService.ReportDomain reportDomain) + @template.siteinfo.view.reportDomain(reportDomain = reportDomain) + @elseif (model instanceof SearchSiteInfoService.Backlinks backlinks) + @template.siteinfo.view.backlinks(backlinks = backlinks) + @elseif (model instanceof SearchSiteInfoService.ReportDomain reportDomain) + @template.siteinfo.view.reportDomain(reportDomain = reportDomain) + @elseif (model instanceof SearchSiteInfoService.Docs docs) + @template.siteinfo.view.docs(docs = docs) + @endif + +
+ + +@template.part.footerLegal() + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte b/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte new file mode 100644 index 00000000..2f1fabaf --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte @@ -0,0 +1,67 @@ +@import nu.marginalia.api.domains.model.SimilarDomain +@import java.util.List + +@param String title +@param String domainName +@param List list + +@if (!list.isEmpty()) + +
+
+

${title}

+
+ +
+ + + + + + + + + + + @for(SimilarDomain item : list) + + + + + + + + + @endfor + +
LinkRankDomainSimilarity
+ @if(item.linkType().isLinked()) + + + @endif + +
+ + $unsafe{item.getRankSymbols()} + +
+
+ + ${item.url().getDomain().toString()} + + +
+
+
+
+
+
+
+
+
+@endif diff --git a/code/services-application/search-service/resources/jte/siteinfo/start.jte b/code/services-application/search-service/resources/jte/siteinfo/start.jte new file mode 100644 index 00000000..dc4e95ba --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/start.jte @@ -0,0 +1,91 @@ +@import nu.marginalia.search.model.NavbarModel +@import nu.marginalia.search.svc.* +@import nu.marginalia.search.svc.SearchSiteInfoService.SiteOverviewModel +@import nu.marginalia.search.svc.SearchSiteInfoService.SiteOverviewModel.DiscoveredDomain + +@param NavbarModel navbar +@param SiteOverviewModel model + + + +@template.part.head(title = "Marginalia Search - Site Viewer") + + + +@template.part.navbar(navbar = navbar) + +
+
+
+

Site Information

+ + + +
+
+
+ +
+
+
Recently Discovered Domains
+
+ + + + + + + + + @for (DiscoveredDomain domain : model.domains()) + + + + + @endfor + +
Domain NameDiscover Time
+ ${domain.name()} + + ${domain.timestamp()} +
+ +
+ +
+
+
Recently Discovered Domains
+
+ + + + + + + + + @for (DiscoveredDomain domain : model.domains()) + + + + + @endfor + +
Domain NameDiscover Time
+ ${domain.name()} + + ${domain.timestamp()} +
+ +
+ +
+
+ + +@template.part.footerLegal() + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte new file mode 100644 index 00000000..18c715f1 --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte @@ -0,0 +1,60 @@ +@import nu.marginalia.search.model.GroupedUrlDetails +@import nu.marginalia.search.model.UrlDetails +@import nu.marginalia.search.model.ResultsPage +@import nu.marginalia.search.svc.SearchSiteInfoService.* + +@param Backlinks backlinks + +
+ +@if (backlinks.results().isEmpty()) +
+ The search engine isn't aware of any backlinks to ${backlinks.domain()}! +
+@else +
+ Showing documents linking to ${backlinks.domain()} +
+@endif + +@for (GroupedUrlDetails group : backlinks.results()) +
+ + + @for (UrlDetails details : group.urlDetails()) +
${details.title}
+
+ ${details.description} +
+ + @endfor +
+ +@endfor + + +@if (backlinks.pages().size() > 1) +
+ @for(ResultsPage page : backlinks.pages()) + @if (page.current()) + ${page.number()} + @else + ${page.number()} + @endif + @endfor +
+@endif +
+ + + diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte b/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte new file mode 100644 index 00000000..ac5a8f41 --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte @@ -0,0 +1,89 @@ +@import nu.marginalia.search.svc.SearchSiteInfoService +@import nu.marginalia.search.svc.SearchSiteInfoService.* +@import nu.marginalia.search.model.UrlDetails +@import nu.marginalia.search.model.ResultsPage +@import nu.marginalia.model.idx.DocumentFlags +@param Docs docs + + + +
+ +@if (docs.results().isEmpty()) +
+ The search engine doesn't index any documents from ${docs.domain()} +
+@else +
+ Showing documents from ${docs.domain()} +
+@endif + +@for (UrlDetails details : docs.results()) +
+ + +

+ ${details.description} +

+ +
+
+ @if (DocumentFlags.PlainText.isPresent(details.resultItem.encodedDocMetadata)) + Plain text + @endif + @if (DocumentFlags.GeneratorForum.isPresent(details.resultItem.encodedDocMetadata)) + Forum + @endif + @if (DocumentFlags.GeneratorWiki.isPresent(details.resultItem.encodedDocMetadata)) + Wiki + @endif + + @if(details.isCookies()) + Cookies + @endif + + @if(details.isTracking()) + Track + @endif + + @if(details.isScripts()) + JS + @endif + + @if(details.isAds()) + Ads + @endif + + @if(details.isAffiliate()) + Affiliate + @endif + +
+
+@endfor + + +@if (docs.pages().size() > 1) +
+ @for(ResultsPage page : docs.pages()) + @if (page.current()) + ${page.number()} + @else + ${page.number()} + @endif + @endfor +
+@endif + +
diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte new file mode 100644 index 00000000..d6dab198 --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte @@ -0,0 +1,195 @@ +@import nu.marginalia.search.svc.SearchSiteInfoService +@import nu.marginalia.search.svc.SearchSiteInfoService.* +@import nu.marginalia.search.model.UrlDetails + +@param SiteInfoWithContext siteInfo + + + +
+
+
+ + ${siteInfo.domain()} +
+
+ +
+ + @if (siteInfo.hasScreenshot()) + Screenshot of ${siteInfo.domain()} + @elseif (siteInfo.aliasDomain().isPresent() && siteInfo.domainInformation().getNodeAffinity() < 1) +
+ The search engine is also aware of links to ${siteInfo.aliasDomain().get()}, + this may be the canonical address. +
+ @endif + + @if (siteInfo.feed() != null && !siteInfo.feed().items().isEmpty()) + +
+ + Feed + + +
+ +
+ @for (SearchSiteInfoService.FeedItem item : siteInfo.feed().items()) +
+ ${item.title()} + ${item.pubDay()} +
+
${item.description()}
+ @endfor +
+ + @endif + + @if (siteInfo.samples() != null && !siteInfo.samples().isEmpty()) + +
+ + Sample +
+ +
+ @for (UrlDetails item : siteInfo.samples()) +
+ ${item.title} +
+
${item.description}
+ @endfor +
+ + @endif + + + @if (siteInfo.domainInformation().isUnknownDomain()) +
+ + Unknown Domain +
+ +
+

This website is not known to the search engine.

+ +

To submit the website for crawling, follow these instructions.

+
+ + @endif + + @if (siteInfo.domainInformation().isBlacklisted()) +
+ + Blacklisted +
+
+

This website is blacklisted. This excludes it from crawling and indexing.

+ +

This is usually because of some form of misbehavior on the webmaster's end, + either annoying search engine spam, or tasteless content bad faith content.

+
+ @endif + + @if (siteInfo.domainInformation().isSuggestForCrawling()) +
+
+
+ This website is not queued for crawling. If you would like it to be crawled, + use the checkbox and button below. +
+ + + +
+ + +
+ + +
+
+ @endif + + @if (siteInfo.isKnown()) +
+ + Crawl Statistics +
+ +
+
+

Pages Known

+

${siteInfo.domainInformation().getPagesKnown()}

+
+
+

Pages Fetched

+

${siteInfo.domainInformation().getPagesFetched()}

+
+
+

Pages Indexed

+

${siteInfo.domainInformation().getPagesIndexed()}

+
+
+

Incoming Links

+

${siteInfo.domainInformation().getIncomingLinks()}

+
+
+

Outbound Links

+

${siteInfo.domainInformation().getOutboundLinks()}

+
+
+

Node Affinity

+

${siteInfo.domainInformation().getNodeAffinity()}

+
+
+ + @if (siteInfo.domainInformation().getPagesKnown() >= 5_000_000) +
+ This website is very large, and the system can not accurately report the number of crawled + and indexed documents without affecting performance. +
+ @endif + + +
+ + Network Details +
+ +
+
+

IP Address

+

${siteInfo.domainInformation().getIp()}

+

${siteInfo.domainInformation().getIpCountry()} ${siteInfo.domainInformation().getIpFlag()}

+
+
+

ASN Details

+

AS${siteInfo.domainInformation().getAsn()} - ${siteInfo.domainInformation().getAsnOrg()}

+

${siteInfo.domainInformation().getAsnCountry()} ${siteInfo.domainInformation().getAsnFlag()}

+
+
+ @endif +
+
+ +@if (!siteInfo.similar().isEmpty() || !siteInfo.linking().isEmpty()) +
+ @template.siteinfo.part.linkedDomains("Similar Domains", siteInfo.domain(), siteInfo.similar()) + @template.siteinfo.part.linkedDomains("Linked Domains", siteInfo.domain(), siteInfo.linking()) +
+@endif diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte b/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte new file mode 100644 index 00000000..c22aec03 --- /dev/null +++ b/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte @@ -0,0 +1,111 @@ +@import nu.marginalia.search.svc.SearchSiteInfoService.* + +@param ReportDomain reportDomain + +
+
+
+

Report Domain Issue

+
+ + @if (reportDomain.submitted()) +
Your complaint has been submitted and will be reviewed in a few weeks. + For urgent issues, email kontakt@marginalia.nu + instead of using this form. +
+ @else + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +

+ For urgent issues, email kontakt@marginalia.nu + instead of using this form. +

+
+
+ @endif +
+ +@if (!reportDomain.complaints().isEmpty()) +
+
+

Existing Complaints

+
+ + +
+ + + + + + + + + + + @for (var complaint : reportDomain.complaints()) + + + + + + + + @endfor + +
CategoryTimestampReviewedDecision
+ ${complaint.category()} + + ${complaint.submitTime()} + + @if(complaint.isReviewed()) + + @endif + + ${complaint.decision()} +
+
+
+@endif + +
+ diff --git a/code/services-application/search-service/test/nu/marginalia/search/command/commands/BangCommandTest.java b/code/services-application/search-service/test/nu/marginalia/search/command/commands/BangCommandTest.java index d8d91654..6be5690e 100644 --- a/code/services-application/search-service/test/nu/marginalia/search/command/commands/BangCommandTest.java +++ b/code/services-application/search-service/test/nu/marginalia/search/command/commands/BangCommandTest.java @@ -15,7 +15,7 @@ class BangCommandTest { public void testG() { try { bangCommand.process(null, - new SearchParameters(" !g test", + new SearchParameters(null, " !g test", null, null, null, null, null, false, 1) ); Assertions.fail("Should have thrown RedirectException"); diff --git a/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java new file mode 100644 index 00000000..d4623351 --- /dev/null +++ b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java @@ -0,0 +1,122 @@ +package nu.marginalia.search.paperdoll; + +import gg.jte.CodeResolver; +import gg.jte.ContentType; +import gg.jte.TemplateEngine; +import gg.jte.output.StringOutput; +import gg.jte.resolve.DirectoryCodeResolver; +import nu.marginalia.WebsiteUrl; +import nu.marginalia.search.model.NavbarModel; +import nu.marginalia.search.rendering.MockedSearchResults; +import org.junit.jupiter.api.Test; +import spark.Spark; + +import java.nio.file.Path; +import java.util.Map; + +public class JtePaperDoll { + final CodeResolver codeResolver = new DirectoryCodeResolver(Path.of(".").toAbsolutePath().resolve("resources/jte")); + final TemplateEngine templateEngine = TemplateEngine.create(codeResolver, ContentType.Html); + + private String render(String template, Object obj) { + var str = new StringOutput(); + templateEngine.render(template, obj, str); + return str.toString(); + } + + private String render(String template, Map map) { + var str = new StringOutput(); + templateEngine.render(template, map, str); + return str.toString(); + } + + @Test + public void searchResults() { + System.out.println(Path.of(".").toAbsolutePath()); + + Spark.port(9999); + + Spark.after((rq, rs) -> { + rs.header("Content-Encoding", "gzip"); + }); + Spark.get("/", + (rq, rs) -> MockedSearchResults.mockRegularSearchResults(), + ret -> this.render("serp/main.jte", Map.of("results", ret, "navbar", NavbarModel.SEARCH)) + ); + Spark.get("/site-focus", + (rq, rs) -> MockedSearchResults.mockSiteFocusResults(), + ret -> this.render("serp/main.jte", Map.of("results", ret, "navbar", NavbarModel.SEARCH)) + ); + Spark.get("/errors", + (rq, rs) -> MockedSearchResults.mockErrorData(), + ret -> this.render("serp/error.jte", Map.of("model", ret, "navbar", NavbarModel.LIMBO)) + ); + Spark.get("/first", + (rq, rs) -> new Object(), + ret -> this.render("serp/first.jte", Map.of( "navbar", NavbarModel.SEARCH, + "websiteUrl", new WebsiteUrl("https://localhost:9999/") + )) + ); + Spark.get("/explore", + (rq, rs) -> MockedSearchResults.mockBrowseResults(32), + ret -> this.render("explore/main.jte", Map.of( "navbar", NavbarModel.EXPLORE, + "results", ret) + ) + ); + Spark.get("/site-info", + (rq, rs) -> { + if ("links".equals(rq.queryParams("view"))) { + return MockedSearchResults.mockBacklinkData(); + } + else if ("docs".equals(rq.queryParams("view"))) { + return MockedSearchResults.mockDocsData(); + } + else if ("report".equals(rq.queryParams("view"))) { + return MockedSearchResults.mockReportDomain(); + } + else return MockedSearchResults.mockSiteInfoData(); + + }, + ret -> this.render("siteinfo/main.jte", Map.of("model", ret, "navbar", NavbarModel.EXPLORE)) + ); + Spark.get("/screenshot/*", (rq, rsp) -> { + rsp.type("image/svg+xml"); + + return """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + """; + + }); + + Spark.init(); + + for (;;); + } + +} diff --git a/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java b/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java new file mode 100644 index 00000000..cabbefa8 --- /dev/null +++ b/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java @@ -0,0 +1,252 @@ +package nu.marginalia.search.rendering; + +import nu.marginalia.WebsiteUrl; +import nu.marginalia.api.domains.model.DomainInformation; +import nu.marginalia.api.domains.model.SimilarDomain; +import nu.marginalia.api.searchquery.model.results.SearchResultItem; +import nu.marginalia.browse.model.BrowseResult; +import nu.marginalia.browse.model.BrowseResultSet; +import nu.marginalia.model.EdgeDomain; +import nu.marginalia.model.EdgeUrl; +import nu.marginalia.model.crawl.DomainIndexingState; +import nu.marginalia.search.command.SearchParameters; +import nu.marginalia.search.model.*; +import nu.marginalia.search.svc.SearchFlagSiteService; +import nu.marginalia.search.svc.SearchSiteInfoService; + +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ThreadLocalRandom; + +public class MockedSearchResults { + + private static UrlDetails mockUrlDetails(String url, String title) throws URISyntaxException { + return mockUrlDetails(url, title, "Sing, Goddess, sing the rage of Achilles, son of Peleus—\n" + + "that murderous anger which condemned Achaeans\n" + + "to countless agonies and threw many warrior souls\n" + + "deep into Hades, leaving their dead bodies\n" + + "carrion food for dogs and birds—\n" + + "all in fulfilment of the will of Zeus."); + + } + + private static UrlDetails mockUrlDetails(String url, String title, String desc) throws URISyntaxException { + return new UrlDetails( + 1, + 1, + new EdgeUrl(url), + title, + desc, + "HTML5", + ThreadLocalRandom.current().nextInt(), + DomainIndexingState.ACTIVE, + 0.5, + 8, + "", + mockPositionsMask(), + 2, + new SearchResultItem(0, 0, 0, 0, 0), + null); + + } + private static long mockPositionsMask() { + + int hits = ThreadLocalRandom.current().nextInt(1, 24); + long mask = 0; + for (int i = 0; i < hits; i++) { + mask |= 1L << ThreadLocalRandom.current().nextInt(0, 64); + } + + return mask; + } + + private static List mockSearchResultsList() throws URISyntaxException { + return List.of( + // Non-clustered result + new ClusteredUrlDetails( + mockUrlDetails("https://clustered.marginalia.nu", "Non-clustered-result") + ), + new ClusteredUrlDetails( + mockUrlDetails("https://clustered.marginalia.nu", "Short Result", "Short") + ), + new ClusteredUrlDetails( + mockUrlDetails("https://clustered.marginalia.nu", "Clustered-result"), + List.of( + mockUrlDetails("https://clustered.marginalia.nu", "Additional result"), + mockUrlDetails("https://clustered.marginalia.nu", "One more result") + ) + ) + ); + } + + public static DecoratedSearchResults mockRegularSearchResults() throws URISyntaxException { + SearchParameters params = SearchParameters.defaultsForQuery(new WebsiteUrl("https://localhost:9999/"), "test", 1); + + return new DecoratedSearchResults( + params, + List.of("Not enough search engine oil"), + null, + mockSearchResultsList(), + "", + -1, + new SearchFilters(params), + List.of(new ResultsPage(1, true, "#"), + new ResultsPage(2, false, "#"))); + } + + public static DecoratedSearchResults mockSiteFocusResults() throws URISyntaxException { + SearchParameters params = SearchParameters.defaultsForQuery(new WebsiteUrl("https://localhost:9999/"), "test site:example.marginalia.nu", 1); + + return new DecoratedSearchResults( + params, + List.of("Not enough search engine oil"), + null, + mockSearchResultsList(), + "example.marginalia.nu", + 1, + new SearchFilters(params), + List.of(new ResultsPage(1, true, "#"), + new ResultsPage(2, false, "#"))); + } + + public static SearchErrorMessageModel mockErrorData() { + var params = SearchParameters.defaultsForQuery(new WebsiteUrl("https://localhost:9999/"), "test site:example.marginalia.nu", 1); + + return new SearchErrorMessageModel( + "An error occurred when communicating with the search engine index.", + """ + This is hopefully a temporary state of affairs. It may be due to + an upgrade. The index typically takes a about two or three minutes + to reload from a cold restart. Thanks for your patience. + """, + params, + new SearchFilters(params) + ); + } + + public static SearchSiteInfoService.SiteInfoWithContext mockSiteInfoData() throws URISyntaxException { + return new SearchSiteInfoService.SiteInfoWithContext( + "www.example.com", + Optional.of("other.example.com"), + 14, + "https://www.example.com", + true, + new DomainInformation( + new EdgeDomain("www.example.com"), + false, + 14, + 23, + 55, + 10, + 20, + 1, + 0.5, + false, + true, + false, + "127.0.0.1", + 4041, + "ACME INC", + "SE", + "SE", + "INDEXED" + ), + List.of( + new SimilarDomain(new EdgeUrl("https://www.other.com"), 4,65, 20, true, true, true, SimilarDomain.LinkType.BIDIRECTIONAL) + ), + List.of( + new SimilarDomain(new EdgeUrl("https://www.other.com"), 4,65, 80, true, true, true, SimilarDomain.LinkType.BIDIRECTIONAL), + new SimilarDomain(new EdgeUrl("https://www.other.com"), 4,35, 40, true, true, false, SimilarDomain.LinkType.BACKWARD), + new SimilarDomain(new EdgeUrl("https://www.other.com"), 4,25, 20, true, true, false, SimilarDomain.LinkType.FOWARD), + new SimilarDomain(new EdgeUrl("https://www.other.com"), 4,25, 20, true, true, false, SimilarDomain.LinkType.FOWARD) + ), + new SearchSiteInfoService.FeedItems("www.example.com", + "https://www.example.com/rss.xml", + "2024-01-01", + List.of( + new SearchSiteInfoService.FeedItem("Test Post", "2024-01-01", "Lorem ipsum dolor sit amet", "https://www.example.com/1"), + new SearchSiteInfoService.FeedItem("Other Post", "2024-01-04", "Sing, Goddess, sing the rage of Achilles, son of Peleus—\n" + + "that murderous anger which condemned Achaeans\n" + + "to countless agonies and threw many warrior souls\n" + + "deep into Hades, leaving their dead bodies\n" + + "carrion food for dogs and birds—\n" + + "all in fulfilment of the will of Zeus.", + "https://www.example.com/1") + + )), + List.of()); + } + + public static Object mockBacklinkData() throws URISyntaxException { + return new SearchSiteInfoService.Backlinks( + "www.example.com", + 4, + List.of( + new GroupedUrlDetails( + List.of( + mockUrlDetails("https://www.example.com/", "lorem ipsum"), + mockUrlDetails("https://www.example.com/", "dolor sit"), + mockUrlDetails("https://www.example.com/", "amet quia") + ) + ), + new GroupedUrlDetails( + List.of( + mockUrlDetails("https://other.example.com", "single link result") + ) + ) + ), + List.of( + new ResultsPage(1, true, "#"), + new ResultsPage(2, false, "#") + ) + ); + } + + public static SearchSiteInfoService.Docs mockDocsData() throws URISyntaxException { + return new SearchSiteInfoService.Docs( + "www.example.com", + 1, + List.of( + mockUrlDetails("https://www.example.com/", "lorem ipsum"), + mockUrlDetails("https://www.example.com/", "dolor sit"), + mockUrlDetails("https://www.example.com/", "amet quia") + ), + List.of( + new ResultsPage(1, true, "#"), + new ResultsPage(2, false, "#") + ) + ); + } + + public static SearchSiteInfoService.ReportDomain mockReportDomain() { + return new SearchSiteInfoService.ReportDomain( + "www.example.com", + 1, + List.of(new SearchFlagSiteService.FlagSiteComplaintModel( + "BAD", + "2024-10-01", + true, + "Appealed" + )), + SearchFlagSiteService.categories, + false + ); + } + + public static BrowseResultSet mockBrowseResults(int n) { + List results = new ArrayList<>(); + + for (int i = 0; i < n; i++) { + results.add(new BrowseResult( + new EdgeUrl("https", new EdgeDomain(i+".example.com"), null, "/", null), + i, + 0.5, + true + )); + } + + return new BrowseResultSet(results); + } +} diff --git a/code/services-application/search-service/test/nu/marginalia/search/rendering/RenderingTest.java b/code/services-application/search-service/test/nu/marginalia/search/rendering/RenderingTest.java new file mode 100644 index 00000000..2ec00f88 --- /dev/null +++ b/code/services-application/search-service/test/nu/marginalia/search/rendering/RenderingTest.java @@ -0,0 +1,30 @@ +package nu.marginalia.search.rendering; + +import gg.jte.CodeResolver; +import gg.jte.ContentType; +import gg.jte.TemplateEngine; +import gg.jte.output.StringOutput; +import gg.jte.resolve.DirectoryCodeResolver; +import org.junit.jupiter.api.Test; + +import java.net.URISyntaxException; +import java.nio.file.Path; + +/** This test class verifies that the templates render successfully. + * It does not perform checks that the output is correct */ +public class RenderingTest { + final CodeResolver codeResolver = new DirectoryCodeResolver(Path.of(".").toAbsolutePath().resolve("resources/jte")); + final TemplateEngine templateEngine = TemplateEngine.create(codeResolver, ContentType.Html); + + + + @Test + public void testSerp_Main() throws URISyntaxException { + templateEngine.render("serp/main.jte", MockedSearchResults.mockRegularSearchResults(), new StringOutput()); + } + + @Test + public void testSerp_SiteFocus() throws URISyntaxException { + templateEngine.render("serp/main.jte", MockedSearchResults.mockSiteFocusResults(), new StringOutput()); + } +} diff --git a/settings.gradle b/settings.gradle index 1ed535be..051755b6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -230,6 +230,8 @@ dependencyResolutionManagement { library('jetty-util','org.eclipse.jetty','jetty-util').version('9.4.54.v20240208') library('jetty-servlet','org.eclipse.jetty','jetty-servlet').version('9.4.54.v20240208') + library('jte','gg.jte','jte').version('3.1.15') + library('slop', 'nu.marginalia', 'slop').version('0.0.8-SNAPSHOT') bundle('jetty', ['jetty-server', 'jetty-util', 'jetty-servlet']) @@ -250,6 +252,8 @@ dependencyResolutionManagement { bundle('flyway', ['flyway.core', 'flyway.mysql']) bundle('curator', ['curator-framework', 'curator-x-discovery']) + + } } } From 8b804359a958069ae395d4a54c9c4e43a23d9c4c Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 14:40:21 +0100 Subject: [PATCH 002/177] (serp) Layout fixes for mobile --- .../marginalia/search/model/UrlDetails.java | 103 ++++++++++++++++++ .../resources/jte/serp/part/footerHowto.jte | 2 +- .../resources/jte/serp/part/result.jte | 12 +- .../resources/jte/serp/part/searchform.jte | 2 +- .../search/rendering/MockedSearchResults.java | 2 + 5 files changed, 114 insertions(+), 7 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java index 68500c4f..10023ac1 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java @@ -87,6 +87,109 @@ public class UrlDetails implements Comparable { return Long.hashCode(id); } + /** Helper that inserts hyphenation hints and escapes + * semantically meaningful codepoints into entity codes */ + public String titleHyphenHints() { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < title.length(); i++) { + char c = title.charAt(i); + + if (c == '<') { + sb.append("<"); + } + else if (c == '>') { + sb.append(">"); + } + else if (c == '&') { + sb.append("&"); + } + else if (!Character.isAlphabetic(c) && !Character.isWhitespace(c)) { + sb.append(c); + sb.append("­"); + } + else { + sb.append(c); + } + } + + return sb.toString(); + } + + /** Helper that inserts hyphenation hints and escapes + * semantically meaningful codepoints into entity codes */ + public String descriptionHyphenHints() { + StringBuilder sb = new StringBuilder(); + + int distSinceSpace = 0; + for (int i = 0; i < description.length(); i++) { + char c = description.charAt(i); + if (Character.isSpaceChar(c)) { + distSinceSpace = 0; + } + else { + distSinceSpace ++; + } + + if (c == '<') { + sb.append("<"); + } + else if (c == '>') { + sb.append(">"); + } + else if (c == '&') { + sb.append("&"); + } + else if (!Character.isAlphabetic(c) && distSinceSpace > 24) { + sb.append(c); + sb.append("­"); + distSinceSpace = 0; + } + else { + sb.append(c); + } + } + + return sb.toString(); + } + + /** Helper that inserts hyphenation hints and escapes + * semantically meaningful codepoints into entity codes */ + public String urlHyphenHints() { + StringBuilder sb = new StringBuilder(); + String urlStr = url.toString(); + int distSinceSpace = 0; + for (int i = 0; i < urlStr.length(); i++) { + char c = urlStr.charAt(i); + if (Character.isSpaceChar(c)) { + distSinceSpace = 0; + } + else { + distSinceSpace ++; + } + + if (c == '<') { + sb.append("<"); + } + else if (c == '>') { + sb.append(">"); + } + else if (c == '&') { + sb.append("&"); + } + else if (!Character.isAlphabetic(c) && !Character.isWhitespace(c)) { + sb.append(c); + sb.append("­"); + distSinceSpace = 0; + } + else { + sb.append(c); + } + } + + return sb.toString(); + } + @Override public int compareTo(UrlDetails other) { int result = Double.compare(getTermScore(), other.getTermScore()); diff --git a/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte b/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte index 865de966..d576eed0 100644 --- a/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte +++ b/code/services-application/search-service/resources/jte/serp/part/footerHowto.jte @@ -37,7 +37,7 @@

Special Keywords

- +
diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index 30cccb0d..de8a425d 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -17,22 +17,24 @@
-

- ${result.first.title} +

+ $unsafe{result.first.titleHyphenHints()}

${result.first.url.toString()} + rel="noopener noreferrer" tabindex="-1">$unsafe{result.first.urlHyphenHints()}
-

- ${result.first.description} +

+

+ $unsafe{result.first.descriptionHyphenHints()}

+
@if (!domainSearch) 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 1f5f15bb..2552276e 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 @@ -8,7 +8,7 @@
@if (query.isBlank()) - <%-- Add autofocus if the query is blank --%> + <%-- Add autofocus if the query is blank --%> Date: Thu, 5 Dec 2024 16:05:03 +0100 Subject: [PATCH 003/177] (site-info) Only show samples if feed is absent, never both. --- .../nu/marginalia/search/svc/SearchSiteInfoService.java | 8 ++++++++ .../resources/jte/siteinfo/view/overview.jte | 5 ++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java index e3395e9b..64613640 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java @@ -340,6 +340,14 @@ public class SearchSiteInfoService { implements SiteInfoModel { + public boolean hasSamples() { + return samples != null && !samples.isEmpty(); + } + + public boolean hasFeed() { + return feed != null && !feed.items.isEmpty(); + } + public String query() { return "site:" + domain; } public boolean isKnown() { diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte index d6dab198..71970dd9 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte @@ -25,8 +25,7 @@
@endif - @if (siteInfo.feed() != null && !siteInfo.feed().items().isEmpty()) - + @if (siteInfo.hasFeed())
Feed @@ -46,7 +45,7 @@ @endif - @if (siteInfo.samples() != null && !siteInfo.samples().isEmpty()) + @if (siteInfo.hasSamples() && !siteInfo.hasFeed())
From 33761a023608e683677127e8fafc541b6caeb756 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:16:29 +0100 Subject: [PATCH 004/177] (site-info) Make the search box in the site viewer functional --- .../search/svc/SearchSiteInfoService.java | 12 ++++++++++++ .../resources/jte/siteinfo/main.jte | 16 ++++++++++------ .../resources/jte/siteinfo/start.jte | 9 ++++++--- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java index 64613640..ebec5717 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java +++ b/code/services-application/search-service/java/nu/marginalia/search/svc/SearchSiteInfoService.java @@ -76,6 +76,18 @@ public class SearchSiteInfoService { } public Object handleOverview(Request request, Response response) { + String domainName = request.queryParams("domain"); + if (domainName != null) { + // redirect to /site/domainName + return """ + + + + Redirecting... + + """.formatted(domainName); + } + List domains = new ArrayList<>(); try (var conn = dataSource.getConnection(); diff --git a/code/services-application/search-service/resources/jte/siteinfo/main.jte b/code/services-application/search-service/resources/jte/siteinfo/main.jte index 0f39b745..ba6297eb 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/main.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/main.jte @@ -15,14 +15,18 @@
-
+

Site Information

- - -
+ + +
diff --git a/code/services-application/search-service/resources/jte/siteinfo/start.jte b/code/services-application/search-service/resources/jte/siteinfo/start.jte index dc4e95ba..a8a5a238 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/start.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/start.jte @@ -16,14 +16,17 @@
-
+

Site Information

- + -
+
From 75ae1c952675ee65ab7b653dc28162439a315041 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:18:46 +0100 Subject: [PATCH 005/177] (site-info) Do not show 'suggest for crawling' when the ndoe affinity is already set to 0 This indicates the domain is already slated for crawling. --- .../search-service/resources/jte/siteinfo/view/overview.jte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte index 71970dd9..938a6af3 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte @@ -94,7 +94,7 @@
@endif - @if (siteInfo.domainInformation().isSuggestForCrawling()) + @if (siteInfo.domainInformation().isSuggestForCrawling() && siteInfo.domainInformation().getNodeAffinity() < 0)
From be9e192b78a77790a5fded42d5bc6d4e32238f83 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:26:11 +0100 Subject: [PATCH 006/177] (site-info) Fix pagination in backlinks and documents views --- .../java/nu/marginalia/search/SearchOperator.java | 2 +- .../java/nu/marginalia/search/SearchQueryParamFactory.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java b/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java index 7416f963..3badddae 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java +++ b/code/services-application/search-service/java/nu/marginalia/search/SearchOperator.java @@ -77,7 +77,7 @@ public class SearchOperator { int count, int page) { - var queryParams = paramFactory.forSiteSearch(domain, domainId, count); + var queryParams = paramFactory.forSiteSearch(domain, domainId, count, page); var queryResponse = queryClient.search(queryParams); return getResultsFromQuery(queryResponse); diff --git a/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java b/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java index 2d1e8040..3758730f 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java +++ b/code/services-application/search-service/java/nu/marginalia/search/SearchQueryParamFactory.java @@ -42,7 +42,7 @@ public class SearchQueryParamFactory { } - public QueryParams forSiteSearch(String domain, int domainId, int count) { + public QueryParams forSiteSearch(String domain, int domainId, int count, int page) { return new QueryParams("site:"+domain, null, List.of(), @@ -58,7 +58,7 @@ public class SearchQueryParamFactory { SearchSetIdentifier.NONE.name(), QueryStrategy.AUTO, ResultRankingParameters.TemporalBias.NONE, - 1 + page ); } @@ -78,7 +78,7 @@ public class SearchQueryParamFactory { SearchSetIdentifier.NONE.name(), QueryStrategy.AUTO, ResultRankingParameters.TemporalBias.NONE, - 1 + page ); } From f97de0c15ab49d1e11d07fa253923cb56faecbc1 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:33:46 +0100 Subject: [PATCH 007/177] (site-info) Fix layout --- .../search-service/resources/jte/serp/part/result.jte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index de8a425d..1bc3d07c 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -30,7 +30,7 @@
-
+

$unsafe{result.first.descriptionHyphenHints()}

From 8fcb6ffd7ad68733b84a796971e5506e5dc79485 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:42:16 +0100 Subject: [PATCH 008/177] (site-info) Increase contrast in search results for forums, wikis --- .../marginalia/search/model/ClusteredUrlDetails.java | 12 +++++++----- .../resources/jte/serp/part/result.jte | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java index eb391ed1..ff5110eb 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java @@ -114,16 +114,17 @@ public class ClusteredUrlDetails implements Comparable { } public enum PostColorScheme { - Slate("bg-slate-100", "text-slate-950", "bg-slate-200", "text-black"), - Green("bg-green-50", "text-green-900", "bg-green-100", "text-black"), - Purple("bg-purple-50", "text-purple-900", "bg-purple-100", "text-black"), - White("bg-white", "text-blue-950", "bg-gray-100", "text-black"); + Slate("bg-slate-100", "text-slate-950", "bg-slate-200", "text-black", "text-black"), + Green("bg-green-50", "text-green-950", "bg-green-50", "text-black", "text-black"), + Purple("bg-purple-50", "text-purple-950", "bg-purple-50", "text-black", "text-black"), + White("bg-white", "text-blue-950", "bg-gray-100", "text-black", "text-slate-900"); - PostColorScheme(String backgroundColor, String textColor, String backgroundColor2, String textColor2) { + PostColorScheme(String backgroundColor, String textColor, String backgroundColor2, String textColor2, String descColor) { this.backgroundColor = backgroundColor; this.textColor = textColor; this.backgroundColor2 = backgroundColor2; this.textColor2 = textColor2; + this.descColor = descColor; } public static PostColorScheme select(UrlDetails result) { @@ -146,5 +147,6 @@ public class ClusteredUrlDetails implements Comparable { public final String textColor; public final String backgroundColor2; public final String textColor2; + public final String descColor; } } diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index 1bc3d07c..63f12f26 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -31,7 +31,7 @@
-

+

$unsafe{result.first.descriptionHyphenHints()}

From 7d546d0e2a7df970c3a1cfbb0da015109ff99dc9 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:47:22 +0100 Subject: [PATCH 009/177] (site) Make SearchParameters generate relative URLs instead of absolute --- .../java/nu/marginalia/search/command/SearchParameters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 07a47c91..39d64b1e 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 @@ -110,7 +110,7 @@ public record SearchParameters(WebsiteUrl url, page ); - return url.withPath(path); + return path; } public ResultRankingParameters.TemporalBias temporalBias() { From fb75a3827de3129621d7af6f7f4108a6e2a68704 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 16:58:00 +0100 Subject: [PATCH 010/177] (site) Adjust coloration of search results --- .../nu/marginalia/search/model/ClusteredUrlDetails.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java index ff5110eb..8be43e19 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java @@ -114,10 +114,10 @@ public class ClusteredUrlDetails implements Comparable { } public enum PostColorScheme { - Slate("bg-slate-100", "text-slate-950", "bg-slate-200", "text-black", "text-black"), - Green("bg-green-50", "text-green-950", "bg-green-50", "text-black", "text-black"), - Purple("bg-purple-50", "text-purple-950", "bg-purple-50", "text-black", "text-black"), - White("bg-white", "text-blue-950", "bg-gray-100", "text-black", "text-slate-900"); + Slate("bg-white", "text-blue-800", "bg-blue-50", "text-black", "text-black"), + Green("bg-white", "text-green-800", "bg-green-50", "text-black", "text-black"), + Purple("bg-white", "text-purple-800", "bg-purple-50", "text-black", "text-black"), + White("bg-white", "text-blue-950", "bg-gray-100", "text-black", "text-black"); PostColorScheme(String backgroundColor, String textColor, String backgroundColor2, String textColor2, String descColor) { this.backgroundColor = backgroundColor; From aa3c85c19649d02ef3ef7d00e09c0f04df6b80a9 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 17:11:15 +0100 Subject: [PATCH 011/177] (site) Mobile layout fixes --- .../search-service/resources/jte/serp/main.jte | 4 ++-- .../search-service/resources/jte/serp/part/result.jte | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte index b35cf312..9b8f8578 100644 --- a/code/services-application/search-service/resources/jte/serp/main.jte +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -60,9 +60,9 @@
@for(ResultsPage page : results.getResultPages()) @if (page.current()) - ${page.number()} + ${page.number()} @else - ${page.number()} + ${page.number()} @endif @endfor
diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index 63f12f26..7b4df38d 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -54,12 +54,12 @@
@if (result.hasMultiple() && !domainSearch)
-

Also from ${result.getDomain().toString()}:

+

Also from ${result.getDomain().toString()}:

From 97bfcd13537b005b825fef1bd2418c3a0362fe4a Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 18:43:27 +0100 Subject: [PATCH 012/177] (site) Layout changes site-info --- .../resources/jte/siteinfo/part/linkedDomains.jte | 2 +- .../resources/jte/siteinfo/view/backlinks.jte | 2 +- .../search-service/resources/jte/siteinfo/view/overview.jte | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte b/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte index 2f1fabaf..4fcb3810 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/part/linkedDomains.jte @@ -9,7 +9,7 @@
-

${title}

+

${title}

diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte index 18c715f1..db19233b 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte @@ -19,7 +19,7 @@ @for (GroupedUrlDetails group : backlinks.results())
-
+
${group.domain().toString()} diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte index 938a6af3..25c8a9fa 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte @@ -8,7 +8,7 @@
-
+
${siteInfo.domain()}
@@ -17,7 +17,9 @@
@if (siteInfo.hasScreenshot()) - Screenshot of ${siteInfo.domain()} + + Screenshot of ${siteInfo.domain()} + @elseif (siteInfo.aliasDomain().isPresent() && siteInfo.domainInformation().getNodeAffinity() < 1)
The search engine is also aware of links to ${siteInfo.aliasDomain().get()}, From 7ba43e9e3fefea1bd490ffd860c2d1275b6d888b Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 5 Dec 2024 18:54:17 +0100 Subject: [PATCH 013/177] (site) Adjust sizing of navbars --- .../marginalia/search/model/NavbarModel.java | 16 ++++----------- .../resources/jte/part/navbar.jte | 2 +- .../resources/jte/siteinfo/main.jte | 20 +++++++++---------- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java index 46aea24e..e133a20b 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java @@ -19,9 +19,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { , new NavbarGroup( List.of( - new NavbarEntry("About", "/", false), - new NavbarEntry("API", "/", false), - new NavbarEntry("Donate", "/", false) + new NavbarEntry("About", "/", false) ) ) ); @@ -38,9 +36,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { , new NavbarGroup( List.of( - new NavbarEntry("About", "/", false), - new NavbarEntry("API", "/", false), - new NavbarEntry("Donate", "/", false) + new NavbarEntry("About", "/", false) ) ) ); @@ -57,9 +53,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { , new NavbarGroup( List.of( - new NavbarEntry("About", "/", false), - new NavbarEntry("API", "/", false), - new NavbarEntry("Donate", "/", false) + new NavbarEntry("About", "/", false) ) ) ); @@ -76,9 +70,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { , new NavbarGroup( List.of( - new NavbarEntry("About", "/", false), - new NavbarEntry("API", "/", false), - new NavbarEntry("Donate", "/", false) + new NavbarEntry("About", "/", false) ) ) ); diff --git a/code/services-application/search-service/resources/jte/part/navbar.jte b/code/services-application/search-service/resources/jte/part/navbar.jte index 976a1fd4..429ed8ce 100644 --- a/code/services-application/search-service/resources/jte/part/navbar.jte +++ b/code/services-application/search-service/resources/jte/part/navbar.jte @@ -6,7 +6,7 @@
KeywordMeaning
v9b5PdcW?%Uq~AZ3 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 literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-brands-400.woff2 b/code/services-application/search-service/resources/static/search/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cb888623ca5a03140c92bb4266880454c1036b33 GIT binary patch literal 118724 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 BHkkkb literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-regular-400.ttf b/code/services-application/search-service/resources/static/search/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..314040946f427fa4bc6765391472944d3a3752c2 GIT binary patch literal 68064 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 E5AfMPqyPW_ literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-regular-400.woff2 b/code/services-application/search-service/resources/static/search/webfonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fc0a2168aa569ed45fb1b9e8402ffbc14814c91b GIT binary patch literal 25484 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

jwicFM;mt~nKS6zuK0vKlD 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

J5RPh~>9IQEDv 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 literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-v4compatibility.ttf b/code/services-application/search-service/resources/static/search/webfonts/fa-v4compatibility.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ba780aa89951616cee39ab8d0d46ea3870e36ce7 GIT binary patch literal 10836 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 literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-v4compatibility.woff2 b/code/services-application/search-service/resources/static/search/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bb61b589478d8e84e9d487543a20f1e0a5c5d9fc GIT binary patch literal 4788 zcmV;l5=-rOPew8T0RR9101~tS3IG5A04Em!01|2g2Lk{A00000000000000000000 z00001HUcCBAO>IqfgAvW9Lm2K%TNV~eFq=~ixUx5wI2eYk+N|9em}j_@;%woXk>Xr zmL`c8BrDM*%M-;?mbG-b<2_s``G|8ZZwfA@KrV6m2>>b(r|^f)5lH_3r_=5elD@w5 zCBOwG{Tp0U09hD0OiO8fzz(rVLBwcEcc#>~Dy{BX-OcfGO54vF^Z(EJ9zO(OcQTR_ zj!^g+e{WvIOB#`OO#K}t{a8rziP8~L(@|km7?b-u9sm@uFgp{*&6`O%Thj7Psu5x& z2MgDk#sUb?APxBaJKwPMH0!_v&{F;bK>vSU_uuf#xPGMmqEg`Z06+(leIo#Vul^!{ zQq+&sk0?c5oeZ*c@F0A7qY0l-ptcMrfMybM4AwNd4GXu}VK zBd4ys1j_M|d(ZWwAAS#(S}_JZgdYZg5CDh2t16(VA3>-ek82#K#{yWoHB<_KBcY*X zeKuPuz>niOR0)7Z{kT$qPzoRicY#IyI2QF2by$aWg=If%k10@BU63~bpaYHG|EcRh z6LkPM1R*qG%lOE6X?)Z8h2!D)HRIQhN8@*mKQjK<_*3JbkAFM<*Z4mht&Mo&(8dKD z7jIm%@zjlLH?H4!?#5d;9=><--g9*gFg`L~8s9j6!MT)C=KOXB8`p0<>xNpT^=0dQ z)+?=7STC?vtaH{q*1&q2^pR%5g%*PKlPL*`FAVMuCEinc|e=gp8dMhN{_ED#6Isw3ax< zSm-#Xgvl6IpadgZ({ki3iy?p_Gw%Sw??D�$}s{SavNF;}{P=@AQM~@@Q0V?7tqr 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 OyY3|Zye$160{{Tmy8ng% literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/tailwind/globals.css b/code/services-application/search-service/tailwind/globals.css new file mode 100644 index 00000000..bd6213e1 --- /dev/null +++ b/code/services-application/search-service/tailwind/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/code/services-application/search-service/tailwind/tailwind.config.js b/code/services-application/search-service/tailwind/tailwind.config.js new file mode 100644 index 00000000..0f217bf3 --- /dev/null +++ b/code/services-application/search-service/tailwind/tailwind.config.js @@ -0,0 +1,24 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./resources/jte/**/*.jte", + ], + theme: { + extend: { + colors: { + nicotine: '#f8f8ee', + margeblue: '#3e5f6f', + liteblue: '#0066cc', + } + }, + screens: { + 'xs': '440px', + 'sm': '640px', + 'md': '768px', + 'lg': '1024px', + 'xl': '1280px', + '2xl': '1536px', + }, + }, + plugins: [], +} \ No newline at end of file From deab9b95161dc9fc53cff5b9ee75d837ff323090 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 6 Dec 2024 15:56:11 +0100 Subject: [PATCH 018/177] (search) Clean up start views for search and site-info --- .../marginalia/search/model/NavbarModel.java | 8 +-- .../resources/jte/serp/first.jte | 10 +++- .../resources/jte/serp/main.jte | 2 +- .../resources/jte/siteinfo/main.jte | 51 ++++++++++++---- .../resources/jte/siteinfo/start.jte | 58 ++++++++----------- .../resources/jte/siteinfo/view/overview.jte | 8 +++ .../jte/siteinfo/view/reportDomain.jte | 4 +- .../search/paperdoll/JtePaperDoll.java | 6 +- .../search/rendering/MockedSearchResults.java | 7 +++ 9 files changed, 98 insertions(+), 56 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java index e133a20b..695e167b 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/NavbarModel.java @@ -12,7 +12,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { new NavbarGroup( List.of( new NavbarEntry("Search", "/", false), - new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Sites", "/site", false), new NavbarEntry("Explore", "/explore", false) ) ) @@ -29,7 +29,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { new NavbarGroup( List.of( new NavbarEntry("Search", "/", true), - new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Sites", "/site", false), new NavbarEntry("Explore", "/explore", false) ) ) @@ -46,7 +46,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { new NavbarGroup( List.of( new NavbarEntry("Search", "/", false), - new NavbarEntry("Domains", "/site", true), + new NavbarEntry("Sites", "/site", true), new NavbarEntry("Explore", "/explore", false) ) ) @@ -63,7 +63,7 @@ public record NavbarModel(NavbarGroup first, NavbarGroup second) { new NavbarGroup( List.of( new NavbarEntry("Search", "/", false), - new NavbarEntry("Domains", "/site", false), + new NavbarEntry("Sites", "/site", false), new NavbarEntry("Explore", "/explore", true) ) ) diff --git a/code/services-application/search-service/resources/jte/serp/first.jte b/code/services-application/search-service/resources/jte/serp/first.jte index 462610f6..bae6c977 100644 --- a/code/services-application/search-service/resources/jte/serp/first.jte +++ b/code/services-application/search-service/resources/jte/serp/first.jte @@ -17,13 +17,19 @@

-

Marginalia Search

+

Marginalia Search

@template.serp.part.searchform(query = "", profile = SearchProfile.NO_FILTER.filterId, filters = new SearchFilters(websiteUrl))
-
+
+
+
+ You've stumbled onto a beta version of the redesign of the search engine's UI. Feel free to explore, but + beware that things may not quite be polished. +
+
Explore the Web
diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte index 9b8f8578..7c132e53 100644 --- a/code/services-application/search-service/resources/jte/serp/main.jte +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -18,7 +18,7 @@
-

Marginalia Search

+

Marginalia Search

@template.serp.part.searchform(query = results.getParams().query(), profile = results.getProfile(), filters = results.getFilters())
diff --git a/code/services-application/search-service/resources/jte/siteinfo/main.jte b/code/services-application/search-service/resources/jte/siteinfo/main.jte index 70bef652..b4988e4c 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/main.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/main.jte @@ -15,18 +15,45 @@
-
-

Site Information

- - - -
+
+ + ${model.domain()} + + + @if (model instanceof SearchSiteInfoService.SiteInfoWithContext siteInfo) + @if (siteInfo.domainInformation().getPagesIndexed() > 0) + + Indexed + + @elseif (siteInfo.domainInformation().isBlacklisted()) + + Blacklisted + + @elseif (siteInfo.domainInformation().getNodeAffinity() == 0) + + In Crawler Queue + + @elseif (siteInfo.domainInformation().isUnknownDomain()) + + Unknown + + @elseif (siteInfo.domainInformation().isUnknownDomain()) + + Known + + @endif + @endif +
diff --git a/code/services-application/search-service/resources/jte/siteinfo/start.jte b/code/services-application/search-service/resources/jte/siteinfo/start.jte index a8a5a238..43d14fbe 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/start.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/start.jte @@ -16,10 +16,22 @@
-
-

Site Information

- - View Site Information +
+
+ +
+ + +
+
View Site Information
+ +

This utility lets you explore what the search engine knows about the web, + including the link graph, backlinks, etc.

+ + + + @@ -27,12 +39,16 @@ Inspect -
-
-
-
+ +

Please don't attempt to scrape this data. This is a waste of your resources as well as the + marginalia search resources, instead reach out with an email, and we'll work out some way of exporting the data or creating a dedicated API instead.

+
+ +
Recently Discovered Domains
+ +
@@ -58,33 +74,7 @@ -
-
Recently Discovered Domains
-
-
- - - - - - - - @for (DiscoveredDomain domain : model.domains()) - - - - - @endfor - -
Domain NameDiscover Time
- ${domain.name()} - - ${domain.timestamp()} -
-
- -
diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte index afefcfa7..4b6762d5 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/overview.jte @@ -93,6 +93,14 @@

This is usually because of some form of misbehavior on the webmaster's end, either annoying search engine spam, or tasteless content bad faith content.

+ +

Sometimes this is in error. Blacklisting can be appealed using + the Report Form. +

+

In the interest of transparency, the full list of blacklisted domains is periodically + published at + https://downloads.marginalia.nu/exports/. +

@endif diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte b/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte index c22aec03..88fb4ac3 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/reportDomain.jte @@ -5,7 +5,7 @@
-

Report Domain Issue

+

Report Domain Issue

@if (reportDomain.submitted()) @@ -67,7 +67,7 @@ @if (!reportDomain.complaints().isEmpty())
-

Existing Complaints

+

Existing Complaints

diff --git a/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java index d4623351..e7881e5c 100644 --- a/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java +++ b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java @@ -77,7 +77,11 @@ public class JtePaperDoll { else return MockedSearchResults.mockSiteInfoData(); }, - ret -> this.render("siteinfo/main.jte", Map.of("model", ret, "navbar", NavbarModel.EXPLORE)) + ret -> this.render("siteinfo/main.jte", Map.of("model", ret, "navbar", NavbarModel.SITEINFO)) + ); + Spark.get("/site-info-start", + (rq, rs) -> MockedSearchResults.mockSiteInfoOverview(), + ret -> this.render("siteinfo/start.jte", Map.of("model", ret, "navbar", NavbarModel.SITEINFO)) ); Spark.get("/screenshot/*", (rq, rsp) -> { rsp.type("image/svg+xml"); diff --git a/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java b/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java index 0c3c694e..8be07411 100644 --- a/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java +++ b/code/services-application/search-service/test/nu/marginalia/search/rendering/MockedSearchResults.java @@ -251,4 +251,11 @@ public class MockedSearchResults { return new BrowseResultSet(results); } + + public static SearchSiteInfoService.SiteOverviewModel mockSiteInfoOverview() { + return new SearchSiteInfoService.SiteOverviewModel(List.of( + new SearchSiteInfoService.SiteOverviewModel.DiscoveredDomain("www.example.com", "2024-09-23T11:22:33"), + new SearchSiteInfoService.SiteOverviewModel.DiscoveredDomain("other.example.com", "2023-08-25T11:22:33") + )); + } } From 6e1aa7b391118076e1910e5be9c4165017597fe8 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 6 Dec 2024 16:51:19 +0100 Subject: [PATCH 019/177] (search) Make style.css depend on jte file changes Also add a hack to ensure classes generated from java code get included in the stylesheet as intended. --- .../search-service/build.gradle | 2 ++ .../search/model/ClusteredUrlDetails.java | 22 +++++++++---------- .../resources/jte/part/warmup.jte | 9 ++++++++ .../resources/jte/serp/part/result.jte | 7 +++--- 4 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 code/services-application/search-service/resources/jte/part/warmup.jte diff --git a/code/services-application/search-service/build.gradle b/code/services-application/search-service/build.gradle index e572f6dd..8f4bb977 100644 --- a/code/services-application/search-service/build.gradle +++ b/code/services-application/search-service/build.gradle @@ -92,9 +92,11 @@ task compileTailwind { def inputFile = file('tailwind/globals.css') def configFile = file('tailwind/tailwind.config.js') def outputFile = file('resources/static/css/style.css') + def jteDir = file('resources/jte') inputs.file inputFile inputs.file configFile + inputs.files fileTree(jteDir).include('**/*.jte') outputs.file outputFile doLast { diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java index 8be43e19..d939fb32 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/ClusteredUrlDetails.java @@ -113,20 +113,21 @@ public class ClusteredUrlDetails implements Comparable { return Objects.compare(first, o.first, UrlDetails::compareTo); } - public enum PostColorScheme { - Slate("bg-white", "text-blue-800", "bg-blue-50", "text-black", "text-black"), - Green("bg-white", "text-green-800", "bg-green-50", "text-black", "text-black"), - Purple("bg-white", "text-purple-800", "bg-purple-50", "text-black", "text-black"), - White("bg-white", "text-blue-950", "bg-gray-100", "text-black", "text-black"); - PostColorScheme(String backgroundColor, String textColor, String backgroundColor2, String textColor2, String descColor) { + public enum PostColorScheme { + // Hack: ensure these classes are also in jte/part/warmup.jte! + + Slate( "text-blue-800", "bg-blue-50"), + Green( "text-green-800", "bg-green-50"), + Purple("text-purple-800", "bg-purple-50"), + White("text-blue-950", "bg-gray-100"); + + PostColorScheme(String textColor, String backgroundColor) { this.backgroundColor = backgroundColor; this.textColor = textColor; - this.backgroundColor2 = backgroundColor2; - this.textColor2 = textColor2; - this.descColor = descColor; } + public static PostColorScheme select(UrlDetails result) { long encodedMetadata = result.resultItem.encodedDocMetadata; if (DocumentFlags.PlainText.isPresent(encodedMetadata)) { @@ -145,8 +146,5 @@ public class ClusteredUrlDetails implements Comparable { public final String backgroundColor; public final String textColor; - public final String backgroundColor2; - public final String textColor2; - public final String descColor; } } diff --git a/code/services-application/search-service/resources/jte/part/warmup.jte b/code/services-application/search-service/resources/jte/part/warmup.jte new file mode 100644 index 00000000..a781e996 --- /dev/null +++ b/code/services-application/search-service/resources/jte/part/warmup.jte @@ -0,0 +1,9 @@ +This is a bit of a hack! + +This class exists to let tailwind we're using these classes even though they aren't visible in the code, +as we sometimes generate classes from Java code! + + + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index cd7ab181..70fa8e26 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -2,12 +2,11 @@ @import nu.marginalia.search.command.SearchParameters @import nu.marginalia.search.model.ClusteredUrlDetails @import nu.marginalia.search.model.UrlDetails - @param ClusteredUrlDetails result @param SearchParameters parameters @param boolean domainSearch -
+
@@ -31,7 +30,7 @@
-

+

$unsafe{result.first.descriptionHyphenHints()}

@@ -52,7 +51,7 @@
@if (result.hasMultiple() && !domainSearch)
-

Also from ${result.getDomain().toString()}:

+

Also from ${result.getDomain().toString()}:

    @for(UrlDetails item : result.rest) From 8d168be1383b603530877c292d835da1cfc09c35 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Fri, 6 Dec 2024 21:38:36 +0100 Subject: [PATCH 020/177] (search) Typeahead search, etc. --- .../search-service/build.gradle | 2 +- .../resources/jte/part/head.jte | 24 +- .../resources/jte/part/testenvHead.jte | 24 + .../resources/jte/serp/first.jte | 10 +- .../resources/jte/serp/main.jte | 13 +- .../resources/jte/serp/part/searchform.jte | 10 +- .../resources/static/css/style.css | 1752 +++++++++++++++++ .../resources/static/search/css/style.css | 70 + .../static/search/js/mobile-button.js | 6 + .../resources/static/search/js/typeahead.js | 105 + .../resources/static/search/main.js | 13 - .../resources/static/search/menu.js | 91 - .../resources/static/search/theme.js | 57 - .../resources/static/search/tts.js | 112 -- .../search/paperdoll/JtePaperDoll.java | 18 +- 15 files changed, 2014 insertions(+), 293 deletions(-) create mode 100644 code/services-application/search-service/resources/jte/part/testenvHead.jte create mode 100644 code/services-application/search-service/resources/static/css/style.css create mode 100644 code/services-application/search-service/resources/static/search/js/mobile-button.js create mode 100644 code/services-application/search-service/resources/static/search/js/typeahead.js delete mode 100644 code/services-application/search-service/resources/static/search/main.js delete mode 100644 code/services-application/search-service/resources/static/search/menu.js delete mode 100644 code/services-application/search-service/resources/static/search/theme.js delete mode 100644 code/services-application/search-service/resources/static/search/tts.js diff --git a/code/services-application/search-service/build.gradle b/code/services-application/search-service/build.gradle index 8f4bb977..89287778 100644 --- a/code/services-application/search-service/build.gradle +++ b/code/services-application/search-service/build.gradle @@ -91,7 +91,7 @@ dependencies { task compileTailwind { def inputFile = file('tailwind/globals.css') def configFile = file('tailwind/tailwind.config.js') - def outputFile = file('resources/static/css/style.css') + def outputFile = file('resources/static/search/css/style.css') def jteDir = file('resources/jte') inputs.file inputFile diff --git a/code/services-application/search-service/resources/jte/part/head.jte b/code/services-application/search-service/resources/jte/part/head.jte index a161934b..938cc2bf 100644 --- a/code/services-application/search-service/resources/jte/part/head.jte +++ b/code/services-application/search-service/resources/jte/part/head.jte @@ -1,9 +1,29 @@ @param String title +@param boolean allowIndexing = false Marginalia Search Engine - ${title} - - + @if (!Boolean.getBoolean("test-env")) + + + @else + @template.part.testenvHead() + @endif + + @if (allowIndexing) + + + + + + + + @else + + @endif + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/part/testenvHead.jte b/code/services-application/search-service/resources/jte/part/testenvHead.jte new file mode 100644 index 00000000..c77729d4 --- /dev/null +++ b/code/services-application/search-service/resources/jte/part/testenvHead.jte @@ -0,0 +1,24 @@ +<%-- Header components for live reloading in test environments --%> + + + \ No newline at end of file diff --git a/code/services-application/search-service/resources/jte/serp/first.jte b/code/services-application/search-service/resources/jte/serp/first.jte index bae6c977..f0e43456 100644 --- a/code/services-application/search-service/resources/jte/serp/first.jte +++ b/code/services-application/search-service/resources/jte/serp/first.jte @@ -8,17 +8,19 @@ -@template.part.head(title = "Marginalia Search") +@template.part.head(title = "Marginalia Search", allowIndexing = true) @template.part.navbar(navbar = navbar)
    -
    +
    -

    Marginalia Search

    + +
    @template.serp.part.searchform(query = "", profile = SearchProfile.NO_FILTER.filterId, filters = new SearchFilters(websiteUrl)) +
    @@ -70,6 +72,6 @@
@template.part.footerLegal() - + diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte index 7c132e53..6c0e6eab 100644 --- a/code/services-application/search-service/resources/jte/serp/main.jte +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -18,7 +18,7 @@
-

Marginalia Search

+
@template.serp.part.searchform(query = results.getParams().query(), profile = results.getProfile(), filters = results.getFilters())
@@ -80,12 +80,7 @@ @template.serp.part.mobile-menu(filters = results.getFilters()) - + + + \ No newline at end of file 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 2552276e..88f43a5c 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 @@ -14,22 +14,26 @@ value="${query}" autofocus placeholder="Search..." + autocomplete="off" name="query" - id="query" /> + id="searchInput" /> @else + id="searchInput" /> @endif + + - +
diff --git a/code/services-application/search-service/resources/static/css/style.css b/code/services-application/search-service/resources/static/css/style.css new file mode 100644 index 00000000..e269fd07 --- /dev/null +++ b/code/services-application/search-service/resources/static/css/style.css @@ -0,0 +1,1752 @@ +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +/* +! tailwindcss v3.4.16 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden]:where(:not([hidden="until-found"])) { + display: none; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.visible { + visibility: visible; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.sticky { + position: sticky; +} + +.inset-0 { + inset: 0px; +} + +.bottom-0 { + bottom: 0px; +} + +.left-0 { + left: 0px; +} + +.right-5 { + right: 1.25rem; +} + +.top-0 { + top: 0px; +} + +.top-4 { + top: 1rem; +} + +.top-5 { + top: 1.25rem; +} + +.z-50 { + z-index: 50; +} + +.m-4 { + margin: 1rem; +} + +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} + +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} + +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} + +.mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; +} + +.mx-8 { + margin-left: 2rem; + margin-right: 2rem; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} + +.my-3 { + margin-top: 0.75rem; + margin-bottom: 0.75rem; +} + +.my-4 { + margin-top: 1rem; + margin-bottom: 1rem; +} + +.my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.mb-2 { + margin-bottom: 0.5rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.ml-2 { + margin-left: 0.5rem; +} + +.ml-4 { + margin-left: 1rem; +} + +.ml-5 { + margin-left: 1.25rem; +} + +.ml-6 { + margin-left: 1.5rem; +} + +.mr-2 { + margin-right: 0.5rem; +} + +.mr-3 { + margin-right: 0.75rem; +} + +.mr-4 { + margin-right: 1rem; +} + +.mr-8 { + margin-right: 2rem; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.block { + display: block; +} + +.flex { + display: flex; +} + +.table { + display: table; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.h-2 { + height: 0.5rem; +} + +.h-32 { + height: 8rem; +} + +.h-4 { + height: 1rem; +} + +.min-h-screen { + min-height: 100vh; +} + +.w-16 { + width: 4rem; +} + +.w-32 { + width: 8rem; +} + +.w-4 { + width: 1rem; +} + +.w-64 { + width: 16rem; +} + +.w-full { + width: 100%; +} + +.min-w-full { + min-width: 100%; +} + +.max-w-2xl { + max-width: 42rem; +} + +.max-w-3xl { + max-width: 48rem; +} + +.max-w-\[1000px\] { + max-width: 1000px; +} + +.max-w-\[1400px\] { + max-width: 1400px; +} + +.max-w-md { + max-width: 28rem; +} + +.flex-1 { + flex: 1 1 0%; +} + +.shrink-0 { + flex-shrink: 0; +} + +.grow { + flex-grow: 1; +} + +.cursor-pointer { + cursor: pointer; +} + +.list-disc { + list-style-type: disc; +} + +.grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); +} + +.grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.flex-row { + flex-direction: row; +} + +.flex-col { + flex-direction: column; +} + +.place-items-center { + place-items: center; +} + +.place-items-baseline { + place-items: baseline; +} + +.content-center { + align-content: center; +} + +.items-start { + align-items: flex-start; +} + +.items-center { + align-items: center; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.gap-1 { + gap: 0.25rem; +} + +.gap-2 { + gap: 0.5rem; +} + +.gap-4 { + gap: 1rem; +} + +.gap-6 { + gap: 1.5rem; +} + +.space-x-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-x-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.75rem * var(--tw-space-x-reverse)); + margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + +.space-y-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +} + +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} + +.space-y-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); +} + +.divide-y > :not([hidden]) ~ :not([hidden]) { + --tw-divide-y-reverse: 0; + border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); + border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); +} + +.divide-gray-200 > :not([hidden]) ~ :not([hidden]) { + --tw-divide-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1)); +} + +.overflow-auto { + overflow: auto; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-scroll { + overflow: scroll; +} + +.overflow-x-auto { + overflow-x: auto; +} + +.hyphens-auto { + -webkit-hyphens: auto; + hyphens: auto; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.break-words { + overflow-wrap: break-word; +} + +.break-all { + word-break: break-all; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.rounded-sm { + border-radius: 0.125rem; +} + +.border { + border-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-blue-200 { + --tw-border-opacity: 1; + border-color: rgb(191 219 254 / var(--tw-border-opacity, 1)); +} + +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); +} + +.border-gray-300 { + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); +} + +.border-green-200 { + --tw-border-opacity: 1; + border-color: rgb(187 247 208 / var(--tw-border-opacity, 1)); +} + +.border-purple-200 { + --tw-border-opacity: 1; + border-color: rgb(233 213 255 / var(--tw-border-opacity, 1)); +} + +.border-red-200 { + --tw-border-opacity: 1; + border-color: rgb(254 202 202 / var(--tw-border-opacity, 1)); +} + +.border-slate-300 { + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); +} + +.border-transparent { + border-color: transparent; +} + +.border-yellow-200 { + --tw-border-opacity: 1; + border-color: rgb(254 240 138 / var(--tw-border-opacity, 1)); +} + +.bg-blue-100 { + --tw-bg-opacity: 1; + background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1)); +} + +.bg-blue-50 { + --tw-bg-opacity: 1; + background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1)); +} + +.bg-blue-600 { + --tw-bg-opacity: 1; + background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-50 { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-50\/90 { + background-color: rgb(249 250 251 / 0.9); +} + +.bg-green-50 { + --tw-bg-opacity: 1; + background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1)); +} + +.bg-margeblue { + --tw-bg-opacity: 1; + background-color: rgb(62 95 111 / var(--tw-bg-opacity, 1)); +} + +.bg-purple-50 { + --tw-bg-opacity: 1; + background-color: rgb(250 245 255 / var(--tw-bg-opacity, 1)); +} + +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1)); +} + +.bg-red-50 { + --tw-bg-opacity: 1; + background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1)); +} + +.bg-slate-100 { + --tw-bg-opacity: 1; + background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)); +} + +.bg-slate-50 { + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); +} + +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} + +.bg-white\/90 { + background-color: rgb(255 255 255 / 0.9); +} + +.bg-yellow-100 { + --tw-bg-opacity: 1; + background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1)); +} + +.bg-yellow-50 { + --tw-bg-opacity: 1; + background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1)); +} + +.p-1 { + padding: 0.25rem; +} + +.p-1\.5 { + padding: 0.375rem; +} + +.p-2 { + padding: 0.5rem; +} + +.p-2\.5 { + padding: 0.625rem; +} + +.p-3 { + padding: 0.75rem; +} + +.p-4 { + padding: 1rem; +} + +.p-5 { + padding: 1.25rem; +} + +.p-6 { + padding: 1.5rem; +} + +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + +.pb-6 { + padding-bottom: 1.5rem; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.pl-4 { + padding-left: 1rem; +} + +.pr-4 { + padding-right: 1rem; +} + +.pt-2 { + padding-top: 0.5rem; +} + +.pt-4 { + padding-top: 1rem; +} + +.pt-5 { + padding-top: 1.25rem; +} + +.text-left { + text-align: left; +} + +.-indent-4 { + text-indent: -1rem; +} + +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +.font-sans { + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.font-serif { + font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; +} + +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.font-medium { + font-weight: 500; +} + +.uppercase { + text-transform: uppercase; +} + +.leading-5 { + line-height: 1.25rem; +} + +.leading-6 { + line-height: 1.5rem; +} + +.leading-relaxed { + line-height: 1.625; +} + +.tracking-wider { + letter-spacing: 0.05em; +} + +.text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity, 1)); +} + +.text-blue-600 { + --tw-text-opacity: 1; + color: rgb(37 99 235 / var(--tw-text-opacity, 1)); +} + +.text-blue-700 { + --tw-text-opacity: 1; + color: rgb(29 78 216 / var(--tw-text-opacity, 1)); +} + +.text-blue-800 { + --tw-text-opacity: 1; + color: rgb(30 64 175 / var(--tw-text-opacity, 1)); +} + +.text-blue-900 { + --tw-text-opacity: 1; + color: rgb(30 58 138 / var(--tw-text-opacity, 1)); +} + +.text-blue-950 { + --tw-text-opacity: 1; + color: rgb(23 37 84 / var(--tw-text-opacity, 1)); +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity, 1)); +} + +.text-gray-600 { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity, 1)); +} + +.text-gray-700 { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); +} + +.text-gray-800 { + --tw-text-opacity: 1; + color: rgb(31 41 55 / var(--tw-text-opacity, 1)); +} + +.text-gray-900 { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} + +.text-green-800 { + --tw-text-opacity: 1; + color: rgb(22 101 52 / var(--tw-text-opacity, 1)); +} + +.text-green-900 { + --tw-text-opacity: 1; + color: rgb(20 83 45 / var(--tw-text-opacity, 1)); +} + +.text-liteblue { + --tw-text-opacity: 1; + color: rgb(0 102 204 / var(--tw-text-opacity, 1)); +} + +.text-margeblue { + --tw-text-opacity: 1; + color: rgb(62 95 111 / var(--tw-text-opacity, 1)); +} + +.text-orange-500 { + --tw-text-opacity: 1; + color: rgb(249 115 22 / var(--tw-text-opacity, 1)); +} + +.text-purple-800 { + --tw-text-opacity: 1; + color: rgb(107 33 168 / var(--tw-text-opacity, 1)); +} + +.text-purple-900 { + --tw-text-opacity: 1; + color: rgb(88 28 135 / var(--tw-text-opacity, 1)); +} + +.text-red-700 { + --tw-text-opacity: 1; + color: rgb(185 28 28 / var(--tw-text-opacity, 1)); +} + +.text-red-800 { + --tw-text-opacity: 1; + color: rgb(153 27 27 / var(--tw-text-opacity, 1)); +} + +.text-red-900 { + --tw-text-opacity: 1; + color: rgb(127 29 29 / var(--tw-text-opacity, 1)); +} + +.text-slate-600 { + --tw-text-opacity: 1; + color: rgb(71 85 105 / var(--tw-text-opacity, 1)); +} + +.text-slate-700 { + --tw-text-opacity: 1; + color: rgb(51 65 85 / var(--tw-text-opacity, 1)); +} + +.text-slate-800 { + --tw-text-opacity: 1; + color: rgb(30 41 59 / var(--tw-text-opacity, 1)); +} + +.text-slate-900 { + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} + +.text-yellow-700 { + --tw-text-opacity: 1; + color: rgb(161 98 7 / var(--tw-text-opacity, 1)); +} + +.text-yellow-900 { + --tw-text-opacity: 1; + color: rgb(113 63 18 / var(--tw-text-opacity, 1)); +} + +.underline { + text-decoration-line: underline; +} + +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-inner { + --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + +.backdrop-blur-sm { + --tw-backdrop-blur: blur(4px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} + +.hover\:bg-blue-700:hover { + --tw-bg-opacity: 1; + background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1)); +} + +.hover\:bg-gray-100:hover { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.hover\:bg-gray-50:hover { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} + +.hover\:text-blue-800:hover { + --tw-text-opacity: 1; + color: rgb(30 64 175 / var(--tw-text-opacity, 1)); +} + +.hover\:text-gray-900:hover { + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} + +.hover\:text-liteblue:hover { + --tw-text-opacity: 1; + color: rgb(0 102 204 / var(--tw-text-opacity, 1)); +} + +.hover\:text-red-600:hover { + --tw-text-opacity: 1; + color: rgb(220 38 38 / var(--tw-text-opacity, 1)); +} + +.hover\:text-slate-200:hover { + --tw-text-opacity: 1; + color: rgb(226 232 240 / var(--tw-text-opacity, 1)); +} + +.hover\:underline:hover { + text-decoration-line: underline; +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-blue-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); +} + +.focus\:ring-offset-2:focus { + --tw-ring-offset-width: 2px; +} + +.has-\[\:checked\]\:bg-gray-100:has(:checked) { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.has-\[\:checked\]\:bg-slate-200:has(:checked) { + --tw-bg-opacity: 1; + background-color: rgb(226 232 240 / var(--tw-bg-opacity, 1)); +} + +.has-\[\:checked\]\:text-slate-900:has(:checked) { + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.has-\[\:checked\]\:underline:has(:checked) { + text-decoration-line: underline; +} + +@media (min-width: 440px) { + .xs\:gap-2 { + gap: 0.5rem; + } +} + +@media (min-width: 640px) { + .sm\:static { + position: static; + } + + .sm\:m-0 { + margin: 0px; + } + + .sm\:mr-3 { + margin-right: 0.75rem; + } + + .sm\:block { + display: block; + } + + .sm\:grid { + display: grid; + } + + .sm\:hidden { + display: none; + } + + .sm\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); + } + + .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); + } + + .sm\:border-none { + border-style: none; + } + + .sm\:bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); + } + + .sm\:p-0 { + padding: 0px; + } + + .sm\:p-3 { + padding: 0.75rem; + } + + .sm\:px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + + .sm\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .sm\:text-xl { + font-size: 1.25rem; + line-height: 1.75rem; + } +} + +@media (min-width: 768px) { + .md\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .md\:mr-8 { + margin-right: 2rem; + } + + .md\:block { + display: block; + } + + .md\:inline { + display: inline; + } + + .md\:w-64 { + width: 16rem; + } + + .md\:w-auto { + width: auto; + } + + .md\:max-w-lg { + max-width: 32rem; + } + + .md\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:place-items-start { + place-items: start; + } + + .md\:gap-8 { + gap: 2rem; + } + + .md\:space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:space-x-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(2rem * var(--tw-space-x-reverse)); + margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .md\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .md\:text-xl { + font-size: 1.25rem; + line-height: 1.75rem; + } +} + +@media (min-width: 1280px) { + .xl\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } +} + +.\[\&\:not\(\:last-child\)\]\:border-b:not(:last-child) { + border-bottom-width: 1px; +} \ No newline at end of file diff --git a/code/services-application/search-service/resources/static/search/css/style.css b/code/services-application/search-service/resources/static/search/css/style.css index c93ff168..562f8310 100644 --- a/code/services-application/search-service/resources/static/search/css/style.css +++ b/code/services-application/search-service/resources/static/search/css/style.css @@ -566,6 +566,14 @@ video { border-width: 0; } +.visible { + visibility: visible; +} + +.static { + position: static; +} + .fixed { position: fixed; } @@ -598,6 +606,10 @@ video { top: 0px; } +.top-2 { + top: 0.5rem; +} + .top-4 { top: 1rem; } @@ -721,6 +733,10 @@ video { margin-top: 0.25rem; } +.mt-10 { + margin-top: 2.5rem; +} + .mt-2 { margin-top: 0.5rem; } @@ -785,6 +801,10 @@ video { width: 16rem; } +.w-96 { + width: 24rem; +} + .w-full { width: 100%; } @@ -997,6 +1017,10 @@ video { border-radius: 9999px; } +.rounded-lg { + border-radius: 0.5rem; +} + .rounded-md { border-radius: 0.375rem; } @@ -1013,6 +1037,10 @@ video { border-bottom-width: 1px; } +.border-none { + border-style: none; +} + .border-blue-200 { --tw-border-opacity: 1; border-color: rgb(191 219 254 / var(--tw-border-opacity, 1)); @@ -1145,6 +1173,10 @@ video { background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1)); } +.p-0 { + padding: 0px; +} + .p-1 { padding: 0.25rem; } @@ -1333,11 +1365,21 @@ video { color: rgb(29 78 216 / var(--tw-text-opacity, 1)); } +.text-blue-800 { + --tw-text-opacity: 1; + color: rgb(30 64 175 / var(--tw-text-opacity, 1)); +} + .text-blue-900 { --tw-text-opacity: 1; color: rgb(30 58 138 / var(--tw-text-opacity, 1)); } +.text-blue-950 { + --tw-text-opacity: 1; + color: rgb(23 37 84 / var(--tw-text-opacity, 1)); +} + .text-gray-500 { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity, 1)); @@ -1363,6 +1405,11 @@ video { color: rgb(17 24 39 / var(--tw-text-opacity, 1)); } +.text-green-800 { + --tw-text-opacity: 1; + color: rgb(22 101 52 / var(--tw-text-opacity, 1)); +} + .text-green-900 { --tw-text-opacity: 1; color: rgb(20 83 45 / var(--tw-text-opacity, 1)); @@ -1383,6 +1430,11 @@ video { color: rgb(249 115 22 / var(--tw-text-opacity, 1)); } +.text-purple-800 { + --tw-text-opacity: 1; + color: rgb(107 33 168 / var(--tw-text-opacity, 1)); +} + .text-purple-900 { --tw-text-opacity: 1; color: rgb(88 28 135 / var(--tw-text-opacity, 1)); @@ -1454,6 +1506,12 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + .shadow-md { --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); @@ -1649,6 +1707,14 @@ video { margin-bottom: 1rem; } + .md\:ml-16 { + margin-left: 4rem; + } + + .md\:mr-16 { + margin-right: 4rem; + } + .md\:mr-8 { margin-right: 2rem; } @@ -1661,6 +1727,10 @@ video { display: inline; } + .md\:w-32 { + width: 8rem; + } + .md\:w-64 { width: 16rem; } diff --git a/code/services-application/search-service/resources/static/search/js/mobile-button.js b/code/services-application/search-service/resources/static/search/js/mobile-button.js new file mode 100644 index 00000000..d9213c47 --- /dev/null +++ b/code/services-application/search-service/resources/static/search/js/mobile-button.js @@ -0,0 +1,6 @@ +document.getElementById("filter-button").addEventListener("click", function() { + document.getElementById("mobile-menu").classList.toggle("hidden"); +}); +document.getElementById("hide-filter-button").addEventListener("click", function() { + document.getElementById("mobile-menu").classList.toggle("hidden"); +}); \ No newline at end of file diff --git a/code/services-application/search-service/resources/static/search/js/typeahead.js b/code/services-application/search-service/resources/static/search/js/typeahead.js new file mode 100644 index 00000000..4f1df793 --- /dev/null +++ b/code/services-application/search-service/resources/static/search/js/typeahead.js @@ -0,0 +1,105 @@ +const searchInput = document.getElementById('searchInput'); +const suggestionsContainer = document.getElementById('searchSuggestions'); +let currentSuggestions = []; +let selectedIndex = -1; + +// Debounce function to limit API calls +function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +// Fetch suggestions from the API +async function fetchSuggestions(partial) { + if (!partial) { + suggestionsContainer.classList.add('hidden'); + return; + } + + try { + const response = await fetch(`/suggest/?partial=${encodeURIComponent(partial)}`); + if (!response.ok) throw new Error('Network response was not ok'); + + const suggestions = await response.json(); + currentSuggestions = suggestions; + displaySuggestions(suggestions); + } catch (error) { + console.error('Error fetching suggestions:', error); + } +} + +// Display suggestions in the dropdown +function displaySuggestions(suggestions) { + if (!suggestions.length) { + suggestionsContainer.classList.add('hidden'); + return; + } + + suggestionsContainer.innerHTML = suggestions.map((suggestion, index) => ` +
+ ${suggestion} +
+ `).join(''); + + suggestionsContainer.classList.remove('hidden'); + + // Add click handlers to suggestions + document.querySelectorAll('.suggestion').forEach(el => { + el.addEventListener('click', () => { + searchInput.value = el.textContent.trim(); + suggestionsContainer.classList.add('hidden'); + }); + }); +} + +// Handle keyboard navigation +searchInput.addEventListener('keydown', (e) => { + if (!currentSuggestions.length) return; + + switch(e.key) { + case 'ArrowDown': + e.preventDefault(); + selectedIndex = Math.min(selectedIndex + 1, currentSuggestions.length - 1); + displaySuggestions(currentSuggestions); + break; + case 'ArrowUp': + e.preventDefault(); + selectedIndex = Math.max(selectedIndex - 1, -1); + displaySuggestions(currentSuggestions); + break; + case 'Enter': + if (selectedIndex >= 0) { + searchInput.value = currentSuggestions[selectedIndex]; + suggestionsContainer.classList.add('hidden'); + selectedIndex = -1; + } + break; + case 'Escape': + suggestionsContainer.classList.add('hidden'); + selectedIndex = -1; + break; + } +}); + +// Handle input changes with debouncing +searchInput.addEventListener('input', debounce((e) => { + selectedIndex = -1; + fetchSuggestions(e.target.value.trim()); +}, 150)); + +// Close suggestions when clicking outside +document.addEventListener('click', (e) => { + if (!suggestionsContainer.contains(e.target) && e.target !== searchInput) { + suggestionsContainer.classList.add('hidden'); + } +}); \ No newline at end of file diff --git a/code/services-application/search-service/resources/static/search/main.js b/code/services-application/search-service/resources/static/search/main.js deleted file mode 100644 index a6bd3157..00000000 --- a/code/services-application/search-service/resources/static/search/main.js +++ /dev/null @@ -1,13 +0,0 @@ -// This sets the data-has-js attribute on the html tag to true, so we can style the page with the assumption that -// the browser supports JS. This is a progressive enhancement, so the page will still work without JS. -document.documentElement.setAttribute('data-has-js', 'true'); - -// To prevent the filter menu from being opened when the user hits enter on the search box, we need to add a keydown -// handler to the search box that stops the event from propagating. Janky hack, but it works. -document.getElementById('query').addEventListener('keydown', e=> { - if (e.key === "Enter") { - const form = document.getElementById('search-form'); - form.submit(); - e.preventDefault(); - } -}); diff --git a/code/services-application/search-service/resources/static/search/menu.js b/code/services-application/search-service/resources/static/search/menu.js deleted file mode 100644 index c257754a..00000000 --- a/code/services-application/search-service/resources/static/search/menu.js +++ /dev/null @@ -1,91 +0,0 @@ -function hideMenu() { - document.getElementById('filters').style.display = 'none'; -} -function showMenu() { - document.getElementById('filters').style.display = 'block'; - - // Defer creation of the close button until the menu is opened. This is needed because the script for creating - // the filter button is run early to avoid layout shifts. - - if (document.getElementById('menu-close') === null) { - registerCloseButton(); - } - - document.getElementById('filters').style.display = 'block'; - - // scroll to the top of the page so the user can see the filters - window.scrollTo({ - top: 0, - left: 0, - behavior: "instant", - }); -} - -const registerCloseButton = () => { - // Add a button to close the filters for mobile; we do this in js to not pollute the DOM for text-only browsers - const closeButton = document.createElement('button'); - closeButton.setAttribute('id', 'menu-close'); - closeButton.setAttribute('title', 'Close the menu'); - closeButton.setAttribute('aria-controls', '#filters'); - closeButton.innerHTML = 'X'; - closeButton.onclick = (event) => { - hideMenu(); - event.stopPropagation(); - return false; - } - document.getElementById('filters').getElementsByTagName('h2')[0].append(closeButton); -} - -// Add a button to open the filters for mobile; we do this in js to not pollute the DOM for text-only browsers -const filtersButton = document.createElement('button'); -filtersButton.setAttribute('id', 'mcfeast'); -filtersButton.setAttribute('aria-controls', '#filters'); -filtersButton.innerHTML = 'Ξ'; -filtersButton.setAttribute('title', 'Open the filters menu'); -filtersButton.onclick = (event) => { - showMenu(); - event.stopPropagation(); - return false; -} - -document.getElementById('search-box').getElementsByTagName('h1')[0].append(filtersButton); - -// swipe affordances for mobile -if (window.matchMedia('(pointer: coarse)').matches) { - // capture swipes to the left and right to open and close the filters - let touchStartX = 0; - let touchEndX = 0; - let touchStartY = 0; - let touchEndY = 0; - - const swipeThreshold = 100; - const maxVerticalDistance = 75; - document.addEventListener('touchstart', (event) => { - touchStartX = event.changedTouches[0].screenX; - touchStartY = event.changedTouches[0].screenY; - }); - document.addEventListener('touchend', (event) => { - touchEndX = event.changedTouches[0].screenX; - touchEndY = event.changedTouches[0].screenY; - let verticalDistance = Math.abs(touchStartY - touchEndY); - - if (verticalDistance > maxVerticalDistance) { - return; - } - - if (touchEndX - touchStartX > swipeThreshold) { - hideMenu(); - event.stopPropagation(); - } else if (touchStartX - touchEndX > swipeThreshold) { - showMenu(); - event.stopPropagation(); - } - }); - - - // Add a floating panel to the bottom of the page to show a message when the filters are hidden - const floatingPanel = document.createElement('div'); - floatingPanel.setAttribute('style', 'position: fixed; bottom: 0; left: 0; right: 0; backdrop-filter: blur(10px); padding: 0.25em; text-align: center; display: block; border-top: 1px solid #ccc; box-shadow: 0 0 -5px #eee;'); - floatingPanel.innerHTML = '← swipe left to open filters ←'; - document.body.appendChild(floatingPanel); -} \ No newline at end of file diff --git a/code/services-application/search-service/resources/static/search/theme.js b/code/services-application/search-service/resources/static/search/theme.js deleted file mode 100644 index 73fdcd26..00000000 --- a/code/services-application/search-service/resources/static/search/theme.js +++ /dev/null @@ -1,57 +0,0 @@ -function getTheme() { - const theme = window.localStorage.getItem('theme'); - - // if a valid theme is set in localStorage, return it - if (theme === 'dark' || theme === 'light') { - return { value: theme, system: false }; - } - - // if matchMedia is supported and OS theme is dark - if (window.matchMedia('(prefers-color-scheme: dark)').matches) { - return { value: 'dark', system: true }; - } - - return { value: 'light', system: true }; -} - -function setTheme(value) { - if (value === 'dark' || value === 'light') { - window.localStorage.setItem('theme', value); - } else { - window.localStorage.removeItem('theme'); - } - - const theme = getTheme(); - - document.documentElement.setAttribute('data-theme', theme.value); -} - -function initializeTheme() { - const themeSelect = document.getElementById('theme-select'); - - const theme = getTheme(); - - document.documentElement.setAttribute('data-theme', theme.value); - - // system is selected by default in the themeSwitcher so ignore it here - if (!theme.system) { - themeSelect.value = theme.value; - } - - themeSelect.addEventListener('change', e => { - setTheme(e.target.value); - }); - - const mql = window.matchMedia('(prefers-color-scheme: dark)'); - - // if someone changes their theme at the OS level we need to update - // their theme immediately if they're using their OS theme - mql.addEventListener('change', e => { - if (themeSelect.value !== 'system') return; - - if (e.matches) setTheme('dark'); - else setTheme('light'); - }); -} - -initializeTheme(); \ No newline at end of file diff --git a/code/services-application/search-service/resources/static/search/tts.js b/code/services-application/search-service/resources/static/search/tts.js deleted file mode 100644 index 20ee9f37..00000000 --- a/code/services-application/search-service/resources/static/search/tts.js +++ /dev/null @@ -1,112 +0,0 @@ - -function setupTypeahead() { - const query = document.getElementById('query'); - query.setAttribute('autocomplete', 'off'); - const queryBox = document.getElementById('suggestions-anchor'); - let timer = null; - - function fetchSuggestions(e) { - if (timer != null) { - clearTimeout(timer); - } - timer = setTimeout(() => { - const req = new XMLHttpRequest(); - - req.onload = rsp => { - let items = JSON.parse(req.responseText); - - const old = document.getElementById('suggestions'); - if (old != null) old.remove(); - - - if (items.length === 0) return; - - const suggestions = document.createElement('div'); - suggestions.setAttribute('id', 'suggestions'); - suggestions.setAttribute('class', 'suggestions'); - - for (i=0;i { - if (e.key === "ArrowDown") { - if (e.target.nextElementSibling != null) { - e.target.nextElementSibling.focus(); - } - - e.preventDefault() - } - else if (e.key === "ArrowUp") { - if (e.target.previousElementSibling != null) { - e.target.previousElementSibling.focus(); - } - else { - query.focus(); - } - e.preventDefault() - } - else if (e.key === "Escape") { - var suggestions = document.getElementById('suggestions'); - if (suggestions != null) { - suggestions.remove(); - } - query.focus(); - e.preventDefault(); - } - }); - item.addEventListener('keypress', e=> { - if (e.key === "Enter") { - suggestionClickHandler(e); - } - }); - suggestions.appendChild(item); - } - queryBox.prepend(suggestions); - } - - req.open("GET", "/suggest/?partial="+encodeURIComponent(query.value)); - req.send(); - }, 250); - } - query.addEventListener("input", fetchSuggestions); - query.addEventListener("click", e=> { - const suggestions = document.getElementById('suggestions'); - if (suggestions != null) { - suggestions.remove(); - } - }); - query.addEventListener("keydown", e => { - if (e.key === "ArrowDown") { - const suggestions = document.getElementById('suggestions'); - if (suggestions != null) { - suggestions.childNodes[0].focus(); - } - else { - fetchSuggestions(e); - } - e.preventDefault() - } - else if (e.key === "Escape") { - const suggestions = document.getElementById('suggestions'); - if (suggestions != null) { - suggestions.remove(); - } - query.focus(); - e.preventDefault(); - } - }); -} - -if(!window.matchMedia("(pointer: coarse)").matches) { - setupTypeahead(); -} diff --git a/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java index e7881e5c..4e14d6b0 100644 --- a/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java +++ b/code/services-application/search-service/test/nu/marginalia/search/paperdoll/JtePaperDoll.java @@ -8,7 +8,10 @@ import gg.jte.resolve.DirectoryCodeResolver; import nu.marginalia.WebsiteUrl; import nu.marginalia.search.model.NavbarModel; import nu.marginalia.search.rendering.MockedSearchResults; +import nu.marginalia.service.server.StaticResources; import org.junit.jupiter.api.Test; +import spark.Request; +import spark.Response; import spark.Spark; import java.nio.file.Path; @@ -17,7 +20,7 @@ import java.util.Map; public class JtePaperDoll { final CodeResolver codeResolver = new DirectoryCodeResolver(Path.of(".").toAbsolutePath().resolve("resources/jte")); final TemplateEngine templateEngine = TemplateEngine.create(codeResolver, ContentType.Html); - + final StaticResources staticResources = new StaticResources(); private String render(String template, Object obj) { var str = new StringOutput(); templateEngine.render(template, obj, str); @@ -30,15 +33,27 @@ public class JtePaperDoll { return str.toString(); } + private Object serveStatic(Request request, Response response) { + String resource = request.params("resource"); + staticResources.serveStatic("search", resource, request, response); + return ""; + } + @Test public void searchResults() { + System.setProperty("test-env", "true"); System.out.println(Path.of(".").toAbsolutePath()); + Spark.staticFileLocation("static/search"); Spark.port(9999); Spark.after((rq, rs) -> { rs.header("Content-Encoding", "gzip"); }); + Spark.get("/suggest/", (rq, rs) -> { + rs.type("application/json"); + return "[\"pla\",\"plaa\",\"plab\",\"plac\",\"pla2b\",\"pla2l\",\"plaaz\",\"plac1\",\"placa\",\"place\"]"; + }); Spark.get("/", (rq, rs) -> MockedSearchResults.mockRegularSearchResults(), ret -> this.render("serp/main.jte", Map.of("results", ret, "navbar", NavbarModel.SEARCH)) @@ -118,6 +133,7 @@ public class JtePaperDoll { }); + Spark.init(); for (;;); From a89ed6fa9fcb2bcb02e9fdfb272e715350c41753 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 9 Dec 2024 14:45:45 +0100 Subject: [PATCH 021/177] (search) Fix rendering on site overview, more dense serp layout on mobile --- .../nu/marginalia/search/model/UrlDetails.java | 14 +++----------- .../search-service/resources/jte/serp/main.jte | 4 ++-- .../resources/jte/serp/part/result.jte | 10 +++++----- .../search-service/resources/jte/siteinfo/main.jte | 2 +- .../resources/jte/siteinfo/view/backlinks.jte | 8 ++++---- .../resources/jte/siteinfo/view/docs.jte | 8 ++++---- .../resources/static/search/css/style.css | 4 ---- 7 files changed, 19 insertions(+), 31 deletions(-) diff --git a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java index 10023ac1..c41dfdea 100644 --- a/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java +++ b/code/services-application/search-service/java/nu/marginalia/search/model/UrlDetails.java @@ -89,7 +89,7 @@ public class UrlDetails implements Comparable { /** Helper that inserts hyphenation hints and escapes * semantically meaningful codepoints into entity codes */ - public String titleHyphenHints() { + public String displayTitle() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < title.length(); i++) { @@ -118,7 +118,7 @@ public class UrlDetails implements Comparable { /** Helper that inserts hyphenation hints and escapes * semantically meaningful codepoints into entity codes */ - public String descriptionHyphenHints() { + public String displayDescription() { StringBuilder sb = new StringBuilder(); int distSinceSpace = 0; @@ -155,18 +155,11 @@ public class UrlDetails implements Comparable { /** Helper that inserts hyphenation hints and escapes * semantically meaningful codepoints into entity codes */ - public String urlHyphenHints() { + public String displayUrl() { StringBuilder sb = new StringBuilder(); String urlStr = url.toString(); - int distSinceSpace = 0; for (int i = 0; i < urlStr.length(); i++) { char c = urlStr.charAt(i); - if (Character.isSpaceChar(c)) { - distSinceSpace = 0; - } - else { - distSinceSpace ++; - } if (c == '<') { sb.append("<"); @@ -180,7 +173,6 @@ public class UrlDetails implements Comparable { else if (!Character.isAlphabetic(c) && !Character.isWhitespace(c)) { sb.append(c); sb.append("­"); - distSinceSpace = 0; } else { sb.append(c); diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte index 6c0e6eab..4657774c 100644 --- a/code/services-application/search-service/resources/jte/serp/main.jte +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -38,7 +38,7 @@ @template.serp.part.sidebar(filters = results.getFilters()) -
+
@if (results.hasFocusDomain())
@@ -48,7 +48,7 @@
@endif -
+
@for(ClusteredUrlDetails details : results.results) @template.serp.part.result(result = details, parameters = results.getParams(), domainSearch = results.hasFocusDomain()) diff --git a/code/services-application/search-service/resources/jte/serp/part/result.jte b/code/services-application/search-service/resources/jte/serp/part/result.jte index 70fa8e26..6c85ca21 100644 --- a/code/services-application/search-service/resources/jte/serp/part/result.jte +++ b/code/services-application/search-service/resources/jte/serp/part/result.jte @@ -8,7 +8,7 @@
-
+
@@ -17,12 +17,12 @@

- $unsafe{result.first.titleHyphenHints()} + $unsafe{result.first.displayTitle()}

$unsafe{result.first.urlHyphenHints()} + rel="noopener noreferrer" tabindex="-1">$unsafe{result.first.displayUrl()}
@@ -31,7 +31,7 @@

- $unsafe{result.first.descriptionHyphenHints()} + $unsafe{result.first.displayDescription()}

@@ -56,7 +56,7 @@ diff --git a/code/services-application/search-service/resources/jte/siteinfo/main.jte b/code/services-application/search-service/resources/jte/siteinfo/main.jte index b4988e4c..5f4dbb48 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/main.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/main.jte @@ -14,7 +14,7 @@ @template.part.navbar(navbar = navbar)
-
+
${model.domain()} diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte index db19233b..709a0a92 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/backlinks.jte @@ -27,14 +27,14 @@
@for (UrlDetails details : group.urlDetails()) -
${details.title}
+
$unsafe{details.displayTitle()}
- ${details.description} + $unsafe{details.displayDescription()}
@endfor diff --git a/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte b/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte index ac5a8f41..d8288752 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/view/docs.jte @@ -24,17 +24,17 @@

- ${details.description} + $unsafe{details.displayDescription()}

diff --git a/code/services-application/search-service/resources/static/search/css/style.css b/code/services-application/search-service/resources/static/search/css/style.css index 562f8310..2729d2f4 100644 --- a/code/services-application/search-service/resources/static/search/css/style.css +++ b/code/services-application/search-service/resources/static/search/css/style.css @@ -1173,10 +1173,6 @@ video { background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1)); } -.p-0 { - padding: 0px; -} - .p-1 { padding: 0.25rem; } From 187eea43a46a89a7acd71bce4e6e1b3ff89ccb20 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 9 Dec 2024 14:46:02 +0100 Subject: [PATCH 022/177] (search) Remove redundant @if --- .../search-service/resources/jte/siteinfo/main.jte | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/services-application/search-service/resources/jte/siteinfo/main.jte b/code/services-application/search-service/resources/jte/siteinfo/main.jte index 5f4dbb48..a4a8796f 100644 --- a/code/services-application/search-service/resources/jte/siteinfo/main.jte +++ b/code/services-application/search-service/resources/jte/siteinfo/main.jte @@ -124,8 +124,6 @@ @template.siteinfo.view.reportDomain(reportDomain = reportDomain) @elseif (model instanceof SearchSiteInfoService.Backlinks backlinks) @template.siteinfo.view.backlinks(backlinks = backlinks) - @elseif (model instanceof SearchSiteInfoService.ReportDomain reportDomain) - @template.siteinfo.view.reportDomain(reportDomain = reportDomain) @elseif (model instanceof SearchSiteInfoService.Docs docs) @template.siteinfo.view.docs(docs = docs) @endif From 79500b8fbc131cf38a88e2e2e06cbecd4ded4615 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 9 Dec 2024 14:55:37 +0100 Subject: [PATCH 023/177] (search) Move search bar back up top on mobile, put filter buttom at the bottom instead. --- .../search-service/resources/jte/serp/first.jte | 4 ++-- .../search-service/resources/jte/serp/main.jte | 8 +++----- .../search-service/resources/jte/serp/part/searchform.jte | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/code/services-application/search-service/resources/jte/serp/first.jte b/code/services-application/search-service/resources/jte/serp/first.jte index f0e43456..afca013f 100644 --- a/code/services-application/search-service/resources/jte/serp/first.jte +++ b/code/services-application/search-service/resources/jte/serp/first.jte @@ -18,8 +18,8 @@
-
- @template.serp.part.searchform(query = "", profile = SearchProfile.NO_FILTER.filterId, filters = new SearchFilters(websiteUrl)) +
+ @template.serp.part.searchform(query = "", profile = SearchProfile.NO_FILTER.filterId, filters = new SearchFilters(websiteUrl))
diff --git a/code/services-application/search-service/resources/jte/serp/main.jte b/code/services-application/search-service/resources/jte/serp/main.jte index 4657774c..1da8c877 100644 --- a/code/services-application/search-service/resources/jte/serp/main.jte +++ b/code/services-application/search-service/resources/jte/serp/main.jte @@ -18,17 +18,15 @@
- -
+ +
@template.serp.part.searchform(query = results.getParams().query(), profile = results.getProfile(), filters = results.getFilters())
-
- -
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 88f43a5c..d61921e0 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 @@ -27,7 +27,7 @@ id="searchInput" /> @endif - +
- diff --git a/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte b/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte index 7f929a46..d30eb3bb 100644 --- a/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte +++ b/code/services-application/search-service/resources/jte/serp/part/mobile-menu.jte @@ -5,8 +5,8 @@

+x)Q^f=q# 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 literal 0 HcmV?d00001 diff --git a/code/services-application/search-service/resources/static/search/webfonts/fa-solid-900.woff2 b/code/services-application/search-service/resources/static/search/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..42eaaa697f0e529c155842e489cb25962a25177d GIT binary patch literal 158224 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