bootstrap-table-rails 1.11.0 → 1.11.1.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 +4 -4
- data/README.md +25 -4
- data/lib/bootstrap-table-rails/version.rb +1 -1
- data/vendor/assets/images/icon.png +0 -0
- data/vendor/assets/javascripts/bootstrap-table.js +300 -225
- data/vendor/assets/javascripts/extensions/bootstrap-table-accent-neutralise.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-auto-refresh.js +84 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-click-edit-row.js +142 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +78 -36
- data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +12 -2
- data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +36 -11
- 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 2.js → bootstrap-table-group-by-v2.js} +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-key-events.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-selection-row.js +127 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +1 -1
- data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-print.js +133 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +4 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +6 -4
- data/vendor/assets/javascripts/extensions/bootstrap-table-resizable.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +0 -0
- data/vendor/assets/javascripts/extensions/bootstrap-table-toolbar.js +2 -2
- data/vendor/assets/javascripts/extensions/bootstrap-table-tree-column.js +130 -0
- data/vendor/assets/javascripts/locale/README.md +179 -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 +10 -4
- 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-en-US.js.template +49 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-AR.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-es-CL.js +44 -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 +0 -0
- 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-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 +0 -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 +49 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +12 -2
- 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 +33 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-sk-SK.js +0 -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 +36 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-ur-PK.js +0 -0
- data/vendor/assets/javascripts/locale/bootstrap-table-uz-Latn-UZ.js +49 -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 +9 -5
- data/vendor/assets/stylesheets/extensions/bootstrap-table-auto-refresh.css +3 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-click-edit-row.css +21 -0
- data/vendor/assets/stylesheets/extensions/bootstrap-table-filter-control.css +13 -0
- data/vendor/assets/stylesheets/extensions/{bootstrap-table-group-by 2.css → 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-multiple-selection-row.css +17 -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 +1 -0
- metadata +20 -4
File without changes
|
@@ -16,6 +16,7 @@
|
|
16
16
|
sql: 'SQL',
|
17
17
|
doc: 'MS-Word',
|
18
18
|
excel: 'MS-Excel',
|
19
|
+
xlsx: 'MS-Excel (OpenXML)',
|
19
20
|
powerpoint: 'MS-Powerpoint',
|
20
21
|
pdf: 'PDF'
|
21
22
|
};
|
@@ -58,7 +59,7 @@
|
|
58
59
|
'<button class="btn' +
|
59
60
|
sprintf(' btn-%s', this.options.buttonsClass) +
|
60
61
|
sprintf(' btn-%s', this.options.iconSize) +
|
61
|
-
' dropdown-toggle" ' +
|
62
|
+
' dropdown-toggle" aria-label="export type" ' +
|
62
63
|
'title="' + this.options.formatExport() + '" ' +
|
63
64
|
'data-toggle="dropdown" type="button">',
|
64
65
|
sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.export),
|
@@ -81,7 +82,7 @@
|
|
81
82
|
}
|
82
83
|
$.each(exportTypes, function (i, type) {
|
83
84
|
if (TYPE_NAME.hasOwnProperty(type)) {
|
84
|
-
$menu.append(['<li data-type="' + type + '">',
|
85
|
+
$menu.append(['<li role="menuitem" data-type="' + type + '">',
|
85
86
|
'<a href="javascript:void(0)">',
|
86
87
|
TYPE_NAME[type],
|
87
88
|
'</a>',
|
@@ -108,6 +109,15 @@
|
|
108
109
|
var data = that.getData(),
|
109
110
|
selectedData = that.getAllSelections();
|
110
111
|
|
112
|
+
// Quick fix #2220
|
113
|
+
if (that.options.sidePagination === 'server') {
|
114
|
+
data = {total: that.options.totalRows};
|
115
|
+
data[that.options.dataField] = that.getData();
|
116
|
+
|
117
|
+
selectedData = {total: that.options.totalRows};
|
118
|
+
selectedData[that.options.dataField] = that.getAllSelections();
|
119
|
+
}
|
120
|
+
|
111
121
|
that.load(selectedData);
|
112
122
|
doExport();
|
113
123
|
that.load(data);
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @author: Dennis Hernández
|
3
3
|
* @webSite: http://djhvscf.github.io/Blog
|
4
|
-
* @version: v2.1.
|
4
|
+
* @version: v2.1.1
|
5
5
|
*/
|
6
6
|
|
7
7
|
(function ($) {
|
@@ -11,6 +11,24 @@
|
|
11
11
|
var sprintf = $.fn.bootstrapTable.utils.sprintf,
|
12
12
|
objectKeys = $.fn.bootstrapTable.utils.objectKeys;
|
13
13
|
|
14
|
+
var getOptionsFromSelectControl = function (selectControl) {
|
15
|
+
return selectControl.get(selectControl.length - 1).options;
|
16
|
+
};
|
17
|
+
|
18
|
+
var hideUnusedSelectOptions = function (selectControl, uniqueValues) {
|
19
|
+
var options = getOptionsFromSelectControl(selectControl);
|
20
|
+
|
21
|
+
for (var i = 0; i < options.length; i++) {
|
22
|
+
if (options[i].value !== "") {
|
23
|
+
if (!uniqueValues.hasOwnProperty(options[i].value)) {
|
24
|
+
selectControl.find(sprintf("option[value='%s']", options[i].value)).hide();
|
25
|
+
} else {
|
26
|
+
selectControl.find(sprintf("option[value='%s']", options[i].value)).show();
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
};
|
31
|
+
|
14
32
|
var addOptionToSelectControl = function (selectControl, value, text) {
|
15
33
|
value = $.trim(value);
|
16
34
|
selectControl = $(selectControl.get(selectControl.length - 1));
|
@@ -39,7 +57,7 @@
|
|
39
57
|
};
|
40
58
|
|
41
59
|
var existOptionInSelectControl = function (selectControl, value) {
|
42
|
-
var options =
|
60
|
+
var options = getOptionsFromSelectControl(selectControl);
|
43
61
|
for (var i = 0; i < options.length; i++) {
|
44
62
|
if (options[i].value === value.toString()) {
|
45
63
|
//The value is not valid to add
|
@@ -161,7 +179,7 @@
|
|
161
179
|
};
|
162
180
|
|
163
181
|
var initFilterSelectControls = function (that) {
|
164
|
-
var data = that.
|
182
|
+
var data = that.data,
|
165
183
|
itemsPerPage = that.pageTo < that.options.data.length ? that.options.data.length : that.pageTo,
|
166
184
|
|
167
185
|
isColumnSearchableViaSelect = function (column) {
|
@@ -198,18 +216,23 @@
|
|
198
216
|
|
199
217
|
uniqueValues[formattedValue] = fieldValue;
|
200
218
|
}
|
219
|
+
|
201
220
|
for (var key in uniqueValues) {
|
202
221
|
addOptionToSelectControl(selectControl, uniqueValues[key], key);
|
203
222
|
}
|
204
223
|
|
205
224
|
sortSelectControl(selectControl);
|
225
|
+
|
226
|
+
if (that.options.hideUnusedSelectOptions) {
|
227
|
+
hideUnusedSelectOptions(selectControl, uniqueValues);
|
228
|
+
}
|
206
229
|
}
|
207
230
|
});
|
208
231
|
};
|
209
232
|
|
210
|
-
var escapeID = function(
|
233
|
+
var escapeID = function(id) {
|
211
234
|
return String(id).replace( /(:|\.|\[|\]|,)/g, "\\$1" );
|
212
|
-
|
235
|
+
};
|
213
236
|
|
214
237
|
var createControls = function (that, header) {
|
215
238
|
var addedFilterControl = false,
|
@@ -226,15 +249,15 @@
|
|
226
249
|
}
|
227
250
|
|
228
251
|
if (!column.filterControl) {
|
229
|
-
html.push('<div
|
252
|
+
html.push('<div class="no-filter-control"></div>');
|
230
253
|
} else {
|
231
|
-
html.push('<div
|
254
|
+
html.push('<div class="filter-control">');
|
232
255
|
|
233
256
|
var nameControl = column.filterControl.toLowerCase();
|
234
257
|
if (column.searchable && that.options.filterTemplate[nameControl]) {
|
235
258
|
addedFilterControl = true;
|
236
259
|
isVisible = 'visible';
|
237
|
-
html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible));
|
260
|
+
html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible, column.filterControlPlaceholder));
|
238
261
|
}
|
239
262
|
}
|
240
263
|
|
@@ -332,6 +355,7 @@
|
|
332
355
|
if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') {
|
333
356
|
header.find('.date-filter-control.bootstrap-table-filter-control-' + column.field).datepicker(column.filterDatepickerOptions)
|
334
357
|
.on('changeDate', function (e) {
|
358
|
+
$(sprintf(".%s", e.currentTarget.classList.toString().split(" ").join("."))).val(e.currentTarget.value);
|
335
359
|
//Fired the keyup event
|
336
360
|
$(e.currentTarget).keyup();
|
337
361
|
});
|
@@ -406,8 +430,8 @@
|
|
406
430
|
filterShowClear: false,
|
407
431
|
alignmentSelectControlOptions: undefined,
|
408
432
|
filterTemplate: {
|
409
|
-
input: function (that, field, isVisible) {
|
410
|
-
return sprintf('<input type="text" class="form-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s">', field, isVisible);
|
433
|
+
input: function (that, field, isVisible, placeholder) {
|
434
|
+
return sprintf('<input type="text" class="form-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s" placeholder="%s">', field, isVisible, placeholder);
|
411
435
|
},
|
412
436
|
select: function (that, field, isVisible) {
|
413
437
|
return sprintf('<select class="form-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s" dir="%s"></select>',
|
@@ -426,7 +450,8 @@
|
|
426
450
|
filterData: undefined,
|
427
451
|
filterDatepickerOptions: undefined,
|
428
452
|
filterStrictSearch: false,
|
429
|
-
filterStartsWithSearch: false
|
453
|
+
filterStartsWithSearch: false,
|
454
|
+
filterControlPlaceholder: ""
|
430
455
|
});
|
431
456
|
|
432
457
|
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,127 @@
|
|
1
|
+
/**
|
2
|
+
* @author: Dennis Hernández
|
3
|
+
* @webSite: http://djhvscf.github.io/Blog
|
4
|
+
* @version: v1.0.0
|
5
|
+
*/
|
6
|
+
|
7
|
+
!function ($) {
|
8
|
+
|
9
|
+
'use strict';
|
10
|
+
|
11
|
+
document.onselectstart = function() {
|
12
|
+
return false;
|
13
|
+
};
|
14
|
+
|
15
|
+
var getTableObjectFromCurrentTarget = function (currentTarget) {
|
16
|
+
currentTarget = $(currentTarget);
|
17
|
+
return currentTarget.is("table") ? currentTarget : currentTarget.parents().find(".table");
|
18
|
+
};
|
19
|
+
|
20
|
+
var getRow = function (target) {
|
21
|
+
target = $(target);
|
22
|
+
return target.parent().parent();
|
23
|
+
};
|
24
|
+
|
25
|
+
var onRowClick = function (e) {
|
26
|
+
var that = getTableObjectFromCurrentTarget(e.currentTarget);
|
27
|
+
|
28
|
+
if (window.event.ctrlKey) {
|
29
|
+
toggleRow(e.currentTarget, that, false, false);
|
30
|
+
}
|
31
|
+
|
32
|
+
if (window.event.button === 0) {
|
33
|
+
if (!window.event.ctrlKey && !window.event.shiftKey) {
|
34
|
+
clearAll(that);
|
35
|
+
toggleRow(e.currentTarget, that, false, false);
|
36
|
+
}
|
37
|
+
|
38
|
+
if (window.event.shiftKey) {
|
39
|
+
selectRowsBetweenIndexes([that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow.rowIndex, e.currentTarget.rowIndex], that)
|
40
|
+
}
|
41
|
+
}
|
42
|
+
};
|
43
|
+
|
44
|
+
var onCheckboxChange = function (e) {
|
45
|
+
var that = getTableObjectFromCurrentTarget(e.currentTarget);
|
46
|
+
clearAll(that);
|
47
|
+
toggleRow(getRow(e.currentTarget), that, false, false);
|
48
|
+
};
|
49
|
+
|
50
|
+
var toggleRow = function (row, that, clearAll, useShift) {
|
51
|
+
if (clearAll) {
|
52
|
+
row = $(row);
|
53
|
+
that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow = undefined;
|
54
|
+
row.removeClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass);
|
55
|
+
that.bootstrapTable("uncheck", row.data("index"));
|
56
|
+
} else {
|
57
|
+
that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow = row;
|
58
|
+
row = $(row);
|
59
|
+
if (useShift) {
|
60
|
+
row.addClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass);
|
61
|
+
that.bootstrapTable("check", row.data("index"));
|
62
|
+
} else {
|
63
|
+
if(row.hasClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass)) {
|
64
|
+
row.removeClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass)
|
65
|
+
that.bootstrapTable("uncheck", row.data("index"));
|
66
|
+
} else {
|
67
|
+
row.addClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass);
|
68
|
+
that.bootstrapTable("check", row.data("index"));
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
};
|
73
|
+
|
74
|
+
var selectRowsBetweenIndexes = function (indexes, that) {
|
75
|
+
indexes.sort(function(a, b) {
|
76
|
+
return a - b;
|
77
|
+
});
|
78
|
+
|
79
|
+
for (var i = indexes[0]; i <= indexes[1]; i++) {
|
80
|
+
toggleRow(that.bootstrapTable("getOptions").multipleSelectRowRows[i-1], that, false, true);
|
81
|
+
}
|
82
|
+
};
|
83
|
+
|
84
|
+
var clearAll = function (that) {
|
85
|
+
for (var i = 0; i < that.bootstrapTable("getOptions").multipleSelectRowRows.length; i++) {
|
86
|
+
toggleRow(that.bootstrapTable("getOptions").multipleSelectRowRows[i], that, true, false);
|
87
|
+
}
|
88
|
+
};
|
89
|
+
|
90
|
+
$.extend($.fn.bootstrapTable.defaults, {
|
91
|
+
multipleSelectRow: false,
|
92
|
+
multipleSelectRowCssClass: 'multiple-select-row-selected',
|
93
|
+
//internal variables used by the extension
|
94
|
+
multipleSelectRowLastSelectedRow: undefined,
|
95
|
+
multipleSelectRowRows: []
|
96
|
+
});
|
97
|
+
|
98
|
+
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
99
|
+
_init = BootstrapTable.prototype.init,
|
100
|
+
_initBody = BootstrapTable.prototype.initBody;
|
101
|
+
|
102
|
+
BootstrapTable.prototype.init = function () {
|
103
|
+
if (this.options.multipleSelectRow) {
|
104
|
+
var that = this;
|
105
|
+
|
106
|
+
//Make sure that the internal variables have the correct value
|
107
|
+
this.options.multipleSelectRowLastSelectedRow = undefined;
|
108
|
+
this.options.multipleSelectRowRows = [];
|
109
|
+
|
110
|
+
this.$el.on("post-body.bs.table", function (e) {
|
111
|
+
setTimeout(function () {
|
112
|
+
that.options.multipleSelectRowRows = that.$body.children();
|
113
|
+
that.options.multipleSelectRowRows.click(onRowClick);
|
114
|
+
that.options.multipleSelectRowRows.find("input[type=checkbox]").change(onCheckboxChange);
|
115
|
+
}, 1);
|
116
|
+
});
|
117
|
+
}
|
118
|
+
|
119
|
+
_init.apply(this, Array.prototype.slice.apply(arguments));
|
120
|
+
};
|
121
|
+
|
122
|
+
BootstrapTable.prototype.clearAllMultipleSelectionRow = function () {
|
123
|
+
clearAll(this);
|
124
|
+
};
|
125
|
+
|
126
|
+
$.fn.bootstrapTable.methods.push('clearAllMultipleSelectionRow');
|
127
|
+
}(jQuery);
|
@@ -257,7 +257,7 @@
|
|
257
257
|
});
|
258
258
|
|
259
259
|
this.$el.on('load-success.bs.table', function() {
|
260
|
-
if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object') {
|
260
|
+
if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object' && that.options.sidePagination !== 'server') {
|
261
261
|
that.onMultipleSort();
|
262
262
|
}
|
263
263
|
});
|
File without changes
|
@@ -0,0 +1,133 @@
|
|
1
|
+
(function ($) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
var sprintf = $.fn.bootstrapTable.utils.sprintf;
|
5
|
+
|
6
|
+
function printPageBuilderDefault(table) {
|
7
|
+
return '<html><head>' +
|
8
|
+
'<style type="text/css" media="print">' +
|
9
|
+
' @page { size: auto; margin: 25px 0 25px 0; }' +
|
10
|
+
'</style>' +
|
11
|
+
'<style type="text/css" media="all">' +
|
12
|
+
'table{border-collapse: collapse; font-size: 12px; }\n' +
|
13
|
+
'table, th, td {border: 1px solid grey}\n' +
|
14
|
+
'th, td {text-align: center; vertical-align: middle;}\n' +
|
15
|
+
'p {font-weight: bold; margin-left:20px }\n' +
|
16
|
+
'table { width:94%; margin-left:3%; margin-right:3%}\n' +
|
17
|
+
'div.bs-table-print { text-align:center;}\n' +
|
18
|
+
'</style></head><title>Print Table</title><body>' +
|
19
|
+
'<p>Printed on: ' + new Date + ' </p>' +
|
20
|
+
'<div class="bs-table-print">' + table + "</div></body></html>";
|
21
|
+
}
|
22
|
+
$.extend($.fn.bootstrapTable.defaults, {
|
23
|
+
showPrint: false,
|
24
|
+
printAsFilteredAndSortedOnUI: true, //boolean, when true - print table as sorted and filtered on UI.
|
25
|
+
//Please note that if true is set, along with explicit predefined print options for filtering and sorting (printFilter, printSortOrder, printSortColumn)- then they will be applied on data already filtered and sorted by UI controls.
|
26
|
+
//For printing data as filtered and sorted on UI - do not set these 3 options:printFilter, printSortOrder, printSortColumn
|
27
|
+
printSortColumn: undefined , //String, set column field name to be sorted by
|
28
|
+
printSortOrder: 'asc', //String: 'asc' , 'desc' - relevant only if printSortColumn is set
|
29
|
+
printPageBuilder: function(table){return printPageBuilderDefault(table)} // function, receive html <table> element as string, returns html string for printing. by default delegates to function printPageBuilderDefault(table). used for styling and adding header or footer
|
30
|
+
});
|
31
|
+
$.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
|
32
|
+
printFilter: undefined, //set value to filter by in print page
|
33
|
+
printIgnore: false, //boolean, set true to ignore this column in the print page
|
34
|
+
printFormatter:undefined //function(value, row, index), formats the cell value for this column in the printed table. Function behaviour is similar to the 'formatter' column option
|
35
|
+
});
|
36
|
+
$.extend($.fn.bootstrapTable.defaults.icons, {
|
37
|
+
print: 'glyphicon-print icon-share'
|
38
|
+
});
|
39
|
+
|
40
|
+
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
41
|
+
_initToolbar = BootstrapTable.prototype.initToolbar;
|
42
|
+
|
43
|
+
BootstrapTable.prototype.initToolbar = function () {
|
44
|
+
this.showToolbar = this.options.showPrint;
|
45
|
+
|
46
|
+
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
|
47
|
+
|
48
|
+
if (this.options.showPrint) {
|
49
|
+
var that = this,
|
50
|
+
$btnGroup = this.$toolbar.find('>.btn-group'),
|
51
|
+
$print = $btnGroup.find('button.bs-print');
|
52
|
+
|
53
|
+
if (!$print.length) {
|
54
|
+
$print = $([
|
55
|
+
'<button class="bs-print btn btn-default' + sprintf(' btn-%s"', this.options.iconSize) + ' name="print" title="print" type="button">',
|
56
|
+
sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.print),
|
57
|
+
'</button>'].join('')).appendTo($btnGroup);
|
58
|
+
|
59
|
+
$print.click(function () {
|
60
|
+
function formatValue(row, i, column ) {
|
61
|
+
var value = row[column.field];
|
62
|
+
if (typeof column.printFormatter === 'function') {
|
63
|
+
return column.printFormatter.apply(column, [value, row, i]);
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
return value || "-";
|
67
|
+
}
|
68
|
+
}
|
69
|
+
function buildTable(data,columns) {
|
70
|
+
var out = "<table><thead><tr>";
|
71
|
+
for(var h = 0; h < columns.length; h++) {
|
72
|
+
if(!columns[h].printIgnore) {
|
73
|
+
out += ("<th>"+columns[h].title+"</th>");
|
74
|
+
}
|
75
|
+
}
|
76
|
+
out += "</tr></thead><tbody>";
|
77
|
+
for(var i = 0; i < data.length; i++) {
|
78
|
+
out += "<tr>";
|
79
|
+
for(var j = 0; j < columns.length; j++) {
|
80
|
+
if(!columns[j].printIgnore) {
|
81
|
+
out += ("<td>"+ formatValue(data[i], i, columns[j])+"</td>");
|
82
|
+
}
|
83
|
+
}
|
84
|
+
out += "</tr>";
|
85
|
+
}
|
86
|
+
out += "</tbody></table>";
|
87
|
+
return out;
|
88
|
+
}
|
89
|
+
function sortRows(data,colName,sortOrder) {
|
90
|
+
if(!colName){
|
91
|
+
return data;
|
92
|
+
}
|
93
|
+
var reverse = sortOrder != 'asc';
|
94
|
+
reverse = -((+reverse) || -1);
|
95
|
+
return data.sort(function (a, b) {
|
96
|
+
return reverse * (a[colName].localeCompare(b[colName]));
|
97
|
+
});
|
98
|
+
}
|
99
|
+
function filterRow(row,filters) {
|
100
|
+
for (var index = 0; index < filters.length; ++index) {
|
101
|
+
if(row[filters[index].colName]!=filters[index].value) {
|
102
|
+
return false;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
return true;
|
106
|
+
}
|
107
|
+
function filterRows(data,filters) {
|
108
|
+
return data.filter(function (row) {
|
109
|
+
return filterRow(row,filters)
|
110
|
+
});
|
111
|
+
}
|
112
|
+
function getColumnFilters(columns) {
|
113
|
+
return !columns || !columns[0] ? [] : columns[0].filter(function (col) {
|
114
|
+
return col.printFilter;
|
115
|
+
}).map(function (col) {
|
116
|
+
return {colName:col.field, value:col.printFilter};
|
117
|
+
});
|
118
|
+
}
|
119
|
+
var doPrint = function (data) {
|
120
|
+
data=filterRows(data,getColumnFilters(that.options.columns));
|
121
|
+
data=sortRows(data,that.options.printSortColumn,that.options.printSortOrder);
|
122
|
+
var table=buildTable(data,that.options.columns[0]);
|
123
|
+
var newWin = window.open("");
|
124
|
+
newWin.document.write(that.options.printPageBuilder.call(this, table));
|
125
|
+
newWin.print();
|
126
|
+
newWin.close();
|
127
|
+
};
|
128
|
+
doPrint(that.options.printAsFilteredAndSortedOnUI? that.getData() : that.options.data.slice(0));
|
129
|
+
});
|
130
|
+
}
|
131
|
+
}
|
132
|
+
};
|
133
|
+
})(jQuery);
|