From 9231c0ed44ee172d1db340471037267ff2a9a297 Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Thu, 23 Oct 2025 12:19:25 +0200 Subject: [PATCH 1/5] =?UTF-8?q?[WinKey]=20Fix=20=C3=98=20->=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/winkey.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/js/winkey.js b/assets/js/winkey.js index 7867e4421..19ab9e07d 100644 --- a/assets/js/winkey.js +++ b/assets/js/winkey.js @@ -288,7 +288,6 @@ async function disconnect() { //When the send button is pressed function clickSend() { - text2send = sendText.value.replaceAll('Ø', '0'); writeToStream(text2send).then(function() { // writeToStream("\r"); //and clear the input field, so it's clear it has been sent @@ -369,9 +368,11 @@ function UpdateMacros(macrotext) { // Get the values from the form set to uppercase let CALL = document.getElementById("callsign").value.toUpperCase(); + CALL = CALL.replaceAll('Ø', '0'); let RSTS = document.getElementById("rst_sent").value; let newString; + my_call = my_call.replaceAll('Ø', '0'); newString = macrotext.replace(/\[MYCALL\]/g, my_call); newString = newString.replace(/\[CALL\]/g, CALL); newString = newString.replace(/\[RSTS\]/g, RSTS); From e2106d28dd328b7330564e449583043ffd8c9a80 Mon Sep 17 00:00:00 2001 From: phl0 Date: Thu, 23 Oct 2025 16:10:57 +0200 Subject: [PATCH 2/5] Fix value for free text field sending --- assets/js/winkey.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/winkey.js b/assets/js/winkey.js index 19ab9e07d..57d336c84 100644 --- a/assets/js/winkey.js +++ b/assets/js/winkey.js @@ -288,7 +288,7 @@ async function disconnect() { //When the send button is pressed function clickSend() { - writeToStream(text2send).then(function() { + writeToStream(sendText.value).then(function() { // writeToStream("\r"); //and clear the input field, so it's clear it has been sent $('#sendText').val(''); From 63814d05d238c4eb70aaca584bb875d618f93173 Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Thu, 23 Oct 2025 18:50:49 +0200 Subject: [PATCH 3/5] Adding defaults --- application/controllers/Qso.php | 23 +++++++++++-- assets/js/winkey.js | 57 +++++++++++++++++++++------------ 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/application/controllers/Qso.php b/application/controllers/Qso.php index a5277d0e6..f7c1c2443 100644 --- a/application/controllers/Qso.php +++ b/application/controllers/Qso.php @@ -220,10 +220,8 @@ class QSO extends CI_Controller { ->get_options('cwmacros', ['option_name' => "macro{$i}"]) ->row(); - // Decode JSON stored in option_value $decoded = json_decode($row->option_value ?? ''); - // Make sure it's an object (in case it's null) $name = isset($decoded->name) ? $decoded->name : ''; $macro = isset($decoded->macro) ? $decoded->macro : ''; @@ -233,9 +231,28 @@ class QSO extends CI_Controller { ]; } + // Check if all are empty + $allEmpty = true; + foreach ($cwmacros as $macro) { + if (!empty($macro['name']) || !empty($macro['macro'])) { + $allEmpty = false; + break; + } + } + + // Apply defaults to first 5 if all are empty + if ($allEmpty) { + $cwmacros['macro1'] = ['name' => 'CQ', 'macro' => 'CQ CQ CQ DE [MYCALL] [MYCALL] K']; + $cwmacros['macro2'] = ['name' => 'REPT', 'macro' => '[CALL] DE [MYCALL] [RSTS] [RSTS] K']; + $cwmacros['macro3'] = ['name' => 'TU', 'macro' => '[CALL] TU 73 DE [MYCALL] K']; + $cwmacros['macro4'] = ['name' => 'QRZ', 'macro' => 'QRZ DE [MYCALL] K']; + $cwmacros['macro5'] = ['name' => 'TEST', 'macro' => 'TEST DE [MYCALL] K']; + } + $this->load->view('qso/components/winkeysettings', $cwmacros); } + function cwmacrosave(){ $this->load->model('user_options_model'); for ($i = 1; $i <= 10; $i++) { @@ -260,7 +277,7 @@ class QSO extends CI_Controller { ->row(); // Decode JSON stored in option_value - $decoded = json_decode($row->option_value); + $decoded = json_decode($row->option_value ?? ''); // Make sure it's an object (in case it's null) $name = isset($decoded->name) ? $decoded->name : ''; diff --git a/assets/js/winkey.js b/assets/js/winkey.js index 57d336c84..51d839c3c 100644 --- a/assets/js/winkey.js +++ b/assets/js/winkey.js @@ -384,26 +384,43 @@ function getMacros() { fetch(base_url + 'index.php/qso/cwmacros_json') .then(response => response.json()) .then(data => { - function1Name = data.function1_name; - function1Macro = data.function1_macro; - function2Name = data.function2_name; - function2Macro = data.function2_macro; - function3Name = data.function3_name; - function3Macro = data.function3_macro; - function4Name = data.function4_name; - function4Macro = data.function4_macro; - function5Name = data.function5_name; - function5Macro = data.function5_macro; - function6Name = data.function6_name; - function6Macro = data.function6_macro; - function7Name = data.function7_name; - function7Macro = data.function7_macro; - function8Name = data.function8_name; - function8Macro = data.function8_macro; - function9Name = data.function9_name; - function9Macro = data.function9_macro; - function10Name = data.function10_name; - function10Macro = data.function10_macro; + // Check if all fields are empty + const allEmpty = Object.values(data).every(value => value === ""); + + if (allEmpty) { + // Set default values + function1Name = 'CQ'; + function1Macro = 'CQ CQ CQ DE [MYCALL] [MYCALL] K'; + function2Name = 'REPT'; + function2Macro = '[CALL] DE [MYCALL] [RSTS] [RSTS] K'; + function3Name = 'TU'; + function3Macro = '[CALL] TU 73 DE [MYCALL] K'; + function4Name = 'QRZ'; + function4Macro = 'QRZ DE [MYCALL] K'; + function5Name = 'TEST'; + function5Macro = 'TEST DE [MYCALL] K'; + } else { + function1Name = data.function1_name; + function1Macro = data.function1_macro; + function2Name = data.function2_name; + function2Macro = data.function2_macro; + function3Name = data.function3_name; + function3Macro = data.function3_macro; + function4Name = data.function4_name; + function4Macro = data.function4_macro; + function5Name = data.function5_name; + function5Macro = data.function5_macro; + function6Name = data.function6_name; + function6Macro = data.function6_macro; + function7Name = data.function7_name; + function7Macro = data.function7_macro; + function8Name = data.function8_name; + function8Macro = data.function8_macro; + function9Name = data.function9_name; + function9Macro = data.function9_macro; + function10Name = data.function10_name; + function10Macro = data.function10_macro; + } const morsekey_func1_Button = document.getElementById('morsekey_func1'); morsekey_func1_Button.textContent = 'F1 (' + function1Name + ')'; From 9e768304550294b35f963a3634f29616bd7bb222 Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:15:44 +0200 Subject: [PATCH 4/5] Fix my_call replacement --- application/controllers/Qso.php | 4 +++- application/models/Stations.php | 11 ++++++----- application/views/qso/index.php | 5 ++++- assets/js/winkey.js | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/application/controllers/Qso.php b/application/controllers/Qso.php index f7c1c2443..e0e7ca8b8 100644 --- a/application/controllers/Qso.php +++ b/application/controllers/Qso.php @@ -647,7 +647,9 @@ class QSO extends CI_Controller { $this->load->model('stations'); $this->load->library('qra'); $stationProfile = $this->input->post('stationProfile', TRUE); - $data = array('station_power' => $this->stations->get_station_power($stationProfile)); + $result = $this->stations->get_station_power($stationProfile); + $data['station_power'] = $result['station_power']; + $data['station_callsign'] = $result['station_callsign']; [$data['lat'], $data['lng']] = $this->qra->qra2latlong($this->stations->gridsquare_from_station($stationProfile)); header('Content-Type: application/json'); diff --git a/application/models/Stations.php b/application/models/Stations.php index 5e22bb106..bc7bf9f19 100644 --- a/application/models/Stations.php +++ b/application/models/Stations.php @@ -578,15 +578,16 @@ class Stations extends CI_Model { } public function get_station_power($id) { - $this->db->select('station_power'); + $this->db->select('station_power, station_callsign'); $this->db->where('user_id', $this->session->userdata('user_id')); $this->db->where('station_id', $id); $query = $this->db->get('station_profile'); if($query->num_rows() >= 1) { - foreach ($query->result() as $row) - { - return $row->station_power; - } + $row = $query->row(); // only one result expected + return [ + 'station_power' => $row->station_power, + 'station_callsign' => $row->station_callsign + ]; } else { return null; } diff --git a/application/views/qso/index.php b/application/views/qso/index.php index 0fb78d697..53b9562b0 100644 --- a/application/views/qso/index.php +++ b/application/views/qso/index.php @@ -341,7 +341,7 @@ switch ($date_format) { $power = ''; foreach ($stations->result() as $stationrow) { ?> - + @@ -832,3 +832,6 @@ switch ($date_format) { + diff --git a/assets/js/winkey.js b/assets/js/winkey.js index 51d839c3c..c9aecf82c 100644 --- a/assets/js/winkey.js +++ b/assets/js/winkey.js @@ -373,7 +373,7 @@ function UpdateMacros(macrotext) { let newString; my_call = my_call.replaceAll('Ø', '0'); - newString = macrotext.replace(/\[MYCALL\]/g, my_call); + newString = macrotext.replace(/\[MYCALL\]/g, station_callsign); newString = newString.replace(/\[CALL\]/g, CALL); newString = newString.replace(/\[RSTS\]/g, RSTS); return newString; From 63d3bbee717444be377295014057fbad58521835 Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:20:51 +0200 Subject: [PATCH 5/5] =?UTF-8?q?Replace=20=C3=98=20->=200=20in=20input=20te?= =?UTF-8?q?xt=20too?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/winkey.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/winkey.js b/assets/js/winkey.js index c9aecf82c..82068be87 100644 --- a/assets/js/winkey.js +++ b/assets/js/winkey.js @@ -288,7 +288,7 @@ async function disconnect() { //When the send button is pressed function clickSend() { - writeToStream(sendText.value).then(function() { + writeToStream(sendText.value.replaceAll('Ø', '0')).then(function() { // writeToStream("\r"); //and clear the input field, so it's clear it has been sent $('#sendText').val('');