mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-12-18 17:21:39 +00:00
several bug fixes and some refactoring...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
fe6ce10f3a
commit
57ecfb8391
@ -26,6 +26,15 @@ var widget = require('./widget')
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************/
|
||||||
|
// Helpers...
|
||||||
|
|
||||||
|
var quoteWS = function(str){
|
||||||
|
return str.replace(/(\s)/g, '\\$1')
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
// NOTE: the widget itself does not need a title, that's the job for
|
// NOTE: the widget itself does not need a title, that's the job for
|
||||||
@ -538,7 +547,7 @@ var BrowserPrototype = {
|
|||||||
/* XXX does the right thing (replaces the later .focus(..)
|
/* XXX does the right thing (replaces the later .focus(..)
|
||||||
* and .keyup(..)) but does not work in IE...
|
* and .keyup(..)) but does not work in IE...
|
||||||
.on('input', function(){
|
.on('input', function(){
|
||||||
that.filterList($(this).text())
|
that.filterList(quoteWS($(this).text()))
|
||||||
})
|
})
|
||||||
*/
|
*/
|
||||||
// only update if text changed...
|
// only update if text changed...
|
||||||
@ -583,7 +592,7 @@ var BrowserPrototype = {
|
|||||||
// handle clicks ONLY when not disabled...
|
// handle clicks ONLY when not disabled...
|
||||||
.click(function(){
|
.click(function(){
|
||||||
if(!$(this).hasClass('disabled')){
|
if(!$(this).hasClass('disabled')){
|
||||||
that.push($(this).text())
|
that.push(quoteWS($(this).text()))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.text(p)
|
.text(p)
|
||||||
@ -634,6 +643,10 @@ var BrowserPrototype = {
|
|||||||
// Get all elements containing a string...
|
// Get all elements containing a string...
|
||||||
// .filter(<string>)
|
// .filter(<string>)
|
||||||
// -> elements
|
// -> elements
|
||||||
|
// NOTE: as whitespace is treated as a pattern separator, if it
|
||||||
|
// is need explicitly simply quote it...
|
||||||
|
// 'a b c' - three sub patterns: 'a', 'b' and 'c'
|
||||||
|
// 'a\ b\ c' - single pattern
|
||||||
//
|
//
|
||||||
// Get all elements matching a regexp...
|
// Get all elements matching a regexp...
|
||||||
// .filter(<regexp>)
|
// .filter(<regexp>)
|
||||||
@ -686,6 +699,9 @@ var BrowserPrototype = {
|
|||||||
// TODO need to support glob / nested patterns...
|
// TODO need to support glob / nested patterns...
|
||||||
// ..things like /**/a*/*moo/ should list all matching items in
|
// ..things like /**/a*/*moo/ should list all matching items in
|
||||||
// a single list.
|
// a single list.
|
||||||
|
//
|
||||||
|
// XXX case sensitivity???
|
||||||
|
// XXX invalid patterns that the user did not finish inputing???
|
||||||
filter: function(pattern, a, b){
|
filter: function(pattern, a, b){
|
||||||
pattern = pattern == null ? '*' : pattern
|
pattern = pattern == null ? '*' : pattern
|
||||||
var ignore_disabled = typeof(a) == typeof(true) ? a : b
|
var ignore_disabled = typeof(a) == typeof(true) ? a : b
|
||||||
@ -730,7 +746,8 @@ var BrowserPrototype = {
|
|||||||
// NOTE: this supports several space-separated patterns.
|
// 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 pl = pattern.trim().split(/\s+/)
|
||||||
|
var pl = pattern.trim().split(/[^\\]\s/).filter(function(e){ return e.trim() != '' })
|
||||||
var filter = function(i, e){
|
var filter = function(i, e){
|
||||||
e = $(e)
|
e = $(e)
|
||||||
var t = e.text()
|
var t = e.text()
|
||||||
@ -771,6 +788,7 @@ var BrowserPrototype = {
|
|||||||
// NOTE: see .filter(..) for docs on actual filtering.
|
// NOTE: see .filter(..) for docs on actual filtering.
|
||||||
// NOTE: this does not affect any UI modes, for list filtering mode
|
// NOTE: this does not affect any UI modes, for list filtering mode
|
||||||
// see: .toggleFilter(..)...
|
// see: .toggleFilter(..)...
|
||||||
|
// XXX should this be case insensitive???
|
||||||
filterList: function(pattern){
|
filterList: function(pattern){
|
||||||
var that = this
|
var that = this
|
||||||
var browser = this.dom
|
var browser = this.dom
|
||||||
@ -785,7 +803,19 @@ var BrowserPrototype = {
|
|||||||
|
|
||||||
// basic filter...
|
// basic filter...
|
||||||
} else {
|
} else {
|
||||||
var p = RegExp('(' + pattern.trim().split(/\s+/).join('|') + ')', 'g')
|
var p = RegExp('('
|
||||||
|
+ pattern
|
||||||
|
.trim()
|
||||||
|
// ignore trailing '\'
|
||||||
|
.replace(/\\+$/, '')
|
||||||
|
.split(/[^\\]\s/)
|
||||||
|
// drop empty strings...
|
||||||
|
.filter(function(e){ return e.trim() != '' })
|
||||||
|
// remove escapes...
|
||||||
|
.map(function(e){ return e.replace(/\\(\s)/, '$1') })
|
||||||
|
.join('|')
|
||||||
|
+ ')', 'gi')
|
||||||
|
// XXX should this be case insensitive???
|
||||||
this.filter(pattern,
|
this.filter(pattern,
|
||||||
// rejected...
|
// rejected...
|
||||||
function(i, e){
|
function(i, e){
|
||||||
@ -1196,7 +1226,7 @@ var BrowserPrototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var path = this.path
|
var path = this.path
|
||||||
var txt = elem.text()
|
var txt = quoteWS(elem.text())
|
||||||
path.push(elem.text())
|
path.push(elem.text())
|
||||||
|
|
||||||
// XXX should this be before or after the actual path update???
|
// XXX should this be before or after the actual path update???
|
||||||
@ -1252,7 +1282,7 @@ var BrowserPrototype = {
|
|||||||
|
|
||||||
var path = this.path
|
var path = this.path
|
||||||
|
|
||||||
path.push(elem.text())
|
path.push(quoteWS(elem.text()))
|
||||||
|
|
||||||
var res = this.open(path)
|
var res = this.open(path)
|
||||||
|
|
||||||
@ -1387,7 +1417,7 @@ var BrowserPrototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
path = this.path
|
path = this.path
|
||||||
path.push(elem.text())
|
path.push(quoteWS(elem.text()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the options method and call it if it exists...
|
// get the options method and call it if it exists...
|
||||||
@ -1811,7 +1841,8 @@ PathListPrototype.options = {
|
|||||||
var e = make(cur, star || kp.length > 0)
|
var e = make(cur, star || kp.length > 0)
|
||||||
|
|
||||||
// setup handlers...
|
// setup handlers...
|
||||||
if(!star && data !== keys && kp.length == 0){
|
if(!star && data !== keys && kp.length == 0 && data[k] != null){
|
||||||
|
//console.log('>>> "'+ cur +'" -> "'+ k +'"')
|
||||||
e.on('open', function(){
|
e.on('open', function(){
|
||||||
return that.options.data[k].apply(this, arguments)
|
return that.options.data[k].apply(this, arguments)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -244,13 +244,14 @@ $(function(){
|
|||||||
|
|
||||||
Object.keys(paths).forEach(function(k){
|
Object.keys(paths).forEach(function(k){
|
||||||
var n = paths[k][0]
|
var n = paths[k][0]
|
||||||
k = filter ? filter(k) : k
|
var k = filter ? filter(k) : k
|
||||||
actions[k] = function(){
|
actions[k] = function(){
|
||||||
return a[n].apply(a)
|
console.log('>>>>', n, k)
|
||||||
|
return a[n]()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
var b = list(null, actions)
|
var b = L = list(null, actions)
|
||||||
var o = overlay.Overlay($('body'), b.dom)
|
var o = overlay.Overlay($('body'), b.dom)
|
||||||
|
|
||||||
b.open(function(){ o.close() })
|
b.open(function(){ o.close() })
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user