Skip to content

Commit b2e4127

Browse files
committed
fix: add a saveSorting option
1 parent a2963e7 commit b2e4127

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

src/columnmanager.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ export default class ColumnManager {
267267
.then(() => this.instance.unfreeze())
268268
.then(() => {
269269
this.fireEvent('onSortColumn', this.getColumn(colIndex));
270+
this.setSortState();
270271
});
271272
}
272273

@@ -279,9 +280,15 @@ export default class ColumnManager {
279280
}
280281
};
281282
this.sortingKey = this.options.sortingKey ? `${this.options.sortingKey}::sortedColumns` : 'sortedColumns' ;
282-
console.log(this.sortingKey);
283283
localStorage.setItem(this.sortingKey, JSON.stringify(saveSorting));
284284
}
285+
setSortState(sortOrder) {
286+
if (sortOrder === 'none') {
287+
this.sortState = false;
288+
} else {
289+
this.sortState = true;
290+
}
291+
}
285292

286293
removeColumn(colIndex) {
287294
const removedCol = this.getColumn(colIndex);
@@ -384,7 +391,6 @@ export default class ColumnManager {
384391
applySavedSortOrder() {
385392

386393
let key = this.options.sortingKey ? `${this.options.sortingKey}::sortedColumns` : 'sortedColumns' ;
387-
console.log(key);
388394
let sortingConfig = JSON.parse(localStorage.getItem(key));
389395
if (sortingConfig) {
390396
const columnsToSort = Object.values(sortingConfig);
@@ -470,7 +476,6 @@ export default class ColumnManager {
470476

471477
getDropdownListHTML() {
472478
const { headerDropdown: dropdownItems } = this.options;
473-
474479
return `
475480
<div class="dt-dropdown__list">
476481
${dropdownItems.map((d, i) => `
@@ -484,9 +489,8 @@ export default class ColumnManager {
484489
</div>
485490
`;
486491
}
487-
toggleDropdownItem(index) {
488492

493+
toggleDropdownItem(index) {
489494
$('.dt-dropdown__list', this.instance.dropdownContainer).children[index].classList.toggle('dt-hidden');
490-
491495
}
492496
}

src/datatable.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ class DataTable {
4141
if (this.options.data) {
4242
this.refresh();
4343
this.columnmanager.applyDefaultSortOrder();
44-
this.columnmanager.applySavedSortOrder();
44+
if (this.options.saveSorting) {
45+
this.setupSaveSorting();
46+
this.columnmanager.applySavedSortOrder();
47+
}
4548
}
4649
}
4750

@@ -267,6 +270,25 @@ class DataTable {
267270
translate(str, args) {
268271
return this.translationManager.translate(str, args);
269272
}
273+
setupSaveSorting() {
274+
// add options in default headerdropdown
275+
let action = {
276+
label: this.translate('Save Sorting'),
277+
action: function (column) {
278+
this.saveSorting(column.colIndex, column.sotOrder);
279+
},
280+
display: 'hidden'
281+
};
282+
this.options.headerDropdown.push(action);
283+
this.columnmanager.bindDropdown();
284+
// add events for onSortColumn
285+
this.on('onSortColumn', function (column) {
286+
this.columnmanager.toggleDropdownItem(4);
287+
if (column.sortOrder === 'none') {
288+
localStorage.removeItem(this.columnmanager.sortingKey);
289+
}
290+
});
291+
}
270292
}
271293

272294
DataTable.instances = 0;

src/defaults.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,18 @@ export default function getDefaultOptions(instance) {
1111
label: instance.translate('Sort Ascending'),
1212
action: function (column) {
1313
this.sortColumn(column.colIndex, 'asc');
14-
this.columnmanager.toggleDropdownItem(2);
1514
}
1615
},
1716
{
1817
label: instance.translate('Sort Descending'),
1918
action: function (column) {
2019
this.sortColumn(column.colIndex, 'desc');
21-
this.columnmanager.toggleDropdownItem(2);
2220
}
2321
},
24-
{
25-
label: instance.translate('Save Sorting'),
26-
action: function (column) {
27-
this.saveSorting(column.colIndex, column.sotOrder);
28-
this.columnmanager.toggleDropdownItem(2);
29-
},
30-
display: 'hidden'
31-
},
3222
{
3323
label: instance.translate('Reset sorting'),
3424
action: function (column) {
3525
this.sortColumn(column.colIndex, 'none');
36-
localStorage.setItem('sortedColumns', null);
3726
}
3827
},
3928
{

0 commit comments

Comments
 (0)