bootstrap-table-rails 1.11.1.1 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. checksums.yaml +7 -7
  2. data/README.md +6 -3
  3. data/lib/bootstrap-table-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/bootstrap-table-locale-all.js +374 -6
  5. data/vendor/assets/javascripts/bootstrap-table.js +348 -147
  6. data/vendor/assets/javascripts/extensions/bootstrap-table-accent-neutralise.js +1 -1
  7. data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +0 -0
  8. data/vendor/assets/javascripts/extensions/bootstrap-table-auto-refresh.js +62 -62
  9. data/vendor/assets/javascripts/extensions/bootstrap-table-click-edit-row.js +0 -0
  10. data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +48 -69
  11. data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +0 -0
  12. data/vendor/assets/javascripts/extensions/bootstrap-table-defer-url.js +32 -0
  13. data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +0 -0
  14. data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +56 -8
  15. data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +93 -46
  16. data/vendor/assets/javascripts/extensions/bootstrap-table-filter.js +0 -0
  17. data/vendor/assets/javascripts/extensions/bootstrap-table-flat-json.js +0 -0
  18. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by-v2.js +0 -0
  19. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +2 -2
  20. data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +3 -2
  21. data/vendor/assets/javascripts/extensions/bootstrap-table-jumpto.js +50 -0
  22. data/vendor/assets/javascripts/extensions/bootstrap-table-key-events.js +0 -0
  23. data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +1 -1
  24. data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +0 -0
  25. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +1 -1
  26. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-selection-row.js +0 -0
  27. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +31 -12
  28. data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +0 -0
  29. data/vendor/assets/javascripts/extensions/bootstrap-table-print.js +33 -17
  30. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +2 -2
  31. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +0 -0
  32. data/vendor/assets/javascripts/extensions/bootstrap-table-resizable.js +2 -1
  33. data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +136 -107
  34. data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +11 -4
  35. data/vendor/assets/javascripts/extensions/bootstrap-table-toolbar.js +0 -0
  36. data/vendor/assets/javascripts/extensions/bootstrap-table-tree-column.js +0 -0
  37. data/vendor/assets/javascripts/extensions/bootstrap-table-treegrid.js +95 -0
  38. data/vendor/assets/javascripts/locale/bootstrap-table-af-ZA.js +0 -0
  39. data/vendor/assets/javascripts/locale/bootstrap-table-ar-SA.js +0 -0
  40. data/vendor/assets/javascripts/locale/bootstrap-table-ca-ES.js +0 -0
  41. data/vendor/assets/javascripts/locale/bootstrap-table-cs-CZ.js +0 -0
  42. data/vendor/assets/javascripts/locale/bootstrap-table-da-DK.js +0 -0
  43. data/vendor/assets/javascripts/locale/bootstrap-table-de-DE.js +14 -5
  44. data/vendor/assets/javascripts/locale/bootstrap-table-el-GR.js +0 -0
  45. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +0 -0
  46. data/vendor/assets/javascripts/locale/bootstrap-table-es-AR.js +0 -0
  47. data/vendor/assets/javascripts/locale/bootstrap-table-es-CL.js +0 -0
  48. data/vendor/assets/javascripts/locale/bootstrap-table-es-CR.js +0 -0
  49. data/vendor/assets/javascripts/locale/bootstrap-table-es-ES.js +0 -0
  50. data/vendor/assets/javascripts/locale/bootstrap-table-es-MX.js +20 -1
  51. data/vendor/assets/javascripts/locale/bootstrap-table-es-NI.js +0 -0
  52. data/vendor/assets/javascripts/locale/bootstrap-table-es-SP.js +0 -0
  53. data/vendor/assets/javascripts/locale/bootstrap-table-et-EE.js +0 -0
  54. data/vendor/assets/javascripts/locale/bootstrap-table-eu-EU.js +43 -0
  55. data/vendor/assets/javascripts/locale/bootstrap-table-fa-IR.js +0 -0
  56. data/vendor/assets/javascripts/locale/bootstrap-table-fr-BE.js +0 -0
  57. data/vendor/assets/javascripts/locale/bootstrap-table-fr-FR.js +54 -0
  58. data/vendor/assets/javascripts/locale/bootstrap-table-he-IL.js +0 -0
  59. data/vendor/assets/javascripts/locale/bootstrap-table-hr-HR.js +0 -0
  60. data/vendor/assets/javascripts/locale/bootstrap-table-hu-HU.js +0 -0
  61. data/vendor/assets/javascripts/locale/bootstrap-table-id-ID.js +0 -0
  62. data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +0 -0
  63. data/vendor/assets/javascripts/locale/bootstrap-table-ja-JP.js +0 -0
  64. data/vendor/assets/javascripts/locale/bootstrap-table-ka-GE.js +0 -0
  65. data/vendor/assets/javascripts/locale/bootstrap-table-ko-KR.js +0 -0
  66. data/vendor/assets/javascripts/locale/bootstrap-table-ms-MY.js +0 -0
  67. data/vendor/assets/javascripts/locale/bootstrap-table-nb-NO.js +0 -0
  68. data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +0 -0
  69. data/vendor/assets/javascripts/locale/bootstrap-table-pl-PL.js +0 -0
  70. data/vendor/assets/javascripts/locale/bootstrap-table-pt-BR.js +0 -0
  71. data/vendor/assets/javascripts/locale/bootstrap-table-pt-PT.js +0 -0
  72. data/vendor/assets/javascripts/locale/bootstrap-table-ro-RO.js +0 -0
  73. data/vendor/assets/javascripts/locale/bootstrap-table-ru-RU.js +0 -0
  74. data/vendor/assets/javascripts/locale/bootstrap-table-sk-SK.js +12 -0
  75. data/vendor/assets/javascripts/locale/bootstrap-table-sv-SE.js +0 -0
  76. data/vendor/assets/javascripts/locale/bootstrap-table-th-TH.js +0 -0
  77. data/vendor/assets/javascripts/locale/bootstrap-table-tr-TR.js +0 -0
  78. data/vendor/assets/javascripts/locale/bootstrap-table-uk-UA.js +0 -0
  79. data/vendor/assets/javascripts/locale/bootstrap-table-ur-PK.js +0 -0
  80. data/vendor/assets/javascripts/locale/bootstrap-table-uz-Latn-UZ.js +0 -0
  81. data/vendor/assets/javascripts/locale/bootstrap-table-vi-VN.js +0 -0
  82. data/vendor/assets/javascripts/locale/bootstrap-table-zh-CN.js +0 -0
  83. data/vendor/assets/javascripts/locale/bootstrap-table-zh-TW.js +0 -0
  84. data/vendor/assets/stylesheets/bootstrap-table.css +11 -6
  85. data/vendor/assets/stylesheets/extensions/bootstrap-table-auto-refresh.css +1 -1
  86. data/vendor/assets/stylesheets/extensions/bootstrap-table-click-edit-row.css +0 -0
  87. data/vendor/assets/stylesheets/extensions/bootstrap-table-filter-control.css +0 -0
  88. data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by-v2.css +0 -0
  89. data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by.css +0 -0
  90. data/vendor/assets/stylesheets/extensions/bootstrap-table-jumpto.css +8 -0
  91. data/vendor/assets/stylesheets/extensions/bootstrap-table-multiple-selection-row.css +0 -0
  92. data/vendor/assets/stylesheets/extensions/bootstrap-table-reorder-rows.css +0 -0
  93. data/vendor/assets/stylesheets/extensions/bootstrap-table-sticky-header.css +0 -0
  94. data/vendor/assets/stylesheets/extensions/bootstrap-table-tree-column.css +0 -0
  95. metadata +49 -50
  96. data/vendor/assets/javascripts/locale/README.md +0 -179
  97. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js.template +0 -49
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @author: Dennis Hernández
3
3
  * @webSite: http://djhvscf.github.io/Blog
