|
|
@@ -1,7 +1,7 @@
|
|
|
/**
|
|
|
* @author: Dennis Hernández
|
|
|
* @webSite: http://djhvscf.github.io/Blog
|
|
|
- * @version: v1.0.0
|
|
|
+ * @version: v1.1.0
|
|
|
*
|
|
|
* @update zhixin wen <wenzhixin2010@gmail.com>
|
|
|
*/
|
|
|
@@ -14,51 +14,28 @@
|
|
|
sortName: 'bs.table.sortName',
|
|
|
pageNumber: 'bs.table.pageNumber',
|
|
|
pageList: 'bs.table.pageList',
|
|
|
- columns: 'bs.table.columns'
|
|
|
+ columns: 'bs.table.columns',
|
|
|
+ searchText: 'bs.table.searchText'
|
|
|
};
|
|
|
|
|
|
var cookieEnabled = function () {
|
|
|
return (navigator.cookieEnabled) ? true : false;
|
|
|
};
|
|
|
|
|
|
- var setCookie = function (tableName, cookieName, sValue, vEnd, sPath, sDomain, bSecure) {
|
|
|
- cookieName = tableName + '.' + cookieName;
|
|
|
- if (!cookieName || /^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
|
|
|
- return false;
|
|
|
+ var setCookie = function (that, cookieName, sValue, sPath, sDomain, bSecure) {
|
|
|
+ if ((!that.options.stateSave) || (!cookieEnabled()) || (that.options.stateSaveIdTable === '')) {
|
|
|
+ return;
|
|
|
}
|
|
|
- var sExpires = '',
|
|
|
- time = '';
|
|
|
|
|
|
- time = vEnd.replace(/[0-9]/, ''); //s,mi,h,d,m,y
|
|
|
- vEnd = vEnd.replace(/[A-Za-z]/, ''); //number
|
|
|
+ var tableName = that.options.stateSaveIdTable,
|
|
|
+ vEnd = that.options.stateSaveExpire;
|
|
|
|
|
|
- switch (time.toLowerCase()) {
|
|
|
- case 's':
|
|
|
- vEnd = +vEnd;
|
|
|
- break;
|
|
|
- case 'mi':
|
|
|
- vEnd = vEnd * 60;
|
|
|
- break;
|
|
|
- case 'h':
|
|
|
- vEnd = vEnd * 60 * 60;
|
|
|
- break;
|
|
|
- case 'd':
|
|
|
- vEnd = vEnd * 24 * 60 * 60;
|
|
|
- break;
|
|
|
- case 'm':
|
|
|
- vEnd = vEnd * 30 * 24 * 60 * 60;
|
|
|
- break;
|
|
|
- case 'y':
|
|
|
- vEnd = vEnd * 365 * 30 * 24 * 60 * 60;
|
|
|
- break;
|
|
|
- default:
|
|
|
- vEnd = undefined;
|
|
|
- break;
|
|
|
+ cookieName = tableName + '.' + cookieName;
|
|
|
+ if (!cookieName || /^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
- sExpires = vEnd === undefined ? '' : '; max-age=' + vEnd;
|
|
|
-
|
|
|
- document.cookie = encodeURIComponent(cookieName) + '=' + encodeURIComponent(sValue) + sExpires + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
|
|
|
+ document.cookie = encodeURIComponent(cookieName) + '=' + encodeURIComponent(sValue) + calculateExpiration(vEnd) + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '') + (bSecure ? '; secure' : '');
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
@@ -86,6 +63,37 @@
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
+ var calculateExpiration = function(vEnd) {
|
|
|
+ var time = vEnd.replace(/[0-9]/, ''); //s,mi,h,d,m,y
|
|
|
+ vEnd = vEnd.replace(/[A-Za-z]/, ''); //number
|
|
|
+
|
|
|
+ switch (time.toLowerCase()) {
|
|
|
+ case 's':
|
|
|
+ vEnd = +vEnd;
|
|
|
+ break;
|
|
|
+ case 'mi':
|
|
|
+ vEnd = vEnd * 60;
|
|
|
+ break;
|
|
|
+ case 'h':
|
|
|
+ vEnd = vEnd * 60 * 60;
|
|
|
+ break;
|
|
|
+ case 'd':
|
|
|
+ vEnd = vEnd * 24 * 60 * 60;
|
|
|
+ break;
|
|
|
+ case 'm':
|
|
|
+ vEnd = vEnd * 30 * 24 * 60 * 60;
|
|
|
+ break;
|
|
|
+ case 'y':
|
|
|
+ vEnd = vEnd * 365 * 30 * 24 * 60 * 60;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ vEnd = undefined;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return vEnd === undefined ? '' : '; max-age=' + vEnd;
|
|
|
+ }
|
|
|
+
|
|
|
$.extend($.fn.bootstrapTable.defaults, {
|
|
|
stateSave: false,
|
|
|
stateSaveExpire: '2h',
|
|
|
@@ -99,7 +107,8 @@
|
|
|
_onSort = BootstrapTable.prototype.onSort,
|
|
|
_onPageNumber = BootstrapTable.prototype.onPageNumber,
|
|
|
_onPageListChange = BootstrapTable.prototype.onPageListChange,
|
|
|
- _toggleColumn = BootstrapTable.prototype.toggleColumn;
|
|
|
+ _toggleColumn = BootstrapTable.prototype.toggleColumn,
|
|
|
+ _onSearch = BootstrapTable.prototype.onSearch;
|
|
|
|
|
|
// init save data after initTable function
|
|
|
BootstrapTable.prototype.initTable = function () {
|
|
|
@@ -125,52 +134,51 @@
|
|
|
sortOrderStateName = getCookie(this.options.stateSaveIdTable, idsStateSaveList.sortName),
|
|
|
pageNumberStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageNumber),
|
|
|
pageListStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.pageList),
|
|
|
- columnsStateSave = JSON.parse(getCookie(this.options.stateSaveIdTable, idsStateSaveList.columns));
|
|
|
+ columnsStateSave = JSON.parse(getCookie(this.options.stateSaveIdTable, idsStateSaveList.columns)),
|
|
|
+ searchStateSave = getCookie(this.options.stateSaveIdTable, idsStateSaveList.searchText);
|
|
|
|
|
|
- if (sortOrderStateSave !== undefined && sortOrderStateSave !== null) {
|
|
|
+ if (sortOrderStateSave) {
|
|
|
this.options.sortOrder = sortOrderStateSave;
|
|
|
this.options.sortName = sortOrderStateName;
|
|
|
}
|
|
|
|
|
|
- if (pageNumberStateSave !== undefined && pageNumberStateSave !== null) {
|
|
|
+ if (pageNumberStateSave) {
|
|
|
this.options.pageNumber = +pageNumberStateSave;
|
|
|
}
|
|
|
|
|
|
- if (pageListStateSave !== undefined && pageListStateSave !== null) {
|
|
|
+ if (pageListStateSave) {
|
|
|
this.options.pageSize = pageListStateSave ===
|
|
|
this.options.formatAllRows() ? pageListStateSave : +pageListStateSave;
|
|
|
}
|
|
|
|
|
|
- if (columnsStateSave !== undefined && columnsStateSave !== null) {
|
|
|
+ if (columnsStateSave) {
|
|
|
$.each(this.options.columns, function (i, column) {
|
|
|
column.visible = columnsStateSave.indexOf(i) !== -1;
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ if (searchStateSave) {
|
|
|
+ this.options.searchText = searchStateSave;
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
BootstrapTable.prototype.onSort = function () {
|
|
|
_onSort.apply(this, Array.prototype.slice.apply(arguments));
|
|
|
|
|
|
- if (this.options.stateSave && cookieEnabled() && (this.options.stateSaveIdTable !== '')) {
|
|
|
- setCookie(this.options.stateSaveIdTable, idsStateSaveList.sortOrder, this.options.sortOrder, this.options.stateSaveExpire);
|
|
|
- setCookie(this.options.stateSaveIdTable, idsStateSaveList.sortName, this.options.sortName, this.options.stateSaveExpire);
|
|
|
- }
|
|
|
+ setCookie(this, idsStateSaveList.sortOrder, this.options.sortOrder);
|
|
|
+ setCookie(this, idsStateSaveList.sortName, this.options.sortName);
|
|
|
};
|
|
|
|
|
|
BootstrapTable.prototype.onPageNumber = function () {
|
|
|
_onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
|
|
|
|
|
|
- if (this.options.stateSave && cookieEnabled() && this.options.stateSaveIdTable !== '') {
|
|
|
- setCookie(this.options.stateSaveIdTable, idsStateSaveList.pageNumber, this.options.pageNumber, this.options.stateSaveExpire);
|
|
|
- }
|
|
|
+ setCookie(this, idsStateSaveList.pageNumber, this.options.pageNumber);
|
|
|
};
|
|
|
|
|
|
BootstrapTable.prototype.onPageListChange = function () {
|
|
|
_onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
|
|
|
|
|
|
- if (this.options.stateSave && cookieEnabled() && this.options.stateSaveIdTable !== '') {
|
|
|
- setCookie(this.options.stateSaveIdTable, idsStateSaveList.pageList, this.options.pageSize, this.options.stateSaveExpire);
|
|
|
- }
|
|
|
+ setCookie(this, idsStateSaveList.pageList, this.options.pageSize);
|
|
|
};
|
|
|
|
|
|
BootstrapTable.prototype.toggleColumn = function () {
|
|
|
@@ -184,17 +192,17 @@
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- if (this.options.stateSave && cookieEnabled()) {
|
|
|
- setCookie(this.options.stateSaveIdTable, idsStateSaveList.columns, JSON.stringify(visibleColumns), this.options.stateSaveExpire);
|
|
|
- }
|
|
|
+ setCookie(this, idsStateSaveList.columns, JSON.stringify(visibleColumns));
|
|
|
};
|
|
|
|
|
|
- BootstrapTable.prototype.deleteCookie = function (cookieName) {
|
|
|
- if (cookieName === '') {
|
|
|
- return;
|
|
|
- }
|
|
|
+ BootstrapTable.prototype.onSearch = function () {
|
|
|
+ _onSearch.apply(this, Array.prototype.slice.apply(arguments));
|
|
|
|
|
|
- if (!cookieEnabled()) {
|
|
|
+ setCookie(this, idsStateSaveList.searchText, this.searchText);
|
|
|
+ }
|
|
|
+
|
|
|
+ BootstrapTable.prototype.deleteCookie = function (cookieName) {
|
|
|
+ if ((cookieName === '') || (!cookieEnabled())) {
|
|
|
return;
|
|
|
}
|
|
|
|