combo_auto_box 0.0.48 → 0.0.49

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7deba46f0087491a57ca64709d178c9a30e65404
4
- data.tar.gz: 6bb89d8d883271dc729ebf71301dd45a6d590015
3
+ metadata.gz: 450b0baa2ff62c8da0071dd9f79823cc0395ed95
4
+ data.tar.gz: b801e1f5c9d05df1d33f03fef12125335abf8aec
5
5
  SHA512:
6
- metadata.gz: 135c496c4d6f5b4274dcccd0f7ef2543c8f565815bfec31da128dcbbfb937d4619bc3524cae69bb1846e777114fcb8dc4f9e156ed5d3ee65017c44c35a99c552
7
- data.tar.gz: 5947bbc0e36c8aa18cf5fb0210ce5e3f5653d5bfa3fa0e8d62fa650b71606b7f4c4edd3926d9ae367a7c18fab5a7482b5e37d6efba3b2425a06968867a35ffe7
6
+ metadata.gz: 64d9ede45079dc427ea67402d0ff050024faa151f60d6cc71f5be8e9d6f3d4ac2489a7b1f333d445a84065b15f399b61891e77132f0f2852d34c99a238fe0d5e
7
+ data.tar.gz: 21155fe070b5a61bf5ca699e23006a2b186ff13771b841f5c3fc612603e6839b4e5afadda8965ae2ccc7975dc02e1d672a213c476104d821b472845e99480284
@@ -1,3 +1,3 @@
1
1
  module ComboAutoBox
2
- VERSION = '0.0.48'
2
+ VERSION = '0.0.49'
3
3
  end
@@ -7,20 +7,37 @@ var ComboAutoBox = {
7
7
  while ($('input[name*="[' + prefix +"-" + now + ']"]').length != 0) {
8
8
  now++;
9
9
  }
10
-
10
+
11
11
  return prefix + "-" + now;
12
12
  };
13
13
 
