diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace index bcf2ba250998973e5303cc6cf25e210d4d7d7769..7b33cb727a672a0499b9aaab0160892403b77e9c 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 469d63d89ba8a5d977e882b1e34f8e7b295e22f5..37709cab9530c96539b00325c5f9edd67467fbf6 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 79d0ccc09c2d8d4979f603d7d45f476fc9d99227..9a3ec6a8f6fb8781bd6db59f62f561a50c136bd1 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 0000000000000000000000000000000000000000..af609e9719a99a34086abf88ab6f50cc12a28586 --- /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 bf471644813542a3ae88a257b75c44aaae96ee5e..20f7c1661ef1a42b0ddbc5c3fe0b08ff0491c169 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 b765eafbb94b409a582d605bdc506069fb898a13..fbb002e9131d7ad48f1165cca71eee23793c6e24 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 0d442b61c170d4fa40db3aae849cc2e0cc783dc3..c14dc91b50c796761e9b28c764ce301880937f35 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 0000000000000000000000000000000000000000..56141b218fd1167469292a067fb4d9828d9b687a --- /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 f825a14d961dea9a0dc15397b32bc1913ff02020..ce7f5d05452b96d35ccc8fcf14c713738a63987c 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 a3dd94429064050667350bfcb0ad548e7f99f94c..1e691064b7afc7e32b81667ea8b99ee4dd132937 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 683e96974dcf0c4a947830a4146936cbd6d9aabd..395c3aea15e0d260460c1915d17a09130b9d6c82 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 0eb9f06bf25571584dd42a1eb2509b6e6985ca73..e2147cab02d61b24bccf33f448609ff7bf5ad470 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 e975dcaae2c20db5fc786a227795c71cea31dc7b..69560732e8eda908f365433252148a359a09aa53 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 bcddff844c6ad60c7bd715799cc4b4ed9b1489c2..a5cc88755e7f6bf5ebfc4c7121b4d3087b6c266d 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 9ae6d0517b2055c8d3babf6e5b0391fc132f4858..e2147cab02d61b24bccf33f448609ff7bf5ad470 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 9b46b3c2f774c505cb51fdd36180f9b84be0160c..9e5af69add58901f8f9eeb7e458deab6d2c9ddfd 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 c2787301e1a5e68e5cb47d9612d7382106671a5a..4b793c056a379b00dec38bfe58f3bd805d7ff3dc 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 13d6081cc820dfd630a278038b27fd369cb369f5..e2147cab02d61b24bccf33f448609ff7bf5ad470 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 3f0dc91ae968739398804f6c5d07d78309bcca04..c1de00df849d88048544e85ef9aaa502e4ed7f42 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 b8a8349750addd1685ed3a01b35a24aaf64483e0..150691531fd4640e623516fc8b7bf6dd6a8cf64d 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 0000000000000000000000000000000000000000..12ce3b9da4b368646e85364459ac3b05a6c19e4c --- /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); +});