This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git


The following commit(s) were added to refs/heads/master by this push:
     new c284dea  Fixing the ordering of insights and making the more info 
button an icon in the header
c284dea is described below

commit c284deab2dcee8a7fddb790f7fc16ed5df862b72
Author: Dan Klco <[email protected]>
AuthorDate: Thu Oct 18 17:05:14 2018 -0400

    Fixing the ordering of insights and making the more info button an icon
    in the header
---
 .../org/apache/sling/cms/insights/Insight.java     | 39 ++++++++--------------
 .../cms/core/insights/impl/InsightFactoryImpl.java |  8 ++++-
 .../providers/HTMLValdiatorInsightProvider.java    | 17 ++++++++--
 .../impl/providers/PageSpeedInsightProvider.java   |  2 +-
 .../components/insights/insight/insight.jsp        |  9 ++++-
 .../resources/jcr_root/libs/sling-cms/i18n.json    | 11 ++++--
 6 files changed, 52 insertions(+), 34 deletions(-)

diff --git a/api/src/main/java/org/apache/sling/cms/insights/Insight.java 
b/api/src/main/java/org/apache/sling/cms/insights/Insight.java
index 136ff16..b5c9beb 100644
--- a/api/src/main/java/org/apache/sling/cms/insights/Insight.java
+++ b/api/src/main/java/org/apache/sling/cms/insights/Insight.java
@@ -24,9 +24,9 @@ import java.util.List;
 /**
  * Simple POJO Model for holding an insight provider's results.
  */
