bootstrap-table-rails 1.11.1.1 → 1.12.1

Sign up to get free protection for your applications and to get access to all the features.
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