mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| /**********************************************************************
 | |
| * 
 | |
| *
 | |
| *
 | |
| **********************************************************************/
 | |
| ((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
 | |
| (function(require){ var module={} // make module AMD/node compatible...
 | |
| /*********************************************************************/
 | |
| 
 | |
| var actions = require('lib/actions')
 | |
| var features = require('lib/features')
 | |
| 
 | |
| var core = require('features/core')
 | |
| 
 | |
| 
 | |
| 
 | |
| /*********************************************************************/
 | |
| 
 | |
| // XXX things we need to do to collections:
 | |
| // 		- add images from current state
 | |
| // 		- remove images (from collection)
 | |
| // 		- check what collections is image in...
 | |
| var CollectionActions = actions.Actions({
 | |
| 
 | |
| 	collections: null,
 | |
| 
 | |
| 	get collection(){
 | |
| 		return this.location.collection },
 | |
| 
 | |
| 
 | |
| 	// XXX might be a good idea to make collection loading part of the 
 | |
| 	// 		.load(..) protocol...
 | |
| 	// 		...this could be done via a url suffix, as a shorthand.
 | |
| 	// 		something like:
 | |
| 	// 			/path/to/index:collection
 | |
| 	// 				-> /path/to/index/sub/path/.ImageGrid/collections/collection
 | |
| 	// XXX loading collections by direct path would require us to look 
 | |
| 	// 		in the containing index for missing parts (*images.json, ...)
 | |
| 	// XXX saving a local collection would require us to save to two 
 | |
| 	// 		locations:
 | |
| 	// 			- collection specific stuff (data) to collection path
 | |
| 	// 			- global stuff (images, tags, ...) to base index...
 | |
| 	// XXX need to .reload() here...
 | |
| 	loadCollection: ['-Collections/',
 | |
| 		function(collection){
 | |
| 			if(collection == null 
 | |
| 					|| this.collections == null 
 | |
| 					|| !(collection in this.collections)){
 | |
| 				return
 | |
| 			}
 | |
| 
 | |
| 			this.crop(this.collections[collection].data)
 | |
| 
 | |
| 			// XXX need to clear this when exiting crop...
 | |
| 			this.location.collection = collection
 | |
| 		}],
 | |
| 	saveCollection: ['- Collections/Save collection',
 | |
| 		core.doc`Save current state to collection`,
 | |
| 		function(collection){
 | |
| 			collection = collection || this.location.collection
 | |
| 
 | |
| 			// XXX should there be a default???
 | |
| 			if(collection == null){
 | |
| 				return
 | |
| 			}
 | |
| 
 | |
| 			var collections = this.collections = this.collections || {}
 | |
| 
 | |
| 			collections[collection] = {
 | |
| 				title: collection,
 | |
| 
 | |
| 				data: this.data.clone(),
 | |
| 			}
 | |
| 		}],
 | |
| 
 | |
| 
 | |
| 	inCollections: ['- Image/',
 | |
| 		core.doc`Get list of collections containing item`,
 | |
| 		function(gid){
 | |
| 		}],
 | |
| 	toCollection: ['- Collections/',
 | |
| 		core.doc`Add items to collection`,
 | |
| 		function(gids, collection){
 | |
| 			var that = this
 | |
| 
 | |
| 			gids = gids instanceof Array ? gids : [gids]
 | |
| 			gids = gids
 | |
| 				.map(function(gid){ 
 | |
| 					return gid in that.data.ribbons ? 
 | |
| 						// when adding a ribbon gid expand to images...
 | |
| 						that.data.ribbons[gid].compact()
 | |
| 						: [gid] })
 | |
| 				.reduce(function(a, b){ return a.concat(b) }, [])
 | |
| 
 | |
| 			console.log('>>>', gids)
 | |
| 
 | |
| 			// XXX
 | |
| 		}],
 | |
| 
 | |
| 
 | |
| })
 | |
| 
 | |
| var Collection = 
 | |
| module.Collection = core.ImageGridFeatures.Feature({
 | |
| 	title: '',
 | |
| 	doc: '',
 | |
| 
 | |
| 	tag: 'collections',
 | |
| 	depends: [
 | |
| 		'base',
 | |
| 		'crop',
 | |
| 	],
 | |
| 
 | |
| 	actions: CollectionActions, 
 | |
| 
 | |
| 	handlers: [],
 | |
| })
 | |
| 
 | |
| 
 | |
| 
 | |
| /**********************************************************************
 | |
| * vim:set ts=4 sw=4 :                               */ return module })
 |