14
+ var htmlSafe = function(html) {
15
+ html = html.toString();
16
+ html = html.replace(/\&/g, '&');
17
+ html = html.replace(/\</g, '&lt;');
18
+ html = html.replace(/\>/g, '&gt;');
19
+ html = html.replace(/\"/g, '&quot;');
20
+ html = html.replace(/\'/g, '&#x27;');
21
+ html = html.replace(/\//g, '&#x2F;');
22
+
23
+ return html;
24
+ }
25
+
26
+ $.each(options.source, function( index, value ){
27
+ options.source[index]['id'] = htmlSafe(options.source[index]['id']);
28
+ options.source[index]['label'] = htmlSafe(options.source[index]['label']);
29
+ });
30
+
14
31
  // generatea an ID based on current time
15
32
  var generateAnId = function(prefix) {
16
33
  var now = new Date().getTime();
17
34
  while ($("#" + prefix +"-" + now).length != 0) {
18
35
  now++;
19
36
  }
20
-
37
+
21
38
  return prefix + "-" + now;
22
39
  };
23
-
40
+
24
41
  var splitValidEmails = function (inputId, inputValue) {
25
42
  if ((options.type != 'multiple') || (!options.email)) {
26
43
  return false;
@@ -46,7 +63,7 @@ var ComboAutoBox = {
46
63
 
47
64
  return true;
48
65
  }
49
-
66
+
50
67
  // binds autocomplete to text field
51
68
  var bindAutoComplete = function (inputId) {
52
69
  var previuosValue = '';
@@ -62,7 +79,7 @@ var ComboAutoBox = {
62
79
  if (!options.not_found_accepted) {
63
80
  $('#' + inputId).val('');
64
81
  }
65
- selectData($('#' + inputId).val(), $('#' + inputId).val());
82
+ selectData($('#' + inputId).val(), $('#' + inputId).val());
66
83
  return true;
67
84
  } else if ((e.keyCode == 9) && (inputVal != '') && (options.source_not_found) && (options.type == 'multiple')) {
68
85
  $('#' + inputId).autocomplete( "close");
@@ -76,9 +93,9 @@ var ComboAutoBox = {
76
93
  $('#' + inputId).val('');
77
94
  return true;
78
95
  }
79
-
96
+
80
97
  });
81
-
98
+
82
99
  // CTRL+V or CMD+V
83
100
  $('#' + inputId).bind('paste', function() {
84
101
  var $this = $(this);
@@ -86,8 +103,8 @@ var ComboAutoBox = {
86
103
  splitValidEmails(inputId, $this.val());
87
104
  }, 20); //just break the callstack to let the event finish
88
105
 
89
- });
90
-
106
+ });
107
+
91
108
  $('#' + inputId).keypress(function(e) {
92
109
  // 44 is "," - 32 is SPACE - 59 is ";"
93
110
  if (((e.which === 32) || (e.which === 44) || (e.which === 59)) && (options.type == 'multiple') && (options.email) && ($('#' + inputId).val().match(/[^@\s]+@([^@\s]+\.)+[^@\s]+/))) {
@@ -102,7 +119,7 @@ var ComboAutoBox = {
102
119
  setTimeout(function(){
103
120
  $('#' + inputId).val('');
104
121
  }, 20);
105
-
122
+
106
123
  } else if ((e.which === 13) && ($('#' + inputId).val() != '')) {
107
124
  if (options.type == 'full') {
108
125
  $('#' + inputId).autocomplete( "close" );
@@ -130,16 +147,16 @@ var ComboAutoBox = {
130
147
  selectData(item.id, item.label);
131
148
  $('#' + inputId).val('');
132
149
  } catch (error) {
133
-
150
+
134
151
  }
135
152
  }
136
-
153
+
137
154
  return false;
138
155
  } else if ((e.which === 13) && ($('#' + inputId).val() == '')) {
139
- return false;
156
+ return false;
140
157
  }
141
158
  });
142
-
159
+
143
160
  $('#' + inputId).autocomplete({
144
161
  source: setAutoCompleteSource(inputId),
145
162
  select: function(event, ui) {
@@ -177,7 +194,7 @@ var ComboAutoBox = {
177
194
  },
178
195
  search: function(event, ui) {
179
196
  if (options.type == 'searchable') {
180
- $('#' + inputId).autocomplete("option", { source: setAutoCompleteSource(inputId) });
197
+ $('#' + inputId).autocomplete("option", { source: setAutoCompleteSource(inputId) });
181
198
  }
182
199
  },
183
200
  change: function (event, ui) {
@@ -191,7 +208,7 @@ var ComboAutoBox = {
191
208
  },
192
209
  });
193
210
  };
194
-
211
+
195
212
  // set autocomplete source
196
213
  var setAutoCompleteSource = function (inputId) {
197
214
  if (options.type == 'searchable') {
@@ -238,7 +255,7 @@ var ComboAutoBox = {
238
255
  options.source_not_found = true;
239
256
  return [ { id: $('#' + inputId).val(), label: '"' + $('#' + inputId).val() + '" ' + options.not_found_message } ];
240
257
  }
241
-
258
+
242
259
  // source items for searchable
243
260
  var sourceForSearchable = function (inputId) {
244
261
  var new_source = new Array();
@@ -251,9 +268,9 @@ var ComboAutoBox = {
251
268
  }
252
269
  });
253
270
  });
254
- return new_source;
271
+ return new_source;
255
272
  }
256
-
273
+
257
274
  // get i18n math comparisons
258
275
  var i18nMath = function (language) {
259
276
  var operators = new Array();
@@ -325,7 +342,7 @@ var ComboAutoBox = {
325
342
  }
326
343
  return title;
327
344
  };
328
-
345
+
329
346
  var i18nSelectAll = function (language) {
330
347
  var title = 'Select All';
331
348
  switch(language.toLowerCase()) {
@@ -347,7 +364,7 @@ var ComboAutoBox = {
347
364
  }
348
365
  return title;
349
366
  };
350
-
367
+
351
368
  // generates text field with html options
352
369
  var generateInputTag = function () {
353
370
  var html = 'input type="text"';
@@ -359,18 +376,18 @@ var ComboAutoBox = {
359
376
  html = html + ' '+ key +'="' + value + '"';
360
377
  });
361
378
  }
362
-
379
+
363
380
  if ((options.html == null) || (options.html.id == null)) {
364
381
  html = html + ' id="' + generateAnId('combo-auto-box') + '"';
365
382
  }
366
-
383
+
367
384
  if ((options.bootstrap) && (options.type == "simple")) {
368
385
  html = html + ' class="form-control" '
369
386
  }
370
-
387
+
371
388
  return '<' + html + '>';
372
389
  };
373
-
390
+
374
391
  // On click opens modal image tag inside "i" tag through css
375
392
  var generateExpander = function () {
376
393
  if (options.type == 'simple') {
@@ -381,21 +398,21 @@ var ComboAutoBox = {
381
398
  }
382
399
  } else if (options.type == 'multiple') {
383
400
  if (options.style == "mail") {
384
- return '<span class="multiple">' + options.label + '</span>';
401
+ return '<span class="multiple">' + options.label + '</span>';
385
402
  } else {
386
- return '<span class="multiple-icon"><button class="btn btn-default" type="button"><i class="fa fa-bars"></i></button></span>';
403
+ return '<span class="multiple-icon"><button class="btn btn-default" type="button"><i class="fa fa-bars"></i></button></span>';
387
404
  }
388
405
  }
389
406
  };
390
-
407
+
391
408
  var adjustExpanderImage = function() {
392
409
  if ((options.bootstrap) && (options.type == "simple")) {
393
410
  return true;
394
411
  }
395
-
412
+
396
413
  if (options.type == 'simple') {
397
414
  spanTag = $('#' + container + ' > div.container-combo-auto-box > span.simple');
398
-
415
+
399
416
  inputWidth = getTextFieldWidth(textField);
400
417
  inputHeight = getTextFieldHeight(textField);
401
418
 
@@ -405,18 +422,18 @@ var ComboAutoBox = {
405
422
  if (inputHeight % 2 != 0) {
406
423
  inputBorderTop = inputBorderTop + 2;
407
424
  }
408
-
425
+
409
426
  iWidth = 20;
410
427
  if (inputWidth < 20) {
411
428
  iWidth = 10;
412
429
  }
413
-
430
+
414
431
  spanTag.css('margin-top', inputBorderTop.toString() + 'px');
415
432
  spanTag.css('margin-left', (inputWidth - iWidth + 4).toString() + 'px');
416
433
 
417
434
  spanTag.children(':first').css('width', iWidth.toString() + 'px');
418
435
  spanTag.children(':first').css('height', inputHeight.toString() + 'px');
419
-
436
+
420
437
  return true;
421
438
  } else if (options.type == 'multiple') {
422
439
  inputTop = 0;
@@ -436,7 +453,7 @@ var ComboAutoBox = {
436
453
 
437
454
  var getTextFieldWidth = function (textField) {
438
455
  var widthTotal = 0;
439
-
456
+
440
457
  if (textField.width() != null) {
441
458
  widthTotal = widthTotal + textField.width();
442
459
  }
@@ -445,10 +462,10 @@ var ComboAutoBox = {
445
462
  padding_right = textField.css('padding-right').toString().replace(/[a-zA-Z]+/g, '');
446
463
  widthTotal = widthTotal + parseInt(padding_right);
447
464
  }
448
-
465
+
449
466
  return widthTotal;
450
467
  }
451
-
468
+
452
469
  var getTextFieldBorder = function (textField, side) {
453
470
  var heightTotal = 0;
454
471
 
@@ -460,10 +477,10 @@ var ComboAutoBox = {
460
477
 
461
478
  return heightTotal;
462
479
  }
463
-
480
+
464
481
  var getTextFieldHeight = function (textField) {
465
482
  var heightTotal = 0;
466
-
483
+
467
484
  try {
468
485
  if (textField.height() != null) {
469
486
  heightTotal = heightTotal + textField.height();
@@ -476,17 +493,17 @@ var ComboAutoBox = {
476
493
  heightTotal = heightTotal + parseInt(padding_top);
477
494
  }
478
495
  } catch (error) {}
479
-
496
+
480
497
  try {
481
498
  if (textField.css('padding-bottom') != null) {
482
499
  padding_bottom = textField.css('padding-bottom').toString().replace(/[a-zA-Z]+/g, '');
483
500
  heightTotal = heightTotal + parseInt(padding_bottom);
484
501
  }
485
502
  } catch (error) {}
486
-
503
+
487
504
  return heightTotal;
488
505
  }
489
-
506
+
490
507
  // Global div for combo auto box
491
508
  var generateDivTag = function () {
492
509
  var klass = 'container-combo-auto-box'
@@ -496,11 +513,11 @@ var ComboAutoBox = {
496
513
  }
497
514
  klass = klass + ' multiple';
498
515
  } else if (options.type == 'searchable') {
499
- klass = klass + ' searchable'
516
+ klass = klass + ' searchable'
500
517
  } else if ((options.type == 'simple') && (options.bootstrap)) {
501
- klass = klass + '-bootstrap input-group'
518
+ klass = klass + '-bootstrap input-group'
502
519
  }
503
-
520
+
504
521
  return '<div class="' + klass + '">' + generateInputTag() + '</div>';
505
522
  };
506
523
 
@@ -511,7 +528,7 @@ var ComboAutoBox = {
511
528
  disableSelectionIfAlreadySelectedSimple();
512
529
  }
513
530
  }
514
-
531
+
515
532
  var disableSelectionIfAlreadySelectedBootstrap = function() {
516
533
  var selecteds = $("div#" + container + " > div.container-combo-auto-box-bootstrap > div.item > input[type='hidden']").map(function(k, v) { return $(this).val() });
517
534
 
@@ -521,42 +538,42 @@ var ComboAutoBox = {
521
538
  if ($.inArray(item, selecteds) >= 0) { // IF exists in array
522
539
  $(this).addClass('selected');
523
540
  } else {
524
- }
525
- });
541
+ }
542
+ });
526
543
  }
527
544
 
528
545
  var disableSelectionIfAlreadySelectedSimple = function() {
529
546
  var selecteds = $("div#" + container + " > div.container-combo-auto-box > div.item > input[type='hidden']").map(function(k, v) { return $(this).val() });
530
-
547
+
531
548
  $('#' + options.modalId + ' > div.list > ul > li').each(function(index) {
532
549
  var item = $(this).children('span.combo-auto-box-item-id').text();
533
550
  $(this).removeClass('selected');
534
551
  if ($.inArray(item, selecteds) >= 0) { // IF exists in array
535
552
  $(this).addClass('selected');
536
553
  } else {
537
- }
538
- });
554
+ }
555
+ });
539
556
  }
