bootstrap-table-rails 1.9.1 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (23) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -1
  3. data/lib/bootstrap-table-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/bootstrap-table-locale-all.js +30 -10
  5. data/vendor/assets/javascripts/bootstrap-table.js +157 -53
  6. data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +8 -4
  7. data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +21 -0
  8. data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +9 -2
  9. data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +127 -46
  10. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by 2.js +226 -0
  11. data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +5 -0
  12. data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +12 -2
  13. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +1 -0
  14. data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +104 -0
  15. data/vendor/assets/javascripts/locale/bootstrap-table-ca-ES.js +7 -6
  16. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +2 -2
  17. data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +16 -1
  18. data/vendor/assets/javascripts/locale/bootstrap-table-ru-RU.js +3 -0
  19. data/vendor/assets/javascripts/locale/bootstrap-table-zh-TW.js +2 -2
  20. data/vendor/assets/stylesheets/bootstrap-table.css +7 -2
  21. data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by 2.css +7 -0
  22. data/vendor/assets/stylesheets/extensions/bootstrap-table-sticky-header.css +22 -0
  23. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b2599acfe26dc2954e8237a3f8f82d811a46f5e
4
- data.tar.gz: e64ee44294cea745e55b4f5b77759a167c629e01
3
+ metadata.gz: 5ad3863ebcf97a6968cd420fe3f6f5b8924c751f
4
+ data.tar.gz: 6b3398adbc5e45f341c66f1c66eedb66fb3e01fa
5
5
  SHA512:
6
- metadata.gz: 0e4fd7b855837ceb4cd916fbc569cabd7539dc1a57e1ce0556c081c67dd70e684bfdd8b0980ff7d4ed13a348ba79b65b03f98b5b36bb53e4b3ac0a72d38b6965
7
- data.tar.gz: 3d1d08724a9b23695d883568a92489049f77ac3a092c6cac5f6888ed96662e2d8618e51c2592f037706183b5c021f534b52f76cc663edb086519cd05f42a9381
6
+ metadata.gz: 9efee877a9c3825d91ae433eeb5de517877f30fe2819f303b59ae15215a4370b38fc05e5dcb45fcc6f48015309d8f3cb22d7452e02cf48cf2597037350135dac
7
+ data.tar.gz: 5dbc6f60ad0d7fe5af62c63fefa75e6d8edd3e42e8df839f86e8691039dfd5eaf65784ed5324536ca1bc7a8ef3ff4b042d50cb10f2e4fb0eaaa400d63e83e4cf
data/README.md CHANGED
@@ -46,6 +46,7 @@ vendor/
46
46
  │   │   ├── bootstrap-table-filter-control.js
47
47
  │   │   ├── bootstrap-table-filter.js
48
48
  │   │   ├── bootstrap-table-flat-json.js
49
+ │   │   ├── bootstrap-table-group-by\ 2.js
49
50
  │   │   ├── bootstrap-table-group-by.js
50
51
  │   │   ├── bootstrap-table-key-events.js
51
52
  │   │   ├── bootstrap-table-mobile.js
@@ -55,6 +56,7 @@ vendor/
55
56
  │   │   ├── bootstrap-table-reorder-columns.js
56
57
  │   │   ├── bootstrap-table-reorder-rows.js
57
58
  │   │   ├── bootstrap-table-resizable.js
59
+ │   │   ├── bootstrap-table-sticky-header.js
58
60
  │   │   └── bootstrap-table-toolbar.js
59
61
  │   └── locale
60
62
  │   ├── bootstrap-table-af-ZA.js
@@ -101,8 +103,10 @@ vendor/
101
103
  └── stylesheets
102
104
  ├── bootstrap-table.css
103
105
  └── extensions
106
+ ├── bootstrap-table-group-by\ 2.css
104
107
  ├── bootstrap-table-group-by.css
