From dfef8a451181995c86f062002d7e467e1dd7dde4 Mon Sep 17 00:00:00 2001
From: Eike Cochu <eike@cochu.com>
Date: Sun, 10 Jan 2016 23:35:21 +0100
Subject: [PATCH] added gzip to rest service

all rest responses are now gzipped by default if supported
---
 .../main/java/de/vipra/rest/Application.java  |  3 ++
 vipra-ui/app/routes/articles/show.js          | 38 +++++-----------
 vipra-ui/app/styles/app.css                   |  3 ++
 vipra-ui/app/templates/articles/show.hbs      | 43 ++++++++++++++-----
 4 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/vipra-rest/src/main/java/de/vipra/rest/Application.java b/vipra-rest/src/main/java/de/vipra/rest/Application.java
index 3a105f81..56342a69 100644
--- a/vipra-rest/src/main/java/de/vipra/rest/Application.java
+++ b/vipra-rest/src/main/java/de/vipra/rest/Application.java
@@ -1,7 +1,9 @@
 package de.vipra.rest;
 
 import org.glassfish.jersey.jackson.JacksonFeature;
+import org.glassfish.jersey.message.GZipEncoder;
 import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.server.filter.EncodingFilter;
 
 import de.vipra.rest.provider.APIRequestFilter;
 import de.vipra.rest.provider.CORSResponseFilter;
@@ -17,6 +19,7 @@ public class Application extends ResourceConfig {
 		register(ObjectMapperProvider.class);
 		register(APIRequestFilter.class);
 		register(PatchReaderInterceptor.class);
+		EncodingFilter.enableFor(this, GZipEncoder.class);
 	}
 
 }
diff --git a/vipra-ui/app/routes/articles/show.js b/vipra-ui/app/routes/articles/show.js
index a402bcfd..84617d83 100644
--- a/vipra-ui/app/routes/articles/show.js
+++ b/vipra-ui/app/routes/articles/show.js
@@ -1,41 +1,23 @@
 import Ember from 'ember';
 
-var statsData = [];
-var statsOptions = {
-  title: {
-    text: 'Word frequencies'
-  },
-  legend: {
-    enabled: false
-  },
-  xAxis: {
-    title: {
-      text: 'Words'
-    }
-  },
-  yAxis: {
-    title: {
-      text: 'Count'
-    }
-  },
-  tooltip: {
-    headerFormat: '',
-    pointFormat: '{point.x}: {point.y} time(s)'
-  }
-};
-
 export default Ember.Route.extend({
   model(params) {
     return Ember.RSVP.hash({
       article: this.store.find('article', params.article_id),
-      statsData: statsData,
-      statsOptions: statsOptions
+      statsData: []
     });
   },
 
   afterModel(model) {
-    if(model.article.stats) {
-      
+    var words = [],
+        stats = model.article.get('stats');
+    for(var word in stats.uniqueWords) {
+      var o = stats.uniqueWords[word];
+      words.push({word: word, count: o.termFrequency, norm: o.normalizedTermFrequency});
     }
+    words.sort(function(a,b) {
+      return b.count - a.count;
+    });
+    model.statsData = words.slice(0,20);
   }
 });
\ No newline at end of file
diff --git a/vipra-ui/app/styles/app.css b/vipra-ui/app/styles/app.css
index e69de29b..9e0888e7 100644
--- a/vipra-ui/app/styles/app.css
+++ b/vipra-ui/app/styles/app.css
@@ -0,0 +1,3 @@
+td {
+  vertical-align: top;
+}
\ No newline at end of file
diff --git a/vipra-ui/app/templates/articles/show.hbs b/vipra-ui/app/templates/articles/show.hbs
index 07bb2d38..d38231dd 100644
--- a/vipra-ui/app/templates/articles/show.hbs
+++ b/vipra-ui/app/templates/articles/show.hbs
@@ -12,18 +12,41 @@
 <h3>Statistics</h3>
 
 <table>
-  <tr>
-    <td>Word count</td>
-    <td>{{model.article.stats.wordCount}}</td>
-  </tr>
-  <tr>
-    <td>Unique word count</td>
-    <td>{{model.article.stats.uniqueWordCount}}</td>
-  </tr>
+  <tbody>
+    <tr>
+      <td>Word count</td>
+      <td>{{model.article.stats.wordCount}}</td>
+    </tr>
+    <tr>
+      <td>Unique word count</td>
+      <td>{{model.article.stats.uniqueWordCount}}</td>
+    </tr>
+    <tr>
+      <td>Most frequent words</td>
+      <td>
+        <table>
+          <thead>
+            <tr>
+              <th>Word</th>
+              <th>Count</th>
+              <th>NTF</th>
+            </tr>
+          </thead>
+          <tbody>
+            {{#each model.statsData as |stats|}}
+              <tr>
+                <td>{{stats.word}}</td>
+                <td>{{stats.count}}</td>
+                <td>{{stats.norm}}</td>
+              </tr>
+            {{/each}}
+          </tbody>
+        </table>
+      </td>
+    </tr>
+  </tbody>
 </table>
 
-{{dynamic-high-charts content=model.statsData chartOptions=model.statsOptions}}
-
 <h3>Content</h3>
 
 {{model.article.text}}
\ No newline at end of file
-- 
GitLab