bootstrap-table-rails 1.11.1.1 → 1.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +7 -7
  2. data/README.md +6 -3
  3. data/lib/bootstrap-table-rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/bootstrap-table-locale-all.js +374 -6
  5. data/vendor/assets/javascripts/bootstrap-table.js +348 -147
  6. data/vendor/assets/javascripts/extensions/bootstrap-table-accent-neutralise.js +1 -1
  7. data/vendor/assets/javascripts/extensions/bootstrap-table-angular.js +0 -0
  8. data/vendor/assets/javascripts/extensions/bootstrap-table-auto-refresh.js +62 -62
  9. data/vendor/assets/javascripts/extensions/bootstrap-table-click-edit-row.js +0 -0
  10. data/vendor/assets/javascripts/extensions/bootstrap-table-cookie.js +48 -69
  11. data/vendor/assets/javascripts/extensions/bootstrap-table-copy-rows.js +0 -0
  12. data/vendor/assets/javascripts/extensions/bootstrap-table-defer-url.js +32 -0
  13. data/vendor/assets/javascripts/extensions/bootstrap-table-editable.js +0 -0
  14. data/vendor/assets/javascripts/extensions/bootstrap-table-export.js +56 -8
  15. data/vendor/assets/javascripts/extensions/bootstrap-table-filter-control.js +93 -46
  16. data/vendor/assets/javascripts/extensions/bootstrap-table-filter.js +0 -0
  17. data/vendor/assets/javascripts/extensions/bootstrap-table-flat-json.js +0 -0
  18. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by-v2.js +0 -0
  19. data/vendor/assets/javascripts/extensions/bootstrap-table-group-by.js +2 -2
  20. data/vendor/assets/javascripts/extensions/bootstrap-table-i18n-enhance.js +3 -2
  21. data/vendor/assets/javascripts/extensions/bootstrap-table-jumpto.js +50 -0
  22. data/vendor/assets/javascripts/extensions/bootstrap-table-key-events.js +0 -0
  23. data/vendor/assets/javascripts/extensions/bootstrap-table-mobile.js +1 -1
  24. data/vendor/assets/javascripts/extensions/bootstrap-table-multi-toggle.js +0 -0
  25. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-search.js +1 -1
  26. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-selection-row.js +0 -0
  27. data/vendor/assets/javascripts/extensions/bootstrap-table-multiple-sort.js +31 -12
  28. data/vendor/assets/javascripts/extensions/bootstrap-table-natural-sorting.js +0 -0
  29. data/vendor/assets/javascripts/extensions/bootstrap-table-print.js +33 -17
  30. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-columns.js +2 -2
  31. data/vendor/assets/javascripts/extensions/bootstrap-table-reorder-rows.js +0 -0
  32. data/vendor/assets/javascripts/extensions/bootstrap-table-resizable.js +2 -1
  33. data/vendor/assets/javascripts/extensions/bootstrap-table-select2-filter.js +136 -107
  34. data/vendor/assets/javascripts/extensions/bootstrap-table-sticky-header.js +11 -4
  35. data/vendor/assets/javascripts/extensions/bootstrap-table-toolbar.js +0 -0
  36. data/vendor/assets/javascripts/extensions/bootstrap-table-tree-column.js +0 -0
  37. data/vendor/assets/javascripts/extensions/bootstrap-table-treegrid.js +95 -0
  38. data/vendor/assets/javascripts/locale/bootstrap-table-af-ZA.js +0 -0
  39. data/vendor/assets/javascripts/locale/bootstrap-table-ar-SA.js +0 -0
  40. data/vendor/assets/javascripts/locale/bootstrap-table-ca-ES.js +0 -0
  41. data/vendor/assets/javascripts/locale/bootstrap-table-cs-CZ.js +0 -0
  42. data/vendor/assets/javascripts/locale/bootstrap-table-da-DK.js +0 -0
  43. data/vendor/assets/javascripts/locale/bootstrap-table-de-DE.js +14 -5
  44. data/vendor/assets/javascripts/locale/bootstrap-table-el-GR.js +0 -0
  45. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js +0 -0
  46. data/vendor/assets/javascripts/locale/bootstrap-table-es-AR.js +0 -0
  47. data/vendor/assets/javascripts/locale/bootstrap-table-es-CL.js +0 -0
  48. data/vendor/assets/javascripts/locale/bootstrap-table-es-CR.js +0 -0
  49. data/vendor/assets/javascripts/locale/bootstrap-table-es-ES.js +0 -0
  50. data/vendor/assets/javascripts/locale/bootstrap-table-es-MX.js +20 -1
  51. data/vendor/assets/javascripts/locale/bootstrap-table-es-NI.js +0 -0
  52. data/vendor/assets/javascripts/locale/bootstrap-table-es-SP.js +0 -0
  53. data/vendor/assets/javascripts/locale/bootstrap-table-et-EE.js +0 -0
  54. data/vendor/assets/javascripts/locale/bootstrap-table-eu-EU.js +43 -0
  55. data/vendor/assets/javascripts/locale/bootstrap-table-fa-IR.js +0 -0
  56. data/vendor/assets/javascripts/locale/bootstrap-table-fr-BE.js +0 -0
  57. data/vendor/assets/javascripts/locale/bootstrap-table-fr-FR.js +54 -0
  58. data/vendor/assets/javascripts/locale/bootstrap-table-he-IL.js +0 -0
  59. data/vendor/assets/javascripts/locale/bootstrap-table-hr-HR.js +0 -0
  60. data/vendor/assets/javascripts/locale/bootstrap-table-hu-HU.js +0 -0
  61. data/vendor/assets/javascripts/locale/bootstrap-table-id-ID.js +0 -0
  62. data/vendor/assets/javascripts/locale/bootstrap-table-it-IT.js +0 -0
  63. data/vendor/assets/javascripts/locale/bootstrap-table-ja-JP.js +0 -0
  64. data/vendor/assets/javascripts/locale/bootstrap-table-ka-GE.js +0 -0
  65. data/vendor/assets/javascripts/locale/bootstrap-table-ko-KR.js +0 -0
  66. data/vendor/assets/javascripts/locale/bootstrap-table-ms-MY.js +0 -0
  67. data/vendor/assets/javascripts/locale/bootstrap-table-nb-NO.js +0 -0
  68. data/vendor/assets/javascripts/locale/bootstrap-table-nl-NL.js +0 -0
  69. data/vendor/assets/javascripts/locale/bootstrap-table-pl-PL.js +0 -0
  70. data/vendor/assets/javascripts/locale/bootstrap-table-pt-BR.js +0 -0
  71. data/vendor/assets/javascripts/locale/bootstrap-table-pt-PT.js +0 -0
  72. data/vendor/assets/javascripts/locale/bootstrap-table-ro-RO.js +0 -0
  73. data/vendor/assets/javascripts/locale/bootstrap-table-ru-RU.js +0 -0
  74. data/vendor/assets/javascripts/locale/bootstrap-table-sk-SK.js +12 -0
  75. data/vendor/assets/javascripts/locale/bootstrap-table-sv-SE.js +0 -0
  76. data/vendor/assets/javascripts/locale/bootstrap-table-th-TH.js +0 -0
  77. data/vendor/assets/javascripts/locale/bootstrap-table-tr-TR.js +0 -0
  78. data/vendor/assets/javascripts/locale/bootstrap-table-uk-UA.js +0 -0
  79. data/vendor/assets/javascripts/locale/bootstrap-table-ur-PK.js +0 -0
  80. data/vendor/assets/javascripts/locale/bootstrap-table-uz-Latn-UZ.js +0 -0
  81. data/vendor/assets/javascripts/locale/bootstrap-table-vi-VN.js +0 -0
  82. data/vendor/assets/javascripts/locale/bootstrap-table-zh-CN.js +0 -0
  83. data/vendor/assets/javascripts/locale/bootstrap-table-zh-TW.js +0 -0
  84. data/vendor/assets/stylesheets/bootstrap-table.css +11 -6
  85. data/vendor/assets/stylesheets/extensions/bootstrap-table-auto-refresh.css +1 -1
  86. data/vendor/assets/stylesheets/extensions/bootstrap-table-click-edit-row.css +0 -0
  87. data/vendor/assets/stylesheets/extensions/bootstrap-table-filter-control.css +0 -0
  88. data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by-v2.css +0 -0
  89. data/vendor/assets/stylesheets/extensions/bootstrap-table-group-by.css +0 -0
  90. data/vendor/assets/stylesheets/extensions/bootstrap-table-jumpto.css +8 -0
  91. data/vendor/assets/stylesheets/extensions/bootstrap-table-multiple-selection-row.css +0 -0
  92. data/vendor/assets/stylesheets/extensions/bootstrap-table-reorder-rows.css +0 -0
  93. data/vendor/assets/stylesheets/extensions/bootstrap-table-sticky-header.css +0 -0
  94. data/vendor/assets/stylesheets/extensions/bootstrap-table-tree-column.css +0 -0
  95. metadata +49 -50
  96. data/vendor/assets/javascripts/locale/README.md +0 -179
  97. data/vendor/assets/javascripts/locale/bootstrap-table-en-US.js.template +0 -49
@@ -24,6 +24,7 @@
24
24
  printAsFilteredAndSortedOnUI: true, //boolean, when true - print table as sorted and filtered on UI.
25
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
26
  //For printing data as filtered and sorted on UI - do not set these 3 options:printFilter, printSortOrder, printSortColumn
27
+
27
28
  printSortColumn: undefined , //String, set column field name to be sorted by
28
29
  printSortOrder: 'asc', //String: 'asc' , 'desc' - relevant only if printSortColumn is set
29
30
  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
@@ -32,6 +33,7 @@
32
33
  printFilter: undefined, //set value to filter by in print page
33
34
  printIgnore: false, //boolean, set true to ignore this column in the print page
34
35
  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
36
+
35
37
  });
36
38
  $.extend($.fn.bootstrapTable.defaults.icons, {
37
39
  print: 'glyphicon-print icon-share'
@@ -41,7 +43,7 @@
41
43
  _initToolbar = BootstrapTable.prototype.initToolbar;
42
44
 
43
45
  BootstrapTable.prototype.initToolbar = function () {
44
- this.showToolbar = this.options.showPrint;
46
+ this.showToolbar = this.showToolbar || this.options.showPrint;
45
47
 
46
48
  _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
47
49
 
@@ -63,28 +65,42 @@
63
65
  return column.printFormatter.apply(column, [value, row, i]);
64
66
  }
65
67
  else {
66
- return value || "-";
68
+ return typeof value === 'undefined' ? "-" : value;
67
69
  }
68
70
  }
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>");
71
+
72
+ function buildTable(data, columnsArray) {
73
+ var html = ['<table><thead>'];
74
+ for (var k = 0; k < columnsArray.length; k++) {
75
+ var columns = columnsArray[k];
76
+ html.push('<tr>');
77
+ for (var h = 0; h < columns.length; h++) {
78
+ if (!columns[h].printIgnore) {
79
+ html.push(
80
+ '<th',
81
+ sprintf(' rowspan="%s"', columns[h].rowspan),
82
+ sprintf(' colspan="%s"', columns[h].colspan),
83
+ sprintf('>%s</th>', columns[h].title)
84
+ );
85
+ }
74
86
  }
87
+ html.push('</tr>');
75
88
  }
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>");
89
+ html.push('</thead><tbody>');
90
+ for (var i = 0; i < data.length; i++) {
91
+ html.push('<tr>');
92
+ for(var l = 0; l < columnsArray.length; l++) {
93
+ var columns = columnsArray[l];
94
+ for(var j = 0; j < columns.length; j++) {
95
+ if (!columns[j].printIgnore && columns[j].field) {
96
+ html.push('<td>', formatValue(data[i], i, columns[j]), '</td>');
97
+ }
82
98
  }
83
99
  }
84
- out += "</tr>";
100
+ html.push('</tr>');
85
101
  }
86
- out += "</tbody></table>";
87
- return out;
102
+ html.push('</tbody></table>');
103
+ return html.join('');
88
104
  }
89
105
  function sortRows(data,colName,sortOrder) {
90
106
  if(!colName){
@@ -119,7 +135,7 @@
119
135
  var doPrint = function (data) {
120
136
  data=filterRows(data,getColumnFilters(that.options.columns));
121
137
  data=sortRows(data,that.options.printSortColumn,that.options.printSortOrder);
122
- var table=buildTable(data,that.options.columns[0]);
138
+ var table=buildTable(data,that.options.columns);
123
139
  var newWin = window.open("");
124
140
  newWin.document.write(that.options.printPageBuilder.call(this, table));
125
141
  newWin.print();
@@ -141,8 +141,8 @@
141
141
  }
142
142
  }
143
143
 
144
- for (var i = 0; i < ths.length; i++ ) {
145
- columnIndex = $.fn.bootstrapTable.utils.getFieldIndex(that.columns, ths[i]);
144
+ for (var i = 0; i < this.length; i++ ) {
145
+ columnIndex = that.fieldsColumnsIndex[ths[i]];
146
146
  if (columnIndex !== -1) {
147
147
  that.columns[columnIndex].fieldIndex = i;
148
148
  columns.push(that.columns[columnIndex]);
@@ -20,7 +20,8 @@
20
20
  hoverCursor: that.options.hoverCursor,
21
21
  dragCursor: that.options.dragCursor,
22
22
  onResize: that.onResize,
23
- onDrag: that.options.onResizableDrag
23
+ onDrag: that.options.onResizableDrag,
24
+ resizeMode: that.options.resizeMode
24
25
  });
25
26
  };
26
27
 
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * @author: Jewway
3
- * @version: v1.0.0
3
+ * @version: v1.1.1
4
4
  */
5
5
 
6
- !function ($) {
6
+ ! function ($) {
7
7
  'use strict';
8
8
 
9
9
  function getCurrentHeader(that) {
@@ -15,23 +15,26 @@
15
15
  return header;
16
16
  }
17
17
 
18
- function getFilterFields(that) {
19
- return getCurrentHeader(that).find('[data-filter-field]');
20
- }
21
-
22
- function setFilterValues(that) {
23
- var $filterElms = getFilterFields(that);
18
+ function initFilterValues(that) {
24
19
  if (!$.isEmptyObject(that.filterColumnsPartial)) {
25
- $filterElms.each(function (index, ele) {
26
- var $ele = $(ele),
27
- field = $ele.attr('data-filter-field'),
28
- value = that.filterColumnsPartial[field];
20
+ var $header = getCurrentHeader(that);
29
21
 
30
- if ($ele.is("select")) {
31
- $ele.val(value).trigger('change');
32
- }
33
- else {
34
- $ele.val(value);
22
+ $.each(that.columns, function (idx, column) {
23
+ var value = that.filterColumnsPartial[column.field];
24
+
25
+ if (column.filter) {
26
+ if (column.filter.setFilterValue) {
27
+ var $filter = $header.find('[data-field=' + column.field + '] .filter');
28
+ column.filter.setFilterValue($filter, column.field, value);
29
+ } else {
30
+ var $ele = $header.find('[data-filter-field=' + column.field + ']');
31
+ switch (column.filter.type) {
32
+ case 'input':
33
+ $ele.val(value);
34
+ case 'select':
35
+ $ele.val(value).trigger('change');
36
+ }
37
+ }
35
38
  }
36
39
  });
37
40
  }
@@ -39,89 +42,109 @@
39
42
 
40
43
  function createFilter(that, header) {
41
44
  var enableFilter = false,
42
- isVisible,
43
- html,
44
- timeoutId = 0;
45
+ isVisible,
46
+ html,
47
+ timeoutId = 0;
45
48
 
46
49
  $.each(that.columns, function (i, column) {
47
50
  isVisible = 'hidden';
48
- html = [];
51
+ html = null;
49
52
 
50
53
  if (!column.visible) {
51
54
  return;
52
55
  }
53
56
 
54
57
  if (!column.filter) {
55
- html.push('<div class="no-filter"></div>');
58
+ html = $('<div class="no-filter"></div>');
56
59
  } else {
57
60
  var filterClass = column.filter.class ? ' ' + column.filter.class : '';
58
- html.push('<div style="margin: 0px 2px 2px 2px;" class="filter' + filterClass + '">');
61
+ html = $('<div style="margin: 0px 2px 2px 2px;" class="filter' + filterClass + '">');
59
62
 
60
63
  if (column.searchable) {
61
64
  enableFilter = true;
62
65
  isVisible = 'visible'
63
66
  }
64
67
 
65
- switch (column.filter.type.toLowerCase()) {
66
- case 'input' :
67
- html.push('<input type="text" data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '">');
68
- break;
69
- case 'select':
70
- html.push('<select data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '"></select>');
71
- break;
68
+ if (column.filter.template) {
69
+ html.append(column.filter.template(that, column, isVisible));
70
+ } else {
71
+ var $filter = $(that.options.filterTemplate[column.filter.type.toLowerCase()](that, column, isVisible));
72
+
73
+ switch (column.filter.type) {
74
+ case 'input':
75
+ var cpLock = true;
76
+ $filter.off('compositionstart').on('compositionstart', function (event) {
77
+ cpLock = false;
78
+ });
79
+
80
+ $filter.off('compositionend').on('compositionend', function (event) {
81
+ cpLock = true;
82
+ var $input = $(this);
83
+ clearTimeout(timeoutId);
84
+ timeoutId = setTimeout(function () {
85
+ that.onColumnSearch(event, column.field, $input.val());
86
+ }, that.options.searchTimeOut);
87
+ });
88
+
89
+ $filter.off('keyup').on('keyup', function (event) {
90
+ if (cpLock) {
91
+ var $input = $(this);
92
+ clearTimeout(timeoutId);
93
+ timeoutId = setTimeout(function () {
94
+ that.onColumnSearch(event, column.field, $input.val());
95
+ }, that.options.searchTimeOut);
96
+ }
97
+ });
98
+
99
+ $filter.off('mouseup').on('mouseup', function (event) {
100
+ var $input = $(this),
101
+ oldValue = $input.val();
102
+
103
+ if (oldValue === "") {
104
+ return;
105
+ }
106
+
107
+ setTimeout(function () {
108
+ var newValue = $input.val();
109
+
110
+ if (newValue === "") {
111
+ clearTimeout(timeoutId);
112
+ timeoutId = setTimeout(function () {
113
+ that.onColumnSearch(event, column.field, newValue);
114
+ }, that.options.searchTimeOut);
115
+ }
116
+ }, 1);
117
+ });
118
+ break;
119
+ case 'select':
120
+ $filter.on('select2:select', function (event) {
121
+ that.onColumnSearch(event, column.field, $(this).val());
122
+ });
123
+
124
+ $filter.on("select2:unselecting", function (event) {
125
+ var $select2 = $(this);
126
+ event.preventDefault();
127
+ $select2.val(null).trigger('change');
128
+ that.searchText = undefined;
129
+ that.onColumnSearch(event, column.field, $select2.val());
130
+ });
131
+ break;
132
+ }
133
+
134
+ html.append($filter);
72
135
  }
73
136
  }
74
137
 
75
138
  $.each(header.children().children(), function (i, tr) {
76
139
  tr = $(tr);
77
140
  if (tr.data('field') === column.field) {
78
- tr.find('.fht-cell').append(html.join(''));
141
+ tr.find('.fht-cell').append(html);
79
142
  return false;
80
143
  }
81
144
  });
82
145
  });
83
146
 
84
- if (enableFilter) {
85
- var $inputs = header.find('input'),
86
- $selects = header.find('select');
87
-
88
-
89
- if ($inputs.length > 0) {
90
- $inputs.off('keyup').on('keyup', function (event) {
91
- clearTimeout(timeoutId);
92
- timeoutId = setTimeout(function () {
93
- that.onColumnSearch(event);
94
- }, that.options.searchTimeOut);
95
- });
96
-
97
-
98
- $inputs.off('mouseup').on('mouseup', function (event) {
99
- var $input = $(this),
100
- oldValue = $input.val();
101
-
102
- if (oldValue === "") {
103
- return;
104
- }
105
-
106
- setTimeout(function () {
107
- var newValue = $input.val();
108
-
109
- if (newValue === "") {
110
- clearTimeout(timeoutId);
111
- timeoutId = setTimeout(function () {
112
- that.onColumnSearch(event);
113
- }, that.options.searchTimeOut);
114
- }
115
- }, 1);
116
- });
117
- }
118
-
119
- if ($selects.length > 0) {
120
- $selects.on('select2:select', function (event) {
121
- that.onColumnSearch(event);
122
- });
123
- }
124
- } else {
147
+ if (!enableFilter) {
125
148
  header.find('.filter').hide();
126
149
  }
127
150
  }
@@ -131,11 +154,9 @@
131
154
 
132
155
  $.each(that.columns, function (idx, column) {
133
156
  if (column.filter && column.filter.type === 'select') {
134
- var $selectEle = $header.find('select[data-filter-field=' + column.field + ']');
157
+ var $selectEle = $header.find('select[data-filter-field="' + column.field + '"]');
135
158
 
136
159
  if ($selectEle.length > 0 && !$selectEle.data().select2) {
137
- column.filter.data.unshift("");
138
-
139
160
  var select2Opts = {
140
161
  placeholder: "",
141
162
  allowClear: true,
@@ -144,12 +165,6 @@
144
165
  };
145
166
 
146
167
  $selectEle.select2(select2Opts);
147
- $selectEle.on("select2:unselecting", function (event) {
148
- event.preventDefault();
149
- $selectEle.val(null).trigger('change');
150
- that.searchText = undefined;
151
- that.onColumnSearch(event);
152
- });
153
168
  }
154
169
  }
155
170
  });
@@ -157,23 +172,42 @@
157
172
 
158
173
  $.extend($.fn.bootstrapTable.defaults, {
159
174
  filter: false,
160
- filterValues: {}
175
+ filterValues: {},
176
+ filterTemplate: {
177
+ input: function (instance, column, isVisible) {
178
+ return '<input type="text" class="form-control" data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '">';
179
+ },
180
+ select: function (instance, column, isVisible) {
181
+ return '<select data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '"></select>';
182
+ }
183
+ },
184
+ onColumnSearch: function (field, text) {
185
+ return false;
186
+ }
161
187
  });
162
188
 
163
189
  $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
164
190
  filter: undefined
165
191
  });
166
192
 
193
+ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
194
+ 'column-search.bs.table': 'onColumnSearch'
195
+ });
196
+
167
197
  var BootstrapTable = $.fn.bootstrapTable.Constructor,
168
- _init = BootstrapTable.prototype.init,
169
- _initHeader = BootstrapTable.prototype.initHeader,
170
- _initSearch = BootstrapTable.prototype.initSearch;
198
+ _init = BootstrapTable.prototype.init,
199
+ _initHeader = BootstrapTable.prototype.initHeader,
200
+ _initSearch = BootstrapTable.prototype.initSearch;
171
201
 
172
202
  BootstrapTable.prototype.init = function () {
173
203
  //Make sure that the filtercontrol option is set
174
204
  if (this.options.filter) {
175
205
  var that = this;
176
206
 
207
+ if (that.options.filterTemplate) {
208
+ that.options.filterTemplate = $.extend({}, $.fn.bootstrapTable.defaults.filterTemplate, that.options.filterTemplate);
209
+ }
210
+
177
211
  if (!$.isEmptyObject(that.options.filterValues)) {
178
212
  that.filterColumnsPartial = that.options.filterValues;
179
213
  that.options.filterValues = {};
@@ -197,10 +231,10 @@
197
231
  initSelect2(that);
198
232
  clearTimeout(timeoutId);
199
233
  timeoutId = setTimeout(function () {
200
- setFilterValues(that);
234
+ initFilterValues(that);
201
235
  }, that.options.searchTimeOut - 1000);
202
236
  }).on('column-switch.bs.table', function (field, checked) {
203
- setFilterValues(that);
237
+ initFilterValues(that);
204
238
  });
205
239
  }
206
240
 
@@ -215,23 +249,20 @@
215
249
  };
216
250
 
217
251
  BootstrapTable.prototype.initSearch = function () {
218
- _initSearch.apply(this, Array.prototype.slice.apply(arguments));
219
-
220
252
  var that = this,
221
- filterValues = that.filterColumnsPartial;
253
+ filterValues = that.filterColumnsPartial;
222
254
 
223
255
  // Filter for client
224
256
  if (that.options.sidePagination === 'client') {
225
257
  this.data = $.grep(this.data, function (row, idx) {
226
258
  for (var field in filterValues) {
227
- var column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)],
228
- filterValue = filterValues[field].toLowerCase(),
229
- rowValue = row[field];
259
+ var column = that.columns[that.fieldsColumnsIndex[field]],
260
+ filterValue = filterValues[field].toLowerCase(),
261
+ rowValue = row[field];
230
262
 
231
263
  rowValue = $.fn.bootstrapTable.utils.calculateObjectValue(
232
- that.header,
233
- that.header.formatters[$.inArray(field, that.header.fields)],
234
- [rowValue, row, idx], rowValue);
264
+ that.header,
265
+ that.header.formatters[$.inArray(field, that.header.fields)], [rowValue, row, idx], rowValue);
235
266
 
236
267
  if (column.filterStrictSearch) {
237
268
  if (!($.inArray(field, that.header.fields) !== -1 &&
@@ -251,12 +282,11 @@
251
282
  return true;
252
283
  });
253
284
  }
254
- };
255
285
 
256
- BootstrapTable.prototype.onColumnSearch = function (event) {
257
- var field = $(event.currentTarget).attr('data-filter-field'),
258
- value = $.trim($(event.currentTarget).val());
286
+ _initSearch.apply(this, Array.prototype.slice.apply(arguments));
287
+ };
259
288
 
289
+ BootstrapTable.prototype.onColumnSearch = function (event, field, value) {
260
290
  if ($.isEmptyObject(this.filterColumnsPartial)) {
261
291
  this.filterColumnsPartial = {};
262
292
  }
@@ -269,14 +299,13 @@
269
299
 
270
300
  this.options.pageNumber = 1;
271
301
  this.onSearch(event);
302
+ this.trigger('column-search', field, value);
272
303
  };
273
304
 
274
- BootstrapTable.prototype.setFilterData = function (field, data) {
305
+ BootstrapTable.prototype.setSelect2Data = function (field, data) {
275
306
  var that = this,
276
- $header = getCurrentHeader(that),
277
- $selectEle = $header.find('select[data-filter-field=\"' + field + '\"]');
278
-
279
- data.unshift("");
307
+ $header = getCurrentHeader(that),
308
+ $selectEle = $header.find('select[data-filter-field=\"' + field + '\"]');
280
309
  $selectEle.empty();
281
310
  $selectEle.select2({
282
311
  data: data,
@@ -297,7 +326,7 @@
297
326
  this.filterColumnsPartial = values;
298
327
  };
299
328
 
300
- $.fn.bootstrapTable.methods.push('setFilterData');
329
+ $.fn.bootstrapTable.methods.push('setSelect2Data');
301
330
  $.fn.bootstrapTable.methods.push('setFilterValues');
302
331
 
303
- }(jQuery);
332
+ }(jQuery);