105
- └── bootstrap-table-reorder-rows.css
108
+ ├── bootstrap-table-reorder-rows.css
109
+ └── bootstrap-table-sticky-header.css
106
110
  ```
107
111
 
108
112
 
@@ -1,7 +1,7 @@
1
1
  module Bootstrap
2
2
  module Table
3
3
  module Rails
4
- VERSION = "1.9.1"
4
+ VERSION = "1.10.0"
5
5
  end
6
6
  end
7
7
  end
@@ -82,14 +82,15 @@
82
82
 
83
83
  /**
84
84
  * Bootstrap Table Catalan translation
85
- * Author: Marc Pina<iwalkalone69@gmail.com>
85
+ * Authors: Marc Pina<iwalkalone69@gmail.com>
86
+ * Claudi Martinez<claudix.kernel@gmail.com>
86
87
  */
87
88
  (function ($) {
88
89
  'use strict';
89
90
 
90
91
  $.fn.bootstrapTable.locales['ca-ES'] = {
91
92
  formatLoadingMessage: function () {
92
- return 'Si us plau esperi...';
93
+ return 'Espereu, si us plau...';
93
94
  },
94
95
  formatRecordsPerPage: function (pageNumber) {
95
96
  return pageNumber + ' resultats per pàgina';
@@ -98,19 +99,19 @@
98
99
  return 'Mostrant de ' + pageFrom + ' fins ' + pageTo + ' - total ' + totalRows + ' resultats';
99
100
  },
100
101
  formatSearch: function () {
101
- return 'Buscar';
102
+ return 'Cerca';
102
103
  },
103
104
  formatNoMatches: function () {
104
105
  return 'No s\'han trobat resultats';
105
106
  },
106
107
  formatPaginationSwitch: function () {
107
- return 'Amagar/Mostrar paginació';
108
+ return 'Amaga/Mostra paginació';
108
109
  },
109
110
  formatRefresh: function () {
110
- return 'Refrescar';
111
+ return 'Refresca';
111
112
  },
112
113
  formatToggle: function () {
113
- return 'Amagar/Mostrar';
114
+ return 'Alterna formatació';
114
115
  },
115
116
  formatColumns: function () {
116
117
  return 'Columnes';
@@ -285,7 +286,7 @@
285
286
  return 'Loading, please wait...';
286
287
  },
287
288
  formatRecordsPerPage: function (pageNumber) {
288
- return pageNumber + ' records per page';
289
+ return pageNumber + ' rows per page';
289
290
  },
290
291
  formatShowingRows: function (pageFrom, pageTo, totalRows) {
291
292
  return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
@@ -316,6 +317,7 @@
316
317
  $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['en-US']);
317
318
 
318
319
  })(jQuery);
320
+
319
321
  /**
320
322
  * Bootstrap Table Spanish (Argentina) translation
321
323
  * Author: Felix Vera (felix.vera@gmail.com)
@@ -1048,13 +1050,28 @@
1048
1050
  return pageNumber + ' records per pagina';
1049
1051
  },
1050
1052
  formatShowingRows: function (pageFrom, pageTo, totalRows) {
1051
- return 'Toon ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' records';
1053
+ return 'Toon ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' record' + ((totalRows > 1) ? 's' : '');
1054
+ },
1055
+ formatDetailPagination: function (totalRows) {
1056
+ return 'Toon ' + totalRows + ' record' + ((totalRows > 1) ? 's' : '');
1052
1057
  },
1053
1058
  formatSearch: function () {
1054
1059
  return 'Zoeken';
1055
1060
  },
1056
1061
  formatNoMatches: function () {
1057
1062
  return 'Geen resultaten gevonden';
1063
+ },
1064
+ formatRefresh: function () {
1065
+ return 'Vernieuwen';
1066
+ },
1067
+ formatToggle: function () {
1068
+ return 'Omschakelen';
1069
+ },
1070
+ formatColumns: function () {
1071
+ return 'Kolommen';
1072
+ },
1073
+ formatAllRows: function () {
1074
+ return 'Alle';
1058
1075
  }
1059
1076
  };
1060
1077
 
@@ -1244,6 +1261,9 @@
1244
1261
  },
1245
1262
  formatColumns: function () {
1246
1263
  return 'Колонки';
1264
+ },
1265
+ formatClearFilters: function () {
1266
+ return 'Очистить фильтры';
1247
1267
  }
1248
1268
  };
1249
1269
 
@@ -1571,13 +1591,13 @@
1571
1591
  return '搜尋';
1572
1592
  },
1573
1593
  formatNoMatches: function () {
1574
- return '沒有找符合的結果';
1594
+ return '沒有找到符合的結果';
1575
1595
  },
1576
1596
  formatPaginationSwitch: function () {
1577
1597
  return '隱藏/顯示分頁';
1578
1598
  },
1579
1599
  formatRefresh: function () {
1580
- return '刷新';
1600
+ return '重新整理';
1581
1601
  },
1582
1602
  formatToggle: function () {
1583
1603
  return '切換';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @author zhixin wen <wenzhixin2010@gmail.com>
3
- * version: 1.9.1
3
+ * version: 1.10.0
4
4
  * https://github.com/wenzhixin/bootstrap-table/
5
5
  */
6
6
 
@@ -180,11 +180,12 @@
180
180
  var escapeHTML = function (text) {
181
181
  if (typeof text === 'string') {
182
182
  return text
183
- .replace(/&/g, "&amp;")
184
- .replace(/</g, "&lt;")
185
- .replace(/>/g, "&gt;")
186
- .replace(/"/g, "&quot;")
187
- .replace(/'/g, "&#039;");
183
+ .replace(/&/g, '&amp;')
184
+ .replace(/</g, '&lt;')
185
+ .replace(/>/g, '&gt;')
186
+ .replace(/"/g, '&quot;')
187
+ .replace(/'/g, '&#039;')
188
+ .replace(/`/g, '&#x60;');
188
189
  }
