// Callsign always has focus on load $("#callsign").focus(); // Init serial sent as 1 when loading page $("#exch_serial_s").val(1); $( document ).ready(function() { restoreContestSession(); setRst($("#mode").val()); }); // This erases the contest logging session which is stored in localStorage function reset_contest_session() { $('#name').val(""); $('.callsign-suggestions').text(""); $('#callsign').val(""); $('#comment').val(""); $("#exch_serial_s").val("1"); $("#exch_serial_r").val(""); $('#exch_sent').val(""); $('#exch_recv').val(""); $("#exch_gridsquare_r").val(""); $("#exch_gridsquare_s").val(""); $("#callsign").focus(); setRst($("#mode").val()); $("#exchangetype").val("None"); $("#contestname").val("Other").change(); $(".contest_qso_table_contents").empty(); localStorage.removeItem("contestid"); localStorage.removeItem("exchangetype"); localStorage.removeItem("qso"); localStorage.removeItem("exchangereceived"); localStorage.removeItem("exchangesent"); localStorage.removeItem("serialreceived"); localStorage.removeItem("serialsent"); localStorage.removeItem("gridsquarereceived"); localStorage.removeItem("gridsquaresent"); } // Storing the contestid in contest session $('#contestname').change(function() { localStorage.setItem("contestid", $("#contestname").val()); }); // Storing the exchange type in contest session $('#exchangetype').change(function() { localStorage.setItem("exchangetype", $('#exchangetype').val()); }); // realtime clock $(function($) { var options = { utc: true, format: '%H:%M:%S' } $('.input_time').jclock(options); }); $(function($) { var options = { utc: true, format: '%d-%m-%Y' } $('.input_date').jclock(options); }); // We don't want spaces to be written in callsign $(function() { $('#callsign').on('keypress', function(e) { if (e.which == 32){ return false; } }); }); // We don't want spaces to be written in exchange $(function() { $('#exch_recv').on('keypress', function(e) { if (e.which == 32){ return false; } }); }); // Here we capture keystrokes to execute functions document.onkeyup = function(e) { // ALT-W wipe if (e.altKey && e.which == 87) { reset_log_fields(); // CTRL-Enter logs QSO } else if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey)) { logQso(); // Enter in sent exchange logs QSO } else if((e.which == 13) && ($(document.activeElement).attr("id") == "exch_recv")) { logQso(); } else if (e.which == 27) { reset_log_fields(); // Space to jump to either callsign or sent exchange } else if (e.which == 32) { if ($(document.activeElement).attr("id") == "callsign") { $("#exch_recv").focus(); return false; } else if ($(document.activeElement).attr("id") == "exch_recv") { $("#callsign").focus(); return false; } } }; // On Key up check and suggest callsigns $("#callsign").keyup(function() { var call = $(this).val(); if (call.length >= 3) { $.get('lookup/scp/' + call.toUpperCase(), function(result) { $('.callsign-suggestions').text(result); highlight(call.toUpperCase()); }); } else if (call.length <= 2) { $('.callsign-suggestions').text(""); } }); function reset_log_fields() { $('#name').val(""); $('.callsign-suggestions').text(""); $('#callsign').val(""); $('#comment').val(""); $('#exch_recv').val(""); $('#exch_serial_r').val(""); $('#exch_gridsquare_r').val(""); $("#callsign").focus(); setRst($("#mode").val()); } RegExp.escape = function(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } function highlight(term, base) { if (!term) return; base = base || document.body; var re = new RegExp("(" + RegExp.escape(term) + ")", "gi"); var replacement = "" + term + ""; $(".callsign-suggestions", base).contents().each( function(i, el) { if (el.nodeType === 3) { var data = el.data; if (data = data.replace(re, replacement)) { var wrapper = $("").html(data); $(el).before(wrapper.contents()).remove(); } } }); } // Only set the frequency when not set by userdata/PHP. if ($('#frequency').val() == "") { $.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) { $('#frequency').val(result); $('#frequency_rx').val(""); }); } /* on mode change */ $('#mode').change(function() { $.get('qso/band_to_freq/' + $('#band').val() + '/' + $('.mode').val(), function(result) { $('#frequency').val(result); $('#frequency_rx').val(""); }); setRst($("#mode").val()); }); /* Calculate Frequency */ /* on band change */ $('#band').change(function() { $.get('qso/band_to_freq/' + $(this).val() + '/' + $('.mode').val(), function(result) { $('#frequency').val(result); $('#frequency_rx').val(""); }); }); $('#exchangetype').change(function(){ var exchangetype = $("#exchangetype").val(); setExchangetype(exchangetype); }); function setExchangetype(exchangetype) { if (exchangetype == 'None') { $(".exchanger").hide(); $(".exchanges").hide(); $(".serials").hide(); $(".serialr").hide(); $(".gridsquarer").hide(); $(".gridsquares").hide(); } else if (exchangetype == 'Exchange') { $(".exchanger").show(); $(".exchanges").show(); $(".serials").hide(); $(".serialr").hide(); $(".gridsquarer").hide(); $(".gridsquares").hide(); } else if (exchangetype == 'Serial') { $(".exchanger").hide(); $(".exchanges").hide(); $(".serials").show(); $(".serialr").show(); $(".gridsquarer").hide(); $(".gridsquares").hide(); } else if (exchangetype == 'Serialexchange') { $(".exchanger").show(); $(".exchanges").show(); $(".serials").show(); $(".serialr").show(); $(".gridsquarer").hide(); $(".gridsquares").hide(); } else if (exchangetype == 'Serialgridsquare') { $(".exchanger").hide(); $(".exchanges").hide(); $(".serials").show(); $(".serialr").show(); $(".gridsquarer").show(); $(".gridsquares").show(); } else if (exchangetype == 'Gridsquare') { $(".exchanger").hide(); $(".exchanges").hide(); $(".serials").hide(); $(".serialr").hide(); $(".gridsquarer").show(); $(".gridsquares").show(); } } /* Function: logQso Job: this handles the logging done in the contesting module. */ function logQso() { if ($("#callsign").val().length > 0) { $('.callsign-suggestions').text(""); var table = $('.qsotable').DataTable(); var data = [[$("#start_date").val()+ ' ' + $("#start_time").val(), $("#callsign").val().toUpperCase(), $("#band").val(), $("#mode").val(), $("#rst_sent").val(), $("#rst_recv").val(), $("#exch_sent").val(), $("#exch_recv").val()]]; table.rows.add(data).draw(); var formdata = new FormData(document.getElementById("qso_input")); $.ajax({ url: base_url + 'index.php/qso/saveqso', type: 'post', data: formdata, processData: false, contentType: false, enctype: 'multipart/form-data', success: function (html) { if (localStorage.getItem("qso") == null) { localStorage.setItem("qso", $("#start_date").val()+ ' ' + $("#start_time").val() + ',' + $("#callsign").val().toUpperCase() + ',' + $("#contestname").val()); } $('#name').val(""); $('#callsign').val(""); $('#comment').val(""); $('#exch_recv').val(""); var exchangetype = $("#exchangetype").val(); if (exchangetype == "Serial" || exchangetype == 'Serialexchange' || exchangetype == 'Serialgridsquare') { $("#exch_serial_s").val(+$("#exch_serial_s").val() + 1); } $("#callsign").focus(); // Store contest session localStorage.setItem("contestid", $("#contestname").val()); localStorage.setItem("exchangetype", $("#exchangetype").val()); localStorage.setItem("exchangereceived", $("#exch_recv").val()); localStorage.setItem("exchangesent", $("#exch_sent").val()); localStorage.setItem("serialreceived", $("#exch_serial_r").val()); localStorage.setItem("serialsent", $("#exch_serial_s").val()); localStorage.setItem("gridsquarereceived", $("#exch_gridsquare_r").val()); localStorage.setItem("gridsquaresent", $("#exch_gridsquare_s").val()); } }); } } // We are restoring the settings in the contest logging form here function restoreContestSession() { var contestname = localStorage.getItem("contestid"); if (contestname != null) { $("#contestname").val(contestname); } var exchangetype = localStorage.getItem("exchangetype"); if (exchangetype != null) { $("#exchangetype").val(exchangetype); setExchangetype(exchangetype); } var exchangereceived = localStorage.getItem("exchangereceived"); if (exchangereceived != null) { $("#exch_recv").val(exchangereceived); } var exchangesent = localStorage.getItem("exchangesent"); if (exchangesent != null) { $("#exch_sent").val(exchangesent); } var serialreceived = localStorage.getItem("serialreceived"); if (serialreceived != null) { $("#exch_serial_r").val(serialreceived); } var serialsent = localStorage.getItem("serialsent"); if (serialsent != null) { $("#exch_serial_s").val(serialsent); } var gridsquarereceived = localStorage.getItem("gridsquarereceived"); if (gridsquarereceived != null) { $("#exch_gridsquare_r").val(gridsquarereceived); } var gridsquaresent = localStorage.getItem("gridsquaresent"); if (gridsquaresent != null) { $("#exch_gridsquare_s").val(gridsquaresent); } if (localStorage.getItem("qso") != null) { var qsodata = localStorage.getItem("qso"); $.ajax({ url: base_url + 'index.php/contesting/getSessionQsos', type: 'post', data: {'qso': qsodata,}, success: function (html) { var mode = ''; var sentexchange = ''; var receivedexchange = ''; $.each(html, function(){ if (this.col_submode == null || this.col_submode == '') { mode = this.col_mode; } else { mode = this.col_submode; } if (this.col_srx == null || this.col_srx == '') { receivedexchange = this.col_srx_string; } else { receivedexchange = this.col_srx; } if (this.col_stx == null || this.col_stx == '') { sentexchange = this.col_stx_string; } else { sentexchange = this.col_stx; } $(".qsotable tbody").prepend('' + ''+ this.col_time_on + '' + ''+ this.col_call + '' + ''+ this.col_band + '' + ''+ mode + '' + ''+ this.col_rst_sent + '' + ''+ this.col_rst_rcvd + '' + ''+ sentexchange + '' + ''+ receivedexchange + '' + ''); }); if (!$.fn.DataTable.isDataTable('.qsotable')) { $('.qsotable').DataTable({ "pageLength": 25, responsive: false, "scrollY": "400px", "scrollCollapse": true, "paging": false, "scrollX": true, "order": [[ 0, "desc" ]] }); } } }); } }