mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-31 11:20:09 +00:00 
			
		
		
		
	cleanup, refactoring and revision...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									906c9ff4d6
								
							
						
					
					
						commit
						69ff309718
					
				| @ -1461,23 +1461,48 @@ var BaseBrowserPrototype = { | ||||
| 	// 		...keys that are numbers for some reason are first and sorted 
 | ||||
| 	// 		by value and not by position...
 | ||||
| 	// XXX should we use .hasOwnProperty(..)???
 | ||||
| 	// XXX INLINED_BLOCKS_IN_LIST: do we need to include inlined blocks in .index???
 | ||||
| 	// 		...if yes then how??
 | ||||
| 	__item_index_cache: null, | ||||
| 	get index(){ | ||||
| 		var that = this | ||||
| 		return (this.__item_index_cache =  | ||||
| 			(this.hasOwnProperty('__item_index_cache') && this.__item_index_cache) | ||||
| 				|| this | ||||
| 					.reduce(function(index, e, i, p){ | ||||
| 						/* XXX INLINED_BLOCKS_IN_LIST | ||||
| 						// generate a unique id if needed (inlined arrays)...
 | ||||
| 						if(p[p.length-1] === undefined){ | ||||
| 							do { | ||||
| 								var k = that.__key__(e) | ||||
| 							} while(k in index) | ||||
| 							p.splice(p.length-1, 1, k) | ||||
| 						} | ||||
| 						//*/
 | ||||
| 
 | ||||
| 						var id = p = p.join('/') | ||||
| 						var c = 0 | ||||
| 						// generate a unique id...
 | ||||
| 
 | ||||
| 						/* XXX INLINED_BLOCKS_IN_LIST | ||||
| 						// store id if not set...
 | ||||
| 						!(id in e) | ||||
| 							&& (e.id = id) | ||||
| 						//*/
 | ||||
| 
 | ||||
| 						// make id unique...
 | ||||
| 						// NOTE: no need to check if e.id is unique as we already 
 | ||||
| 						// 		did this in make(..)...
 | ||||
| 						while(id in index){ | ||||
| 							id = this.__id__(p, ++c) } | ||||
| 						index[id] = e | ||||
| 
 | ||||
| 						return index | ||||
| 					}.bind(this), {},  | ||||
| 					{ iterateAll: true, includeInlinedBlocks: true })) }, | ||||
| 					{  | ||||
| 						iterateAll: true,  | ||||
| 						// XXX INLINED_BLOCKS_IN_LIST
 | ||||
| 						//includeInlinedBlocks: true,
 | ||||
| 					})) }, | ||||
| 
 | ||||
| 	// Flat item index...
 | ||||
| 	//
 | ||||
