From f61297a84fe0d9e817ccfffad6687c9644d80d23 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 25 Apr 2019 17:50:32 +0300 Subject: [PATCH] some tweaking and minor fixes... Signed-off-by: Alex A. Naanou --- ui (gen4)/lib/widget/browse2.js | 35 ++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js index 44fd30e8..e41c61c4 100755 --- a/ui (gen4)/lib/widget/browse2.js +++ b/ui (gen4)/lib/widget/browse2.js @@ -556,7 +556,7 @@ var BaseBrowserPrototype = { // // // // modes: // // false | null - normal order (default) - // // true - reverse order of levels but keep + // // true | 'tree' - reverse order of levels but keep // // topology order, i.e. containers // // will precede contained elements. // // 'flat' - full flat reverse @@ -564,7 +564,7 @@ var BaseBrowserPrototype = { // // NOTE: in 'flat' mode the client loses control over the // // order of processing via doNested(..) as it will be // // called before handleItem(..) - // reverseIteration: | 'flat', + // reverseIteration: | 'flat' | 'tree', // // // If true include inlined parent id in path... // // XXX not implemented yet -- can we implement this???... @@ -796,7 +796,28 @@ var BaseBrowserPrototype = { // // // - // For supported options see docs for .walk(..) + // options format: + // { + // // Reverse iteration order... + // // + // // modes: + // // false | null - normal order (default) + // // true | 'flat' - full flat reverse + // // 'tree' - reverse order of levels but keep + // // topology order, i.e. containers + // // will precede contained elements. + // // + // // NOTE: in 'flat' mode the client loses control over the + // // order of processing via doNested(..) as it will be + // // called before handleItem(..) + // // NOTE: the semantics of this are slightly different to how + // // this option is handled by .walk(..) + // reverseIteration: | 'flat' | 'tree', + // + // // For other supported options see docs for .walk(..) + // ... + // } + // // // By default this will not iterate items that are: // - non-iterable (item.noniterable is true) @@ -807,6 +828,7 @@ var BaseBrowserPrototype = { // - support for options // // + // // XXX make item access by index lazy... // - index nested stuff and lengths... (.sublist_length) // - stop when target reached... (control callback???) @@ -835,6 +857,13 @@ var BaseBrowserPrototype = { : [] var options = args.pop() || {} + // normalize .reverseIteration default... + options = options.reverseIteration === true ? + Object.assign({}, + options, + { reverseIteration: 'flat' }) + : options + return this.walk( function(i, path, elem, doNested){ return elem != null ?