mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00: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