mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 05:10:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			169 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
/**********************************************************************
 | 
						|
* 
 | 
						|
*
 | 
						|
*
 | 
						|
**********************************************************************/
 | 
						|
 | 
						|
//var DEBUG = DEBUG != null ? DEBUG : true
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**********************************************************************
 | 
						|
* helpers...
 | 
						|
*/
 | 
						|
 | 
						|
function loadMarkedOnlyData(cmp){
 | 
						|
	cmp = cmp == null ? imageDateCmp : cmp
 | 
						|
	var cur = DATA.current
 | 
						|
	var marked = MARKED.slice().sort(cmp)
 | 
						|
	ALL_DATA = DATA
 | 
						|
	DATA = {
 | 
						|
		varsion: '2.0',
 | 
						|
		current: null,
 | 
						|
		ribbons: [
 | 
						|
			marked
 | 
						|
		],
 | 
						|
		//order: marked.slice(),
 | 
						|
		order: DATA.order,
 | 
						|
	}
 | 
						|
	DATA.current = getGIDBefore(cur, 0)
 | 
						|
	loadData()
 | 
						|
	toggleMarkesView('off')
 | 
						|
	return DATA
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// XXX name this in a better way...
 | 
						|
function loadAllImages(){
 | 
						|
	DATA = ALL_DATA
 | 
						|
	loadData()
 | 
						|
	return DATA
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**********************************************************************
 | 
						|
* Modes
 | 
						|
*/
 | 
						|
 | 
						|
var toggleMarkedOnlyView = createCSSClassToggler('.viewer', 
 | 
						|
		'marked-only-view',
 | 
						|
		function(action){
 | 
						|
			if(action == 'on'){
 | 
						|
				loadMarkedOnlyData()
 | 
						|
			} else {
 | 
						|
				loadAllImages()
 | 
						|
			}
 | 
						|
		})
 | 
						|
 | 
						|
 | 
						|
// XXX shifting images and unmarking in this mode do not work correctly...
 | 
						|
var toggleMarkesView = createCSSClassToggler('.viewer', 'marks-visible',
 | 
						|
	function(){
 | 
						|
		var cur = $('.current.image')
 | 
						|
		// current is marked...
 | 
						|
		if(cur.hasClass('marked')){
 | 
						|
			centerView(null, 'css')
 | 
						|
			return
 | 
						|
		} 
 | 
						|
		// there is a marked image in this ribbon...
 | 
						|
		var target = getImageBefore(cur, null)
 | 
						|
		if(target.length > 0){
 | 
						|
			centerView(focusImage(target), 'css')
 | 
						|
			return
 | 
						|
		}
 | 
						|
		// get marked image from other ribbons...
 | 
						|
		prevRibbon()
 | 
						|
		if($('.current.image').hasClass('marked')){
 | 
						|
			return
 | 
						|
		}
 | 
						|
		nextRibbon()
 | 
						|
	})
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**********************************************************************
 | 
						|
* Actions
 | 
						|
*/
 | 
						|
 | 
						|
var toggleImageMark = createCSSClassToggler('.current.image', 'marked',
 | 
						|
	function(action){
 | 
						|
		toggleMarkesView('on')
 | 
						|
		$('.viewer').trigger('togglingMark', [$('.current.image'), action])
 | 
						|
	})
 | 
						|
 | 
						|
 | 
						|
// mode can be:
 | 
						|
//	- 'ribbon'
 | 
						|
//	- 'all'
 | 
						|
function removeImageMarks(mode){
 | 
						|
	// remove marks from current ribbon (default)...
 | 
						|
	if(mode == 'ribbon' || mode == null){
 | 
						|
		var ribbon = getRibbon()
 | 
						|
		$('.viewer').trigger('removeingRibbonMarks', [ribbon])
 | 
						|
		return ribbon
 | 
						|
			.find('.marked')
 | 
						|
				.removeClass('marked')
 | 
						|
 | 
						|
	// remove all marks...
 | 
						|
	} else if(mode == 'all'){
 | 
						|
		$('.viewer').trigger('removeingAllMarks')
 | 
						|
		return $('.marked')
 | 
						|
			.removeClass('marked')
 | 
						|
	} 
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function markAll(mode){
 | 
						|
	// remove marks from current ribbon (default)...
 | 
						|
	if(mode == 'ribbon' || mode == null){
 | 
						|
		var ribbon = getRibbon()
 | 
						|
		$('.viewer').trigger('markingRibbon', [ribbon])
 | 
						|
		return ribbon
 | 
						|
			.find('.image:not(.marked)')
 | 
						|
				.addClass('marked')
 | 
						|
 | 
						|
	} else if(mode == 'all'){
 | 
						|
		$('.viewer').trigger('markingAll')
 | 
						|
		return $('.image:not(.marked)').addClass('marked')
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// NOTE: this only does it's work in the current ribbon...
 | 
						|
function invertImageMarks(){
 | 
						|
	var ribbon = getRibbon()
 | 
						|
	$('.viewer').trigger('invertingMarks', [ribbon])
 | 
						|
	return ribbon
 | 
						|
		.find('.image')
 | 
						|
			.toggleClass('marked')
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// Toggle marks in the current continuous section of marked or unmarked
 | 
						|
// images...
 | 
						|
// XXX need to make this dynamic data compatible...
 | 
						|
function toggleImageMarkBlock(image){
 | 
						|
	if(image == null){
 | 
						|
		image = $('.current.image')
 | 
						|
	}
 | 
						|
	//$('.viewer').trigger('togglingImageBlockMarks', [image])
 | 
						|
	// we need to invert this...
 | 
						|
	var state = toggleImageMark()
 | 
						|
	var _convert = function(){
 | 
						|
		if(toggleImageMark(this, '?') == state){
 | 
						|
			return false
 | 
						|
		}
 | 
						|
		toggleImageMark(this, state)
 | 
						|
	}
 | 
						|
	image.nextAll('.image').each(_convert)
 | 
						|
	image.prevAll('.image').each(_convert)
 | 
						|
	return state
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**********************************************************************
 | 
						|
* vim:set ts=4 sw=4 :                                                */
 |