diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 82ba3d12..ef63ea54 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -81,6 +81,12 @@ function updateRow(qso) { if (user_options.iota.show == "true"){ cells.eq(c++).html(qso.iota); } + if (user_options.pota.show == "true"){ + cells.eq(c++).html(qso.pota); + } + if (user_options.operator.show == "true"){ + cells.eq(c++).html(qso.operator); + } $('[data-bs-toggle="tooltip"]').tooltip(); return row; @@ -174,6 +180,12 @@ function loadQSOTable(rows) { if (user_options.iota.show == "true"){ data.push(qso.iota); } + if (user_options.pota.show == "true"){ + data.push(qso.pota); + } + if (user_options.operator.show == "true"){ + data.push(qso.operator); + } let createdRow = table.row.add(data).index(); table.rows(createdRow).nodes().to$().data('qsoID', qso.qsoID); @@ -261,6 +273,7 @@ $(document).ready(function () { qslSentMethod: this.qslSentMethod.value, qslReceivedMethod: this.qslReceivedMethod.value, iota: this.iota.value, + operator: this.operator.value, dxcc: this.dxcc.value, propmode: this.selectPropagation.value, gridsquare: this.gridsquare.value, @@ -497,6 +510,10 @@ $(document).ready(function () { quickSearch('pota'); }); + $('#searchOperator').click(function (event) { + quickSearch('operator'); + }); + $('#dupeButton').click(function (event) { dupeSearch(); }); @@ -623,6 +640,7 @@ $(document).ready(function () { case 'sota': col1 = $(currentRow).find('#dxsota').text(); break; case 'wwff': col1 = $(currentRow).find('#dxwwff').text(); break; case 'pota': col1 = $(currentRow).find('#dxpota').text(); break; + case 'operator': col1 = $(currentRow).find('#operator').text(); break; case 'mode': col1 = currentRow.find("td:eq(4)").text(); break; case 'band': col1 = currentRow.find("td:eq(7)").text(); col1 = col1.match(/\S\w*/); break; } @@ -872,6 +890,7 @@ function mapQsos(form) { qslvia: $('[name="qslviainput"]').val(), sota: form.sota.value, pota: form.pota.value, + operator: form.operator.value, wwff: form.wwff.value, qslimages: form.qslimages.value, }, @@ -1069,6 +1088,8 @@ function loadMap(data) { state: $('input[name="state"]').is(':checked') ? true : false, cqzone: $('input[name="cqzone"]').is(':checked') ? true : false, iota: $('input[name="iota"]').is(':checked') ? true : false, + pota: $('input[name="pota"]').is(':checked') ? true : false, + operator: $('input[name="operator"]').is(':checked') ? true : false, }, success: function(data) { $('#saveButton').prop("disabled", false); diff --git a/src/QSLManager/QSO.php b/src/QSLManager/QSO.php index 698e8aea..19648c38 100644 --- a/src/QSLManager/QSO.php +++ b/src/QSLManager/QSO.php @@ -65,6 +65,7 @@ class QSO private string $callsign; private string $lastupload; private string $lotw_hint; + private string $operator; /** * @param array $data Does no validation, it's assumed to be a row from the database in array format @@ -116,6 +117,7 @@ class QSO 'COL_STATE', 'COL_COUNTRY', 'COL_IOTA', + 'COL_OPERATOR', ]; @@ -202,6 +204,7 @@ class QSO $this->callsign = (($data['callsign'] ?? null) === null) ? '' : $data['callsign']; $this->lastupload = (($data['lastupload'] ?? null) === null) ? '' : date($custom_date_format . " H:i", strtotime($data['lastupload'] ?? null)); $this->lotw_hint = $this->getLotwHint($data['lastupload'] ?? null); + $this->operator = ($data['COL_OPERATOR'] === null) ? '' :$data['COL_OPERATOR']; } /** @@ -771,6 +774,11 @@ class QSO return '' . $this->iota . ''; } + public function getOperator(): string + { + return '' . $this->operator . ''; + } + public function toArray(): array { return [ @@ -792,6 +800,8 @@ class QSO 'name' => $this->getName(), 'dxcc' => $this->getDXCC(), 'state' => $this->getState(), + 'pota' => $this->dxPOTAReference, + 'operator' => $this->getOperator(), 'cqzone' => $this->getCqzone(), 'iota' => $this->getIOTA(), 'end' => $this->end === null ? null : $this->end->format("Y-m-d"),