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() {