diff --git a/application/config/migration.php b/application/config/migration.php index 8e09e94f..7bdc9b40 100644 --- a/application/config/migration.php +++ b/application/config/migration.php @@ -22,7 +22,7 @@ $config['migration_enabled'] = TRUE; | */ -$config['migration_version'] = 172; +$config['migration_version'] = 173; /* |-------------------------------------------------------------------------- diff --git a/application/language/bulgarian/general_words_lang.php b/application/language/bulgarian/general_words_lang.php index ae9c7254..bf10e996 100644 --- a/application/language/bulgarian/general_words_lang.php +++ b/application/language/bulgarian/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Режим'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Sent'; $lang['gen_hamradio_rst_rcvd'] = 'Recv\'d'; $lang['gen_hamradio_band'] = 'Обхват'; diff --git a/application/language/chinese_simplified/general_words_lang.php b/application/language/chinese_simplified/general_words_lang.php index 778edd97..3cc4db85 100644 --- a/application/language/chinese_simplified/general_words_lang.php +++ b/application/language/chinese_simplified/general_words_lang.php @@ -122,6 +122,8 @@ $lang['gen_hamradio_callsign'] = '呼号'; $lang['gen_hamradio_prefix'] = "前缀"; $lang['gen_hamradio_suffix'] = "后缀"; $lang['gen_hamradio_mode'] = '模式'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_de'] = '本台呼号(De)'; $lang['gen_hamradio_dx'] = '对方呼号(Dx)'; $lang['gen_hamradio_rst_sent'] = '发送 信号报告(RST)'; diff --git a/application/language/czech/general_words_lang.php b/application/language/czech/general_words_lang.php index 6ae87734..7137b00b 100644 --- a/application/language/czech/general_words_lang.php +++ b/application/language/czech/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Režim'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Odesláno'; $lang['gen_hamradio_rst_rcvd'] = 'Přijato'; $lang['gen_hamradio_band'] = 'Pásmo'; diff --git a/application/language/dutch/general_words_lang.php b/application/language/dutch/general_words_lang.php index e5607902..d416cde8 100644 --- a/application/language/dutch/general_words_lang.php +++ b/application/language/dutch/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Mode'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Verzonden'; $lang['gen_hamradio_rst_rcvd'] = 'Ontvangen'; $lang['gen_hamradio_band'] = 'Band'; diff --git a/application/language/english/general_words_lang.php b/application/language/english/general_words_lang.php index 9d5dc399..d61b9f67 100644 --- a/application/language/english/general_words_lang.php +++ b/application/language/english/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Mode'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Sent'; $lang['gen_hamradio_rst_rcvd'] = 'Recv\'d'; $lang['gen_hamradio_band'] = 'Band'; diff --git a/application/language/finnish/general_words_lang.php b/application/language/finnish/general_words_lang.php index 358030a9..332c2038 100644 --- a/application/language/finnish/general_words_lang.php +++ b/application/language/finnish/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Lähetelaji'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Annettu raportti'; $lang['gen_hamradio_rst_rcvd'] = 'Saatu raportti'; $lang['gen_hamradio_band'] = 'Bandi'; diff --git a/application/language/french/general_words_lang.php b/application/language/french/general_words_lang.php index 769a90cb..a002b504 100644 --- a/application/language/french/general_words_lang.php +++ b/application/language/french/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = "De"; $lang['gen_hamradio_dx'] = "Dx"; $lang['gen_hamradio_mode'] = "Mode"; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = "Envoyé"; $lang['gen_hamradio_rst_rcvd'] = "Reçu"; $lang['gen_hamradio_band'] = "Bande"; diff --git a/application/language/german/general_words_lang.php b/application/language/german/general_words_lang.php index e979d804..44c55561 100644 --- a/application/language/german/general_words_lang.php +++ b/application/language/german/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Mode'; +$lang['gen_hamradio_ant_az'] = 'Antennenazimut'; +$lang['gen_hamradio_ant_el'] = 'Antennenelevation'; $lang['gen_hamradio_rst_sent'] = 'Gegeben'; $lang['gen_hamradio_rst_rcvd'] = 'Erhalten'; $lang['gen_hamradio_band'] = 'Band'; diff --git a/application/language/greek/general_words_lang.php b/application/language/greek/general_words_lang.php index 85dd279c..603a09fc 100644 --- a/application/language/greek/general_words_lang.php +++ b/application/language/greek/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Τρόπος'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Απεσταλμένα'; $lang['gen_hamradio_rst_rcvd'] = 'Ελήφθη\'d'; $lang['gen_hamradio_band'] = 'Ζώνη'; diff --git a/application/language/italian/general_words_lang.php b/application/language/italian/general_words_lang.php index 0ebcdac2..e44111a4 100644 --- a/application/language/italian/general_words_lang.php +++ b/application/language/italian/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Modo'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Inviato'; $lang['gen_hamradio_rst_rcvd'] = 'Ricevuto'; $lang['gen_hamradio_band'] = 'Banda'; diff --git a/application/language/polish/general_words_lang.php b/application/language/polish/general_words_lang.php index 43820d3f..abe07d7a 100644 --- a/application/language/polish/general_words_lang.php +++ b/application/language/polish/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Modulacja'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Wysłany'; $lang['gen_hamradio_rst_rcvd'] = 'Odebrany\'d'; $lang['gen_hamradio_band'] = 'Pasmo'; diff --git a/application/language/russian/general_words_lang.php b/application/language/russian/general_words_lang.php index 21394662..449cc322 100644 --- a/application/language/russian/general_words_lang.php +++ b/application/language/russian/general_words_lang.php @@ -125,6 +125,8 @@ $lang['gen_hamradio_callsign'] = 'Позывной'; $lang['gen_hamradio_de'] = 'от'; $lang['gen_hamradio_dx'] = 'DX'; $lang['gen_hamradio_mode'] = 'Вид модуляции'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Отправлено'; $lang['gen_hamradio_rst_rcvd'] = 'Получено'; $lang['gen_hamradio_bandgroup'] = "Bandgroup"; diff --git a/application/language/spanish/general_words_lang.php b/application/language/spanish/general_words_lang.php index 9097d71d..fef4cac7 100644 --- a/application/language/spanish/general_words_lang.php +++ b/application/language/spanish/general_words_lang.php @@ -125,6 +125,8 @@ $lang['gen_hamradio_suffix'] = "Sufijo"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Modo'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Enviado'; $lang['gen_hamradio_rst_rcvd'] = 'Recibido'; $lang['gen_hamradio_band'] = 'Banda'; diff --git a/application/language/swedish/general_words_lang.php b/application/language/swedish/general_words_lang.php index 7035c6a9..8230402a 100644 --- a/application/language/swedish/general_words_lang.php +++ b/application/language/swedish/general_words_lang.php @@ -125,6 +125,8 @@ $lang['gen_hamradio_callsign'] = 'Signal'; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Mode'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Skickat'; $lang['gen_hamradio_rst_rcvd'] = 'Mottagen\'d'; $lang['gen_hamradio_band'] = 'Band'; diff --git a/application/language/turkish/general_words_lang.php b/application/language/turkish/general_words_lang.php index 1a15ccbe..42f79ca3 100644 --- a/application/language/turkish/general_words_lang.php +++ b/application/language/turkish/general_words_lang.php @@ -124,6 +124,8 @@ $lang['gen_hamradio_suffix'] = "Suffix"; $lang['gen_hamradio_de'] = 'De'; $lang['gen_hamradio_dx'] = 'Dx'; $lang['gen_hamradio_mode'] = 'Mod'; +$lang['gen_hamradio_ant_az'] = 'Antenna Azimuth'; +$lang['gen_hamradio_ant_el'] = 'Antenna Elevation'; $lang['gen_hamradio_rst_sent'] = 'Gönderilen'; $lang['gen_hamradio_rst_rcvd'] = 'Alınan'; $lang['gen_hamradio_band'] = 'Bant'; diff --git a/application/libraries/AdifHelper.php b/application/libraries/AdifHelper.php index 9b0472f8..22a9d02c 100644 --- a/application/libraries/AdifHelper.php +++ b/application/libraries/AdifHelper.php @@ -2,7 +2,14 @@ class AdifHelper { - public function getAdifLine($qso) { + /** + * Generates an ADIF line for a QSO record. + * + * @param object $qso The QSO record. + * @param bool $satellite_remap Flag indicating whether to remap satellite names. + * @return string The ADIF line. + */ + public function getAdifLine($qso, $satellite_remap = false) { $normalFields = array( 'ADDRESS', 'AGE', @@ -80,7 +87,6 @@ class AdifHelper { 'RST_SENT', 'RX_PWR', 'SAT_MODE', - 'SAT_NAME', 'SFI', 'SILENT_KEY', 'SKCC', @@ -183,11 +189,23 @@ class AdifHelper { $line .= $this->getAdifFieldLine("MY_GRIDSQUARE", $qso->station_gridsquare); } + if($qso->COL_SAT_NAME) { + if($satellite_remap === true) { + $satname = $this->lotw_satellite_map($qso->COL_SAT_NAME); + if($satname) { + $line .= $this->getAdifFieldLine("SAT_NAME", $satname); + } else { + $line .= $this->getAdifFieldLine("SAT_NAME", $qso->COL_SAT_NAME); + } + } else { + $line .= $this->getAdifFieldLine("SAT_NAME", $qso->COL_SAT_NAME); + } + } + $line .= $this->getAdifFieldLine("MY_IOTA", $qso->station_iota); $line .= $this->getAdifFieldLine("MY_SOTA_REF", $qso->station_sota); - $line .= $this->getAdifFieldLine("MY_POTA_REF", $qso->station_pota); $line .= $this->getAdifFieldLine("MY_CQ_ZONE", $qso->station_cq); @@ -258,4 +276,36 @@ class AdifHelper { return ""; } } + + /* + | Function: lotw_satellite_map + | Requires: OSCAR Satellite name $satname + | + | Outputs if LoTW uses a different satellite name + | + */ + function lotw_satellite_map($satname) { + $arr = array( + "ARISS" => "ISS", + "UKUBE1" => "UKUBE-1", + "KEDR" => "ARISSAT-1", + "TO-108" => "CAS-6", + "TAURUS" => "TAURUS-1", + "AISAT1" => "AISAT-1", + 'UVSQ' => "UVSQ-SAT", + 'CAS-3H' => "LILACSAT-2", + 'IO-117' => "GREENCUBE", + "TEVEL1" => "TEVEL-1", + "TEVEL2" => "TEVEL-2", + "TEVEL3" => "TEVEL-3", + "TEVEL4" => "TEVEL-4", + "TEVEL5" => "TEVEL-5", + "TEVEL6" => "TEVEL-6", + "TEVEL7" => "TEVEL-7", + "TEVEL8" => "TEVEL-8", + "INSPR7" => "INSPIRE-SAT 7", + ); + + return array_search(strtoupper($satname),$arr,true); + } } diff --git a/application/migrations/173_tag_2_6_6.php b/application/migrations/173_tag_2_6_6.php new file mode 100644 index 00000000..a3074efd --- /dev/null +++ b/application/migrations/173_tag_2_6_6.php @@ -0,0 +1,30 @@ +db->where('option_name', 'version'); + $this->db->update('options', array('option_value' => '2.6.6')); + + // Trigger Version Info Dialog + $this->db->where('option_type', 'version_dialog'); + $this->db->where('option_name', 'confirmed'); + $this->db->update('user_options', array('option_value' => 'false')); + + } + + public function down() + { + $this->db->where('option_name', 'version'); + $this->db->update('options', array('option_value' => '2.6.5')); + } +} \ No newline at end of file diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 4e772095..a9c77bb0 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -2984,8 +2984,9 @@ class Logbook_model extends CI_Model } /* Used to check if the qso is already in the database */ - function import_check($datetime, $callsign, $band, $mode, $station_callsign, $station_id = null) { - $mode=$this->get_main_mode_from_mode($mode); + function import_check($datetime, $callsign, $band, $mode, $station_callsign, $station_id = null) + { + $mode = $this->get_main_mode_from_mode($mode); $this->db->select('COL_PRIMARY_KEY, COL_TIME_ON, COL_CALL, COL_BAND'); $this->db->where('COL_TIME_ON >= DATE_ADD(DATE_FORMAT("' . $datetime . '", \'%Y-%m-%d %H:%i\' ), INTERVAL -15 MINUTE )'); @@ -2995,8 +2996,8 @@ class Logbook_model extends CI_Model $this->db->where('COL_BAND', $band); $this->db->where('COL_MODE', $mode); - if(isset($station_id) && $station_id > 0) { - $this->db->where('station_id', $station_id); + if (isset($station_id) && $station_id > 0) { + $this->db->where('station_id', $station_id); } $query = $this->db->get($this->config->item('table_name')); @@ -3412,8 +3413,15 @@ class Logbook_model extends CI_Model // Check if RX_PWR is "K" which N1MM+ uses to indicate 1000W if ($record['rx_pwr'] == "K") { $rx_pwr = 1000; + } elseif ($record['rx_pwr'] == "KW") { + $rx_pwr = 1000; } else { - $rx_pwr = filter_var($record['rx_pwr'], FILTER_VALIDATE_FLOAT); + if (isset($record['rx_pwr']) && is_numeric($record['rx_pwr'])) { + $rx_pwr = $record['rx_pwr']; + } else { + $rx_pwr = null; + $my_error .= "Error QSO: Date: " . $time_on . " Callsign: " . $record['call'] . " RX_PWR (".$record['rx_pwr'].") is not a number
"; + } } } else { $rx_pwr = NULL; @@ -3432,13 +3440,15 @@ class Logbook_model extends CI_Model } if (isset($record['ant_az'])) { - $input_ant_az = filter_var($record['ant_az'], FILTER_SANITIZE_NUMBER_INT); + $input_ant_az = filter_var($record['ant_az'], FILTER_VALIDATE_FLOAT); + $input_ant_az = fmod($input_ant_az, 360); } else { $input_ant_az = NULL; } if (isset($record['ant_el'])) { - $input_ant_el = filter_var($record['ant_el'], FILTER_SANITIZE_NUMBER_INT); + $input_ant_el = filter_var($record['ant_el'], FILTER_VALIDATE_FLOAT); + $input_ant_el = fmod($input_ant_el, 90); } else { $input_ant_el = NULL; } diff --git a/application/views/adif/data/clublog.php b/application/views/adif/data/clublog.php index 3e44ae4f..b4b07d09 100644 --- a/application/views/adif/data/clublog.php +++ b/application/views/adif/data/clublog.php @@ -9,5 +9,5 @@ $CI =& get_instance(); $CI->load->library('AdifHelper'); foreach ($qsos->result() as $qso) { - echo $CI->adifhelper->getAdifLine($qso); + echo $CI->adifhelper->getAdifLine($qso, $satellite_remap = true); } diff --git a/application/views/components/upcoming_dxccs.php b/application/views/components/upcoming_dxccs.php index d585e4ae..81722036 100644 --- a/application/views/components/upcoming_dxccs.php +++ b/application/views/components/upcoming_dxccs.php @@ -1,15 +1,15 @@ - +
'; - echo ''; // Date - echo ''; // Callsign - echo ''; // Country + echo ''; // Date + echo ''; // Callsign + echo ''; // Country echo ''; } ?> diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index a0c2d2bd..002ac060 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1,14 +1,14 @@ uri->segment(1) == "activators") { ?> - + - - + + - - - - + + + + @@ -54,11 +54,11 @@ document.addEventListener('htmx:afterSwap', function(event) { $('[data-bs-toggle="tooltip"]').tooltip(); }); - +session->userdata('user_id') != null) { +if ($this->session->userdata('user_id') != null) { $versionDialog = $this->optionslib->get_option('version_dialog'); if (empty($versionDialog)) { $this->optionslib->update('version_dialog', 'release_notes', 'yes'); @@ -67,23 +67,23 @@ if($this->session->userdata('user_id') != null) { if (empty($versionDialogHeader)) { $this->optionslib->update('version_dialog_header', $this->lang->line('options_version_dialog'), 'yes'); } - if($versionDialog != "disabled") { - $confirmed = $this->user_options_model->get_options('version_dialog', array('option_name'=>'confirmed'))->result(); - $confirmation_value = (isset($confirmed[0]->option_value))?$confirmed[0]->option_value:'false'; + if ($versionDialog != "disabled") { + $confirmed = $this->user_options_model->get_options('version_dialog', array('option_name' => 'confirmed'))->result(); + $confirmation_value = (isset($confirmed[0]->option_value)) ? $confirmed[0]->option_value : 'false'; if ($confirmation_value != 'true') { $this->user_options_model->set_option('version_dialog', 'confirmed', array('boolean' => $confirmation_value)); - ?> + } + } + } + ?> uri->segment(1) == "oqrs") { ?> - + uri->segment(1) == "options") { ?> @@ -94,21 +94,20 @@ if($this->session->userdata('user_id') != null) { type: 'POST', }); }); - -uri->segment(1) == "awards" && ($this->uri->segment(2) == "cq") ) { ?> +uri->segment(1) == "awards" && ($this->uri->segment(2) == "cq")) { ?> - + -uri->segment(1) == "awards" && ($this->uri->segment(2) == "iota") ) { ?> - +uri->segment(1) == "awards" && ($this->uri->segment(2) == "iota")) { ?> + -uri->segment(1) == "awards" && ($this->uri->segment(2) == "dxcc") ) { ?> - +uri->segment(1) == "awards" && ($this->uri->segment(2) == "dxcc")) { ?> + uri->segment(1) == "statistics") { ?> @@ -128,42 +127,43 @@ if($this->session->userdata('user_id') != null) { -uri->segment(1) == "maintenance" ) { ?> - +uri->segment(1) == "maintenance") { ?> + -uri->segment(1) == "adif" ) { ?> - +uri->segment(1) == "adif") { ?> + -uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit") ) { ?> +uri->segment(1) == "notes" && ($this->uri->segment(2) == "add" || $this->uri->segment(2) == "edit")) { ?> - - + + uri->segment(1) == "logbooks" && $this->uri->segment(2) == "edit") { ?> - + - +uri->segment(1) == "station") { ?> - - + + uri->segment(1) == "logbooks") { ?> - + uri->segment(1) == "debug") { ?> - + $(function() { + $('[data-bs-toggle="tooltip"]').tooltip({ + 'delay': { + show: 500, + hide: 0 + }, + 'placement': 'right' + }); + }); + uri->segment(1) == "api" && $this->uri->segment(2) == "help") { ?> - + $(function() { + $('[data-bs-toggle="tooltip"]').tooltip({ + 'delay': { + show: 500, + hide: 0 + }, + 'placement': 'right' + }); + }); + uri->segment(1) == "search" && $this->uri->segment(2) == "filter") { ?> - + - + function save_edited_query(id) { + $('#description_' + id).attr('contenteditable', 'false'); + $('#edit_' + id).html('Edit'); + $.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('Edit'); // Change to edit button + $(".bootstrap-dialog-message").prepend('
The query description has been updated!
'); + $("#querydropdown option[value='" + id + "']").text($('#description_' + id).html()); // Change text in dropdown + }, + error: function() { + $(".bootstrap-dialog-message").prepend('
Something went wrong with the save. Please try again!
'); + }, + }); + } + + 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: lang_admin_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("", { + search: JSON.stringify(result, null, 2), + temp: "testvar" + }) + .done(function(data) { + $('.exportbutton').html(''); + + $('.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, + "language": { + url: getDataTablesLanguageUrl(), + }, + dom: 'Bfrtip', + buttons: [ + 'csv' + ] + }); + // change color of csv-button if dark mode is chosen + if (isDarkModeTheme()) { + $(".buttons-csv").css("color", "white"); + } + $('[data-bs-toggle="tooltip"]').tooltip(); + $(".searchbutton").removeClass('running'); + $(".searchbutton").prop('disabled', false); + $("#btn-save").show(); + $('.table-responsive .dropdown-toggle').off('mouseenter').on('mouseenter', function() { + showQsoActionsMenu($(this).closest('.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: lang_admin_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); + }); + uri->segment(1) == "map" && $this->uri->segment(2) == "custom") { ?> - - + + -uri->segment(1) == "" || $this->uri->segment(1) == "dashboard" ) { ?> - - +uri->segment(1) == "" || $this->uri->segment(1) == "dashboard") { ?> + + uri->segment(1) == "radio") { ?> - - + }); + }, 2000); + }); + uri->segment(1) == "search") { ?> - + uri->segment(1) == "logbook" && $this->uri->segment(2) != "view") { ?> - - + + uri->segment(1) == "qso") { ?> - -session->userdata('isWinkeyEnabled')) { ?> - -assets/js/sections/qso.js"> + session->userdata('isWinkeyEnabled')) { ?> + + optionslib->get_option('dxcache_url') != ''){ ?> - + if ($this->optionslib->get_option('dxcache_url') != '') { ?> + -load->model('stations'); @@ -1016,803 +1060,826 @@ $($('#callsign')).on('keypress',function(e) { } else { $user_gridsquare = $active_station_info->station_gridsquare; } -?> + ?> - - - - if ( ! manual ) { - $(function($) { - resetTimers(0); + + 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; + } + + -uri->segment(1) == "qso" || ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) != "add")) { ?> +uri->segment(1) == "qso" || ($this->uri->segment(1) == "contesting" && $this->uri->segment(2) != "add")) { ?> + // 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(); + } + }); + uri->segment(1) == "logbook" && $this->uri->segment(2) == "view") { ?> - + mymap.on('click', onMapClick); + uri->segment(1) == "update") { ?> - + uri->segment(1) == "gridsquares" && !empty($this->uri->segment(2))) { ?> - - + + - + var bands_available = ; + $('#gridsquare_bands').append('') + $.each(bands_available, function(key, value) { + $('#gridsquare_bands') + .append($("") + .attr("value", value) + .text(value)); + }); + + var num = "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 = "" + url + } + return false; + }); + }); + + uri->segment(1) == "activated_grids" && !empty($this->uri->segment(2))) { ?> - + - + 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); + + if (map.getZoom() > 2) { + session->userdata('user_callsign')) { ?> + var band = ''; + var search_type = "uri->segment(2); ?>"; + if (search_type == "satellites") { + band = 'SAT'; + } else { + band = "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-bs-toggle="tooltip"]').tooltip({ + boundary: 'window' + }); + } + $('.table-responsive .dropdown-toggle').off('mouseenter').on('mouseenter', function() { + showQsoActionsMenu($(this).closest('.dropdown')); + }); + } + }); + + } + }; + + uri->segment(1) == "activated_grids" && $this->uri->segment(2) == "band") { ?> + + var bands_available = ; + $('#gridsquare_bands').append('') + $.each(bands_available, function(key, value) { + $('#gridsquare_bands') + .append($("") + .attr("value", value) + .text(value)); + }); + + var num = "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 = "" + url + } + return false; + }); + }); + + uri->segment(1) == "dayswithqso") { ?> - + uri->segment(1) == "distances") { ?> @@ -1820,188 +1887,83 @@ $(document).ready(function(){ - + - uri->segment(1) == "hrdlog") { ?> - - - uri->segment(1) == "qrz") { ?> - - - uri->segment(1) == "webadif") { ?> - - +uri->segment(1) == "hrdlog") { ?> + + +uri->segment(1) == "qrz") { ?> + + +uri->segment(1) == "webadif") { ?> + + - + } + }); + } +uri->segment(2) == "dxcc") { ?> - - - -uri->segment(2) == "waja") { ?> - - - -uri->segment(2) == "vucc_band") { ?> - - -uri->segment(2) == "iota") { ?> - + + +uri->segment(2) == "waja") { ?> + + + +uri->segment(2) == "vucc_band") { ?> + + + +uri->segment(2) == "iota") { ?> + +uri->segment(1) == "timeline") { ?> + + +uri->segment(1) == "activators") { ?> + + + +uri->segment(1) == "mode") { ?> + + + +uri->segment(1) == "band") { ?> + + + +uri->segment(1) == "accumulated") { ?> + + + + +uri->segment(1) == "timeplotter") { ?> + + + + + + + +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; + } + +?> + + + + + + + + + + + + +uri->segment(1) == "contesting" && ($this->uri->segment(2) != "add" && $this->uri->segment(2) != "edit")) { ?> + + + + +uri->segment(1) == "station") { ?> + - function qso_save() { - var baseURL= ""; - 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'); - uri->segment(1) != "search" && $this->uri->segment(2) != "filter" && $this->uri->segment(1) != "qso" && $this->uri->segment(1) != "logbookadvanced") { ?>location.reload(); - }, - error: function(xhr, status, error) { - console.log(xhr.responseText); - } - }); - } - - uri->segment(1) == "timeline") { ?> - - - uri->segment(1) == "activators") { ?> - - - - uri->segment(1) == "mode") { ?> - - - - uri->segment(1) == "band") { ?> - - - -uri->segment(1) == "accumulated") { ?> - - -uri->segment(1) == "timeplotter") { ?> - - - - - - - -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; - } - - ?> - - +uri->segment(2) == "counties" || $this->uri->segment(2) == "counties_details") { ?> +uri->segment(2) == "sig_details") { ?> + - + + +uri->segment(1) == "contesting" && $this->uri->segment(2) == "add") { ?> + + + +uri->segment(1) == "themes") { ?> + - - - - -uri->segment(1) == "contesting" && ($this->uri->segment(2) != "add" && $this->uri->segment(2) != "edit")) { ?> - - - - -uri->segment(1) == "station") { ?> - - - - -uri->segment(2) == "counties" || $this->uri->segment(2) == "counties_details") { ?> - - - -uri->segment(2) == "sig_details") { ?> - - - -uri->segment(1) == "contesting" && $this->uri->segment(2) == "add") { ?> - - - -uri->segment(1) == "themes") { ?> - uri->segment(1) == "eqsl") { ?> - + 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; + // 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; + } + +?> uri->segment(2) == "wwff") { ?> @@ -3018,36 +3130,35 @@ function viewEqsl(picture, callsign) { $.fn.dataTable.moment(''); $.fn.dataTable.ext.buttons.clear = { className: 'buttons-clear', - action: function ( e, dt, node, config ) { - dt.search('').draw(); + action: function(e, dt, node, config) { + dt.search('').draw(); } }; $('#wwfftable').DataTable({ "pageLength": 25, responsive: false, ordering: true, - "scrollY": "500px", + "scrollY": "500px", "scrollCollapse": true, - "paging": false, + "paging": false, "scrollX": true, "language": { url: getDataTablesLanguageUrl(), }, - "order": [ 0, 'asc' ], + "order": [0, 'asc'], dom: 'Bfrtip', - buttons: [ - { - extend: 'csv' - }, - { - extend: 'clear', - text: 'Clear' - } + buttons: [{ + extend: 'csv' + }, + { + extend: 'clear', + text: 'Clear' + } ] }); // change color of csv-button if dark mode is chosen if (isDarkModeTheme()) { - $('[class*="buttons"]').css("color", "white"); + $('[class*="buttons"]').css("color", "white"); } uri->segment(2) == "pota") { ?> @@ -3055,71 +3166,69 @@ function viewEqsl(picture, callsign) { $.fn.dataTable.moment(''); $.fn.dataTable.ext.buttons.clear = { className: 'buttons-clear', - action: function ( e, dt, node, config ) { - dt.search('').draw(); + action: function(e, dt, node, config) { + dt.search('').draw(); } }; $('#potatable').DataTable({ "pageLength": 25, responsive: false, ordering: true, - "scrollY": "500px", + "scrollY": "500px", "scrollCollapse": true, - "paging": false, + "paging": false, "scrollX": true, "language": { url: getDataTablesLanguageUrl(), }, - "order": [ 0, 'asc' ], + "order": [0, 'asc'], dom: 'Bfrtip', - buttons: [ - { - extend: 'csv' - }, - { - extend: 'clear', - text: 'Clear' - } + buttons: [{ + extend: 'csv' + }, + { + extend: 'clear', + text: 'Clear' + } ] }); // change color of csv-button if dark mode is chosen if (isDarkModeTheme()) { - $('[class*="buttons"]').css("color", "white"); + $('[class*="buttons"]').css("color", "white"); } uri->segment(2) == "dok") { ?> @@ -3128,33 +3237,40 @@ function viewEqsl(picture, callsign) { uri->segment(1) == "user") { ?> - + - - - + + + + \ No newline at end of file diff --git a/application/views/user/login.php b/application/views/user/login.php index 7ce6d877..32db00e1 100644 --- a/application/views/user/login.php +++ b/application/views/user/login.php @@ -34,6 +34,9 @@ body {

