172 行
		
	
	
		
			无行尾
		
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			172 行
		
	
	
		
			无行尾
		
	
	
		
			4.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Callsign always has focus on load
 | |
| $("#callsign").focus();
 | |
| 
 | |
| // Init serial sent as 1 when loading page
 | |
| $("#exch_sent").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_sent').val("1");
 | |
|     $('#exch_recv').val("");
 | |
|     $("#callsign").focus();
 | |
|     setRst($("#mode").val());
 | |
|     $("#serial").prop("checked", true);
 | |
|     $("#contestname").val("Other").change();
 | |
|     $(".contest_qso_table_contents").empty();
 | |
| 
 | |
|     localStorage.removeItem("contestid");
 | |
|     localStorage.removeItem("exchangetype");
 | |
|     localStorage.removeItem("exchangesent");
 | |
|     localStorage.removeItem("qso");
 | |
| }
 | |
| 
 | |
| // Storing the contestid in contest session
 | |
| $('#contestname').change(function() {
 | |
|     localStorage.setItem("contestid", $("#contestname").val());
 | |
| });
 | |
| 
 | |
| // Storing the exchange type in contest session
 | |
| $('input[type=radio][name=exchangeradio]').change(function() {
 | |
|     localStorage.setItem("exchangetype", $('input[name=exchangeradio]:checked', '#qso_input').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 fo 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("");
 | |
|     $("#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 = "<span class=\"text-primary\">" + term + "</span>";
 | |
|     $(".callsign-suggestions", base).contents().each( function(i, el) {
 | |
|         if (el.nodeType === 3) {
 | |
|             var data = el.data;
 | |
|             if (data = data.replace(re, replacement)) {
 | |
|                 var wrapper = $("<span>").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("");
 | |
|     });
 | |
| });
 | |
| 
 | |
| /* 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("");
 | |
|     });
 | |
| }); |