mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-21 15:32:14 +00:00
Minor fix to static file serving
This commit is contained in:
100
RIGS/static/js/jquery.select-autocomplete.js
Normal file
100
RIGS/static/js/jquery.select-autocomplete.js
Normal file
@@ -0,0 +1,100 @@
|
||||
jQuery(function($) {
|
||||
$
|
||||
.widget(
|
||||
"custom.combobox",
|
||||
{
|
||||
_create : function() {
|
||||
this.wrapper = $("<span>").addClass(
|
||||
"custom-combobox")
|
||||
.insertAfter(this.element);
|
||||
|
||||
this.element.hide();
|
||||
this._createAutocomplete();
|
||||
},
|
||||
|
||||
_createAutocomplete : function() {
|
||||
var selected = this.element.children(":selected"), value = selected
|
||||
.val() ? selected.text() : "";
|
||||
|
||||
this.input = $("<input>").appendTo(this.wrapper)
|
||||
.val(value).attr("title", "").addClass(
|
||||
"form-control").autocomplete({
|
||||
delay : 0,
|
||||
minLength : 3,
|
||||
source : $.proxy(this, "_source")
|
||||
}).tooltip({
|
||||
tooltipClass : "ui-state-highlight"
|
||||
});
|
||||
|
||||
this._on(this.input, {
|
||||
autocompleteselect : function(event, ui) {
|
||||
ui.item.option.selected = true;
|
||||
this._trigger("select", event, {
|
||||
item : ui.item.option
|
||||
});
|
||||
},
|
||||
|
||||
autocompletechange : "_removeIfInvalid"
|
||||
});
|
||||
},
|
||||
|
||||
_source : function(request, response) {
|
||||
var matcher = new RegExp($.ui.autocomplete
|
||||
.escapeRegex(request.term), "i");
|
||||
response(this.element.children("option").map(
|
||||
function() {
|
||||
var text = $(this).text();
|
||||
if (this.value
|
||||
&& (!request.term || matcher
|
||||
.test(text)))
|
||||
return {
|
||||
label : text,
|
||||
value : text,
|
||||
option : this
|
||||
};
|
||||
}));
|
||||
},
|
||||
|
||||
_removeIfInvalid : function(event, ui) {
|
||||
|
||||
// Selected an item, nothing to do
|
||||
if (ui.item) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Search for a match (case-insensitive)
|
||||
var value = this.input.val(), valueLowerCase = value
|
||||
.toLowerCase(), valid = false;
|
||||
this.element
|
||||
.children("option")
|
||||
.each(
|
||||
function() {
|
||||
if ($(this).text()
|
||||
.toLowerCase() === valueLowerCase) {
|
||||
this.selected = valid = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Found a match, nothing to do
|
||||
if (valid) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove invalid value
|
||||
this.input.val("").attr("title",
|
||||
value + " didn't match any item").tooltip(
|
||||
"open");
|
||||
this.element.val("");
|
||||
this._delay(function() {
|
||||
this.input.tooltip("close").attr("title", "");
|
||||
}, 25000);
|
||||
this.input.data("ui-autocomplete").term = "";
|
||||
},
|
||||
|
||||
_destroy : function() {
|
||||
this.wrapper.remove();
|
||||
this.element.show();
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user