| @ -1704,6 +1729,8 @@ var BaseBrowserPrototype = { | ||||
| 	// 					: opts)
 | ||||
| 	// XXX revise if stage 2 is applicable to sections other than .items
 | ||||
| 	// XXX INLINED_ID: generate id's for inlined items (inlined arrays)...
 | ||||
| 	// 		...where do we store .id for arrays???
 | ||||
| 	// 		...should the id be human-readable, something like inlined<date> ???
 | ||||
| 	make: function(options){ | ||||
| 		var that = this | ||||
| 		options = Object.assign( | ||||
| @ -1955,7 +1982,8 @@ var BaseBrowserPrototype = { | ||||
| 	//
 | ||||
| 	// 			Ignore current .children...
 | ||||
| 	// 			 next()
 | ||||
| 	// 			 	-> children
 | ||||
| 	// 			 next(false)
 | ||||
| 	// 			 	-> [] 
 | ||||
| 	//
 | ||||
| 	// 			Force children processing synchronously...
 | ||||
| 	// 			 next(true)
 | ||||
| @ -3124,7 +3152,7 @@ var BaseBrowserPrototype = { | ||||
| 		root: null, | ||||
| 
 | ||||
| 		// renderers...
 | ||||
| 		/*/ | ||||
| 		//
 | ||||
| 		// render paths...
 | ||||
| 		elem: function(elem, index, path, options){ | ||||
| 			return path.join('/') }, | ||||
| @ -3178,6 +3206,8 @@ var BaseBrowserPrototype = { | ||||
| 		// XXX args parsing...
 | ||||
| 		// XXX
 | ||||
| 
 | ||||
| 		// NOTE: base_index and base_path only apply to the 'items' 
 | ||||
| 		// 		section...
 | ||||
| 		var args = [...arguments] | ||||
| 		var base_path = args[args.length-1] instanceof Array ? | ||||
| 		   	args.pop()  | ||||
| @ -3214,9 +3244,21 @@ var BaseBrowserPrototype = { | ||||
| 		// 		...the difference is filtering here will maintain topology...
 | ||||
| 		 | ||||
| 
 | ||||
| 		// used as a means to calculate lengths of nested blocks rendered 
 | ||||
| 		// via .render2(..)
 | ||||
| 		var l | ||||
| 		return ((render.root === this && section instanceof Array) ? | ||||
| 				// render list of sections...
 | ||||
| 				//
 | ||||
| 				// format:
 | ||||
| 				// 	{
 | ||||
| 				// 		<section-name>: [ <item>, ... ],
 | ||||
| 				// 		...
 | ||||
| 				// 	}
 | ||||
| 				//
 | ||||
| 				// NOTE: we will only render the section list on the top 
 | ||||
| 				// 		level on all lower levels only the specific section
 | ||||
| 				// 		is rendered for all nested browsers...
 | ||||
| 				section | ||||
| 					.reduce(function(res, name){ | ||||
| 						res[name] = that.render2( | ||||
| @ -3226,30 +3268,51 @@ var BaseBrowserPrototype = { | ||||
| 									section: name, | ||||
| 									nonFinalized: true, | ||||
| 								}),  | ||||
| 							render)  | ||||
| 							render,  | ||||
| 							// NOTE: base_index and base_path only apply 
 | ||||
| 							// 		to the 'items' section...
 | ||||
| 							...(name == 'items' ? | ||||
| 								[base_index, base_path] | ||||
| 								: []))  | ||||
| 						return res }, {}) | ||||
| 
 | ||||
| 				// render single section...
 | ||||
| 				: this.walk( | ||||
| 					function(e, i, p, children){ | ||||
| 						// index...
 | ||||
| 						// NOTE: since we let the nested browsers render sections
 | ||||
| 						// 		of the list, we also need to compensate for the 
 | ||||
| 						// 		number of elements they render...
 | ||||
| 						base_index += (l || []).length | ||||
| 						l = [] | ||||
| 						i += base_index | ||||
| 						l = [] | ||||
| 
 | ||||
| 						// path...
 | ||||
| 						// remove inlined item id from path...
 | ||||
| 						// NOTE: render.inline(..) can add this back if needed...
 | ||||
| 						;(e instanceof BaseBrowser || e instanceof Array) | ||||
| 							&& p.pop() | ||||
| 
 | ||||
| 						p = base_path.concat(p) | ||||
| 
 | ||||
| 						// children...
 | ||||
| 						// do not go down child browsers -- use their .render2(..) 
 | ||||
| 						;(e instanceof BaseBrowser  | ||||
| 						// NOTE: doing so will require us to manually handle some 
 | ||||
| 						// 		of the options that would otherwise be handled 
 | ||||
| 						// 		by .walk(..)...
 | ||||
| 						var inlined = (e instanceof BaseBrowser  | ||||
| 								|| e.children instanceof BaseBrowser) | ||||
| 							&& children(false) | ||||
| 							&& !children(false) | ||||
| 						// get children either via .walk(..) or .render2(..) 
 | ||||
| 						// depending on item type...
 | ||||
| 						var getChildren = function(){ | ||||
| 							return inlined ? | ||||
| 								(l = (e.children instanceof BaseBrowser ?  | ||||
| 										e.children  | ||||
| 										: e) | ||||
| 									.render2(options, render, i+1, p)) | ||||
| 								: children(true) } | ||||
| 
 | ||||
| 						// do the actual rendering...
 | ||||
| 						return ( | ||||
| 							// skip...
 | ||||
| 							// XXX 
 | ||||
| @ -3259,32 +3322,25 @@ var BaseBrowserPrototype = { | ||||
| 							// XXX need to maintain topology...
 | ||||
| 
 | ||||
| 							// inlined...
 | ||||
| 							: e instanceof BaseBrowser ? | ||||
| 								render.inline( | ||||
| 									e, | ||||
| 									l = e.render2(options, render, i+1, p),  | ||||
| 									i, p, options) | ||||
| 							: e instanceof Array ? | ||||
| 								render.inline( | ||||
| 									e, | ||||
| 									children(true),  | ||||
| 							: (e instanceof BaseBrowser || e instanceof Array) ? | ||||
| 								render.inline(e, | ||||
| 									// handling non-propageted options...
 | ||||
| 									!options.skipInlined ? | ||||
| 										getChildren() | ||||
| 										: [],  | ||||
| 									i, p, options) | ||||
| 
 | ||||
| 							// nested...
 | ||||
| 							: e.children instanceof BaseBrowser ? | ||||
| 							: 'children' in e ? | ||||
| 								render.nest(e,  | ||||
| 									// NOTE: we handle .collapsed here as the nested
 | ||||
| 									// 		browser is one level down and knows nothing 
 | ||||
| 									// 		of it...
 | ||||
| 									(options.iterateCollapsed || !e.collapsed) | ||||
| 										&& (l = e.children.render2(options, render, i+1, p)), | ||||
| 									i, p, options) | ||||
| 							: e.children instanceof Array ? | ||||
| 								render.nest(e,  | ||||
| 									children(true),  | ||||
| 									// handling non-propageted options...
 | ||||
| 									(!options.skipNested  | ||||
| 											&& (options.iterateCollapsed || !e.collapsed)) ? | ||||
| 										getChildren() | ||||
| 										: [], | ||||
| 									i, p, options) | ||||
| 
 | ||||
| 							// normal item...
 | ||||
| 							// basic item...
 | ||||
| 							: render.elem(e, i, p, options) ) | ||||
| 						}, options)) | ||||
| 			// finalize render...
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user