mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 05:10:07 +00:00 
			
		
		
		
	some cleanup and refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									04a5b6a8ff
								
							
						
					
					
						commit
						625ef2a74f
					
				@ -362,12 +362,8 @@ if(window.CEF_dumpJSON != null){
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	window._PREVIW_CREATE_QUEUE = null
 | 
						window._PREVIW_CREATE_QUEUE = null
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// Queued version of makeImagesPreviews(...)
 | 
						// Queued version of makeImagesPreviews(...)
 | 
				
			||||||
	//
 | 
					 | 
				
			||||||
	// XXX check if we are leaking the tail...
 | 
					 | 
				
			||||||
	// NOTE: this will remove the old deferred if it us resolved, thus
 | 
					 | 
				
			||||||
	// 		clearing the "log" of previous operations, unless keep_log
 | 
					 | 
				
			||||||
	// 		is set to true...
 | 
					 | 
				
			||||||
	window.makeImagesPreviewsQ = function(gids, sizes, mode){
 | 
						window.makeImagesPreviewsQ = function(gids, sizes, mode){
 | 
				
			||||||
		gids = gids == null ? getClosestGIDs() : gids
 | 
							gids = gids == null ? getClosestGIDs() : gids
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -379,8 +375,10 @@ if(window.CEF_dumpJSON != null){
 | 
				
			|||||||
			var queue = _PREVIW_CREATE_QUEUE
 | 
								var queue = _PREVIW_CREATE_QUEUE
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// attach the workers to the queue...
 | 
				
			||||||
		$.each(gids, function(_, gid){
 | 
							$.each(gids, function(_, gid){
 | 
				
			||||||
			queue.enqueue(makeImagePreviews, gid, sizes, mode)
 | 
								queue.enqueue(makeImagePreviews, gid, sizes, mode)
 | 
				
			||||||
 | 
									// XXX do we need to report seporate previews???
 | 
				
			||||||
				//.progress(function(state){ queue.notify(state) })
 | 
									//.progress(function(state){ queue.notify(state) })
 | 
				
			||||||
				.always(function(){ queue.notify(gid, 'done') })
 | 
									.always(function(){ queue.notify(gid, 'done') })
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
				
			|||||||
@ -708,22 +708,23 @@ function updateImagesOrientation(gids, no_update_loaded){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// queued version of updateImagesOrientation(...)
 | 
					// queued version of updateImagesOrientation(...)
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// NOTE: this will ignore errors.
 | 
					// XXX do we need to auto-stop this???
 | 
				
			||||||
function updateImagesOrientationQ(gids, no_update_loaded){
 | 
					function updateImagesOrientationQ(gids, no_update_loaded){
 | 
				
			||||||
	gids = gids == null ? getClosestGIDs() : gids
 | 
						gids = gids == null ? getClosestGIDs() : gids
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var queue = makeDeferredsQ().start()
 | 
						var queue = makeDeferredsQ().start()
 | 
				
			||||||
	var last = null
 | 
						var last = null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// attach workers to queue...
 | 
				
			||||||
	$.each(gids, function(_, gid){
 | 
						$.each(gids, function(_, gid){
 | 
				
			||||||
		last = queue.enqueue(updateImageOrientation, gid, no_update_loaded)
 | 
							last = queue.enqueue(updateImageOrientation, gid, no_update_loaded)
 | 
				
			||||||
			.done(function(o){ queue.notify(gid, 'done') })
 | 
								.done(function(){ queue.notify(gid, 'done') })
 | 
				
			||||||
			.fail(function(){ queue.notify(gid, 'fail') })
 | 
								.fail(function(){ queue.notify(gid, 'fail') })
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// auto-stop the queue...
 | 
				
			||||||
	if(last != null){
 | 
						if(last != null){
 | 
				
			||||||
		// auto-stop the queue...
 | 
							// NOTE: this is mostly for reporting...
 | 
				
			||||||
		// NOTE: this is mostly for the saik of reporting...
 | 
					 | 
				
			||||||
		// XXX do we need to auto-stop this???
 | 
							// XXX do we need to auto-stop this???
 | 
				
			||||||
		last.done(function(){
 | 
							last.done(function(){
 | 
				
			||||||
			queue.resolve()
 | 
								queue.resolve()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										204
									
								
								ui/lib/jli.js
									
									
									
									
									
								
							
							
						
						
									
										204
									
								
								ui/lib/jli.js
									
									
									
									
									
								
							@ -570,6 +570,114 @@ jQuery.fn.sortChildren = function(func){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/************************************************** Deferred utils ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Deferred worker queue
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This will either create a new queue or attach to the tail of an 
 | 
				
			||||||
 | 
					// existing queue (deferred) if given.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This will return a deferred object with several extensions:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 		.enqueue(worker, ...)
 | 
				
			||||||
 | 
					// 			Add a worker to the queue.
 | 
				
			||||||
 | 
					// 			A worker is triggered by the previous worker in queue 
 | 
				
			||||||
 | 
					// 			getting resolved. 
 | 
				
			||||||
 | 
					// 			NOTE: A worker must return a deferred.
 | 
				
			||||||
 | 
					// 			NOTE: all the arguments to this except for the first (the 
 | 
				
			||||||
 | 
					// 				worker itself) will be passed to the worker when it is 
 | 
				
			||||||
 | 
					// 				called.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 		.start()
 | 
				
			||||||
 | 
					// 			Start the first worker.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 		.kill()
 | 
				
			||||||
 | 
					// 			Stop the queue, preventing any new workers from starting.
 | 
				
			||||||
 | 
					// 			NOTE: this will not kill the currently running worker.
 | 
				
			||||||
 | 
					// 			NOTE: after killing a queue it can not be restarted.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// 		.isWorking()
 | 
				
			||||||
 | 
					// 			will return true if there is at least one worker still not
 | 
				
			||||||
 | 
					// 			resolved, false otherwise.
 | 
				
			||||||
 | 
					// 			NOTE: if the queue is killed, this will always return false.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// NOTE: the queue is not started by default.
 | 
				
			||||||
 | 
					// NOTE: one queue is guaranteed to work in a sequence, to run several 
 | 
				
			||||||
 | 
					// 		pipelines in parallel use two or more queues.
 | 
				
			||||||
 | 
					// NOTE: running queues in parallel depends on the actual context in
 | 
				
			||||||
 | 
					// 		use (browser/node.js/...).
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// XXX should this be restartable???
 | 
				
			||||||
 | 
					// XXX check if this leaks used nodes...
 | 
				
			||||||
 | 
					function makeDeferredsQ(first){
 | 
				
			||||||
 | 
						first = first == null ? $.Deferred() : first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var last = first
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// XXX make this a deferred-like cleanly, rather than by monkey patching...
 | 
				
			||||||
 | 
						var queue = $.Deferred()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Add a worker to queue...
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// NOTE: .enqueue(...) accepts a worker and any number of the arguments
 | 
				
			||||||
 | 
						// 		to be passed to the worker when it's its turn.
 | 
				
			||||||
 | 
						// NOTE: the worker must porduce a deffered/promice.
 | 
				
			||||||
 | 
						queue.enqueue = function(deffered){
 | 
				
			||||||
 | 
							var cur = $.Deferred()
 | 
				
			||||||
 | 
							var args = Array.apply(null, arguments).slice(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							last.done(function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// see if we are killed...
 | 
				
			||||||
 | 
								if(queue.state() == 'resolved'){
 | 
				
			||||||
 | 
									// this will kill the queue as we continue only on success...
 | 
				
			||||||
 | 
									cur.reject() 
 | 
				
			||||||
 | 
									return
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// do the work...
 | 
				
			||||||
 | 
								deffered.apply(null, args)
 | 
				
			||||||
 | 
									.done(function(o){ 
 | 
				
			||||||
 | 
										cur.resolve(o) 
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
									.fail(function(){ 
 | 
				
			||||||
 | 
										cur.resolve('fail') 
 | 
				
			||||||
 | 
									})
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							last = cur
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return cur
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Start the work...
 | 
				
			||||||
 | 
						queue.start = function(){
 | 
				
			||||||
 | 
							first.resolve()
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Kill the queue...
 | 
				
			||||||
 | 
						queue.kill = function(){
 | 
				
			||||||
 | 
							this.resolve()
 | 
				
			||||||
 | 
							return this
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Report work state...
 | 
				
			||||||
 | 
						// XXX make this a propper state, or integrate into the deferred in 
 | 
				
			||||||
 | 
						// 		a more natural way...
 | 
				
			||||||
 | 
						queue.isWorking = function(){
 | 
				
			||||||
 | 
							if(queue.state() != 'resolved' && last.state() != 'resolved'){
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return queue
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**************************************************** JS utilities ***/
 | 
					/**************************************************** JS utilities ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
String.prototype.capitalize = function(){
 | 
					String.prototype.capitalize = function(){
 | 
				
			||||||
@ -678,102 +786,6 @@ function assyncCall(func){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Deferred worker queue
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This will either create a new queue or attach to the tail of an 
 | 
					 | 
				
			||||||
// existing queue (deferred) if given.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This will return a deferred object with several extensions:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		.enqueue(worker, ...)
 | 
					 | 
				
			||||||
// 			Add a worker to the queue.
 | 
					 | 
				
			||||||
// 			A worker is executed when the previous worker is resolved.
 | 
					 | 
				
			||||||
// 			A worker must return a deferred.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		.start()
 | 
					 | 
				
			||||||
// 			Start the first worker.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		.kill()
 | 
					 | 
				
			||||||
// 			Stop the queue, preventing any new workers from starting.
 | 
					 | 
				
			||||||
// 			NOTE: this will not kill the currently running worker.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 		.isWorking()
 | 
					 | 
				
			||||||
// 			will return true if there is at least one worker still not
 | 
					 | 
				
			||||||
// 			resolved, false otherwise.
 | 
					 | 
				
			||||||
// 			NOTE: if the queue is killed, this will always return false.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// NOTE: one queue is guaranteed to work in a sequence, to run several 
 | 
					 | 
				
			||||||
// 		pipelines in parallel use two or more queues.
 | 
					 | 
				
			||||||
// NOTE: running queues in parallel depends on the actual context in
 | 
					 | 
				
			||||||
// 		use (browser/node.js/...).
 | 
					 | 
				
			||||||
function makeDeferredsQ(first){
 | 
					 | 
				
			||||||
	first = first == null ? $.Deferred() : first
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var last = first
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// XXX make this a deferred-like cleanly, rather than by monkey patching...
 | 
					 | 
				
			||||||
	var queue = $.Deferred()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Add a worker to queue...
 | 
					 | 
				
			||||||
	//
 | 
					 | 
				
			||||||
	// NOTE: .enqueue(...) accepts a worker and any number of the arguments
 | 
					 | 
				
			||||||
	// 		to be passed to the worker when it's its turn.
 | 
					 | 
				
			||||||
	// NOTE: the worker must porduce a deffered/promice.
 | 
					 | 
				
			||||||
	queue.enqueue = function(deffered){
 | 
					 | 
				
			||||||
		var cur = $.Deferred()
 | 
					 | 
				
			||||||
		var args = Array.apply(null, arguments).slice(1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		last.done(function(){
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// see if we are killed...
 | 
					 | 
				
			||||||
			if(queue.state() == 'resolved'){
 | 
					 | 
				
			||||||
				// this will kill the queue as we continue only on success...
 | 
					 | 
				
			||||||
				cur.reject() 
 | 
					 | 
				
			||||||
				return
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// do the work...
 | 
					 | 
				
			||||||
			deffered.apply(null, args)
 | 
					 | 
				
			||||||
				.done(function(o){ 
 | 
					 | 
				
			||||||
					cur.resolve(o) 
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
				.fail(function(){ 
 | 
					 | 
				
			||||||
					cur.resolve('fail') 
 | 
					 | 
				
			||||||
				})
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		last = cur
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return cur
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Start the work...
 | 
					 | 
				
			||||||
	queue.start = function(){
 | 
					 | 
				
			||||||
		first.resolve()
 | 
					 | 
				
			||||||
		return this
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Kill the queue...
 | 
					 | 
				
			||||||
	queue.kill = function(){
 | 
					 | 
				
			||||||
		this.resolve()
 | 
					 | 
				
			||||||
		return this
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Report work state...
 | 
					 | 
				
			||||||
	// XXX make this a propper state, or integrate into the deferred in 
 | 
					 | 
				
			||||||
	// 		a more natural way...
 | 
					 | 
				
			||||||
	queue.isWorking = function(){
 | 
					 | 
				
			||||||
		if(queue.state() != 'resolved' && last.state() != 'resolved'){
 | 
					 | 
				
			||||||
			return true
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return queue
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**********************************************************************
 | 
					/**********************************************************************
 | 
				
			||||||
* vim:set ts=4 sw=4 :                                                */
 | 
					* vim:set ts=4 sw=4 :                                                */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user