diff --git a/app/models/api/results/HighlightedField.java b/app/models/api/results/HighlightedField.java index 8a34d8965..d06694b78 100644 --- a/app/models/api/results/HighlightedField.java +++ b/app/models/api/results/HighlightedField.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; public class HighlightedField { private final MessageResult messageResult; @@ -32,8 +33,8 @@ public HighlightedField(final MessageResult messageResult, final String field) { this.field = field; } - public List getChunks() { - final String message = (String) messageResult.getFields().get(field); + public List getChunks(final Map fields) { + final String message = (String) fields.get(field); final List list = new ArrayList<>(); final List rangesList = messageResult.getHighlightRanges().get(field); diff --git a/app/models/api/results/MessageResult.java b/app/models/api/results/MessageResult.java index daf8ecde1..086496982 100755 --- a/app/models/api/results/MessageResult.java +++ b/app/models/api/results/MessageResult.java @@ -183,8 +183,8 @@ public Map> getHighlightRanges() { return highlightRanges; } - public boolean hasHighlightedFields() { - return highlightRanges != null; + public boolean hasHighlightedField(String field) { + return highlightRanges != null && highlightRanges.containsKey(field); } public HighlightedField getHighlightedField(String field) { diff --git a/app/views/search/results.scala.html b/app/views/search/results.scala.html index 6371f8958..a9db87a5f 100755 --- a/app/views/search/results.scala.html +++ b/app/views/search/results.scala.html @@ -377,9 +377,9 @@

class="result-td-36cd38f49b9afa08222c0dc9ebfe35eb">@r.getFields.get("source") - @if(r.hasHighlightedFields) { + @if(r.hasHighlightedField("message")) { @* Need to use map{} here because a for() loop would produce unwanted newlines and thus extra spaces in the message. *@ - @{r.getHighlightedField("message").getChunks.map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}} + @{r.getHighlightedField("message").getChunks(r.getFields).map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}} } else { @r.getFields.get("message") } @@ -389,7 +389,14 @@

@if(!f.isStandardSelected) { @r.getFormattedFields.get(f.getName) + > + @if(r.hasHighlightedField(f.getName)) { + @* Need to use map{} here because a for() loop would produce unwanted newlines and thus extra spaces in the message. *@ + @{r.getHighlightedField(f.getName).getChunks(r.getFormattedFields).map {x => if(x.avoidHtmlEscape) { Html(x.getString) } else { x.getString }}} + } else { + @r.getFormattedFields.get(f.getName) + } + } }