4
- * @version: v2.1.1
4
+ * @version: v2.1.2
5
5
  */
6
6
 
7
7
  (function ($) {
@@ -40,7 +40,9 @@
40
40
  };
41
41
 
42
42
  var sortSelectControl = function (selectControl) {
43
+ selectControl = $(selectControl.get(selectControl.length - 1));
43
44
  var $opts = selectControl.find('option:gt(0)');
45
+
44
46
  $opts.sort(function (a, b) {
45
47
  a = $(a).text().toLowerCase();
46
48
  b = $(b).text().toLowerCase();
@@ -93,7 +95,7 @@
93
95
 
94
96
  var getCursorPosition = function(el) {
95
97
  if ($.fn.bootstrapTable.utils.isIEBrowser()) {
96
- if ($(el).is('input')) {
98
+ if ($(el).is('input[type=text]')) {
97
99
  var pos = 0;
98
100
  if ('selectionStart' in el) {
99
101
  pos = el.selectionStart;
@@ -113,14 +115,8 @@
113
115
  }
114
116
  };
115
117
 
116
- var setCursorPosition = function (el, index) {
117
- if ($.fn.bootstrapTable.utils.isIEBrowser()) {
118
- if(el.setSelectionRange !== undefined) {
119
- el.setSelectionRange(index, index);
120
- } else {
121
- $(el).val(el.value);
122
- }
123
- }
118
+ var setCursorPosition = function (el) {
119
+ $(el).val(el.value);
124
120
  };
125
121
 
126
122
  var copyValues = function (that) {
@@ -199,7 +195,7 @@
199
195
  that.pageTo;
200
196
 
201
197
  $.each(that.header.fields, function (j, field) {
202
- var column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)],
198
+ var column = that.columns[that.fieldsColumnsIndex[field]],
203
199
  selectControl = $('.bootstrap-table-filter-control-' + escapeID(column.field));
204
200
 
205
201
  if (isColumnSearchableViaSelect(column) && isFilterDataNotGiven(column) && hasSelectControlElement(selectControl)) {
@@ -237,8 +233,7 @@
237
233
  var createControls = function (that, header) {
238
234
  var addedFilterControl = false,
239
235
  isVisible,
240
- html,
241
- timeoutId = 0;
236
+ html;
242
237
 
243
238
  $.each(that.columns, function (i, column) {
244
239
  isVisible = 'hidden';
@@ -257,7 +252,7 @@
257
252
  if (column.searchable && that.options.filterTemplate[nameControl]) {
258
253
  addedFilterControl = true;
259
254
  isVisible = 'visible';
260
- html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible, column.filterControlPlaceholder));
255
+ html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible, column.filterControlPlaceholder ? column.filterControlPlaceholder : "", "filter-control-" + i));
261
256
  }
262
257
  }
263
258
 
@@ -317,15 +312,31 @@
317
312
 
318
313
  if (addedFilterControl) {
319
314
  header.off('keyup', 'input').on('keyup', 'input', function (event) {
320
- clearTimeout(timeoutId);
321
- timeoutId = setTimeout(function () {
315
+ if (that.options.searchOnEnterKey && event.keyCode !== 13) {
316
+ return;
317
+ }
318
+
319
+ if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) {
320
+ return;
321
+ }
322
+
323
+ clearTimeout(event.currentTarget.timeoutId || 0);
324
+ event.currentTarget.timeoutId = setTimeout(function () {
322
325
  that.onColumnSearch(event);
323
326
  }, that.options.searchTimeOut);
324
327
  });
325
328
 
326
329
  header.off('change', 'select').on('change', 'select', function (event) {
327
- clearTimeout(timeoutId);
328
- timeoutId = setTimeout(function () {
330
+ if (that.options.searchOnEnterKey && event.keyCode !== 13) {
331
+ return;
332
+ }
333
+
334
+ if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) {
335
+ return;
336
+ }
337
+
338
+ clearTimeout(event.currentTarget.timeoutId || 0);
339
+ event.currentTarget.timeoutId = setTimeout(function () {
329
340
  that.onColumnSearch(event);
330
341
  }, that.options.searchTimeOut);
331
342
  });
@@ -342,8 +353,8 @@
342
353
  var newValue = $input.val();
343
354
 
344
355
  if (newValue === "") {
345
- clearTimeout(timeoutId);
346
- timeoutId = setTimeout(function () {
356
+ clearTimeout(event.currentTarget.timeoutId || 0);
357
+ event.currentTarget.timeoutId = setTimeout(function () {
347
358
  that.onColumnSearch(event);
348
359
  }, that.options.searchTimeOut);
349
360
  }
@@ -355,7 +366,7 @@
355
366
  if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') {
356
367
  header.find('.date-filter-control.bootstrap-table-filter-control-' + column.field).datepicker(column.filterDatepickerOptions)
357
368
  .on('changeDate', function (e) {
358
- $(sprintf(".%s", e.currentTarget.classList.toString().split(" ").join("."))).val(e.currentTarget.value);
369
+ $(sprintf("#%s", e.currentTarget.id)).val(e.currentTarget.value);
359
370
  //Fired the keyup event
360
371
  $(e.currentTarget).keyup();
361
372
  });
@@ -441,11 +452,13 @@
441
452
  return sprintf('<input type="text" class="form-control date-filter-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s">', field, isVisible);
442
453
  }
443
454
  },
455
+ disableControlWhenSearch: false,
456
+ searchOnEnterKey: false,
444
457
  //internal variables
445
458
  valuesFilterControl: []
446
459
  });
447
460
 
448
- $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
461
+ $.extend($.fn.bootstrapTable.columnDefaults, {
449
462
  filterControl: undefined,
450
463
  filterData: undefined,
451
464
  filterDatepickerOptions: undefined,
@@ -467,8 +480,11 @@
467
480
  return 'Clear Filters';
468
481
  }
469
482
  });
483
+
470
484
  $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
471
485
 
486
+ $.fn.bootstrapTable.methods.push('triggerSearch');
487
+
472
488
  var BootstrapTable = $.fn.bootstrapTable.Constructor,
473
489
  _init = BootstrapTable.prototype.init,
474
490
  _initToolbar = BootstrapTable.prototype.initToolbar,
@@ -509,13 +525,17 @@
509
525
  }
510
526
  }).on('column-switch.bs.table', function() {
511
527
  setValues(that);
528
+ }).on('load-success.bs.table', function() {
529
+ that.EnableControls(true);
530
+ }).on('load-error.bs.table', function() {
531
+ that.EnableControls(true);
512
532
  });
513
533
  }
514
534
  _init.apply(this, Array.prototype.slice.apply(arguments));
515
535
  };
516
536
 
517
537
  BootstrapTable.prototype.initToolbar = function () {
518
- this.showToolbar = this.options.filterControl && this.options.filterShowClear;
538
+ this.showToolbar = this.showToolbar || this.options.filterControl && this.options.filterShowClear;
519
539
 
520
540
  _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
521
541
 
@@ -525,7 +545,7 @@
525
545
 
526
546
  if (!$btnClear.length) {
527
547
  $btnClear = $([
528
- '<button class="btn btn-default filter-show-clear" ',
548
+ sprintf('<button class="btn btn-%s filter-show-clear" ', this.options.buttonsClass),
529
549
  sprintf('type="button" title="%s">', this.options.formatClearFilters()),
530
550
  sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.clear),
531
551
  '</button>'
@@ -559,12 +579,12 @@
559
579
  }
560
580
 
561
581
  var that = this;
562
- var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
582
+ var fp = $.isEmptyObject(that.filterColumnsPartial) ? null : that.filterColumnsPartial;
563
583
 
564
584
  //Check partial column filter
565
- this.data = fp ? $.grep(this.data, function (item, i) {
585
+ that.data = fp ? $.grep(that.data, function (item, i) {
566
586
  for (var key in fp) {
567
- var thisColumn = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)];
587
+ var thisColumn = that.columns[that.fieldsColumnsIndex[key]];
568
588
  var fval = fp[key].toLowerCase();
569
589
  var value = item[key];
570
590
 
@@ -575,28 +595,27 @@
575
595
  [value, item, i], value);
576
596
  }
577
597
 
578
- if (thisColumn.filterStrictSearch) {
579
- if (!($.inArray(key, that.header.fields) !== -1 &&
580
- (typeof value === 'string' || typeof value === 'number') &&
581
- value.toString().toLowerCase() === fval.toString().toLowerCase())) {
582
- return false;
583
- }
584
- } else if (thisColumn.filterStartsWithSearch) {
585
- if (!($.inArray(key, that.header.fields) !== -1 &&
586
- (typeof value === 'string' || typeof value === 'number') &&
587
- (value + '').toLowerCase().indexOf(fval) === 0)) {
588
- return false;
589
- }
590
- } else {
591
- if (!($.inArray(key, that.header.fields) !== -1 &&
592
- (typeof value === 'string' || typeof value === 'number') &&
593
- (value + '').toLowerCase().indexOf(fval) !== -1)) {
594
- return false;
598
+ if($.inArray(key, that.header.fields) !== -1 ) {
599
+ if(typeof value === 'string' || typeof value === 'number') {
600
+ if (thisColumn.filterStrictSearch) {
601
+ if(value.toString().toLowerCase() === fval.toString().toLowerCase()) {
602
+ return true;
603
+ }
604
+ } else if (thisColumn.filterStartsWithSearch) {
605
+ if((value + '').toLowerCase().indexOf(fval) === 0) {
606
+ return true;
607
+ }
608
+ } else {
609
+ if((value + '').toLowerCase().indexOf(fval) !== -1) {
610
+ return true;
611
+ }
612
+ }
595
613
  }
596
614
  }
597
615
  }
598
- return true;
599
- }) : this.data;
616
+
617
+ return false;
618
+ }) : that.data;
600
619
  };
601
620
 
602
621
  BootstrapTable.prototype.initColumnSearch = function(filterColumnsDefaults) {
@@ -638,6 +657,7 @@
638
657
  this.searchText += "randomText";
639
658
 
640
659
  this.options.pageNumber = 1;
660
+ this.EnableControls(false);
641
661
  this.onSearch(event);
642
662
  this.trigger('column-search', $field, text);
643
663
  };
@@ -694,4 +714,31 @@
694
714
  }, that.options.searchTimeOut);
