From 86a77e59375d656208fa854155ca025ef4eec440 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 10 Dec 2015 02:26:04 +0300 Subject: [PATCH] added base-path saving to url history feature + some tweaking... Signed-off-by: Alex A. Naanou --- ui (gen4)/ui.js | 4 +-- ui (gen4)/viewer.js | 86 +++++++++++++++++++++++++++++++++------------ 2 files changed, 66 insertions(+), 24 deletions(-) diff --git a/ui (gen4)/ui.js b/ui (gen4)/ui.js index 91a5734c..a9edbe34 100755 --- a/ui (gen4)/ui.js +++ b/ui (gen4)/ui.js @@ -272,9 +272,9 @@ $(function(){ .setEmptyMsg('Loading...') - // load last url in history... + // load last loaded path... if(a.url_history && Object.keys(a.url_history).length > 0){ - a.openURLFromHistory(0) + a.loadLastSavedBasePath() // load some testing data... } else { diff --git a/ui (gen4)/viewer.js b/ui (gen4)/viewer.js index 38e3877d..45d5664f 100755 --- a/ui (gen4)/viewer.js +++ b/ui (gen4)/viewer.js @@ -277,6 +277,8 @@ actions.Actions({ }], // XXX should this be here??? + // XXX should this use .load(..) + // ...note if we use this it breaks, need to rethink... loadURLs: ['File/Load a URL list', function(lst, base){ this.clear() @@ -3607,12 +3609,23 @@ var FileSystemLoaderActions = actions.Actions({ var that = this + // NOTE: we set this before we start the load so as to let + // clients know what we are loading and not force them + // to wait to find out... + // XXX not sure if this is the way to go... + this._base_path = path + glob(path + '/*+(jpg|jpeg|png|JPG|JPEG|PNG)') + .on('error', function(err){ + console.log('!!!!', err) + }) .on('end', function(lst){ that.loadURLs(lst .map(function(p){ return normalizePath(p) }), path) - // XXX not sure if this is the way to go... + // NOTE: we set it again because .loadURLs() does a clear + // before it starts loading... + // XXX is this a bug??? that._base_path = path }) }], @@ -3696,9 +3709,6 @@ var FileSystemLoaderActions = actions.Actions({ }) -// XXX add load history to this... -// ...might be good to add a generic history feature and use that... -// XXX is this a good name??? var FileSystemLoader = module.FileSystemLoader = ImageGridFeatures.Feature({ title: '', @@ -3888,7 +3898,7 @@ var URLHistoryActions = actions.Actions({ } }], - setTopURLHistory: ['', + setTopURLHistory: ['History/', function(url){ var data = this.url_history[url] @@ -3899,7 +3909,7 @@ var URLHistoryActions = actions.Actions({ delete this.url_history[url] this.url_history[url] = data }], - pushURLToHistory: ['', + pushURLToHistory: ['History/', function(url, open, check){ var l = this.config['url-history-length'] || -1 @@ -3932,7 +3942,7 @@ var URLHistoryActions = actions.Actions({ }], // NOTE: url can be an index, 0 being the last url added to history; // negative values are also supported. - dropURLFromHistory: ['', + dropURLFromHistory: ['History/', function(url){ this.url_history = this.url_history || {} @@ -3944,7 +3954,7 @@ var URLHistoryActions = actions.Actions({ delete this.url_history[url] } }], - checkURLFromHistory: ['', + checkURLFromHistory: ['History/', function(url){ this.url_history = this.url_history || {} @@ -3968,7 +3978,7 @@ var URLHistoryActions = actions.Actions({ return true } }], - openURLFromHistory: ['', + openURLFromHistory: ['History/', function(url){ this.url_history = this.url_history || {} @@ -3987,7 +3997,7 @@ var URLHistoryActions = actions.Actions({ } } }], - clearURLHistory: ['', + clearURLHistory: ['History/', function(){ this.url_history = null }], }) @@ -4008,6 +4018,7 @@ module.URLHistory = ImageGridFeatures.Feature({ var URLHistoryLocalStorageActions = actions.Actions({ config: { 'url-history-local-storage-key': 'url-history', + 'url-history-loaded-local-storage-key': 'url-history-loaded', }, __url_history: null, @@ -4026,7 +4037,12 @@ var URLHistoryLocalStorageActions = actions.Actions({ if(this.config && key){ var history = localStorage[key] if(history){ - this.__url_history = JSON.parse(history) + try{ + this.__url_history = JSON.parse(history) + + } catch(e) { + delete localStorage[key] + } } } } @@ -4047,20 +4063,38 @@ var URLHistoryLocalStorageActions = actions.Actions({ clone: [function(){ return function(res){ res.config['url-history-local-storage-key'] = null + res.config['url-history-loaded-local-storage-key'] = null } }], - saveURLHistory: ['', + saveURLHistory: ['History/', function(){ - var key = this.config['url-history-local-storage-key'] - - if(key == null){ - return + var history = this.config['url-history-local-storage-key'] + if(history != null){ + localStorage[history] = + JSON.stringify(this.url_history) } - localStorage[key] = - JSON.stringify(this.url_history) + this.saveBasePath() }], + saveBasePath: ['History/', + function(){ + var loaded = this.config['url-history-loaded-local-storage-key'] + if(loaded != null){ + localStorage[loaded] = this.base_path + } + }], + loadLastSavedBasePath: ['History/', + function(){ + var loaded = this.config['url-history-loaded-local-storage-key'] + + if(loaded && localStorage[loaded]){ + this.openURLFromHistory(localStorage[loaded]) + + } else { + this.openURLFromHistory(0) + } + }] }) var URLHistoryLocalStorage = @@ -4078,6 +4112,9 @@ module.URLHistoryLocalStorage = ImageGridFeatures.Feature({ // NOTE: loading is done by the .url_history prop... handlers: [ + // XXX not sure if we need this... + ['load loadURLs', + function(){ this.base_path && this.saveBasePath() }], // save... ['pushURLToHistory dropURLFromHistory setTopURLHistory', function(){ @@ -4088,9 +4125,14 @@ module.URLHistoryLocalStorage = ImageGridFeatures.Feature({ function(){ delete this.__url_history - var key = this.config['url-history-local-storage-key'] - if(key){ - delete localStorage[this.config['url-history-local-storage-key']] + var history = this.config['url-history-local-storage-key'] + if(history){ + delete localStorage[history] + } + + var loaded = this.config['url-history-loaded-local-storage-key'] + if(loaded){ + delete localStorage[loaded] } }], ], @@ -4113,7 +4155,7 @@ var URLHistoryUIActions = actions.Actions({ // ...possibly connected with restoring after .preventClosing(..) // XXX need to check items... // XXX use svg icons for buttons... - listURLHistory: ['File/History', + listURLHistory: ['History|File/Show history', function(){ var that = this var parent = this.preventClosing ? this.preventClosing() : null