mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	working on the API...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									000379b656
								
							
						
					
					
						commit
						cf26b84076
					
				| @ -36,18 +36,52 @@ var widget = require('./widget') | |||||||
| // XXX
 | // XXX
 | ||||||
| var Items = module.items = function(){} | var Items = module.items = function(){} | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | Items.dialog = null | ||||||
|  | Items.items = null | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // Focus last created item...
 | // Focus last created item...
 | ||||||
| // XXX also would be nice to set the last created items to .last or 
 | // XXX also would be nice to set the last created items to .last or 
 | ||||||
| // 		similar in the context...
 | // 		similar in the context...
 | ||||||
| Items.focus = function(){ | Items.focus = function(){ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Embed a list...
 | 
 | ||||||
| //
 | //
 | ||||||
| Items.embed = function(){ | //	.group(make(..), ..)
 | ||||||
|  | //	// XXX not implemented yet...
 | ||||||
|  | //	.group(make(..), .., options)
 | ||||||
|  | //		-> make
 | ||||||
|  | //
 | ||||||
|  | // Example:
 | ||||||
|  | // 	make.group(
 | ||||||
|  | // 		make(1),
 | ||||||
|  | // 		make(2),
 | ||||||
|  | // 		make(3))
 | ||||||
|  | //
 | ||||||
|  | // XXX need to cleanup the args...
 | ||||||
|  | // XXX do we need to pass options to groups???
 | ||||||
|  | Items.group = function(...items){ | ||||||
|  | 	// XXX filter out non-make values....
 | ||||||
|  | 	// 		...for some reason this clears the list...
 | ||||||
|  | 	//items = items
 | ||||||
|  | 	//	.filter(function(e){
 | ||||||
|  | 	//		return e === this })
 | ||||||
|  | 	var l = this.items.length - items.length | ||||||
|  | 	this.items.splice(l, items.length, this.items.slice(l)) | ||||||
|  | 	return this | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Items.dialog = null | Items.embed = function(list, options){ | ||||||
|  | 	return this(list, options) } | ||||||
|  | 
 | ||||||
|  | Items.nest = function(item, list, options){ | ||||||
|  | 	options = options || {} | ||||||
|  | 	options.sublist = list | ||||||
|  | 	return this(item, options) | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // singular items...
 | // singular items...
 | ||||||
| @ -143,14 +177,39 @@ var BaseBrowserPrototype = { | |||||||
| 	// 			- first item of sub-list
 | 	// 			- first item of sub-list
 | ||||||
| 	// 			- connected to the sub-list but part of the parent list
 | 	// 			- connected to the sub-list but part of the parent list
 | ||||||
| 	// 		...I'm leaning to the later...
 | 	// 		...I'm leaning to the later...
 | ||||||
| 	items: null, | 	__items: null, | ||||||
|  | 	get items(){ | ||||||
|  | 		this.__items | ||||||
|  | 			|| this.make() | ||||||
|  | 		return this.__items | ||||||
|  | 	}, | ||||||
|  | 	set items(value){ | ||||||
|  | 		this.__items = value }, | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// 	.__list__(make)
 | 	// 	.__list__(make, options)
 | ||||||
| 	// 		-> undefined
 | 	// 		-> undefined
 | ||||||
| 	// 		-> list
 | 	// 		-> list
 | ||||||
| 	//
 | 	//
 | ||||||
| 	// XXX do we care about the return value???
 | 	//
 | ||||||
|  | 	// 	make(value, options)
 | ||||||
|  | 	// 		-> make
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// There are two modes of operation:
 | ||||||
|  | 	// 	1) call make(..) to create items
 | ||||||
|  | 	// 	2) return a list of items
 | ||||||
|  | 	//
 | ||||||
|  | 	// The if make is called at least once the return value is ignored.
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// Example:
 | ||||||
|  | 	// 	XXX
 | ||||||
|  | 	//
 | ||||||
|  | 	//
 | ||||||
|  | 	// NOTE: this is not designed to be called directly...
 | ||||||
|  | 	//
 | ||||||
| 	// XXX not sure how to handle options in here -- see .make(..) and its notes...
 | 	// XXX not sure how to handle options in here -- see .make(..) and its notes...
 | ||||||
| 	__list__: function(make, options){ | 	__list__: function(make, options){ | ||||||
| 		throw new Error('.__list__(..): Not implemented.') }, | 		throw new Error('.__list__(..): Not implemented.') }, | ||||||
| @ -177,9 +236,10 @@ var BaseBrowserPrototype = { | |||||||
| 		}.bind(this) | 		}.bind(this) | ||||||
| 		make.__proto__ = Items | 		make.__proto__ = Items | ||||||
| 		make.dialog = this | 		make.dialog = this | ||||||
|  | 		make.items = items | ||||||
| 
 | 
 | ||||||
| 		//var res = this.__list__(make)
 | 		//var res = this.__list__(make)
 | ||||||
| 		// XXX not sure about this...
 | 		// XXX not sure about this -- options handling...
 | ||||||
| 		var res = this.__list__(make,  | 		var res = this.__list__(make,  | ||||||
| 			options ?  | 			options ?  | ||||||
| 				Object.assign( | 				Object.assign( | ||||||
| @ -203,8 +263,11 @@ var BaseBrowserPrototype = { | |||||||
| 		return items }, | 		return items }, | ||||||
| 	// Render nested list...
 | 	// Render nested list...
 | ||||||
| 	// NOTE: to skip rendering an item/list return null...
 | 	// NOTE: to skip rendering an item/list return null...
 | ||||||
| 	renderSubList: function(item, rendered, options){ | 	renderSubList: function(sublist, item, options){ | ||||||
| 		return rendered }, | 		return sublist }, | ||||||
|  | 	// Render group...
 | ||||||
|  | 	renderGroup: function(items, options){ | ||||||
|  | 		return items }, | ||||||
| 	// Render list item...
 | 	// Render list item...
 | ||||||
| 	// NOTE: to skip rendering an item/list return null...
 | 	// NOTE: to skip rendering an item/list return null...
 | ||||||
| 	renderItem: function(item, i, options){ | 	renderItem: function(item, i, options){ | ||||||
| @ -237,6 +300,7 @@ var BaseBrowserPrototype = { | |||||||
| 		options = context.options | 		options = context.options | ||||||
| 
 | 
 | ||||||
| 		// render the items...
 | 		// render the items...
 | ||||||
|  | 		var _render | ||||||
| 		// XXX should we control render parameters (range, start, end, ...)
 | 		// XXX should we control render parameters (range, start, end, ...)
 | ||||||
| 		// 		from outside render and pass this info down to nested lists???
 | 		// 		from outside render and pass this info down to nested lists???
 | ||||||
| 		// 		...if yes how??
 | 		// 		...if yes how??
 | ||||||
| @ -244,18 +308,38 @@ var BaseBrowserPrototype = { | |||||||
| 		// 			- arg threading
 | 		// 			- arg threading
 | ||||||
| 		// 			- render context
 | 		// 			- render context
 | ||||||
| 		var items = this.items | 		var items = this.items | ||||||
| 			.map(function(item, i){ | 			.map(_render = function(item, i){ | ||||||
| 				return item.render ? | 				return ( | ||||||
|  | 					// group...
 | ||||||
|  | 					item instanceof Array ? | ||||||
|  | 						that.renderGroup( | ||||||
|  | 							item.map(_render), options) | ||||||
|  | 					// renderable item...
 | ||||||
|  | 					: item.render ? | ||||||
| 						that.renderSubList( | 						that.renderSubList( | ||||||
| 							item,  |  | ||||||
| 							item.render(context),  | 							item.render(context),  | ||||||
|  | 							item,  | ||||||
| 							options) | 							options) | ||||||
|  | 					// renderable value -- embedded list...
 | ||||||
| 					: item.value.render ? | 					: item.value.render ? | ||||||
| 						that.renderSubList( | 						that.renderSubList( | ||||||
| 							item,  |  | ||||||
| 							item.value.render(context),  | 							item.value.render(context),  | ||||||
|  | 							item,  | ||||||
| 							options) | 							options) | ||||||
| 					: that.renderItem(item, i, options) })  | 					// renderable sub-list -- nested list...
 | ||||||
|  | 					: (item.sublist || {}).render ? | ||||||
|  | 						(item.collapsed ? | ||||||
|  | 							// collapsed item...
 | ||||||
|  | 							that.renderItem(item, i, options) | ||||||
|  | 							// expanded item (grouped)...
 | ||||||
|  | 							: that.renderGroup([  | ||||||
|  | 								that.renderItem(item, i, options), | ||||||
|  | 								that.renderSubList( | ||||||
|  | 									item.sublist.render(context),  | ||||||
|  | 									item,  | ||||||
|  | 									options) ], options)) | ||||||
|  | 					// basic item...
 | ||||||
|  | 					: that.renderItem(item, i, options)) })  | ||||||
| 			.filter(function(e){ | 			.filter(function(e){ | ||||||
| 				return e != null }) | 				return e != null }) | ||||||
| 
 | 
 | ||||||
| @ -283,6 +367,20 @@ var BaseBrowserPrototype = { | |||||||
| 			.render(this, options) }, | 			.render(this, options) }, | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 	// XXX item API...
 | ||||||
|  | 	get: function(){}, | ||||||
|  | 	set: function(){}, | ||||||
|  | 	remove: function(){}, | ||||||
|  | 	sort: function(){}, | ||||||
|  | 	splice: function(){}, | ||||||
|  | 
 | ||||||
|  | 	// XXX should there return an array or a .constructor(..) instance??
 | ||||||
|  | 	forEach: function(){}, | ||||||
|  | 	map: function(){}, | ||||||
|  | 	filter: function(){}, | ||||||
|  | 	reduce: function(){}, | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| 	__init__: function(func, options){ | 	__init__: function(func, options){ | ||||||
| 		this.__list__ = func | 		this.__list__ = func | ||||||
| 		this.options = Object.assign( | 		this.options = Object.assign( | ||||||
| @ -328,9 +426,12 @@ var BrowserPrototype = { | |||||||
| 	// XXX list header
 | 	// XXX list header
 | ||||||
| 	// 		...is it the responsibility of sub-list or the parent list???
 | 	// 		...is it the responsibility of sub-list or the parent list???
 | ||||||
| 	// XXX save link to dom (???)
 | 	// XXX save link to dom (???)
 | ||||||
| 	renderSubList: function(item, rendered, options){ | 	renderSubList: function(sublist, item, options){ | ||||||
| 		// XXX expand/collapse state???
 | 		// XXX expand/collapse state???
 | ||||||
| 		return rendered }, | 		return sublist }, | ||||||
|  | 	// Render group...
 | ||||||
|  | 	renderGroup: function(items, options){ | ||||||
|  | 		return items }, | ||||||
| 	// Render list item...
 | 	// Render list item...
 | ||||||
| 	// XXX save link to dom in item.dom (???)
 | 	// XXX save link to dom in item.dom (???)
 | ||||||
| 	renderItem: function(item, i, options){ | 	renderItem: function(item, i, options){ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user