Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix data table worker #5921

Merged
merged 3 commits into from
May 19, 2020
Merged

Fix data table worker #5921

merged 3 commits into from
May 19, 2020

Conversation

bramkragten
Copy link
Member

Proposed change

Restore the intended behavior of the data table filter/sort worker.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New feature (thank you!)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Example configuration

Additional information

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:

Checklist

  • The code change is tested and works locally.
  • There is no commented out code in this PR.
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

Copy link
Member

@balloob balloob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is good.

I think that we could make it slightly faster if we make the worker do some more memoization.

If worker had an API like this:

interface Worker {
  createDataSet(data: Rows[]): number;
  sortAndFilter(dataSet: number, filter, sort)
  destroyDataSet(dataSet: number)
}

We would only send the data over once, and we could still memoize on a per data set basis.

let setId = 0;
let sets = {};

function createDataSet(data: Rows[]) {
  setId++;
  sets[setId] = {
    data,
    filterData: memoizeOne(filter => filterData(data, filter)),
  }
}

@balloob
Copy link
Member

balloob commented May 18, 2020

Alternative is to use a worker per data table, so you don't have to worry about cleaning up data sets.

@bramkragten
Copy link
Member Author

bramkragten commented May 19, 2020

I like that idea, let's experiment with that in a new PR :-)

@bramkragten bramkragten merged commit d9bb40f into dev May 19, 2020
@bramkragten bramkragten deleted the datatable-worker branch May 19, 2020 11:59
@lock lock bot locked and limited conversation to collaborators May 20, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants