Browse Source

Add rememberOrder option to table (#2145)

feat(js): add 'rememberOrder' option
Jonatan Kłosko 8 years ago
parent
commit
aa5fc5f020
2 changed files with 15 additions and 1 deletions
  1. 7 0
      docs/_i18n/en/documentation/table-options.md
  2. 8 1
      src/bootstrap-table.js

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

@@ -84,6 +84,13 @@ The table options are defined in `jQuery.fn.bootstrapTable.defaults`.
         <td>True to get a stable sorting. We will add <code>_position</code> property to the row.</td>
         <td>True to get a stable sorting. We will add <code>_position</code> property to the row.</td>
     </tr>
     </tr>
     <tr>
     <tr>
+        <td>rememberOrder</td>
+        <td>data-remember-order</td>
+        <td>Boolean</td>
+        <td>false</td>
+        <td>Set <code>true</code> remember the order for each column.</td>
+    </tr>
+    <tr>
         <td>iconsPrefix</td>
         <td>iconsPrefix</td>
         <td>data-icons-prefix</td>
         <td>data-icons-prefix</td>
         <td>String</td>
         <td>String</td>

+ 8 - 1
src/bootstrap-table.js

@@ -286,6 +286,7 @@
         sortName: undefined,
         sortName: undefined,
         sortOrder: 'asc',
         sortOrder: 'asc',
         sortStable: false,
         sortStable: false,
+        rememberOrder: false,
         striped: false,
         striped: false,
         columns: [[]],
         columns: [[]],
         data: [],
         data: [],
@@ -1020,7 +1021,13 @@
             this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
             this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
         } else {
         } else {
             this.options.sortName = $this.data('field');
             this.options.sortName = $this.data('field');
-            this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
+            if (this.options.rememberOrder) {
+                this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
+            } else {
+                this.options.sortOrder = this.options.columns[0].filter(function(option) {
+                    return option.field === $this.data('field');
+                })[0].order;
+            }
         }
         }
         this.trigger('sort', this.options.sortName, this.options.sortOrder);
         this.trigger('sort', this.options.sortName, this.options.sortOrder);