Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/core/Prefab.js
Show First 20 Lines • Show All 95 Lines • ▼ Show 20 Lines | buildTokenizer : function(config) { | ||||
if (ondemand) { | if (ondemand) { | ||||
datasource = new JX.TypeaheadOnDemandSource(config.src); | datasource = new JX.TypeaheadOnDemandSource(config.src); | ||||
} else { | } else { | ||||
datasource = new JX.TypeaheadPreloadedSource(config.src); | datasource = new JX.TypeaheadPreloadedSource(config.src); | ||||
} | } | ||||
datasource.setSortHandler( | datasource.setSortHandler( | ||||
JX.bind(datasource, JX.Prefab.sortHandler, config)); | JX.bind(datasource, JX.Prefab.sortHandler, config)); | ||||
datasource.setFilterHandler(JX.Prefab.filterClosedResults); | |||||
datasource.setTransformer(JX.Prefab.transformDatasourceResults); | datasource.setTransformer(JX.Prefab.transformDatasourceResults); | ||||
var typeahead = new JX.Typeahead( | var typeahead = new JX.Typeahead( | ||||
root, | root, | ||||
JX.DOM.find(root, 'input', 'tokenizer-input')); | JX.DOM.find(root, 'input', 'tokenizer-input')); | ||||
typeahead.setDatasource(datasource); | typeahead.setDatasource(datasource); | ||||
var tokenizer = new JX.Tokenizer(root); | var tokenizer = new JX.Tokenizer(root); | ||||
▲ Show 20 Lines • Show All 139 Lines • ▼ Show 20 Lines | sortHandler: function(config, value, list, cmp) { | ||||
} | } | ||||
return cmp(u, v); | return cmp(u, v); | ||||
}); | }); | ||||
}, | }, | ||||
/** | /** | ||||
* Filter callback for tokenizers and typeaheads which filters out closed | |||||
* or disabled objects unless they are the only options. | |||||
*/ | |||||
filterClosedResults: function(value, list) { | |||||
// Look for any open result. | |||||
var has_open = false; | |||||
var ii; | |||||
for (ii = 0; ii < list.length; ii++) { | |||||
if (!list[ii].closed) { | |||||
has_open = true; | |||||
break; | |||||
} | |||||
} | |||||
if (!has_open) { | |||||
// Everything is closed, so just use it as-is. | |||||
return list; | |||||
} | |||||
// Otherwise, only display the open results. | |||||
var results = []; | |||||
for (ii = 0; ii < list.length; ii++) { | |||||
if (!list[ii].closed) { | |||||
results.push(list[ii]); | |||||
} | |||||
} | |||||
return results; | |||||
}, | |||||
/** | |||||
* Transform results from a wire format into a usable format in a standard | * Transform results from a wire format into a usable format in a standard | ||||
* way. | * way. | ||||
*/ | */ | ||||
transformDatasourceResults: function(fields) { | transformDatasourceResults: function(fields) { | ||||
var closed = fields[9]; | var closed = fields[9]; | ||||
var closed_ui; | var closed_ui; | ||||
if (closed) { | if (closed) { | ||||
closed_ui = JX.$N( | closed_ui = JX.$N( | ||||
▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines |