0.0.36 upd autocomlitev2.js
This commit is contained in:
@@ -1,68 +1,48 @@
|
|||||||
function searchTown(el){
|
function searchTown(el){
|
||||||
let form = el.form;
|
let timer = null
|
||||||
let type_transport = form['type_transport'].value;
|
if (timer) {
|
||||||
let search_str = el.value;
|
clearTimeout(timer);
|
||||||
let get_address_point = new Object({type_transport, search_str});
|
}
|
||||||
get_address_point['ctrl_name'] = el.name;
|
timer = setTimeout(function(){
|
||||||
|
|
||||||
|
timer = null;
|
||||||
|
let form = el.form;
|
||||||
|
let type_transport = form['type_transport'].value;
|
||||||
|
let search_str = el.value;
|
||||||
|
let get_address_point = new Object({type_transport, search_str});
|
||||||
|
get_address_point['ctrl_name'] = el.name;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
||||||
|
url: '/ru/reference_data/get_address_point/',
|
||||||
|
type: "POST",
|
||||||
|
// async: true,
|
||||||
|
cache: false,
|
||||||
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
|
// enctype: 'json',
|
||||||
|
data: JSON.stringify(get_address_point),
|
||||||
|
success: function(data){
|
||||||
|
return insertSearchList(data, el.name + '_list')
|
||||||
|
},
|
||||||
|
error: function (data){
|
||||||
|
console.log('Error')
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
$.ajax({
|
|
||||||
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
||||||
url: '/ru/reference_data/get_address_point/',
|
|
||||||
type: "POST",
|
|
||||||
// async: true,
|
|
||||||
cache: false,
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
// enctype: 'json',
|
|
||||||
data: JSON.stringify(get_address_point),
|
|
||||||
success: function(data){
|
|
||||||
return insertSearchList(data, el.name + '_list')
|
|
||||||
},
|
|
||||||
error: function (data){
|
|
||||||
console.log('Error')
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectItemAddrPoint(id, name, ctrl_name){
|
|
||||||
//reset value
|
|
||||||
|
|
||||||
// if (ctrl_name.startsWith("from")){
|
|
||||||
// let fap_txt_cont = document.querySelector("#id_" + ctrl_name);
|
|
||||||
// let fap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
|
function selectItemAddrPoint(id, name, ctrl_name){
|
||||||
// fap_txt_cont.value = name;
|
|
||||||
// fap_cont.value = id;
|
|
||||||
// }
|
|
||||||
// else if (ctrl_name.startsWith("to")) {
|
|
||||||
let tap_txt_cont = document.querySelector("#id_" + ctrl_name);
|
let tap_txt_cont = document.querySelector("#id_" + ctrl_name);
|
||||||
tap_txt_cont.value = name;
|
tap_txt_cont.value = name;
|
||||||
let tap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
|
let tap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
|
||||||
tap_cont.value = id;
|
tap_cont.value = id;
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// // from_address_point
|
|
||||||
// let fap_txt_cont = document.querySelector("#id_from_address_point_txt");
|
|
||||||
// let fap_cont = document.querySelector("#id_from_address_point");
|
|
||||||
// fap_txt_cont.value = name;
|
|
||||||
// fap_cont.value = id;
|
|
||||||
|
|
||||||
//to_address_point
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function insertSearchList(data, ctrl_name) {
|
function insertSearchList(data, ctrl_name) {
|
||||||
@@ -71,36 +51,10 @@ function insertSearchList(data, ctrl_name) {
|
|||||||
let divs = data.res_search_list;
|
let divs = data.res_search_list;
|
||||||
|
|
||||||
if (divs.length > 0) {
|
if (divs.length > 0) {
|
||||||
// let ac = document.querySelector("#id_from_address_point_txt");
|
|
||||||
input_list.classList.add("show");
|
input_list.classList.add("show");
|
||||||
input_list.innerHTML = divs;
|
input_list.innerHTML = divs;
|
||||||
} else {
|
} else {
|
||||||
input_list.classList.remove("show");
|
input_list.classList.remove("show");
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// if (ac.value.length > 2) {
|
|
||||||
// //
|
|
||||||
// // let res_data = data.data
|
|
||||||
// //
|
|
||||||
// // var divs = res_data.map(function(r, i) {
|
|
||||||
// // airport_name = "'"+r.iata_code + " - " + r.name+"'";
|
|
||||||
// //
|
|
||||||
// // return '<div onclick="selectItemAddrPoint('+ r.id+', '+ airport_name +')" class="autocomplete-result" data-index="'+ i +'" data-id="'+ r.id + '">'
|
|
||||||
// // + '<div><b>'+ r.iata_code +'</b> - '+ r.name +'</div>'
|
|
||||||
// // + '<div class="autocomplete-location">'+ r.city__name +', '+ r.city__country__name +'</div>'
|
|
||||||
// // + '</div>';
|
|
||||||
// // });
|
|
||||||
// //
|
|
||||||
// //
|
|
||||||
// //
|
|
||||||
// //
|
|
||||||
// //
|
|
||||||
// // // .html(divs.join(''))
|
|
||||||
// // // .attr('data-highlight', selectedIndex);
|
|
||||||
// //
|
|
||||||
// } else {
|
|
||||||
// numResults = 0;
|
|
||||||
// let divs = [];
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
@@ -1,151 +0,0 @@
|
|||||||
// var options = {
|
|
||||||
// shouldSort: true,
|
|
||||||
// threshold: 0.4,
|
|
||||||
// maxPatternLength: 32,
|
|
||||||
// keys: [{
|
|
||||||
// name: 'iata',
|
|
||||||
// weight: 0.5
|
|
||||||
// }, {
|
|
||||||
// name: 'name',
|
|
||||||
// weight: 0.3
|
|
||||||
// }, {
|
|
||||||
// name: 'city',
|
|
||||||
// weight: 0.2
|
|
||||||
// }]
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// var fuse = new Fuse(airports, options)
|
|
||||||
|
|
||||||
function searchTown(el){
|
|
||||||
let form = el.form;
|
|
||||||
let type_transport = form['type_transport'].value;
|
|
||||||
let search_str = el.value;
|
|
||||||
let get_address_point = new Object({type_transport, search_str})
|
|
||||||
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
||||||
url: '/reference_data/get_address_point/',
|
|
||||||
type: "POST",
|
|
||||||
// async: true,
|
|
||||||
cache: false,
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
// enctype: 'json',
|
|
||||||
data: get_address_point,
|
|
||||||
success: function(data){
|
|
||||||
return data;
|
|
||||||
},
|
|
||||||
error: function (data){
|
|
||||||
console.log('++')
|
|
||||||
// document.querySelector(".button_register").innerHTML = data.responseJSON.html
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var ac = $('#id_from_country')
|
|
||||||
.on('click', function(e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
})
|
|
||||||
.on('keyup', search)
|
|
||||||
.on('keydown', onKeyDown);
|
|
||||||
|
|
||||||
var wrap = $('<div>')
|
|
||||||
.addClass('autocomplete-wrapper')
|
|
||||||
.insertBefore(ac)
|
|
||||||
.append(ac);
|
|
||||||
|
|
||||||
var list = $('<div>')
|
|
||||||
.addClass('autocomplete-results')
|
|
||||||
.on('click', '.autocomplete-result', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
|
||||||
selectIndex($(this).data('index'));
|
|
||||||
})
|
|
||||||
.appendTo(wrap);
|
|
||||||
|
|
||||||
$(document)
|
|
||||||
.on('mouseover', '.autocomplete-result', function(e) {
|
|
||||||
var index = parseInt($(this).data('index'), 10);
|
|
||||||
if (!isNaN(index)) {
|
|
||||||
list.attr('data-highlight', index);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on('click', clearResults);
|
|
||||||
|
|
||||||
function clearResults() {
|
|
||||||
results = [];
|
|
||||||
numResults = 0;
|
|
||||||
list.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
function selectIndex(index) {
|
|
||||||
if (results.length >= index + 1) {
|
|
||||||
ac.val(results[index].iata);
|
|
||||||
clearResults();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var results = [];
|
|
||||||
var numResults = 0;
|
|
||||||
var selectedIndex = -1;
|
|
||||||
|
|
||||||
function search(e) {
|
|
||||||
if (e.which === 38 || e.which === 13 || e.which === 40) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let ac = document.querySelector("#id_from_country")
|
|
||||||
|
|
||||||
if (ac.value.length > 0) {
|
|
||||||
// results = _.take(fuse.search(ac.val()), 7);
|
|
||||||
// numResults = results.length;
|
|
||||||
|
|
||||||
let results = searchTown(ac);
|
|
||||||
|
|
||||||
var divs = results.map()(function(r, i) {
|
|
||||||
return '<div class="autocomplete-result" data-index="'+ i +'">'
|
|
||||||
+ '<div><b>'+ r.iata +'</b> - '+ r.name +'</div>'
|
|
||||||
+ '<div class="autocomplete-location">'+ r.city +', '+ r.country +'</div>'
|
|
||||||
+ '</div>';
|
|
||||||
});
|
|
||||||
|
|
||||||
selectedIndex = -1;
|
|
||||||
list.html(divs.join(''))
|
|
||||||
.attr('data-highlight', selectedIndex);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
numResults = 0;
|
|
||||||
list.empty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onKeyDown(e) {
|
|
||||||
switch(e.which) {
|
|
||||||
case 38: // up
|
|
||||||
selectedIndex--;
|
|
||||||
if (selectedIndex <= -1) {
|
|
||||||
selectedIndex = -1;
|
|
||||||
}
|
|
||||||
list.attr('data-highlight', selectedIndex);
|
|
||||||
break;
|
|
||||||
case 13: // enter
|
|
||||||
selectIndex(selectedIndex);
|
|
||||||
break;
|
|
||||||
case 9: // enter
|
|
||||||
selectIndex(selectedIndex);
|
|
||||||
e.stopPropagation();
|
|
||||||
return;
|
|
||||||
case 40: // down
|
|
||||||
selectedIndex++;
|
|
||||||
if (selectedIndex >= numResults) {
|
|
||||||
selectedIndex = numResults-1;
|
|
||||||
}
|
|
||||||
list.attr('data-highlight', selectedIndex);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default: return; // exit this handler for other keys
|
|
||||||
}
|
|
||||||
e.stopPropagation();
|
|
||||||
e.preventDefault(); // prevent the default action (scroll / move caret)
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user