How to selectively save settings using stateSave?

How to selectively save settings using stateSave?

LukasLLukasL Posts: 27Questions: 11Answers: 0

Link to test case:

Object.assign(DataTable.defaults, {
     lengthMenu: [10, 20, 50, { label: 'All', value: -1 }],
     stateSave: true,
     stateDuration: 0,  // indefinite localStorage (never expires)
     stateSaveParams: function(settings, data) {
     // Keep only length (and time for validity).
         data = { time: data.time, length: data.length };
     },
});
Object.assign(DataTable.defaults, {
    lengthMenu: [10, 20, 50, { label: 'All', value: -1 }],
    stateSave: true,
    stateDuration: 0,  // indefinite localStorage (never expires)
    stateSaveParams: function(settings, data) {
        // Keep only length (entries per page); remove all other state
        const savedLength = data.length;
        Object.keys(data).forEach(key => {
            if (key !== 'length') {
                delete data[key];
            }
        });
        data.length = savedLength;  // restore it
    },
});

Debugger code (debug.datatables.net):
Error messages shown:
No errors.
Description of problem:
I want to save (or load) only length setting using state save. The search value, page number, sort order, and any other setting I do not want saved.

I tried several ways to code this but it doesn't work and I just don't know what to do. I tried googling and using AI to figure it out.

How can I accomplish this?

This question has an accepted answers - jump to answer

Answers

  • allanallan Posts: 65,565Questions: 1Answers: 10,898 Site admin
    Answer ✓

    You need to not delete the time parameter as well:

    var table = new DataTable('#example', {
      stateSave: true,
      stateSaveParams: function(settings, data) {
        // Keep only length (entries per page); remove all other state
        Object.keys(data).forEach(key => {
          if (key !== 'length' && key !== 'time') {
            delete data[key];
          }
        });
      }
    });
    

    https://live.datatables.net/pemozaze/1/edit

    Allan

Sign In or Register to comment.