189
190
  return text;
190
191
  };
@@ -211,17 +212,21 @@
211
212
  return dataAttr;
212
213
  };
213
214
 
214
- var getItemField = function (item, field) {
215
+ var getItemField = function (item, field, escape) {
215
216
  var value = item;
216
217
 
217
218
  if (typeof field !== 'string' || item.hasOwnProperty(field)) {
218
- return item[field];
219
+ return escape ? escapeHTML(item[field]) : item[field];
219
220
  }
220
221
  var props = field.split('.');
221
222
  for (var p in props) {
222
- value = value[props[p]];
223
+ value = value && value[props[p]];
223
224
  }
224
- return value;
225
+ return escape ? escapeHTML(value) : value;
226
+ };
227
+
228
+ var isIEBrowser = function () {
229
+ return !!(navigator.userAgent.indexOf("MSIE ") > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./));
225
230
  };
226
231
 
227
232
  // BOOTSTRAP TABLE CLASS DEFINITION
@@ -272,11 +277,10 @@
272
277
  paginationHAlign: 'right', //right, left
273
278
  paginationVAlign: 'bottom', //bottom, top, both
274
279
  paginationDetailHAlign: 'left', //right, left
275
- paginationFirstText: '&laquo;',
276
280
  paginationPreText: '&lsaquo;',
277
281
  paginationNextText: '&rsaquo;',
278
- paginationLastText: '&raquo;',
279
282
  search: false,
283
+ searchOnEnterKey: false,
280
284
  strictSearch: false,
281
285
  searchAlign: 'right',
282
286
  selectItemName: 'btSelectItem',
@@ -288,6 +292,7 @@
288
292
  showToggle: false,
289
293
  buttonsAlign: 'right',
290
294
  smartDisplay: true,
295
+ escape: false,
291
296
  minimumCountColumns: 1,
292
297
  idField: undefined,
293
298
  uniqueId: undefined,
@@ -763,7 +768,11 @@
763
768
  $(this).data(visibleColumns[$(this).data('field')]);
764
769
  });
765
770
  this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {
766
- if (that.options.sortable && $(this).parent().data().sortable) {
771
+ var target = $(this);
772
+ if (target.closest('.bootstrap-table')[0] !== that.$container[0])
773
+ return false;
774
+
775
+ if (that.options.sortable && target.parent().data().sortable) {
767
776
  that.onSort(event);
768
777
  }
769
778
  });
@@ -790,8 +799,7 @@
790
799
  }
791
800
 
792
801
  this.$selectAll = this.$header.find('[name="btSelectAll"]');