-public class Insight implements Comparable<Insight> {
+public class Insight {
 
-    private boolean display = true;
+    private String moreDetailsLink;
     private Message primaryMessage;
     private InsightProvider provider;
     private InsightRequest request;
@@ -46,17 +46,11 @@ public class Insight implements Comparable<Insight> {
         scoreDetails.add(message);
     }
 
-    @Override
-    public int compareTo(Insight o) {
-        if (o.scored && !scored) {
-            return 1;
-        } else if (!o.scored && scored) {
-            return -1;
-        } else if (o.scored && scored) {
-            return (int) (score - o.score);
-        } else {
-            return provider.getTitle().compareTo(o.getProvider().getTitle());
-        }
+    /**
+     * @return the moreDetailsLink
+     */
+    public String getMoreDetailsLink() {
+        return moreDetailsLink;
     }
 
     public Message getPrimaryMessage() {
@@ -91,13 +85,6 @@ public class Insight implements Comparable<Insight> {
         return scoreDetails;
     }
 
-    /**
-     * @return the display
-     */
-    public boolean isDisplay() {
-        return display;
-    }
-
     public boolean isScored() {
         return scored;
     }
@@ -117,10 +104,10 @@ public class Insight implements Comparable<Insight> {
     }
 
     /**
-     * @param display the display to set
+     * @param moreDetailsLink the moreDetailsLink to set
      */
-    public void setDisplay(boolean display) {
-        this.display = display;
+    public void setMoreDetailsLink(String moreDetailsLink) {
+        this.moreDetailsLink = moreDetailsLink;
     }
 
     public void setPrimaryMessage(Message primaryMessage) {
@@ -180,9 +167,9 @@ public class Insight implements Comparable<Insight> {
      */
     @Override
     public String toString() {
-        return "Insight [display=" + display + ", primaryMessage=" + 
primaryMessage + ", provider=" + provider
-                + ", request=" + request + ", score=" + score + ", scored=" + 
scored + ", scoreDetails=" + scoreDetails
-                + ", skip=" + skip + ", succeeded=" + succeeded + "]";
+        return "Insight [primaryMessage=" + primaryMessage + ", provider=" + 
provider + ", request=" + request
+                + ", score=" + score + ", scored=" + scored + ", 
scoreDetails=" + scoreDetails + ", skip=" + skip
+                + ", moreDetailsLink=" + moreDetailsLink + ", succeeded=" + 
succeeded + "]";
     }
 
 }
diff --git 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
index e0b8573..798b332 100644
--- 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
+++ 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
@@ -20,6 +20,7 @@ package org.apache.sling.cms.core.insights.impl;
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -106,7 +107,12 @@ public class InsightFactoryImpl implements InsightFactory, 
ServiceListener {
     private List<Insight> getInsights(InsightRequest request) {
         List<Insight> insights = insightProviders.values().stream().filter(ip 
-> ip.isEnabled(request))
                 .map(ip -> 
ip.evaluateRequest(request)).collect(Collectors.toList());
-        Collections.sort(insights);
+        Collections.sort(insights, new Comparator<Insight>() {
+            @Override
+            public int compare(Insight o1, Insight o2) {
+                return 
o1.getProvider().getTitle().compareTo(o2.getProvider().getTitle());
+            }
+        });
         return insights;
     }
 
diff --git 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
index e849772..1e3be12 100644
--- 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
+++ 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
@@ -20,6 +20,8 @@ package org.apache.sling.cms.core.insights.impl.providers;
 
 import java.io.StringReader;
 import java.net.URLEncoder;
+import java.util.HashSet;
+import java.util.Set;
 
 import javax.json.Json;
 import javax.json.JsonArray;
@@ -102,13 +104,24 @@ public class HTMLValdiatorInsightProvider extends 
BaseInsightProvider {
             JsonArray messages = json.getJsonArray("messages");
             int errors = 0;
             int warnings = 0;
+            Set<String> msgSet = new HashSet<String>();
             for (int i = 0; i < messages.size(); i++) {
                 JsonObject message = messages.getJsonObject(i);
                 if ("error".equals(message.getString("type"))) {
                     errors++;
+                    String messageStr = message.getString("message");
+                    if (!msgSet.contains(messageStr)) {
+                        insight.addMessage(Message.danger(messageStr));
+                        msgSet.add(messageStr);
+                    }
                 } else if ("info".equals(message.getString("type")) && 
message.containsKey("subtype")
                         && "warning".equals(message.getString("subtype"))) {
                     warnings++;
+                    String messageStr = message.getString("message");
+                    if (!msgSet.contains(messageStr)) {
+                        insight.addMessage(Message.warn(messageStr));
+                        msgSet.add(messageStr);
+                    }
                 }
             }
             double score = 0.0;
@@ -133,8 +146,8 @@ public class HTMLValdiatorInsightProvider extends 
BaseInsightProvider {
                 score = 1.0;
             }
             insight.setScore(score);
-            
insight.addMessage(Message.defaultMsg("https://validator.w3.org/nu/?doc=";
-                    + 
URLEncoder.encode(pageRequest.getPage().getPublishedUrl(), 
Charsets.UTF_8.toString())));
+            insight.setMoreDetailsLink("https://validator.w3.org/nu/?doc=";
+                    + 
URLEncoder.encode(pageRequest.getPage().getPublishedUrl(), 
Charsets.UTF_8.toString()));
         }
 
         return insight;
diff --git 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
index 6914cbd..0036907 100644
--- 
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
+++ 
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
@@ -114,7 +114,7 @@ public class PageSpeedInsightProvider extends 
BaseInsightProvider {
             } else {
                 
insight.setPrimaryMessage(Message.success(dictionary.get(I18N_KEY_READABILITY_RESULT_SUCCESS)));
             }
-            
insight.addMessage(Message.defaultMsg(String.format(PAGESPEED_FORMAT, 
URLEncoder.encode(publishedUrl, "UTF-8"))));
+            insight.setMoreDetailsLink(String.format(PAGESPEED_FORMAT, 
URLEncoder.encode(publishedUrl, "UTF-8")));
 
             log.debug("Response parsed successfully");
 
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
index f56b343..c19ebc0 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
@@ -22,9 +22,16 @@
         <p>
             <sling:encode value="${insight.provider.title}" mode="HTML" />
             <c:if test="${insight.scored}">
-                <fmt:formatNumber type="percent" maxFractionDigits="2" 
value="${insight.score}" />
+                <span class="score" data-score="${insight.score}">
+                    <fmt:formatNumber type="percent" maxFractionDigits="2" 
value="${insight.score}" />
+                </span>
             </c:if>
         </p>
+        <c:if test="${not empty insight.moreDetailsLink}">
+            <a class="button ${insight.primaryMessage.styleClass}" 
href="${insight.moreDetailsLink}" target="_blank">
+                <em class="jam jam-info icon"></em>
+            </a>
+        </c:if>
     </div>
     <div class="message-body is-hidden" id="${insight.provider.id}-body">
         <strong><sling:encode value="${insight.primaryMessage.text}" 
mode="HTML" /></strong>
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
index b0edf2a..259d75c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
@@ -10,17 +10,22 @@
         ],
         "jcr:language": "en",
         "sling:resourceType": "sling-cms/components/cms/blank",
-        "slingcms-htmlvalidator-danger":{
+        "slingcms-insights-moredetails": {
+            "jcr:primaryType": "sling:MessageEntry",
+            "sling:message": "More Details",
+            "sling:key": "slingcms.insights.moredetails"
+        },
+        "slingcms-htmlvalidator-danger": {
             "jcr:primaryType": "sling:MessageEntry",
             "sling:message": "There were {0} validation errors and {1} 
warnings",
             "sling:key": "slingcms.htmlvalidator.danger"
         },
-        "slingcms-htmlvalidator-success":{
+        "slingcms-htmlvalidator-success": {
             "jcr:primaryType": "sling:MessageEntry",
             "sling:message": "HTML Validation successful!",
             "sling:key": "slingcms.htmlvalidator.success"
         },
-        "slingcms-htmlvalidator-warn":{
+        "slingcms-htmlvalidator-warn": {
             "jcr:primaryType": "sling:MessageEntry",
             "sling:message": "There were {0} validation warnings",
             "sling:key": "slingcms.htmlvalidator.warn"

Reply via email to