ソースを参照

Merge pull request #677 from djhvscf/master

Fix #676
文翼 10 年 前
コミット
cb46f888e7

+ 28 - 0
docs/_i18n/en/documentation/table-options.md

@@ -373,6 +373,34 @@ The table options is defined in `jQuery.fn.bootstrapTable.defaults`.
         <td>Indicate how to align the pagination detail. 'left', 'right' can be used.</td>
     </tr>
     <tr>
+        <td>paginationFirstText</td>
+        <td>data-pagination-first-text</td>
+        <td>String</td>
+        <td>'&lt;&lt;'</td>
+        <td>Indicate the icon or text to be shown in the pagination detail, the first button of the pagination detail.</td>
+    </tr>
+    <tr>
+        <td>paginationPreText</td>
+        <td>data-pagination-pre-text</td>
+        <td>String</td>
+        <td>'&lt;'</td>
+        <td>Indicate the icon or text to be shown in the pagination detail, the previous button.</td>
+    </tr>
+    <tr>
+        <td>paginationNextText</td>
+        <td>data-pagination-next-text</td>
+        <td>String</td>
+        <td>'&gt;'</td>
+        <td>Indicate the icon or text to be shown in the pagination detail, the next button.</td>
+    </tr>
+    <tr>
+        <td>paginationLastText</td>
+        <td>data-pagination-last-text</td>
+        <td>String</td>
+        <td>'&gt;&gt;'</td>
+        <td>Indicate the icon or text to be shown in the pagination detail, the last button.</td>
+    </tr>
+    <tr>
         <td>clickToSelect</td>
         <td>data-click-to-select</td>
         <td>Boolean</td>

+ 28 - 0
docs/_i18n/es/documentation/table-options.md

@@ -356,6 +356,34 @@ Las opciones de la tabla están definidas en `jQuery.fn.bootstrapTable.defaults`
         <td>Indica cómo alinear el detalle de la paginación. Se puede usar: 'left', 'right'.</td>
     </tr>
     <tr>
+        <td>paginationFirstText</td>
+        <td>data-pagination-first-text</td>
+        <td>String</td>
+        <td>'&lt;&lt;'</td>
+        <td>Indica el icono o el texto a mostrar en la paginación, el botón first del detalle de la paginación.</td>
+    </tr>
+    <tr>
+        <td>paginationPreText</td>
+        <td>data-pagination-pre-text</td>
+        <td>String</td>
+        <td>'&lt;'</td>
+        <td>Indica el icono o el texto a mostrar en la paginación, el botón previous del detalle de la paginación.</td>
+    </tr>
+    <tr>
+        <td>paginationNextText</td>
+        <td>data-pagination-next-text</td>
+        <td>String</td>
+        <td>'&gt;'</td>
+        <td>Indica el icono o el texto a mostrar en la paginación, el botón next del detalle de la paginación.</td>
+    </tr>
+    <tr>
+        <td>paginationLastText</td>
+        <td>data-pagination-last-text</td>
+        <td>String</td>
+        <td>'&gt;&gt;'</td>
+        <td>Indica el icono o el texto a mostrar en la paginación, el botón last del detalle de la paginación.</td>
+    </tr>
+    <tr>
         <td>clickToSelect</td>
         <td>data-click-to-select</td>
         <td>Boolean</td>

+ 8 - 4
src/bootstrap-table.js

@@ -158,6 +158,10 @@
         paginationHAlign: 'right', //right, left
         paginationVAlign: 'bottom', //bottom, top, both
         paginationDetailHAlign: 'left', //right, left
+        paginationFirstText: '&lt;&lt;',
+        paginationPreText: '&lt;',
+        paginationNextText: '&gt;',
+        paginationLastText: '&gt;&gt;',
         search: false,
         searchAlign: 'right',
         selectItemName: 'btSelectItem',
@@ -1061,8 +1065,8 @@
         html.push('</div>',
             '<div class="pull-' + this.options.paginationHAlign + '">',
             '<ul class="pagination' + (this.options.iconSize === undefined ? '' : ' pagination-' + this.options.iconSize) + '">',
-            '<li class="page-first"><a href="javascript:void(0)">&lt;&lt;</a></li>',
-            '<li class="page-pre"><a href="javascript:void(0)">&lt;</a></li>');
+            '<li class="page-first"><a href="javascript:void(0)">' + this.options.paginationFirstText + '</a></li>',
+            '<li class="page-pre"><a href="javascript:void(0)">' + this.options.paginationPreText + '</a></li>');
 
         if (this.totalPages < 5) {
             from = 1;
@@ -1086,8 +1090,8 @@
         }
 
         html.push(
-            '<li class="page-next"><a href="javascript:void(0)">&gt;</a></li>',
-            '<li class="page-last"><a href="javascript:void(0)">&gt;&gt;</a></li>',
+            '<li class="page-next"><a href="javascript:void(0)">' + this.options.paginationNextText + '</a></li>',
+            '<li class="page-last"><a href="javascript:void(0)">' + this.options.paginationLastText + '</a></li>',
             '</ul>',
             '</div>');
 

+ 9 - 1
src/extensions/cookie/README.md

@@ -27,4 +27,12 @@ Use Plugin: [bootstrap-table-cookie](https://github.com/wenzhixin/bootstrap-tabl
 
 * type: String
 * description: You must set this property if stateSave is enable to sets an unique cookie with an identifier for each table in your page or project. You must set this property because we need create cookies with an identifier.
-* default: ``
+* default: ``
+
+## This plugin saves
+
+* Sort order
+* Page number
+* Page number from the list
+* Visible columns
+* Search text

+ 67 - 59
src/extensions/cookie/bootstrap-table-cookie.js

@@ -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;
         }
 

+ 1 - 1
src/extensions/keyevents/bootstrap-table-keyevents.js

@@ -34,10 +34,10 @@
                     $toggle = that.$toolbar.find('button[name="toggle"]'),
                     $paginationSwitch = that.$toolbar.find('button[name="paginationSwitch"]');
 
-
                 if (document.activeElement === $search.get(0)) {
                     return true;
                 }
+
                 switch (e.keyCode) {
                     case 83: //s
                         if (!that.options.search) {