From e8b41a112d327b8af8ffa148f45e7fb699d92860 Mon Sep 17 00:00:00 2001 From: Fabian Steeg Date: Wed, 21 Mar 2018 11:46:18 +0100 Subject: [PATCH] Fix order of facet entries - Don't sort buckets, leave order by doc count - First show selected top-level, then other selected, then rest See https://github.com/hbz/lobid-gnd/issues/42 --- app/views/search.scala.html | 50 ++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/app/views/search.scala.html b/app/views/search.scala.html index c2b8b0f..d551106 100644 --- a/app/views/search.scala.html +++ b/app/views/search.scala.html @@ -50,22 +50,42 @@ } -@links(buckets: Seq[JsValue], key: String) = { - @for(bucket <- buckets; term = (bucket \ "key").as[String]; +@selectedTerm(key: String, term: String) = { + @term + + Filter entfernen + +
+} + +@topLevelSelected(buckets: Seq[JsValue], key: String = "type") = { + @for(bucket <- buckets; + term = (bucket \ "key").as[String]; + if CONFIG.getStringList("topLevelTypes").contains(term); + if f.contains(key+":"+term)) { + + @selectedTerm(key, term) + } +} + +@subTypesSelected(buckets: Seq[JsValue], key: String = "type") = { + @for(bucket <- buckets; + term = (bucket \ "key").as[String]; + if !CONFIG.getStringList("topLevelTypes").contains(term); + if f.contains(key+":"+term)) { + @selectedTerm(key, term) + } +} + +@unselected(buckets: Seq[JsValue], key: String = "type") = { + @for(bucket <- buckets; + term = (bucket \ "key").as[String]; if CONFIG.getStringList("topLevelTypes").contains(term) || f.contains("type:"); count = (bucket \ "doc_count").as[Int]; - selected = f.contains(key+":"+term)) { - @if(!f.contains(key+":") || selected) { - - } - @if(selected){ - @term - - Filter entfernen - - } else { + if !f.contains(key+":"+term)) { + @if(!f.contains(key+":")){} @if(!f.isEmpty()){↳ }@term (@count) - }
+
} } @@ -125,7 +145,9 @@ @defining(("type", (Json.parse(result) \ "aggregation" \ "type").asOpt[Seq[JsValue]].getOrElse(Seq()))) { case (jsKey, buckets) => @if(!buckets.isEmpty) {

Ergebnisse eingrenzen:

- @links(buckets.sortBy((bucket) => f.contains("type:"+(bucket \ "key").as[String]).toString + (bucket \ "doc_count").as[Int]).reverse, "type") + @topLevelSelected(buckets) + @subTypesSelected(buckets) + @unselected(buckets) } }