From aca8599d6effa993a72a2d04e35efd4f0e820473 Mon Sep 17 00:00:00 2001 From: efim Date: Sun, 24 Sep 2023 14:32:47 +0000 Subject: [PATCH] feat: infinite scroll --- .../src/main/resources/templates/index.html | 29 ++++++++++++++----- .../src/main/scala/example/Routes.scala | 17 +++++++++-- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/16-countries-page-from-api/src/main/resources/templates/index.html b/16-countries-page-from-api/src/main/resources/templates/index.html index a191adc..7538822 100644 --- a/16-countries-page-from-api/src/main/resources/templates/index.html +++ b/16-countries-page-from-api/src/main/resources/templates/index.html @@ -25,9 +25,11 @@ >

Where in the world?

- +

Dark Mode

@@ -42,10 +44,12 @@ >
- +
+
countries + case Some("") => countries case Some(selectedRegion) => countries.filter(_.region == selectedRegion) } + val startIndex = page * pageSize + val countriesPage = + selectedCountries.slice(startIndex, startIndex + pageSize) + // if current page is not full - there will be no next page + val nextPage = if (countriesPage.length == pageSize) page + 1 else -1 + context.setVariable("nextPage", nextPage) + context.setVariable("regionsSet", regions) - context.setVariable("countriesList", selectedCountries.asJava) + context.setVariable("countriesList", countriesPage.asJava) context.setVariable("allCountriesList", countries.asJava) context.setVariable("selectedRegion", region.getOrElse("")) @@ -60,7 +70,8 @@ case class Routes(countries: List[Country])(implicit context.setVariable("country", selectedCountry) val borderCountries = countries .filter(c => selectedCountry.borders.contains(c.alpha3Code)) - .map(_.name).asJava + .map(_.name) + .asJava context.setVariable("borderCountries", borderCountries)