793
- this.$container.off('click', '[name="btSelectAll"]')
794
- .on('click', '[name="btSelectAll"]', function () {
802
+ this.$selectAll.off('click').on('click', function () {
795
803
  var checked = $(this).prop('checked');
796
804
  that[checked ? 'checkAll' : 'uncheckAll']();
797
805
  that.updateSelected();
@@ -845,8 +853,8 @@
845
853
  if (that.header.sortNames[index]) {
846
854
  name = that.header.sortNames[index];
847
855
  }
848
- var aa = getItemField(a, name),
849
- bb = getItemField(b, name),
856
+ var aa = getItemField(a, name, that.options.escape),
857
+ bb = getItemField(b, name, that.options.escape),
850
858
  value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);
851
859
 
852
860
  if (value !== undefined) {
@@ -926,6 +934,9 @@
926
934
  $search,
927
935
  switchableCount = 0;
928
936
 
937
+ if (this.$toolbar.find('.bars').children().length) {
938
+ $('body').append($(this.options.toolbar));
939
+ }
929
940
  this.$toolbar.html('');
930
941
 
931
942
  if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {
@@ -1002,7 +1013,7 @@
1002
1013
 
1003
1014
  html.push('</div>');
1004
1015
 
1005
- // Fix #188: this.showToolbar is for extentions
1016
+ // Fix #188: this.showToolbar is for extensions
1006
1017
  if (this.showToolbar || html.length > 2) {
1007
1018
  this.$toolbar.append(html.join(''));
1008
1019
  }
@@ -1056,11 +1067,26 @@
1056
1067
  this.$toolbar.append(html.join(''));
1057
1068
  $search = this.$toolbar.find('.search input');
1058
1069
  $search.off('keyup drop').on('keyup drop', function (event) {
1070
+ if (that.options.searchOnEnterKey) {
1071
+ if (event.keyCode !== 13) {
1072
+ return;
1073
+ }
1074
+ }
1075
+
1059
1076
  clearTimeout(timeoutId); // doesn't matter if it's 0
1060
1077
  timeoutId = setTimeout(function () {
1061
1078
  that.onSearch(event);
1062
1079
  }, that.options.searchTimeOut);
1063
1080
  });
1081
+
1082
+ if (isIEBrowser()) {
1083
+ $search.off('mouseup').on('mouseup', function (event) {
1084
+ clearTimeout(timeoutId); // doesn't matter if it's 0
1085
+ timeoutId = setTimeout(function () {
1086
+ that.onSearch(event);
1087
+ }, that.options.searchTimeOut);
1088
+ });
1089
+ }
1064
1090
  }
1065
1091
  };
1066
1092
 
@@ -1076,6 +1102,7 @@
1076
1102
  return;
1077
1103
  }
1078
1104
  this.searchText = text;
1105
+ this.options.searchText = text;
1079
1106
 
1080
1107
  this.options.pageNumber = 1;
1081
1108
  this.initSearch();
@@ -1111,7 +1138,7 @@
1111
1138
  column = that.columns[getFieldIndex(that.columns, key)],
1112
1139
  j = $.inArray(key, that.header.fields);
1113
1140
 
1114
- // Fix #142: search use formated data
1141
+ // Fix #142: search use formatted data
1115
1142
  if (column && column.searchFormatter) {
1116
1143
  value = calculateObjectValue(column,
1117
1144
  that.header.formatters[j], [value, item, i], value);
@@ -1243,7 +1270,6 @@
1243
1270
  html.push('</div>',
1244
1271
  '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
1245
1272
  '<ul class="pagination' + sprintf(' pagination-%s', this.options.iconSize) + '">',
1246
- '<li class="page-first"><a href="javascript:void(0)">' + this.options.paginationFirstText + '</a></li>',
1247
1273
  '<li class="page-pre"><a href="javascript:void(0)">' + this.options.paginationPreText + '</a></li>');
1248
1274
 
1249
1275
  if (this.totalPages < 5) {
@@ -1261,18 +1287,71 @@
1261
1287
  from = to - 4;
1262
1288
  }
1263
1289
  }
1290
+
1291
+ if (this.totalPages >= 6) {
1292
+ if (this.options.pageNumber >= 3) {
1293
+ html.push('<li class="page-first' + (1 === this.options.pageNumber ? ' active' : '') + '">',
1294
+ '<a href="javascript:void(0)">', 1, '</a>',
1295
+ '</li>');
1296
+
1297
+ from++;
1298
+ }
1299
+
1300
+ if (this.options.pageNumber >= 4) {
1301
+ if (this.options.pageNumber == 4 || this.totalPages == 6 || this.totalPages == 7) {
1302
+ from--;
1303
+ } else {
1304
+ html.push('<li class="page-first-separator disabled">',
1305
+ '<a href="javascript:void(0)">...</a>',
1306
+ '</li>');
1307
+ }
1308
+
1309
+ to--;
1310
+ }
1311
+ }
1312
+
1313
+ if (this.totalPages >= 7) {
1314
+ if (this.options.pageNumber >= (this.totalPages - 2)) {
1315
+ from--;
1316
+ }
1317
+ }
1318
+
1319
+ if (this.totalPages == 6) {
1320
+ if (this.options.pageNumber >= (this.totalPages - 2)) {
1321
+ to++;
1322
+ }
1323
+ } else if (this.totalPages >= 7) {
1324
+ if (this.totalPages == 7 || this.options.pageNumber >= (this.totalPages - 3)) {
1325
+ to++;
1326
+ }
1327
+ }
1328
+
1264
1329
  for (i = from; i <= to; i++) {
1265
1330
  html.push('<li class="page-number' + (i === this.options.pageNumber ? ' active' : '') + '">',
1266
1331
  '<a href="javascript:void(0)">', i, '</a>',
1267
1332
  '</li>');
1268
1333
  }
1269
1334
 
1335
+ if (this.totalPages >= 8) {
1336
+ if (this.options.pageNumber <= (this.totalPages - 4)) {
1337
+ html.push('<li class="page-last-separator disabled">',
1338
+ '<a href="javascript:void(0)">...</a>',
1339
+ '</li>');
1340
+ }
1341
+ }
1342
+
1343
+ if (this.totalPages >= 6) {
1344
+ if (this.options.pageNumber <= (this.totalPages - 3)) {
1345
+ html.push('<li class="page-last' + (this.totalPages === this.options.pageNumber ? ' active' : '') + '">',
1346
+ '<a href="javascript:void(0)">', this.totalPages, '</a>',
1347
+ '</li>');
1348
+ }
1349
+ }
1350
+
1270
1351
  html.push(
1271
1352
  '<li class="page-next"><a href="javascript:void(0)">' + this.options.paginationNextText + '</a></li>',
1272
- '<li class="page-last"><a href="javascript:void(0)">' + this.options.paginationLastText + '</a></li>',
1273
1353
  '</ul>',
1274
1354
  '</div>');
1275
-
1276
1355
  }
1277
1356
  this.$pagination.html(html.join(''));
1278
1357
 
@@ -1284,14 +1363,6 @@
1284
1363
  $last = this.$pagination.find('.page-last');
1285
1364
  $number = this.$pagination.find('.page-number');
1286
1365
 
1287
- if (this.options.pageNumber <= 1) {
1288
- $first.addClass('disabled');
1289
- $pre.addClass('disabled');
1290
- }
1291
- if (this.options.pageNumber >= this.totalPages) {
1292
- $next.addClass('disabled');
1293
- $last.addClass('disabled');
1294
- }
1295
1366
  if (this.options.smartDisplay) {
1296
1367
  if (this.totalPages <= 1) {
1297
1368
  this.$pagination.find('div.pagination').hide();
@@ -1352,12 +1423,20 @@
1352
1423
  };
1353
1424
 
1354
1425
  BootstrapTable.prototype.onPagePre = function (event) {
1355
- this.options.pageNumber--;
1426
+ if ((this.options.pageNumber - 1) == 0) {
1427
+ this.options.pageNumber = this.options.totalPages;
1428
+ } else {
1429
+ this.options.pageNumber--;
1430
+ }
1356
1431
  this.updatePagination(event);
1357
1432
  };
1358
1433
 
1359
1434
  BootstrapTable.prototype.onPageNext = function (event) {
1360
- this.options.pageNumber++;
1435
+ if ((this.options.pageNumber + 1) > this.options.totalPages) {
1436
+ this.options.pageNumber = 1;
1437
+ } else {
1438
+ this.options.pageNumber++;
1439
+ }
1361
1440
  this.updatePagination(event);
1362
1441
  };
1363
1442
 
@@ -1453,7 +1532,7 @@
1453
1532
 
1454
1533
  $.each(this.header.fields, function (j, field) {
1455
1534
  var text = '',
1456
- value = getItemField(item, field),
1535
+ value = getItemField(item, field, that.options.escape),
1457
1536
  type = '',
1458
1537
  cellStyle = {},
1459
1538
  id_ = '',
@@ -1512,8 +1591,8 @@
1512
1591
  type = column.checkbox ? 'checkbox' : type;
1513
1592
  type = column.radio ? 'radio' : type;
1514
1593
 
1515
- text = [that.options.cardView ?
1516
- '<div class="card-view">' : '<td class="bs-checkbox">',
1594
+ text = [sprintf(that.options.cardView ?
1595
+ '<div class="card-view %s">' : '<td class="bs-checkbox %s">', column['class'] || ''),
1517
1596
  '<input' +
1518
1597
  sprintf(' data-index="%s"', i) +
1519
1598
  sprintf(' name="%s"', that.options.selectItemName) +
@@ -1582,7 +1661,7 @@
1582
1661
  index = $td[0].cellIndex,
1583
1662
  field = that.header.fields[that.options.detailView && !that.options.cardView ? index - 1 : index],
1584
1663
  column = that.columns[getFieldIndex(that.columns, field)],
1585
- value = getItemField(item, field);
1664
+ value = getItemField(item, field, that.options.escape);
1586
1665
 
1587
1666
  if ($td.find('.detail-icon').length) {
1588
1667
  return;
@@ -1613,10 +1692,13 @@
1613
1692
  that.trigger('collapse-row', index, row);
1614
1693
  } else {
1615
1694
  $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));
1616
- $tr.after(sprintf('<tr class="detail-view"><td colspan="%s">%s</td></tr>',
1617
- $tr.find('td').length, calculateObjectValue(that.options,
1618
- that.options.detailFormatter, [index, row], '')));
1619
- that.trigger('expand-row', index, row, $tr.next().find('td'));
1695
+ $tr.after(sprintf('<tr class="detail-view"><td colspan="%s"></td></tr>', $tr.find('td').length));
1696
+ var $element = $tr.next().find('td');
1697
+ var content = calculateObjectValue(that.options, that.options.detailFormatter, [index, row, $element], '');
1698
+ if($element.length === 1) {
1699
+ $element.append(content);
1700
+ }
1701
+ that.trigger('expand-row', index, row, $element);
1620
1702
  }
1621
1703
  that.resetView();
1622
1704
  });
@@ -1694,15 +1776,18 @@
1694
1776
  var that = this,
1695
1777
  data = {},
1696
1778
  params = {
1697
- pageSize: this.options.pageSize === this.options.formatAllRows() ?
1698
- this.options.totalRows : this.options.pageSize,
1699
- pageNumber: this.options.pageNumber,
1700
1779
  searchText: this.searchText,
1701
1780
  sortName: this.options.sortName,
1702
1781
  sortOrder: this.options.sortOrder
1703
1782
  },
1704
1783
  request;
1705
1784
 
1785
+ if(this.options.pagination) {
1786
+ params.pageSize = this.options.pageSize === this.options.formatAllRows() ?
1787
+ this.options.totalRows : this.options.pageSize;
1788
+ params.pageNumber = this.options.pageNumber;
1789
+ }
1790
+
1706
1791
  if (!this.options.url && !this.options.ajax) {
1707
1792
  return;
1708
1793
  }
@@ -1750,14 +1835,11 @@
1750
1835
 
1751
1836
  that.load(res);
1752
1837
  that.trigger('load-success', res);
1838
+ if (!silent) that.$tableLoading.hide();
1753
1839
  },
1754
1840
  error: function (res) {
1755
1841
  that.trigger('load-error', res.status, res);
1756
- },
1757
- complete: function () {
1758
- if (!silent) {
1759
- that.$tableLoading.hide();
1760
- }
1842
+ if (!silent) that.$tableLoading.hide();
1761
1843
  }
1762
1844
  });
1763
1845
 
@@ -2120,6 +2202,7 @@
2120
2202
  this.initData(data, 'append');
2121
2203
  this.initSearch();
2122
2204
  this.initPagination();
2205
+ this.initSort();
2123
2206
  this.initBody(true);
2124
2207
  };
2125
2208
 
@@ -2127,6 +2210,7 @@
2127
2210
  this.initData(data, 'prepend');
2128
2211
  this.initSearch();
2129
2212
  this.initPagination();
2213
+ this.initSort();
2130
2214
  this.initBody(true);
2131
2215
  };
2132
2216
 
@@ -2155,6 +2239,7 @@
2155
2239
 
2156
2240
  this.initSearch();
2157
2241
  this.initPagination();
2242
+ this.initSort();
2158
2243
  this.initBody(true);
2159
2244
  };
2160
2245
 
@@ -2259,14 +2344,14 @@
2259
2344
  };
2260
2345
 
2261
2346
  BootstrapTable.prototype.showRow = function (params) {
2262
- if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
2347
+ if (!params.hasOwnProperty('index') && !params.hasOwnProperty('uniqueId')) {
2263
2348
  return;
2264
2349
  }
2265
2350
  this.toggleRow(params.index, params.uniqueId, true);
2266
2351
  };
2267
2352
 
