Skip to content

Commit

Permalink
Fix order of facet entries
Browse files Browse the repository at this point in the history
- Don't sort buckets, leave order by doc count
- First show selected top-level, then other selected, then rest

See #42
  • Loading branch information
fsteeg committed Mar 21, 2018
1 parent 1741c37 commit e8b41a1
Showing 1 changed file with 36 additions and 14 deletions.
50 changes: 36 additions & 14 deletions app/views/search.scala.html
Expand Up @@ -50,22 +50,42 @@
</tr>
}

@links(buckets: Seq[JsValue], key: String) = {
@for(bucket <- buckets; term = (bucket \ "key").as[String];
@selectedTerm(key: String, term: String) = {
@term
<a href='@routes.HomeController.search(q, f.replaceAll("( ?AND ?)?"+key+":"+term+"( ?AND ?)?", ""), from, size)'>
<span class="badge">Filter entfernen <span class="glyphicon glyphicon-remove"></span></span>
</a>
<br/>
}

@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)) {
<i class='@iconFor(Seq(term))' aria-hidden='true' title='@term'></i>
@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) {
<i class='@iconFor(Seq(term))' aria-hidden='true' title='@term'></i>
}
@if(selected){
@term
<a href='@routes.HomeController.search(q, f.replaceAll("( ?AND ?)?"+key+":"+term+"( ?AND ?)?", ""), from, size)'>
<span class="badge">Filter entfernen <span class="glyphicon glyphicon-remove"></span></span>
</a>
} else {
if !f.contains(key+":"+term)) {
@if(!f.contains(key+":")){<i class='@iconFor(Seq(term))' aria-hidden='true' title='@term'></i>}
@if(!f.isEmpty()){&rdsh;&nbsp;}<a href='@routes.HomeController.search(q, (if(!f.isEmpty){f+" AND "} else {""}) + key + ":" + term, from, size)'>@term (@count)</a>
}<br/>
<br/>
}
}

Expand Down Expand Up @@ -125,7 +145,9 @@
@defining(("type", (Json.parse(result) \ "aggregation" \ "type").asOpt[Seq[JsValue]].getOrElse(Seq()))) { case (jsKey, buckets) =>
@if(!buckets.isEmpty) {
<h4>Ergebnisse eingrenzen:</h4>
@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)
}
}
</p>
Expand Down

0 comments on commit e8b41a1

Please sign in to comment.