0.0.36 upd autocomlitev2.js

This commit is contained in:
2023-07-21 18:33:34 +03:00
parent e377eecacf
commit 86bef4df2d
2 changed files with 35 additions and 232 deletions

View File

@@ -1,68 +1,48 @@
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});
get_address_point['ctrl_name'] = el.name;
let timer = null
if (timer) {
clearTimeout(timer);
}
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')
$.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);
}
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));
// fap_txt_cont.value = name;
// fap_cont.value = id;
// }
// else if (ctrl_name.startsWith("to")) {
function selectItemAddrPoint(id, name, ctrl_name){
let tap_txt_cont = document.querySelector("#id_" + ctrl_name);
tap_txt_cont.value = name;
let tap_cont = document.querySelector("#id_" + ctrl_name.slice(0, -4));
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) {
@@ -71,36 +51,10 @@ function insertSearchList(data, ctrl_name) {
let divs = data.res_search_list;
if (divs.length > 0) {
// let ac = document.querySelector("#id_from_address_point_txt");
input_list.classList.add("show");
input_list.innerHTML = divs;
} else {
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 = [];
//
// }
}

View File

@@ -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)
}