3060 行
		
	
	
	
		
			108 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			3060 行
		
	
	
	
		
			108 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <script type="text/javascript">
 | |
|   /*
 | |
|   *
 | |
|   * Define global javascript variables
 | |
|   *
 | |
|   */
 | |
|   var base_url = "<?php echo base_url(); ?>"; // Base URL
 | |
|   var site_url = "<?php echo site_url(); ?>"; // Site URL
 | |
|   var icon_dot_url = "<?php echo base_url();?>assets/images/dot.png";
 | |
|   // get the user_callsign from session
 | |
|  var my_call = "<?php echo $this->session->userdata('user_callsign'); ?>".toUpperCase();
 | |
| </script>
 | |
| 
 | |
| <script>
 | |
|     /* 
 | |
|     General Language
 | |
|     */
 | |
|     var lang_general_word_qso_data = "<?php echo lang('general_word_qso_data'); ?>";
 | |
|     var lang_general_word_danger = "<?php echo lang('general_word_danger'); ?>";
 | |
|     var lang_qso_delete_warning = "<?php echo lang('qso_delete_warning'); ?>";
 | |
|     var lang_general_word_colors = "<?php echo lang('general_word_colors'); ?>";
 | |
|     var lang_general_word_confirmed = "<?php echo lang('general_word_confirmed'); ?>";
 | |
|     var lang_general_word_worked_not_confirmed = "<?php echo lang('general_word_worked_not_confirmed'); ?>";
 | |
|     var lang_general_word_not_worked = "<?php echo lang('general_word_not_worked'); ?>";
 | |
| </script>
 | |
| <!-- General JS Files used across Cloudlog -->
 | |
| <script src="<?php echo base_url(); ?>assets/js/jquery-3.3.1.min.js"></script>
 | |
| <script src="<?php echo base_url(); ?>assets/js/popper.min.js"></script>
 | |
| <script src="<?php echo base_url(); ?>assets/js/jquery.fancybox.min.js"></script>
 | |
| <script src="<?php echo base_url(); ?>assets/js/bootstrap.bundle.js"></script>
 | |
| <script src="<?php echo base_url(); ?>assets/js/jquery.jclock.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/leaflet/leaflet.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/leaflet/Control.FullScreen.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/leaflet/L.Maidenhead.qrb.js"></script>
 | |
| <?php if ($this->uri->segment(1) == "activators") { ?>
 | |
| <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.activators.js"></script>
 | |
| <?php } ?>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/leaflet/leaflet.geodesic.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/radiohelpers.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/darkmodehelpers.js"></script>
 | |
| <script src="<?php echo base_url(); ?>assets/js/bootstrapdialog/js/bootstrap-dialog.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/easyprint.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url() ;?>assets/js/sections/common.js"></script>
 | |
| 
 | |
| <script src="https://unpkg.com/htmx.org@1.6.1"></script>
 | |
| 
 | |
| <script>
 | |
|     // Reinitialize tooltips after new content has been loaded
 | |
|     document.addEventListener('htmx:afterSwap', function(event) {
 | |
|         $('[data-toggle="tooltip"]').tooltip();
 | |
|     });
 | |
|     </script>
 | |
