From f96bc81f73a0a3d5d1d206efffc467871f57314d Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Mon, 21 Aug 2023 14:18:05 +0200 Subject: [PATCH] [Advanced Logbook] Can selects QSOs for map --- application/controllers/Logbookadvanced.php | 44 +++++++- application/models/Logbookadvanced_model.php | 5 +- assets/js/sections/logbookadvanced.js | 100 ++++++++++++------- 3 files changed, 109 insertions(+), 40 deletions(-) diff --git a/application/controllers/Logbookadvanced.php b/application/controllers/Logbookadvanced.php index 87a54e92..456c3e26 100644 --- a/application/controllers/Logbookadvanced.php +++ b/application/controllers/Logbookadvanced.php @@ -234,6 +234,43 @@ class Logbookadvanced extends CI_Controller { $this->load->view('logbookadvanced/qslcarousel', $data); } + public function mapSelectedQsos() { + $this->load->model('logbookadvanced_model'); + + $searchCriteria = array( + 'user_id' => (int)$this->session->userdata('user_id'), + 'dateFrom' => '', + 'dateTo' => '', + 'de' => '', + 'dx' => '', + 'mode' => '', + 'band' => '', + 'qslSent' => '', + 'qslReceived' => '', + 'iota' => '', + 'dxcc' => '', + 'propmode' => '', + 'gridsquare' => '', + 'state' => '', + 'cqzone' => '', + 'qsoresults' => count($this->input->post('ids')), + 'sats' => '', + 'lotwSent' => '', + 'lotwReceived' => '', + 'eqslSent' => '', + 'eqslReceived' => '', + 'qslvia' => '', + 'sota' => '', + 'pota' => '', + 'wwff' => '', + 'qslimages' => '', + 'ids' => xss_clean($this->input->post('ids')) + ); + + $result = $this->logbookadvanced_model->searchDb($searchCriteria); + $this->prepareMappedQSos($result); + } + public function mapQsos() { $this->load->model('logbookadvanced_model'); @@ -266,6 +303,11 @@ class Logbookadvanced extends CI_Controller { 'qslimages' => xss_clean($this->input->post('qslimages')), ); + $result = $this->logbookadvanced_model->searchDb($searchCriteria); + $this->prepareMappedQSos($result); + } + + public function prepareMappedQSos($qsos) { if ($this->session->userdata('user_measurement_base') == NULL) { $measurement_base = $this->config->item('measurement_base'); } @@ -296,7 +338,7 @@ class Logbookadvanced extends CI_Controller { } $mappedcoordinates = array(); - foreach ($this->logbookadvanced_model->searchDb($searchCriteria) as $qso) { + foreach ($qsos as $qso) { if (!empty($qso['COL_MY_GRIDSQUARE']) || !empty($qso['COL_MY_VUCC_GRIDS'])) { if (!empty($qso['COL_GRIDSQUARE']) || !empty($qso['COL_VUCC_GRIDS'])) { $mappedcoordinates[] = $this->calculate($qso, ($qso['COL_MY_GRIDSQUARE'] ?? '') == '' ? $qso['COL_MY_VUCC_GRIDS'] : $qso['COL_MY_GRIDSQUARE'], ($qso['COL_GRIDSQUARE'] ?? '') == '' ? $qso['COL_VUCC_GRIDS'] : $qso['COL_GRIDSQUARE'], $measurement_base, $var_dist, $custom_date_format); diff --git a/application/models/Logbookadvanced_model.php b/application/models/Logbookadvanced_model.php index 988e574d..d3f1eddf 100644 --- a/application/models/Logbookadvanced_model.php +++ b/application/models/Logbookadvanced_model.php @@ -158,6 +158,10 @@ class Logbookadvanced_model extends CI_Model { } } + if (($searchCriteria['ids'] ?? '') !== '') { + $conditions[] = "qsos.COL_PRIMARY_KEY in (".implode(",",$searchCriteria['ids']).")"; + } + $where = trim(implode(" AND ", $conditions)); if ($where != "") { $where = "AND $where"; @@ -176,7 +180,6 @@ class Logbookadvanced_model extends CI_Model { } } - $sql = " SELECT * FROM " . $this->config->item('table_name') . " qsos diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index ee31764e..0ff48964 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -689,6 +689,15 @@ function printlabel() { function mapQsos(form) { $('#mapButton').prop("disabled", true); + var id_list=[]; + var elements = $('#qsoList tbody input:checked'); + var nElements = elements.length; + + elements.each(function() { + let id = $(this).first().closest('tr').data('qsoID') + id_list.push(id); + }); + $("#qsoList").attr("Hidden", true); $("#qsoList_wrapper").attr("Hidden", true); $("#qsoList_info").attr("Hidden", true); @@ -698,44 +707,59 @@ function mapQsos(form) { $(".qso_manager").append('
'); } - $.ajax({ - url: base_url + 'index.php/logbookadvanced/mapQsos', - type: 'post', - data: { - dateFrom: form.dateFrom.value, - dateTo: form.dateTo.value, - de: form.de.value, - dx: form.dx.value, - mode: form.mode.value, - band: form.band.value, - qslSent: form.qslSent.value, - qslReceived: form.qslReceived.value, - iota: form.iota.value, - dxcc: form.dxcc.value, - propmode: form.selectPropagation.value, - gridsquare: form.gridsquare.value, - state: form.state.value, - qsoresults: form.qsoResults.value, - sats: form.sats.value, - cqzone: form.cqzone.value, - lotwSent: form.lotwSent.value, - lotwReceived: form.lotwReceived.value, - eqslSent: form.eqslSent.value, - eqslReceived: form.eqslReceived.value, - qslvia: $('[name="qslviainput"]').val(), - sota: form.sota.value, - pota: form.pota.value, - wwff: form.wwff.value, - qslimages: form.qslimages.value, - }, - success: function(data) { - loadMap(data); - }, - error: function() { - $('#mapButton').prop("disabled", false); - }, - }); - + if (id_list.length > 0) { + $.ajax({ + url: base_url + 'index.php/logbookadvanced/mapSelectedQsos', + type: 'post', + data: { + ids: id_list + }, + success: function(data) { + loadMap(data); + }, + error: function() { + $('#mapButton').prop("disabled", false); + }, + }); + } else { + $.ajax({ + url: base_url + 'index.php/logbookadvanced/mapQsos', + type: 'post', + data: { + dateFrom: form.dateFrom.value, + dateTo: form.dateTo.value, + de: form.de.value, + dx: form.dx.value, + mode: form.mode.value, + band: form.band.value, + qslSent: form.qslSent.value, + qslReceived: form.qslReceived.value, + iota: form.iota.value, + dxcc: form.dxcc.value, + propmode: form.selectPropagation.value, + gridsquare: form.gridsquare.value, + state: form.state.value, + qsoresults: form.qsoResults.value, + sats: form.sats.value, + cqzone: form.cqzone.value, + lotwSent: form.lotwSent.value, + lotwReceived: form.lotwReceived.value, + eqslSent: form.eqslSent.value, + eqslReceived: form.eqslReceived.value, + qslvia: $('[name="qslviainput"]').val(), + sota: form.sota.value, + pota: form.pota.value, + wwff: form.wwff.value, + qslimages: form.qslimages.value, + }, + success: function(data) { + loadMap(data); + }, + error: function() { + $('#mapButton').prop("disabled", false); + }, + }); + } }; function loadMap(data) {