[Advanced Logbook] Added duration as a column

This commit is contained in:
Andreas Kristiansen
2026-02-21 22:29:08 +01:00
parent 42a4924313
commit cad0163767
5 changed files with 35 additions and 0 deletions

View File

@@ -622,6 +622,7 @@ class Logbookadvanced extends CI_Controller {
$json_string['frequency']['show'] = $this->def_boolean($this->input->post('frequency'));
$json_string['dcl']['show'] = $this->def_boolean($this->input->post('dcl'));
$json_string['last_modification']['show'] = $this->def_boolean($this->input->post('last_modification'));
$json_string['duration']['show'] = $this->def_boolean($this->input->post('duration'));
$obj['column_settings']= json_encode($json_string);

View File

@@ -128,6 +128,7 @@
\"frequency\":{\"show\":\"true\"},
\"dcl\":{\"show\":\"true\"},
\"last_modification\":{\"show\":\"false\"},
\"duration\":{\"show\":\"false\"},
}";
}
$current_opts = json_decode($options);
@@ -240,6 +241,10 @@
echo "\nvar o_template = { last_modification: {show: 'false'}};";
echo "\nuser_options={...user_options, ...o_template};";
}
if (!isset($current_opts->duration)) {
echo "\nvar o_template = { duration: {show: 'false'}};";
echo "\nuser_options={...user_options, ...o_template};";
}
foreach ($mapoptions as $mo) {
if ($mo != null) {
@@ -892,6 +897,9 @@ $options = json_decode($options);
</th>
<?php if (($options->datetime->show ?? "true") == "true") {
echo '<th>' . __("Date/Time") . '</th>';
} ?>
<?php if (($options->duration->show ?? "false") == "true") {
echo '<th>' . __("Duration") . '</th>';
} ?>
<?php if (($options->last_modification->show ?? "false") == "true") {
echo '<th>' . __("Last modified") . '</th>';

View File

@@ -22,6 +22,12 @@
<label class="form-check-label" for="datetime"><?= __("Date/Time"); ?></label>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="form-check">
<input class="form-check-input" name="duration" type="checkbox" id="duration" <?php if (($options->duration->show ?? "false") == "true") { echo 'checked'; } ?>>
<label class="form-check-label" for="duration"><?= __("Duration"); ?></label>
</div>
</div>
<div class="col-md-6 col-lg-4">
<div class="form-check">
<input class="form-check-input" name="de" type="checkbox" id="de" <?php if (($options->de->show ?? "true") == "true") { echo 'checked'; } ?>>

View File

@@ -63,6 +63,9 @@ function updateRow(qso) {
if ((user_options.datetime.show ?? 'true') == "true"){
cells.eq(c++).text(qso.qsoDateTime);
}
if ((user_options.duration.show ?? 'true') == "true"){
cells.eq(c++).text(qso.duration);
}
if ((user_options.last_modification.show ?? 'true') == "true"){
cells.eq(c++).text(qso.last_modified);
}
@@ -283,6 +286,9 @@ function loadQSOTable(rows) {
data.push(qso.qsoDateTime);
}
}
if ((user_options.duration.show ?? 'true') == "true"){
data.push(qso.duration);
}
if ((user_options.last_modification.show ?? 'true') == "true"){
data.push(qso.last_modified);
}
@@ -1816,6 +1822,7 @@ function saveOptions() {
type: 'post',
data: {
datetime: $('input[name="datetime"]').is(':checked') ? true : false,
duration: $('input[name="duration"]').is(':checked') ? true : false,
last_modification: $('input[name="last_modification"]').is(':checked') ? true : false,
de: $('input[name="de"]').is(':checked') ? true : false,
dx: $('input[name="dx"]').is(':checked') ? true : false,

View File

@@ -11,6 +11,7 @@ class QSO
{
private string $qsoID;
private string $qsoDateTime;
private string $duration;
private string $de;
private string $profilename;
private string $dx;
@@ -303,8 +304,19 @@ class QSO
$this->measurement_base = $measurement_base;
$this->duration = $this->calculateDuration($data['COL_TIME_ON'], $data['COL_TIME_OFF']);
}
function calculateDuration($start, $end) {
if ($start == null || $end == null) {
return '';
}
$start = new DateTime($start);
$end = new DateTime($end);
$interval = $end->diff($start);
return $interval->format('%H:%I:%S');
}
/**
* @return string
*/
@@ -1310,6 +1322,7 @@ class QSO
'qth' => $this->qth,
'frequency' => $this->getFormattedFrequency(),
'last_modified' => $this->last_modified,
'duration' => $this->duration
];
}