| <?php if ($this->uri->segment(1) == "awards" && ($this->uri->segment(2) == "was") ) { ?>
 | |
| <script>
 | |
| function load_was_map() {
 | |
|     BootstrapDialog.show({
 | |
|             title: 'Worked All States Map ('+$('#band2').val()+' '+$('#mode').val()+')',
 | |
|             cssClass: 'was-map-dialog',
 | |
|             message: $('<div></div>').load(site_url + '/awards/was_map/' + $('#band2').val() + '/' + $('#mode').val())
 | |
|     });
 | |
| }
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "oqrs") { ?>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/oqrs.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "awards" && ($this->uri->segment(2) == "cq") ) { ?>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/Polyline.encoded.js"></script>
 | |
|     <script id="cqmapjs" type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/cqmap.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "awards" && ($this->uri->segment(2) == "iota") ) { ?>
 | |
|     <script id="iotamapjs" type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/iotamap.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "awards" && ($this->uri->segment(2) == "dxcc") ) { ?>
 | |
|     <script id="dxccmapjs" type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/dxccmap.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "statistics") { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chart.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chartjs-plugin-piechart-outlabels.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/statistics.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "continents") { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chart.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chartjs-plugin-piechart-outlabels.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/continents.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "adif" || $this->uri->segment(1) == "qrz" || $this->uri->segment(1) == "hrdlog" || $this->uri->segment(1) == "webadif" || $this->uri->segment(1) == "sattimers") { ?>
 | |
|     <!-- Javascript used for ADIF Import and Export Areas -->
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "maintenance" ) { ?>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/maintenance.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "adif" ) { ?>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/adif.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?>
 | |
|     <!-- Javascript used for Notes Area -->
 | |
|     <script src="<?php echo base_url() ;?>assets/plugins/quill/quill.min.js"></script>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/notes.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "logbooks" && $this->uri->segment(2) == "edit") { ?>
 | |
| <script>
 | |
|     function removeSlug() {
 | |
|         var slugLink = document.getElementById("slugLink");
 | |
|         if (slugLink !== null) {
 | |
|             slugLink.style.display = "none";
 | |
|         }
 | |
|         document.getElementById('publicSlugInput').value = ''
 | |
|     }
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datatables.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/dataTables.buttons.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/buttons.html5.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url();?>assets/js/selectize.js"></script>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "station") { ?>
 | |
|     <script language="javascript" src="<?php echo base_url() ;?>assets/js/HamGridSquare.js"></script>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/station_locations.js"></script>
 | |
|     <script>
 | |
|         var position;
 | |
|         function getLocation() {
 | |
|             console.log("'clicked");
 | |
|             if (navigator.geolocation) {
 | |
|                 navigator.geolocation.getCurrentPosition(showPosition);
 | |
|             } else {
 | |
|                 console.log('Geolocation is not supported by this browser.');
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function showPosition(position) {
 | |
|             gridsquare = latLonToGridSquare(position.coords.latitude,position.coords.longitude);
 | |
|             document.getElementById("stationGridsquareInput").value = gridsquare;
 | |
|   }
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "logbooks") { ?>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/station_logbooks.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "debug") { ?>
 | |
| <script type="text/javascript">
 | |
| function copyURL(url) {
 | |
|    var urlField = $('#baseUrl');
 | |
|    navigator.clipboard.writeText(url).then(function() {
 | |
|    });
 | |
|    urlField.addClass('flash-copy')
 | |
|       .delay('1000').queue(function() {
 | |
|          urlField.removeClass('flash-copy').dequeue();
 | |
|       });
 | |
| }
 | |
| 
 | |
| $(function () {
 | |
|    $('[data-toggle="tooltip"]').tooltip({'delay': { show: 500, hide: 0 }, 'placement': 'right'});
 | |
| });
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "api"  && $this->uri->segment(2) == "help") { ?>
 | |
| <script type="text/javascript">
 | |
| function copyApiKey(apiKey) {
 | |
|    var apiKeyField = $('#'+apiKey);
 | |
|    navigator.clipboard.writeText(apiKey).then(function() {
 | |
|    });
 | |
|    apiKeyField.addClass('flash-copy')
 | |
|       .delay('1000').queue(function() {
 | |
|          apiKeyField.removeClass('flash-copy').dequeue();
 | |
|       });
 | |
| }
 | |
| 
 | |
| function copyApiUrl() {
 | |
|    var apiUrlField = $('#apiUrl');
 | |
|    navigator.clipboard.writeText("<?php echo base_url(); ?>").then(function() {
 | |
|    });
 | |
|    apiUrlField.addClass('flash-copy')
 | |
|       .delay('1000').queue(function() {
 | |
|          apiUrlField.removeClass('flash-copy').dequeue();
 | |
|       });
 | |
| }
 | |
| 
 | |
| $(function () {
 | |
|    $('[data-toggle="tooltip"]').tooltip({'delay': { show: 500, hide: 0 }, 'placement': 'right'});
 | |
| });
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?>
 | |
| 
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/query-builder.standalone.min.js"></script>
 | |
| 
 | |
| <script type="text/javascript">
 | |
|     $(".search-results-box").hide();
 | |
| 
 | |
|     $('#builder').queryBuilder({
 | |
|         filters: [
 | |
|             <?php foreach ($get_table_names->result() as $row) {
 | |
|                 $value_name = str_replace("COL_", "", $row->Field);
 | |
|                 if ($value_name != "PRIMARY_KEY" && strpos($value_name, 'MY_') === false && strpos($value_name, '_INTL') == false) { ?> {
 | |
|                         id: '<?php echo $row->Field; ?>',
 | |
|                         label: '<?php echo $value_name; ?>',
 | |
|                         <?php if (strpos($row->Type, 'int(') !== false) { ?>
 | |
|                             type: 'integer',
 | |
|                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
 | |
|                         <?php } elseif (strpos($row->Type, 'double') !== false) { ?>
 | |
|                             type: 'double',
 | |
|                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
 | |
|                         <?php } elseif (strpos($row->Type, 'datetime') !== false) { ?>
 | |
|                             type: 'datetime',
 | |
|                             operators: ['equal', 'not_equal', 'less', 'less_or_equal', 'greater', 'greater_or_equal']
 | |
|                         <?php } else { ?>
 | |
|                             type: 'string',
 | |
|                             operators: ['equal', 'not_equal', 'begins_with', 'contains', 'ends_with', 'is_empty', 'is_not_empty', 'is_null', 'is_not_null']
 | |
|                         <?php } ?>
 | |
|                     },
 | |
|                 <?php } ?>
 | |
|             <?php } ?>
 | |
|         ]
 | |
|     });
 | |
| 
 | |
| 
 | |
|     function export_search_result() {
 | |
|         var result = $('#builder').queryBuilder('getRules');
 | |
|         if (!$.isEmptyObject(result)) {
 | |
|             xhttp = new XMLHttpRequest();
 | |
|             xhttp.onreadystatechange = function() {
 | |
|                 var a;
 | |
|                 if (xhttp.readyState === 4 && xhttp.status === 200) {
 | |
|                     // Trick for making downloadable link
 | |
|                     a = document.createElement('a');
 | |
|                     a.href = window.URL.createObjectURL(xhttp.response);
 | |
|                     // Give filename you wish to download
 | |
|                     a.download = "advanced_search_export.adi";
 | |
|                     a.style.display = 'none';
 | |
|                     document.body.appendChild(a);
 | |
|                     a.click();
 | |
|                 }
 | |
|             };
 | |
|             // Post data to URL which handles post request
 | |
|             xhttp.open("POST", "<?php echo site_url('search/export_to_adif'); ?>", true);
 | |
|             xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 | |
|             // You should set responseType as blob for binary responses
 | |
|             xhttp.responseType = 'blob';
 | |
|             xhttp.send("search=" + JSON.stringify(result, null, 2));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function export_stored_query(id) {
 | |
|         xhttp = new XMLHttpRequest();
 | |
|         xhttp.onreadystatechange = function() {
 | |
|             var a;
 | |
|             if (xhttp.readyState === 4 && xhttp.status === 200) {
 | |
|                 // Trick for making downloadable link
 | |
|                 a = document.createElement('a');
 | |
|                 a.href = window.URL.createObjectURL(xhttp.response);
 | |
|                 // Give filename you wish to download
 | |
|                 a.download = "advanced_search_export.adi";
 | |
|                 a.style.display = 'none';
 | |
|                 document.body.appendChild(a);
 | |
|                 a.click();
 | |
|             }
 | |
|         };
 | |
|         // Post data to URL which handles post request
 | |
|         xhttp.open("POST", "<?php echo site_url('search/export_stored_query_to_adif'); ?>", true);
 | |
|         xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 | |
|         // You should set responseType as blob for binary responses
 | |
|         xhttp.responseType = 'blob';
 | |
|         xhttp.send("id=" + id);
 | |
|     }
 | |
| 
 | |
|     $('#btn-save').on('click', function() {
 | |
|         var resultquery = $('#builder').queryBuilder('getRules');
 | |
|         if (!$.isEmptyObject(resultquery)) {
 | |
|             let message = 'Description: <input class="form-control input-group-sm getqueryname">'
 | |
| 
 | |
|             BootstrapDialog.confirm({
 | |
|                 title: 'Query description',
 | |
|                 size: BootstrapDialog.SIZE_NORMAL,
 | |
|                 cssClass: 'description-dialog',
 | |
|                 closable: true,
 | |
|                 nl2br: false,
 | |
|                 message: message,
 | |
|                 btnCancelLabel: 'Cancel',
 | |
|                 btnOKLabel: 'Save',
 | |
|                 callback: function(result) {
 | |
|                     if (result) {
 | |
|                         $.post("<?php echo site_url('search/save_query'); ?>", {
 | |
|                                 search: JSON.stringify(resultquery, null, 2),
 | |
|                                 description: $(".getqueryname").val()
 | |
|                             })
 | |
|                             .done(function(data) {
 | |
|                                 $(".alert").remove();
 | |
|                                 $(".card-body.main").append('<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Your query has been saved!</div>');
 | |
|                                 if ($("#querydropdown option").length == 0) {
 | |
|                                     var dropdowninfo = ' <button class="btn btn-sm btn-primary" onclick="edit_stored_query_dialog()" id="btn-edit">Edit queries</button></p>' +
 | |
|                                     '<div class="form-group row querydropdownform">' +
 | |
|                                         '<label class="col-md-2 control-label" for="querydropdown">  Stored queries:</label>' +
 | |
|                                         '<div class="col-md-3">' +
 | |
|                                             '<select id="querydropdown" name="querydropdown" class="form-control custom-select-sm">' +
 | |
|                                             '</select>' +
 | |
|                                         '</div>' +
 | |
|                                         '<button class="btn btn-sm btn-primary ld-ext-right runbutton" onclick="run_query()">Run Query<div class="ld ld-ring ld-spin"></div></button>' +
 | |
|                                     '</div>';
 | |
|                                     $("#btn-save").after(dropdowninfo);
 | |
|                                 }
 | |
|                                 $('#querydropdown').append(new Option(data.description, data.id)); // We add the saved query to the dropdown
 | |
|                             });
 | |
|                     }
 | |
|                 },
 | |
|             });
 | |
| 
 | |
|         } else {
 | |
|             BootstrapDialog.show({
 | |
|                 title: 'Stored Queries',
 | |
|                 type: BootstrapDialog.TYPE_WARNING,
 | |
|                 size: BootstrapDialog.SIZE_NORMAL,
 | |
|                 cssClass: 'queries-dialog',
 | |
|                 nl2br: false,
 | |
|                 message: 'You need to make a query before you search!',
 | |
|                 buttons: [{
 | |
|                     label: 'Close',
 | |
|                     action: function(dialogItself) {
 | |
|                         dialogItself.close();
 | |
|                     }
 | |
|                 }]
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     function run_query() {
 | |
|         $(".alert").remove();
 | |
|         $(".runbutton").addClass('running');
 | |
|         $(".runbutton").prop('disabled', true);
 | |
|         let id = $('#querydropdown').val();
 | |
|         $.post("<?php echo site_url('search/run_query'); ?>", {
 | |
|                 id: id
 | |
|             })
 | |
|             .done(function(data) {
 | |
| 
 | |
|                 $('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_stored_query(' + id + ')">Export to ADIF</button>');
 | |
|                 $('.card-body.result').empty();
 | |
|                 $(".search-results-box").show();
 | |
| 
 | |
|                 $('.card-body.result').append(data);
 | |
|                 $('.table').DataTable({
 | |
|                     "pageLength": 25,
 | |
|                     responsive: false,
 | |
|                     ordering: false,
 | |
|                     "scrollY": "400px",
 | |
|                     "scrollCollapse": true,
 | |
|                     "paging": false,
 | |
|                     "scrollX": true,
 | |
|                     dom: 'Bfrtip',
 | |
|                     buttons: [
 | |
|                         'csv'
 | |
|                     ]
 | |
|                 });
 | |
|                 // change color of csv-button if dark mode is chosen
 | |
|                 if (isDarkModeTheme()) {
 | |
|                     $(".buttons-csv").css("color", "white");
 | |
|                 }
 | |
|                 $('[data-toggle="tooltip"]').tooltip();
 | |
|                 $(".runbutton").removeClass('running');
 | |
|                 $(".runbutton").prop('disabled', false);
 | |
|             });
 | |
|     }
 | |
| 
 | |
|     function delete_stored_query(id) {
 | |
|         BootstrapDialog.confirm({
 | |
|             title: 'DANGER',
 | |
|             message: 'Warning! Are you sure you want delete this stored query?',
 | |
|             type: BootstrapDialog.TYPE_DANGER,
 | |
|             closable: true,
 | |
|             draggable: true,
 | |
|             btnOKClass: 'btn-danger',
 | |
|             callback: function(result) {
 | |
|                 if (result) {
 | |
|                     $.ajax({
 | |
|                         url: base_url + 'index.php/search/delete_query',
 | |
|                         type: 'post',
 | |
|                         data: {
 | |
|                             'id': id
 | |
|                         },
 | |
|                         success: function(data) {
 | |
|                             $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The stored query has been deleted!</div>');
 | |
|                             $("#query_" + id).remove(); // removes query from table in dialog
 | |
|                             $("#querydropdown option[value='" + id + "']").remove(); // removes query from dropdown
 | |
|                             if ($("#querydropdown option").length == 0) {
 | |
|                                 $("#btn-edit").remove();
 | |
|                                 $('.querydropdownform').remove();
 | |
|                             };
 | |
|                         },
 | |
|                         error: function() {
 | |
|                             $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The stored query could not be deleted. Please try again!</div>');
 | |
|                         },
 | |
|                     });
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     function edit_stored_query(id) {
 | |
|         $('#description_' + id).attr('contenteditable', 'true');
 | |
|         $('#description_' + id).focus();
 | |
|         $('#edit_' + id).html('<a class="btn btn-primary btn-sm" href="javascript:save_edited_query(' + id + ');">Save</a>'); // Change to save button
 | |
|     }
 | |
| 
 | |
|     function save_edited_query(id) {
 | |
|         $('#description_' + id).attr('contenteditable', 'false');
 | |
|         $('#edit_' + id).html('<a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' + id + ');">Edit</a>');
 | |
|         $.ajax({
 | |
|             url: base_url + 'index.php/search/save_edited_query',
 | |
|             type: 'post',
 | |
|             data: {
 | |
|                 id: id,
 | |
|                 description: $('#description_' + id).html(),
 | |
|             },
 | |
|             success: function(html) {
 | |
|                 $('#edit_' + id).html('<a class="btn btn-outline-primary btn-sm" href="javascript:edit_stored_query(' + id + ');">Edit</a>'); // Change to edit button
 | |
|                 $(".bootstrap-dialog-message").prepend('<div class="alert alert-success"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>The query description has been updated!</div>');
 | |
|                 $("#querydropdown option[value='" + id + "']").text($('#description_' + id).html()); // Change text in dropdown
 | |
|             },
 | |
|             error: function() {
 | |
|                 $(".bootstrap-dialog-message").prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Something went wrong with the save. Please try again!</div>');
 | |
|             },
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     function edit_stored_query_dialog() {
 | |
|         $(".alert").remove();
 | |
|         $.ajax({
 | |
|             url: base_url + 'index.php/search/get_stored_queries',
 | |
|             type: 'post',
 | |
|             success: function(html) {
 | |
|                 BootstrapDialog.show({
 | |
|                     title: 'Stored Queries',
 | |
|                     size: BootstrapDialog.SIZE_WIDE,
 | |
|                     cssClass: 'queries-dialog',
 | |
|                     nl2br: false,
 | |
|                     message: html,
 | |
|                     buttons: [{
 | |
|                         label: 'Close',
 | |
|                         action: function(dialogItself) {
 | |
|                             dialogItself.close();
 | |
|                         }
 | |
|                     }]
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     $('#btn-get').on('click', function() {
 | |
|         $(".alert").remove();
 | |
|         var result = $('#builder').queryBuilder('getRules');
 | |
|         if (!$.isEmptyObject(result)) {
 | |
|             $(".searchbutton").addClass('running');
 | |
|             $(".searchbutton").prop('disabled', true);
 | |
| 
 | |
|             $.post("<?php echo site_url('search/search_result'); ?>", {
 | |
|                     search: JSON.stringify(result, null, 2),
 | |
|                     temp: "testvar"
 | |
|                 })
 | |
|                 .done(function(data) {
 | |
|                     $('.exportbutton').html('<button class="btn btn-sm btn-primary" onclick="export_search_result();">Export to ADIF</button>');
 | |
| 
 | |
|                     $('.card-body.result').empty();
 | |
|                     $(".search-results-box").show();
 | |
| 
 | |
|                     $('.card-body.result').append(data);
 | |
|                     $('.table').DataTable({
 | |
|                         "pageLength": 25,
 | |
|                         responsive: false,
 | |
|                         ordering: false,
 | |
|                         "scrollY": "400px",
 | |
|                         "scrollCollapse": true,
 | |
|                         "paging": false,
 | |
|                         "scrollX": true,
 | |
|                         dom: 'Bfrtip',
 | |
|                         buttons: [
 | |
|                             'csv'
 | |
|                         ]
 | |
|                     });
 | |
|                     // change color of csv-button if dark mode is chosen
 | |
|                     if (isDarkModeTheme()) {
 | |
|                         $(".buttons-csv").css("color", "white");
 | |
|                     }
 | |
|                     $('[data-toggle="tooltip"]').tooltip();
 | |
|                     $(".searchbutton").removeClass('running');
 | |
|                     $(".searchbutton").prop('disabled', false);
 | |
|                     $("#btn-save").show();
 | |
|                 });
 | |
|         } else {
 | |
|             BootstrapDialog.show({
 | |
|                 title: 'Stored Queries',
 | |
|                 type: BootstrapDialog.TYPE_WARNING,
 | |
|                 size: BootstrapDialog.SIZE_NORMAL,
 | |
|                 cssClass: 'queries-dialog',
 | |
|                 nl2br: false,
 | |
|                 message: 'You need to make a query before you search!',
 | |
|                 buttons: [{
 | |
|                     label: 'Close',
 | |
|                     action: function(dialogItself) {
 | |
|                         dialogItself.close();
 | |
|                     }
 | |
|                 }]
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     $('#btn-set').on('click', function() {
 | |
|         //$('#builder').queryBuilder('setRules', rules_basic);
 | |
|         var result = $('#builder').queryBuilder('getRules');
 | |
|         if (!$.isEmptyObject(result)) {
 | |
|             rules_basic = result;
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     //When rules changed :
 | |
|     $('#builder').on('getRules.queryBuilder.filter', function(e) {
 | |
|         //$log.info(e.value);
 | |
|     });
 | |
| </script>
 | |
| 
 | |
| <?php } ?>
 | |
| 
 | |
| <script>
 | |
| $(document).ready(function() {
 | |
| 	$('#create_station_profile #country').val($("#dxcc_select option:selected").text());
 | |
| 	$("#create_station_profile #dxcc_select" ).change(function() {
 | |
| 	$('#country').val($("#dxcc_select option:selected").text());
 | |
| 
 | |
| 	});
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <script>
 | |
| function printWarning() {
 | |
|     if ($("#dxcc_select option:selected").text().includes("<?php echo lang('gen_hamradio_deleted_dxcc'); ?>")) {
 | |
|         $('#warningMessageDXCC').show();
 | |
|         $('#dxcc_select').css('border', '2px solid rgb(217, 83, 79)');
 | |
|         $('#warningMessageDXCC').text("<?php echo lang('station_location_dxcc_warning'); ?>");
 | |
|     } else {
 | |
|         $('#dxcc_select').css('border', '');
 | |
|         $('#warningMessageDXCC').hide();
 | |
|     }
 | |
| }
 | |
| $('#dxcc_select').ready(function() {
 | |
|     printWarning();
 | |
| });
 | |
| 
 | |
| $('#dxcc_select').on('change', function() {
 | |
|     printWarning();
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <script>
 | |
| var $= jQuery.noConflict();
 | |
| $('[data-fancybox]').fancybox({
 | |
|     toolbar  : false,
 | |
|     smallBtn : true,
 | |
|     iframe : {
 | |
|         preload : false
 | |
|     }
 | |
| });
 | |
| 
 | |
| // Here we capture ALT-L to invoke the Quick lookup
 | |
| document.onkeyup = function(e) {
 | |
| 	if (e.altKey && e.which == 76) {
 | |
| 		spawnLookupModal();
 | |
| 	}
 | |
|     if (e.altKey && e.which == 81) {
 | |
| 		spawnQrbCalculator();
 | |
| 	}
 | |
| };
 | |
| 
 | |
| function newpath(latlng1, latlng2, locator1, locator2) {
 | |
|     // If map is already initialized
 | |
|     var container = L.DomUtil.get('mapqrbcontainer');
 | |
| 
 | |
|     if(container != null){
 | |
|         container._leaflet_id = null;
 | |
|         container.remove();
 | |
|         $("#mapqrb").append('<div id="mapqrbcontainer" style="Height: 500px"></div>');
 | |
|     }
 | |
| 
 | |
|     var map = new L.Map('mapqrbcontainer', {
 | |
|         fullscreenControl: true,
 | |
|         fullscreenControlOptions: {
 | |
|           position: 'topleft'
 | |
|         },
 | |
|       }).setView([30, 0], 1.5);
 | |
| 
 | |
|     // Need to fix so that marker is placed at same place as end of line, but this only needs to be done when longitude is < -170
 | |
|     if (latlng2[1] < -170) {
 | |
|         latlng2[1] =  parseFloat(latlng2[1])+360;
 | |
|     }
 | |
|     if (latlng1[1] < -170) {
 | |
|         latlng1[1] =  parseFloat(latlng1[1])+360;
 | |
|     }
 | |
| 
 | |
|     map.fitBounds([
 | |
|         [latlng1[0], latlng1[1]],
 | |
|         [latlng2[0], latlng2[1]]
 | |
|     ]);
 | |
| 
 | |
|     var maidenhead = L.maidenheadqrb().addTo(map);
 | |
| 
 | |
|     var osmUrl='<?php echo $this->optionslib->get_option('option_map_tile_server');?>';
 | |
|     var osmAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
 | |
|     var osm = new L.TileLayer(osmUrl, {minZoom: 1, maxZoom: 12, attribution: osmAttrib});
 | |
| 
 | |
|     var redIcon = L.icon({
 | |
| 					iconUrl: icon_dot_url,
 | |
| 					iconSize:     [10, 10], // size of the icon
 | |
| 				});
 | |
| 
 | |
|     map.addLayer(osm);
 | |
| 
 | |
|     var marker = L.marker([latlng1[0], latlng1[1]], {closeOnClick: false, autoClose: false}).addTo(map).bindPopup(locator1);
 | |
| 
 | |
|     var marker2 = L.marker([latlng2[0], latlng2[1]], {closeOnClick: false, autoClose: false}).addTo(map).bindPopup(locator2);
 | |
| 
 | |
|     const multiplelines = [];
 | |
| 		multiplelines.push(
 | |
|             new L.LatLng(latlng1[0], latlng1[1]),
 | |
|             new L.LatLng(latlng2[0], latlng2[1])
 | |
|         )
 | |
| 
 | |
|     const geodesic = L.geodesic(multiplelines, {
 | |
|         weight: 3,
 | |
|         opacity: 1,
 | |
|         color: 'red',
 | |
|         wrap: false,
 | |
|         steps: 100
 | |
|     }).addTo(map);
 | |
| }
 | |
| 
 | |
| function showActivatorsMap(call, count, grids) {
 | |
| 
 | |
|     let re = /,/g;
 | |
|     grids = grids.replace(re, ', ');
 | |
| 
 | |
|     var result = "Callsign: "+call.replace('0', 'Ø')+"<br />";
 | |
|     result +=    "Count: "+count+"<br/>";
 | |
|     result +=    "Grids: "+grids+"<br/><br />";
 | |
| 
 | |
|     $(".activatorsmapResult").html(result);
 | |
| 
 | |
|     // If map is already initialized
 | |
|     var container = L.DomUtil.get('mapactivators');
 | |
| 
 | |
|     if(container != null){
 | |
|         container._leaflet_id = null;
 | |
|     }
 | |
| 
 | |
|     const map = new L.map('mapactivators').setView([30, 0], 1.5);
 | |
| 
 | |
|     var grid_four = grids.split(', ');
 | |
| 
 | |
|     var maidenhead = new L.maidenheadactivators(grid_four).addTo(map);
 | |
| 
 | |
|     var osmUrl='<?php echo $this->optionslib->get_option('option_map_tile_server');?>';
 | |
|     var osmAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
 | |
|     var osm = new L.TileLayer(osmUrl, {minZoom: 1, maxZoom: 12, attribution: osmAttrib});
 | |
| 
 | |
|     map.addLayer(osm);
 | |
| }
 | |
| 
 | |
| </script>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "map" && $this->uri->segment(2) == "custom") { ?>
 | |
| <!-- Javascript used for ADIF Import and Export Areas -->
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
| <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
 | |
|     <script id="leafembed" type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
|     <script type="text/javascript">
 | |
|       $(function () {
 | |
|         $('[data-toggle="tooltip"]').tooltip()
 | |
|       });
 | |
| 
 | |
|         <?php if($qra == "set") { ?>
 | |
|         var q_lat = <?php echo $qra_lat; ?>;
 | |
|         var q_lng = <?php echo $qra_lng; ?>;
 | |
|         <?php } else { ?>
 | |
|         var q_lat = 40.313043;
 | |
|         var q_lng = -32.695312;
 | |
|         <?php } ?>
 | |
| 
 | |
|         var qso_loc = '<?php echo site_url('map/map_data_custom/');?><?php echo rawurlencode($date_from); ?>/<?php echo rawurlencode($date_to); ?>/<?php echo rawurlencode($this->input->post('band')); ?>/<?php echo rawurlencode($this->input->post('mode')); ?>/<?php echo rawurlencode($this->input->post('prop_mode')); ?>';
 | |
|         var q_zoom = 3;
 | |
| 
 | |
|       $(document).ready(function(){
 | |
|             <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
 | |
|               var grid = "Yes";
 | |
|             <?php } else { ?>
 | |
|               var grid = "No";
 | |
|             <?php } ?>
 | |
|             initmap(grid, 'custommap');
 | |
| 
 | |
|       });
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "map" && $this->uri->segment(2) == "") { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
 | |
|     <script id="leafembed" type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
|     <script type="text/javascript">
 | |
|       $(function () {
 | |
|         $('[data-toggle="tooltip"]').tooltip()
 | |
|       });
 | |
| 
 | |
|         <?php if($qra == "set") { ?>
 | |
|         var q_lat = <?php echo $qra_lat; ?>;
 | |
|         var q_lng = <?php echo $qra_lng; ?>;
 | |
|         <?php } else { ?>
 | |
|         var q_lat = 40.313043;
 | |
|         var q_lng = -32.695312;
 | |
|         <?php } ?>
 | |
| 
 | |
|         var qso_loc = '<?php echo site_url('map/map_data');?>';
 | |
|         var q_zoom = 2;
 | |
| 
 | |
|       $(document).ready(function(){
 | |
|             <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
 | |
|               var grid = "Yes";
 | |
|             <?php } else { ?>
 | |
|               var grid = "No";
 | |
|             <?php } ?>
 | |
|             initmap(grid);
 | |
| 
 | |
|       });
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "" || $this->uri->segment(1) == "dashboard" ) { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
 | |
|     <script id="leafembed" type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
|     
 | |
|     <script type="text/javascript">
 | |
|       $(function () {
 | |
|         $('[data-toggle="tooltip"]').tooltip()
 | |
|       });
 | |
| 
 | |
|         <?php if($qra == "set") { ?>
 | |
|         var q_lat = <?php echo $qra_lat; ?>;
 | |
|         var q_lng = <?php echo $qra_lng; ?>;
 | |
|         <?php } else { ?>
 | |
|         var q_lat = 40.313043;
 | |
|         var q_lng = -32.695312;
 | |
|         <?php } ?>
 | |
| 
 | |
|         var qso_loc = '<?php echo site_url('dashboard/map');?>';
 | |
|         var q_zoom = 3;
 | |
| 
 | |
|       $(document).ready(function(){
 | |
|             <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
 | |
|               var grid = "Yes";
 | |
|             <?php } else { ?>
 | |
|               var grid = "No";
 | |
|             <?php } ?>
 | |
|             initmap(grid);
 | |
| 
 | |
|       });
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| 
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "radio") { ?>
 | |
| <!-- If this is the admin/radio page run the JS -->
 | |
| <script type="text/javascript">
 | |
|     $(document).ready(function(){
 | |
|         setInterval(function() {
 | |
|             // Get Mode
 | |
|             $.get('radio/status/', function(result) {
 | |
|                     //$('.status').append(result);
 | |
|                     $('.status').html(result);
 | |
|             });
 | |
|         }, 2000);
 | |
|  });
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| 
 | |
| 
 | |
| <script type="text/javascript">
 | |
|   $(function () {
 | |
|      $('[data-toggle="tooltip"]').tooltip()
 | |
|   });
 | |
| 
 | |
|   $(function () {
 | |
|     // hold onto the drop down menu
 | |
|     var dropdownMenu;
 | |
| 
 | |
|     // and when you show it, move it to the body
 | |
|     $(window).on('show.bs.dropdown', function (e) {
 | |
| 
 | |
|     // grab the menu
 | |
|     dropdownMenu = $(e.target).find('.dropdown-menu');
 | |
| 
 | |
|     // detach it and append it to the body
 | |
|     $('body').append(dropdownMenu.detach());
 | |
| 
 | |
|     // grab the new offset position
 | |
|     var eOffset = $(e.target).offset();
 | |
| 
 | |
|     // make sure to place it where it would normally go (this could be improved)
 | |
|     dropdownMenu.css({
 | |
|         'display': 'block',
 | |
|             'top': eOffset.top + $(e.target).outerHeight(),
 | |
|             'left': eOffset.left
 | |
|        });
 | |
|     });
 | |
| 
 | |
|     // and when you hide it, reattach the drop down, and hide it normally
 | |
|     $(window).on('hide.bs.dropdown', function (e) {
 | |
|         $(e.target).append(dropdownMenu.detach());
 | |
|         dropdownMenu.hide();
 | |
|     });
 | |
|   });
 | |
| </script>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "search") { ?>
 | |
| <script type="text/javascript">
 | |
| i=0;
 | |
| 
 | |
| function findduplicates(){
 | |
|     event.preventDefault();
 | |
|     $('#partial_view').load(base_url+"index.php/logbook/search_duplicates/"+$("#station_id").val(), function() {
 | |
|         $('.qsolist').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "500px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function findlotwunconfirmed(){
 | |
|     event.preventDefault();
 | |
|     $('#partial_view').load(base_url+"index.php/logbook/search_lotw_unconfirmed/"+$("#station_id").val(), function() {
 | |
|         $('.qsolist').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "500px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function findincorrectcqzones() {
 | |
|     event.preventDefault();
 | |
|     $('#partial_view').load(base_url+"index.php/logbook/search_incorrect_cq_zones/"+$("#station_id").val(), function() {
 | |
|         $('.qsolist').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "500px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function searchButtonPress(){
 | |
|     event.preventDefault()
 | |
|     if ($('#callsign').val()) {
 | |
|       let fixedcall = $('#callsign').val();
 | |
|       $('#partial_view').load("logbook/search_result/" + fixedcall.replace('Ø', '0'), function() {
 | |
|          $('[data-toggle="tooltip"]').tooltip()
 | |
|       });
 | |
|     }
 | |
| }
 | |
| 
 | |
| $(document).ready(function(){
 | |
| 
 | |
|   <?php if($this->input->post('callsign') != "") { ?>
 | |
|         $('#partial_view').load("logbook/search_result/<?php echo str_replace("Ø","0",$this->input->post('callsign')); ?>", function() {
 | |
|            $('[data-toggle="tooltip"]').tooltip()
 | |
|     });
 | |
|   <?php } ?>
 | |
| 
 | |
| $(document).on('keypress',function(e) {
 | |
|   if(e.which == 13) {
 | |
| 
 | |
|     if ($('#callsign').val()) {
 | |
|         let fixedcall = $('#callsign').val();
 | |
|         $('#partial_view').load("logbook/search_result/" + fixedcall.replace('Ø', '0'), function() {
 | |
|            $('[data-toggle="tooltip"]').tooltip()
 | |
|         });
 | |
|     }
 | |
| 
 | |
|      event.preventDefault();
 | |
|         return false;
 | |
|   }
 | |
| });
 | |
| 
 | |
| 
 | |
| });
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "logbook" && $this->uri->segment(2) != "view") { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.Maidenhead.js"></script>
 | |
|     <script id="leafembed" type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/leafembed.js" tileUrl="<?php echo $this->optionslib->get_option('option_map_tile_server');?>"></script>
 | |
|     <script type="text/javascript">
 | |
|       $(function () {
 | |
|          $('[data-toggle="tooltip"]').tooltip()
 | |
|       });
 | |
|     </script>
 | |
|     <script type="text/javascript">
 | |
|         <?php if($qra == "set") { ?>
 | |
|         var q_lat = <?php echo $qra_lat; ?>;
 | |
|         var q_lng = <?php echo $qra_lng; ?>;
 | |
|         <?php } else { ?>
 | |
|         var q_lat = 40.313043;
 | |
|         var q_lng = -32.695312;
 | |
|         <?php } ?>
 | |
| 
 | |
|         var qso_loc = '<?php echo site_url('logbook/qso_map/25/'.$this->uri->segment(3)); ?>';
 | |
|         var q_zoom = 3;
 | |
| 
 | |
|         <?php if ($this->config->item('map_gridsquares') != FALSE) { ?>
 | |
|               var grid = "Yes";
 | |
|         <?php } else { ?>
 | |
|               var grid = "No";
 | |
|         <?php } ?>
 | |
|             initmap(grid);
 | |
| 
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "qso") { ?>
 | |
| 
 | |
| <script src="<?php echo base_url() ;?>assets/js/sections/qso.js"></script>
 | |
| <?php if ($this->session->userdata('isWinkeyEnabled')) { ?>
 | |
| 	<script src="<?php echo base_url() ;?>assets/js/winkey.js"></script>
 | |
| <?php }
 | |
| 
 | |
| 	if ($this->optionslib->get_option('dxcache_url') != ''){ ?>
 | |
| 	<script type="text/javascript">
 | |
| 		var dxcluster_provider = '<?php echo base_url(); ?>index.php/dxcluster';
 | |
| 		$(document).ready(function() {
 | |
| 			$("#check_cluster").on("click", function() {
 | |
| 				$.ajax({ url: dxcluster_provider+"/qrg_lookup/"+$("#frequency").val()/1000, cache: false, dataType: "json" }).done(
 | |
| 					function(dxspot) {
 | |
| 						reset_fields();
 | |
| 						$("#callsign").val(dxspot.spotted);
 | |
| 						$("#callsign").trigger("blur");
 | |
| 					}
 | |
| 				);
 | |
| 			});
 | |
| 		});
 | |
| 	</script>
 | |
| 
 | |
| <?php
 | |
| }
 | |
| 
 | |
| 
 | |
|     $this->load->model('stations');
 | |
|     $active_station_id = $this->stations->find_active();
 | |
|     $station_profile = $this->stations->profile($active_station_id);
 | |
|     $active_station_info = $station_profile->row();
 | |
| 
 | |
|     if (strpos($active_station_info->station_gridsquare, ',') !== false) {
 | |
|         $gridsquareArray = explode(',', $active_station_info->station_gridsquare);
 | |
|         $user_gridsquare = $gridsquareArray[0];
 | |
|     } else {
 | |
|         $user_gridsquare = $active_station_info->station_gridsquare;
 | |
|     }
 | |
| ?>
 | |
| 
 | |
| <script>
 | |
|   var markers = L.layerGroup();
 | |
|   var pos = [51.505, -0.09];
 | |
|   var mymap = L.map('qsomap').setView(pos, 12);
 | |
|   $.ajax({
 | |
|      url: base_url + 'index.php/logbook/qralatlngjson',
 | |
|      type: 'post',
 | |
|      data: {
 | |
| <?php if ($active_station_info->station_gridsquare != "") { ?>
 | |
|         qra: '<?php echo $user_gridsquare; ?>',
 | |
| <?php } else if (null !== $this->config->item('locator')) { ?>
 | |
|         qra: '<?php echo $this->config->item('locator'); ?>',
 | |
| <?php } else { ?>
 | |
|         // Fallback to London in case all else fails
 | |
|         qra: 'IO91WM',
 | |
| <?php } ?>
 | |
|      },
 | |
|      success: function(data) {
 | |
|         result = JSON.parse(data);
 | |
|         if (typeof result[0] !== "undefined" && typeof result[1] !== "undefined") {
 | |
|            mymap.panTo([result[0], result[1]]);
 | |
|            pos = result;
 | |
|         }
 | |
|      },
 | |
|      error: function() {
 | |
|      },
 | |
|   });
 | |
| 
 | |
|   L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
 | |
|     maxZoom: 18,
 | |
|     attribution: '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>',
 | |
|     id: 'mapbox.streets'
 | |
|   }).addTo(mymap);
 | |
| 
 | |
| </script>
 | |
| 
 | |
|   <script type="text/javascript">
 | |
| 
 | |
|     var manual = <?php echo $_GET['manual']; ?>;
 | |
| 
 | |
|     $(document).ready(function() {
 | |
| 
 | |
|     $('.callsign-suggest').hide();
 | |
| 
 | |
|     setRst($(".mode").val());
 | |
| 
 | |
|     /* On Page Load */
 | |
|     var catcher = function() {
 | |
|       var changed = false;
 | |
|       $('form').each(function() {
 | |
|         if ($(this).data('initialForm') != $(this).serialize()) {
 | |
|           changed = true;
 | |
|           $(this).addClass('changed');
 | |
|         } else {
 | |
|           $(this).removeClass('changed');
 | |
|         }
 | |
|       });
 | |
|       if (changed) {
 | |
|         return 'Unsaved QSO!';
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     $(function() {
 | |
|       $('form').each(function() {
 | |
|         $(this).data('initialForm', $(this).serialize());
 | |
|       }).submit(function(e) {
 | |
|         var formEl = this;
 | |
|         var changed = false;
 | |
|         $('form').each(function() {
 | |
|           if (this != formEl && $(this).data('initialForm') != $(this).serialize()) {
 | |
|             changed = true;
 | |
|             $(this).addClass('changed');
 | |
|           } else {
 | |
|             $(this).removeClass('changed');
 | |
|           }
 | |
|         });
 | |
|         if (changed && !confirm('You have an unsaved QSO. Continue with QSO?')) {
 | |
|           e.preventDefault();
 | |
|         } else {
 | |
|           $(window).unbind('beforeunload', catcher);
 | |
|         }
 | |
|       });
 | |
|       $(window).bind('beforeunload', catcher);
 | |
|     });
 | |
| 
 | |
|      // Callsign always has focus on load
 | |
|       $("#callsign").focus();
 | |
| 
 | |
|       if ( ! manual ) {
 | |
|         $(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);
 | |
|         });
 | |
|       }
 | |
|     });
 | |
| 
 | |
| 
 | |
| 
 | |
|   jQuery(function($) {
 | |
|   var input = $('#callsign');
 | |
|   input.on('keydown', function() {
 | |
|     var key = event.keyCode || event.charCode;
 | |
| 
 | |
|     if( key == 8 || key == 46 ) {
 | |
|       reset_fields();
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   $(document).keyup(function(e) {
 | |
| 	  if (e.charCode === 0) {
 | |
| 		  let fixedcall = $('#callsign').val();
 | |
| 		  $('#callsign').val(fixedcall.replace('Ø', '0'));
 | |
| 	  }
 | |
| 	  if (e.key === "Escape") { // escape key maps to keycode `27`
 | |
| 		  reset_fields();
 | |
| 		  $('#callsign').val("");
 | |
| 		  $("#callsign").focus();
 | |
| 	  }
 | |
|   });
 | |
| });
 | |
| 
 | |
| <?php if ($this->session->userdata('user_sota_lookup') == 1) { ?>
 | |
| 	$('#sota_ref').change(function() {
 | |
| 		var sota = $('#sota_ref').val();
 | |
| 		if (sota.length > 0) {
 | |
| 			$.ajax({
 | |
| 				url: base_url+'index.php/qso/get_sota_info',
 | |
| 				type: 'post',
 | |
| 				data: {'sota': sota},
 | |
| 				success: function(res) {
 | |
| 					$('#qth').val(res.name);
 | |
| 					$('#locator').val(res.locator);
 | |
| 				},
 | |
| 				error: function() {
 | |
| 					$('#qth').val('');
 | |
| 					$('#locator').val('');
 | |
| 				},
 | |
| 			});
 | |
| 		}
 | |
| 	});
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->session->userdata('user_wwff_lookup') == 1) { ?>
 | |
| 	$('#wwff_ref').change(function() {
 | |
| 		var wwff = $('#wwff_ref').val();
 | |
| 		if (wwff.length > 0) {
 | |
| 			$.ajax({
 | |
| 				url: base_url+'index.php/qso/get_wwff_info',
 | |
| 				type: 'post',
 | |
| 				data: {'wwff': wwff},
 | |
| 				success: function(res) {
 | |
| 					$('#qth').val(res.name);
 | |
| 					$('#locator').val(res.locator);
 | |
| 				},
 | |
| 				error: function() {
 | |
| 					$('#qth').val('');
 | |
| 					$('#locator').val('');
 | |
| 				},
 | |
| 			});
 | |
| 		}
 | |
| 	});
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->session->userdata('user_pota_lookup') == 1) { ?>
 | |
| 	$('#pota_ref').change(function() {
 | |
| 		var pota = $('#pota_ref').val();
 | |
| 		if (pota.length > 0) {
 | |
| 			$.ajax({
 | |
| 				url: base_url+'index.php/qso/get_pota_info',
 | |
| 				type: 'post',
 | |
| 				data: {'pota': pota},
 | |
| 				success: function(res) {
 | |
| 					$('#qth').val(res.name);
 | |
| 					$('#locator').val(res.grid6);
 | |
| 				},
 | |
| 				error: function() {
 | |
| 					$('#qth').val('');
 | |
| 					$('#locator').val('');
 | |
| 				},
 | |
| 			});
 | |
| 		}
 | |
| 	});
 | |
| <?php } ?>
 | |
| 
 | |
| 	$('#stationProfile').change(function() {
 | |
| 		var stationProfile = $('#stationProfile').val();
 | |
| 		$.ajax({
 | |
| 			url: base_url+'index.php/qso/get_station_power',
 | |
| 			type: 'post',
 | |
| 			data: {'stationProfile': stationProfile},
 | |
| 			success: function(res) {
 | |
| 				$('#transmit_power').val(res.station_power);
 | |
| 			},
 | |
| 			error: function() {
 | |
| 				$('#transmit_power').val('');
 | |
| 			},
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| <?php if ($this->session->userdata('user_qth_lookup') == 1) { ?>
 | |
|     $('#qth').focusout(function() {
 | |
|     	if ($('#locator').val() === '') {
 | |
| 			var lat = 0;
 | |
| 			var lon = 0;
 | |
| 			$.ajax({
 | |
| 				async: false,
 | |
| 				type: 'GET',
 | |
| 				dataType: "json",
 | |
| 				url: "https://nominatim.openstreetmap.org/?city=" + $(this).val() + "&format=json&addressdetails=1&limit=1",
 | |
| 				data: {},
 | |
| 				success: function (data) {
 | |
| 					if (typeof data[0].lat !== 'undefined') {
 | |
| 						lat = parseFloat(data[0].lat);
 | |
| 					}
 | |
| 					if (typeof data[0].lon !== 'undefined') {
 | |
| 						lon = parseFloat(data[0].lon);
 | |
| 					}
 | |
| 				},
 | |
| 			});
 | |
| 			if (lat !== 0 && lon !== 0) {
 | |
| 				var qthloc = LatLng2Loc(lat, lon, 10);
 | |
| 				if (qthloc.length > 0) {
 | |
| 					$('#locator').val(qthloc.substr(0, 6)).trigger('focusout');
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	});
 | |
| 
 | |
| 	LatLng2Loc = function(y, x, num) {
 | |
| 		if (x < -180) {
 | |
| 			x = x + 360;
 | |
| 		}
 | |
| 		if (x > 180) {
 | |
| 			x = x - 360;
 | |
| 		}
 | |
| 		var yqth, yi, yk, ydiv, yres, ylp, y;
 | |
| 		var ycalc = new Array(0, 0, 0);
 | |
| 		var yn = new Array(0, 0, 0, 0, 0, 0, 0);
 | |
| 
 | |
| 		var ydiv_arr = new Array(10, 1, 1 / 24, 1 / 240, 1 / 240 / 24);
 | |
| 		ycalc[0] = (x + 180) / 2;
 | |
| 		ycalc[1] = y + 90;
 | |
| 
 | |
| 		for (yi = 0; yi < 2; yi++) {
 | |
| 			for (yk = 0; yk < 5; yk++) {
 | |
| 				ydiv = ydiv_arr[yk];
 | |
| 				yres = ycalc[yi] / ydiv;
 | |
| 				ycalc[yi] = yres;
 | |
| 				if (ycalc[yi] > 0) ylp = Math.floor(yres); else ylp = Math.ceil(yres);
 | |
| 				ycalc[yi] = (ycalc[yi] - ylp) * ydiv;
 | |
| 				yn[2 * yk + yi] = ylp;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		var qthloc = "";
 | |
| 		if (num >= 2) qthloc += String.fromCharCode(yn[0] + 0x41) + String.fromCharCode(yn[1] + 0x41);
 | |
| 		if (num >= 4) qthloc += String.fromCharCode(yn[2] + 0x30) + String.fromCharCode(yn[3] + 0x30);
 | |
| 		if (num >= 6) qthloc += String.fromCharCode(yn[4] + 0x41) + String.fromCharCode(yn[5] + 0x41);
 | |
| 		if (num >= 8) qthloc += ' ' + String.fromCharCode(yn[6] + 0x30) + String.fromCharCode(yn[7] + 0x30);
 | |
| 		if (num >= 10) qthloc += String.fromCharCode(yn[8] + 0x61) + String.fromCharCode(yn[9] + 0x61);
 | |
| 		return qthloc;
 | |
| 	}
 | |
| 	<?php } ?>
 | |
| 
 | |
|   </script>
 | |
| 
 | |
| <?php } ?>
 | |
| <?php if ( $this->uri->segment(1) == "qso" || ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) != "add")) { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datetime-moment.js"></script>
 | |
|     <script>
 | |
| 
 | |
|     $('#notice-alerts').delay(1000).fadeOut(5000);
 | |
| 
 | |
|     function setRst(mode) {
 | |
|         if(mode == 'JT65' || mode == 'JT65B' || mode == 'JT6C' || mode == 'JTMS' || mode == 'ISCAT' || mode == 'MSK144' || mode == 'JTMSK' || mode == 'QRA64' || mode == 'FT8' || mode == 'FT4' || mode == 'JS8' || mode == 'JT9' || mode == 'JT9-1' || mode == 'ROS'){
 | |
|             $('#rst_sent').val('-5');
 | |
|             $('#rst_rcvd').val('-5');
 | |
|         } else if (mode == 'FSK441' || mode == 'JT6M') {
 | |
|             $('#rst_sent').val('26');
 | |
|             $('#rst_rcvd').val('26');
 | |
|         } else if (mode == 'CW' || mode == 'RTTY' || mode == 'PSK31' || mode == 'PSK63') {
 | |
|             $('#rst_sent').val('599');
 | |
|             $('#rst_rcvd').val('599');
 | |
|         } else {
 | |
|             $('#rst_sent').val('59');
 | |
|             $('#rst_rcvd').val('59');
 | |
|         }
 | |
|     }
 | |
|     </script>
 | |
| 
 | |
|     <script>
 | |
|     // Javascript for controlling rig frequency.
 | |
| 	  var updateFromCAT = function() {
 | |
| 		  if($('select.radios option:selected').val() != '0') {
 | |
| 			  radioID = $('select.radios option:selected').val();
 | |
| 			  $.getJSON( "radio/json/" + radioID, function( data ) {
 | |
| 	  /* {
 | |
| 	  "frequency": "2400210000",
 | |
| 	      "frequency_rx": "10489710000",
 | |
| 	      "mode": "SSB",
 | |
| 	      "satmode": "S/X",
 | |
| 	      "satname": "QO-100"
 | |
| 	      "power": "20"
 | |
| 	      "prop_mode": "SAT",
 | |
| 	      "error": "not_logged_id" // optional, reserved for errors
 | |
| 	  }  */
 | |
| 				  if (data.error) {
 | |
| 					  if (data.error == 'not_logged_in') {
 | |
| 						  $(".radio_cat_state" ).remove();
 | |
| 						  if($('.radio_login_error').length == 0) {
 | |
| 							  $('.qso_panel').prepend('<div class="alert alert-danger radio_login_error" role="alert"><i class="fas fa-broadcast-tower"></i> You\'re not logged it. Please <a href="<?php echo base_url();?>">login</a></div>');
 | |
| 						  }
 | |
| 					  }
 | |
| 					  // Put future Errorhandling here
 | |
| 				  } else {
 | |
| 					  if($('.radio_login_error').length != 0) {
 | |
| 						  $(".radio_login_error" ).remove();
 | |
| 					  }
 | |
| 					  $('#frequency').val(data.frequency);
 | |
| 					  $("#band").val(frequencyToBand(data.frequency));
 | |
| 					  if (data.frequency_rx != "") {
 | |
| 						  $('#frequency_rx').val(data.frequency_rx);
 | |
| 						  $("#band_rx").val(frequencyToBand(data.frequency_rx));
 | |
| 					  }
 | |
| 
 | |
| 					  old_mode = $(".mode").val();
 | |
| 					  $(".mode").val(data.mode);
 | |
| 
 | |
| 					  if (old_mode !== $(".mode").val()) {
 | |
| 						  // Update RST on mode change via CAT
 | |
| 						  setRst($(".mode").val());
 | |
| 					  }
 | |
| 					  $("#sat_name").val(data.satname);
 | |
| 					  $("#sat_mode").val(data.satmode);
 | |
| 					  if(data.power != null && data.power != 0) {
 | |
| 						  $("#transmit_power").val(data.power);
 | |
| 					  }
 | |
| 					  $("#selectPropagation").val(data.prop_mode);
 | |
| 
 | |
| 					  // Display CAT Timeout warning based on the figure given in the config file
 | |
| 					  var minutes = Math.floor(<?php echo $this->optionslib->get_option('cat_timeout_interval'); ?> / 60);
 | |
| 
 | |
| 					  if(data.updated_minutes_ago > minutes) {
 | |
| 						  $(".radio_cat_state" ).remove();
 | |
| 						  if($('.radio_timeout_error').length == 0) {
 | |
| 							  $('#radio_status').prepend('<div class="alert alert-danger radio_timeout_error" role="alert"><i class="fas fa-broadcast-tower"></i> Radio connection timed-out: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.</div>');
 | |
| 						  } else {
 | |
| 							  $('.radio_timeout_error').html('Radio connection timed-out: ' + $('select.radios option:selected').text() + ' data is ' + data.updated_minutes_ago + ' minutes old.');
 | |
| 						  }
 | |
| 					  } else {
 | |
| 						  $(".radio_timeout_error" ).remove();
 | |
| 						  text = '<i class="fas fa-broadcast-tower"></i><span style="margin-left:10px;"></span><b>TX:</b> '+(Math.round(parseInt(data.frequency)/100)/10000).toFixed(4)+' MHz';
 | |
| 						  if(data.mode != null) {
 | |
| 							  text = text+'<span style="margin-left:10px"></span>'+data.mode;
 | |
| 						  }
 | |
| 						  if(data.power != null && data.power != 0) {
 | |
| 							  text = text+'<span style="margin-left:10px"></span>'+data.power+' W';
 | |
| 						  }
 | |
| 						  if(data.prop_mode != null && data.prop_mode != '') {
 | |
| 							  text = text+'<span style="margin-left:10px"></span>('+data.prop_mode;
 | |
| 							  if (data.prop_mode == 'SAT') {
 | |
| 								  text = text+' '+data.satname;
 | |
| 							  }
 | |
| 						  }
 | |
| 						  if(data.frequency_rx != null && data.frequency_rx != 0) {
 | |
| 							  text = text+'<span style="margin-left:10px"></span><b>RX:</b> '+(Math.round(parseInt(data.frequency_rx)/1000)/1000).toFixed(3)+' MHz)';
 | |
| 						  }
 | |
| 						  if (! $('#radio_cat_state').length) {
 | |
| 							  $('#radio_status').prepend('<div aria-hidden="true"><div id="radio_cat_state" class="alert alert-success radio_cat_state" role="alert">'+text+'</div></div>');
 | |
| 						  } else {
 | |
| 							  $('#radio_cat_state').html(text);
 | |
| 						  }
 | |
| 					  }
 | |
| 				  }
 | |
| 			  });
 | |
| 		  }
 | |
| 	  };
 | |
| 
 | |
| 	  // Update frequency every three second
 | |
| 	  setInterval(updateFromCAT, 3000);
 | |
| 
 | |
| 	  // If a radios selected from drop down select radio update.
 | |
| 	  $('.radios').change(updateFromCAT);
 | |
| 
 | |
| 	  // If no radio is selected clear data
 | |
| 	  $( ".radios" ).change(function() {
 | |
| 		  if ($(".radios option:selected").val() == 0) {
 | |
| 			  $("#sat_name").val("");
 | |
| 			  $("#sat_mode").val("");
 | |
| 			  $("#frequency").val("");
 | |
| 			  $("#frequency_rx").val("");
 | |
| 			  $("#band_rx").val("");
 | |
| 			  $("#selectPropagation").val($("#selectPropagation option:first").val());
 | |
| 			  $(".radio_timeout_error" ).remove();
 | |
| 		  }
 | |
| 	  });
 | |
|   </script>
 | |
| 
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "logbook" && $this->uri->segment(2) == "view") { ?>
 | |
| <script>
 | |
| 
 | |
|   var mymap = L.map('map').setView([lat,long], 5);
 | |
| 
 | |
|   L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
 | |
|     maxZoom: 18,
 | |
|     attribution: '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>',
 | |
|     id: 'mapbox.streets'
 | |
|   }).addTo(mymap);
 | |
| 
 | |
| 
 | |
| 
 | |
|   var printer = L.easyPrint({
 | |
|       		tileLayer: tiles,
 | |
|       		sizeModes: ['Current', 'A4Landscape', 'A4Portrait'],
 | |
|       		filename: 'myMap',
 | |
|       		exportOnly: true,
 | |
|       		hideControlContainer: true
 | |
| 		}).addTo(mymap);
 | |
| 
 | |
|   var redIcon = L.icon({
 | |
|       iconUrl: icon_dot_url,
 | |
|       iconSize:     [18, 18], // size of the icon
 | |
|   });
 | |
| 
 | |
|   L.marker([lat,long], {icon: redIcon}).addTo(mymap)
 | |
|     .bindPopup(callsign);
 | |
| 
 | |
|   mymap.on('click', onMapClick);
 | |
| 
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "update") { ?>
 | |
| <script>
 | |
| $(document).ready(function(){
 | |
|     $('#btn_update_dxcc').bind('click', function(){
 | |
|         $('#dxcc_update_status').show();
 | |
|         $.ajax({url:"update/dxcc"});
 | |
|         setTimeout(update_stats,5000);
 | |
|     });
 | |
|     function update_stats(){
 | |
|         $('#dxcc_update_status').load('<?php echo base_url()?>updates/status.html', function(val){
 | |
|             $('#dxcc_update_staus').html(val);
 | |
| 
 | |
|             if ((val  === null) || (val.substring(0,4) !="DONE")){
 | |
|                 setTimeout(update_stats, 5000);
 | |
|             }
 | |
|         });
 | |
| 
 | |
|     }
 | |
| 
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "gridsquares" && !empty($this->uri->segment(2))) { ?>
 | |
| <script>var gridsquaremap = true;</script>
 | |
| <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.MaidenheadColoured.js"></script>
 | |
| 
 | |
| <script>
 | |
| 
 | |
|   var layer = L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
 | |
|     maxZoom: 18,
 | |
|     attribution: '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>',
 | |
|     id: 'mapbox.streets'
 | |
|   });
 | |
| 
 | |
|   var map = L.map('gridsquare_map', {
 | |
|     layers: [layer],
 | |
|     center: [19, 0],
 | |
|     zoom: 2,
 | |
|     minZoom: 1,
 | |
|     fullscreenControl: true,
 | |
|         fullscreenControlOptions: {
 | |
|           position: 'topleft'
 | |
|         },
 | |
|   });
 | |
| 
 | |
|   var printer = L.easyPrint({
 | |
|         tileLayer: layer,
 | |
|         sizeModes: ['Current'],
 | |
|         filename: 'myMap',
 | |
|         exportOnly: true,
 | |
|         hideControlContainer: true
 | |
|     }).addTo(map);
 | |
| 
 | |
|   var grid_two = <?php echo $grid_2char; ?>;
 | |
|   var grid_four = <?php echo $grid_4char; ?>;
 | |
|   var grid_six = <?php echo $grid_6char; ?>;
 | |
| 
 | |
|   var grid_two_count = grid_two.length;
 | |
|   var grid_four_count = grid_four.length;
 | |
|   var grid_six_count = grid_six.length;
 | |
| 
 | |
|   var grid_two_confirmed = <?php echo $grid_2char_confirmed; ?>;
 | |
|   var grid_four_confirmed = <?php echo $grid_4char_confirmed; ?>;
 | |
|   var grid_six_confirmed = <?php echo $grid_6char_confirmed; ?>;
 | |
| 
 | |
|   var grid_two_confirmed_count = grid_two_confirmed.length;
 | |
|   var grid_four_confirmed_count = grid_four_confirmed.length;
 | |
|   var grid_six_confirmed_count = grid_six_confirmed.length;
 | |
| 
 | |
|   if (grid_four_confirmed_count > 0) {
 | |
|      var span = document.getElementById('confirmed_grids');
 | |
|      span.innerText = span.textContent = '('+grid_four_confirmed_count+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_confirmed_count != 1 ? 's' : '')+') ';
 | |
|   }
 | |
|   if ((grid_four_count-grid_four_confirmed_count) > 0) {
 | |
|      var span = document.getElementById('worked_grids');
 | |
|      span.innerText = span.textContent = '('+(grid_four_count-grid_four_confirmed_count)+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_count-grid_four_confirmed_count != 1 ? 's' : '')+') ';
 | |
|   }
 | |
|   var span = document.getElementById('sum_grids');
 | |
|   span.innerText = span.textContent = ' <?php echo lang('gridsquares_total_count'); ?>'+': '+grid_four_count+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_count != 1 ? 's' : '');
 | |
| 
 | |
|   var maidenhead = L.maidenhead().addTo(map);
 | |
| 
 | |
|   map.on('click', onMapClick);
 | |
| 
 | |
|   function onMapClick(event) {
 | |
|     var LatLng = event.latlng;
 | |
|     var lat = LatLng.lat;
 | |
|     var lng = LatLng.lng;
 | |
|     var locator = LatLng2Loc(lat,lng, 10);
 | |
|     var loc_4char = locator.substring(0, 4);
 | |
|     console.log(loc_4char);
 | |
|     console.log(map.getZoom());
 | |
| 
 | |
|     if(map.getZoom() > 2) {
 | |
|     	<?php if ($this->session->userdata('user_callsign')) { ?>
 | |
|         spawnGridsquareModal(loc_4char);
 | |
| 		  <?php } ?>
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   function spawnGridsquareModal(loc_4char) {
 | |
|     var band = '';
 | |
|       var search_type = "<?php echo $this->uri->segment(2); ?>";
 | |
|       if(search_type == "satellites") {
 | |
| 		band = 'SAT';
 | |
|       } else {
 | |
|         band = "<?php echo $this->uri->segment(3); ?>";
 | |
|       }
 | |
|     $(".modal-body").empty();
 | |
| 		  $.ajax({
 | |
| 			  url: base_url + 'index.php/awards/qso_details_ajax',
 | |
| 			  type: 'post',
 | |
| 			  data: {
 | |
| 				  'Searchphrase': loc_4char,
 | |
| 				  'Band': band,
 | |
| 				  'Mode': 'All',
 | |
| 				  'Type': 'VUCC'
 | |
| 			  },
 | |
| 			  success: function (html) {
 | |
| 				$(".modal-body").html(html);
 | |
| 				  $(".modal-body table").addClass('table-sm');
 | |
| 				  $(".modal-body h5").empty();
 | |
| 				  var count = $('.table tr').length;
 | |
| 				  count = count - 1;
 | |
| 				  $('#qso_count').text(count);
 | |
| 				  if (count > 1) {
 | |
| 					  $('#gt1_qso').text("s");
 | |
| 				  } else {
 | |
| 					  $('#gt1_qso').text("");
 | |
| 				  }
 | |
| 
 | |
| 				  if (count > 0) {
 | |
| 					  $('#square_number').text(loc_4char);
 | |
| 					  $('#exampleModal').modal('show');
 | |
| 					  $('[data-toggle="tooltip"]').tooltip({ boundary: 'window' });
 | |
| 				  }
 | |
| 			  }
 | |
| 		  });
 | |
|   }
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "gridsquares" && $this->uri->segment(2) == "band") { ?>
 | |
| 
 | |
|   var bands_available = <?php echo $bands_available; ?>;
 | |
|   $('#gridsquare_bands').append('<option value="All">All</option>')
 | |
|   $.each(bands_available, function(key, value) {
 | |
|      $('#gridsquare_bands')
 | |
|          .append($("<option></option>")
 | |
|                     .attr("value",value)
 | |
|                     .text(value));
 | |
|   });
 | |
| 
 | |
|   var num = "<?php echo $this->uri->segment(3);?>";
 | |
|     $("#gridsquare_bands option").each(function(){
 | |
|         if($(this).val()==num){ // EDITED THIS LINE
 | |
|             $(this).attr("selected","selected");
 | |
|         }
 | |
|     });
 | |
| 
 | |
|   $(function(){
 | |
|       // bind change event to select
 | |
|       $('#gridsquare_bands').on('change', function () {
 | |
|           var url = $(this).val(); // get selected value
 | |
|           if (url) { // require a URL
 | |
|               window.location = "<?php echo site_url('gridsquares/band/');?>" + url
 | |
|           }
 | |
|           return false;
 | |
|       });
 | |
|     });
 | |
| <?php } ?>
 | |
| 
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "activated_grids" && !empty($this->uri->segment(2))) { ?>
 | |
| 
 | |
| <script type="text/javascript" src="<?php echo base_url();?>assets/js/leaflet/L.MaidenheadColoured.js"></script>
 | |
| 
 | |
| <script>
 | |
|   var layer = L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
 | |
|     maxZoom: 18,
 | |
|     attribution: '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>',
 | |
|     id: 'mapbox.streets'
 | |
|   });
 | |
| 
 | |
| 
 | |
|   var map = L.map('gridsquare_map', {
 | |
|     layers: [layer],
 | |
|     center: [19, 0],
 | |
|     zoom: 2,
 | |
|     minZoom: 1,
 | |
|     fullscreenControl: true,
 | |
|         fullscreenControlOptions: {
 | |
|           position: 'topleft'
 | |
|         },
 | |
|   });
 | |
| 
 | |
|   var grid_two = <?php echo $grid_2char; ?>;
 | |
|   var grid_four = <?php echo $grid_4char; ?>;
 | |
|   var grid_six = <?php echo $grid_6char; ?>;
 | |
| 
 | |
|   var grid_two_count = grid_two.length;
 | |
|   var grid_four_count = grid_four.length;
 | |
|   var grid_six_count = grid_six.length;
 | |
| 
 | |
|   var grid_two_confirmed = <?php echo $grid_2char_confirmed; ?>;
 | |
|   var grid_four_confirmed = <?php echo $grid_4char_confirmed; ?>;
 | |
|   var grid_six_confirmed = <?php echo $grid_6char_confirmed; ?>;
 | |
| 
 | |
|   var grid_two_confirmed_count = grid_two_confirmed.length;
 | |
|   var grid_four_confirmed_count = grid_four_confirmed.length;
 | |
|   var grid_six_confirmed_count = grid_six_confirmed.length;
 | |
| 
 | |
|   if (grid_four_confirmed_count > 0) {
 | |
|      var span = document.getElementById('confirmed_grids');
 | |
|      span.innerText = span.textContent = '('+grid_four_confirmed_count+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_confirmed_count != 1 ? 's' : '')+') ';
 | |
|   }
 | |
|   if ((grid_four_count-grid_four_confirmed_count) > 0) {
 | |
|      var span = document.getElementById('activated_grids');
 | |
|      span.innerText = span.textContent = '('+(grid_four_count-grid_four_confirmed_count)+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_count-grid_four_confirmed_count != 1 ? 's' : '')+') ';
 | |
|   }
 | |
|   var span = document.getElementById('sum_grids');
 | |
|   span.innerText = span.textContent = ' <?php echo lang('gridsquares_total_count'); ?>'+': '+grid_four_count+' <?php echo lang('gridsquares_grid_squares'); ?>'+(grid_four_count != 1 ? 's' : '');
 | |
| 
 | |
|   var maidenhead = L.maidenhead().addTo(map);
 | |
| 
 | |
|   map.on('click', onMapClick);
 | |
| 
 | |
|   function onMapClick(event) {
 | |
|     var LatLng = event.latlng;
 | |
|     var lat = LatLng.lat;
 | |
|     var lng = LatLng.lng;
 | |
|     var locator = LatLng2Loc(lat,lng, 10);
 | |
|     var loc_4char = locator.substring(0, 4);
 | |
|     console.log(loc_4char);
 | |
|     console.log(map.getZoom());
 | |
| 
 | |
|     if(map.getZoom() > 2) {
 | |
|     	<?php if ($this->session->userdata('user_callsign')) { ?>
 | |
| 	  var band = '';
 | |
|       var search_type = "<?php echo $this->uri->segment(2); ?>";
 | |
|       if(search_type == "satellites") {
 | |
| 		band = 'SAT';
 | |
|       } else {
 | |
|         band = "<?php echo $this->uri->segment(3); ?>";
 | |
|       }
 | |
| 		$(".modal-body").empty();
 | |
| 		  $.ajax({
 | |
| 			  url: base_url + 'index.php/activated_grids/qso_details_ajax',
 | |
| 			  type: 'post',
 | |
| 			  data: {
 | |
| 				  'Searchphrase': loc_4char,
 | |
| 				  'Band': band,
 | |
| 				  'Mode': 'All',
 | |
| 			  },
 | |
| 			  success: function (html) {
 | |
| 				$(".modal-body").html(html);
 | |
| 				  $(".modal-body table").addClass('table-sm');
 | |
| 				  $(".modal-body h5").empty();
 | |
| 				  var count = $('.table tr').length;
 | |
| 				  count = count - 1;
 | |
| 				  $('#qso_count').text(count);
 | |
| 				  if (count > 1) {
 | |
| 					  $('#gt1_qso').text("s");
 | |
| 				  } else {
 | |
| 					  $('#gt1_qso').text("");
 | |
| 				  }
 | |
| 
 | |
| 				  if (count > 0) {
 | |
| 					  $('#square_number').text(loc_4char);
 | |
| 					  $('#exampleModal').modal('show');
 | |
| 					  $('[data-toggle="tooltip"]').tooltip({ boundary: 'window' });
 | |
| 				  }
 | |
| 			  }
 | |
| 		  });
 | |
| 		  <?php } ?>
 | |
|     }
 | |
|   };
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "activated_grids" && $this->uri->segment(2) == "band") { ?>
 | |
| 
 | |
|   var bands_available = <?php echo $bands_available; ?>;
 | |
|   $('#gridsquare_bands').append('<option value="All">All</option>')
 | |
|   $.each(bands_available, function(key, value) {
 | |
|      $('#gridsquare_bands')
 | |
|          .append($("<option></option>")
 | |
|                     .attr("value",value)
 | |
|                     .text(value));
 | |
|   });
 | |
| 
 | |
|   var num = "<?php echo $this->uri->segment(3);?>";
 | |
|     $("#gridsquare_bands option").each(function(){
 | |
|         if($(this).val()==num){ // EDITED THIS LINE
 | |
|             $(this).attr("selected","selected");
 | |
|         }
 | |
|     });
 | |
| 
 | |
|   $(function(){
 | |
|       // bind change event to select
 | |
|       $('#gridsquare_bands').on('change', function () {
 | |
|           var url = $(this).val(); // get selected value
 | |
|           if (url) { // require a URL
 | |
|               window.location = "<?php echo site_url('activated_grids/band/');?>" + url
 | |
|           }
 | |
|           return false;
 | |
|       });
 | |
|     });
 | |
| <?php } ?>
 | |
| 
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "dayswithqso") { ?>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/chart.js"></script>
 | |
| 	<script src="<?php echo base_url(); ?>assets/js/sections/dayswithqso.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "distances") { ?>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/exporting.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/offline-exporting.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/export-data.js"></script>
 | |
| 	<script src="<?php echo base_url(); ?>assets/js/sections/distances.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
|     <?php if ($this->uri->segment(2) == "import") { ?>
 | |
|         <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|         <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
|         <script type="text/javascript">
 | |
|             $(function () {
 | |
|                 $('#datetimepicker1').datetimepicker({
 | |
|                     format: 'DD/MM/YYYY',
 | |
|                 });
 | |
|             });
 | |
|         </script>
 | |
|     <?php } ?>
 | |
| 
 | |
|     <?php if ($this->uri->segment(1) == "hrdlog") { ?>
 | |
| 		<script src="<?php echo base_url(); ?>assets/js/sections/hrdlog.js"></script>
 | |
|     <?php } ?>
 | |
|     <?php if ($this->uri->segment(1) == "qrz") { ?>
 | |
| 		<script src="<?php echo base_url(); ?>assets/js/sections/qrzlogbook.js"></script>
 | |
|     <?php } ?>
 | |
| 	<?php if ($this->uri->segment(1) == "webadif") { ?>
 | |
| 		<script src="<?php echo base_url(); ?>assets/js/sections/webadif.js"></script>
 | |
| 	<?php } ?>
 | |
| 
 | |
| 	<script>
 | |
| 		function displayQso(id) {
 | |
| 			var baseURL= "<?php echo base_url();?>";
 | |
| 			$.ajax({
 | |
| 				url: baseURL + 'index.php/logbook/view/' + id,
 | |
| 				type: 'post',
 | |
| 				success: function(html) {
 | |
| 					BootstrapDialog.show({
 | |
| 						title: lang_general_word_qso_data,
 | |
| 						cssClass: 'qso-dialog',
 | |
| 						size: BootstrapDialog.SIZE_WIDE,
 | |
| 						nl2br: false,
 | |
| 						message: html,
 | |
| 						onshown: function(dialog) {
 | |
| 							var qsoid = $("#qsoid").text();
 | |
| 							$(".editButton").html('<a class="btn btn-primary" id="edit_qso" href="javascript:qso_edit('+qsoid+')"><i class="fas fa-edit"></i><?php echo lang('general_edit_qso'); ?></a>');
 | |
| 							var lat = $("#lat").text();
 | |
| 							var long = $("#long").text();
 | |
| 							var callsign = $("#callsign").text();
 | |
| 							var mymap = L.map('mapqso').setView([lat,long], 5);
 | |
| 
 | |
| 							var tiles = L.tileLayer('<?php echo $this->optionslib->get_option('option_map_tile_server');?>', {
 | |
| 								maxZoom: 18,
 | |
| 								attribution: '<?php echo $this->optionslib->get_option('option_map_tile_server_copyright');?>',
 | |
| 							}).addTo(mymap);
 | |
| 
 | |
| 
 | |
|                             var printer = L.easyPrint({
 | |
|                                 tileLayer: tiles,
 | |
|                                 sizeModes: ['Current'],
 | |
|                                 filename: 'myMap',
 | |
|                                 exportOnly: true,
 | |
|                                 hideControlContainer: true
 | |
|                             }).addTo(mymap);
 | |
| 
 | |
| 							var redIcon = L.icon({
 | |
| 								iconUrl: icon_dot_url,
 | |
| 								iconSize:     [18, 18], // size of the icon
 | |
| 							});
 | |
| 
 | |
| 							L.marker([lat,long], {icon: redIcon}).addTo(mymap)
 | |
| 								.bindPopup(callsign);
 | |
| 
 | |
| 						},
 | |
| 					});
 | |
| 
 | |
| 				}
 | |
| 			});
 | |
| 		}
 | |
| 		</script>
 | |
| 
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "dxcc") { ?>
 | |
| <script>
 | |
|     $('.tabledxcc').DataTable({
 | |
|         "pageLength": 25,
 | |
|         responsive: false,
 | |
|         ordering: false,
 | |
|         "scrollY":        "400px",
 | |
|         "scrollCollapse": true,
 | |
|         "paging":         false,
 | |
|         "scrollX": true,
 | |
|         dom: 'Bfrtip',
 | |
|         buttons: [
 | |
|             'csv'
 | |
|         ]
 | |
|     });
 | |
| 
 | |
|     $('.tablesummary').DataTable({
 | |
|         info: false,
 | |
|         searching: false,
 | |
|         ordering: false,
 | |
|         "paging":         false,
 | |
|         dom: 'Bfrtip',
 | |
|         buttons: [
 | |
|             'csv'
 | |
|         ]
 | |
|     });
 | |
| 
 | |
|     // change color of csv-button if dark mode is chosen
 | |
|     if (isDarkModeTheme()) {
 | |
|         $(".buttons-csv").css("color", "white");
 | |
|     }
 | |
|  </script>
 | |
|     <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "vucc_band") { ?>
 | |
|     <script>
 | |
|     $('.tablevucc').DataTable({
 | |
|         "pageLength": 25,
 | |
|         responsive: false,
 | |
|         ordering: false,
 | |
|         "scrollY":        "400px",
 | |
|         "scrollCollapse": true,
 | |
|         "paging":         false,
 | |
|         "scrollX": true,
 | |
|         dom: 'Bfrtip',
 | |
|         buttons: [
 | |
|             'csv'
 | |
|         ]
 | |
|     });
 | |
| 
 | |
|     // change color of csv-button if dark mode is chosen
 | |
|     if (isDarkModeTheme()) {
 | |
|         $(".buttons-csv").css("color", "white");
 | |
|     }
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "iota") { ?>
 | |
|     <script>
 | |
| 
 | |
|         $('.tableiota').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "400px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         $('.tablesummary').DataTable({
 | |
|             info: false,
 | |
|             searching: false,
 | |
|             ordering: false,
 | |
|             "paging":         false,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     </script>
 | |
| 
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "cq") { ?>
 | |
|     <script>
 | |
|         $('.tablecq').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "400px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         $('.tablesummary').DataTable({
 | |
|             info: false,
 | |
|             searching: false,
 | |
|             ordering: false,
 | |
|             "paging":         false,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "was") { ?>
 | |
|     <script>
 | |
|         $('.tablewas').DataTable({
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: false,
 | |
|             "scrollY":        "400px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         $('.tablesummary').DataTable({
 | |
|             info: false,
 | |
|             searching: false,
 | |
|             ordering: false,
 | |
|             "paging":         false,
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                 'csv'
 | |
|             ]
 | |
|         });
 | |
| 
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $(".buttons-csv").css("color", "white");
 | |
|         }
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <script>
 | |
| 
 | |
|         function selectize_usa_county() {
 | |
|             var baseURL= "<?php echo base_url();?>";
 | |
|             $('#stationCntyInputEdit').selectize({
 | |
| 				delimiter: ';',
 | |
|                 maxItems: 1,
 | |
|                 closeAfterSelect: true,
 | |
|                 loadThrottle: 250,
 | |
|                 valueField: 'name',
 | |
|                 labelField: 'name',
 | |
|                 searchField: 'name',
 | |
|                 options: [],
 | |
|                 create: false,
 | |
|                 load: function(query, callback) {
 | |
|                     var state = $("#input_usa_state_edit option:selected").text();
 | |
| 
 | |
|                     if (!query || state == "") return callback();
 | |
|                     $.ajax({
 | |
|                         url: baseURL+'index.php/qso/get_county',
 | |
|                         type: 'GET',
 | |
|                         dataType: 'json',
 | |
|                         data: {
 | |
|                             query: query,
 | |
|                             state: state,
 | |
|                         },
 | |
|                         error: function() {
 | |
|                             callback();
 | |
|                         },
 | |
|                         success: function(res) {
 | |
|                             callback(res);
 | |
|                         }
 | |
|                     });
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function qso_save() {
 | |
|             var baseURL= "<?php echo base_url();?>";
 | |
|             var myform = document.getElementById("qsoform");
 | |
|             var fd = new FormData(myform);
 | |
|             $.ajax({
 | |
|                 url: baseURL + 'index.php/qso/qso_save_ajax',
 | |
|                 data: fd,
 | |
|                 cache: false,
 | |
|                 processData: false,
 | |
|                 contentType: false,
 | |
|                 type: 'POST',
 | |
|                 success: function (dataofconfirm) {
 | |
|                     $(".edit-dialog").modal('hide');
 | |
|                     $(".qso-dialog").modal('hide');
 | |
|                     <?php if ($this->uri->segment(1) != "search" && $this->uri->segment(2) != "filter" && $this->uri->segment(1) != "qso" && $this->uri->segment(1) != "logbookadvanced") { ?>location.reload();<?php } ?>
 | |
|                 },
 | |
|                 error: function(xhr, status, error) {
 | |
|                     console.log(xhr.responseText);
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|         </script>
 | |
|     <?php if ($this->uri->segment(1) == "timeline") { ?>
 | |
|         <script>
 | |
|             $('.timelinetable').DataTable({
 | |
|                 "pageLength": 25,
 | |
|                 responsive: false,
 | |
|                 ordering: false,
 | |
|                 "scrollY":        "500px",
 | |
|                 "scrollCollapse": true,
 | |
|                 "paging":         false,
 | |
|                 "scrollX": true,
 | |
|                 dom: 'Bfrtip',
 | |
|                 buttons: [
 | |
|                     'csv'
 | |
|                 ]
 | |
|             });
 | |
| 
 | |
|             // change color of csv-button if dark mode is chosen
 | |
|             if (isDarkModeTheme()) {
 | |
|                 $(".buttons-csv").css("color", "white");
 | |
|             }
 | |
| 
 | |
|             function displayTimelineContacts(querystring, band, mode, type) {
 | |
|                 var baseURL= "<?php echo base_url();?>";
 | |
|                 $.ajax({
 | |
|                     url: baseURL + 'index.php/timeline/details',
 | |
|                     type: 'post',
 | |
|                     data: {'Querystring': querystring,
 | |
|                         'Band': band,
 | |
|                         'Mode': mode,
 | |
|                         'Type': type
 | |
|                     },
 | |
|                     success: function(html) {
 | |
|                         BootstrapDialog.show({
 | |
|                             title: lang_general_word_qso_data,
 | |
|                             size: BootstrapDialog.SIZE_WIDE,
 | |
|                             cssClass: 'qso-was-dialog',
 | |
|                             nl2br: false,
 | |
|                             message: html,
 | |
|                             onshown: function(dialog) {
 | |
|                                $('[data-toggle="tooltip"]').tooltip();
 | |
|                             },
 | |
|                             buttons: [{
 | |
|                                 label: 'Close',
 | |
|                                 action: function (dialogItself) {
 | |
|                                     dialogItself.close();
 | |
|                                 }
 | |
|                             }]
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         </script>
 | |
|         <?php } ?>
 | |
|     <?php if ($this->uri->segment(1) == "activators") { ?>
 | |
|         <script>
 | |
|             $('.activatorstable').DataTable({
 | |
|                 "pageLength": 25,
 | |
|                 responsive: false,
 | |
|                 ordering: false,
 | |
|                 "scrollY":        "500px",
 | |
|                 "scrollCollapse": true,
 | |
|                 "paging":         false,
 | |
|                 "scrollX": true,
 | |
|                 dom: 'Bfrtip',
 | |
|                 buttons: [
 | |
|                     'csv'
 | |
|                 ]
 | |
|             });
 | |
| 
 | |
|             // change color of csv-button if dark mode is chosen
 | |
|             if (isDarkModeTheme()) {
 | |
|                 $(".buttons-csv").css("color", "white");
 | |
|             }
 | |
| 
 | |
|       $(document).ready(function(){
 | |
|          $('#band').change(function()
 | |
|          {
 | |
|             if($(this).val() == "SAT")
 | |
|             {
 | |
|                $('#leogeo').show();
 | |
|             } else {
 | |
|                $('#leogeo').hide();
 | |
|             }
 | |
|          });
 | |
|          <?php if ($this->input->post('band') != "SAT") { ?>
 | |
|          $('#leogeo').hide();
 | |
|          <?php } ?>
 | |
|       });
 | |
|             function displayActivatorsContacts(call, band, leogeo) {
 | |
|                 var baseURL= "<?php echo base_url();?>";
 | |
|                 $.ajax({
 | |
|                     url: baseURL + 'index.php/activators/details',
 | |
|                     type: 'post',
 | |
|                     data: {'Callsign': call,
 | |
|                         'Band': band,
 | |
|                         'LeoGeo': leogeo
 | |
|                     },
 | |
|                     success: function(html) {
 | |
|                         BootstrapDialog.show({
 | |
|                             title: lang_general_word_qso_data,
 | |
|                             size: BootstrapDialog.SIZE_WIDE,
 | |
|                             cssClass: 'qso-was-dialog',
 | |
|                             nl2br: false,
 | |
|                             message: html,
 | |
|                             onshown: function(dialog) {
 | |
|                                $('[data-toggle="tooltip"]').tooltip();
 | |
|                             },
 | |
|                             buttons: [{
 | |
|                                 label: 'Close',
 | |
|                                 action: function (dialogItself) {
 | |
|                                     dialogItself.close();
 | |
|                                 }
 | |
|                             }]
 | |
|                         });
 | |
|                     }
 | |
|                 });
 | |
|             }
 | |
|         </script>
 | |
|         <?php } ?>
 | |
| 
 | |
|     <?php if ($this->uri->segment(1) == "mode") { ?>
 | |
| 		<script src="<?php echo base_url(); ?>assets/js/sections/mode.js"></script>
 | |
|     <?php } ?>
 | |
| 
 | |
|     <?php if ($this->uri->segment(1) == "band") { ?>
 | |
| 		<script src="<?php echo base_url(); ?>assets/js/sections/bands.js"></script>
 | |
|     <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "accumulated") { ?>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/chart.js"></script>
 | |
| 	<script src="<?php echo base_url(); ?>assets/js/sections/accumulatedstatistics.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "timeplotter") { ?>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/exporting.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/offline-exporting.js"></script>
 | |
|     <script src="<?php echo base_url(); ?>assets/js/highstock/export-data.js"></script>
 | |
| 	<script src="<?php echo base_url(); ?>assets/js/sections/timeplot.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "qsl" || $this->uri->segment(1) == "eqsl") {
 | |
|     	// Get Date format
 | |
| 	if($this->session->userdata('user_date_format')) {
 | |
| 		// If Logged in and session exists
 | |
| 		$custom_date_format = $this->session->userdata('user_date_format');
 | |
| 	} else {
 | |
| 		// Get Default date format from /config/cloudlog.php
 | |
| 		$custom_date_format = $this->config->item('qso_date_format');
 | |
| 	}
 | |
| 
 | |
|     switch ($custom_date_format) {
 | |
|         case 'd/m/y': $usethisformat = 'D/MM/YY';break;
 | |
|         case 'd/m/Y': $usethisformat = 'D/MM/YYYY';break;
 | |
|         case 'm/d/y': $usethisformat = 'MM/D/YY';break;
 | |
|         case 'm/d/Y': $usethisformat = 'MM/D/YYYY';break;
 | |
|         case 'd.m.Y': $usethisformat = 'D.MM.YYYY';break;
 | |
|         case 'y/m/d': $usethisformat = 'YY/MM/D';break;
 | |
|         case 'Y-m-d': $usethisformat = 'YYYY-MM-D';break;
 | |
|         case 'M d, Y': $usethisformat = 'MMM D, YYYY';break;
 | |
|         case 'M d, y': $usethisformat = 'MMM D, YY';break;
 | |
|     }
 | |
| 
 | |
|     ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datetime-moment.js"></script>
 | |
|     <script>
 | |
|         $.fn.dataTable.moment('<?php echo $usethisformat ?>');
 | |
|         $.fn.dataTable.ext.buttons.clear = {
 | |
|             className: 'buttons-clear',
 | |
|             action: function ( e, dt, node, config ) {
 | |
|                dt.search('').draw();
 | |
|             }
 | |
|         };
 | |
| <?php if ($this->uri->segment(1) == "qsl") { ?>
 | |
|         $('.qsltable').DataTable({
 | |
| <?php } else if ($this->uri->segment(1) == "eqsl") { ?>
 | |
|         $('.eqsltable').DataTable({
 | |
| <?php } ?>
 | |
|             "pageLength": 25,
 | |
|             responsive: false,
 | |
|             ordering: true,
 | |
|             "scrollY":        "500px",
 | |
|             "scrollCollapse": true,
 | |
|             "paging":         false,
 | |
|             "scrollX": true,
 | |
|             "order": [ 2, 'desc' ],
 | |
|             dom: 'Bfrtip',
 | |
|             buttons: [
 | |
|                {
 | |
|                   extend: 'clear',
 | |
|                   text: 'Clear'
 | |
|                }
 | |
|             ]
 | |
|         });
 | |
|         // change color of csv-button if dark mode is chosen
 | |
|         if (isDarkModeTheme()) {
 | |
|             $('[class*="buttons"]').css("color", "white");
 | |
|         }
 | |
|         $('#eqsl_force_from_date').datetimepicker({
 | |
|             format: 'YYYY/MM/DD',
 | |
|         });
 | |
| 
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "kmlexport") { ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
|     <script type="text/javascript">
 | |
|         $(function () {
 | |
|             $('#datetimepicker1').datetimepicker({
 | |
|                 format: 'DD/MM/YYYY',
 | |
|             });
 | |
|         });
 | |
|         $(function () {
 | |
|             $('#datetimepicker2').datetimepicker({
 | |
|                 format: 'DD/MM/YYYY',
 | |
|             });
 | |
|         });
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <script>
 | |
| function viewQsl(picture, callsign) {
 | |
|             var baseURL= "<?php echo base_url();?>";
 | |
|             var $textAndPic = $('<div></div>');
 | |
|                 $textAndPic.append('<center><img class="img-fluid w-qsl" style="height:auto;width:auto;"src="'+baseURL+'/assets/qslcard/'+picture+'" /><center>');
 | |
|             var title = '';
 | |
|             if (callsign == null) {
 | |
|                 title = 'QSL Card';
 | |
|             } else {
 | |
|                 title = 'QSL Card for ' + callsign.replace('0', 'Ø');
 | |
|             }
 | |
| 
 | |
|             BootstrapDialog.show({
 | |
|                 title: title,
 | |
|                 size: BootstrapDialog.SIZE_WIDE,
 | |
|                 message: $textAndPic,
 | |
|                 buttons: [{
 | |
|                     label: 'Close',
 | |
|                     action: function(dialogRef){
 | |
|                         dialogRef.close();
 | |
|                     }
 | |
|                 }]
 | |
|             });
 | |
|         }
 | |
| </script>
 | |
| <script>
 | |
| function deleteQsl(id) {
 | |
|             BootstrapDialog.confirm({
 | |
|                 title: 'DANGER',
 | |
|                 message: 'Warning! Are you sure you want to delete this QSL card?'  ,
 | |
|                 type: BootstrapDialog.TYPE_DANGER,
 | |
|                 closable: true,
 | |
|                 draggable: true,
 | |
|                 btnOKClass: 'btn-danger',
 | |
|                 callback: function(result) {
 | |
|                     if(result) {
 | |
|                         var baseURL= "<?php echo base_url();?>";
 | |
|                         $.ajax({
 | |
|                             url: baseURL + 'index.php/qsl/delete',
 | |
|                             type: 'post',
 | |
|                             data: {'id': id
 | |
|                             },
 | |
|                             success: function(data) {
 | |
|                                 $("#" + id).parent("tr:first").remove(); // removes qsl from table
 | |
| 
 | |
|                                 // remove qsl from carousel
 | |
|                                 $(".carousel-indicators li:last-child").remove();
 | |
|                                 $(".carouselimageid_"+id).remove();
 | |
|                                 $('#carouselExampleIndicators').find('.carousel-item').first().addClass('active');
 | |
| 
 | |
|                                 // remove table and hide tab if all qsls are deleted
 | |
|                                 if ($('.qsltable tr').length == 1) {
 | |
|                                     $('.qsltable').remove();
 | |
|                                     $('.qslcardtab').attr('hidden','');
 | |
|                                 }
 | |
|                             }
 | |
|                         });
 | |
|                     }
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
| </script>
 | |
| <script>
 | |
| function viewEqsl(picture, callsign) {
 | |
|             var baseURL= "<?php echo base_url();?>";
 | |
|             var $textAndPic = $('<div></div>');
 | |
|                 $textAndPic.append('<img class="img-fluid" style="height:auto;width:auto;"src="'+baseURL+'images/eqsl_card_images/'+picture+'" />');
 | |
|             var title = '';
 | |
|             if (callsign == null) {
 | |
|                 title = 'eQSL Card';
 | |
|             } else {
 | |
|                 title = 'eQSL Card for ' + callsign.replace('0', 'Ø');
 | |
|             }
 | |
| 
 | |
|             BootstrapDialog.show({
 | |
|                 title: title,
 | |
|                 size: BootstrapDialog.SIZE_WIDE,
 | |
|                 message: $textAndPic,
 | |
|                 buttons: [{
 | |
|                     label: 'Close',
 | |
|                     action: function(dialogRef){
 | |
|                         dialogRef.close();
 | |
|                     }
 | |
|                 }]
 | |
|             });
 | |
|         }
 | |
| </script>
 | |
| <script>
 | |
|     $('#displayAwardInfo').click(function (event) {
 | |
|         var awardInfoLines = [
 | |
|             lang_award_info_ln2,
 | |
|             lang_award_info_ln3,
 | |
|             lang_award_info_ln4
 | |
|         ];
 | |
|         var awardInfoContent = "";
 | |
|         awardInfoLines.forEach(function (line) {
 | |
|             awardInfoContent += line + "<br><br>";
 | |
|         });
 | |
|         BootstrapDialog.alert({
 | |
|             title: "<h4>"+lang_award_info_ln1+"</h4>",
 | |
|             message: awardInfoContent,
 | |
|         });
 | |
|     });
 | |
| </script>
 | |
| <script>
 | |
|   /*
 | |
|    * Used to fetch QSOs from the logbook in the awards
 | |
|    */
 | |
|     function displayContacts(searchphrase, band, mode, type, qsl) {
 | |
|         var baseURL = "<?php echo base_url();?>";
 | |
|         $.ajax({
 | |
|             url: baseURL + 'index.php/awards/qso_details_ajax',
 | |
|             type: 'post',
 | |
|             data: {
 | |
|                 'Searchphrase': searchphrase,
 | |
|                 'Band': band,
 | |
|                 'Mode': mode,
 | |
|                 'Type': type,
 | |
|                 'QSL' : qsl
 | |
|             },
 | |
|             success: function (html) {
 | |
|                 BootstrapDialog.show({
 | |
|                     title: lang_general_word_qso_data,
 | |
|                     size: BootstrapDialog.SIZE_WIDE,
 | |
|                     cssClass: 'qso-dialog',
 | |
|                     nl2br: false,
 | |
|                     message: html,
 | |
|                     onshown: function(dialog) {
 | |
|                        $('[data-toggle="tooltip"]').tooltip();
 | |
|                        $('.contacttable').DataTable({
 | |
|                             "pageLength": 25,
 | |
|                             responsive: false,
 | |
|                             ordering: false,
 | |
|                             "scrollY":        "550px",
 | |
|                             "scrollCollapse": true,
 | |
|                             "paging":         false,
 | |
|                             "scrollX": true,
 | |
|                             dom: 'Bfrtip',
 | |
|                             buttons: [
 | |
|                                 'csv'
 | |
|                             ]
 | |
|                         });
 | |
|                     },
 | |
|                     buttons: [{
 | |
|                         label: 'Close',
 | |
|                         action: function (dialogItself) {
 | |
|                             dialogItself.close();
 | |
|                         }
 | |
|                     }]
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     function displayContactsOnMap(target, searchphrase, band, mode, type, qsl) {
 | |
| 	    $.ajax({
 | |
| 	    url: base_url + 'index.php/awards/qso_details_ajax',
 | |
| 		    type: 'post',
 | |
| 		    data: {
 | |
| 		    'Searchphrase': searchphrase,
 | |
| 			    'Band': band,
 | |
| 			    'Mode': mode,
 | |
| 			    'Type': type,
 | |
| 			    'QSL' : qsl
 | |
|     },
 | |
| 	    success: function (html) {
 | |
| 		    var dialog = new BootstrapDialog({
 | |
| 		    title: lang_general_word_qso_data,
 | |
| 			    size: BootstrapDialog.SIZE_WIDE,
 | |
| 			    cssClass: 'qso-dialog',
 | |
| 			    nl2br: false,
 | |
| 			    message: html,
 | |
| 			    onshown: function(dialog) {
 | |
| 				    $('[data-toggle="tooltip"]').tooltip();
 | |
| 				    $('.contacttable').DataTable({
 | |
| 				    "pageLength": 25,
 | |
| 					    responsive: false,
 | |
| 					    ordering: false,
 | |
| 					    "scrollY":        "550px",
 | |
| 					    "scrollCollapse": true,
 | |
| 					    "paging":         false,
 | |
| 					    "scrollX": true,
 | |
| 					    dom: 'Bfrtip',
 | |
| 					    buttons: [
 | |
| 						    'csv'
 | |
| 					    ]
 | |
| 				    });
 | |
| 			    },
 | |
| 			    buttons: [{
 | |
| 			    label: 'Close',
 | |
| 				    action: function (dialogItself) {
 | |
| 					    dialogItself.close();
 | |
| 				    }
 | |
| 				    }]
 | |
| 	    });
 | |
| 		    dialog.realize();
 | |
| 		    target.append(dialog.getModal());
 | |
| 		    dialog.open();
 | |
| 	    }
 | |
|     });
 | |
|     }
 | |
|     function uploadQsl() {
 | |
|         var baseURL= "<?php echo base_url();?>";
 | |
|         var formdata = new FormData(document.getElementById("fileinfo"));
 | |
| 
 | |
|         $.ajax({
 | |
|             url: baseURL + 'index.php/qsl/uploadqsl',
 | |
|             type: 'post',
 | |
|             data: formdata,
 | |
|             enctype: 'multipart/form-data',
 | |
|             processData: false,
 | |
|             contentType: false,
 | |
|             success: function(data) {
 | |
|                 if (data.status.front.status == 'Success') {
 | |
|                     if ($('.qsltable').length > 0) {
 | |
|                         $('.qsltable tr:last').after('<tr><td style="text-align: center">'+data.status.front.filename+'</td>' +
 | |
|                             '<td id="'+data.status.front.insertid+'"style="text-align: center"><button onclick="deleteQsl('+data.status.front.insertid+');" class="btn btn-sm btn-danger">Delete</button></td>' +
 | |
|                             '<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.front.filename + '\')" class="btn btn-sm btn-success">View</button></td>'+
 | |
|                             '</tr>');
 | |
|                         var quantity = $(".carousel-indicators li").length;
 | |
|                         $(".carousel-indicators").append('<li data-target="#carouselExampleIndicators" data-slide-to="'+quantity+'"></li>');
 | |
|                         $(".carousel-inner").append('<center><div class="carousel-item carouselimageid_'+data.status.front.insertid+'"><img class="img-fluid w-qsl" src="'+baseURL+'/assets/qslcard/'+data.status.front.filename+'" alt="QSL picture #'+(quantity+1)+'"></div></center>');
 | |
|                         $("#qslcardfront").val(null);
 | |
|                     }
 | |
|                     else {
 | |
|                         $("#qslupload").prepend('<table style="width:100%" class="qsltable table table-sm table-bordered table-hover table-striped table-condensed">'+
 | |
|                             '<thead>'+
 | |
|                                '<tr>'+
 | |
|                             '<th style="text-align: center">QSL image file</th>'+
 | |
|                             '<th style="text-align: center"></th>'+
 | |
|                             '<th style="text-align: center"></th>'+
 | |
|                             '</tr>'+
 | |
|                             '</thead><tbody>'+
 | |
|                                 '<tr><td style="text-align: center">'+data.status.front.filename+'</td>' +
 | |
|                             '<td id="'+data.status.front.insertid+'"style="text-align: center"><button onclick="deleteQsl('+data.status.front.insertid+');" class="btn btn-sm btn-danger">Delete</button></td>' +
 | |
|                             '<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.front.filename + '\')" class="btn btn-sm btn-success">View</button></td>'+
 | |
|                             '</tr>'+
 | |
|                         '</tbody></table>');
 | |
|                         $('.qslcardtab').removeAttr('hidden');
 | |
|                         var quantity = $(".carousel-indicators li").length;
 | |
|                         $(".carousel-indicators").append('<li class="active" data-target="#carouselExampleIndicators" data-slide-to="'+quantity+'"></li>');
 | |
|                         $(".carousel-inner").append('<center><div class="active carousel-item carouselimageid_'+data.status.front.insertid+'"><img class="img-fluid w-qsl" src="'+baseURL+'/assets/qslcard/'+data.status.front.filename+'" alt="QSL picture #'+(quantity+1)+'"></div></center>');
 | |
|                         $(".carouselExampleIndicators").carousel();
 | |
|                         $("#qslcardfront").val(null);
 | |
|                     }
 | |
| 
 | |
|                 } else if (data.status.front.status != '') {
 | |
|                     $("#qslupload").append('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Front QSL Card:' +
 | |
|                     data.status.front.error +
 | |
|                         '</div>');
 | |
|                 }
 | |
|                 if (data.status.back.status == 'Success') {
 | |
|                     var qsoid = $("#qsoid").text();
 | |
|                     if ($('.qsltable').length > 0) {
 | |
|                         $('.qsltable tr:last').after('<tr><td style="text-align: center">'+data.status.back.filename+'</td>' +
 | |
|                             '<td id="'+data.status.back.insertid+'"style="text-align: center"><button onclick="deleteQsl('+data.status.back.insertid+');" class="btn btn-sm btn-danger">Delete</button></td>' +
 | |
|                             '<td style="text-align: center"><button onclick="viewQsl(\'' + data.status.back.filename + '\')" class="btn btn-sm btn-success">View</button></td>'+
 | |
|                             '</tr>');
 | |
|                         var quantity = $(".carousel-indicators li").length;
 | |
|                         $(".carousel-indicators").append('<li data-target="#carouselExampleIndicators" data-slide-to="'+quantity+'"></li>');
 | |
|                         $(".carousel-inner").append('<center><div class="carousel-item carouselimageid_'+data.status.back.insertid+'"><img class="img-fluid w-qsl" src="'+baseURL+'/assets/qslcard/'+data.status.back.filename+'" alt="QSL picture #'+(quantity+1)+'"></div></center>');
 | |
|                         $("#qslcardback").val(null);
 | |
|                     }
 | |
|                     else {
 | |
|                         $("#qslupload").prepend('<table style="width:100%" class="qsltable table table-sm table-bordered table-hover table-striped table-condensed">'+
 | |
|                             '<thead>'+
 | |
|                             '<tr>'+
 | |
|                             '<th style="text-align: center">QSL image file</th>'+
 | |
|                             '<th style="text-align: center"></th>'+
 | |
|                             '<th style="text-align: center"></th>'+
 | |
|                             '</tr>'+
 | |
|                             '</thead><tbody>'+
 | |
|                             '<tr><td style="text-align: center">'+data.status.back.filename+'</td>' +
 | |
|                             '<td id="'+data.status.back.insertid+'"style="text-align: center"><button onclick="deleteQsl('+data.status.back.insertid+');" class="btn btn-sm btn-danger">Delete</button></td>' +
 | |
|                             '<td><button onclick="viewQsl(\'' + data.status.back.filename + '\')" class="btn btn-sm btn-success">View</button></td>'+
 | |
|                             '</tr>'+
 | |
|                             '</tbody></table>');
 | |
|                         $('.qslcardtab').removeAttr('hidden');
 | |
|                         var quantity = $(".carousel-indicators li").length;
 | |
|                         $(".carousel-indicators").append('<li class="active" data-target="#carouselExampleIndicators" data-slide-to="'+quantity+'"></li>');
 | |
|                         $(".carousel-inner").append('<center><div class="active carousel-item carouselimageid_'+data.status.back.insertid+'"><img class="img-fluid w-qsl" src="'+baseURL+'/assets/qslcard/'+data.status.back.filename+'" alt="QSL picture #'+(quantity+1)+'"></div></center>');
 | |
|                         $(".carouselExampleIndicators").carousel();
 | |
|                         $("#qslcardback").val(null);
 | |
|                     }
 | |
|                 } else if (data.status.back.status != '') {
 | |
|                     $("#qslupload").append('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>\nBack QSL Card: ' +
 | |
|                     data.status.back.error +
 | |
|                         '</div>');
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| </script>
 | |
| <script>
 | |
| 
 | |
| 	function addQsosToQsl(filename) {
 | |
| 		var title = 'Add additional QSOs to a QSL Card';
 | |
| 
 | |
| 		var baseURL= "<?php echo base_url();?>";
 | |
| 		$.ajax({
 | |
| 			url: baseURL + 'index.php/qsl/loadSearchForm',
 | |
| 			type: 'post',
 | |
| 			data: {'filename': filename},
 | |
| 			success: function(html) {
 | |
| 				BootstrapDialog.show({
 | |
| 					title: title,
 | |
| 					size: BootstrapDialog.SIZE_WIDE,
 | |
| 					cssClass: 'qso-search_results',
 | |
| 					nl2br: false,
 | |
| 					message: html,
 | |
| 					buttons: [{
 | |
| 						label: 'Close',
 | |
| 						action: function (dialogItself) {
 | |
| 							dialogItself.close();
 | |
| 						}
 | |
| 					}]
 | |
| 				});
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| 
 | |
| 	function addQsoToQsl(qsoid, filename, id) {
 | |
| 		var title = 'Add additional QSOs to a QSL Card';
 | |
| 
 | |
| 		var baseURL= "<?php echo base_url();?>";
 | |
| 		$.ajax({
 | |
| 			url: baseURL + 'index.php/qsl/addQsoToQsl',
 | |
| 			type: 'post',
 | |
| 			data: {'filename': filename, 'qsoid': qsoid},
 | |
| 			success: function(html) {
 | |
| 				if (html.status == 'Success') {
 | |
| 					location.reload();
 | |
| 				} else {
 | |
| 					$(".alert").remove();
 | |
| 					$('#searchresult').prepend('<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Something went wrong. Please try again!</div>');
 | |
| 				}
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| 
 | |
| 	function searchAdditionalQsos(filename) {
 | |
| 		var baseURL= "<?php echo base_url();?>";
 | |
| 		$.ajax({
 | |
| 			url: baseURL + 'index.php/qsl/searchQsos',
 | |
| 			type: 'post',
 | |
| 			data: {'callsign': $('#callsign').val(), 'filename': filename},
 | |
| 			success: function(html) {
 | |
| 				$('#searchresult').empty();
 | |
| 				$('#searchresult').append(html);
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| </script>
 | |
| <?php if ($this->uri->segment(1) == "contesting" && ($this->uri->segment(2) != "add" && $this->uri->segment(2) != "edit")) { ?>
 | |
|     <script>
 | |
|         var manual = <?php echo $_GET['manual']; ?>;
 | |
|     </script>
 | |
|     <script src="<?php echo base_url() ;?>assets/js/sections/contesting.js?v2"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "station") { ?>
 | |
| <script>
 | |
|     var baseURL= "<?php echo base_url();?>";
 | |
| 
 | |
| 	var state = $("#StateHelp option:selected").text();
 | |
| 	if (state != "") {
 | |
| 		$("#stationCntyInput").prop('disabled', false);
 | |
| 		station_profile_selectize_usa_county();
 | |
| 	}
 | |
| 
 | |
|     $('#StateHelp').change(function(){
 | |
|         var state = $("#StateHelp option:selected").text();
 | |
|         if (state != "") {
 | |
|             $("#stationCntyInput").prop('disabled', false);
 | |
| 			station_profile_selectize_usa_county();
 | |
|         } else {
 | |
|             $("#stationCntyInput").prop('disabled', true);
 | |
|             //$('#stationCntyInput')[0].selectize.destroy();
 | |
|             $("#stationCntyInput").val("");
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     function station_profile_selectize_usa_county() {
 | |
| 		$('#stationCntyInput').selectize({
 | |
| 			maxItems: 1,
 | |
| 			closeAfterSelect: true,
 | |
| 			loadThrottle: 250,
 | |
| 			valueField: 'name',
 | |
| 			labelField: 'name',
 | |
| 			searchField: 'name',
 | |
| 			options: [],
 | |
| 			create: false,
 | |
| 			load: function(query, callback) {
 | |
| 				var state = $("#StateHelp option:selected").text();
 | |
| 
 | |
| 				if (!query || state == "") return callback();
 | |
| 				$.ajax({
 | |
| 					url: baseURL+'index.php/station/get_county',
 | |
| 					type: 'GET',
 | |
| 					dataType: 'json',
 | |
| 					data: {
 | |
| 						query: query,
 | |
| 						state: state,
 | |
| 					},
 | |
| 					error: function() {
 | |
| 						callback();
 | |
| 					},
 | |
| 					success: function(res) {
 | |
| 						callback(res);
 | |
| 					}
 | |
| 				});
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| </script>
 | |
| 
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "counties" || $this->uri->segment(2) == "counties_details") { ?>
 | |
| <script>
 | |
|     $('.countiestable').DataTable({
 | |
|         "pageLength": 25,
 | |
|         responsive: false,
 | |
|         ordering: false,
 | |
|         "scrollY":        "390px",
 | |
|         "scrollCollapse": true,
 | |
|         "paging":         false,
 | |
|         "scrollX": true,
 | |
|         dom: 'Bfrtip',
 | |
|         buttons: [
 | |
|             'csv'
 | |
|         ]
 | |
|     });
 | |
| 
 | |
|     // change color of csv-button if dark mode is chosen
 | |
|     if (isDarkModeTheme()) {
 | |
|         $(".buttons-csv").css("color", "white");
 | |
|     }
 | |
| 
 | |
|     function displayCountyContacts(state, county) {
 | |
|         var baseURL= "<?php echo base_url();?>";
 | |
|         $.ajax({
 | |
|             url: baseURL + 'index.php/awards/counties_details_ajax',
 | |
|             type: 'post',
 | |
|             data: {'State': state, 'County': county },
 | |
|             success: function(html) {
 | |
|                 BootstrapDialog.show({
 | |
|                     title: lang_general_word_qso_data,
 | |
|                     size: BootstrapDialog.SIZE_WIDE,
 | |
|                     cssClass: 'qso-counties-dialog',
 | |
|                     nl2br: false,
 | |
|                     message: html,
 | |
|                     onshown: function(dialog) {
 | |
|                        $('[data-toggle="tooltip"]').tooltip();
 | |
|                     },
 | |
|                     buttons: [{
 | |
|                         label: 'Close',
 | |
|                         action: function (dialogItself) {
 | |
|                             dialogItself.close();
 | |
|                         }
 | |
|                     }]
 | |
|                 });
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(2) == "sig_details") { ?>
 | |
| 	<script>
 | |
| 		$('.tablesig').DataTable({
 | |
| 			"pageLength": 25,
 | |
| 			responsive: false,
 | |
| 			ordering: false,
 | |
| 			"scrollY":        "400px",
 | |
| 			"scrollCollapse": true,
 | |
| 			"paging":         false,
 | |
| 			"scrollX": true,
 | |
| 			dom: 'Bfrtip',
 | |
| 			buttons: [
 | |
| 				'csv'
 | |
| 			]
 | |
| 		});
 | |
| 
 | |
| 		// change color of csv-button if dark mode is chosen
 | |
| 		if (isDarkModeTheme()) {
 | |
| 			$(".buttons-csv").css("color", "white");
 | |
| 		}
 | |
| 	</script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) == "add") { ?>
 | |
| 	<script src="<?php echo base_url() ;?>assets/js/sections/contestingnames.js"></script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "themes") { ?>
 | |
|     <script>
 | |
|     function deleteTheme(id, name) {
 | |
|         BootstrapDialog.confirm({
 | |
|             title: 'DANGER',
 | |
|             message: 'Warning! Are you sure you want to delete the following theme: ' + name + '?'  ,
 | |
|             type: BootstrapDialog.TYPE_DANGER,
 | |
|             closable: true,
 | |
|             draggable: true,
 | |
|             btnOKClass: 'btn-danger',
 | |
|             callback: function(result) {
 | |
|                 if(result) {
 | |
|                     $.ajax({
 | |
|                         url: base_url + 'index.php/themes/delete',
 | |
|                         type: 'post',
 | |
|                         data: {'id': id
 | |
|                         },
 | |
|                         success: function(data) {
 | |
|                             $(".theme_" + id).parent("tr:first").remove(); // removes mode from table
 | |
|                         }
 | |
|                     });
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
| 	function addThemeDialog() {
 | |
| 		$.ajax({
 | |
| 			url: base_url + 'index.php/themes/add',
 | |
| 			type: 'post',
 | |
| 			success: function(html) {
 | |
| 				BootstrapDialog.show({
 | |
| 					title: 'Create Theme',
 | |
| 					size: BootstrapDialog.SIZE_WIDE,
 | |
| 					cssClass: 'create-theme-dialog',
 | |
| 					nl2br: false,
 | |
| 					message: html,
 | |
| 					buttons: [{
 | |
| 						label: 'Close',
 | |
| 						action: function (dialogItself) {
 | |
| 							dialogItself.close();
 | |
| 						}
 | |
| 					}]
 | |
| 				});
 | |
| 			}
 | |
| 		});
 | |
| 	}
 | |
| 
 | |
| 	function addTheme(form) {
 | |
| 		if (form.name.value != '') {
 | |
| 			$.ajax({
 | |
| 				url: base_url + 'index.php/themes/add',
 | |
| 				type: 'post',
 | |
| 				data: {
 | |
| 					'name': form.name.value,
 | |
| 					'foldername': form.foldername.value,
 | |
| 				},
 | |
| 				success: function(html) {
 | |
| 					location.reload();
 | |
| 				}
 | |
| 			});
 | |
| 		}
 | |
| 	}
 | |
|     </script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "dxatlas") { ?>
 | |
| 	<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
| 	<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
| 	<script>
 | |
| 		$(function () {
 | |
| 			$('#datetimepicker1').datetimepicker({
 | |
| 				format: 'DD/MM/YYYY',
 | |
| 			});
 | |
| 		});
 | |
| 
 | |
| 		$(function () {
 | |
| 			$('#datetimepicker2').datetimepicker({
 | |
| 				format: 'DD/MM/YYYY',
 | |
| 			});
 | |
| 		});
 | |
| 	</script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "csv") { ?>
 | |
| 	<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
| 	<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>
 | |
| 	<script>
 | |
| 		$(function () {
 | |
| 			$('#datetimepicker1').datetimepicker({
 | |
| 				format: 'DD/MM/YYYY',
 | |
| 			});
 | |
| 		});
 | |
| 
 | |
| 		$(function () {
 | |
| 			$('#datetimepicker2').datetimepicker({
 | |
| 				format: 'DD/MM/YYYY',
 | |
| 			});
 | |
| 		});
 | |
| 	</script>
 | |
| <?php } ?>
 | |
| 
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "eqsl") { ?>
 | |
| 	<script>
 | |
| 	$('.qsotable').DataTable({
 | |
| 		"stateSave": true,
 | |
| 		"pageLength": 25,
 | |
| 		responsive: false,
 | |
| 		"scrollY": "400px",
 | |
| 		"scrollCollapse": true,
 | |
| 		"paging": false,
 | |
| 		"scrollX": true,
 | |
| 		"ordering": true,
 | |
| 		"order": [ 0, 'desc' ],
 | |
| 	});
 | |
| 	</script>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php if ($this->uri->segment(1) == "awards") {
 | |
| 	// Get Date format
 | |
| 	if($this->session->userdata('user_date_format')) {
 | |
| 		// If Logged in and session exists
 | |
| 		$custom_date_format = $this->session->userdata('user_date_format');
 | |
| 	} else {
 | |
| 		// Get Default date format from /config/cloudlog.php
 | |
| 		$custom_date_format = $this->config->item('qso_date_format');
 | |
| 	}
 | |
| 
 | |
|     switch ($custom_date_format) {
 | |
|         case 'd/m/y': $usethisformat = 'D/MM/YY';break;
 | |
|         case 'd/m/Y': $usethisformat = 'D/MM/YYYY';break;
 | |
|         case 'm/d/y': $usethisformat = 'MM/D/YY';break;
 | |
|         case 'm/d/Y': $usethisformat = 'MM/D/YYYY';break;
 | |
|         case 'd.m.Y': $usethisformat = 'D.MM.YYYY';break;
 | |
|         case 'y/m/d': $usethisformat = 'YY/MM/D';break;
 | |
|         case 'Y-m-d': $usethisformat = 'YYYY-MM-D';break;
 | |
|         case 'M d, Y': $usethisformat = 'MMM D, YYYY';break;
 | |
|         case 'M d, y': $usethisformat = 'MMM D, YY';break;
 | |
|     }
 | |
| 
 | |
|     ?>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
 | |
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/datetime-moment.js"></script>
 | |
|     <?php if ($this->uri->segment(2) == "wwff") { ?>
 | |
|         <script>
 | |
|             $.fn.dataTable.moment('<?php echo $usethisformat ?>');
 | |
|             $.fn.dataTable.ext.buttons.clear = {
 | |
|                 className: 'buttons-clear',
 | |
|                 action: function ( e, dt, node, config ) {
 | |
|                    dt.search('').draw();
 | |
|                 }
 | |
|             };
 | |
|             $('#wwfftable').DataTable({
 | |
|                 "pageLength": 25,
 | |
|                 responsive: false,
 | |
|                 ordering: true,
 | |
|                 "scrollY":        "500px",
 | |
|                 "scrollCollapse": true,
 | |
|                 "paging":         false,
 | |
|                 "scrollX": true,
 | |
|                 "order": [ 0, 'asc' ],
 | |
|                 dom: 'Bfrtip',
 | |
|                 buttons: [
 | |
|                    {
 | |
|                       extend: 'csv'
 | |
|                    },
 | |
|                    {
 | |
|                       extend: 'clear',
 | |
|                       text: 'Clear'
 | |
|                    }
 | |
|                 ]
 | |
|             });
 | |
|             // change color of csv-button if dark mode is chosen
 | |
|             if (isDarkModeTheme()) {
 | |
|                $('[class*="buttons"]').css("color", "white");
 | |
|             }
 | |
|         </script>
 | |
|     <?php } else if ($this->uri->segment(2) == "pota") { ?>
 | |
|         <script>
 | |
|             $.fn.dataTable.moment('<?php echo $usethisformat ?>');
 | |
|             $.fn.dataTable.ext.buttons.clear = {
 | |
|                 className: 'buttons-clear',
 | |
|                 action: function ( e, dt, node, config ) {
 | |
|                    dt.search('').draw();
 | |
|                 }
 | |
|             };
 | |
|             $('#potatable').DataTable({
 | |
|                 "pageLength": 25,
 | |
|                 responsive: false,
 | |
|                 ordering: true,
 | |
|                 "scrollY":        "500px",
 | |
|                 "scrollCollapse": true,
 | |
|                 "paging":         false,
 | |
|                 "scrollX": true,
 | |
|                 "order": [ 0, 'asc' ],
 | |
|                 dom: 'Bfrtip',
 | |
|                 buttons: [
 | |
|                    {
 | |
|                       extend: 'csv'
 | |
|                    },
 | |
|                    {
 | |
|                       extend: 'clear',
 | |
|                       text: 'Clear'
 | |
|                    }
 | |
|                 ]
 | |
|             });
 | |
|             // change color of csv-button if dark mode is chosen
 | |
|             if (isDarkModeTheme()) {
 | |
|                $('[class*="buttons"]').css("color", "white");
 | |
|             }
 | |
|         </script>
 | |
|     <?php } else if ($this->uri->segment(2) == "dok") { ?>
 | |
|         <script>
 | |
|             $.fn.dataTable.ext.buttons.clear = {
 | |
|                 className: 'buttons-clear',
 | |
|                 action: function ( e, dt, node, config ) {
 | |
|                    dt.search('').draw();
 | |
|                 }
 | |
|             };
 | |
|             $('#doktable').DataTable({
 | |
|                 "pageLength": 25,
 | |
|                 responsive: false,
 | |
|                 ordering: false,
 | |
|                 "scrollY":        "500px",
 | |
|                 "scrollCollapse": true,
 | |
|                 "paging":         false,
 | |
|                 "scrollX": true,
 | |
|                 dom: 'Bfrtip',
 | |
|                 buttons: [
 | |
|                    {
 | |
|                       extend: 'csv'
 | |
|                    },
 | |
|                    {
 | |
|                       extend: 'clear',
 | |
|                       text: 'Clear'
 | |
|                    }
 | |
|                 ]
 | |
|             });
 | |
|             // change color of csv-button if dark mode is chosen
 | |
|             if (isDarkModeTheme()) {
 | |
|                $('[class*="buttons"]').css("color", "white");
 | |
|             }
 | |
|         </script>
 | |
|     <?php } ?>
 | |
| <?php } ?>
 | |
| 
 | |
| <?php
 | |
| if (isset($scripts) && is_array($scripts)){
 | |
| 	foreach($scripts as $script){
 | |
| 		?><script type="text/javascript" src="<?php echo base_url() . $script ;?>"></script>
 | |
| 		<?php
 | |
| 	}
 | |
| }
 | |
| ?>
 | |
| 
 | |
|   </body>
 | |
| </html>
 |