mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-03 21:00:14 +00:00 
			
		
		
		
	added multi-part text filter to browser dialog...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									cca24fad85
								
							
						
					
					
						commit
						43496dafc8
					
				@ -323,11 +323,21 @@ var BrowserPrototype = {
 | 
				
			|||||||
	// elements will be searched too.
 | 
						// elements will be searched too.
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	// TODO pattern modes:
 | 
						// Extended string patterns:
 | 
				
			||||||
	// 		- lazy match
 | 
						//
 | 
				
			||||||
	// 			abc		-> *abc*		-> ^.*abc.*$
 | 
						// The pattern string is split by whitespace and each resulting 
 | 
				
			||||||
	// 			ab cd	-> *ab*cd*		-> ^.*ab.*cd.*$
 | 
						// substring is searched independently.
 | 
				
			||||||
	// 		- glob
 | 
						// Order is not considered.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// 	Examples:
 | 
				
			||||||
 | 
						// 		'aaa'			- matches any element containing 'aaa'
 | 
				
			||||||
 | 
						// 							same as: /aaa/
 | 
				
			||||||
 | 
						// 		'aa bb'			- matches any element containing both 'aa'
 | 
				
			||||||
 | 
						// 							AND 'bb' in any order.
 | 
				
			||||||
 | 
						// 							same as: /aa.*bb|bb.*aa/
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
	// TODO need to support glob / nested patterns...
 | 
						// TODO need to support glob / nested patterns...
 | 
				
			||||||
	// 		..things like /**/a*/*moo/
 | 
						// 		..things like /**/a*/*moo/
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
@ -376,17 +386,21 @@ var BrowserPrototype = {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// string...
 | 
							// string...
 | 
				
			||||||
 | 
							// NOTE: this supports several space-separated patterns.
 | 
				
			||||||
		// XXX support glob...
 | 
							// XXX support glob...
 | 
				
			||||||
		} else if(typeof(pattern) == typeof('str')){
 | 
							} else if(typeof(pattern) == typeof('str')){
 | 
				
			||||||
 | 
								var pl = pattern.trim().split(/\s+/)
 | 
				
			||||||
			var filter = function(i, e){
 | 
								var filter = function(i, e){
 | 
				
			||||||
				e = $(e)
 | 
									e = $(e)
 | 
				
			||||||
				var t = e.text()
 | 
									var t = e.text()
 | 
				
			||||||
				var i = t.search(pattern)
 | 
									for(var p=0; p < pl.length; p++){
 | 
				
			||||||
				if(!(i >= 0)){
 | 
										var i = t.search(pl[p])
 | 
				
			||||||
					if(rejected){
 | 
										if(!(i >= 0)){
 | 
				
			||||||
						rejected.call(e, i, e)
 | 
											if(rejected){
 | 
				
			||||||
 | 
												rejected.call(e, i, e)
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											return false
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
					return false
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return true
 | 
									return true
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@ -411,7 +425,7 @@ var BrowserPrototype = {
 | 
				
			|||||||
	// internal actions...
 | 
						// internal actions...
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// NOTE: this uses .filter(..) for actual filtering...
 | 
						// NOTE: this uses .filter(..) for actual filtering...
 | 
				
			||||||
	// XXX revise API...
 | 
						// XXX revise API -- seems a bit overcomplicated...
 | 
				
			||||||
	showFiltered: function(pattern){
 | 
						showFiltered: function(pattern){
 | 
				
			||||||
		var that = this
 | 
							var that = this
 | 
				
			||||||
		var browser = this.dom
 | 
							var browser = this.dom
 | 
				
			||||||
@ -426,6 +440,7 @@ var BrowserPrototype = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// basic filter...
 | 
							// basic filter...
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 | 
								var p = RegExp('(' + pattern.trim().split(/\s+/).join('|') + ')', 'g')
 | 
				
			||||||
			this.filter(pattern,
 | 
								this.filter(pattern,
 | 
				
			||||||
					// rejected...
 | 
										// rejected...
 | 
				
			||||||
					function(i, e){
 | 
										function(i, e){
 | 
				
			||||||
@ -441,10 +456,12 @@ var BrowserPrototype = {
 | 
				
			|||||||
					false)
 | 
										false)
 | 
				
			||||||
				// passed...
 | 
									// passed...
 | 
				
			||||||
				.removeClass('filtered-out')
 | 
									.removeClass('filtered-out')
 | 
				
			||||||
 | 
									// NOTE: this will mess up (clear) any highlighting that was 
 | 
				
			||||||
 | 
									// 		present before...
 | 
				
			||||||
				.each(function(_, e){
 | 
									.each(function(_, e){
 | 
				
			||||||
					e = $(e)
 | 
										e = $(e)
 | 
				
			||||||
					var t = e.text()
 | 
										var t = e.text()
 | 
				
			||||||
					e.html(t.replace(pattern, pattern.bold()))
 | 
										e.html(t.replace(p, '<b>$1</b>'))
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -753,13 +770,15 @@ var BrowserPrototype = {
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// extension methods...
 | 
						// extension methods...
 | 
				
			||||||
	// XXX this is wrong...
 | 
					
 | 
				
			||||||
	// 		...need to actually open something...
 | 
						// Open action...
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
	open: function(path){ 
 | 
						open: function(path){ 
 | 
				
			||||||
		path = path || this.path
 | 
							path = path || this.path
 | 
				
			||||||
		var m = this.options.open
 | 
							var m = this.options.open
 | 
				
			||||||
		return m ? m.apply(this, arguments) : path
 | 
							return m ? m.apply(this, arguments) : path
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// List the path...
 | 
						// List the path...
 | 
				
			||||||
	//
 | 
						//
 | 
				
			||||||
	// This will get passed a path and an item constructor and should 
 | 
						// This will get passed a path and an item constructor and should 
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user