From 0357eb40dfc57e0dd39c225f759c1fbb34dd2907 Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Sun, 13 Feb 2022 18:08:55 +0100 Subject: [PATCH] [QRB Calculcator] Working version, with map and path. --- application/controllers/Qrbcalc.php | 33 ++- application/models/Qrbcalc_model | 7 - application/views/interface_assets/footer.php | 50 +++++ application/views/qrbcalc/index.php | 15 +- assets/js/leaflet/L.Maidenhead.qrb.js | 189 ++++++++++++++++++ 5 files changed, 271 insertions(+), 23 deletions(-) delete mode 100644 application/models/Qrbcalc_model create mode 100644 assets/js/leaflet/L.Maidenhead.qrb.js diff --git a/application/controllers/Qrbcalc.php b/application/controllers/Qrbcalc.php index 99668860..22911641 100644 --- a/application/controllers/Qrbcalc.php +++ b/application/controllers/Qrbcalc.php @@ -1,25 +1,40 @@ load->model('user_model'); if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); } } - public function index() - { - $data['page_title'] = "QRB Calculaltor"; + public function index() { + $data['page_title'] = "QRB Calculator"; $this->load->view('qrbcalc/index', $data); } -} + + public function calculate() { + $locator1 = $this->input->post("locator1"); + $locator2 = $this->input->post("locator2"); + + if ($this->session->userdata('user_measurement_base') == NULL) { + $measurement_base = $this->config->item('measurement_base'); + } + else { + $measurement_base = $this->session->userdata('user_measurement_base'); + } + + $this->load->library('Qra'); + + $data['result'] = $this->qra->bearing($locator1, $locator2, $measurement_base); + $data['latlng1'] = $this->qra->qra2latlong($locator1); + $data['latlng2'] = $this->qra->qra2latlong($locator2); + header('Content-Type: application/json'); + echo json_encode($data); + } +} \ No newline at end of file diff --git a/application/models/Qrbcalc_model b/application/models/Qrbcalc_model deleted file mode 100644 index ade46a6d..00000000 --- a/application/models/Qrbcalc_model +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 439dbefa..efd10f7f 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -5,6 +5,8 @@ + + @@ -451,6 +453,54 @@ function spawnQrbCalculator() { }); } +function calculateQrb(form) { + $.ajax({ + url: base_url+'index.php/qrbcalc/calculate', + type: 'post', + data: {'locator1': form.locator1.value, + 'locator2': form.locator2.value}, + success: function (html) { + $(".qrbResult").append(html['result']); + newpath(html['latlng1'], html['latlng2']); + } + }); +} + +function newpath(locator1, locator2) { + // If map is already initialized + var container = L.DomUtil.get('mapqrb'); + + if(container != null){ + container._leaflet_id = null; + } + + const map = L.map('mapqrb').setView([30, 0], 1.5); + + var maidenhead = L.maidenheadqrb().addTo(map); + + L.tileLayer('https://a.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', { + maxZoom: 10, + noWrap: false, + }).addTo(map); + + const multiplelines = []; + //$.each(locs, function(){ + multiplelines.push( + new L.LatLng(locator1[0], locator1[1]), + new L.LatLng(locator2[0], locator2[1]) + ) + + //}); + + const geodesic = L.geodesic(multiplelines, { + weight: 1, + opacity: 1, + color: 'red', + wrap: false, + steps: 100 + }).addTo(map); +} + // This displays the dialog with the form and it's where the resulttable is displayed function spawnLookupModal() { $.ajax({ diff --git a/application/views/qrbcalc/index.php b/application/views/qrbcalc/index.php index 24f83d76..b2619ba8 100644 --- a/application/views/qrbcalc/index.php +++ b/application/views/qrbcalc/index.php @@ -1,25 +1,26 @@ +