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 3a105f81c74b4f98258b6d1d2db1b5e3d74412ff..56342a6905c4a1f3da978137ceab64283ca9b441 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 a402bcfd6b67e942757a42957522b995de88ca03..84617d83dc3806727e3fd1330daeb6df0bb4b163 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9e0888e722f60a03fe2bd782526109adf61fba18 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 07bb2d380a2e041382c9842854e73bceb8e77246..d38231dddf0dcba90c9c966b51f1c75e29d3767c 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