bootstrap-table-rails 1.12.1 → 1.15.5

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