mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	reworked tagging actions...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									4e44480c1f
								
							
						
					
					
						commit
						beb960ac3a
					
				| @ -2462,7 +2462,7 @@ var DataWithTagsPrototype = { | |||||||
| 	tag: function(tags, gids){ | 	tag: function(tags, gids){ | ||||||
| 		tags = tags.constructor !== Array ? [tags] : tags | 		tags = tags.constructor !== Array ? [tags] : tags | ||||||
| 
 | 
 | ||||||
| 		gids = gids == null ? this.getImage() : gids | 		gids = gids == null || gids == 'current' ? this.getImage() : gids | ||||||
| 		gids = gids.constructor !== Array ? [gids] : gids | 		gids = gids.constructor !== Array ? [gids] : gids | ||||||
| 
 | 
 | ||||||
| 		if(this.tags == null){ | 		if(this.tags == null){ | ||||||
| @ -2490,7 +2490,7 @@ var DataWithTagsPrototype = { | |||||||
| 		} | 		} | ||||||
| 		tags = tags.constructor !== Array ? [tags] : tags | 		tags = tags.constructor !== Array ? [tags] : tags | ||||||
| 
 | 
 | ||||||
| 		gids = gids == null ? this.getImage() : gids | 		gids = gids == null || gids == 'current' ? this.getImage() : gids | ||||||
| 		gids = gids.constructor !== Array ? [gids] : gids | 		gids = gids.constructor !== Array ? [gids] : gids | ||||||
| 
 | 
 | ||||||
| 		var that = this | 		var that = this | ||||||
| @ -2514,7 +2514,7 @@ var DataWithTagsPrototype = { | |||||||
| 
 | 
 | ||||||
| 	// NOTE: this does not support multiple tags at this point...
 | 	// NOTE: this does not support multiple tags at this point...
 | ||||||
| 	toggleTag: function(tag, gids, action){ | 	toggleTag: function(tag, gids, action){ | ||||||
| 		gids = gids == null ? this.getImage() : gids | 		gids = gids == null || gids == 'current' ? this.getImage() : gids | ||||||
| 		gids = gids.constructor !== Array ? [gids] : gids | 		gids = gids.constructor !== Array ? [gids] : gids | ||||||
| 
 | 
 | ||||||
| 		// tag all...
 | 		// tag all...
 | ||||||
| @ -2569,7 +2569,7 @@ var DataWithTagsPrototype = { | |||||||
| 
 | 
 | ||||||
| 	getTags: function(gids){ | 	getTags: function(gids){ | ||||||
| 		gids = arguments.length > 1 ? [].slice.call(arguments) : gids | 		gids = arguments.length > 1 ? [].slice.call(arguments) : gids | ||||||
| 		gids = gids == null ? this.getImage() : gids | 		gids = gids == null || gids == 'current' ? this.getImage() : gids | ||||||
| 		gids = gids.constructor !== Array ? [gids] : gids | 		gids = gids.constructor !== Array ? [gids] : gids | ||||||
| 
 | 
 | ||||||
| 		if(this.tags == null){ | 		if(this.tags == null){ | ||||||
|  | |||||||
| @ -215,6 +215,8 @@ actions.Actions({ | |||||||
| 
 | 
 | ||||||
| 	// basic life-cycle actions...
 | 	// basic life-cycle actions...
 | ||||||
| 	//
 | 	//
 | ||||||
|  | 	// XXX sync tags between data and images...
 | ||||||
|  | 	// 		...but which takes priority???
 | ||||||
| 	load: [ | 	load: [ | ||||||
| 		function(d){ | 		function(d){ | ||||||
| 			this.images = images.Images(d.images) | 			this.images = images.Images(d.images) | ||||||
| @ -486,6 +488,63 @@ actions.Actions({ | |||||||
| 		}], | 		}], | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 	// tags...
 | ||||||
|  | 	//
 | ||||||
|  | 	// XXX mark updated...
 | ||||||
|  | 	tag: ['Tag image(s)', | ||||||
|  | 		function(tags, gids){ | ||||||
|  | 			gids = gids || this.current | ||||||
|  | 			gids = gids.constructor !== Array ? [gids] : gids | ||||||
|  | 			tags = tags.constructor !== Array ? [tags] : tags | ||||||
|  | 
 | ||||||
|  | 			// data...
 | ||||||
|  | 			this.data.tag(tags, gids) | ||||||
|  | 
 | ||||||
|  | 			// images...
 | ||||||
|  | 			var images = this.images | ||||||
|  | 			gids.forEach(function(gid){ | ||||||
|  | 				var img = images[gid] | ||||||
|  | 				if(img == null){ | ||||||
|  | 					img = images[gid] = {} | ||||||
|  | 				} | ||||||
|  | 				if(img.tags == null){ | ||||||
|  | 					img.tags = [] | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				img.tags = img.tags.concat(tags).unique() | ||||||
|  | 
 | ||||||
|  | 				// XXX mark updated...
 | ||||||
|  | 			}) | ||||||
|  | 		}], | ||||||
|  | 	// XXX mark updated...
 | ||||||
|  | 	untag: ['Untag image(s)', | ||||||
|  | 		function(tags, gids){ | ||||||
|  | 			gids = gids || this.current | ||||||
|  | 			gids = gids.constructor !== Array ? [gids] : gids | ||||||
|  | 			tags = tags.constructor !== Array ? [tags] : tags | ||||||
|  | 
 | ||||||
|  | 			// data...
 | ||||||
|  | 			this.data.untag(tags, gids) | ||||||
|  | 
 | ||||||
|  | 			// images...
 | ||||||
|  | 			var images = this.images | ||||||
|  | 			gids.forEach(function(gid){ | ||||||
|  | 				var img = images[gid] | ||||||
|  | 				if(img == null || img.tags == null){ | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				img.tags = img.tags.filter(function(tag){ return tags.indexOf(tag) < 0 }) | ||||||
|  | 
 | ||||||
|  | 				if(img.tags.length == 0){ | ||||||
|  | 					delete img.tags | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				// XXX mark updated...
 | ||||||
|  | 			}) | ||||||
|  | 		}], | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 	// crop...
 | 	// crop...
 | ||||||
| 	//
 | 	//
 | ||||||
| 	crop: [  | 	crop: [  | ||||||
| @ -729,6 +788,8 @@ actions.Actions(Client, { | |||||||
| 					: null | 					: null | ||||||
| 
 | 
 | ||||||
| 				this.ribbons.updateData(this.data, settings) | 				this.ribbons.updateData(this.data, settings) | ||||||
|  | 				// XXX should this be here???
 | ||||||
|  | 				this.ribbons.updateImage('*') | ||||||
| 				this.focusImage() | 				this.focusImage() | ||||||
| 
 | 
 | ||||||
| 				this.ribbons.restoreTransitions() | 				this.ribbons.restoreTransitions() | ||||||
| @ -768,8 +829,7 @@ actions.Actions(Client, { | |||||||
| 	// XXX experimental...
 | 	// XXX experimental...
 | ||||||
| 	// 		...need this to get triggered by .ribbons
 | 	// 		...need this to get triggered by .ribbons
 | ||||||
| 	// 		at this point manually triggering this will not do anything...
 | 	// 		at this point manually triggering this will not do anything...
 | ||||||
| 	updateImage: ['', | 	updateImage: ['', function(gid, image){ }], | ||||||
| 		function(gid, image){ }], |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	// General UI stuff...
 | 	// General UI stuff...
 | ||||||
| @ -1074,6 +1134,23 @@ actions.Actions(Client, { | |||||||
| 		function(target){ this.ribbons.flipHorizontal(target, 'view') }], | 		function(target){ this.ribbons.flipHorizontal(target, 'view') }], | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 	// tags...
 | ||||||
|  | 	tag: [  | ||||||
|  | 		function(tags, gids){  | ||||||
|  | 			gids = gids != null && gids.constructor !== Array ? [gids] : gids | ||||||
|  | 			return function(){ | ||||||
|  | 				this.ribbons.updateImage(gids)  | ||||||
|  | 			} | ||||||
|  | 		}], | ||||||
|  | 	untag: [ | ||||||
|  | 		function(tags, gids){  | ||||||
|  | 			gids = gids != null && gids.constructor !== Array ? [gids] : gids | ||||||
|  | 			return function(){ | ||||||
|  | 				this.ribbons.updateImage(gids)  | ||||||
|  | 			} | ||||||
|  | 		}], | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 	// group stuff...
 | 	// group stuff...
 | ||||||
| 	group: [ reloadAfter(true) ], | 	group: [ reloadAfter(true) ], | ||||||
| 	ungroup: [ reloadAfter(true) ], | 	ungroup: [ reloadAfter(true) ], | ||||||
| @ -2001,13 +2078,35 @@ function makeTagTogglerAction(tag){ | |||||||
| 			: target | 			: target | ||||||
| 		target = target.constructor !== Array ? [target] : target | 		target = target.constructor !== Array ? [target] : target | ||||||
| 
 | 
 | ||||||
| 		var res = this.data.toggleTag(tag, target, action) | 		// on...
 | ||||||
|  | 		if(action == 'on'){ | ||||||
|  | 			this.tag(tag, target) | ||||||
|  | 			var res = 'on' | ||||||
| 
 | 
 | ||||||
| 		if(action != '?' && this.ribbons != null){ | 		// off...
 | ||||||
|  | 		} else if(action == 'off'){ | ||||||
|  | 			this.untag(tag, target) | ||||||
|  | 			var res = 'off' | ||||||
|  | 
 | ||||||
|  | 		// next...
 | ||||||
|  | 		} else if(action != '?'){ | ||||||
|  | 			var res = [] | ||||||
| 			var that = this | 			var that = this | ||||||
| 			target.forEach(function(t){ | 			target.forEach(function(t){ | ||||||
| 				that.ribbons.toggleImageMark(t, tag, action) | 				if(that.data.getTags(t).indexOf(tag) < 0){ | ||||||
|  | 					that.tag(tag, t) | ||||||
|  | 					res.push('on') | ||||||
|  | 				} else { | ||||||
|  | 					that.untag(tag, t) | ||||||
|  | 					res.push('off') | ||||||
|  | 				} | ||||||
| 			}) | 			}) | ||||||
|  | 			res = res.length == 1 ? res[0] : res | ||||||
|  | 
 | ||||||
|  | 		// ?
 | ||||||
|  | 		} else if(action == '?'){ | ||||||
|  | 			var res = this.data.toggleTag(tag, target, '?') | ||||||
|  | 			res = res.length == 1 ? res[0] : res | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return res  | 		return res  | ||||||
| @ -2090,6 +2189,8 @@ module.ImageMarks = features.Feature(ImageGridFeatures, { | |||||||
| 		['updateImage', function(gid, img){ | 		['updateImage', function(gid, img){ | ||||||
| 			if(this.toggleMark(gid, '?') == 'on'){ | 			if(this.toggleMark(gid, '?') == 'on'){ | ||||||
| 				this.ribbons.toggleImageMark(gid, 'selected', 'on') | 				this.ribbons.toggleImageMark(gid, 'selected', 'on') | ||||||
|  | 			} else { | ||||||
|  | 				this.ribbons.toggleImageMark(gid, 'selected', 'off') | ||||||
| 			} | 			} | ||||||
| 		}], | 		}], | ||||||
| 	], | 	], | ||||||
| @ -2146,6 +2247,8 @@ module.ImageBookmarks = features.Feature(ImageGridFeatures, { | |||||||
| 		['updateImage', function(gid, img){ | 		['updateImage', function(gid, img){ | ||||||
| 			if(this.toggleBookmark(gid, '?') == 'on'){ | 			if(this.toggleBookmark(gid, '?') == 'on'){ | ||||||
| 				this.ribbons.toggleImageMark(gid, 'bookmark', 'on') | 				this.ribbons.toggleImageMark(gid, 'bookmark', 'on') | ||||||
|  | 			} else { | ||||||
|  | 				this.ribbons.toggleImageMark(gid, 'bookmark', 'off') | ||||||
| 			} | 			} | ||||||
| 		}], | 		}], | ||||||
| 	], | 	], | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user