From 5bf333597d799569642d8f8730214c8fe0468ebb Mon Sep 17 00:00:00 2001 From: Eike Cochu <eike@cochu.com> Date: Sat, 23 Jan 2016 01:58:56 +0100 Subject: [PATCH] updated ui updated ui style fixed typo in rest service word resource when extracting returned fields --- ma-impl.sublime-workspace | 217 +++++++++++++++--- vipra-cmd/build.xml | 4 + .../vipra/rest/resource/ArticleResource.java | 13 +- .../vipra/rest/resource/ResourceHelper.java | 14 ++ .../de/vipra/rest/resource/TopicResource.java | 15 +- .../de/vipra/rest/resource/WordResource.java | 13 +- vipra-ui/app/adapters/application.js | 2 +- vipra-ui/app/helpers/pluralize.js | 10 + vipra-ui/app/routes/articles/show.js | 4 + vipra-ui/app/styles/app.scss | 5 +- vipra-ui/app/templates/application.hbs | 7 +- vipra-ui/app/templates/articles.hbs | 5 - vipra-ui/app/templates/articles/index.hbs | 9 +- vipra-ui/app/templates/articles/show.hbs | 46 ++-- vipra-ui/app/templates/topics.hbs | 5 - vipra-ui/app/templates/topics/index.hbs | 5 +- vipra-ui/app/templates/topics/show/index.hbs | 8 +- vipra-ui/app/templates/words.hbs | 5 - vipra-ui/app/templates/words/index.hbs | 11 +- vipra-ui/bower.json | 2 +- vipra-ui/tests/unit/helpers/pluralize-test.js | 10 + 21 files changed, 293 insertions(+), 117 deletions(-) create mode 100644 vipra-rest/src/main/java/de/vipra/rest/resource/ResourceHelper.java create mode 100644 vipra-ui/app/helpers/pluralize.js create mode 100644 vipra-ui/tests/unit/helpers/pluralize-test.js diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace index bcf2ba25..7b33cb72 100644 --- a/ma-impl.sublime-workspace +++ b/ma-impl.sublime-workspace @@ -275,6 +275,38 @@ }, "buffers": [ + { + "file": "vipra-ui/app/templates/topics/show/index.hbs", + "settings": + { + "buffer_size": 408, + "line_ending": "Unix" + } + }, + { + "file": "vipra-ui/app/templates/application.hbs", + "settings": + { + "buffer_size": 1378, + "line_ending": "Unix" + } + }, + { + "file": "vipra-ui/app/routes/articles/show.js", + "settings": + { + "buffer_size": 692, + "line_ending": "Unix" + } + }, + { + "file": "vipra-ui/app/templates/articles/show.hbs", + "settings": + { + "buffer_size": 699, + "line_ending": "Unix" + } + } ], "build_system": "", "build_system_choices": @@ -283,18 +315,18 @@ "build_varint": "", "command_palette": { - "height": 102.0, - "last_filter": "remove", + "height": 148.0, + "last_filter": "insta", "selected_items": [ - [ - "remove", - "Package Control: Remove Package" - ], [ "insta", "Package Control: Install Package" ], + [ + "remove", + "Package Control: Remove Package" + ], [ "close", "Project: Close" @@ -453,12 +485,37 @@ }, "expanded_folders": [ - "/home/eike/repos/master/ma-impl" + "/home/eike/repos/master/ma-impl", + "/home/eike/repos/master/ma-impl/vipra-ui", + "/home/eike/repos/master/ma-impl/vipra-ui/app", + "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/show" ], "file_history": [ - "/home/eike/repos/master/ma-impl/vipra-ui/ember-cli-build.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/menu.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles/menu.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/show.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/items-list.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/pluralize.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/uppercase.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/index.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words_loading.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/styles/app.scss", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/application.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/bower.json", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/index.hbs", + "/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/ember-cli-build.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/loading.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/styles/app.css", @@ -466,37 +523,27 @@ "/home/eike/repos/master/ma-impl/vipra-ui/app/index.html", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/show.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/show.hbs", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/index.hbs", - "/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/components/items-list.js", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/items-list.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/show/index.hbs", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/router.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words", "/home/eike/repos/master/ma-impl/vipra-ui/app/models/topic.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/models/article.js", "/home/eike/repos/master/ma-impl/vm/data/test-10.json", "/home/eike/repos/master/ma-impl/vipra-ui/app/components/topic-link.js", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/show.hbs", "/home/eike/.local/share/vipra/jgibb/jgibb.twords", "/home/eike/.local/share/vipra/jgibb/jgibb.tassign", "/home/eike/Downloads/FRITZ.Box 7490 113.06.30_17.01.16_2147.export", "/home/eike/repos/master/ma-impl/vm/data/test-1.json", "/home/eike/repos/master/ma-impl/vm/data/test-2.json", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/index.js", - "/home/eike/repos/master/ma-impl/vipra-ui/app/adapters/application.js", "/home/eike/.local/share/vipra/jgibb/jgibb", "/home/eike/repos/master/ma-doc/thesis/thesis.tex", "/home/eike/repos/master/ma-impl/Vagrantfile", "/home/eike/repos/master/ma-impl/vm/bootstrap.sh", "/home/eike/repos/master/ma-impl/vm/webapps/ROOT/index.html", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles.hbs", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/show/edit.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/topics-list.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/show.js", @@ -524,7 +571,6 @@ "/home/eike/repos/master/ma-impl/vipra-cmd.sh", "/home/eike/repos/master/ma-impl/vipra-cmd/build2.xml", "/home/eike/repos/master/ma-impl/vipra-ui/README.md", - "/home/eike/repos/master/ma-impl/vipra-ui/bower.json", "/home/eike/repos/testasd/bower.json", "/home/eike/repos/master/ma-impl/vipra-ui2/package.json", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles/list.js", @@ -578,13 +624,7 @@ "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/index.hbs", "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/new.hbs", "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/article/show.js", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/article.hbs", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/articles.js", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles.show.hbs", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/routes/articles.show.js", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/articles/test.hbs", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/.ember-cli", - "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/bower_components/ember-data/ember-data.js" + "/home/eike/Repositories/fu/ss15/ma/impl/vipra-ui/app/templates/article.hbs" ], "find": { @@ -908,8 +948,129 @@ "groups": [ { + "selected": 2, "sheets": [ + { + "buffer": 0, + "file": "vipra-ui/app/templates/topics/show/index.hbs", + "semi_transient": false, + "settings": + { + "buffer_size": 408, + "regions": + { + }, + "selection": + [ + [ + 408, + 408 + ] + ], + "settings": + { + "syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage", + "tab_size": 2, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 3, + "type": "text" + }, + { + "buffer": 1, + "file": "vipra-ui/app/templates/application.hbs", + "semi_transient": false, + "settings": + { + "buffer_size": 1378, + "regions": + { + }, + "selection": + [ + [ + 1378, + 1378 + ] + ], + "settings": + { + "syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage", + "tab_size": 2, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "type": "text" + }, + { + "buffer": 2, + "file": "vipra-ui/app/routes/articles/show.js", + "semi_transient": false, + "settings": + { + "buffer_size": 692, + "regions": + { + }, + "selection": + [ + [ + 692, + 692 + ] + ], + "settings": + { + "syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage", + "tab_size": 2, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "type": "text" + }, + { + "buffer": 3, + "file": "vipra-ui/app/templates/articles/show.hbs", + "semi_transient": true, + "settings": + { + "buffer_size": 699, + "regions": + { + }, + "selection": + [ + [ + 0, + 0 + ] + ], + "settings": + { + "syntax": "Packages/Handlebars/grammars/Handlebars.tmLanguage", + "tab_size": 2, + "translate_tabs_to_spaces": true + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 2, + "type": "text" + } ] } ], @@ -1059,12 +1220,12 @@ }, "select_symbol": { - "height": 375.0, + "height": 263.0, "last_filter": "", "selected_items": [ ], - "width": 741.0 + "width": 378.0 }, "selected_group": 0, "settings": diff --git a/vipra-cmd/build.xml b/vipra-cmd/build.xml index 469d63d8..37709cab 100644 --- a/vipra-cmd/build.xml +++ b/vipra-cmd/build.xml @@ -59,6 +59,8 @@ <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/org/hdrhistogram/HdrHistogram/2.1.6/HdrHistogram-2.1.6.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/com/twitter/jsr166e/1.1.0/jsr166e-1.1.0.jar"/> + <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.7.0/jackson-databind-2.7.0.jar"/> + <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.7.0/jackson-annotations-2.7.0.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/args4j/args4j/2.0.6/args4j-2.0.6.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/edu/stanford/nlp/stanford-corenlp/3.5.2/stanford-corenlp-3.5.2.jar"/> @@ -70,8 +72,10 @@ <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/javax/xml/bind/jaxb-api/2.2.7/jaxb-api-2.2.7.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/com/googlecode/efficient-java-matrix-library/ejml/0.23/ejml-0.23.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/javax/json/javax.json-api/1.0/javax.json-api-1.0.jar"/> + <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/edu/stanford/nlp/stanford-corenlp/3.5.2/stanford-corenlp-3.5.2-models.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/org/apache/lucene/lucene-core/5.4.0/lucene-core-5.4.0.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/org/apache/lucene/lucene-analyzers-common/5.4.0/lucene-analyzers-common-5.4.0.jar"/> + <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/uk/org/lidalia/sysout-over-slf4j/1.0.2/sysout-over-slf4j-1.0.2.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/junit/junit/4.12/junit-4.12.jar"/> <zipfileset excludes="META-INF/*.SF" src="/home/eike/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/> </jar> diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java index 79d0ccc0..9a3ec6a8 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java +++ b/vipra-rest/src/main/java/de/vipra/rest/resource/ArticleResource.java @@ -38,6 +38,8 @@ import de.vipra.util.ex.DatabaseException; import de.vipra.util.model.Article; import de.vipra.util.service.DatabaseService; +import static de.vipra.rest.resource.ResourceHelper.*; + @Path("articles") public class ArticleResource { @@ -171,7 +173,7 @@ public class ArticleResource { } private Article getSingle(String id, String[] fields) { - if (fields.length == 0) { + if (fields == null || fields.length == 0) { Article article = cache.get(id); if (article == null) { article = service.getSingle(MongoUtils.objectId(id)); @@ -183,13 +185,4 @@ public class ArticleResource { return service.getSingle(MongoUtils.objectId(id), fields); } - private String[] getFields(String fields) { - if (fields == null) - return null; - fields = fields.trim(); - if (fields.length() == 0) - return null; - return fields.split(","); - } - } diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/ResourceHelper.java b/vipra-rest/src/main/java/de/vipra/rest/resource/ResourceHelper.java new file mode 100644 index 00000000..af609e97 --- /dev/null +++ b/vipra-rest/src/main/java/de/vipra/rest/resource/ResourceHelper.java @@ -0,0 +1,14 @@ +package de.vipra.rest.resource; + +public class ResourceHelper { + + public static String[] getFields(String fields) { + if (fields == null) + return null; + fields = fields.trim(); + if (fields.length() == 0) + return null; + return fields.split(","); + } + +} diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java index bf471644..20f7c166 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java +++ b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java @@ -32,6 +32,8 @@ import de.vipra.util.ex.DatabaseException; import de.vipra.util.model.TopicFull; import de.vipra.util.service.DatabaseService; +import static de.vipra.rest.resource.ResourceHelper.*; + @Path("topics") public class TopicResource { @@ -56,7 +58,7 @@ public class TopicResource { @GET @Produces(APIMediaType.APPLICATION_JSONAPI) public Response getTopics(@QueryParam("skip") Integer skip, @QueryParam("limit") Integer limit, - @QueryParam("sort") @DefaultValue("date") String sortBy, @QueryParam("fields") String fields) { + @QueryParam("sort") @DefaultValue("name") String sortBy, @QueryParam("fields") String fields) { Wrapper<List<TopicFull>> res = new Wrapper<>(); if (skip != null && limit != null) @@ -122,7 +124,7 @@ public class TopicResource { } private TopicFull getSingle(String id, String[] fields) { - if (fields.length == 0) { + if (fields == null || fields.length == 0) { TopicFull topic = cache.get(id); if (topic == null) { topic = service.getSingle(MongoUtils.objectId(id)); @@ -134,13 +136,4 @@ public class TopicResource { return service.getSingle(MongoUtils.objectId(id), fields); } - private String[] getFields(String fields) { - if (fields == null) - return null; - fields = fields.trim(); - if (fields.length() == 0) - return null; - return fields.split(","); - } - } diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java index b765eafb..fbb002e9 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java +++ b/vipra-rest/src/main/java/de/vipra/rest/resource/WordResource.java @@ -28,6 +28,8 @@ import de.vipra.util.ex.ConfigException; import de.vipra.util.model.Word; import de.vipra.util.service.DatabaseService; +import static de.vipra.rest.resource.ResourceHelper.*; + @Path("words") public class WordResource { @@ -100,7 +102,7 @@ public class WordResource { } private Word getSingle(String id, String[] fields) { - if (fields.length > 0) { + if (fields == null || fields.length == 0) { Word word = cache.get(id); if (word == null) { word = service.getSingle(id); @@ -112,13 +114,4 @@ public class WordResource { return service.getSingle(id, fields); } - private String[] getFields(String fields) { - if (fields == null) - return null; - fields = fields.trim(); - if (fields.length() == 0) - return null; - return fields.split(","); - } - } diff --git a/vipra-ui/app/adapters/application.js b/vipra-ui/app/adapters/application.js index 0d442b61..c14dc91b 100644 --- a/vipra-ui/app/adapters/application.js +++ b/vipra-ui/app/adapters/application.js @@ -1,7 +1,7 @@ import DS from 'ember-data'; export default DS.JSONAPIAdapter.extend({ - host: `http://${window.location.hostname}:8080`, + host: `http://${window.location.hostname}:8000`, namespace: 'vipra-rest', updateRecord(store, type, snapshot) { var data = {}; diff --git a/vipra-ui/app/helpers/pluralize.js b/vipra-ui/app/helpers/pluralize.js new file mode 100644 index 00000000..56141b21 --- /dev/null +++ b/vipra-ui/app/helpers/pluralize.js @@ -0,0 +1,10 @@ +import Ember from 'ember'; + +export function pluralize(params) { + let number = params[0], + singular = params[1], + plural = params[2] || singular + 's'; + return number === 1 ? singular : plural; +} + +export default Ember.Helper.helper(pluralize); diff --git a/vipra-ui/app/routes/articles/show.js b/vipra-ui/app/routes/articles/show.js index f825a14d..ce7f5d05 100644 --- a/vipra-ui/app/routes/articles/show.js +++ b/vipra-ui/app/routes/articles/show.js @@ -1,6 +1,10 @@ import Ember from 'ember'; export default Ember.Route.extend({ + renderTemplate() { + this.render(); + }, + model(params) { return Ember.RSVP.hash({ article: this.store.find('article', params.article_id), diff --git a/vipra-ui/app/styles/app.scss b/vipra-ui/app/styles/app.scss index a3dd9442..1e691064 100644 --- a/vipra-ui/app/styles/app.scss +++ b/vipra-ui/app/styles/app.scss @@ -1,5 +1,6 @@ -td { - vertical-align: top; +body { + // for navbar + padding-top: 60px; } .word { diff --git a/vipra-ui/app/templates/application.hbs b/vipra-ui/app/templates/application.hbs index 683e9697..395c3aea 100644 --- a/vipra-ui/app/templates/application.hbs +++ b/vipra-ui/app/templates/application.hbs @@ -1,4 +1,4 @@ -<nav class="navbar navbar-default"> +<nav class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> @@ -22,9 +22,12 @@ <li>{{#link-to 'words'}}Words{{/link-to}}</li> </ul> </li> + {{outlet 'menu-left'}} </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav> -{{outlet}} \ No newline at end of file +<div class="container-fluid"> + {{outlet}} +</div> \ No newline at end of file diff --git a/vipra-ui/app/templates/articles.hbs b/vipra-ui/app/templates/articles.hbs index 0eb9f06b..e2147cab 100644 --- a/vipra-ui/app/templates/articles.hbs +++ b/vipra-ui/app/templates/articles.hbs @@ -1,6 +1 @@ -<h1>Articles</h1> -{{#link-to 'index'}}Top{{/link-to}} -{{#link-to 'articles'}}All{{/link-to}} -<hr> - {{outlet}} \ No newline at end of file diff --git a/vipra-ui/app/templates/articles/index.hbs b/vipra-ui/app/templates/articles/index.hbs index e975dcaa..69560732 100644 --- a/vipra-ui/app/templates/articles/index.hbs +++ b/vipra-ui/app/templates/articles/index.hbs @@ -1,7 +1,10 @@ +<h1>Articles</h1> + {{dynamic-high-charts content=model.chartData chartOptions=model.chartOptions}} -<h2>Found articles</h2> +{{debounced-input class='form-control' placeholder='Filter' size='50' value=filter debounce='150'}} -{{debounced-input placeholder='Filter' size='50' value=filter debounce='150'}} +<br> +{{items-list items=model.articles filter=filter route='articles.show'}} -{{items-list items=model.articles filter=filter route='articles.show'}} \ No newline at end of file +{{outlet}} \ 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 bcddff84..a5cc8875 100644 --- a/vipra-ui/app/templates/articles/show.hbs +++ b/vipra-ui/app/templates/articles/show.hbs @@ -1,30 +1,28 @@ -<h2>{{model.article.title}}</h2> +<h2>«{{model.article.title}}»</h2> -<h3>Info</h3> - -<dl> - <dt>Date</dt> - <dd>{{model.article.date}}</dd> - <dt>URL</dt> - <dd><a href="{{model.article.url}}">{{model.article.url}}</a></dd> - <dt>Word count</dt> - <dd>{{model.article.stats.wordCount}}</dd> -</dl> - -<h3>Topics</h3> - -{{#each model.article.topics as |topicRef|}} - [{{#topic-link topic=topicRef.topic}} ({{topic-share topicRef.count model.article.stats.wordCount}}%){{/topic-link}}] -{{/each}} - -<h3>Statistics</h3> - -<table> +<table class="table table-bordered table-condensed"> <tbody> - + <tr> + <td>Date</td> + <td>{{model.article.date}}</td> + </tr> + <tr> + <td>URL</td> + <td><a href="{{model.article.url}}">{{model.article.url}}</a></td> + </tr> + <tr> + <td>Topics</td> + <td> + {{#each model.article.topics as |topicRef|}} + [{{#topic-link topic=topicRef.topic}} ({{topic-share topicRef.count model.article.stats.wordCount}}%){{/topic-link}}] + {{/each}} + </td> + </tr> + <tr> + <td>Word count</td> + <td>{{model.article.stats.wordCount}}</td> + </tr> </tbody> </table> -<h3>Content</h3> - {{model.article.text}} \ No newline at end of file diff --git a/vipra-ui/app/templates/topics.hbs b/vipra-ui/app/templates/topics.hbs index 9ae6d051..e2147cab 100644 --- a/vipra-ui/app/templates/topics.hbs +++ b/vipra-ui/app/templates/topics.hbs @@ -1,6 +1 @@ -<h1>Topics</h1> -{{#link-to 'index'}}Top{{/link-to}} -{{#link-to 'topics'}}All{{/link-to}} -<hr> - {{outlet}} \ No newline at end of file diff --git a/vipra-ui/app/templates/topics/index.hbs b/vipra-ui/app/templates/topics/index.hbs index 9b46b3c2..9e5af69a 100644 --- a/vipra-ui/app/templates/topics/index.hbs +++ b/vipra-ui/app/templates/topics/index.hbs @@ -1,5 +1,6 @@ -<h2>Found topics</h2> +<h1>Topics</h1> -{{debounced-input placeholder='Filter' size='50' value=filter debounce='150'}} +{{debounced-input class='form-control' placeholder='Filter' size='50' value=filter debounce='150'}} +<br> {{items-list items=model.topics filter=filter route='topics.show'}} \ No newline at end of file diff --git a/vipra-ui/app/templates/topics/show/index.hbs b/vipra-ui/app/templates/topics/show/index.hbs index c2787301..4b793c05 100644 --- a/vipra-ui/app/templates/topics/show/index.hbs +++ b/vipra-ui/app/templates/topics/show/index.hbs @@ -1,10 +1,6 @@ -{{#link-to 'topics.show.edit'}}Edit{{/link-to}} - <h2>{{model.topic._name}}</h2> -<h3>Words</h3> - -<table> +<table class="table table-striped table-bordered table-condensed"> <thead> <tr> <th>Word</th> @@ -14,7 +10,7 @@ <tbody> {{#each model.topic.words as |word|}} <tr> - <td>{{word.word}}</td> + <td>{{#link-to 'words.show' word.word}}{{word.word}}{{/link-to}}</td> <td>{{word.likeliness}}</td> </tr> {{/each}} diff --git a/vipra-ui/app/templates/words.hbs b/vipra-ui/app/templates/words.hbs index 13d6081c..e2147cab 100644 --- a/vipra-ui/app/templates/words.hbs +++ b/vipra-ui/app/templates/words.hbs @@ -1,6 +1 @@ -<h1>Words</h1> -{{#link-to 'index'}}Top{{/link-to}} -{{#link-to 'words'}}All{{/link-to}} -<hr> - {{outlet}} \ No newline at end of file diff --git a/vipra-ui/app/templates/words/index.hbs b/vipra-ui/app/templates/words/index.hbs index 3f0dc91a..c1de00df 100644 --- a/vipra-ui/app/templates/words/index.hbs +++ b/vipra-ui/app/templates/words/index.hbs @@ -1,3 +1,10 @@ -<h2>Found words</h2> +<h1>Words</h1> -{{items-list items=model.words filter=filter route='words.show'}} \ No newline at end of file +<br> +<p> + {{model.words.length}} {{pluralize model.words.length 'Word'}} in the database: +</p> + +{{#each model.words as |word|}} + {{#link-to 'words.show' word.id}}{{word.id}}{{/link-to}} +{{/each}} \ No newline at end of file diff --git a/vipra-ui/bower.json b/vipra-ui/bower.json index b8a83497..15069153 100644 --- a/vipra-ui/bower.json +++ b/vipra-ui/bower.json @@ -1,7 +1,7 @@ { "name": "vipra-ui", "dependencies": { - "ember": "2.2.0", + "ember": "2.3.0", "ember-cli-shims": "0.0.6", "ember-cli-test-loader": "0.2.1", "ember-data": "2.2.1", diff --git a/vipra-ui/tests/unit/helpers/pluralize-test.js b/vipra-ui/tests/unit/helpers/pluralize-test.js new file mode 100644 index 00000000..12ce3b9d --- /dev/null +++ b/vipra-ui/tests/unit/helpers/pluralize-test.js @@ -0,0 +1,10 @@ +import { pluralize } from '../../../helpers/pluralize'; +import { module, test } from 'qunit'; + +module('Unit | Helper | pluralize'); + +// Replace this with your real tests. +test('it works', function(assert) { + let result = pluralize(42); + assert.ok(result); +}); -- GitLab