Autocomplete is now visible in frontendgit add -A. Crying out of joy from the inside

This commit is contained in:
Jocavdh 2018-06-11 14:44:11 +02:00
parent 3715f0f70f
commit 7cf5677221
2 changed files with 53 additions and 39 deletions

View File

@ -161,41 +161,53 @@ $(document).ready(function()
// Autocomplete for search - Contact Joca in case of trouble // Autocomplete for search - Contact Joca in case of trouble
// Check: Code doesn't work inside document.ready function // Check: Code doesn't work inside document.ready function
// Are the other functions correctly closed? // Are the other functions correctly closed?
function split( val ) {
// Send query to server return val.split( /,\s*/ );
$('#search').on("input", function() { }
var query = this.value; function extractLast( term ) {
return split( term ).pop();
$.ajax({
url: "/autocomplete_suggestions",
data: $('form').serialize(),
type: "POST",
async: false,
success: function(response) {
//console.log("Got your query!");
} }
}); $( "#search" )
// don't navigate away from the field on tab when selecting an item
var JSONItems = ['battle']; .on( "keydown", function( event ) {
$.getJSON( "/autocomplete_suggestions", callbackFuncWithData); if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).autocomplete( "instance" ).menu.active ) {
event.preventDefault();
}
function callbackFuncWithData() { })
.autocomplete({
$("#search").autocomplete({
source:function(request, response) { source:function(request, response) {
$.getJSON( "autocomplete_suggestions", { $.getJSON("/autocomplete_suggestions",{
term: extractLast( request.term ) q: request.term, // in flask, "q" will be the argument to look for using request.args
}, response ); }, function(data) {
response(data); // matching_results from jsonify
console.log("this" + data);
});
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
console.log(this.value);
str = this.value;
var terms = str.split(" ");
console.log(terms);
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( " " );
return false;
} }
}); });
}
});
// Get autocomplete_suggestions
console.log("haha");

View File

@ -441,8 +441,9 @@ autocomplete.load() #Train markov model once, for autocomplete in search
@app.route('/autocomplete_suggestions', methods=['GET', 'POST']) @app.route('/autocomplete_suggestions', methods=['GET', 'POST'])
def autocomplete_search(): def autocomplete_search():
if request.method == 'POST': if request.method == 'GET':
query = request.form['search'] #query = request.form['search']
query = request.args.get('q')
query_tokenized = query.lower().split() query_tokenized = query.lower().split()
print(query_tokenized) print(query_tokenized)
word_1 = query_tokenized[-2] word_1 = query_tokenized[-2]
@ -458,7 +459,8 @@ def autocomplete_search():
print(session['autocomplete_suggestions']) print(session['autocomplete_suggestions'])
return Response(json.dumps(session['autocomplete_suggestions']), mimetype='application/json') return Response(json.dumps(autocomplete_suggestions), mimetype='application/json')
## STACKS! ## STACKS!