540
-
557
+
541
558
  // dialog modal
542
559
  var generateDivDialogModal = function (modalDialogId) {
543
- $('<div id="'+ modalDialogId +'" class="dialog-modal">' +
544
- '<div class="head">' +
560
+ $('<div id="'+ modalDialogId +'" class="dialog-modal">' +
561
+ '<div class="head">' +
545
562
  '<span class="label">' + options.label + '</span>' +
546
563
  '<span class="close" title="Close">X</span>' +
547
564
  '</div>' +
548
565
  '<div class="list">' +
549
- '<ul></ul>' +
566
+ '<ul></ul>' +
550
567
  '</div>' +
551
568
  '<div class="footer">' +
552
- '<a href="javascript:void(0)" class="selectAll">' + i18nSelectAll(options.lang) + '</a>' +
569
+ '<a href="javascript:void(0)" class="selectAll">' + i18nSelectAll(options.lang) + '</a>' +
553
570
  '</div>' +
554
571
  '</div>').appendTo('#' + container);
555
-
572
+
556
573
  $('#' + modalDialogId + ' > div.head > span.close').click(function() {
557
574
  $('#' + modalDialogId).dialog('close');
558
575
  });
559
-
576
+
560
577
  $('#' + modalDialogId).dialog({
561
578
  width: 500,
562
579
  height: 412,
@@ -566,26 +583,26 @@ var ComboAutoBox = {
566
583
  margin: 0,
567
584
  padding: 0,
568
585
  });
569
-
586
+
570
587
  getListForModalDialog(modalDialogId);
571
-
588
+
572
589
  $("#" + modalDialogId).siblings('div.ui-dialog-titlebar').remove();
573
-
574
- $('#' + container + ' > div.container-combo-auto-box > span.' + options.type).click(function() {
590
+
591
+ $('#' + container + ' > div.container-combo-auto-box > span.' + options.type).click(function() {
575
592
  disableSelectionIfAlreadySelected();
576
593
 
577
- openModalDialog(modalDialogId)
594
+ openModalDialog(modalDialogId)
578
595
  });
579
596
 
580
597
  $('a.selectAll').click(function() {
581
598
  selectAllData(container, modalDialogId);
582
599
  });
583
600
  };
584
-
601
+
585
602
  // dialog modal
586
603
  var generateBootstrapDialogModal = function (modalDialogId) {
587
604
  var targetObject = ('#' + container + ' > div.container-combo-auto-box-bootstrap > span');
588
-
605
+
589
606
  if (options.type == "simple") {
590
607
  targetObject = targetObject + ' > button';
591
608
  }
@@ -610,12 +627,12 @@ var ComboAutoBox = {
610
627
  } else {
611
628
  $(modal).appendTo('#' + container);
612
629
  }
613
-
630
+
614
631
  getListForModalDialog(modalDialogId);
615
-
632
+
616
633
  $(targetObject).click(function() {
617
634
  disableSelectionIfAlreadySelected();
618
-
635
+
619
636
  $('#' + modalDialogId).modal('show');
620
637
 
621
638
  // fix to allways show back-shadow
@@ -626,11 +643,11 @@ var ComboAutoBox = {
626
643
  // alert($('.modal-backdrop').css('z-index'));
627
644
  // alert($('.modal').css('z-index'));
628
645
  });
629
-
646
+
630
647
  $('div#' + modalDialogId + ' > div.modal-dialog > div.modal-content > div.modal-footer > button.selectAll').click(function() {
631
648
  selectAllData(container, modalDialogId);
632
649
  });
633
-
650
+
634
651
  $('#' + modalDialogId).on('hide.bs.modal', function (e) {
635
652
  if (options.onHideModal != null) {
636
653
  options.onHideModal();
@@ -643,19 +660,19 @@ var ComboAutoBox = {
643
660
  }
644
661
  });
645
662
  };
646
-
663
+
647
664
  // Selects an item form modal dialog when clicked on
648
665
  var selectValueFromModalDialog = function (value) {
649
666
  $('#' + container + ' > div.container-combo-auto-box > input').val(value);
650
667
  selectData(value);
651
668
  };
652
-
669
+
653
670
  // generates list for modal dialog
654
671
  var getListForModalDialog = function (modalDialogId) {
655
672
  if (typeof options.source == 'string') {
656
673
  var term = 'term=';
657
674
  var params = (options.data == null) ? term : options.data + '&' + term;
658
-
675
+
659
676
  $.getJSON(options.source + '?' + params, function(data) {
660
677
  setListForModalDialog(modalDialogId, data);
661
678
  });
@@ -663,7 +680,7 @@ var ComboAutoBox = {
663
680
  setListForModalDialog(modalDialogId, options.source);
664
681
  }
665
682
  };
666
-
683
+
667
684
  // set list for modal dialog
668
685
  var setListForModalDialog = function (modalDialogId, data) {
669
686
  if (options.bootstrap) {
@@ -675,7 +692,7 @@ var ComboAutoBox = {
675
692
 
676
693
  var setListForSimpleModalDialog = function (modalDialogId, data) {
677
694
  var items = [];
678
-
695
+
679
696
  $.each(data, function(index){
680
697
  items.push('<li><span class="combo-auto-box-item-id">' + data[index].id +'</span><span class="combo-auto-box-item-label">'+ data[index].label + '</span></li>');
681
698
  });
@@ -689,9 +706,9 @@ var ComboAutoBox = {
689
706
 
690
707
  var thisId = $(this).children('span.combo-auto-box-item-id').text();
691
708
  var thisLabel = $(this).children('span.combo-auto-box-item-label').text();
692
-
709
+
693
710
  $('#' + modalDialogId).dialog('close');
694
-
711
+
695
712
  if (options.type == 'simple') {
696
713
  $('#' + container + ' > div.container-combo-auto-box > input').val(thisLabel);
697
714
  selectData(thisId, thisLabel);
@@ -701,14 +718,14 @@ var ComboAutoBox = {
701
718
  $('#' + container + ' > div.container-combo-auto-box > input[type="text"]').focus();
702
719
  selectData(thisId, thisLabel);
703
720
  }
704
- });
721
+ });
705
722
  };
706
723
 
707
- var setListForBootstrapModalDialog = function (modalDialogId, data) {
724
+ var setListForBootstrapModalDialog = function (modalDialogId, data) {
708
725
  var items = [];
709
-
726
+
710
727
  $.each(data, function(index){
711
- items.push('<a href="javascript:void(0);" class="list-group-item"><span class="combo-auto-box-item-id" style="display:none;">' + data[index].id +'</span><span class="combo-auto-box-item-label">'+ data[index].label + '</span></a>');
728
+ items.push('<a href="javascript:void(0);" class="list-group-item"><span class="combo-auto-box-item-id" style="display:none;">' + data[index].id +'</span><span class="combo-auto-box-item-label">'+ data[index].label + '</span></a>');
712
729
  });
713
730
 
714
731
  $('#' + modalDialogId + ' > div.modal-dialog > div.modal-content > div.modal-body > div.list-group').html(items.join(''));
@@ -716,10 +733,10 @@ var ComboAutoBox = {
716
733
  if ($(this).hasClass('selected')) {
717
734
  return false;
718
735
  }
719
-
736
+
720
737
  var thisId = $(this).children('span.combo-auto-box-item-id').text();
721
738
  var thisLabel = $(this).children('span.combo-auto-box-item-label').text();
722
-
739
+
723
740
  if (options.type == 'simple') {
724
741
  $('#' + container + ' > div.container-combo-auto-box-bootstrap > input').val(thisLabel);
725
742
  selectData(thisId, thisLabel);
@@ -729,49 +746,49 @@ var ComboAutoBox = {
729
746
  $('#' + container + ' > div.container-combo-auto-box-bootstrap > input[type="text"]').focus();
730
747
  selectData(thisId, thisLabel);
731
748
  }
732
-
749
+
733
750
  $('#' + modalDialogId).modal('hide');
734
-
735
- });
751
+
752
+ });
736
753
  };
737
-
754
+
738
755
  // opens modal dialog
739
756
  var openModalDialog = function (modalDialogId) {
740
757
  $('#' + modalDialogId).dialog("open");
741
758
  };
742
-
759
+
743
760
  // starting generate modial dialog
744
761
  var generateModalDialog = function (textField) {
745
762
  options['modalId'] = generateAnId('model-dialog')
746
763
  if (options.bootstrap) {
747
764
  if (options.type == 'simple') {
748
- $(generateExpander()).appendTo('#' + container + ' > div.container-combo-auto-box-bootstrap');
765
+ $(generateExpander()).appendTo('#' + container + ' > div.container-combo-auto-box-bootstrap');
749
766
  } else {
750
- $(generateExpander()).prependTo('#' + container + ' > div.container-combo-auto-box-bootstrap');
767
+ $(generateExpander()).prependTo('#' + container + ' > div.container-combo-auto-box-bootstrap');
751
768
  }
752
769
  generateBootstrapDialogModal(options['modalId']);
753
770
  } else {
754
771
  $(generateExpander()).prependTo('#' + container + ' > div.container-combo-auto-box');
755
- adjustExpanderImage();
772
+ adjustExpanderImage();
756
773
  generateDivDialogModal(options['modalId']);
757
774
  }
758
-
775
+
759
776
  };
760
-
777
+
761
778
  // add multiple item
762
779
  var addMultipleItem = function (inputId, selectedId, selectedData) {
763
780
  var targetId = (options.html.name + selectedId).replace(/[^A-Za-z0-9]/g, '_');
764
781
  if ((selectedData != '') && ($('#' + targetId).length == 0)) {
765
782
  var id = generateAnId('item');
766
783
  $('#' + inputId).before('<div class="item" id="' + id + '">'+ htmlSafe(selectedData) +'<span class="remove_item" title="Remove Item">x</span><input type="hidden" name="'+ options.html.name +'[]" value="'+ htmlSafe(selectedId.toString()) +'" id=' + targetId + '></div>');
767
-
784
+
768
785
  $('#' + id + ' > span').click(function() {
769
786
  $(this).parent().remove();
770
787
  unselectData(selectedId, selectedData);
771
788
  });
772
789
  }
773
790
  };
774
-
791
+
775
792
  // remove multiple item
776
793
  var removeLastMultipleItem = function () {
777
794
  if ($('#' + container + ' > div.multiple > div.item').length > 0) {
@@ -781,7 +798,7 @@ var ComboAutoBox = {
781
798
  unselectData(value, label);
782
799
  }
783
800
  };
784
-
801
+
785
802
  // add searchable item for ransack
786
803
  var addSearchableItemForRansack = function (inputId, selectedId, selectedData) {
787
804
  if (selectedData != '') {
@@ -795,14 +812,14 @@ var ComboAutoBox = {
795
812
  fieldValue = '<input type="hidden" name="q[g]['+ predicate['attribute'] +'][c]['+ ransackId +'][v][0][value]" value="'+ htmlSafe(getSearchableValue(selectedData)) +'">';
796
813
  var id = generateAnId('item');
797
814
  $('#' + inputId).before('<div class="item" id="' + id + '">'+ htmlSafe(selectedData) +'<span class="remove_item" title="Remove Item">x</span>'+ fieldAttribute + fieldCondition + fieldValue +'</div>');
798
-
815
+
799
816
  $('#' + id + ' > span').click(function() {
800
817
  $(this).parent().remove();
801
818
  unselectData(selectedId, selectedData);
802
819
  });
803
820
  }
804
821
  };
805
-
822
+
806
823
  var removeLastSearchableItemForRansack = function() {
807
824
  if ($('#' + container + ' > div.searchable > div.item').length > 0) {
808
825
  var label = $('#' + container + ' > div.searchable > div.item:last > input[name*="value"]').val();
@@ -810,23 +827,23 @@ var ComboAutoBox = {
810
827
  var condition = $('#' + container + ' > div.searchable > div.item:last > input[name*="p"]').val();
811
828
  $('#' + container + ' > div.searchable > div.item:last').remove();
812
829
  unselectData(attribute + "_" + condition, label);
813
- }
830
+ }
814
831
  }
815
-
832
+
816
833
  // add searchable item
817
- var addSearchableItem = function (inputId, selectedId, selectedData) {
834
+ var addSearchableItem = function (inputId, selectedId, selectedData) {
818
835
  if (selectedData != '') {
819
836
  var id = generateAnId('item');
820
837
  $('#' + inputId).before('<div class="item" id="' + id + '">'+ htmlSafe(selectedData) +'<span title="Remove Item">x</span><input type="hidden" name="'+ options.html.name +'['+ htmlSafe(selectedId.toString()) +'][]" value="'+ htmlSafe(getSearchableValue(selectedData)) +'"></div>');
821
-
838
+
822
839
  $('#' + id + ' > span').click(function() {
823
840
  $(this).parent().remove();
824
841
  unselectData(selectedId, selectedData);
825
842
  });
826
-
843
+
827
844
  }
828
845
  };
829
-
846
+
830
847
  // return json with attribute and condition
831
848
  var getSearchablePredicate = function (selectedId) {
832
849
  var fields = $.map(options.source, function(val, i) { return val['id']}).join('|');
@@ -836,7 +853,7 @@ var ComboAutoBox = {
836
853
  var full = getSearchableLabelForAttributeId(matched[1]) + ' ' + getSearchableLabelForConditionId(matched[2]);
837
854
  return { attribute: matched[1], condition: matched[2], full: full };
838
855
  }
839
-
856
+
840
857
  // get only the value from selected Data
841
858
  var getSearchableValue = function (selectedData) {
842
859
  var fields = $.map(options.source, function(val, i) { return val['label']}).join('|');
@@ -848,7 +865,7 @@ var ComboAutoBox = {
848
865
  return null;
849
866
  }
850
867
  }
851
-
868
+
852
869
  var getSearchableLabelForAttributeId = function (attibuteId) {
853
870
  for(var i=0; i<options.source.length;i++) {
854
871
  if (options.source[i]['id'] == attibuteId) {
@@ -865,7 +882,7 @@ var ComboAutoBox = {
865
882
  }
866
883
  }
867
884
  }
868
-
885
+
869
886
  var htmlSafe = function(html) {
870
887
  html = html.replace(/\&/g, '&amp;');
871
888
  html = html.replace(/\</g, '&lt;');
@@ -873,26 +890,26 @@ var ComboAutoBox = {
873
890
  html = html.replace(/\"/g, '&quot;');
874
891
  html = html.replace(/\'/g, '&#x27;');
875
892
  html = html.replace(/\//g, '&#x2F;');
876
-
893
+
877
894
  return html;
878
895
  }
879
-
896
+
880
897
  // Bind click on div for multiple or searchble
881
898
  var bindContainerClick = function(inputId) {
882
899
  $('#' + container + ' > div.multiple').click(function() {
883
900
  $('#' + inputId).focus();
884
- });
885
-
901
+ });
902
+
886
903
  $('#' + container + ' > div.searchable').click(function() {
887
904
  $('#' + inputId).focus();
888
- });
905
+ });
889
906
  };
890
-
907
+
891
908
  var normalizeStyles = function(inputId) {
892
909
  $('#' + container).css('background-color', $('#' + inputId).css('background-color'));
893
910
  $('#' + inputId).css('border', '0px');
894
911
  }
895
-
912
+
896
913
  // on select data
897
914
  var selectData = function (selectedId, selectedLabel) {
898
915
  if (options.complete != null) {
@@ -902,14 +919,14 @@ var ComboAutoBox = {
902
919
  }
903
920
 
904
921
  };
905
-
922
+
906
923
  // on unselect data
907
924
  var unselectData = function (selectedId, selectedLabel) {
908
925
  if (options.unselect != null) {
909
926
  options.unselect(selectedId, selectedLabel);
910
927
  }
911
928
  };
912
-
929
+
913
930
  // valid language or set 'en' as default
914
931
  var validLanguage = function () {
915
932
  var langs = ['math', 'en', 'pt-br', 'pt', 'es', 'fr', 'it'];
@@ -919,14 +936,14 @@ var ComboAutoBox = {
919
936
  return true;
920
937
  }
921
938
  } catch (error) {
922
-
939
+
923
940
  }
924
941
  }
925
-
942
+
926
943
  options.lang = 'en';
927
944
  return true;
928
945
  };
929
-
946
+
930
947
  // valid language or set 'en' as default
931
948
  var validType = function () {
932
949
  var types = ['simple', 'full', 'multiple', 'searchable'];
@@ -935,16 +952,16 @@ var ComboAutoBox = {
935
952
  return true;
936
953
  }
937
954
  }
938
-
955
+
939
956
  options.type = 'simple';
940
957
  return true;
941
958
  };
942
-
959
+
943
960
  // valid sources for only and except
944
961
  var validSource = function (source) {
945
962
  operators = i18nMath('math');
946
963
  validIndexes = new Array();
947
-
964
+
948
965
  if (((source['only'] != null) && (source['except'] != null)) || ((source['only'] == null) && (source['except'] == null))) {
949
966
  for(var i=0; i<operators.length;i++) {
950
967
  validIndexes.push(i);
@@ -954,7 +971,7 @@ var ComboAutoBox = {
954
971
  if ((source['only'].indexOf(operators[i]['id']) + source['only'].indexOf(operators[i]['label'])) >= -1) {
955
972
  validIndexes.push(i);
956
973
  }
957
- }
974
+ }
958
975
  } else if (source['except'] != null) {
959
976
  for(var i=0; i<operators.length;i++) {
960
977
  if ((source['except'].indexOf(operators[i]['id']) + source['except'].indexOf(operators[i]['label'])) == -2) {
@@ -962,10 +979,10 @@ var ComboAutoBox = {
962
979
  }
963
980
  }
964
981
  }
965
-
982
+
966
983
  return validIndexes;
967
984
  }
968
-
985
+
969
986
  var handleMultipleInitials = function() {
970
987
  if (options.initials != null) {
971
988
  $.each(options.initials, function(index) {
@@ -981,13 +998,13 @@ var ComboAutoBox = {
981
998
  });
982
999
  }
983
1000
  }
984
-
1001
+
985
1002
  var getSourceNotFound = function(value) {
986
1003
  var pattern = new RegExp('^"(' + value + ')"', 'i');
987
1004
  var matched = value.match(pattern);
988
1005
  return matched[1];
989
1006
  }
990
-
1007
+
991
1008
  var selectAllData = function(container, modalDialogId) {
992
1009
  var inputId = $('#' + container + ' > div.container-combo-auto-box > input').attr('id');
993
1010
  if (options.bootstrap) {
@@ -996,7 +1013,7 @@ var ComboAutoBox = {
996
1013
  } else {
997
1014
  $('#' + modalDialogId).dialog('close');
998
1015
  }
999
-
1016
+
1000
1017
  $.each(options.source, function( index, value ){
1001
1018
  selectData(value.id, value.label);
1002
1019
  addMultipleItem(inputId, value.id, value.label);
@@ -1004,12 +1021,12 @@ var ComboAutoBox = {
1004
1021
  }
1005
1022
 
1006
1023
  validLanguage();
1007
-
1024
+
1008
1025
  // main
1009
1026
  if (options == null) {
1010
1027
  options = {};
1011
1028
  }
1012
-
1029
+
1013
1030
  options.source_not_found = false;
1014
1031
 
1015
1032
  if (options.not_found_message == null) {
@@ -1019,34 +1036,34 @@ var ComboAutoBox = {
1019
1036
  if (options.not_found_accepted == null) {
1020
1037
  options.not_found_accepted = false;
1021
1038
  }
1022
-
1039
+
1023
1040
  if (options.bootstrap == null) {
1024
1041
  options.bootstrap = false;
1025
1042
  }
1026
-
1043
+
1027
1044
  if (options.style == null) {
1028
1045
  options.style = "mail";
1029
1046
  }
1030
-
1047
+
1031
1048
  if (options.email == null) {
1032
1049
  options.email = false
1033
1050
  }
1034
-
1051
+
1035
1052
  validType();
1036
-
1053
+
1037
1054
  $('#' + container).html(generateDivTag());
1038
-
1055
+
1039
1056
  if (options.bootstrap) {
1040
1057
  textField = $('#' + container + ' > div.container-combo-auto-box-bootstrap > input');
1041
1058
  } else {
1042
1059
  textField = $('#' + container + ' > div.container-combo-auto-box > input');
1043
1060
  }
1044
1061
  bindAutoComplete(textField.attr('id'));
1045
-
1062
+
1046
1063
  if (options.type == 'simple') {
1047
1064
  generateModalDialog(textField);
1048
1065
  }
1049
-
1066
+
1050
1067
  if (options.type == 'multiple') {
1051
1068
  generateModalDialog(textField);
1052
1069
  bindContainerClick(textField.attr('id'));
@@ -1062,4 +1079,3 @@ var ComboAutoBox = {
1062
1079
 
1063
1080
  }
1064
1081
  }
1065
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: combo_auto_box
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.48
4
+ version: 0.0.49
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adilson Chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-25 00:00:00.000000000 Z
11
+ date: 2017-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec