PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/ajax/libs/bootstrap-table/1.8.1/extensions/cookie/bootstrap-table-cookie.js

https://gitlab.com/Mirros/cdnjs
JavaScript | 234 lines | 182 code | 44 blank | 8 comment | 21 complexity | 93de60f81c47bee40551245182630b78 MD5 | raw file
  1. /**
  2. * @author: Dennis Hernández
  3. * @webSite: http://djhvscf.github.io/Blog
  4. * @version: v1.1.0
  5. *
  6. * @update zhixin wen <wenzhixin2010@gmail.com>
  7. */
  8. (function ($) {
  9. 'use strict';
  10. var idsStateSaveList = {
  11. sortOrder: 'bs.table.sortOrder',
  12. sortName: 'bs.table.sortName',
  13. pageNumber: 'bs.table.pageNumber',
  14. pageList: 'bs.table.pageList',
  15. columns: 'bs.table.columns',
  16. searchText: 'bs.table.searchText'
  17. };
  18. var cookieEnabled = function () {
  19. return (navigator.cookieEnabled) ? true : false;
  20. };
  21. var setCookie = function (that, cookieName, sValue, sPath, sDomain, bSecure) {
  22. if ((!that.options.stateSave) || (!cookieEnabled()) || (that.options.stateSaveIdTable === '')) {
  23. return;
  24. }
  25. var tableName = that.options.stateSaveIdTable,
  26. vEnd = that.options.stateSaveExpire;
  27. cookieName = tableName + '.' + cookieName;
  28. if (!cookieName || /^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
  29. return false;
  30. }
  31. document.cookie = encodeURIComponent(cookieName) + '=' + encodeURIComponent(sValue) + calculateExpiration(vEnd) + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
  32. return true;
  33. };
  34. var getCookie = function (tableName, cookieName) {
  35. cookieName = tableName + '.' + cookieName;
  36. if (!cookieName) {
  37. return null;
  38. }
  39. return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
  40. };
  41. var hasCookie = function (cookieName) {
  42. if (!cookieName) {
  43. return false;
  44. }
  45. return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie);
  46. };
  47. var deleteCookie = function (tableName, cookieName, sPath, sDomain) {
  48. cookieName = tableName + '.' + cookieName;
  49. if (!hasCookie(cookieName)) {
  50. return false;
  51. }
  52. document.cookie = encodeURIComponent(cookieName) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
  53. return true;
  54. };
  55. var calculateExpiration = function(vEnd) {
  56. var time = vEnd.replace(/[0-9]/, ''); //s,mi,h,d,m,y
  57. vEnd = vEnd.replace(/[A-Za-z]/, ''); //number
  58. switch (time.toLowerCase()) {
  59. case 's':
  60. vEnd = +vEnd;
  61. break;
  62. case 'mi':
  63. vEnd = vEnd * 60;
  64. break;
  65. case 'h':
  66. vEnd = vEnd * 60 * 60;
  67. break;
  68. case 'd':
  69. vEnd = vEnd * 24 * 60 * 60;
  70. break;
  71. case 'm':
  72. vEnd = vEnd * 30 * 24 * 60 * 60;
  73. break;
  74. case 'y':
  75. vEnd = vEnd * 365 * 30 * 24 * 60 * 60;
  76. break;
  77. default:
  78. vEnd = undefined;
  79. break;
  80. }
  81. return vEnd === undefined ? '' : '; max-age=' + vEnd;
  82. }
  83. $.extend($.fn.bootstrapTable.defaults, {
  84. stateSave: false,
  85. stateSaveExpire: '2h',
  86. stateSaveIdTable: ''
  87. });
  88. $.fn.bootstrapTable.methods.push('deleteCookie');
  89. var BootstrapTable = $.fn.bootstrapTable.Constructor,
  90. _initTable = BootstrapTable.prototype.initTable,
  91. _onSort = BootstrapTable.prototype.onSort,
  92. _onPageNumber = BootstrapTable.prototype.onPageNumber,
  93. _onPageListChange = BootstrapTable.prototype.onPageListChange,
  94. _onPageFirst = BootstrapTable.prototype.onPageFirst,
  95. _onPagePre = BootstrapTable.prototype.onPagePre,
  96. _onPageNext = BootstrapTable.prototype.onPageNext,
  97. _onPageLast = BootstrapTable.prototype.onPageLast,
  98. _toggleColumn = BootstrapTable.prototype.toggleColumn,
  99. _onSearch = BootstrapTable.prototype.onSearch;
  100. // init save data after initTable function
  101. BootstrapTable.prototype.initTable = function () {
  102. _initTable.apply(this, Array.prototype.slice.apply(arguments));
  103. this.initStateSave();
  104. };
  105. BootstrapTable.prototype.initStateSave = function () {
  106. if (!this.options.stateSave) {
  107. return;
  108. }
  109. if (!cookieEnabled()) {
  110. return;
  111. }
  112. if (this.options.stateSaveIdTable === '') {
  113. return;
  114. }
  115. var sortOrderStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.sortOrder),
  116. sortOrderStateName = getCookie(this.options.stateSaveIdTable, idsStateSaveList.sortName),
  117. pageNumberStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageNumber),
  118. pageListStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageList),
  119. columnsStateSave = JSON.parse(getCookie(this.options.stateSaveIdTable, idsStateSaveList.columns)),
  120. searchStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.searchText);
  121. if (sortOrderStateSave) {
  122. this.options.sortOrder = sortOrderStateSave;
  123. this.options.sortName = sortOrderStateName;
  124. }
  125. if (pageNumberStateSave) {
  126. this.options.pageNumber = +pageNumberStateSave;
  127. }
  128. if (pageListStateSave) {
  129. this.options.pageSize = pageListStateSave ===
  130. this.options.formatAllRows() ? pageListStateSave : +pageListStateSave;
  131. }
  132. if (columnsStateSave) {
  133. $.each(this.options.columns, function (i, column) {
  134. column.visible = columnsStateSave.indexOf(i) !== -1;
  135. });
  136. }
  137. if (searchStateSave) {
  138. this.options.searchText = searchStateSave;
  139. }
  140. };
  141. BootstrapTable.prototype.onSort = function () {
  142. _onSort.apply(this, Array.prototype.slice.apply(arguments));
  143. setCookie(this, idsStateSaveList.sortOrder, this.options.sortOrder);
  144. setCookie(this, idsStateSaveList.sortName, this.options.sortName);
  145. };
  146. BootstrapTable.prototype.onPageNumber = function () {
  147. _onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
  148. setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
  149. };
  150. BootstrapTable.prototype.onPageListChange = function () {
  151. _onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
  152. setCookie(this, idsStateSaveList.pageList, this.options.pageSize);
  153. };
  154. BootstrapTable.prototype.onPageFirst = function () {
  155. _onPageFirst.apply(this, Array.prototype.slice.apply(arguments));
  156. setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
  157. };
  158. BootstrapTable.prototype.onPagePre = function () {
  159. _onPagePre.apply(this, Array.prototype.slice.apply(arguments));
  160. setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
  161. };
  162. BootstrapTable.prototype.onPageNext = function () {
  163. _onPageNext.apply(this, Array.prototype.slice.apply(arguments));
  164. setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
  165. };
  166. BootstrapTable.prototype.onPageLast = function () {
  167. _onPageLast.apply(this, Array.prototype.slice.apply(arguments));
  168. setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
  169. };
  170. BootstrapTable.prototype.toggleColumn = function () {
  171. _toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
  172. var visibleColumns = [];
  173. $.each(this.options.columns, function (i) {
  174. if (this.visible) {
  175. visibleColumns.push(i);
  176. }
  177. });
  178. setCookie(this, idsStateSaveList.columns, JSON.stringify(visibleColumns));
  179. };
  180. BootstrapTable.prototype.onSearch = function () {
  181. _onSearch.apply(this, Array.prototype.slice.apply(arguments));
  182. setCookie(this, idsStateSaveList.searchText, this.searchText);
  183. };
  184. BootstrapTable.prototype.deleteCookie = function (cookieName) {
  185. if ((cookieName === '') || (!cookieEnabled())) {
  186. return;
  187. }
  188. deleteCookie(idsStateSaveList[cookieName]);
  189. };
  190. })(jQuery);