Merge pull request #2432 from AndreasK79/winkey_fix

This commit is contained in:
Andreas Kristiansen
2025-10-24 17:55:54 +02:00
committed by GitHub
4 changed files with 74 additions and 33 deletions

View File

@@ -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 : '';
@@ -630,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');

View File

@@ -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;
}

View File

@@ -341,7 +341,7 @@ switch ($date_format) {
$power = '';
foreach ($stations->result() as $stationrow) {
?>
<option value="<?php echo $stationrow->station_id; ?>" <?php if($active_station_profile == $stationrow->station_id) { echo "selected=\"selected\""; $power = $stationrow->station_power; } ?>><?php echo $stationrow->station_profile_name; ?></option>
<option value="<?php echo $stationrow->station_id; ?>" <?php if($active_station_profile == $stationrow->station_id) { echo "selected=\"selected\""; $power = $stationrow->station_power; $station_callsign = $stationrow->station_callsign; } ?>><?php echo $stationrow->station_profile_name; ?></option>
<?php } ?>
</select>
</div>
@@ -832,3 +832,6 @@ switch ($date_format) {
</div>
</div>
<script>
var station_callsign = "<?php echo $station_callsign; ?>";
</script>

View File

@@ -288,8 +288,7 @@ async function disconnect() {
//When the send button is pressed
function clickSend() {
text2send = sendText.value.replaceAll('Ø', '0');
writeToStream(text2send).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('');
@@ -369,10 +368,12 @@ 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;
newString = macrotext.replace(/\[MYCALL\]/g, my_call);
my_call = my_call.replaceAll('Ø', '0');
newString = macrotext.replace(/\[MYCALL\]/g, station_callsign);
newString = newString.replace(/\[CALL\]/g, CALL);
newString = newString.replace(/\[RSTS\]/g, RSTS);
return newString;
@@ -383,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 + ')';