opportunity: always show at least 5 answer fields
authorAlexis Laferrière <alexis.laf@xymus.net>
Thu, 30 Oct 2014 14:58:58 +0000 (10:58 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Thu, 30 Oct 2014 17:20:40 +0000 (13:20 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/opportunity/src/templates/meetup_creation.nit

index ac2a9f9..6f42561 100644 (file)
@@ -26,23 +26,25 @@ class MeetupCreationPage
 
        var ans: Set[String] = new HashSet[String] is writable
 
+       # Minimum number of input fields for answer
+       var min_answer_fields = 5
+
        init do
                header.page_js = """
 """
        end
 
        redef fun rendering do
-               var n_answers = ans.length + 1
-               if n_answers == 1 then n_answers = 2
+               var n_answers = ans.length
 
                header.page_js = """
-var nb_answers = {{{n_answers}}};
+var nb_answers = {{{n_answers.max(min_answer_fields)}}};
 
 function new_answer(sender){
        var ansdiv = $('#answers')
 
-       var nb = nb_answers
        nb_answers += 1
+       var nb = nb_answers
 
        ansdiv.append('<div class="form-group">' +
                '<label for="answer_' + nb + '" class="col-sm-4 control-label">' + nb + '</label>' +
@@ -95,23 +97,32 @@ function new_answer(sender){
 <div id="answers">
 """
 
-               if ans.is_empty then
+               var cnt = 1
+               for v in ans do
                        bdy.add """
 <div class="form-group">
-       <label for="answer_1" class="col-sm-4 control-label">1</label>
+       <label for="answer_{{{cnt}}}" class="col-sm-4 control-label">{{{cnt}}}</label>
        <div class="col-sm-8">
-               <input name="answer_1" id="answer_1" type="text" class="form-control" placeholder="First opportunity">
+               <input name="answer_{{{cnt}}}" id="answer_{{{cnt}}}" type="text" class="form-control" value="{{{v}}}"/>
        </div>
 </div>
 """
-               else
-                       var cnt = 1
-                       for v in ans do
+                       cnt += 1
+               end
+
+               var empties_to_show = min_answer_fields - ans.length
+               if empties_to_show > 0 then
+                       for e in [0..empties_to_show[ do
+                               var placeholder
+                               if cnt == 1 then
+                                       placeholder = "First opportunity"
+                               else placeholder = "Another opportunity"
+
                                bdy.add """
 <div class="form-group">
        <label for="answer_{{{cnt}}}" class="col-sm-4 control-label">{{{cnt}}}</label>
        <div class="col-sm-8">
-               <input name="answer_{{{cnt}}}" id="answer_{{{cnt}}}" type="text" class="form-control" value="{{{v}}}"/>
+               <input name="answer_{{{cnt}}}" id="answer_{{{cnt}}}" type="text" class="form-control" placeholder="{{{placeholder}}}"/>
        </div>
 </div>
 """