diff options
author | Michael Leibman <michael.leibman@gmail.com> | 2012-02-04 20:29:42 -0800 |
---|---|---|
committer | Michael Leibman <michael.leibman@gmail.com> | 2012-02-04 20:29:42 -0800 |
commit | c95128f8b3586c74773221f8b5531c60bc63339b (patch) | |
tree | 3e5b360d63c175bd01c56d34292a3a42588cf942 /slick.dataview.js | |
parent | c9c9f3a24268729135bbd31baf1aa53b980223d5 (diff) | |
download | SlickGrid-c95128f8b3586c74773221f8b5531c60bc63339b.zip SlickGrid-c95128f8b3586c74773221f8b5531c60bc63339b.tar.gz SlickGrid-c95128f8b3586c74773221f8b5531c60bc63339b.tar.bz2 |
Made DataView filter inlining optional (default is false).
Diffstat (limited to 'slick.dataview.js')
-rw-r--r-- | slick.dataview.js | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/slick.dataview.js b/slick.dataview.js index 2889b94..0bb8a0b 100644 --- a/slick.dataview.js +++ b/slick.dataview.js @@ -23,7 +23,8 @@ var self = this; var defaults = { - groupItemMetadataProvider: null + groupItemMetadataProvider: null, + inlineFilters: false }; @@ -526,14 +527,45 @@ return fn; } + function uncompiledFilter(items, args) { + var retval = [], idx = 0; + + for (var i = 0, ii = items.length; i < ii; i++) { + if (filter(items[i], args)) { + retval[idx++] = items[i]; + } + } + + return retval; + } + + function uncompiledFilterWithCaching(items, args, cache) { + var retval = [], idx = 0, item; + + for (var i = 0, ii = items.length; i < ii; i++) { + item = items[i]; + if (cache[i]) { + retval[idx++] = item; + } else if (filter(item, args)) { + retval[idx++] = item; + cache[i] = true; + } + } + + return retval; + } + function getFilteredAndPagedItems(items) { if (filter) { + var batchFilter = options.inlineFilters ? compiledFilter : uncompiledFilter; + var batchFilterWithCaching = options.inlineFilters ? compiledFilterWithCaching : uncompiledFilterWithCaching; + if (refreshHints.isFilterNarrowing) { - filteredItems = compiledFilter(filteredItems, filterArgs); + filteredItems = batchFilter(filteredItems, filterArgs); } else if (refreshHints.isFilterExpanding) { - filteredItems = compiledFilterWithCaching(items, filterArgs, filterCache); + filteredItems = batchFilterWithCaching(items, filterArgs, filterCache); } else if (!refreshHints.isFilterUnchanged) { - filteredItems = compiledFilter(items, filterArgs); + filteredItems = batchFilter(items, filterArgs); } } else { // special case: if not filtering and not paging, the resulting |