Improved www.ttss.krakow.pl
Jacek Kowalski
2017-03-16 e95a732c2cc06a8db2fb45d2d842fc5d5542e33a
Wait 100 ms before requesting stop name autocompletion
1 files modified
39 ■■■■■ changed files
index.js 39 ●●●●● patch | view | raw | blame | history
index.js
@@ -12,6 +12,7 @@
var stop_name_form = stop_name.form;
var stop_name_autocomplete = document.getElementById('stop-name-autocomplete');
var stop_name_autocomplete_xhr;
var stop_name_autocomplete_timer;
var times_xhr;
var times_timer;
@@ -495,6 +496,26 @@
    }
}
function stop_autocomplete() {
    if(stop_name_autocomplete_xhr) stop_name_autocomplete_xhr.abort();
    stop_name_autocomplete_xhr = $.get(
        ttss_base + '/lookup/autocomplete/json'
            + '?query=' + encodeURIComponent(stop_name.value)
    ).done(function(data) {
        deleteChildren(stop_name_autocomplete);
        for(var i = 1, il = data.length; i < il; i++) {
            if(data[i].id > 6000) continue;
            var opt = document.createElement('option');
            opt.value = data[i].id;
            setText(opt, decodeEntities(data[i].name));
            stop_name_autocomplete.appendChild(opt);
        }
        if(!stop_id) setText(refresh_text, lang.select_stop_click_go);
    }).fail(fail_ajax);
}
function init() {
    if(!window.jQuery) {
        fail(lang.jquery_not_loaded);
@@ -512,23 +533,9 @@
    
    stop_name.addEventListener('input', function(e) {
        if(!stop_name.value) return;
        if(stop_name_autocomplete_xhr) stop_name_autocomplete_xhr.abort();
        if(stop_name_autocomplete_timer) clearTimeout(stop_name_autocomplete_timer);
        
        stop_name_autocomplete_xhr = $.get(
            ttss_base + '/lookup/autocomplete/json'
                + '?query=' + encodeURIComponent(stop_name.value)
        ).done(function(data) {
            deleteChildren(stop_name_autocomplete);
            for(var i = 1, il = data.length; i < il; i++) {
                if(data[i].id > 6000) continue;
                var opt = document.createElement('option');
                opt.value = data[i].id;
                setText(opt, decodeEntities(data[i].name));
                stop_name_autocomplete.appendChild(opt);
            }
            if(!stop_id) setText(refresh_text, lang.select_stop_click_go);
        }).fail(fail_ajax);
        stop_name_autocomplete_timer = setTimeout(stop_autocomplete, 100);
    });
    
    setText(refresh_text, lang.enter_stop_name_to_begin);