contrib/opportunity: add opportunities templates
authorAlexis Laferrière <alexis.laf@xymus.net>
Thu, 26 Mar 2015 15:54:44 +0000 (11:54 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 23 Jun 2015 15:05:20 +0000 (11:05 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/opportunity/src/templates/meetup_creation.nit

index 0a2c5bf..e85995c 100644 (file)
@@ -29,6 +29,16 @@ class MeetupCreationPage
        # Minimum number of input fields for answer
        var min_answer_fields = 5
 
+       # Templates of answers offered as starting point in the Web interface
+       var templates: HashMap[String, Array[String]] do
+               var map = new HashMap[String, Array[String]]
+               map["4 kinds of pizza"] = ["Cheese", "Pepperoni", "Veggie", "All-dressed"]
+               map["5 days work week"] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
+               map["7 days week"] = ["Sunday", "Monday", "Tuesday", "Wednesday",
+                                     "Thursday", "Friday", "Saturday"]
+               return map
+       end
+
        init do
                header.page_js = """
 """
@@ -52,6 +62,27 @@ function new_answer(sender){
                        '<input name="answer_' + nb + '" id="answer_' + nb + '" class="form-control" type="text" placeholder="{{{"Another opportunity"}}}">' +
                '</div></div>')
 }
+
+// Clear all answers
+function clear(){
+       for(count = 1;; count ++){
+               var ctrl = "#answer_"+count
+               if ($(ctrl).length == 0) break
+               $(ctrl).val("")
+       }
+}
+
+// Apply a template of opportunities
+function apply_template(opportunities){
+       clear()
+
+       var count = 1
+       for (op of opportunities){
+               if (count > nb_answers) new_answer()
+               $("#answer_"+count).val(op)
+               count ++
+       }
+}
 """
 
                # Do stuff with body before rendering
@@ -99,6 +130,27 @@ function new_answer(sender){
                                        <input name="meetup_mode" id="meetup_mode" type="checkbox">
                                </div>
                        </div>
+
+                       <div class = "form-group">
+                               <label for="meetup_template" class="col-sm-4 control-label text-left">{{{"Template of opportunities"}}}</label>
+                               <div class="col-sm-8 text-left">
+                                       <div class="dropdown">
+                                               <button class="btn btn-default dropdown-toggle" type="button" id="meetup_template" data-toggle="dropdown" aria-expanded="true">
+                                                       {{{"Apply a template"}}}
+                                                       <span class="caret"></span>
+                                               </button>
+                                               <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
+"""
+               for name, answers in templates do bdy.add """
+               <li role="presentation"><a role="menuitem" tabindex="-1" onclick="apply_template([{{{[for ans in answers do "'"+ans+"'"].join(", ")}}}])">{{{name}}}</a></li>
+"""
+
+               bdy.add """
+                                               </ul>
+                                       </div>
+                               </div>
+                       </div>
+
                                <h2>{{{"Opportunities"}}}</h2>
 <div id="answers">
 """