bootstrap-table-rails 1.11.1.1 → 1.15.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +152 -98
- data/lib/bootstrap-table-rails/version.rb +1 -1
- data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-locale-all.js +5196 -0
- data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-vue.esm.js +1809 -0
- data/vendor/assets/javascripts/bootstrap-table/bootstrap-table-vue.js +1817 -0
- data/vendor/assets/javascripts/bootstrap-table/bootstrap-table.css +296 -0
- data/vendor/assets/javascripts/bootstrap-table/bootstrap-table.js +6924 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js +1757 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/addrbar/bootstrap-table-addrbar.js +1485 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.css +3 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js +1020 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/cell-input/bootstrap-table-cell-input.css +12 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/cell-input/bootstrap-table-cell-input.js +2087 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js +1934 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/copy-rows/bootstrap-table-copy-rows.js +1042 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/defer-url/bootstrap-table-defer-url.js +779 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/editable/bootstrap-table-editable.js +1451 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/export/bootstrap-table-export.js +2494 -0
- data/vendor/assets/{stylesheets/extensions → javascripts/bootstrap-table/extensions/filter-control}/bootstrap-table-filter-control.css +3 -3
- data/vendor/assets/javascripts/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.js +2502 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.css +27 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.js +1378 -0
- data/vendor/assets/{stylesheets/extensions → javascripts/bootstrap-table/extensions/group-by}/bootstrap-table-group-by.css +0 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/group-by/bootstrap-table-group-by.js +257 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.css +7 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.js +1478 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js +125 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/key-events/bootstrap-table-key-events.js +1243 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js +1162 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/multi-column-toggle/bootstrap-table-multi-toggle.js +105 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/multiple-search/bootstrap-table-multiple-search.js +85 -0
- data/vendor/assets/{stylesheets/extensions → javascripts/bootstrap-table/extensions/multiple-selection-row}/bootstrap-table-multiple-selection-row.css +0 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/multiple-selection-row/bootstrap-table-multiple-selection-row.js +143 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/multiple-sort/bootstrap-table-multiple-sort.js +1905 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/natural-sorting/bootstrap-table-natural-sorting.js +1265 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.css +11 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.js +971 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/pipeline/bootstrap-table-pipeline.js +1128 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/print/bootstrap-table-print.js +1960 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js +1015 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.css +14 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js +774 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js +676 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/select2-filter/bootstrap-table-select2-filter.js +341 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/sticky-header/bootstrap-table-sticky-header.css +22 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/sticky-header/bootstrap-table-sticky-header.js +1019 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.js +2297 -0
- data/vendor/assets/{stylesheets/extensions → javascripts/bootstrap-table/extensions/tree-column}/bootstrap-table-tree-column.css +0 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/tree-column/bootstrap-table-tree-column.js +142 -0
- data/vendor/assets/javascripts/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.js +1817 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-af-ZA.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ar-SA.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ca-ES.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-cs-CZ.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-da-DK.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-de-DE.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-el-GR.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-en-US.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-AR.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-CL.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-CR.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-ES.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-MX.js +723 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-NI.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-es-SP.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-et-EE.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-eu-EU.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fa-IR.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fi-FI.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-BE.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-CH.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-FR.js +723 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-fr-LU.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-he-IL.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-hr-HR.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-hu-HU.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-id-ID.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-it-IT.js +723 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ja-JP.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ka-GE.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ko-KR.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ms-MY.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nb-NO.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nl-BE.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-nl-NL.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pl-PL.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pt-BR.js +723 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-pt-PT.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ro-RO.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ru-RU.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sk-SK.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-sv-SE.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-th-TH.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-tr-TR.js +722 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-uk-UA.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-ur-PK.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-uz-Latn-UZ.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-vi-VN.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-zh-CN.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/locale/bootstrap-table-zh-TW.js +721 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/bulma/bootstrap-table-bulma.css +352 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/bulma/bootstrap-table-bulma.js +943 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/foundation/bootstrap-table-foundation.css +329 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/foundation/bootstrap-table-foundation.js +950 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/materialize/bootstrap-table-materialize.css +326 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/materialize/bootstrap-table-materialize.js +946 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/semantic/bootstrap-table-semantic.css +336 -0
- data/vendor/assets/javascripts/bootstrap-table/themes/semantic/bootstrap-table-semantic.js +920 -0
- metadata +112 -96
- data/vendor/assets/images/icon.png +0 -0
- data/vendor/assets/javascripts/bootstrap-table-locale-all.js +0 -1698
- data/vendor/assets/javascripts/bootstrap-table.js +0 -3094
- data/vendor/assets/javascripts/extensions/bootstrap-table-accent-neutralise.js +0 -182
- data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +0 -107
- data/vendor/assets/javascripts/extensions/bootstrap-table-auto-refresh.js +0 -84
- data/vendor/assets/javascripts/extensions/bootstrap-table-click-edit-row.js +0 -142
- data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +0 -434
- data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +0 -102
- data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +0 -146
- data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +0 -131
- data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +0 -697
- data/vendor/assets/javascripts/extensions/bootstrap-table-filter.js +0 -67
- data/vendor/assets/javascripts/extensions/bootstrap-table-flat-json.js +0 -62
- data/vendor/assets/javascripts/extensions/bootstrap-table-group-by-v2.js +0 -226
- data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +0 -243
- data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +0 -34
- data/vendor/assets/javascripts/extensions/bootstrap-table-key-events.js +0 -80
- data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +0 -136
- data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +0 -88
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +0 -71
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-selection-row.js +0 -127
- data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +0 -393
- data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +0 -67
- data/vendor/assets/javascripts/extensions/bootstrap-table-print.js +0 -133
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +0 -181
- data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +0 -118
- data/vendor/assets/javascripts/extensions/bootstrap-table-resizable.js +0 -74
- data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +0 -303
- data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +0 -111
- data/vendor/assets/javascripts/extensions/bootstrap-table-toolbar.js +0 -211
- data/vendor/assets/javascripts/extensions/bootstrap-table-tree-column.js +0 -130
- data/vendor/assets/javascripts/locale/README.md +0 -179
- data/vendor/assets/javascripts/locale/bootstrap-table-af-ZA.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-ar-SA.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-ca-ES.js +0 -44
- data/vendor/assets/javascripts/locale/bootstrap-table-cs-CZ.js +0 -44
- data/vendor/assets/javascripts/locale/bootstrap-table-da-DK.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-de-DE.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-el-GR.js +0 -28
- data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +0 -49
- data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js.template +0 -49
- data/vendor/assets/javascripts/locale/bootstrap-table-es-AR.js +0 -31
- data/vendor/assets/javascripts/locale/bootstrap-table-es-CL.js +0 -44
- data/vendor/assets/javascripts/locale/bootstrap-table-es-CR.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-es-ES.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-es-MX.js +0 -32
- data/vendor/assets/javascripts/locale/bootstrap-table-es-NI.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-es-SP.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-et-EE.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-fa-IR.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-fr-BE.js +0 -28
- data/vendor/assets/javascripts/locale/bootstrap-table-fr-FR.js +0 -41
- data/vendor/assets/javascripts/locale/bootstrap-table-he-IL.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-hr-HR.js +0 -44
- data/vendor/assets/javascripts/locale/bootstrap-table-hu-HU.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-id-ID.js +0 -49
- data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +0 -52
- data/vendor/assets/javascripts/locale/bootstrap-table-ja-JP.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-ka-GE.js +0 -40
- data/vendor/assets/javascripts/locale/bootstrap-table-ko-KR.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-ms-MY.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-nb-NO.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +0 -52
- data/vendor/assets/javascripts/locale/bootstrap-table-pl-PL.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-pt-BR.js +0 -41
- data/vendor/assets/javascripts/locale/bootstrap-table-pt-PT.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-ro-RO.js +0 -43
- data/vendor/assets/javascripts/locale/bootstrap-table-ru-RU.js +0 -72
- data/vendor/assets/javascripts/locale/bootstrap-table-sk-SK.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-sv-SE.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-th-TH.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-tr-TR.js +0 -41
- data/vendor/assets/javascripts/locale/bootstrap-table-uk-UA.js +0 -73
- data/vendor/assets/javascripts/locale/bootstrap-table-ur-PK.js +0 -37
- data/vendor/assets/javascripts/locale/bootstrap-table-uz-Latn-UZ.js +0 -49
- data/vendor/assets/javascripts/locale/bootstrap-table-vi-VN.js +0 -28
- data/vendor/assets/javascripts/locale/bootstrap-table-zh-CN.js +0 -46
- data/vendor/assets/javascripts/locale/bootstrap-table-zh-TW.js +0 -40
- data/vendor/assets/stylesheets/bootstrap-table.css +0 -313
- data/vendor/assets/stylesheets/extensions/bootstrap-table-auto-refresh.css +0 -3
- data/vendor/assets/stylesheets/extensions/bootstrap-table-click-edit-row.css +0 -21
- data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by-v2.css +0 -7
- data/vendor/assets/stylesheets/extensions/bootstrap-table-reorder-rows.css +0 -14
- data/vendor/assets/stylesheets/extensions/bootstrap-table-sticky-header.css +0 -22
@@ -1,146 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @author zhixin wen <wenzhixin2010@gmail.com>
|
3
|
-
* extensions: https://github.com/vitalets/x-editable
|
4
|
-
*/
|
5
|
-
|
6
|
-
(function($) {
|
7
|
-
|
8
|
-
'use strict';
|
9
|
-
|
10
|
-
$.extend($.fn.bootstrapTable.defaults, {
|
11
|
-
editable: true,
|
12
|
-
onEditableInit: function() {
|
13
|
-
return false;
|
14
|
-
},
|
15
|
-
onEditableSave: function(field, row, oldValue, $el) {
|
16
|
-
return false;
|
17
|
-
},
|
18
|
-
onEditableShown: function(field, row, $el, editable) {
|
19
|
-
return false;
|
20
|
-
},
|
21
|
-
onEditableHidden: function(field, row, $el, reason) {
|
22
|
-
return false;
|
23
|
-
}
|
24
|
-
});
|
25
|
-
|
26
|
-
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
27
|
-
'editable-init.bs.table': 'onEditableInit',
|
28
|
-
'editable-save.bs.table': 'onEditableSave',
|
29
|
-
'editable-shown.bs.table': 'onEditableShown',
|
30
|
-
'editable-hidden.bs.table': 'onEditableHidden'
|
31
|
-
});
|
32
|
-
|
33
|
-
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
34
|
-
_initTable = BootstrapTable.prototype.initTable,
|
35
|
-
_initBody = BootstrapTable.prototype.initBody;
|
36
|
-
|
37
|
-
BootstrapTable.prototype.initTable = function() {
|
38
|
-
var that = this;
|
39
|
-
_initTable.apply(this, Array.prototype.slice.apply(arguments));
|
40
|
-
|
41
|
-
if (!this.options.editable) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
|
45
|
-
$.each(this.columns, function(i, column) {
|
46
|
-
if (!column.editable) {
|
47
|
-
return;
|
48
|
-
}
|
49
|
-
|
50
|
-
var editableOptions = {},
|
51
|
-
editableDataMarkup = [],
|
52
|
-
editableDataPrefix = 'editable-';
|
53
|
-
|
54
|
-
var processDataOptions = function(key, value) {
|
55
|
-
// Replace camel case with dashes.
|
56
|
-
var dashKey = key.replace(/([A-Z])/g, function($1) {
|
57
|
-
return "-" + $1.toLowerCase();
|
58
|
-
});
|
59
|
-
if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) {
|
60
|
-
var dataKey = dashKey.replace(editableDataPrefix, 'data-');
|
61
|
-
editableOptions[dataKey] = value;
|
62
|
-
}
|
63
|
-
};
|
64
|
-
|
65
|
-
$.each(that.options, processDataOptions);
|
66
|
-
|
67
|
-
column.formatter = column.formatter || function(value, row, index) {
|
68
|
-
return value;
|
69
|
-
};
|
70
|
-
column._formatter = column._formatter ? column._formatter : column.formatter;
|
71
|
-
column.formatter = function(value, row, index) {
|
72
|
-
var result = column._formatter ? column._formatter(value, row, index) : value;
|
73
|
-
|
74
|
-
$.each(column, processDataOptions);
|
75
|
-
|
76
|
-
$.each(editableOptions, function(key, value) {
|
77
|
-
editableDataMarkup.push(' ' + key + '="' + value + '"');
|
78
|
-
});
|
79
|
-
|
80
|
-
var _dont_edit_formatter = false;
|
81
|
-
if (column.editable.hasOwnProperty('noeditFormatter')) {
|
82
|
-
_dont_edit_formatter = column.editable.noeditFormatter(value, row, index);
|
83
|
-
}
|
84
|
-
|
85
|
-
if (_dont_edit_formatter === false) {
|
86
|
-
return ['<a href="javascript:void(0)"',
|
87
|
-
' data-name="' + column.field + '"',
|
88
|
-
' data-pk="' + row[that.options.idField] + '"',
|
89
|
-
' data-value="' + result + '"',
|
90
|
-
editableDataMarkup.join(''),
|
91
|
-
'>' + '</a>'
|
92
|
-
].join('');
|
93
|
-
} else {
|
94
|
-
return _dont_edit_formatter;
|
95
|
-
}
|
96
|
-
|
97
|
-
};
|
98
|
-
});
|
99
|
-
};
|
100
|
-
|
101
|
-
BootstrapTable.prototype.initBody = function() {
|
102
|
-
var that = this;
|
103
|
-
_initBody.apply(this, Array.prototype.slice.apply(arguments));
|
104
|
-
|
105
|
-
if (!this.options.editable) {
|
106
|
-
return;
|
107
|
-
}
|
108
|
-
|
109
|
-
$.each(this.columns, function(i, column) {
|
110
|
-
if (!column.editable) {
|
111
|
-
return;
|
112
|
-
}
|
113
|
-
|
114
|
-
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
|
115
|
-
.off('save').on('save', function(e, params) {
|
116
|
-
var data = that.getData(),
|
117
|
-
index = $(this).parents('tr[data-index]').data('index'),
|
118
|
-
row = data[index],
|
119
|
-
oldValue = row[column.field];
|
120
|
-
|
121
|
-
$(this).data('value', params.submitValue);
|
122
|
-
row[column.field] = params.submitValue;
|
123
|
-
that.trigger('editable-save', column.field, row, oldValue, $(this));
|
124
|
-
that.resetFooter();
|
125
|
-
});
|
126
|
-
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
|
127
|
-
.off('shown').on('shown', function(e, editable) {
|
128
|
-
var data = that.getData(),
|
129
|
-
index = $(this).parents('tr[data-index]').data('index'),
|
130
|
-
row = data[index];
|
131
|
-
|
132
|
-
that.trigger('editable-shown', column.field, row, $(this), editable);
|
133
|
-
});
|
134
|
-
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
|
135
|
-
.off('hidden').on('hidden', function(e, reason) {
|
136
|
-
var data = that.getData(),
|
137
|
-
index = $(this).parents('tr[data-index]').data('index'),
|
138
|
-
row = data[index];
|
139
|
-
|
140
|
-
that.trigger('editable-hidden', column.field, row, $(this), reason);
|
141
|
-
});
|
142
|
-
});
|
143
|
-
this.trigger('editable-init');
|
144
|
-
};
|
145
|
-
|
146
|
-
})(jQuery);
|
@@ -1,131 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @author zhixin wen <wenzhixin2010@gmail.com>
|
3
|
-
* extensions: https://github.com/kayalshri/tableExport.jquery.plugin
|
4
|
-
*/
|
5
|
-
|
6
|
-
(function ($) {
|
7
|
-
'use strict';
|
8
|
-
var sprintf = $.fn.bootstrapTable.utils.sprintf;
|
9
|
-
|
10
|
-
var TYPE_NAME = {
|
11
|
-
json: 'JSON',
|
12
|
-
xml: 'XML',
|
13
|
-
png: 'PNG',
|
14
|
-
csv: 'CSV',
|
15
|
-
txt: 'TXT',
|
16
|
-
sql: 'SQL',
|
17
|
-
doc: 'MS-Word',
|
18
|
-
excel: 'MS-Excel',
|
19
|
-
xlsx: 'MS-Excel (OpenXML)',
|
20
|
-
powerpoint: 'MS-Powerpoint',
|
21
|
-
pdf: 'PDF'
|
22
|
-
};
|
23
|
-
|
24
|
-
$.extend($.fn.bootstrapTable.defaults, {
|
25
|
-
showExport: false,
|
26
|
-
exportDataType: 'basic', // basic, all, selected
|
27
|
-
// 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'
|
28
|
-
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
|
29
|
-
exportOptions: {}
|
30
|
-
});
|
31
|
-
|
32
|
-
$.extend($.fn.bootstrapTable.defaults.icons, {
|
33
|
-
export: 'glyphicon-export icon-share'
|
34
|
-
});
|
35
|
-
|
36
|
-
$.extend($.fn.bootstrapTable.locales, {
|
37
|
-
formatExport: function () {
|
38
|
-
return 'Export data';
|
39
|
-
}
|
40
|
-
});
|
41
|
-
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
|
42
|
-
|
43
|
-
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
44
|
-
_initToolbar = BootstrapTable.prototype.initToolbar;
|
45
|
-
|
46
|
-
BootstrapTable.prototype.initToolbar = function () {
|
47
|
-
this.showToolbar = this.options.showExport;
|
48
|
-
|
49
|
-
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
|
50
|
-
|
51
|
-
if (this.options.showExport) {
|
52
|
-
var that = this,
|
53
|
-
$btnGroup = this.$toolbar.find('>.btn-group'),
|
54
|
-
$export = $btnGroup.find('div.export');
|
55
|
-
|
56
|
-
if (!$export.length) {
|
57
|
-
$export = $([
|
58
|
-
'<div class="export btn-group">',
|
59
|
-
'<button class="btn' +
|
60
|
-
sprintf(' btn-%s', this.options.buttonsClass) +
|
61
|
-
sprintf(' btn-%s', this.options.iconSize) +
|
62
|
-
' dropdown-toggle" aria-label="export type" ' +
|
63
|
-
'title="' + this.options.formatExport() + '" ' +
|
64
|
-
'data-toggle="dropdown" type="button">',
|
65
|
-
sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.export),
|
66
|
-
'<span class="caret"></span>',
|
67
|
-
'</button>',
|
68
|
-
'<ul class="dropdown-menu" role="menu">',
|
69
|
-
'</ul>',
|
70
|
-
'</div>'].join('')).appendTo($btnGroup);
|
71
|
-
|
72
|
-
var $menu = $export.find('.dropdown-menu'),
|
73
|
-
exportTypes = this.options.exportTypes;
|
74
|
-
|
75
|
-
if (typeof this.options.exportTypes === 'string') {
|
76
|
-
var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');
|
77
|
-
|
78
|
-
exportTypes = [];
|
79
|
-
$.each(types, function (i, value) {
|
80
|
-
exportTypes.push(value.slice(1, -1));
|
81
|
-
});
|
82
|
-
}
|
83
|
-
$.each(exportTypes, function (i, type) {
|
84
|
-
if (TYPE_NAME.hasOwnProperty(type)) {
|
85
|
-
$menu.append(['<li role="menuitem" data-type="' + type + '">',
|
86
|
-
'<a href="javascript:void(0)">',
|
87
|
-
TYPE_NAME[type],
|
88
|
-
'</a>',
|
89
|
-
'</li>'].join(''));
|
90
|
-
}
|
91
|
-
});
|
92
|
-
|
93
|
-
$menu.find('li').click(function () {
|
94
|
-
var type = $(this).data('type'),
|
95
|
-
doExport = function () {
|
96
|
-
that.$el.tableExport($.extend({}, that.options.exportOptions, {
|
97
|
-
type: type,
|
98
|
-
escape: false
|
99
|
-
}));
|
100
|
-
};
|
101
|
-
|
102
|
-
if (that.options.exportDataType === 'all' && that.options.pagination) {
|
103
|
-
that.$el.one(that.options.sidePagination === 'server' ? 'post-body.bs.table' : 'page-change.bs.table', function () {
|
104
|
-
doExport();
|
105
|
-
that.togglePagination();
|
106
|
-
});
|
107
|
-
that.togglePagination();
|
108
|
-
} else if (that.options.exportDataType === 'selected') {
|
109
|
-
var data = that.getData(),
|
110
|
-
selectedData = that.getAllSelections();
|
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
|
-
|
121
|
-
that.load(selectedData);
|
122
|
-
doExport();
|
123
|
-
that.load(data);
|
124
|
-
} else {
|
125
|
-
doExport();
|
126
|
-
}
|
127
|
-
});
|
128
|
-
}
|
129
|
-
}
|
130
|
-
};
|
131
|
-
})(jQuery);
|
@@ -1,697 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @author: Dennis Hernández
|
3
|
-
* @webSite: http://djhvscf.github.io/Blog
|
4
|
-
* @version: v2.1.1
|
5
|
-
*/
|
6
|
-
|
7
|
-
(function ($) {
|
8
|
-
|
9
|
-
'use strict';
|
10
|
-
|
11
|
-
var sprintf = $.fn.bootstrapTable.utils.sprintf,
|
12
|
-
objectKeys = $.fn.bootstrapTable.utils.objectKeys;
|
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
|
-
|
32
|
-
var addOptionToSelectControl = function (selectControl, value, text) {
|
33
|
-
value = $.trim(value);
|
34
|
-
selectControl = $(selectControl.get(selectControl.length - 1));
|
35
|
-
if (!existOptionInSelectControl(selectControl, value)) {
|
36
|
-
selectControl.append($("<option></option>")
|
37
|
-
.attr("value", value)
|
38
|
-
.text($('<div />').html(text).text()));
|
39
|
-
}
|
40
|
-
};
|
41
|
-
|
42
|
-
var sortSelectControl = function (selectControl) {
|
43
|
-
var $opts = selectControl.find('option:gt(0)');
|
44
|
-
$opts.sort(function (a, b) {
|
45
|
-
a = $(a).text().toLowerCase();
|
46
|
-
b = $(b).text().toLowerCase();
|
47
|
-
if ($.isNumeric(a) && $.isNumeric(b)) {
|
48
|
-
// Convert numerical values from string to float.
|
49
|
-
a = parseFloat(a);
|
50
|
-
b = parseFloat(b);
|
51
|
-
}
|
52
|
-
return a > b ? 1 : a < b ? -1 : 0;
|
53
|
-
});
|
54
|
-
|
55
|
-
selectControl.find('option:gt(0)').remove();
|
56
|
-
selectControl.append($opts);
|
57
|
-
};
|
58
|
-
|
59
|
-
var existOptionInSelectControl = function (selectControl, value) {
|
60
|
-
var options = getOptionsFromSelectControl(selectControl);
|
61
|
-
for (var i = 0; i < options.length; i++) {
|
62
|
-
if (options[i].value === value.toString()) {
|
63
|
-
//The value is not valid to add
|
64
|
-
return true;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
|
68
|
-
//If we get here, the value is valid to add
|
69
|
-
return false;
|
70
|
-
};
|
71
|
-
|
72
|
-
var fixHeaderCSS = function (that) {
|
73
|
-
that.$tableHeader.css('height', '77px');
|
74
|
-
};
|
75
|
-
|
76
|
-
var getCurrentHeader = function (that) {
|
77
|
-
var header = that.$header;
|
78
|
-
if (that.options.height) {
|
79
|
-
header = that.$tableHeader;
|
80
|
-
}
|
81
|
-
|
82
|
-
return header;
|
83
|
-
};
|
84
|
-
|
85
|
-
var getCurrentSearchControls = function (that) {
|
86
|
-
var searchControls = 'select, input';
|
87
|
-
if (that.options.height) {
|
88
|
-
searchControls = 'table select, table input';
|
89
|
-
}
|
90
|
-
|
91
|
-
return searchControls;
|
92
|
-
};
|
93
|
-
|
94
|
-
var getCursorPosition = function(el) {
|
95
|
-
if ($.fn.bootstrapTable.utils.isIEBrowser()) {
|
96
|
-
if ($(el).is('input')) {
|
97
|
-
var pos = 0;
|
98
|
-
if ('selectionStart' in el) {
|
99
|
-
pos = el.selectionStart;
|
100
|
-
} else if ('selection' in document) {
|
101
|
-
el.focus();
|
102
|
-
var Sel = document.selection.createRange();
|
103
|
-
var SelLength = document.selection.createRange().text.length;
|
104
|
-
Sel.moveStart('character', -el.value.length);
|
105
|
-
pos = Sel.text.length - SelLength;
|
106
|
-
}
|
107
|
-
return pos;
|
108
|
-
} else {
|
109
|
-
return -1;
|
110
|
-
}
|
111
|
-
} else {
|
112
|
-
return -1;
|
113
|
-
}
|
114
|
-
};
|
115
|
-
|
116
|
-
var setCursorPosition = function (el, index) {
|
117
|
-
if ($.fn.bootstrapTable.utils.isIEBrowser()) {
|
118
|
-
if(el.setSelectionRange !== undefined) {
|
119
|
-
el.setSelectionRange(index, index);
|
120
|
-
} else {
|
121
|
-
$(el).val(el.value);
|
122
|
-
}
|
123
|
-
}
|
124
|
-
};
|
125
|
-
|
126
|
-
var copyValues = function (that) {
|
127
|
-
var header = getCurrentHeader(that),
|
128
|
-
searchControls = getCurrentSearchControls(that);
|
129
|
-
|
130
|
-
that.options.valuesFilterControl = [];
|
131
|
-
|
132
|
-
header.find(searchControls).each(function () {
|
133
|
-
that.options.valuesFilterControl.push(
|
134
|
-
{
|
135
|
-
field: $(this).closest('[data-field]').data('field'),
|
136
|
-
value: $(this).val(),
|
137
|
-
position: getCursorPosition($(this).get(0))
|
138
|
-
});
|
139
|
-
});
|
140
|
-
};
|
141
|
-
|
142
|
-
var setValues = function(that) {
|
143
|
-
var field = null,
|
144
|
-
result = [],
|
145
|
-
header = getCurrentHeader(that),
|
146
|
-
searchControls = getCurrentSearchControls(that);
|
147
|
-
|
148
|
-
if (that.options.valuesFilterControl.length > 0) {
|
149
|
-
header.find(searchControls).each(function (index, ele) {
|
150
|
-
field = $(this).closest('[data-field]').data('field');
|
151
|
-
result = $.grep(that.options.valuesFilterControl, function (valueObj) {
|
152
|
-
return valueObj.field === field;
|
153
|
-
});
|
154
|
-
|
155
|
-
if (result.length > 0) {
|
156
|
-
$(this).val(result[0].value);
|
157
|
-
setCursorPosition($(this).get(0), result[0].position);
|
158
|
-
}
|
159
|
-
});
|
160
|
-
}
|
161
|
-
};
|
162
|
-
|
163
|
-
var collectBootstrapCookies = function cookiesRegex() {
|
164
|
-
var cookies = [],
|
165
|
-
foundCookies = document.cookie.match(/(?:bs.table.)(\w*)/g);
|
166
|
-
|
167
|
-
if (foundCookies) {
|
168
|
-
$.each(foundCookies, function (i, cookie) {
|
169
|
-
if (/./.test(cookie)) {
|
170
|
-
cookie = cookie.split(".").pop();
|
171
|
-
}
|
172
|
-
|
173
|
-
if ($.inArray(cookie, cookies) === -1) {
|
174
|
-
cookies.push(cookie);
|
175
|
-
}
|
176
|
-
});
|
177
|
-
return cookies;
|
178
|
-
}
|
179
|
-
};
|
180
|
-
|
181
|
-
var initFilterSelectControls = function (that) {
|
182
|
-
var data = that.data,
|
183
|
-
itemsPerPage = that.pageTo < that.options.data.length ? that.options.data.length : that.pageTo,
|
184
|
-
|
185
|
-
isColumnSearchableViaSelect = function (column) {
|
186
|
-
return column.filterControl && column.filterControl.toLowerCase() === 'select' && column.searchable;
|
187
|
-
},
|
188
|
-
|
189
|
-
isFilterDataNotGiven = function (column) {
|
190
|
-
return column.filterData === undefined || column.filterData.toLowerCase() === 'column';
|
191
|
-
},
|
192
|
-
|
193
|
-
hasSelectControlElement = function (selectControl) {
|
194
|
-
return selectControl && selectControl.length > 0;
|
195
|
-
};
|
196
|
-
|
197
|
-
var z = that.options.pagination ?
|
198
|
-
(that.options.sidePagination === 'server' ? that.pageTo : that.options.totalRows) :
|
199
|
-
that.pageTo;
|
200
|
-
|
201
|
-
$.each(that.header.fields, function (j, field) {
|
202
|
-
var column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)],
|
203
|
-
selectControl = $('.bootstrap-table-filter-control-' + escapeID(column.field));
|
204
|
-
|
205
|
-
if (isColumnSearchableViaSelect(column) && isFilterDataNotGiven(column) && hasSelectControlElement(selectControl)) {
|
206
|
-
if (selectControl.get(selectControl.length - 1).options.length === 0) {
|
207
|
-
//Added the default option
|
208
|
-
addOptionToSelectControl(selectControl, '', '');
|
209
|
-
}
|
210
|
-
|
211
|
-
var uniqueValues = {};
|
212
|
-
for (var i = 0; i < z; i++) {
|
213
|
-
//Added a new value
|
214
|
-
var fieldValue = data[i][field],
|
215
|
-
formattedValue = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, that.header.formatters[j], [fieldValue, data[i], i], fieldValue);
|
216
|
-
|
217
|
-
uniqueValues[formattedValue] = fieldValue;
|
218
|
-
}
|
219
|
-
|
220
|
-
for (var key in uniqueValues) {
|
221
|
-
addOptionToSelectControl(selectControl, uniqueValues[key], key);
|
222
|
-
}
|
223
|
-
|
224
|
-
sortSelectControl(selectControl);
|
225
|
-
|
226
|
-
if (that.options.hideUnusedSelectOptions) {
|
227
|
-
hideUnusedSelectOptions(selectControl, uniqueValues);
|
228
|
-
}
|
229
|
-
}
|
230
|
-
});
|
231
|
-
};
|
232
|
-
|
233
|
-
var escapeID = function(id) {
|
234
|
-
return String(id).replace( /(:|\.|\[|\]|,)/g, "\\$1" );
|
235
|
-
};
|
236
|
-
|
237
|
-
var createControls = function (that, header) {
|
238
|
-
var addedFilterControl = false,
|
239
|
-
isVisible,
|
240
|
-
html,
|
241
|
-
timeoutId = 0;
|
242
|
-
|
243
|
-
$.each(that.columns, function (i, column) {
|
244
|
-
isVisible = 'hidden';
|
245
|
-
html = [];
|
246
|
-
|
247
|
-
if (!column.visible) {
|
248
|
-
return;
|
249
|
-
}
|
250
|
-
|
251
|
-
if (!column.filterControl) {
|
252
|
-
html.push('<div class="no-filter-control"></div>');
|
253
|
-
} else {
|
254
|
-
html.push('<div class="filter-control">');
|
255
|
-
|
256
|
-
var nameControl = column.filterControl.toLowerCase();
|
257
|
-
if (column.searchable && that.options.filterTemplate[nameControl]) {
|
258
|
-
addedFilterControl = true;
|
259
|
-
isVisible = 'visible';
|
260
|
-
html.push(that.options.filterTemplate[nameControl](that, column.field, isVisible, column.filterControlPlaceholder));
|
261
|
-
}
|
262
|
-
}
|
263
|
-
|
264
|
-
$.each(header.children().children(), function (i, tr) {
|
265
|
-
tr = $(tr);
|
266
|
-
if (tr.data('field') === column.field) {
|
267
|
-
tr.find('.fht-cell').append(html.join(''));
|
268
|
-
return false;
|
269
|
-
}
|
270
|
-
});
|
271
|
-
|
272
|
-
if (column.filterData !== undefined && column.filterData.toLowerCase() !== 'column') {
|
273
|
-
var filterDataType = getFilterDataMethod(filterDataMethods, column.filterData.substring(0, column.filterData.indexOf(':')));
|
274
|
-
var filterDataSource, selectControl;
|
275
|
-
|
276
|
-
if (filterDataType !== null) {
|
277
|
-
filterDataSource = column.filterData.substring(column.filterData.indexOf(':') + 1, column.filterData.length);
|
278
|
-
selectControl = $('.bootstrap-table-filter-control-' + escapeID(column.field));
|
279
|
-
|
280
|
-
addOptionToSelectControl(selectControl, '', '');
|
281
|
-
filterDataType(filterDataSource, selectControl);
|
282
|
-
} else {
|
283
|
-
throw new SyntaxError('Error. You should use any of these allowed filter data methods: var, json, url.' + ' Use like this: var: {key: "value"}');
|
284
|
-
}
|
285
|
-
|
286
|
-
var variableValues, key;
|
287
|
-
switch (filterDataType) {
|
288
|
-
case 'url':
|
289
|
-
$.ajax({
|
290
|
-
url: filterDataSource,
|
291
|
-
dataType: 'json',
|
292
|
-
success: function (data) {
|
293
|
-
for (var key in data) {
|
294
|
-
addOptionToSelectControl(selectControl, key, data[key]);
|
295
|
-
}
|
296
|
-
sortSelectControl(selectControl);
|
297
|
-
}
|
298
|
-
});
|
299
|
-
break;
|
300
|
-
case 'var':
|
301
|
-
variableValues = window[filterDataSource];
|
302
|
-
for (key in variableValues) {
|
303
|
-
addOptionToSelectControl(selectControl, key, variableValues[key]);
|
304
|
-
}
|
305
|
-
sortSelectControl(selectControl);
|
306
|
-
break;
|
307
|
-
case 'jso':
|
308
|
-
variableValues = JSON.parse(filterDataSource);
|
309
|
-
for (key in variableValues) {
|
310
|
-
addOptionToSelectControl(selectControl, key, variableValues[key]);
|
311
|
-
}
|
312
|
-
sortSelectControl(selectControl);
|
313
|
-
break;
|
314
|
-
}
|
315
|
-
}
|
316
|
-
});
|
317
|
-
|
318
|
-
if (addedFilterControl) {
|
319
|
-
header.off('keyup', 'input').on('keyup', 'input', function (event) {
|
320
|
-
clearTimeout(timeoutId);
|
321
|
-
timeoutId = setTimeout(function () {
|
322
|
-
that.onColumnSearch(event);
|
323
|
-
}, that.options.searchTimeOut);
|
324
|
-
});
|
325
|
-
|
326
|
-
header.off('change', 'select').on('change', 'select', function (event) {
|
327
|
-
clearTimeout(timeoutId);
|
328
|
-
timeoutId = setTimeout(function () {
|
329
|
-
that.onColumnSearch(event);
|
330
|
-
}, that.options.searchTimeOut);
|
331
|
-
});
|
332
|
-
|
333
|
-
header.off('mouseup', 'input').on('mouseup', 'input', function (event) {
|
334
|
-
var $input = $(this),
|
335
|
-
oldValue = $input.val();
|
336
|
-
|
337
|
-
if (oldValue === "") {
|
338
|
-
return;
|
339
|
-
}
|
340
|
-
|
341
|
-
setTimeout(function(){
|
342
|
-
var newValue = $input.val();
|
343
|
-
|
344
|
-
if (newValue === "") {
|
345
|
-
clearTimeout(timeoutId);
|
346
|
-
timeoutId = setTimeout(function () {
|
347
|
-
that.onColumnSearch(event);
|
348
|
-
}, that.options.searchTimeOut);
|
349
|
-
}
|
350
|
-
}, 1);
|
351
|
-
});
|
352
|
-
|
353
|
-
if (header.find('.date-filter-control').length > 0) {
|
354
|
-
$.each(that.columns, function (i, column) {
|
355
|
-
if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') {
|
356
|
-
header.find('.date-filter-control.bootstrap-table-filter-control-' + column.field).datepicker(column.filterDatepickerOptions)
|
357
|
-
.on('changeDate', function (e) {
|
358
|
-
$(sprintf(".%s", e.currentTarget.classList.toString().split(" ").join("."))).val(e.currentTarget.value);
|
359
|
-
//Fired the keyup event
|
360
|
-
$(e.currentTarget).keyup();
|
361
|
-
});
|
362
|
-
}
|
363
|
-
});
|
364
|
-
}
|
365
|
-
} else {
|
366
|
-
header.find('.filterControl').hide();
|
367
|
-
}
|
368
|
-
};
|
369
|
-
|
370
|
-
var getDirectionOfSelectOptions = function (alignment) {
|
371
|
-
alignment = alignment === undefined ? 'left' : alignment.toLowerCase();
|
372
|
-
|
373
|
-
switch (alignment) {
|
374
|
-
case 'left':
|
375
|
-
return 'ltr';
|
376
|
-
case 'right':
|
377
|
-
return 'rtl';
|
378
|
-
case 'auto':
|
379
|
-
return 'auto';
|
380
|
-
default:
|
381
|
-
return 'ltr';
|
382
|
-
}
|
383
|
-
};
|
384
|
-
|
385
|
-
var filterDataMethods =
|
386
|
-
{
|
387
|
-
'var': function (filterDataSource, selectControl) {
|
388
|
-
var variableValues = window[filterDataSource];
|
389
|
-
for (var key in variableValues) {
|
390
|
-
addOptionToSelectControl(selectControl, key, variableValues[key]);
|
391
|
-
}
|
392
|
-
sortSelectControl(selectControl);
|
393
|
-
},
|
394
|
-
'url': function (filterDataSource, selectControl) {
|
395
|
-
$.ajax({
|
396
|
-
url: filterDataSource,
|
397
|
-
dataType: 'json',
|
398
|
-
success: function (data) {
|
399
|
-
for (var key in data) {
|
400
|
-
addOptionToSelectControl(selectControl, key, data[key]);
|
401
|
-
}
|
402
|
-
sortSelectControl(selectControl);
|
403
|
-
}
|
404
|
-
});
|
405
|
-
},
|
406
|
-
'json':function (filterDataSource, selectControl) {
|
407
|
-
var variableValues = JSON.parse(filterDataSource);
|
408
|
-
for (var key in variableValues) {
|
409
|
-
addOptionToSelectControl(selectControl, key, variableValues[key]);
|
410
|
-
}
|
411
|
-
sortSelectControl(selectControl);
|
412
|
-
}
|
413
|
-
};
|
414
|
-
|
415
|
-
var getFilterDataMethod = function (objFilterDataMethod, searchTerm) {
|
416
|
-
var keys = Object.keys(objFilterDataMethod);
|
417
|
-
for (var i = 0; i < keys.length; i++) {
|
418
|
-
if (keys[i] === searchTerm) {
|
419
|
-
return objFilterDataMethod[searchTerm];
|
420
|
-
}
|
421
|
-
}
|
422
|
-
return null;
|
423
|
-
};
|
424
|
-
|
425
|
-
$.extend($.fn.bootstrapTable.defaults, {
|
426
|
-
filterControl: false,
|
427
|
-
onColumnSearch: function (field, text) {
|
428
|
-
return false;
|
429
|
-
},
|
430
|
-
filterShowClear: false,
|
431
|
-
alignmentSelectControlOptions: undefined,
|
432
|
-
filterTemplate: {
|
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);
|
435
|
-
},
|
436
|
-
select: function (that, field, isVisible) {
|
437
|
-
return sprintf('<select class="form-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s" dir="%s"></select>',
|
438
|
-
field, isVisible, getDirectionOfSelectOptions(that.options.alignmentSelectControlOptions));
|
439
|
-
},
|
440
|
-
datepicker: function (that, field, isVisible) {
|
441
|
-
return sprintf('<input type="text" class="form-control date-filter-control bootstrap-table-filter-control-%s" style="width: 100%; visibility: %s">', field, isVisible);
|
442
|
-
}
|
443
|
-
},
|
444
|
-
//internal variables
|
445
|
-
valuesFilterControl: []
|
446
|
-
});
|
447
|
-
|
448
|
-
$.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
|
449
|
-
filterControl: undefined,
|
450
|
-
filterData: undefined,
|
451
|
-
filterDatepickerOptions: undefined,
|
452
|
-
filterStrictSearch: false,
|
453
|
-
filterStartsWithSearch: false,
|
454
|
-
filterControlPlaceholder: ""
|
455
|
-
});
|
456
|
-
|
457
|
-
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
458
|
-
'column-search.bs.table': 'onColumnSearch'
|
459
|
-
});
|
460
|
-
|
461
|
-
$.extend($.fn.bootstrapTable.defaults.icons, {
|
462
|
-
clear: 'glyphicon-trash icon-clear'
|
463
|
-
});
|
464
|
-
|
465
|
-
$.extend($.fn.bootstrapTable.locales, {
|
466
|
-
formatClearFilters: function () {
|
467
|
-
return 'Clear Filters';
|
468
|
-
}
|
469
|
-
});
|
470
|
-
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
|
471
|
-
|
472
|
-
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
473
|
-
_init = BootstrapTable.prototype.init,
|
474
|
-
_initToolbar = BootstrapTable.prototype.initToolbar,
|
475
|
-
_initHeader = BootstrapTable.prototype.initHeader,
|
476
|
-
_initBody = BootstrapTable.prototype.initBody,
|
477
|
-
_initSearch = BootstrapTable.prototype.initSearch;
|
478
|
-
|
479
|
-
BootstrapTable.prototype.init = function () {
|
480
|
-
//Make sure that the filterControl option is set
|
481
|
-
if (this.options.filterControl) {
|
482
|
-
var that = this;
|
483
|
-
|
484
|
-
// Compatibility: IE < 9 and old browsers
|
485
|
-
if (!Object.keys) {
|
486
|
-
objectKeys();
|
487
|
-
}
|
488
|
-
|
489
|
-
//Make sure that the internal variables are set correctly
|
490
|
-
this.options.valuesFilterControl = [];
|
491
|
-
|
492
|
-
this.$el.on('reset-view.bs.table', function () {
|
493
|
-
//Create controls on $tableHeader if the height is set
|
494
|
-
if (!that.options.height) {
|
495
|
-
return;
|
496
|
-
}
|
497
|
-
|
498
|
-
//Avoid recreate the controls
|
499
|
-
if (that.$tableHeader.find('select').length > 0 || that.$tableHeader.find('input').length > 0) {
|
500
|
-
return;
|
501
|
-
}
|
502
|
-
|
503
|
-
createControls(that, that.$tableHeader);
|
504
|
-
}).on('post-header.bs.table', function () {
|
505
|
-
setValues(that);
|
506
|
-
}).on('post-body.bs.table', function () {
|
507
|
-
if (that.options.height) {
|
508
|
-
fixHeaderCSS(that);
|
509
|
-
}
|
510
|
-
}).on('column-switch.bs.table', function() {
|
511
|
-
setValues(that);
|
512
|
-
});
|
513
|
-
}
|
514
|
-
_init.apply(this, Array.prototype.slice.apply(arguments));
|
515
|
-
};
|
516
|
-
|
517
|
-
BootstrapTable.prototype.initToolbar = function () {
|
518
|
-
this.showToolbar = this.options.filterControl && this.options.filterShowClear;
|
519
|
-
|
520
|
-
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
|
521
|
-
|
522
|
-
if (this.options.filterControl && this.options.filterShowClear) {
|
523
|
-
var $btnGroup = this.$toolbar.find('>.btn-group'),
|
524
|
-
$btnClear = $btnGroup.find('.filter-show-clear');
|
525
|
-
|
526
|
-
if (!$btnClear.length) {
|
527
|
-
$btnClear = $([
|
528
|
-
'<button class="btn btn-default filter-show-clear" ',
|
529
|
-
sprintf('type="button" title="%s">', this.options.formatClearFilters()),
|
530
|
-
sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.clear),
|
531
|
-
'</button>'
|
532
|
-
].join('')).appendTo($btnGroup);
|
533
|
-
|
534
|
-
$btnClear.off('click').on('click', $.proxy(this.clearFilterControl, this));
|
535
|
-
}
|
536
|
-
}
|
537
|
-
};
|
538
|
-
|
539
|
-
BootstrapTable.prototype.initHeader = function () {
|
540
|
-
_initHeader.apply(this, Array.prototype.slice.apply(arguments));
|
541
|
-
|
542
|
-
if (!this.options.filterControl) {
|
543
|
-
return;
|
544
|
-
}
|
545
|
-
createControls(this, this.$header);
|
546
|
-
};
|
547
|
-
|
548
|
-
BootstrapTable.prototype.initBody = function () {
|
549
|
-
_initBody.apply(this, Array.prototype.slice.apply(arguments));
|
550
|
-
|
551
|
-
initFilterSelectControls(this);
|
552
|
-
};
|
553
|
-
|
554
|
-
BootstrapTable.prototype.initSearch = function () {
|
555
|
-
_initSearch.apply(this, Array.prototype.slice.apply(arguments));
|
556
|
-
|
557
|
-
if (this.options.sidePagination === 'server') {
|
558
|
-
return;
|
559
|
-
}
|
560
|
-
|
561
|
-
var that = this;
|
562
|
-
var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
|
563
|
-
|
564
|
-
//Check partial column filter
|
565
|
-
this.data = fp ? $.grep(this.data, function (item, i) {
|
566
|
-
for (var key in fp) {
|
567
|
-
var thisColumn = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)];
|
568
|
-
var fval = fp[key].toLowerCase();
|
569
|
-
var value = item[key];
|
570
|
-
|
571
|
-
// Fix #142: search use formated data
|
572
|
-
if (thisColumn && thisColumn.searchFormatter) {
|
573
|
-
value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
|
574
|
-
that.header.formatters[$.inArray(key, that.header.fields)],
|
575
|
-
[value, item, i], value);
|
576
|
-
}
|
577
|
-
|
578
|
-
if (thisColumn.filterStrictSearch) {
|
579
|
-
if (!($.inArray(key, that.header.fields) !== -1 &&
|
580
|
-
(typeof value === 'string' || typeof value === 'number') &&
|
581
|
-
value.toString().toLowerCase() === fval.toString().toLowerCase())) {
|
582
|
-
return false;
|
583
|
-
}
|
584
|
-
} else if (thisColumn.filterStartsWithSearch) {
|
585
|
-
if (!($.inArray(key, that.header.fields) !== -1 &&
|
586
|
-
(typeof value === 'string' || typeof value === 'number') &&
|
587
|
-
(value + '').toLowerCase().indexOf(fval) === 0)) {
|
588
|
-
return false;
|
589
|
-
}
|
590
|
-
} else {
|
591
|
-
if (!($.inArray(key, that.header.fields) !== -1 &&
|
592
|
-
(typeof value === 'string' || typeof value === 'number') &&
|
593
|
-
(value + '').toLowerCase().indexOf(fval) !== -1)) {
|
594
|
-
return false;
|
595
|
-
}
|
596
|
-
}
|
597
|
-
}
|
598
|
-
return true;
|
599
|
-
}) : this.data;
|
600
|
-
};
|
601
|
-
|
602
|
-
BootstrapTable.prototype.initColumnSearch = function(filterColumnsDefaults) {
|
603
|
-
copyValues(this);
|
604
|
-
|
605
|
-
if (filterColumnsDefaults) {
|
606
|
-
this.filterColumnsPartial = filterColumnsDefaults;
|
607
|
-
this.updatePagination();
|
608
|
-
|
609
|
-
for (var filter in filterColumnsDefaults) {
|
610
|
-
this.trigger('column-search', filter, filterColumnsDefaults[filter]);
|
611
|
-
}
|
612
|
-
}
|
613
|
-
};
|
614
|
-
|
615
|
-
BootstrapTable.prototype.onColumnSearch = function (event) {
|
616
|
-
if ($.inArray(event.keyCode, [37, 38, 39, 40]) > -1) {
|
617
|
-
return;
|
618
|
-
}
|
619
|
-
|
620
|
-
copyValues(this);
|
621
|
-
var text = $.trim($(event.currentTarget).val());
|
622
|
-
var $field = $(event.currentTarget).closest('[data-field]').data('field');
|
623
|
-
|
624
|
-
if ($.isEmptyObject(this.filterColumnsPartial)) {
|
625
|
-
this.filterColumnsPartial = {};
|
626
|
-
}
|
627
|
-
if (text) {
|
628
|
-
this.filterColumnsPartial[$field] = text;
|
629
|
-
} else {
|
630
|
-
delete this.filterColumnsPartial[$field];
|
631
|
-
}
|
632
|
-
|
633
|
-
// if the searchText is the same as the previously selected column value,
|
634
|
-
// bootstrapTable will not try searching again (even though the selected column
|
635
|
-
// may be different from the previous search). As a work around
|
636
|
-
// we're manually appending some text to bootrap's searchText field
|
637
|
-
// to guarantee that it will perform a search again when we call this.onSearch(event)
|
638
|
-
this.searchText += "randomText";
|
639
|
-
|
640
|
-
this.options.pageNumber = 1;
|
641
|
-
this.onSearch(event);
|
642
|
-
this.trigger('column-search', $field, text);
|
643
|
-
};
|
644
|
-
|
645
|
-
BootstrapTable.prototype.clearFilterControl = function () {
|
646
|
-
if (this.options.filterControl && this.options.filterShowClear) {
|
647
|
-
var that = this,
|
648
|
-
cookies = collectBootstrapCookies(),
|
649
|
-
header = getCurrentHeader(that),
|
650
|
-
table = header.closest('table'),
|
651
|
-
controls = header.find(getCurrentSearchControls(that)),
|
652
|
-
search = that.$toolbar.find('.search input'),
|
653
|
-
timeoutId = 0;
|
654
|
-
|
655
|
-
$.each(that.options.valuesFilterControl, function (i, item) {
|
656
|
-
item.value = '';
|
657
|
-
});
|
658
|
-
|
659
|
-
setValues(that);
|
660
|
-
|
661
|
-
// Clear each type of filter if it exists.
|
662
|
-
// Requires the body to reload each time a type of filter is found because we never know
|
663
|
-
// which ones are going to be present.
|
664
|
-
if (controls.length > 0) {
|
665
|
-
this.filterColumnsPartial = {};
|
666
|
-
$(controls[0]).trigger(controls[0].tagName === 'INPUT' ? 'keyup' : 'change');
|
667
|
-
} else {
|
668
|
-
return;
|
669
|
-
}
|
670
|
-
|
671
|
-
if (search.length > 0) {
|
672
|
-
that.resetSearch();
|
673
|
-
}
|
674
|
-
|
675
|
-
// use the default sort order if it exists. do nothing if it does not
|
676
|
-
if (that.options.sortName !== table.data('sortName') || that.options.sortOrder !== table.data('sortOrder')) {
|
677
|
-
var sorter = header.find(sprintf('[data-field="%s"]', $(controls[0]).closest('table').data('sortName')));
|
678
|
-
if (sorter.length > 0) {
|
679
|
-
that.onSort(table.data('sortName'), table.data('sortName'));
|
680
|
-
$(sorter).find('.sortable').trigger('click');
|
681
|
-
}
|
682
|
-
}
|
683
|
-
|
684
|
-
// clear cookies once the filters are clean
|
685
|
-
clearTimeout(timeoutId);
|
686
|
-
timeoutId = setTimeout(function () {
|
687
|
-
if (cookies && cookies.length > 0) {
|
688
|
-
$.each(cookies, function (i, item) {
|
689
|
-
if (that.deleteCookie !== undefined) {
|
690
|
-
that.deleteCookie(item);
|
691
|
-
}
|
692
|
-
});
|
693
|
-
}
|
694
|
-
}, that.options.searchTimeOut);
|
695
|
-
}
|
696
|
-
};
|
697
|
-
})(jQuery);
|