From 8dd3f290a76fb4b11037fe5e8902cac0f6b4f761 Mon Sep 17 00:00:00 2001 From: Andreas <6977712+AndreasK79@users.noreply.github.com> Date: Tue, 27 Jun 2023 15:03:12 +0200 Subject: [PATCH] [Advanced Logbook] Now can print label from advanced logbook --- application/controllers/Labels.php | 36 ++++++++++--------- application/models/Labels_model.php | 12 +++++++ application/views/logbookadvanced/index.php | 3 ++ assets/js/sections/logbookadvanced.js | 39 +++++++++++++++++++++ 4 files changed, 74 insertions(+), 16 deletions(-) diff --git a/application/controllers/Labels.php b/application/controllers/Labels.php index 628b4dcd..908a23bd 100644 --- a/application/controllers/Labels.php +++ b/application/controllers/Labels.php @@ -87,22 +87,27 @@ class Labels extends CI_Controller { } + public function printids() { + $ids = xss_clean(json_decode($this->input->post('id'))); + $this->load->model('labels_model'); + $result = $this->labels_model->export_printrequestedids($ids); + + $this->prepareLabel($result); + } + public function print($station_id) { $clean_id = xss_clean($station_id); $this->load->model('labels_model'); $result = $this->labels_model->export_printrequested($clean_id); + $this->prepareLabel($result); + } + + function prepareLabel($qsos) { + $this->load->model('labels_model'); $label = $this->labels_model->getDefaultLabel(); - - // require_once('fpdf.php'); - // require('PDF_Label.php'); - // require_once APPPATH."/src/Label/PDF_Label.php"; - // require_once APPPATH."/src/Label/fpdf.php"; - - // Example of custom format - // $pdf = new PDF_Label(array('paper-size'=>'A4', 'metric'=>'mm', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99, 'height'=>38, 'font-size'=>14)); - + try { if ($label) { $pdf = new PDF_Label(array( @@ -127,9 +132,9 @@ class Labels extends CI_Controller { redirect('labels'); } define('FPDF_FONTPATH', './src/Label/font/'); - + $pdf->AddPage(); - + if ($label->font == 'DejaVuSans') { $pdf->AddFont($label->font,'','DejaVuSansMono.ttf',true); $pdf->SetFont($label->font); @@ -137,13 +142,12 @@ class Labels extends CI_Controller { $pdf->AddFont($label->font); $pdf->SetFont($label->font); } - - - if ($result->num_rows() > 0) { + + if ($qsos->num_rows() > 0) { if ($label->qsos == 1) { - $this->makeOneQsoLabel($result->result(), $pdf); + $this->makeOneQsoLabel($qsos->result(), $pdf); } else { - $this->makeMultiQsoLabel($result->result(), $pdf, $label->qsos); + $this->makeMultiQsoLabel($qsos->result(), $pdf, $label->qsos); } } else { $this->session->set_flashdata('message', '0 QSOs found for print!'); diff --git a/application/models/Labels_model.php b/application/models/Labels_model.php index 91c62027..c0c50494 100644 --- a/application/models/Labels_model.php +++ b/application/models/Labels_model.php @@ -127,4 +127,16 @@ class Labels_model extends CI_Model { return $query; } + + function export_printrequestedids($ids) { + $this->db->select($this->config->item('table_name').'.*, station_profile.*, dxcc_entities.name as station_country'); + $this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id'); + $this->db->join('dxcc_entities', 'station_profile.station_dxcc = dxcc_entities.adif'); + $this->db->where('station_profile.user_id', $this->session->userdata('user_id')); + $this->db->where_in('COL_PRIMARY_KEY', $ids); + $this->db->order_by("COL_DXCC", "ASC"); + $query = $this->db->get($this->config->item('table_name')); + + return $query; + } } \ No newline at end of file diff --git a/application/views/logbookadvanced/index.php b/application/views/logbookadvanced/index.php index ed417d8b..230df578 100644 --- a/application/views/logbookadvanced/index.php +++ b/application/views/logbookadvanced/index.php @@ -191,7 +191,10 @@ + + + diff --git a/assets/js/sections/logbookadvanced.js b/assets/js/sections/logbookadvanced.js index 70f026da..05156ac4 100644 --- a/assets/js/sections/logbookadvanced.js +++ b/assets/js/sections/logbookadvanced.js @@ -348,6 +348,45 @@ $(document).ready(function () { $('#notRequired').click(function (event) { handleQsl('I','', 'notRequired'); }); + $('#receivedBureau').click(function (event) { + }); + $('#receivedDirect').click(function (event) { + }); + + $('#printLabel').click(function (event) { + var elements = $('#qsoList tbody input:checked'); + var nElements = elements.length; + if (nElements == 0) { + return; + } + $('#printLabel').prop("disabled", true); + + var id_list=[]; + + elements.each(function() { + let id = $(this).first().closest('tr').data('qsoID') + id_list.push(id); + }); + + $.ajax({ + url: base_url + 'index.php/labels/printids', + type: 'post', + data: {'id': JSON.stringify(id_list, null, 2) }, + xhr:function(){ + var xhr = new XMLHttpRequest(); + xhr.responseType= 'blob' + return xhr; + }, + success: function(data) { + if(data){ + var file = new Blob([data], {type: 'application/pdf'}); + var fileURL = URL.createObjectURL(file); + window.open(fileURL); + } + $('#printLabel').prop("disabled", false); + } + }); + }); $('#searchForm').on('reset', function(e) { setTimeout(function() {