diff --git a/application/controllers/Lookup.php b/application/controllers/Lookup.php index 4b722892..70858790 100644 --- a/application/controllers/Lookup.php +++ b/application/controllers/Lookup.php @@ -106,7 +106,7 @@ class Lookup extends CI_Controller { foreach ($arCalls as $strCall) { - echo " " . $strCall . " "; + echo $strCall . " "; } } diff --git a/assets/js/sections/contesting.js b/assets/js/sections/contesting.js index 1ce2b5eb..a51498d4 100644 --- a/assets/js/sections/contesting.js +++ b/assets/js/sections/contesting.js @@ -8,6 +8,12 @@ $(document).ready(async function () { setRst($("#mode").val()); }); +var scp_data = { + request: "", + status: -1 , // -1 - never req, 0 - req in progress, 1 - request done + data: [], +}; + // Resets the logging form and deletes session from database function reset_contest_session() { $('#name').val(""); @@ -208,20 +214,35 @@ $('#start_date').change(function () { // On Key up check and suggest callsigns $("#callsign").keyup(function () { - var call = $(this).val(); + var call = $(this).val().toUpperCase(); if (call.length >= 3) { - $.ajax({ - url: 'lookup/scp', - method: 'POST', - data: { - callsign: $(this).val().toUpperCase() - }, - success: function (result) { - $('.callsign-suggestions').text(result); - highlight(call.toUpperCase()); - } - }); + if (scp_data.status < 0 || scp_data.request != call.substr(0, scp_data.request.length)) { + scp_data.status = 0; + scp_data.request = call; + scp_data.data = []; + $.ajax({ + url: 'lookup/scp', + method: 'POST', + data: { + callsign: call + }, + success: function (result) { + scp_data.status = 1; + scp_data.data = result.split(" "); + + var call = $("#callsign").val().toUpperCase(); // Might have changed while running the query... + $('.callsign-suggestions').text(scp_data.data.filter((el) => el.startsWith(call)).join(' ')); + highlight(call); + } + }); + + } else { + // Filter the already obtained list: + $('.callsign-suggestions').text(scp_data.data.filter((el) => el.startsWith(call)).join(' ')); + highlight(call); + + } // moved to blur // checkIfWorkedBefore(); var qTable = $('.qsotable').DataTable(); diff --git a/assets/js/sections/qso.js b/assets/js/sections/qso.js index 2f7c936b..9fffae0e 100644 --- a/assets/js/sections/qso.js +++ b/assets/js/sections/qso.js @@ -1,4 +1,9 @@ var lastCallsignUpdated="" +var scp_data = { + request: "", + status: -1 , // -1 - never req, 0 - req in progress, 1 - request done + data: [], +}; $( document ).ready(function() { setTimeout(function() { @@ -1019,18 +1024,31 @@ $("#callsign").on("keypress", function(e) { // On Key up check and suggest callsigns $("#callsign").keyup(function() { if ($(this).val().length >= 3) { - $('.callsign-suggest').show(); - $callsign = $(this).val().replace('Ø', '0'); - $.ajax({ - url: 'lookup/scp', - method: 'POST', - data: { - callsign: $callsign.toUpperCase() - }, - success: function(result) { - $('.callsign-suggestions').text(result); - } - }); + $callsign = $(this).val().replace('Ø', '0').toUpperCase(); + + if (scp_data.status < 0 || scp_data.request != $callsign.substr(0, scp_data.request.length)) { + scp_data.status = 0; + scp_data.request = $callsign; + scp_data.data = []; + $.ajax({ + url: 'lookup/scp', + method: 'POST', + data: { + callsign: $callsign + }, + success: function(result) { + scp_data.status = 1; + scp_data.data = result.split(" "); + + var call = $("#callsign").val().replace('Ø', '0').toUpperCase(); + $('.callsign-suggestions').text(scp_data.data.filter((el) => el.startsWith(call)).join(' ')); + $('.callsign-suggest').show(); + } + }); + } else { + $('.callsign-suggestions').text(scp_data.data.filter((el) => el.startsWith($callsign)).join(' ')); + $('.callsign-suggest').show(); + } } });