From 9dde5d03268d274a766d088bd74488f8449f2cd5 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sat, 2 Mar 2019 01:50:04 +0300 Subject: [PATCH] restructured the id generation... Signed-off-by: Alex A. Naanou --- ui (gen4)/lib/widget/browse2.js | 57 +++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js index 3a8ee278..4577c8c2 100755 --- a/ui (gen4)/lib/widget/browse2.js +++ b/ui (gen4)/lib/widget/browse2.js @@ -338,6 +338,36 @@ var BaseBrowserPrototype = { __list__: function(make, options){ throw new Error('.__list__(..): Not implemented.') }, + // Key getter/generator... + // + // XXX should these include the path??? + // XXX is JSON the best key format??? + __key__: function(item){ + return item.id + // value is a browser -> generate an unique id... + // XXX identify via structure... + || (item.value instanceof Browser + && this.__id__()) + || JSON.stringify(item.value) }, + + // ID generator... + // + // Format: + // "" + // " " + // + // XXX do a better id... + // XXX not sure about the logic of this, should this take an item as + // input and return an id??? + // ...should this check for uniqueness??? + __id__: function(prefix){ + // id prefix... + return (prefix || '') + // separator... + + (prefix ? ' ' : '') + // date... + + Date.now() }, + // Make .items... // @@ -365,16 +395,6 @@ var BaseBrowserPrototype = { var old_index = this.item_index || {} var new_index = this.item_index = {} - // XXX do a better id... - // XXX should this be a method??? - var makeID = function(id){ - // id prefix... - return (id || '') - // separator... - + (id && ' ') - // date... - + Date.now() } - // item constructor... // // make(value[, options]) @@ -397,15 +417,13 @@ var BaseBrowserPrototype = { args.pop(), opts) : opts + opts = Object.assign( + {}, + opts, + {value: value}) // item id... - // XXX should these include the path??? - var key = opts.id - // value is a browser -> generate an unique id... - // XXX identify via structure... - || (value instanceof Browser - && makeID()) - || JSON.stringify(value) + var key = this.__key__(opts) var id_changed = (old_index[key] || {}).id_changed // handle duplicate ids -> err if found... @@ -436,7 +454,7 @@ var BaseBrowserPrototype = { new_index[key].id_changed = true // create a new key... - k = makeID(key) + k = this.__id__(key) } key = opts.id = k @@ -448,8 +466,7 @@ var BaseBrowserPrototype = { : old_index[key] || {}, // XXX ??? options || {}, - opts, - {value: value}) + opts) // store the item... items.push(item)