695
715
  }
696
716
  };
717
+
718
+ BootstrapTable.prototype.triggerSearch = function () {
719
+ var header = getCurrentHeader(this),
720
+ searchControls = getCurrentSearchControls(this);
721
+
722
+ header.find(searchControls).each(function () {
723
+ var el = $(this);
724
+ if(el.is('select')) {
725
+ el.change();
726
+ } else {
727
+ el.keyup();
728
+ }
729
+ });
730
+ };
731
+
732
+ BootstrapTable.prototype.EnableControls = function(enable) {
733
+ if((this.options.disableControlWhenSearch) && (this.options.sidePagination === 'server')) {
734
+ var header = getCurrentHeader(this),
735
+ searchControls = getCurrentSearchControls(this);
736
+
737
+ if(!enable) {
738
+ header.find(searchControls).prop('disabled', 'disabled');
739
+ } else {
740
+ header.find(searchControls).removeProp('disabled');
741
+ }
742
+ }
743
+ };
697
744
  })(jQuery);
@@ -32,7 +32,7 @@
32
32
  if (!row.IsParent) {
33
33
  for (var prop in row) {
34
34
  if (!isNaN(parseFloat(row[prop]))) {
35
- if (that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, prop)].groupBySumGroup) {
35
+ if (that.columns[that.fieldsColumnsIndex[prop]].groupBySumGroup) {
36
36
  if (sumRow[prop] === undefined) {
37
37
  sumRow[prop] = 0;
38
38
  }
@@ -176,7 +176,7 @@
176
176
 
177
177
  originalRowAttr = this.options.rowAttributes;
178
178
  this.options.rowAttributes = rowAttr;
179
- this.$el.on('post-body.bs.table', function () {
179
+ this.$el.off('post-body.bs.table').on('post-body.bs.table', function () {
180
180
  that.$el.treetable({
181
181
  expandable: true,
182
182
  onNodeExpand: function () {
@@ -16,7 +16,6 @@
16
16
  }
17
17
  });
18
18
  });
19
-
20
19
  this.initHeader();
21
20
  this.initBody();
22
21
  this.initToolbar();
@@ -26,9 +25,11 @@
26
25
  this.options.locale = localeId;
27
26
  this.initLocale();
28
27
  this.initPagination();
28
+ this.initBody();
29
+ this.initToolbar();
29
30
  };
30
31
 
31
32
  $.fn.bootstrapTable.methods.push('changeTitle');
32
33
  $.fn.bootstrapTable.methods.push('changeLocale');
33
34
 
34
- }(jQuery);
35
+ }(jQuery);
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @author Jay <jwang@dizsoft.com>
3
+ */
4
+
5
+ (function ($) {
6
+ 'use strict';
7
+ var sprintf = $.fn.bootstrapTable.utils.sprintf;
8
+
9
+ $.extend($.fn.bootstrapTable.defaults, {
10
+ showJumpto: false,
11
+ exportOptions: {}
12
+ });
13
+
14
+ $.extend($.fn.bootstrapTable.locales, {
15
+ formatJumpto: function () {
16
+ return 'GO';
17
+ }
18
+ });
19
+ $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
20
+
21
+ var BootstrapTable = $.fn.bootstrapTable.Constructor,
22
+ _initPagination = BootstrapTable.prototype.initPagination;
23
+
24
+ BootstrapTable.prototype.initPagination = function () {
25
+ _initPagination.apply(this, Array.prototype.slice.apply(arguments));
26
+
27
+ if (this.options.showJumpto) {
28
+ var that = this,
29
+ $pageGroup = this.$pagination.find('ul.pagination'),
30
+ $jumpto = $pageGroup.find('li.jumpto');
31
+
32
+ if (!$jumpto.length) {
33
+ $jumpto = $([
34
+ '<li class="jumpto">',
35
+ '<input type="text" class="form-control">',
36
+ '<button class="btn' +
37
+ sprintf(' btn-%s', this.options.buttonsClass) +
38
+ sprintf(' btn-%s', this.options.iconSize) +
39
+ '" title="' + this.options.formatJumpto() + '" ' +
40
+ ' type="button">'+this.options.formatJumpto(),
41
+ '</button>',
42
+ '</li>'].join('')).appendTo($pageGroup);
43
+
44
+ $jumpto.find('button').click(function () {
45
+ that.selectPage(parseInt($jumpto.find('input').val()));
46
+ });
47
+ }
48
+ }
49
+ };
50
+ })(jQuery);
@@ -13,7 +13,7 @@
13
13
  $.each(that.columns, function (i, column) {
14
14
  if (that.options.columnsHidden.indexOf(column.field) !== -1) {
15
15
  if (column.visible !== checked) {
16
- that.toggleColumn($.fn.bootstrapTable.utils.getFieldIndex(that.columns, column.field), checked, true);
16
+ that.toggleColumn(that.fieldsColumnsIndex[column.field], checked, true);
17
17
  }
18
18
  }
19
19
  });
@@ -35,7 +35,7 @@
35
35
  for (var key in item) {
36
36
  key = $.isNumeric(key) ? parseInt(key, 10) : key;
37
37
  var value = item[key],
38
- column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)],
38
+ column = that.columns[that.fieldsColumnsIndex[key]],
39
39
  j = $.inArray(key, that.header.fields);
40
40
 
41
41
  // Fix #142: search use formated data
@@ -11,16 +11,16 @@
11
11
  var isSingleSort = false;
12
12
 
13
13
  var showSortModal = function(that) {
14
- var _selector = that.$sortModal.selector,
15
- _id = _selector.substr(1);
14
+ var _selector = that.sortModalSelector,
15
+ _id = '#' + _selector;
16
16
 
17
17
  if (!$(_id).hasClass("modal")) {
18
- var sModal = ' <div class="modal fade" id="' + _id + '" tabindex="-1" role="dialog" aria-labelledby="' + _id + 'Label" aria-hidden="true">';
18
+ var sModal = ' <div class="modal fade" id="' + _selector + '" tabindex="-1" role="dialog" aria-labelledby="' + _selector + 'Label" aria-hidden="true">';
19
19
  sModal += ' <div class="modal-dialog">';
20
20
  sModal += ' <div class="modal-content">';
21
21
  sModal += ' <div class="modal-header">';
22
22
  sModal += ' <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
23
- sModal += ' <h4 class="modal-title" id="' + _id + 'Label">' + that.options.formatMultipleSort() + '</h4>';
23
+ sModal += ' <h4 class="modal-title" id="' + _selector + 'Label">' + that.options.formatMultipleSort() + '</h4>';
24
24
  sModal += ' </div>';
25
25
  sModal += ' <div class="modal-body">';
26
26
  sModal += ' <div class="bootstrap-table">';
@@ -56,7 +56,7 @@
56
56
 
57
57
  $('body').append($(sModal));
58
58
 
59
- that.$sortModal = $(_selector);
59
+ that.$sortModal = $(_id);
60
60
  var $rows = that.$sortModal.find('tbody > tr');
61
61
 
62
62
  that.$sortModal.off('click', '#add').on('click', '#add', function() {
@@ -123,16 +123,15 @@
123
123
  that.options.sortName = '';
124
124
 
125
125
  if (that.options.sidePagination === 'server') {
126
-
126
+ var t = that.options.queryParams;
127
127
  that.options.queryParams = function(params) {
128
128
  params.multiSort = that.options.sortPriority;
129
- return params;
129
+ return t(params);
130
130
  };
131
-
131
+ isSingleSort=false;
132
132
  that.initServer(that.options.silentSort);
133
133
  return;
134
134
  }
135
-
136
135
  that.onMultipleSort();
137
136
 
138
137
  }
@@ -161,8 +160,11 @@
161
160
  }
162
161
  };
163
162
 
163
+ $.fn.bootstrapTable.methods.push('multipleSort');
164
+
164
165
  $.extend($.fn.bootstrapTable.defaults, {
165
166
  showMultiSort: false,
167
+ showMultiSortButton: true,
166
168
  sortPriority: null,
167
169
  onMultipleSort: function() {
168
170
  return false;
@@ -227,18 +229,28 @@
227
229
  _initToolbar = BootstrapTable.prototype.initToolbar;
228
230
 
229
231
  BootstrapTable.prototype.initToolbar = function() {
230
- this.showToolbar = true;
232
+ this.showToolbar = this.showToolbar || this.options.showMultiSort;
231
233
  var that = this,
232
- sortModalId = '#sortModal_' + this.$el.attr('id');
234
+ sortModalSelector = 'sortModal_' + this.$el.attr('id'),
235
+ sortModalId = '#' + sortModalSelector;
233
236
  this.$sortModal = $(sortModalId);
237
+ this.sortModalSelector = sortModalSelector;
234
238
 
235
239
  _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
236
240
 
241
+ if (that.options.sidePagination === 'server' && !isSingleSort && that.options.sortPriority !== null){
242
+ var t = that.options.queryParams;
243
+ that.options.queryParams = function(params) {
244
+ params.multiSort = that.options.sortPriority;
245
+ return t(params);
246
+ };
247
+ }
248
+
237
249
  if (this.options.showMultiSort) {
238
250
  var $btnGroup = this.$toolbar.find('>.btn-group').first(),
239
251
  $multiSortBtn = this.$toolbar.find('div.multi-sort');
240
252
 
241
- if (!$multiSortBtn.length) {
253
+ if (!$multiSortBtn.length && this.options.showMultiSortButton) {
242
254
  $multiSortBtn = ' <button class="multi-sort btn btn-default' + (this.options.iconSize === undefined ? '' : ' btn-' + this.options.iconSize) + '" type="button" data-toggle="modal" data-target="' + sortModalId + '" title="' + this.options.formatMultipleSort() + '">';
243
255
  $multiSortBtn += ' <i class="' + this.options.iconsPrefix + ' ' + this.options.icons.sort + '"></i>';
244
256
  $multiSortBtn += '</button>';
@@ -282,6 +294,13 @@
282
294
  }
283
295
  };
284
296
 
297
+ BootstrapTable.prototype.multipleSort = function() {
298
+ var that = this;
299
+ if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object' && that.options.sidePagination !== 'server') {
300
+ that.onMultipleSort();
301
+ }
302
+ };
303
+
285
304
  BootstrapTable.prototype.onMultipleSort = function() {
286
305
  var that = this;
287
306