Version 5 works quite well with small/medium data sets, but it's dog slow with big data sets (500+ items). Given the fact that there are some other issues that must be fixed as well, and those require some refactoring too, and the UI part needs to be redone with CSS3 (flex box), there is no reason to limit the project to what is done currently. A complete rewrite will be easier.
Those are the main features that will be worked on:
Faster data structure
Of course, the current data structure that is used to initialize the directive is fine and should probably be kept as it is, but internally some other type of data structure should be used that will allow a faster data access.
The data structure should allow doing the following operations in a fast way:
Walk the entire data set (if possible, without recursions)
Probably a separate data structure that would help in the process of checking which items are checked will be required.
ES6?
Decide if Babel/Typescript should be used
Searching
Searching is yet another important feature. We can't iterate over each item and perform a regex. Therefore, something else (like http://lunrjs.com/) should be used.
UI
The UI should be rewritten with flex box.
Backwards compatibility
Backwards compatibility should be kept. There is no reason to break it (but it could be broken if needed).
The only thing that isn't implemented yet from here is the lunrjs integration. Everything else is done. I'm closing this and opening a lunrjs dedicated issue.
Version 5 works quite well with small/medium data sets, but it's dog slow with big data sets (500+ items). Given the fact that there are some other issues that must be fixed as well, and those require some refactoring too, and the UI part needs to be redone with CSS3 (flex box), there is no reason to limit the project to what is done currently. A complete rewrite will be easier.
Those are the main features that will be worked on:
Faster data structure
Of course, the current data structure that is used to initialize the directive is fine and should probably be kept as it is, but internally some other type of data structure should be used that will allow a faster data access.
The data structure should allow doing the following operations in a fast way:
Also, use http://weaver.js.org/ to make the entire process faster.
Faster tick checker
Probably a separate data structure that would help in the process of checking which items are checked will be required.
ES6?
Decide if Babel/Typescript should be used
Searching
Searching is yet another important feature. We can't iterate over each item and perform a regex. Therefore, something else (like http://lunrjs.com/) should be used.
UI
The UI should be rewritten with flex box.
Backwards compatibility
Backwards compatibility should be kept. There is no reason to break it (but it could be broken if needed).