2268
2353
  BootstrapTable.prototype.hideRow = function (params) {
2269
- if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
2354
+ if (!params.hasOwnProperty('index') && !params.hasOwnProperty('uniqueId')) {
2270
2355
  return;
2271
2356
  }
2272
2357
  this.toggleRow(params.index, params.uniqueId, false);
@@ -2318,6 +2403,10 @@
2318
2403
  return;
2319
2404
  }
2320
2405
  this.data[params.index][params.field] = params.value;
2406
+
2407
+ if (params.reinit === false) {
2408
+ return;
2409
+ }
2321
2410
  this.initSort();
2322
2411
  this.initBody(true);
2323
2412
  };
@@ -2525,7 +2614,7 @@
2525
2614
 
2526
2615
  BootstrapTable.prototype.refreshOptions = function (options) {
2527
2616
  //If the objects are equivalent then avoid the call of destroy / init methods
2528
- if (compareObjects(this.options, options, false)) {
2617
+ if (compareObjects(this.options, options, true)) {
2529
2618
  return;
2530
2619
  }
2531
2620
  this.options = $.extend(this.options, options);
@@ -2604,6 +2693,21 @@
2604
2693
  }
2605
2694
  };
2606
2695
 
2696
+ BootstrapTable.prototype.updateFormatText = function (name, text) {
2697
+ if (this.options[sprintf('format%s', name)]) {
2698
+ if (typeof text === 'string') {
2699
+ this.options[sprintf('format%s', name)] = function () {
2700
+ return text;
2701
+ };
2702
+ } else if (typeof text === 'function') {
2703
+ this.options[sprintf('format%s', name)] = text;
2704
+ }
2705
+ }
2706
+ this.initToolbar();
2707
+ this.initPagination();
2708
+ this.initBody();
2709
+ };
2710
+
2607
2711
  // BOOTSTRAP TABLE PLUGIN DEFINITION
2608
2712
  // =======================
2609
2713
 
@@ -2631,7 +2735,8 @@
2631
2735
  'toggleView',
2632
2736
  'refreshOptions',
2633
2737
  'resetSearch',
2634
- 'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows'
2738
+ 'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
2739
+ 'updateFormatText'
2635
2740
  ];
2636
2741
 
2637
2742
  $.fn.bootstrapTable = function (option) {
@@ -2686,5 +2791,4 @@
2686
2791
  $(function () {
2687
2792
  $('[data-toggle="table"]').bootstrapTable();
2688
2793
  });
2689
-
2690
2794
  }(jQuery);