diff --git a/ui (gen4)/file.js b/ui (gen4)/file.js index 25e195ec..61698b63 100755 --- a/ui (gen4)/file.js +++ b/ui (gen4)/file.js @@ -413,12 +413,15 @@ module.buildIndex = function(index, base){ var d = data.Data.fromJSON(index.data) // buildup the data object... - d.tags = d.tags || {} + // NOTE: this is mostly to attach stuff that is stored in separate files... + + // .tags + bookmarks + selection... + d.tags = index.tags || {} d.tags.bookmark = index.bookmarked ? index.bookmarked[0] : [] d.tags.selected = index.marked || [] d.sortTags() - // current... + // .current... d.current = index.current || d.current @@ -450,6 +453,12 @@ module.buildIndex = function(index, base){ } +// XXX +var mergeIndex = +module.mergeIndex = function(index, base){ + // XXX +} + /*********************************************************************/ // Writer... diff --git a/ui (gen4)/viewer.js b/ui (gen4)/viewer.js index ac1d95e7..e6dbab1b 100755 --- a/ui (gen4)/viewer.js +++ b/ui (gen4)/viewer.js @@ -2548,7 +2548,7 @@ var ActionTreeActions = actions.Actions({ && parent.focus() }) }], - drawerTest:['Interface|Test/Drawer widget test', + drawerTest: ['Interface|Test/Drawer widget test', function(){ drawer.Drawer($('body'), $('
') @@ -2565,6 +2565,123 @@ var ActionTreeActions = actions.Actions({ focusable: true, }) }], + + // XXX needs cleanup... + // XXX need a clean constructor strategy -- this and ui.js are a mess... + showTaggedInDrawer: ['Interface|Test/Show tagged in drawer', + function(tag){ + tag = tag || 'bookmark' + var that = this + var H = '200px' + + var viewer = $('
') + .css({ + height: H, + background: 'black', + }) + var widget = drawer.Drawer($('body'), + $('
') + .css({ + position: 'relative', + height: H, + }) + .append(viewer), + { + focusable: true, + }) + + var data = this.data.crop(a.data.getTaggedByAll(tag), true) + + var b = actions.Actions() + + // used switch experimental actions on (set to true) or off (unset or false)... + //a.experimental = true + + // setup actions... + ImageGridFeatures.setup(b, [ + 'viewer-testing', + ]) + + // setup the viewer... + // XXX for some reason if we load this with data and images + // the images will not show up... + b.load({ + viewer: viewer, + }) + + // load some testing data... + // NOTE: we can (and do) load this in parts... + b + .load({ + data: data, + images: this.images, + }) + // this is needed when loading legacy sources that do not have tags + // synced... + // do not do for actual data... + //.syncTags() + .setEmptyMsg('No images bookmarked...') + .fitImage(1) + + // link navigation... + .on('focusImage', function(){ + that.focusImage(this.current) + }) + + // XXX setup keyboard... + var keyboard = require('lib/keyboard') + + // XXX move this to the .config... + var kb = { + 'Basic Control': { + pattern: '*', + + Home: { + default: 'firstImage!', + }, + End: { + default: 'lastImage!', + }, + Left: { + default: 'prevImage!', + ctrl: 'prevScreen!', + // XXX need to prevent default on mac + browser... + meta: 'prevScreen!', + }, + PgUp: 'prevScreen!', + PgDown: 'nextScreen!', + Right: { + default: 'nextImage!', + ctrl: 'nextScreen!', + // XXX need to prevent default on mac + browser... + meta: 'nextScreen!', + }, + } + } + + widget.dom + // XXX + .keydown( + keyboard.dropRepeatingkeys( + keyboard.makeKeyboardHandler( + kb, + function(k){ + window.DEBUG && console.log(k) + }, + b), + function(){ + return that.config['max-key-repeat-rate'] + })) + + // XXX STUB + window.b = b + + return b + }], + showBookmarkedInDrawer: ['Interface|Test/Show bookmarked in drawer', + function(){ this.showTaggedInDrawer('bookmark') }], + showSelectedInDrawer: ['Interface|Test/Show selected in drawer', + function(){ this.showTaggedInDrawer('selected') }], }) var ActionTree =