diff --git a/Viewer/features/filesystem.js b/Viewer/features/filesystem.js index 78a5dea8..3a7fbdcf 100755 --- a/Viewer/features/filesystem.js +++ b/Viewer/features/filesystem.js @@ -3081,7 +3081,7 @@ var FileSystemWriterUIActions = actions.Actions({ buttons: [ ['Save preset', function(_, elem){ - that.exportPresetSave() + that.exportPresetSave(settings) // button press feedback... var e = elem.find('.button small') @@ -3123,9 +3123,11 @@ var FileSystemWriterUIActions = actions.Actions({ var that = this var logger = this.logger && this.logger.push('exportPresets') + // XXX should this show date??? var getName = function(preset){ return preset.name || `${ preset.mode }: "${ preset.path }"` } + var buildIndex = function(presets){ var index return [ @@ -3138,11 +3140,16 @@ var FileSystemWriterUIActions = actions.Actions({ Object.keys(index), ] } var getPreset = function(title, presets, index){ return presets[index[title]] } - // presets... var presets = that.config['export-presets'] || [] var [index, keys] = buildIndex(presets) + var updateIndex = function(){ + var [idx, k] = buildIndex(presets) + index = idx + // NOTE: keys must be updated in-place... + keys.splice(0, keys.length, ...k) } + // history... var history = that.config['export-history'] || [] var [history_index, history_keys] = buildIndex(history) @@ -3214,7 +3221,7 @@ var FileSystemWriterUIActions = actions.Actions({ return make.dialog.close() } // error... logger - && logger.emit('error', 'preset not found.') }, }) + && logger.emit('error', `preset not found: "${ title }"`) }, }) // export dialog... make.Separator({ style: { opacity: '0.1' } }) @@ -3223,10 +3230,7 @@ var FileSystemWriterUIActions = actions.Actions({ that.exportDialog() // new preset saved... .on('save-preset', function(){ - var [idx, k] = buildIndex(presets) - index = idx - // NOTE: keys must be updated in-place... - keys.splice(0, keys.length, ...k) + updateIndex() make.dialog.update() }) // close dialog on export... .close(function(evt, reason){ @@ -3243,26 +3247,52 @@ var FileSystemWriterUIActions = actions.Actions({ new_item: false, editable_items: false, buttons: [ + // view... + ['view', + function(title){ + var preset = getPreset(title, history, history_index) + preset + && that.exportDialog( + // prevent editing history... + JSON.parse(JSON.stringify( preset )) ) + // new preset saved... + .on('save-preset', function(){ + updateIndex() + make.dialog.update() }) + // close dialog on export... + .close(function(evt, reason){ + reason != 'reject' + && make.dialog.close() }) }], // to preset... ['save', - function(){ - // XXX - }], + function(title){ + var preset = getPreset(title, history, history_index) + if(preset){ + that.exportPresetSave(preset) + updateIndex() + make.dialog.update() } }], 'REMOVE', ], - // XXX export... + // export... open: function(evt, title){ - that.exportAs(getPreset(title, presets, index)) - make.dialog.close() }, - }) + var preset = getPreset(title, history, history_index) + // export only if we get a good preset... + if(preset && getName(preset) == title){ + that.exportAs(preset) + return make.dialog.close() } + // error... + logger + && logger.emit('error', `history item not found: "${ title }"`) }, }) }) + // keyboard... .run(function(){ var that = this - // XXX this does not work yet... + // XXX for some reason this does not work yet... this.keyboard.on('E', function(){ console.log('!!!!!!!!!!!!!', that.selected) }) }) + // save things after we are done... .close(function(){ // update preset order and count... that.config['export-presets'] = keys @@ -3295,7 +3325,8 @@ var FileSystemWriterUIActions = actions.Actions({ exportPresetRun: ['- File/', function(){}], - // XXX need to check item uniqueness... + // XXX need to check item uniqueness??? + // XXX add date??? exportHistoryPush: ['- File/', function(settings){ settings = settings @@ -3305,9 +3336,12 @@ var FileSystemWriterUIActions = actions.Actions({ this.config['export-history'] = this.config['export-history'] || [] // add... - // XXX need to check item uniqueness... settings - && history.push(JSON.parse(JSON.stringify( settings ))) + && history.push(Object.assign( + JSON.parse(JSON.stringify( settings )), + { + date: Date.timeStamp(true), + })) // trim the history... history.length > l && history.splice(0, history.length - l) }],