mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
added mark/unmarked navigation (keybindings.js + marks.js) and unmarked gid caching to marked.js (not sure if it is needed)...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
9598d7ab7d
commit
9dbe12ca13
@ -131,6 +131,7 @@ var saveFileBookmarks = makeFileSaver(
|
||||
|
||||
function bookmarksUpdated(){
|
||||
fileUpdated('Bookmarks')
|
||||
$('.viewer').trigger('bookmarksUpdated')
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -884,7 +884,7 @@ function makeGIDBeforeGetterFromList(get_list, restrict_to_ribbon){
|
||||
ribbon = ribbon == null && restrict_to_ribbon == true
|
||||
? getGIDRibbonIndex(gid)
|
||||
: ribbon
|
||||
var list = get_list()
|
||||
var list = get_list(ribbon)
|
||||
if(list.length == 0){
|
||||
return null
|
||||
}
|
||||
@ -1325,7 +1325,7 @@ function makeNextFromListAction(get_closest, get_list, restrict_to_ribbon){
|
||||
get_list = get_list == null ? getRibbonGIDs : get_list
|
||||
|
||||
return function(ribbon){
|
||||
var list = get_list()
|
||||
var list = get_list(ribbon)
|
||||
if(list.length == 0){
|
||||
flashIndicator('end')
|
||||
return getImage()
|
||||
|
||||
@ -312,6 +312,7 @@ var saveFileData = makeFileSaver(
|
||||
function dataUpdated(){
|
||||
if(!isViewCropped()){
|
||||
fileUpdated('Data')
|
||||
$('.viewer').trigger('dataUpdated')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -590,6 +590,18 @@ var KEYBOARD_CONFIG = {
|
||||
function(){ prevBookmark() }),
|
||||
']': doc('Next bookmarked image',
|
||||
function(){ nextBookmark() }),
|
||||
',': {
|
||||
default: doc('Previous marked image',
|
||||
function(){ prevMark() }),
|
||||
shift: doc('Previous unmarked image',
|
||||
function(){ prevUnmarked() }),
|
||||
},
|
||||
'.': {
|
||||
default: doc('Next marked image',
|
||||
function(){ nextMark() }),
|
||||
shift: doc('Next unmarked image',
|
||||
function(){ nextUnmarked() }),
|
||||
},
|
||||
'{': doc('Previous unsorted section edge',
|
||||
function(){ prevUnsortedSection() }),
|
||||
'}': doc('Next unsorted section edge',
|
||||
|
||||
69
ui/marks.js
69
ui/marks.js
@ -13,6 +13,10 @@ var MARKED_FILE_DEFAULT = 'marked.json'
|
||||
var MARKED_FILE_PATTERN = /^[0-9]*-marked.json$/
|
||||
|
||||
|
||||
// NOTE: if this is set to null, caching will be disabled...
|
||||
var _UNMARKED_CACHE = {}
|
||||
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* helpers...
|
||||
@ -61,12 +65,61 @@ function _removeMark(cls, gid, image){
|
||||
}
|
||||
|
||||
|
||||
// Invalidate unmarked image cache...
|
||||
//
|
||||
function invalidateMarksCache(){
|
||||
if(_UNMARKED_CACHE != null){
|
||||
_UNMARKED_CACHE = {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Get list of unmarked images...
|
||||
//
|
||||
// mode can be:
|
||||
// - 'ribbon'
|
||||
// - 'all'
|
||||
// - number - ribbon index
|
||||
// - null - same as all
|
||||
function getUnmarked(mode){
|
||||
mode = mode == null ? 'all' : mode
|
||||
var gids = mode == 'all' ? getLoadedGIDs()
|
||||
: typeof(mode) == typeof(123) ? getRibbonGIDs(mode)
|
||||
: getRibbonGIDs()
|
||||
mode = mode == 'ribbon' ? getRibbonIndex() : mode
|
||||
|
||||
// get the cached set...
|
||||
if(_UNMARKED_CACHE != null && mode in _UNMARKED_CACHE){
|
||||
return _UNMARKED_CACHE[mode]
|
||||
}
|
||||
|
||||
// calculate the set...
|
||||
var res = gids.filter(function(e){
|
||||
// keep only unmarked...
|
||||
return MARKED.indexOf(e) < 0
|
||||
})
|
||||
if(_UNMARKED_CACHE != null){
|
||||
_UNMARKED_CACHE[mode] = res
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
var getMarkedGIDBefore = makeGIDBeforeGetterFromList(
|
||||
function(){
|
||||
return MARKED
|
||||
})
|
||||
|
||||
|
||||
// NOTE: this is not too fast as it will filter the marked images...
|
||||
// NOTE: this is restricted to current ribbon...
|
||||
var getUnmarkedGIDBefore = makeGIDBeforeGetterFromList(
|
||||
function(ribbon){
|
||||
return getUnmarked(ribbon)
|
||||
}, true)
|
||||
|
||||
|
||||
// Make a mark toggler
|
||||
//
|
||||
// The toggler will:
|
||||
@ -485,6 +538,17 @@ var prevMark = makePrevFromListAction(
|
||||
function(){ return MARKED })
|
||||
|
||||
|
||||
var nextUnmarked = makeNextFromListAction(
|
||||
getUnmarkedGIDBefore,
|
||||
function(ribbon){
|
||||
return getUnmarked(ribbon == null ? 'ribbon' : ribbon)
|
||||
})
|
||||
var prevUnmarked = makePrevFromListAction(
|
||||
getUnmarkedGIDBefore,
|
||||
function(ribbon){
|
||||
return getUnmarked(ribbon == null ? 'ribbon' : ribbon)
|
||||
})
|
||||
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
@ -604,6 +668,8 @@ var saveFileMarks = makeFileSaver(
|
||||
|
||||
function marksUpdated(){
|
||||
fileUpdated('Marks')
|
||||
invalidateMarksCache()
|
||||
$('.viewer').trigger('marksUpdated')
|
||||
}
|
||||
|
||||
|
||||
@ -640,6 +706,9 @@ function setupMarks(viewer){
|
||||
viewer.trigger('togglingMark', [gid, action])
|
||||
})
|
||||
})
|
||||
.on('baseURLChanged', function(){
|
||||
invalidateMarksCache()
|
||||
})
|
||||
}
|
||||
SETUP_BINDINGS.push(setupMarks)
|
||||
|
||||
|
||||
@ -495,6 +495,7 @@ var saveFileTags = makeFileSaver(
|
||||
|
||||
function tagsUpdated(){
|
||||
fileUpdated('Tags')
|
||||
$('.viewer').trigger('tagsUpdated')
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user