Permit to add multiple things in scase at the same time
Benjamin Renard

Benjamin Renard commited on 2017-09-17 10:18:45
Showing 2 changed files, with 46 additions and 11 deletions.

... ...
@@ -301,21 +301,40 @@ on_li_add_click=function(event) {
301 301
 
302 302
 on_valid_add_thing_modal=function (e) {
303 303
   e.preventDefault();
304
-  var label=$('#add_thing_label')[0].value;
305
-  if (label=='') {
306
-    alert("Vous devez saisir le nom de l'élément !");
307
-    return;
308
-  }
304
+
309 305
   var modal=$('#add_thing_modal');
310 306
   var scase=scases.byName($('#cats').data('scase'));
311 307
   if (scase) {
312 308
     var cat=scase.cats.byName(modal.data('cat'));
313 309
     if (cat) {
314
-      if (cat.byLabel(label)) {
315
-        alert("Cet élément existe déjà !");
310
+      var labels=[];
311
+      var error=false;
312
+      $('input.add_thing_label').each(function(idx,input) {
313
+        var val=$(input).val();
314
+        if (val && val!='') {
315
+          if (labels.indexOf(val)>-1) {
316
+            alert("Deux élements ne peuvent porter le même nom !");
317
+            error=true;
316 318
             return;
317 319
           }
318
-      cat.newThing(label);
320
+          if (cat.byLabel(val)) {
321
+            alert("L'élément '"+val+"' existe déjà !");
322
+            error=true;
323
+            return;
324
+          }
325
+          labels.push(val);
326
+        }
327
+      });
328
+      if (error) {
329
+        return;
330
+      }
331
+      if (labels.length==0) {
332
+        alert("Vous devez saisir au moins un nom d'élément !");
333
+        return;
334
+      }
335
+      for (idx in labels) {
336
+        cat.newThing(labels[idx]);
337
+      }
319 338
       scases.save();
320 339
       show_scase(scase,cat.name);
321 340
     }
... ...
@@ -324,13 +343,25 @@ on_valid_add_thing_modal=function (e) {
324 343
 }
325 344
 
326 345
 on_show_add_thing_modal=function () {
327
-  $('#add_thing_label').focus();
346
+  $('input.add_thing_label_other').parent().remove();
347
+  $('input.add_thing_label').val('');
348
+  $('input.add_thing_label').first().focus();
328 349
 }
329 350
 
330 351
 on_close_add_thing_modal=function () {
331 352
   $('#add_thing_modal form')[0].reset();
332 353
 }
333 354
 
355
+on_add_thing_label_focus=function(event) {
356
+  if ($('input.add_thing_label').last()[0] == event.target) {
357
+    var new_input_group=$('<div class="form-group"></div>');
358
+    var new_input=$('<input type="text" class="form-control add_thing_label add_thing_label_other" class="form-control" placeholder="Encore un ?"/>');
359
+    new_input_group.append(new_input);
360
+    new_input.bind('focus', on_add_thing_label_focus);
361
+    $(event.target).parent().after(new_input_group);
362
+  }
363
+}
364
+
334 365
 
335 366
 /***********************
336 367
  * Rename thing
... ...
@@ -642,6 +673,7 @@ $( document ).ready( function() {
642 673
 
643 674
   $('#back_to_scases').bind('click',on_back_to_scases_btn_click);
644 675
   
676
+  $('input.add_thing_label').bind('focus',on_add_thing_label_focus);
645 677
   $('#add_thing_submit').bind('click',on_valid_add_thing_modal);
646 678
   $("#add_thing_modal").on('shown.bs.modal',on_show_add_thing_modal);
647 679
   $("#add_thing_modal").on('hidden.bs.modal',on_close_add_thing_modal);
... ...
@@ -209,9 +209,12 @@ div.panel-heading, li.list-group-item, a {
209 209
         <h4 class="modal-title">Ajouter un élément</h4>
210 210
       </div>
211 211
       <div class="modal-body">
212
-        <form class="form-horizontal" role="form">
212
+        <form role="form">
213
+          <div class="form-group">
214
+            <input type='text' class='form-control add_thing_label' class="form-control" placeholder="Nom de l'élément"/>
215
+          </div>
213 216
           <div class="form-group">
214
-            <input type='text' id='add_thing_label' class="form-control" placeholder="Nom de l'élément"/>
217
+            <input type='text' class='form-control add_thing_label' class="form-control" placeholder="Un autre ?"/>
215 218
           </div>
216 219
         </form>
217 220
       </div>
218 221