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.
- checksums.yaml +7 -7
- data/README.md +6 -3
- data/lib/bootstrap-table-rails/version.rb +1 -1
- data/vendor/assets/javascripts/bootstrap-table-locale-all.js +374 -6
- data/vendor/assets/javascripts/bootstrap-table.js +348 -147
- data/vendor/assets/javascripts/extensions/bootstrap-table-accent-neutralise.js +1 -1
- data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-auto-refresh.js +62 -62
- data/vendor/assets/javascripts/extensions/bootstrap-table-click-edit-row.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +48 -69
- data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-defer-url.js +32 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +56 -8
- data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +93 -46
- data/vendor/assets/javascripts/extensions/bootstrap-table-filter.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-flat-json.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-group-by-v2.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +2 -2
- data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +3 -2
- data/vendor/assets/javascripts/extensions/bootstrap-table-jumpto.js +50 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-key-events.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +1 -1
- data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +1 -1
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-selection-row.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +31 -12
- data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-print.js +33 -17
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +2 -2
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-resizable.js +2 -1
- data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +136 -107
- data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +11 -4
- data/vendor/assets/javascripts/extensions/bootstrap-table-toolbar.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-tree-column.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-treegrid.js +95 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-af-ZA.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ar-SA.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ca-ES.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-cs-CZ.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-da-DK.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-de-DE.js +14 -5
- data/vendor/assets/javascripts/locale/bootstrap-table-el-GR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-AR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-CL.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-CR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-ES.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-MX.js +20 -1
- data/vendor/assets/javascripts/locale/bootstrap-table-es-NI.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-SP.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-et-EE.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-eu-EU.js +43 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-fa-IR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-fr-BE.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-fr-FR.js +54 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-he-IL.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-hr-HR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-hu-HU.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-id-ID.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ja-JP.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ka-GE.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ko-KR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ms-MY.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-nb-NO.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-pl-PL.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-pt-BR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-pt-PT.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ro-RO.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ru-RU.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-sk-SK.js +12 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-sv-SE.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-th-TH.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-tr-TR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-uk-UA.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ur-PK.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-uz-Latn-UZ.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-vi-VN.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-zh-CN.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-zh-TW.js +0 -0
- data/vendor/assets/stylesheets/bootstrap-table.css +11 -6
- data/vendor/assets/stylesheets/extensions/bootstrap-table-auto-refresh.css +1 -1
- data/vendor/assets/stylesheets/extensions/bootstrap-table-click-edit-row.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-filter-control.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by-v2.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-jumpto.css +8 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-multiple-selection-row.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-reorder-rows.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-sticky-header.css +0 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-tree-column.css +0 -0
- metadata +49 -50
- data/vendor/assets/javascripts/locale/README.md +0 -179
- data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js.template +0 -49
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
2
|
* @author zhixin wen <wenzhixin2010@gmail.com>
|
3
|
-
* version: 1.
|
3
|
+
* version: 1.12.1
|
4
4
|
* https://github.com/wenzhixin/bootstrap-table/
|
5
5
|
*/
|
6
6
|
|
@@ -10,6 +10,53 @@
|
|
10
10
|
// TOOLS DEFINITION
|
11
11
|
// ======================
|
12
12
|
|
13
|
+
var bootstrapVersion = 3;
|
14
|
+
try {
|
15
|
+
bootstrapVersion = parseInt($.fn.dropdown.Constructor.VERSION, 10);
|
16
|
+
} catch (e) {}
|
17
|
+
var bs = {
|
18
|
+
3: {
|
19
|
+
buttonsClass: 'default',
|
20
|
+
iconsPrefix: 'glyphicon',
|
21
|
+
icons: {
|
22
|
+
paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
|
23
|
+
paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
|
24
|
+
refresh: 'glyphicon-refresh icon-refresh',
|
25
|
+
toggleOff: 'glyphicon-list-alt icon-list-alt',
|
26
|
+
toggleOn: 'glyphicon-list-alt icon-list-alt',
|
27
|
+
columns: 'glyphicon-th icon-th',
|
28
|
+
detailOpen: 'glyphicon-plus icon-plus',
|
29
|
+
detailClose: 'glyphicon-minus icon-minus',
|
30
|
+
fullscreen: 'glyphicon-fullscreen'
|
31
|
+
},
|
32
|
+
pullClass: 'pull',
|
33
|
+
toobarDropdowHtml: ['<ul class="dropdown-menu" role="menu">', '</ul>'],
|
34
|
+
toobarDropdowItemHtml: '<li role="menuitem"><label>%s</label></li>',
|
35
|
+
pageDropdownHtml: ['<ul class="dropdown-menu" role="menu">', '</ul>'],
|
36
|
+
pageDropdownItemHtml: '<li role="menuitem" class="%s"><a href="#">%s</a></li>'
|
37
|
+
},
|
38
|
+
4: {
|
39
|
+
buttonsClass: 'secondary',
|
40
|
+
iconsPrefix: 'fa',
|
41
|
+
icons: {
|
42
|
+
paginationSwitchDown: 'fa-toggle-down',
|
43
|
+
paginationSwitchUp: 'fa-toggle-up',
|
44
|
+
refresh: 'fa-refresh',
|
45
|
+
toggleOff: 'fa-toggle-off',
|
46
|
+
toggleOn: 'fa-toggle-on',
|
47
|
+
columns: 'fa-th-list',
|
48
|
+
detailOpen: 'fa-plus',
|
49
|
+
detailClose: 'fa-minus',
|
50
|
+
fullscreen: 'fa-arrows-alt'
|
51
|
+
},
|
52
|
+
pullClass: 'float',
|
53
|
+
toobarDropdowHtml: ['<div class="dropdown-menu dropdown-menu-right">', '</div>'],
|
54
|
+
toobarDropdowItemHtml: '<label class="dropdown-item">%s</label>',
|
55
|
+
pageDropdownHtml: ['<div class="dropdown-menu">', '</div>'],
|
56
|
+
pageDropdownItemHtml: '<a class="dropdown-item %s" href="#">%s</a>'
|
57
|
+
}
|
58
|
+
}[bootstrapVersion];
|
59
|
+
|
13
60
|
var cachedWidth = null;
|
14
61
|
|
15
62
|
// it only does '%s', and return '' when arguments are undefined
|
@@ -42,19 +89,6 @@
|
|
42
89
|
return result;
|
43
90
|
};
|
44
91
|
|
45
|
-
var getFieldIndex = function (columns, field) {
|
46
|
-
var index = -1;
|
47
|
-
|
48
|
-
$.each(columns, function (i, column) {
|
49
|
-
if (column.field === field) {
|
50
|
-
index = i;
|
51
|
-
return false;
|
52
|
-
}
|
53
|
-
return true;
|
54
|
-
});
|
55
|
-
return index;
|
56
|
-
};
|
57
|
-
|
58
92
|
// http://jsfiddle.net/wenyi/47nz7ez9/3/
|
59
93
|
var setFieldIndex = function (columns) {
|
60
94
|
var i, j, k,
|
@@ -150,8 +184,17 @@
|
|
150
184
|
|
151
185
|
var compareObjects = function (objectA, objectB, compareLength) {
|
152
186
|
// Create arrays of property names
|
153
|
-
var
|
154
|
-
|
187
|
+
var getOwnPropertyNames = Object.getOwnPropertyNames || function (obj) {
|
188
|
+
var arr = [];
|
189
|
+
for (var k in obj) {
|
190
|
+
if (obj.hasOwnProperty(k)) {
|
191
|
+
arr.push(k);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
return arr;
|
195
|
+
};
|
196
|
+
var objectAProperties = getOwnPropertyNames(objectA),
|
197
|
+
objectBProperties = getOwnPropertyNames(objectB),
|
155
198
|
propName = '';
|
156
199
|
|
157
200
|
if (compareLength) {
|
@@ -286,6 +329,7 @@
|
|
286
329
|
sortName: undefined,
|
287
330
|
sortOrder: 'asc',
|
288
331
|
sortStable: false,
|
332
|
+
rememberOrder: false,
|
289
333
|
striped: false,
|
290
334
|
columns: [[]],
|
291
335
|
data: [],
|
@@ -329,7 +373,7 @@
|
|
329
373
|
showPaginationSwitch: false,
|
330
374
|
showRefresh: false,
|
331
375
|
showToggle: false,
|
332
|
-
|
376
|
+
showFullscreen: false,
|
333
377
|
smartDisplay: true,
|
334
378
|
escape: false,
|
335
379
|
minimumCountColumns: 1,
|
@@ -340,11 +384,16 @@
|
|
340
384
|
detailFormatter: function (index, row) {
|
341
385
|
return '';
|
342
386
|
},
|
387
|
+
detailFilter: function (index, row) {
|
388
|
+
return true;
|
389
|
+
},
|
343
390
|
trimOnSearch: true,
|
344
391
|
clickToSelect: false,
|
345
392
|
singleSelect: false,
|
346
393
|
toolbar: undefined,
|
347
394
|
toolbarAlign: 'left',
|
395
|
+
buttonsToolbar: undefined,
|
396
|
+
buttonsAlign: 'right',
|
348
397
|
checkboxHeader: true,
|
349
398
|
sortable: true,
|
350
399
|
silentSort: true,
|
@@ -352,22 +401,18 @@
|
|
352
401
|
searchTimeOut: 500,
|
353
402
|
searchText: '',
|
354
403
|
iconSize: undefined,
|
355
|
-
buttonsClass:
|
356
|
-
iconsPrefix:
|
357
|
-
icons:
|
358
|
-
paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
|
359
|
-
paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
|
360
|
-
refresh: 'glyphicon-refresh icon-refresh',
|
361
|
-
toggle: 'glyphicon-list-alt icon-list-alt',
|
362
|
-
columns: 'glyphicon-th icon-th',
|
363
|
-
detailOpen: 'glyphicon-plus icon-plus',
|
364
|
-
detailClose: 'glyphicon-minus icon-minus'
|
365
|
-
},
|
404
|
+
buttonsClass: bs.buttonsClass,
|
405
|
+
iconsPrefix: bs.iconsPrefix, // glyphicon or fa (font awesome)
|
406
|
+
icons: bs.icons,
|
366
407
|
|
367
408
|
customSearch: $.noop,
|
368
409
|
|
369
410
|
customSort: $.noop,
|
370
411
|
|
412
|
+
ignoreClickToSelectOn: function (element) {
|
413
|
+
return $.inArray(element.tagName, ['A', 'BUTTON']);
|
414
|
+
},
|
415
|
+
|
371
416
|
rowStyle: function (row, index) {
|
372
417
|
return {};
|
373
418
|
},
|
@@ -457,6 +502,9 @@
|
|
457
502
|
},
|
458
503
|
onResetView: function () {
|
459
504
|
return false;
|
505
|
+
},
|
506
|
+
onScrollBody: function () {
|
507
|
+
return false;
|
460
508
|
}
|
461
509
|
};
|
462
510
|
|
@@ -490,6 +538,9 @@
|
|
490
538
|
formatToggle: function () {
|
491
539
|
return 'Toggle';
|
492
540
|
},
|
541
|
+
formatFullscreen: function () {
|
542
|
+
return 'Fullscreen';
|
543
|
+
},
|
493
544
|
formatColumns: function () {
|
494
545
|
return 'Columns';
|
495
546
|
},
|
@@ -527,7 +578,8 @@
|
|
527
578
|
searchable: true,
|
528
579
|
searchFormatter: true,
|
529
580
|
cardVisible: true,
|
530
|
-
escape
|
581
|
+
escape: false,
|
582
|
+
showSelectTitle: false
|
531
583
|
};
|
532
584
|
|
533
585
|
BootstrapTable.EVENTS = {
|
@@ -556,7 +608,8 @@
|
|
556
608
|
'collapse-row.bs.table': 'onCollapseRow',
|
557
609
|
'refresh-options.bs.table': 'onRefreshOptions',
|
558
610
|
'reset-view.bs.table': 'onResetView',
|
559
|
-
'refresh.bs.table': 'onRefresh'
|
611
|
+
'refresh.bs.table': 'onRefresh',
|
612
|
+
'scroll-body.bs.table': 'onScrollBody'
|
560
613
|
};
|
561
614
|
|
562
615
|
BootstrapTable.prototype.init = function () {
|
@@ -578,7 +631,9 @@
|
|
578
631
|
if (this.options.locale) {
|
579
632
|
var parts = this.options.locale.split(/-|_/);
|
580
633
|
parts[0].toLowerCase();
|
581
|
-
if (parts[1])
|
634
|
+
if (parts[1]) {
|
635
|
+
parts[1].toUpperCase();
|
636
|
+
}
|
582
637
|
if ($.fn.bootstrapTable.locales[this.options.locale]) {
|
583
638
|
// locale as requested
|
584
639
|
$.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);
|
@@ -607,10 +662,10 @@
|
|
607
662
|
'</div>',
|
608
663
|
'</div>',
|
609
664
|
'<div class="fixed-table-footer"><table><tr></tr></table></div>',
|
665
|
+
'</div>',
|
610
666
|
this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?
|
611
667
|
'<div class="fixed-table-pagination"></div>' :
|
612
668
|
'',
|
613
|
-
'</div>',
|
614
669
|
'</div>'
|
615
670
|
].join(''));
|
616
671
|
|
@@ -620,7 +675,12 @@
|
|
620
675
|
this.$tableBody = this.$container.find('.fixed-table-body');
|
621
676
|
this.$tableLoading = this.$container.find('.fixed-table-loading');
|
622
677
|
this.$tableFooter = this.$container.find('.fixed-table-footer');
|
623
|
-
|
678
|
+
// checking if custom table-toolbar exists or not
|
679
|
+
if (this.options.buttonsToolbar) {
|
680
|
+
this.$toolbar = $('body').find(this.options.buttonsToolbar);
|
681
|
+
} else {
|
682
|
+
this.$toolbar = this.$container.find('.fixed-table-toolbar');
|
683
|
+
}
|
624
684
|
this.$pagination = this.$container.find('.fixed-table-pagination');
|
625
685
|
|
626
686
|
this.$tableBody.append(this.$el);
|
@@ -667,6 +727,7 @@
|
|
667
727
|
}
|
668
728
|
this.options.columns = $.extend(true, [], columns, this.options.columns);
|
669
729
|
this.columns = [];
|
730
|
+
this.fieldsColumnsIndex = [];
|
670
731
|
|
671
732
|
setFieldIndex(this.options.columns);
|
672
733
|
$.each(this.options.columns, function (i, columns) {
|
@@ -675,6 +736,7 @@
|
|
675
736
|
|
676
737
|
if (typeof column.fieldIndex !== 'undefined') {
|
677
738
|
that.columns[column.fieldIndex] = column;
|
739
|
+
that.fieldsColumnsIndex[column.field] = column.fieldIndex;
|
678
740
|
}
|
679
741
|
|
680
742
|
that.options.columns[i][j] = column;
|
@@ -699,9 +761,11 @@
|
|
699
761
|
var $this = $(this),
|
700
762
|
cspan = +$this.attr('colspan') || 1,
|
701
763
|
rspan = +$this.attr('rowspan') || 1,
|
702
|
-
tx,
|
764
|
+
tx,
|
765
|
+
ty;
|
703
766
|
|
704
|
-
|
767
|
+
// skip already occupied cells in current row
|
768
|
+
for (; m[y] && m[y][x]; x++);
|
705
769
|
|
706
770
|
for (tx = x; tx < x + cspan; tx++) { //mark matrix elements occupied by current cell with true
|
707
771
|
for (ty = y; ty < y + rspan; ty++) {
|
@@ -779,7 +843,8 @@
|
|
779
843
|
align = sprintf('text-align: %s; ', column.align);
|
780
844
|
style = sprintf('vertical-align: %s; ', column.valign);
|
781
845
|
style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?
|
782
|
-
|
846
|
+
(!column.showSelectTitle ? '36px' : undefined) :
|
847
|
+
(width ? width + unitWidth : undefined));
|
783
848
|
|
784
849
|
if (typeof column.fieldIndex !== 'undefined') {
|
785
850
|
that.header.fields[column.fieldIndex] = column.field;
|
@@ -811,6 +876,7 @@
|
|
811
876
|
sprintf(' rowspan="%s"', column.rowspan),
|
812
877
|
sprintf(' colspan="%s"', column.colspan),
|
813
878
|
sprintf(' data-field="%s"', column.field),
|
879
|
+
j === 0 && column.fieldIndex ? ' data-not-first-th' : '',
|
814
880
|
'>');
|
815
881
|
|
816
882
|
html.push(sprintf('<div class="th-inner %s">', that.options.sortable && column.sortable ?
|
@@ -818,7 +884,9 @@
|
|
818
884
|
|
819
885
|
text = that.options.escape ? escapeHTML(column.title) : column.title;
|
820
886
|
|
887
|
+
var title = text;
|
821
888
|
if (column.checkbox) {
|
889
|
+
text = '';
|
822
890
|
if (!that.options.singleSelect && that.options.checkboxHeader) {
|
823
891
|
text = '<input name="btSelectAll" type="checkbox" />';
|
824
892
|
}
|
@@ -829,6 +897,9 @@
|
|
829
897
|
that.header.stateField = column.field;
|
830
898
|
that.options.singleSelect = true;
|
831
899
|
}
|
900
|
+
if (!text && column.showSelectTitle) {
|
901
|
+
text += title;
|
902
|
+
}
|
832
903
|
|
833
904
|
html.push(text);
|
834
905
|
html.push('</div>');
|
@@ -844,14 +915,15 @@
|
|
844
915
|
$(this).data(visibleColumns[$(this).data('field')]);
|
845
916
|
});
|
846
917
|
this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {
|
847
|
-
var
|
918
|
+
var $this = $(this);
|
848
919
|
|
849
|
-
if (that.options.detailView) {
|
850
|
-
if (
|
920
|
+
if (that.options.detailView && !$this.parent().hasClass('bs-checkbox')) {
|
921
|
+
if ($this.closest('.bootstrap-table')[0] !== that.$container[0]) {
|
851
922
|
return false;
|
923
|
+
}
|
852
924
|
}
|
853
925
|
|
854
|
-
if (that.options.sortable &&
|
926
|
+
if (that.options.sortable && $this.parent().data().sortable) {
|
855
927
|
that.onSort(event);
|
856
928
|
}
|
857
929
|
});
|
@@ -900,23 +972,16 @@
|
|
900
972
|
* @param type: append / prepend
|
901
973
|
*/
|
902
974
|
BootstrapTable.prototype.initData = function (data, type) {
|
903
|
-
if (type === 'append') {
|
904
|
-
this.data = this.data.concat(data);
|
905
|
-
} else if (type === 'prepend') {
|
906
|
-
this.data = [].concat(data).concat(this.data);
|
907
|
-
} else {
|
908
|
-
this.data = data || this.options.data;
|
909
|
-
}
|
910
|
-
|
911
|
-
// Fix #839 Records deleted when adding new row on filtered table
|
912
975
|
if (type === 'append') {
|
913
976
|
this.options.data = this.options.data.concat(data);
|
914
977
|
} else if (type === 'prepend') {
|
915
978
|
this.options.data = [].concat(data).concat(this.options.data);
|
916
979
|
} else {
|
917
|
-
this.options.data = this.data;
|
980
|
+
this.options.data = data || this.options.data;
|
918
981
|
}
|
919
982
|
|
983
|
+
this.data = this.options.data;
|
984
|
+
|
920
985
|
if (this.options.sidePagination === 'server') {
|
921
986
|
return;
|
922
987
|
}
|
@@ -938,7 +1003,7 @@
|
|
938
1003
|
if (index !== -1) {
|
939
1004
|
if (this.options.sortStable) {
|
940
1005
|
$.each(this.data, function (i, row) {
|
941
|
-
|
1006
|
+
row._position = i;
|
942
1007
|
});
|
943
1008
|
}
|
944
1009
|
|
@@ -948,9 +1013,12 @@
|
|
948
1013
|
}
|
949
1014
|
var aa = getItemField(a, name, that.options.escape),
|
950
1015
|
bb = getItemField(b, name, that.options.escape),
|
951
|
-
value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);
|
1016
|
+
value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb, a, b]);
|
952
1017
|
|
953
1018
|
if (value !== undefined) {
|
1019
|
+
if (that.options.sortStable && value === 0) {
|
1020
|
+
return a._position - b._position;
|
1021
|
+
}
|
954
1022
|
return order * value;
|
955
1023
|
}
|
956
1024
|
|
@@ -965,6 +1033,7 @@
|
|
965
1033
|
if (that.options.sortStable && aa === bb) {
|
966
1034
|
aa = a._position;
|
967
1035
|
bb = b._position;
|
1036
|
+
return a._position - b._position;
|
968
1037
|
}
|
969
1038
|
|
970
1039
|
// IF both values are numeric, do a numeric comparison
|
@@ -1017,7 +1086,11 @@
|
|
1017
1086
|
this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
|
1018
1087
|
} else {
|
1019
1088
|
this.options.sortName = $this.data('field');
|
1020
|
-
this.options.
|
1089
|
+
if (this.options.rememberOrder) {
|
1090
|
+
this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
|
1091
|
+
} else {
|
1092
|
+
this.options.sortOrder = this.columns[this.fieldsColumnsIndex[$this.data('field')]].order;
|
1093
|
+
}
|
1021
1094
|
}
|
1022
1095
|
this.trigger('sort', this.options.sortName, this.options.sortOrder);
|
1023
1096
|
|
@@ -1049,14 +1122,14 @@
|
|
1049
1122
|
this.$toolbar.html('');
|
1050
1123
|
|
1051
1124
|
if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {
|
1052
|
-
$(sprintf('<div class="bs-bars
|
1125
|
+
$(sprintf('<div class="bs-bars %s-%s"></div>', bs.pullClass, this.options.toolbarAlign))
|
1053
1126
|
.appendTo(this.$toolbar)
|
1054
1127
|
.append($(this.options.toolbar));
|
1055
1128
|
}
|
1056
1129
|
|
1057
1130
|
// showColumns, showToggle, showRefresh
|
1058
|
-
html = [sprintf('<div class="columns columns-%s btn-group
|
1059
|
-
this.options.buttonsAlign, this.options.buttonsAlign)];
|
1131
|
+
html = [sprintf('<div class="columns columns-%s btn-group %s-%s">',
|
1132
|
+
this.options.buttonsAlign, bs.pullClass, this.options.buttonsAlign)];
|
1060
1133
|
|
1061
1134
|
if (typeof this.options.icons === 'string') {
|
1062
1135
|
this.options.icons = calculateObjectValue(null, this.options.icons);
|
@@ -1072,6 +1145,11 @@
|
|
1072
1145
|
'</button>');
|
1073
1146
|
}
|
1074
1147
|
|
1148
|
+
if (this.options.showFullscreen) {
|
1149
|
+
this.$toolbar.find('button[name="fullscreen"]')
|
1150
|
+
.off('click').on('click', $.proxy(this.toggleFullscreen, this));
|
1151
|
+
}
|
1152
|
+
|
1075
1153
|
if (this.options.showRefresh) {
|
1076
1154
|
html.push(sprintf('<button class="btn' +
|
1077
1155
|
sprintf(' btn-%s', this.options.buttonsClass) +
|
@@ -1092,6 +1170,16 @@
|
|
1092
1170
|
'</button>');
|
1093
1171
|
}
|
1094
1172
|
|
1173
|
+
if (this.options.showFullscreen) {
|
1174
|
+
html.push(sprintf('<button class="btn' +
|
1175
|
+
sprintf(' btn-%s', this.options.buttonsClass) +
|
1176
|
+
sprintf(' btn-%s', this.options.iconSize) +
|
1177
|
+
'" type="button" name="fullscreen" aria-label="fullscreen" title="%s">',
|
1178
|
+
this.options.formatFullscreen()),
|
1179
|
+
sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.fullscreen),
|
1180
|
+
'</button>');
|
1181
|
+
}
|
1182
|
+
|
1095
1183
|
if (this.options.showColumns) {
|
1096
1184
|
html.push(sprintf('<div class="keep-open btn-group" title="%s">',
|
1097
1185
|
this.options.formatColumns()),
|
@@ -1102,7 +1190,7 @@
|
|
1102
1190
|
sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.columns),
|
1103
1191
|
' <span class="caret"></span>',
|
1104
1192
|
'</button>',
|
1105
|
-
|
1193
|
+
bs.toobarDropdowHtml[0]);
|
1106
1194
|
|
1107
1195
|
$.each(this.columns, function (i, column) {
|
1108
1196
|
if (column.radio || column.checkbox) {
|
@@ -1116,14 +1204,13 @@
|
|
1116
1204
|
var checked = column.visible ? ' checked="checked"' : '';
|
1117
1205
|
|
1118
1206
|
if (column.switchable) {
|
1119
|
-
html.push(sprintf(
|
1120
|
-
'<
|
1121
|
-
|
1207
|
+
html.push(sprintf(bs.toobarDropdowItemHtml,
|
1208
|
+
sprintf('<input type="checkbox" data-field="%s" value="%s"%s> %s',
|
1209
|
+
column.field, i, checked, column.title)));
|
1122
1210
|
switchableCount++;
|
1123
1211
|
}
|
1124
1212
|
});
|
1125
|
-
html.push('</
|
1126
|
-
'</div>');
|
1213
|
+
html.push(bs.toobarDropdowHtml[1], '</div>');
|
1127
1214
|
}
|
1128
1215
|
|
1129
1216
|
html.push('</div>');
|
@@ -1171,7 +1258,7 @@
|
|
1171
1258
|
if (this.options.search) {
|
1172
1259
|
html = [];
|
1173
1260
|
html.push(
|
1174
|
-
'<div class="
|
1261
|
+
sprintf('<div class="%s-%s search">', bs.pullClass, this.options.searchAlign),
|
1175
1262
|
sprintf('<input class="form-control' +
|
1176
1263
|
sprintf(' input-%s', this.options.iconSize) +
|
1177
1264
|
'" type="text" placeholder="%s">',
|
@@ -1222,7 +1309,13 @@
|
|
1222
1309
|
|
1223
1310
|
this.options.pageNumber = 1;
|
1224
1311
|
this.initSearch();
|
1225
|
-
|
1312
|
+
if (event.firedByInitSearchText) {
|
1313
|
+
if (this.options.sidePagination === 'client') {
|
1314
|
+
this.updatePagination();
|
1315
|
+
}
|
1316
|
+
} else {
|
1317
|
+
this.updatePagination();
|
1318
|
+
}
|
1226
1319
|
this.trigger('search', text);
|
1227
1320
|
};
|
1228
1321
|
|
@@ -1231,7 +1324,7 @@
|
|
1231
1324
|
|
1232
1325
|
if (this.options.sidePagination !== 'server') {
|
1233
1326
|
if (this.options.customSearch !== $.noop) {
|
1234
|
-
this.options.customSearch.apply(this, [this.searchText]);
|
1327
|
+
window[this.options.customSearch].apply(this, [this.searchText]);
|
1235
1328
|
return;
|
1236
1329
|
}
|
1237
1330
|
|
@@ -1258,14 +1351,16 @@
|
|
1258
1351
|
}
|
1259
1352
|
|
1260
1353
|
var key = $.isNumeric(that.header.fields[j]) ? parseInt(that.header.fields[j], 10) : that.header.fields[j];
|
1261
|
-
var column = that.columns[
|
1354
|
+
var column = that.columns[that.fieldsColumnsIndex[key]];
|
1262
1355
|
var value;
|
1263
1356
|
|
1264
1357
|
if (typeof key === 'string') {
|
1265
1358
|
value = item;
|
1266
1359
|
var props = key.split('.');
|
1267
1360
|
for (var prop_index = 0; prop_index < props.length; prop_index++) {
|
1268
|
-
|
1361
|
+
if (value[props[prop_index]] != null) {
|
1362
|
+
value = value[props[prop_index]];
|
1363
|
+
}
|
1269
1364
|
}
|
1270
1365
|
|
1271
1366
|
// Fix #142: respect searchForamtter boolean
|
@@ -1307,8 +1402,8 @@
|
|
1307
1402
|
$allSelected = false,
|
1308
1403
|
i, from, to,
|
1309
1404
|
$pageList,
|
1310
|
-
$
|
1311
|
-
$next,
|
1405
|
+
$pre,
|
1406
|
+
$next,
|
1312
1407
|
$number,
|
1313
1408
|
data = this.getData(),
|
1314
1409
|
pageList = this.options.pageList;
|
@@ -1348,7 +1443,7 @@
|
|
1348
1443
|
}
|
1349
1444
|
|
1350
1445
|
html.push(
|
1351
|
-
'<div class="
|
1446
|
+
sprintf('<div class="%s-%s pagination-detail">', bs.pullClass, this.options.paginationDetailHAlign),
|
1352
1447
|
'<span class="pagination-info">',
|
1353
1448
|
this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :
|
1354
1449
|
this.options.formatShowingRows(this.pageFrom, this.pageTo, this.options.totalRows),
|
@@ -1370,7 +1465,7 @@
|
|
1370
1465
|
'</span>',
|
1371
1466
|
' <span class="caret"></span>',
|
1372
1467
|
'</button>',
|
1373
|
-
|
1468
|
+
bs.pageDropdownHtml[0]
|
1374
1469
|
];
|
1375
1470
|
|
1376
1471
|
if (typeof this.options.pageList === 'string') {
|
@@ -1379,7 +1474,7 @@
|
|
1379
1474
|
|
1380
1475
|
pageList = [];
|
1381
1476
|
$.each(list, function (i, value) {
|
1382
|
-
pageList.push(value.toUpperCase() === that.options.formatAllRows().toUpperCase() ?
|
1477
|
+
pageList.push((value.toUpperCase() === that.options.formatAllRows().toUpperCase() || value.toUpperCase() === "UNLIMITED") ?
|
1383
1478
|
that.options.formatAllRows() : +value);
|
1384
1479
|
});
|
1385
1480
|
}
|
@@ -1388,22 +1483,23 @@
|
|
1388
1483
|
if (!that.options.smartDisplay || i === 0 || pageList[i - 1] < that.options.totalRows) {
|
1389
1484
|
var active;
|
1390
1485
|
if ($allSelected) {
|
1391
|
-
active = page === that.options.formatAllRows() ? '
|
1486
|
+
active = page === that.options.formatAllRows() ? 'active' : '';
|
1392
1487
|
} else {
|
1393
|
-
active = page === that.options.pageSize ? '
|
1488
|
+
active = page === that.options.pageSize ? 'active' : '';
|
1394
1489
|
}
|
1395
|
-
pageNumber.push(sprintf(
|
1490
|
+
pageNumber.push(sprintf(bs.pageDropdownItemHtml, active, page));
|
1396
1491
|
}
|
1397
1492
|
});
|
1398
|
-
pageNumber.push('</
|
1493
|
+
pageNumber.push(bs.pageDropdownHtml[1] + '</span>');
|
1399
1494
|
|
1400
1495
|
html.push(this.options.formatRecordsPerPage(pageNumber.join('')));
|
1401
1496
|
html.push('</span>');
|
1402
1497
|
|
1403
1498
|
html.push('</div>',
|
1404
|
-
'<div class="
|
1499
|
+
sprintf('<div class="%s-%s pagination">', bs.pullClass, this.options.paginationHAlign),
|
1405
1500
|
'<ul class="pagination' + sprintf(' pagination-%s', this.options.iconSize) + '">',
|
1406
|
-
'<li class="page-pre"><a href="#"
|
1501
|
+
sprintf('<li class="page-item page-pre"><a class="page-link" href="#">%s</a></li>',
|
1502
|
+
this.options.paginationPreText));
|
1407
1503
|
|
1408
1504
|
if (this.totalPages < 5) {
|
1409
1505
|
from = 1;
|
@@ -1423,8 +1519,10 @@
|
|
1423
1519
|
|
1424
1520
|
if (this.totalPages >= 6) {
|
1425
1521
|
if (this.options.pageNumber >= 3) {
|
1426
|
-
html.push(
|
1427
|
-
'<
|
1522
|
+
html.push(
|
1523
|
+
sprintf('<li class="page-item page-first%s">',
|
1524
|
+
1 === this.options.pageNumber ? ' active' : ''),
|
1525
|
+
'<a class="page-link" href="#">', 1, '</a>',
|
1428
1526
|
'</li>');
|
1429
1527
|
|
1430
1528
|
from++;
|
@@ -1434,8 +1532,8 @@
|
|
1434
1532
|
if (this.options.pageNumber == 4 || this.totalPages == 6 || this.totalPages == 7) {
|
1435
1533
|
from--;
|
1436
1534
|
} else {
|
1437
|
-
html.push('<li class="page-first-separator disabled">',
|
1438
|
-
'<a href="#">...</a>',
|
1535
|
+
html.push('<li class="page-item page-first-separator disabled">',
|
1536
|
+
'<a class="page-link" href="#">...</a>',
|
1439
1537
|
'</li>');
|
1440
1538
|
}
|
1441
1539
|
|
@@ -1460,29 +1558,32 @@
|
|
1460
1558
|
}
|
1461
1559
|
|
1462
1560
|
for (i = from; i <= to; i++) {
|
1463
|
-
html.push('<li class="page-
|
1464
|
-
'
|
1561
|
+
html.push(sprintf('<li class="page-item%s">',
|
1562
|
+
i === this.options.pageNumber ? ' active' : ''),
|
1563
|
+
'<a class="page-link" href="#">', i, '</a>',
|
1465
1564
|
'</li>');
|
1466
1565
|
}
|
1467
1566
|
|
1468
1567
|
if (this.totalPages >= 8) {
|
1469
1568
|
if (this.options.pageNumber <= (this.totalPages - 4)) {
|
1470
|
-
html.push('<li class="page-last-separator disabled">',
|
1471
|
-
'<a href="#">...</a>',
|
1569
|
+
html.push('<li class="page-item page-last-separator disabled">',
|
1570
|
+
'<a class="page-link" href="#">...</a>',
|
1472
1571
|
'</li>');
|
1473
1572
|
}
|
1474
1573
|
}
|
1475
1574
|
|
1476
1575
|
if (this.totalPages >= 6) {
|
1477
1576
|
if (this.options.pageNumber <= (this.totalPages - 3)) {
|
1478
|
-
html.push('<li class="page-last
|
1479
|
-
|
1577
|
+
html.push(sprintf('<li class="page-item page-last%s">',
|
1578
|
+
this.totalPages === this.options.pageNumber ? ' active' : ''),
|
1579
|
+
'<a class="page-link" href="#">', this.totalPages, '</a>',
|
1480
1580
|
'</li>');
|
1481
1581
|
}
|
1482
1582
|
}
|
1483
1583
|
|
1484
1584
|
html.push(
|
1485
|
-
'<li class="page-next"><a href="#"
|
1585
|
+
sprintf('<li class="page-item page-next"><a class="page-link" href="#">%s</a></li>',
|
1586
|
+
this.options.paginationNextText),
|
1486
1587
|
'</ul>',
|
1487
1588
|
'</div>');
|
1488
1589
|
}
|
@@ -1490,11 +1591,9 @@
|
|
1490
1591
|
|
1491
1592
|
if (!this.options.onlyInfoPagination) {
|
1492
1593
|
$pageList = this.$pagination.find('.page-list a');
|
1493
|
-
$first = this.$pagination.find('.page-first');
|
1494
1594
|
$pre = this.$pagination.find('.page-pre');
|
1495
1595
|
$next = this.$pagination.find('.page-next');
|
1496
|
-
$
|
1497
|
-
$number = this.$pagination.find('.page-number');
|
1596
|
+
$number = this.$pagination.find('.page-item').not('.page-next, .page-pre');
|
1498
1597
|
|
1499
1598
|
if (this.options.smartDisplay) {
|
1500
1599
|
if (this.totalPages <= 1) {
|
@@ -1520,11 +1619,10 @@
|
|
1520
1619
|
if ($allSelected) {
|
1521
1620
|
this.options.pageSize = this.options.formatAllRows();
|
1522
1621
|
}
|
1622
|
+
// removed the events for last and first, onPageNumber executeds the same logic
|
1523
1623
|
$pageList.off('click').on('click', $.proxy(this.onPageListChange, this));
|
1524
|
-
$first.off('click').on('click', $.proxy(this.onPageFirst, this));
|
1525
1624
|
$pre.off('click').on('click', $.proxy(this.onPagePre, this));
|
1526
1625
|
$next.off('click').on('click', $.proxy(this.onPageNext, this));
|
1527
|
-
$last.off('click').on('click', $.proxy(this.onPageLast, this));
|
1528
1626
|
$number.off('click').on('click', $.proxy(this.onPageNumber, this));
|
1529
1627
|
}
|
1530
1628
|
};
|
@@ -1550,6 +1648,7 @@
|
|
1550
1648
|
};
|
1551
1649
|
|
1552
1650
|
BootstrapTable.prototype.onPageListChange = function (event) {
|
1651
|
+
event.preventDefault();
|
1553
1652
|
var $this = $(event.currentTarget);
|
1554
1653
|
|
1555
1654
|
$this.parent().addClass('active').siblings().removeClass('active');
|
@@ -1561,13 +1660,8 @@
|
|
1561
1660
|
return false;
|
1562
1661
|
};
|
1563
1662
|
|
1564
|
-
BootstrapTable.prototype.onPageFirst = function (event) {
|
1565
|
-
this.options.pageNumber = 1;
|
1566
|
-
this.updatePagination(event);
|
1567
|
-
return false;
|
1568
|
-
};
|
1569
|
-
|
1570
1663
|
BootstrapTable.prototype.onPagePre = function (event) {
|
1664
|
+
event.preventDefault();
|
1571
1665
|
if ((this.options.pageNumber - 1) === 0) {
|
1572
1666
|
this.options.pageNumber = this.options.totalPages;
|
1573
1667
|
} else {
|
@@ -1578,6 +1672,7 @@
|
|
1578
1672
|
};
|
1579
1673
|
|
1580
1674
|
BootstrapTable.prototype.onPageNext = function (event) {
|
1675
|
+
event.preventDefault();
|
1581
1676
|
if ((this.options.pageNumber + 1) > this.options.totalPages) {
|
1582
1677
|
this.options.pageNumber = 1;
|
1583
1678
|
} else {
|
@@ -1587,13 +1682,8 @@
|
|
1587
1682
|
return false;
|
1588
1683
|
};
|
1589
1684
|
|
1590
|
-
BootstrapTable.prototype.onPageLast = function (event) {
|
1591
|
-
this.options.pageNumber = this.totalPages;
|
1592
|
-
this.updatePagination(event);
|
1593
|
-
return false;
|
1594
|
-
};
|
1595
|
-
|
1596
1685
|
BootstrapTable.prototype.onPageNumber = function (event) {
|
1686
|
+
event.preventDefault();
|
1597
1687
|
if (this.options.pageNumber === +$(event.currentTarget).text()) {
|
1598
1688
|
return;
|
1599
1689
|
}
|
@@ -1658,11 +1748,15 @@
|
|
1658
1748
|
}
|
1659
1749
|
|
1660
1750
|
if (!this.options.cardView && this.options.detailView) {
|
1661
|
-
html.push('<td>'
|
1662
|
-
|
1751
|
+
html.push('<td>');
|
1752
|
+
|
1753
|
+
if (calculateObjectValue(null, this.options.detailFilter, [i, item])) {
|
1754
|
+
html.push('<a class="detail-icon" href="#">',
|
1663
1755
|
sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),
|
1664
|
-
'</a>'
|
1665
|
-
|
1756
|
+
'</a>');
|
1757
|
+
}
|
1758
|
+
|
1759
|
+
html.push('</td>');
|
1666
1760
|
}
|
1667
1761
|
|
1668
1762
|
$.each(this.header.fields, function(j, field) {
|
@@ -1680,7 +1774,9 @@
|
|
1680
1774
|
column = that.columns[j];
|
1681
1775
|
|
1682
1776
|
if (that.fromHtml && typeof value_ === 'undefined') {
|
1683
|
-
|
1777
|
+
if((!column.checkbox) && (!column.radio)) {
|
1778
|
+
return;
|
1779
|
+
}
|
1684
1780
|
}
|
1685
1781
|
|
1686
1782
|
if (!column.visible) {
|
@@ -1727,7 +1823,7 @@
|
|
1727
1823
|
}
|
1728
1824
|
|
1729
1825
|
value = calculateObjectValue(column,
|
1730
|
-
that.header.formatters[j], [value_, item, i], value_);
|
1826
|
+
that.header.formatters[j], [value_, item, i, field], value_);
|
1731
1827
|
|
1732
1828
|
if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {
|
1733
1829
|
$.each(item['_' + field + '_data'], function(k, v) {
|
@@ -1759,7 +1855,7 @@
|
|
1759
1855
|
that.options.cardView ? '</div>' : '</td>'
|
1760
1856
|
].join('');
|
1761
1857
|
|
1762
|
-
item[that.header.stateField] = value === true || (value && value.checked);
|
1858
|
+
item[that.header.stateField] = value === true || (!!value_ || value && value.checked);
|
1763
1859
|
} else {
|
1764
1860
|
value = typeof value === 'undefined' || value === null ?
|
1765
1861
|
that.options.undefinedText : value;
|
@@ -1847,7 +1943,7 @@
|
|
1847
1943
|
index = $td[0].cellIndex,
|
1848
1944
|
fields = that.getVisibleFields(),
|
1849
1945
|
field = fields[that.options.detailView && !that.options.cardView ? index - 1 : index],
|
1850
|
-
column = that.columns[
|
1946
|
+
column = that.columns[that.fieldsColumnsIndex[field]],
|
1851
1947
|
value = getItemField(item, field, that.options.escape);
|
1852
1948
|
|
1853
1949
|
if ($td.find('.detail-icon').length) {
|
@@ -1858,7 +1954,7 @@
|
|
1858
1954
|
that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr, field);
|
1859
1955
|
|
1860
1956
|
// if click to select - then trigger the checkbox/radio click
|
1861
|
-
if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {
|
1957
|
+
if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect && that.options.ignoreClickToSelectOn(e.target)) {
|
1862
1958
|
var $selectItem = $tr.find(sprintf('[name="%s"]', that.options.selectItemName));
|
1863
1959
|
if ($selectItem.length) {
|
1864
1960
|
$selectItem[0].click(); // #144: .trigger('click') bug
|
@@ -1866,7 +1962,9 @@
|
|
1866
1962
|
}
|
1867
1963
|
});
|
1868
1964
|
|
1869
|
-
this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {
|
1965
|
+
this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function (e) {
|
1966
|
+
e.preventDefault();
|
1967
|
+
|
1870
1968
|
var $this = $(this),
|
1871
1969
|
$tr = $this.parent().parent(),
|
1872
1970
|
index = $tr.data('index'),
|
@@ -1875,14 +1973,14 @@
|
|
1875
1973
|
// remove and update
|
1876
1974
|
if ($tr.next().is('tr.detail-view')) {
|
1877
1975
|
$this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));
|
1878
|
-
that.trigger('collapse-row', index, row);
|
1976
|
+
that.trigger('collapse-row', index, row, $tr.next());
|
1879
1977
|
$tr.next().remove();
|
1880
1978
|
} else {
|
1881
1979
|
$this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));
|
1882
1980
|
$tr.after(sprintf('<tr class="detail-view"><td colspan="%s"></td></tr>', $tr.find('td').length));
|
1883
1981
|
var $element = $tr.next().find('td');
|
1884
1982
|
var content = calculateObjectValue(that.options, that.options.detailFormatter, [index, row, $element], '');
|
1885
|
-
if($element.length === 1) {
|
1983
|
+
if ($element.length === 1) {
|
1886
1984
|
$element.append(content);
|
1887
1985
|
}
|
1888
1986
|
that.trigger('expand-row', index, row, $element);
|
@@ -1899,7 +1997,7 @@
|
|
1899
1997
|
checked = $this.prop('checked'),
|
1900
1998
|
row = that.data[$this.data('index')];
|
1901
1999
|
|
1902
|
-
if (
|
2000
|
+
if ($(this).is(':radio') || that.options.singleSelect) {
|
1903
2001
|
$.each(that.options.data, function (i, row) {
|
1904
2002
|
row[that.header.stateField] = false;
|
1905
2003
|
});
|
@@ -1930,6 +2028,10 @@
|
|
1930
2028
|
var field = that.header.fields[i],
|
1931
2029
|
fieldIndex = $.inArray(field, that.getVisibleFields());
|
1932
2030
|
|
2031
|
+
if (fieldIndex === -1) {
|
2032
|
+
return;
|
2033
|
+
}
|
2034
|
+
|
1933
2035
|
if (that.options.detailView && !that.options.cardView) {
|
1934
2036
|
fieldIndex += 1;
|
1935
2037
|
}
|
@@ -1963,6 +2065,7 @@
|
|
1963
2065
|
BootstrapTable.prototype.initServer = function (silent, query, url) {
|
1964
2066
|
var that = this,
|
1965
2067
|
data = {},
|
2068
|
+
index = $.inArray(this.options.sortName, this.header.fields),
|
1966
2069
|
params = {
|
1967
2070
|
searchText: this.searchText,
|
1968
2071
|
sortName: this.options.sortName,
|
@@ -1970,7 +2073,11 @@
|
|
1970
2073
|
},
|
1971
2074
|
request;
|
1972
2075
|
|
1973
|
-
if (this.
|
2076
|
+
if (this.header.sortNames[index]) {
|
2077
|
+
params.sortName = this.header.sortNames[index];
|
2078
|
+
}
|
2079
|
+
|
2080
|
+
if (this.options.pagination && this.options.sidePagination === 'server') {
|
1974
2081
|
params.pageSize = this.options.pageSize === this.options.formatAllRows() ?
|
1975
2082
|
this.options.totalRows : this.options.pageSize;
|
1976
2083
|
params.pageNumber = this.options.pageNumber;
|
@@ -1987,11 +2094,14 @@
|
|
1987
2094
|
order: params.sortOrder
|
1988
2095
|
};
|
1989
2096
|
|
1990
|
-
if (this.options.pagination) {
|
2097
|
+
if (this.options.pagination && this.options.sidePagination === 'server') {
|
1991
2098
|
params.offset = this.options.pageSize === this.options.formatAllRows() ?
|
1992
2099
|
0 : this.options.pageSize * (this.options.pageNumber - 1);
|
1993
2100
|
params.limit = this.options.pageSize === this.options.formatAllRows() ?
|
1994
2101
|
this.options.totalRows : this.options.pageSize;
|
2102
|
+
if (params.limit === 0) {
|
2103
|
+
delete params.limit;
|
2104
|
+
}
|
1995
2105
|
}
|
1996
2106
|
}
|
1997
2107
|
|
@@ -2027,6 +2137,13 @@
|
|
2027
2137
|
if (!silent) that.$tableLoading.hide();
|
2028
2138
|
},
|
2029
2139
|
error: function (res) {
|
2140
|
+
var data = [];
|
2141
|
+
if (that.options.sidePagination === 'server') {
|
2142
|
+
data = {};
|
2143
|
+
data[that.options.totalField] = 0;
|
2144
|
+
data[that.options.dataField] = [];
|
2145
|
+
}
|
2146
|
+
that.load(data);
|
2030
2147
|
that.trigger('load-error', res.status, res);
|
2031
2148
|
if (!silent) that.$tableLoading.hide();
|
2032
2149
|
}
|
@@ -2044,10 +2161,11 @@
|
|
2044
2161
|
|
2045
2162
|
BootstrapTable.prototype.initSearchText = function () {
|
2046
2163
|
if (this.options.search) {
|
2164
|
+
this.searchText = '';
|
2047
2165
|
if (this.options.searchText !== '') {
|
2048
2166
|
var $search = this.$toolbar.find('.search input');
|
2049
2167
|
$search.val(this.options.searchText);
|
2050
|
-
this.onSearch({currentTarget: $search});
|
2168
|
+
this.onSearch({currentTarget: $search, firedByInitSearchText: true});
|
2051
2169
|
}
|
2052
2170
|
}
|
2053
2171
|
};
|
@@ -2152,7 +2270,6 @@
|
|
2152
2270
|
.html('').attr('class', this.$el.attr('class'))
|
2153
2271
|
.append(this.$header_);
|
2154
2272
|
|
2155
|
-
|
2156
2273
|
focusedTemp = $('.focus-temp:visible:eq(0)');
|
2157
2274
|
if (focusedTemp.length > 0) {
|
2158
2275
|
focusedTemp.focus();
|
@@ -2178,23 +2295,21 @@
|
|
2178
2295
|
index = i - 1;
|
2179
2296
|
}
|
2180
2297
|
|
2298
|
+
if (index === -1) {
|
2299
|
+
return;
|
2300
|
+
}
|
2301
|
+
|
2181
2302
|
var $th = that.$header_.find(sprintf('th[data-field="%s"]', visibleFields[index]));
|
2182
2303
|
if ($th.length > 1) {
|
2183
2304
|
$th = $($ths[$this[0].cellIndex]);
|
2184
2305
|
}
|
2185
2306
|
|
2186
|
-
$th.find('.fht-cell').width(
|
2307
|
+
var zoomWidth = $th.width() - $th.find('.fht-cell').width();
|
2308
|
+
$th.find('.fht-cell').width($this.innerWidth() - zoomWidth);
|
2187
2309
|
});
|
2188
|
-
// horizontal scroll event
|
2189
|
-
// TODO: it's probably better improving the layout than binding to scroll event
|
2190
|
-
this.$tableBody.off('scroll').on('scroll', function () {
|
2191
|
-
that.$tableHeader.scrollLeft($(this).scrollLeft());
|
2192
2310
|
|
2193
|
-
|
2194
|
-
|
2195
|
-
}
|
2196
|
-
});
|
2197
|
-
that.trigger('post-header');
|
2311
|
+
this.horizontalScroll();
|
2312
|
+
this.trigger('post-header');
|
2198
2313
|
};
|
2199
2314
|
|
2200
2315
|
BootstrapTable.prototype.resetFooter = function () {
|
@@ -2282,6 +2397,25 @@
|
|
2282
2397
|
|
2283
2398
|
$footerTd.eq(i).find('.fht-cell').width($this.innerWidth());
|
2284
2399
|
});
|
2400
|
+
|
2401
|
+
this.horizontalScroll();
|
2402
|
+
};
|
2403
|
+
|
2404
|
+
BootstrapTable.prototype.horizontalScroll = function () {
|
2405
|
+
var that = this;
|
2406
|
+
// horizontal scroll event
|
2407
|
+
// TODO: it's probably better improving the layout than binding to scroll event
|
2408
|
+
|
2409
|
+
that.trigger('scroll-body');
|
2410
|
+
this.$tableBody.off('scroll').on('scroll', function () {
|
2411
|
+
if (that.options.showHeader && that.options.height) {
|
2412
|
+
that.$tableHeader.scrollLeft($(this).scrollLeft());
|
2413
|
+
}
|
2414
|
+
|
2415
|
+
if (that.options.showFooter && !that.options.cardView) {
|
2416
|
+
that.$tableFooter.scrollLeft($(this).scrollLeft());
|
2417
|
+
}
|
2418
|
+
});
|
2285
2419
|
};
|
2286
2420
|
|
2287
2421
|
BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {
|
@@ -2312,7 +2446,7 @@
|
|
2312
2446
|
visibleFields = [];
|
2313
2447
|
|
2314
2448
|
$.each(this.header.fields, function (j, field) {
|
2315
|
-
var column = that.columns[
|
2449
|
+
var column = that.columns[that.fieldsColumnsIndex[field]];
|
2316
2450
|
|
2317
2451
|
if (!column.visible) {
|
2318
2452
|
return;
|
@@ -2374,16 +2508,23 @@
|
|
2374
2508
|
};
|
2375
2509
|
|
2376
2510
|
BootstrapTable.prototype.getData = function (useCurrentPage) {
|
2377
|
-
|
2378
|
-
|
2379
|
-
|
2511
|
+
var data = this.options.data;
|
2512
|
+
if (this.searchText || this.options.sortName || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) {
|
2513
|
+
data = this.data;
|
2514
|
+
}
|
2515
|
+
|
2516
|
+
if (useCurrentPage) {
|
2517
|
+
return data.slice(this.pageFrom - 1, this.pageTo);
|
2518
|
+
}
|
2519
|
+
|
2520
|
+
return data;
|
2380
2521
|
};
|
2381
2522
|
|
2382
2523
|
BootstrapTable.prototype.load = function (data) {
|
2383
2524
|
var fixedScroll = false;
|
2384
2525
|
|
2385
2526
|
// #431: support pagination
|
2386
|
-
if (this.options.sidePagination === 'server') {
|
2527
|
+
if (this.options.pagination && this.options.sidePagination === 'server') {
|
2387
2528
|
this.options.totalRows = data[this.options.totalField];
|
2388
2529
|
fixedScroll = data.fixedScroll;
|
2389
2530
|
data = data[this.options.dataField];
|
@@ -2533,11 +2674,30 @@
|
|
2533
2674
|
this.initBody(true);
|
2534
2675
|
};
|
2535
2676
|
|
2677
|
+
BootstrapTable.prototype.refreshColumnTitle = function (params) {
|
2678
|
+
if (!params.hasOwnProperty('field') || !params.hasOwnProperty('title')) {
|
2679
|
+
return;
|
2680
|
+
}
|
2681
|
+
|
2682
|
+
this.columns[this.fieldsColumnsIndex[params.field]].title =
|
2683
|
+
this.options.escape ? escapeHTML(params.title) : params.title;
|
2684
|
+
|
2685
|
+
if (this.columns[this.fieldsColumnsIndex[params.field]].visible) {
|
2686
|
+
var header = this.options.height !== undefined ? this.$tableHeader : this.$header;
|
2687
|
+
header.find('th[data-field]').each(function (i) {
|
2688
|
+
if ($(this).data('field') === params.field) {
|
2689
|
+
$($(this).find(".th-inner")[0]).text(params.title);
|
2690
|
+
return false;
|
2691
|
+
}
|
2692
|
+
});
|
2693
|
+
}
|
2694
|
+
};
|
2695
|
+
|
2536
2696
|
BootstrapTable.prototype.insertRow = function (params) {
|
2537
2697
|
if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
|
2538
2698
|
return;
|
2539
2699
|
}
|
2540
|
-
this.data.splice(params.index, 0, params.row);
|
2700
|
+
this.options.data.splice(params.index, 0, params.row);
|
2541
2701
|
this.initSearch();
|
2542
2702
|
this.initPagination();
|
2543
2703
|
this.initSort();
|
@@ -2653,8 +2813,36 @@
|
|
2653
2813
|
this.initBody(true);
|
2654
2814
|
};
|
2655
2815
|
|
2816
|
+
BootstrapTable.prototype.updateCellById = function (params) {
|
2817
|
+
var that = this;
|
2818
|
+
if (!params.hasOwnProperty('id') ||
|
2819
|
+
!params.hasOwnProperty('field') ||
|
2820
|
+
!params.hasOwnProperty('value')) {
|
2821
|
+
return;
|
2822
|
+
}
|
2823
|
+
var allParams = $.isArray(params) ? params : [ params ];
|
2824
|
+
|
2825
|
+
$.each(allParams, function(i, params) {
|
2826
|
+
var rowId;
|
2827
|
+
|
2828
|
+
rowId = $.inArray(that.getRowByUniqueId(params.id), that.options.data);
|
2829
|
+
|
2830
|
+
if (rowId === -1) {
|
2831
|
+
return;
|
2832
|
+
}
|
2833
|
+
that.data[rowId][params.field] = params.value;
|
2834
|
+
});
|
2835
|
+
|
2836
|
+
if (params.reinit === false) {
|
2837
|
+
return;
|
2838
|
+
}
|
2839
|
+
this.initSort();
|
2840
|
+
this.initBody(true);
|
2841
|
+
};
|
2842
|
+
|
2656
2843
|
BootstrapTable.prototype.getOptions = function () {
|
2657
|
-
|
2844
|
+
//Deep copy
|
2845
|
+
return $.extend(true, {}, this.options);
|
2658
2846
|
};
|
2659
2847
|
|
2660
2848
|
BootstrapTable.prototype.getSelections = function () {
|
@@ -2785,6 +2973,10 @@
|
|
2785
2973
|
this.updatePagination();
|
2786
2974
|
};
|
2787
2975
|
|
2976
|
+
BootstrapTable.prototype.toggleFullscreen = function () {
|
2977
|
+
this.$el.closest('.bootstrap-table').toggleClass('fullscreen');
|
2978
|
+
};
|
2979
|
+
|
2788
2980
|
BootstrapTable.prototype.refresh = function (params) {
|
2789
2981
|
if (params && params.url) {
|
2790
2982
|
this.options.url = params.url;
|
@@ -2804,17 +2996,17 @@
|
|
2804
2996
|
if (this.options.showHeader && this.options.height) {
|
2805
2997
|
this.fitHeader();
|
2806
2998
|
}
|
2807
|
-
if (this.options.showFooter) {
|
2999
|
+
if (this.options.showFooter && !this.options.cardView) {
|
2808
3000
|
this.fitFooter();
|
2809
3001
|
}
|
2810
3002
|
};
|
2811
3003
|
|
2812
3004
|
BootstrapTable.prototype.showColumn = function (field) {
|
2813
|
-
this.toggleColumn(
|
3005
|
+
this.toggleColumn(this.fieldsColumnsIndex[field], true, true);
|
2814
3006
|
};
|
2815
3007
|
|
2816
3008
|
BootstrapTable.prototype.hideColumn = function (field) {
|
2817
|
-
this.toggleColumn(
|
3009
|
+
this.toggleColumn(this.fieldsColumnsIndex[field], false, true);
|
2818
3010
|
};
|
2819
3011
|
|
2820
3012
|
BootstrapTable.prototype.getHiddenColumns = function () {
|
@@ -2830,8 +3022,9 @@
|
|
2830
3022
|
};
|
2831
3023
|
|
2832
3024
|
BootstrapTable.prototype.toggleAllColumns = function (visible) {
|
3025
|
+
var that = this;
|
2833
3026
|
$.each(this.columns, function (i, column) {
|
2834
|
-
|
3027
|
+
that.columns[i].visible = visible;
|
2835
3028
|
});
|
2836
3029
|
|
2837
3030
|
this.initHeader();
|
@@ -2904,6 +3097,14 @@
|
|
2904
3097
|
this.initHeader();
|
2905
3098
|
// Fixed remove toolbar when click cardView button.
|
2906
3099
|
//that.initToolbar();
|
3100
|
+
var $icon = this.$toolbar.find('button[name="toggle"] i');
|
3101
|
+
if (this.options.cardView) {
|
3102
|
+
$icon.removeClass(this.options.icons.toggleOff);
|
3103
|
+
$icon.addClass(this.options.icons.toggleOn);
|
3104
|
+
} else {
|
3105
|
+
$icon.removeClass(this.options.icons.toggleOn);
|
3106
|
+
$icon.addClass(this.options.icons.toggleOff);
|
3107
|
+
}
|
2907
3108
|
this.initBody();
|
2908
3109
|
this.trigger('toggle', this.options.cardView);
|
2909
3110
|
};
|
@@ -3013,7 +3214,7 @@
|
|
3013
3214
|
'load', 'append', 'prepend', 'remove', 'removeAll',
|
3014
3215
|
'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
|
3015
3216
|
'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',
|
3016
|
-
'mergeCells',
|
3217
|
+
'mergeCells', 'refreshColumnTitle',
|
3017
3218
|
'checkAll', 'uncheckAll', 'checkInvert',
|
3018
3219
|
'check', 'uncheck',
|
3019
3220
|
'checkBy', 'uncheckBy',
|
@@ -3033,7 +3234,7 @@
|
|
3033
3234
|
'refreshOptions',
|
3034
3235
|
'resetSearch',
|
3035
3236
|
'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
|
3036
|
-
'updateFormatText'
|
3237
|
+
'updateFormatText', 'updateCellById'
|
3037
3238
|
];
|
3038
3239
|
|
3039
3240
|
$.fn.bootstrapTable = function (option) {
|
@@ -3076,8 +3277,8 @@
|
|
3076
3277
|
$.fn.bootstrapTable.locales = BootstrapTable.LOCALES;
|
3077
3278
|
$.fn.bootstrapTable.methods = allowedMethods;
|
3078
3279
|
$.fn.bootstrapTable.utils = {
|
3280
|
+
bootstrapVersion: bootstrapVersion,
|
3079
3281
|
sprintf: sprintf,
|
3080
|
-
getFieldIndex: getFieldIndex,
|
3081
3282
|
compareObjects: compareObjects,
|
3082
3283
|
calculateObjectValue: calculateObjectValue,
|
3083
3284
|
getItemField: getItemField,
|