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(){
|
function bookmarksUpdated(){
|
||||||
fileUpdated('Bookmarks')
|
fileUpdated('Bookmarks')
|
||||||
|
$('.viewer').trigger('bookmarksUpdated')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -884,7 +884,7 @@ function makeGIDBeforeGetterFromList(get_list, restrict_to_ribbon){
|
|||||||
ribbon = ribbon == null && restrict_to_ribbon == true
|
ribbon = ribbon == null && restrict_to_ribbon == true
|
||||||
? getGIDRibbonIndex(gid)
|
? getGIDRibbonIndex(gid)
|
||||||
: ribbon
|
: ribbon
|
||||||
var list = get_list()
|
var list = get_list(ribbon)
|
||||||
if(list.length == 0){
|
if(list.length == 0){
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -1325,7 +1325,7 @@ function makeNextFromListAction(get_closest, get_list, restrict_to_ribbon){
|
|||||||
get_list = get_list == null ? getRibbonGIDs : get_list
|
get_list = get_list == null ? getRibbonGIDs : get_list
|
||||||
|
|
||||||
return function(ribbon){
|
return function(ribbon){
|
||||||
var list = get_list()
|
var list = get_list(ribbon)
|
||||||
if(list.length == 0){
|
if(list.length == 0){
|
||||||
flashIndicator('end')
|
flashIndicator('end')
|
||||||
return getImage()
|
return getImage()
|
||||||
|
|||||||
@ -312,6 +312,7 @@ var saveFileData = makeFileSaver(
|
|||||||
function dataUpdated(){
|
function dataUpdated(){
|
||||||
if(!isViewCropped()){
|
if(!isViewCropped()){
|
||||||
fileUpdated('Data')
|
fileUpdated('Data')
|
||||||
|
$('.viewer').trigger('dataUpdated')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -590,6 +590,18 @@ var KEYBOARD_CONFIG = {
|
|||||||
function(){ prevBookmark() }),
|
function(){ prevBookmark() }),
|
||||||
']': doc('Next bookmarked image',
|
']': doc('Next bookmarked image',
|
||||||
function(){ nextBookmark() }),
|
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',
|
'{': doc('Previous unsorted section edge',
|
||||||
function(){ prevUnsortedSection() }),
|
function(){ prevUnsortedSection() }),
|
||||||
'}': doc('Next unsorted section edge',
|
'}': 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$/
|
var MARKED_FILE_PATTERN = /^[0-9]*-marked.json$/
|
||||||
|
|
||||||
|
|
||||||
|
// NOTE: if this is set to null, caching will be disabled...
|
||||||
|
var _UNMARKED_CACHE = {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* helpers...
|
* 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(
|
var getMarkedGIDBefore = makeGIDBeforeGetterFromList(
|
||||||
function(){
|
function(){
|
||||||
return MARKED
|
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
|
// Make a mark toggler
|
||||||
//
|
//
|
||||||
// The toggler will:
|
// The toggler will:
|
||||||
@ -485,6 +538,17 @@ var prevMark = makePrevFromListAction(
|
|||||||
function(){ return MARKED })
|
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(){
|
function marksUpdated(){
|
||||||
fileUpdated('Marks')
|
fileUpdated('Marks')
|
||||||
|
invalidateMarksCache()
|
||||||
|
$('.viewer').trigger('marksUpdated')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -640,6 +706,9 @@ function setupMarks(viewer){
|
|||||||
viewer.trigger('togglingMark', [gid, action])
|
viewer.trigger('togglingMark', [gid, action])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
.on('baseURLChanged', function(){
|
||||||
|
invalidateMarksCache()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
SETUP_BINDINGS.push(setupMarks)
|
SETUP_BINDINGS.push(setupMarks)
|
||||||
|
|
||||||
|
|||||||
@ -495,6 +495,7 @@ var saveFileTags = makeFileSaver(
|
|||||||
|
|
||||||
function tagsUpdated(){
|
function tagsUpdated(){
|
||||||
fileUpdated('Tags')
|
fileUpdated('Tags')
|
||||||
|
$('.viewer').trigger('tagsUpdated')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user