+ + load->view('layout/messages'); ?> +
form_validation->set_error_delimiters('', ''); ?> @@ -51,7 +54,6 @@ body {

- load->view('layout/messages'); ?>
diff --git a/application/views/view_log/qso.php b/application/views/view_log/qso.php index 2d28e08f..0e0acdfe 100644 --- a/application/views/view_log/qso.php +++ b/application/views/view_log/qso.php @@ -215,6 +215,21 @@
+ + COL_ANT_AZ != null) { ?> + + + + + + + COL_ANT_EL != null) { ?> + + + + + + name != null) { ?> diff --git a/assets/css/cyborg/overrides.css b/assets/css/cyborg/overrides.css index 724e3a93..ab11369f 100644 --- a/assets/css/cyborg/overrides.css +++ b/assets/css/cyborg/overrides.css @@ -191,4 +191,17 @@ path.grid-worked { } .accordion-button.collapsed { border-bottom: 1px solid var(--bs-body-bg); +} + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd; + width: 33%; + color: #000; } \ No newline at end of file diff --git a/assets/css/cyborg_wide/overrides.css b/assets/css/cyborg_wide/overrides.css index b858a186..558360d8 100644 --- a/assets/css/cyborg_wide/overrides.css +++ b/assets/css/cyborg_wide/overrides.css @@ -246,4 +246,17 @@ path.grid-worked { } .accordion-button.collapsed { border-bottom: 1px solid var(--bs-body-bg); +} + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd; + width: 33%; + color: #000; } \ No newline at end of file diff --git a/assets/css/darkly/overrides.css b/assets/css/darkly/overrides.css index 94e102fb..7deae254 100644 --- a/assets/css/darkly/overrides.css +++ b/assets/css/darkly/overrides.css @@ -204,4 +204,15 @@ div.alert-danger { border-bottom:1px solid var(--bs-body-bg); } +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; +} +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd; + width: 33%; + color: #000; +} \ No newline at end of file diff --git a/assets/css/darkly_wide/overrides.css b/assets/css/darkly_wide/overrides.css index 99b49e03..857a0aae 100644 --- a/assets/css/darkly_wide/overrides.css +++ b/assets/css/darkly_wide/overrides.css @@ -258,4 +258,17 @@ div.alert-danger { } .accordion-button.collapsed { border-bottom:1px solid var(--bs-body-bg); +} + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd; + width: 33%; + color: #000; } \ No newline at end of file diff --git a/assets/css/general.css b/assets/css/general.css index 4f17f87b..0207fd68 100644 --- a/assets/css/general.css +++ b/assets/css/general.css @@ -783,3 +783,14 @@ label { background-color: rgb(254 243 199) !important; --bs-badge-color: rgb(217 119 6) !important; } + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd; + width: 33%; +} \ No newline at end of file diff --git a/assets/css/superhero/overrides.css b/assets/css/superhero/overrides.css index 0e75c70a..ae46b52b 100644 --- a/assets/css/superhero/overrides.css +++ b/assets/css/superhero/overrides.css @@ -194,4 +194,19 @@ div.alert-danger { } .accordion-body { border: 1px solid #4e5e6c; +} + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; + box-shadow: none !important; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd !important; + width: 33%; + color: #000; + box-shadow: none !important; } \ No newline at end of file diff --git a/assets/css/superhero_wide/overrides.css b/assets/css/superhero_wide/overrides.css index 8184432a..da0f9f8b 100644 --- a/assets/css/superhero_wide/overrides.css +++ b/assets/css/superhero_wide/overrides.css @@ -248,4 +248,19 @@ div.alert-danger { } .accordion-body { border: 1px solid #4e5e6c; +} + +/* CSS for Upcoming DXCC Component */ +#upcoming_dxccs_component #worked_before { + background-color: #ddffdd; + width: 33%; + color: #000; + box-shadow: none !important; +} + +#upcoming_dxccs_component #not_worked_before { + background-color: #ffdddd !important; + width: 33%; + color: #000; + box-shadow: none !important; } \ No newline at end of file diff --git a/assets/js/sections/common.js b/assets/js/sections/common.js index 7761361a..4a73a34e 100644 --- a/assets/js/sections/common.js +++ b/assets/js/sections/common.js @@ -634,5 +634,5 @@ if ($('.table-responsive .dropdown-toggle').length>0) { } function getDataTablesLanguageUrl() { - return "../assets/json/datatables_languages/" + lang_datatables_language + ".json"; + return base_url + "/assets/json/datatables_languages/" + lang_datatables_language + ".json"; }
DXPeditions (This Week)
' . $record['daysLeft'] . '' . ''.$record['callsign'] . ''. '' . $record['2'] . '' . $record['daysLeft'] . '' . ''.$record['callsign'] . ''. '' . $record['2'] . '
COL_SAT_MODE) == 2 ? (strtoupper($row->COL_SAT_MODE[0]).'/'.strtoupper($row->COL_SAT_MODE[1])) : strtoupper($row->COL_SAT_MODE)); ?>
COL_ANT_AZ; ?>°
COL_ANT_EL; ?>°