Commit 7f841196a627ab5e4304bbc8a05c409995dfb6dd

Authored by Victor Costa
1 parent 76bd741e

List in selection only topics that belongs to a category

Showing 2 changed files with 22 additions and 7 deletions   Show diff stats
index.html
... ... @@ -77,16 +77,11 @@
77 77 {{#each categories}}
78 78 <li class='category proposal-category' data-category="{{slug}}">
79 79 {{#link name id}}{{/link}}
80   - <select class='proposal-selection'>
81   - <option value='{{../id}}' selected> {{../title}}</option>
82   - {{#each ../../article.children}}
83   - <option value='{{id}}'> {{title}}</option>
84   - {{/each}}
85   - </select>
  80 + {{#select_proposal ../../article.children slug ../id}}{{/select_proposal}}
86 81 </li>
87 82 {{/each}}
88 83 </ul>
89   -
  84 +
90 85 <div class='proposal-header'>
91 86 <div class='abstract'>
92 87 <img src="{{../host}}{{image.url}}"/>
... ...
js/handlebars-helpers.js
... ... @@ -52,3 +52,23 @@ Handlebars.registerHelper(&#39;replace&#39;, function(string, to_replace, replacement) {
52 52 Handlebars.registerHelper('score', function(article) {
53 53 return article.votes_for - article.votes_against;
54 54 });
  55 +
  56 +Handlebars.registerHelper('select_proposal', function(proposals, category_slug, selected_id) {
  57 + var ret = '<select class="proposal-selection">';
  58 +
  59 + for(var i=0; i<proposals.length; i++) {
  60 + if(!proposal_has_category(proposals[i], category_slug)) continue;
  61 + var selected = proposals[i].id===selected_id ? "selected" : "";
  62 + ret += '<option value="'+proposals[i].id+'" '+selected+'>'+proposals[i].title+'</option>';
  63 + }
  64 + ret += '</select>';
  65 + return ret;
  66 +});
  67 +
  68 +function proposal_has_category(proposal, category_slug) {
  69 + for(var i=0; i<proposal.categories.length; i++) {
  70 + if(proposal.categories[i].slug == category_slug)
  71 + return true;
  72 + }
  73 + return false;
  74 +}
... ...