From 90daf3ae0d071c3b84a5f86dd6f3e226ad7fb846 Mon Sep 17 00:00:00 2001 From: Andreas Kristiansen <6977712+AndreasK79@users.noreply.github.com> Date: Mon, 15 Dec 2025 16:51:11 +0100 Subject: [PATCH] More verbose message on dxcc and state fixer --- application/controllers/Logbookadvanced.php | 19 ++-- application/models/Logbookadvanced_model.php | 19 +++- .../logbookadvanced/showUpdateResult.php | 105 ++++++++++++++++++ assets/js/sections/logbookadvanced.js | 18 +-- 4 files changed, 132 insertions(+), 29 deletions(-) create mode 100644 application/views/logbookadvanced/showUpdateResult.php diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 0945a6d9c..3f72bb67b 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -911,17 +911,16 @@ class Logbookadvanced extends CI_Controller { $this->load->model('logbookadvanced_model'); $dxcc = $this->input->post('dxcc', true); - $country = $this->input->post('country', true); + $data['country'] = $this->input->post('country', true); // Process for batch QSO state fix $result = $this->logbookadvanced_model->fixStateBatch($dxcc); - $data['result'] = count($result); + $data['result'] = $result; - $data['message'] = __("The number of QSOs updated for state/province in") . ' ' . $country . ' : ' . count($result); + $data['type'] = 'state'; - header("Content-Type: application/json"); - echo json_encode($data); + $this->load->view('logbookadvanced/showUpdateResult', $data); } public function openStateList() { @@ -945,14 +944,10 @@ class Logbookadvanced extends CI_Controller { $result = $this->logbookadvanced_model->check_missing_dxcc_id($all); $data['result'] = $result; + $data['all'] = $all; + $data['type'] = 'dxcc'; - if ($all == 'false') { - $data['message'] = __("The number of QSOs updated for missing DXCC IDs was") .' ' . $result; - } else { - $data['message'] = __("The number of QSOs re-checked for DXCC was") .' ' . $result; - } - header("Content-Type: application/json"); - echo json_encode($data); + $this->load->view('logbookadvanced/showUpdateResult', $data); } public function openMissingDxccList() { diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index f35db9ef7..b4b1ad112 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -1598,13 +1598,19 @@ class Logbookadvanced_model extends CI_Model { $results = []; + $count = 0; + foreach ($query->result() as $qso) { $result = $this->fixStateSingle($qso->COL_PRIMARY_KEY); if ($result['success']) { + $count++; + } else { $results []= $result; } } + $results['count'] = $count; + return $results; } @@ -1652,14 +1658,23 @@ class Logbookadvanced_model extends CI_Model { $qso_date = $row['COL_TIME_OFF'] == '' ? $row['COL_TIME_ON'] : $row['COL_TIME_OFF']; $qso_date = date("Y-m-d", strtotime($qso_date)); $d = $this->logbook_model->check_dxcc_table($row['COL_CALL'], $qso_date); - if ($d[0] != 'Not Found') { + if ($d[0] == 'Not Found') { + $result[] = [ + 'callsign' => $row['COL_CALL'], + 'reason' => 'DXCC Not Found', + 'location' => '', + 'id' => $row['COL_PRIMARY_KEY'] + ]; + } else { $q->execute(array(addslashes(ucwords(strtolower($d[1]), "- (/")), $d[0], $row['COL_PRIMARY_KEY'])); $count++; } } } $this->db->trans_complete(); - return $count; + $result['count'] = $count; + + return $result; } function getMissingDxccQsos() { diff --git a/application/views/logbookadvanced/showUpdateResult.php b/application/views/logbookadvanced/showUpdateResult.php new file mode 100644 index 000000000..a52c5c87c --- /dev/null +++ b/application/views/logbookadvanced/showUpdateResult.php @@ -0,0 +1,105 @@ +' . __("The number of QSOs updated for missing DXCC IDs was") .' ' . $result['count'] . ''; + } else { + echo ''; + } + } else { + if ($all == 'false') { + echo ''; + } else { + echo ''; + } + } + + if ($result) { + echo __("These QSOs could not be updated:"); + $details = []; + foreach ($result as $r) { + if (is_array($r)) { + $details[] = $r; + } + } + + if (!empty($details)) { + echo '
'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + foreach ($details as $r) { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
CallsignReasonStation location
' . htmlspecialchars($r['callsign']) . '' . htmlspecialchars($r['reason']) . '' . htmlspecialchars($r['location']) . '
'; + echo '
'; + } + } +} + +function showStateUpdateResult($result, $country) { + if ($result['count'] == 0) { + echo ''; + } else { + echo ''; + } + + if ($result) { + echo __("These QSOs could not be updated:"); + $details = []; + foreach ($result as $r) { + if (is_array($r)) { + $details[] = $r; + } + } + + if (!empty($details)) { + echo '
'; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + + foreach ($details as $r) { + echo ''; + echo ''; + echo ''; + echo ''; + } + + echo ''; + echo '
CallsignReason
' . htmlspecialchars($r['callsign']) . '' . htmlspecialchars($r['reason']) . '
'; + echo '
'; + } + } +} diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 1bd6e3c69..b83243d72 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -2188,11 +2188,7 @@ function saveOptions() { }, success: function (response) { $('#fixStateBtn_' + dxcc).prop("disabled", false).removeClass("running"); - if (response.result == 0) { - $('.result').html(''); - return; - } - $('.result').html(''); + $('.result').html(response); }, error: function () { $('#fixStateBtn_' + dxcc).prop("disabled", false).removeClass("running"); @@ -2259,11 +2255,7 @@ function saveOptions() { success: function(data) { $('#updateDxccBtn').prop("disabled", false).removeClass("running"); $('#closeButton').prop("disabled", false); - if (data.result == 0) { - $('.result').html(''); - return; - } - $('.result').html(''); + $('.result').html(data); }, error: function(xhr, status, error) { $('#updateDxccBtn').prop("disabled", false).removeClass("running"); @@ -2289,11 +2281,7 @@ function saveOptions() { success: function(data) { $('#fixMissingDxccBtn').prop("disabled", false).removeClass("running"); $('#closeButton').prop("disabled", false); - if (data.result == 0) { - $('.result').html(''); - return; - } - $('.result').html(''); + $('.result').html(data); }, error: function(xhr, status, error) { $('#fixMissingDxccBtn').prop("disabled", false).removeClass("running");