mirror of
https://github.com/wavelog/wavelog.git
synced 2026-03-22 10:24:14 +00:00
Fixed sorting for adif
This commit is contained in:
@@ -232,10 +232,11 @@ class Logbookadvanced extends CI_Controller {
|
||||
$this->load->model('logbookadvanced_model');
|
||||
|
||||
$ids = xss_clean($this->input->post('id'));
|
||||
$sortorder = xss_clean($this->input->post('sortorder'));
|
||||
$sortcolumn = xss_clean($this->input->post('sortcolumn'));
|
||||
$sortdirection = xss_clean($this->input->post('sortdirection'));
|
||||
$user_id = (int)$this->session->userdata('user_id');
|
||||
|
||||
$data['qsos'] = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id, $sortorder);
|
||||
$data['qsos'] = $this->logbookadvanced_model->getQsosForAdif($ids, $user_id, $sortcolumn, $sortdirection);
|
||||
|
||||
$this->load->view('adif/data/exportall', $data);
|
||||
}
|
||||
|
||||
@@ -679,7 +679,7 @@ class Logbookadvanced_model extends CI_Model {
|
||||
return $qsos;
|
||||
}
|
||||
|
||||
public function getQsosForAdif($ids, $user_id, $sortorder = null) : object {
|
||||
public function getQsosForAdif($ids, $user_id, $sortColumnVar = 'qsotime', $sortDirection = 'desc') : object {
|
||||
$binding = [$user_id];
|
||||
$conditions[] = "COL_PRIMARY_KEY in ?";
|
||||
$binding[] = json_decode($ids, true);
|
||||
@@ -689,7 +689,39 @@ class Logbookadvanced_model extends CI_Model {
|
||||
$where = "AND $where";
|
||||
}
|
||||
|
||||
$order = $this->getSortOrder($sortorder);
|
||||
$sortorder = '';
|
||||
|
||||
$sortColumnVar = '';
|
||||
$sortDirection = $sortDirection === 'asc' ? 'asc' : 'desc';
|
||||
|
||||
if ($sortColumnVar !== '') {
|
||||
switch($sortColumnVar) {
|
||||
case 'qsotime':
|
||||
$sortColumn = 'qsos.COL_TIME_ON';
|
||||
break;
|
||||
case 'band':
|
||||
$sortColumn = 'qsos.COL_BAND';
|
||||
break;
|
||||
case 'mode':
|
||||
$sortColumn = 'qsos.COL_MODE';
|
||||
break;
|
||||
case 'qsomodified':
|
||||
$sortColumn = 'qsos.last_modified';
|
||||
break;
|
||||
default:
|
||||
$sortColumn = 'qsos.COL_TIME_ON';
|
||||
}
|
||||
|
||||
$secondarySort = $sortDirection === 'asc' ? 'asc' : 'desc';
|
||||
$sortorder .= " ORDER BY $sortColumn $sortDirection";
|
||||
|
||||
// Add secondary sorts for mode column
|
||||
if ($sortDirection === 'mode') {
|
||||
$sortorder .= ", qsos.COL_SUBMODE $sortDirection";
|
||||
}
|
||||
|
||||
$sortorder .= ", qsos.COL_PRIMARY_KEY $secondarySort";
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT qsos.*, qsos.last_modified AS qso_last_modified, lotw_users.*, station_profile.*, dxcc_entities.name AS station_country, d2.adif as adif, d2.name as dxccname, exists(select 1 from qsl_images where qsoid = qsos.COL_PRIMARY_KEY) as qslcount, coalesce(contest.name, qsos.col_contest_id) as contestname
|
||||
@@ -701,70 +733,12 @@ class Logbookadvanced_model extends CI_Model {
|
||||
LEFT OUTER JOIN contest ON qsos.col_contest_id = contest.adifname
|
||||
WHERE station_profile.user_id = ?
|
||||
$where
|
||||
$order
|
||||
$sortorder
|
||||
";
|
||||
|
||||
return $this->db->query($sql, $binding);
|
||||
}
|
||||
|
||||
public function getSortOrder($sortorder) {
|
||||
if ($sortorder == null) {
|
||||
return 'ORDER BY qsos.COL_TIME_ON desc';
|
||||
} else {
|
||||
$sortorder = explode(',', $sortorder);
|
||||
if (strtoupper($sortorder[1] ?? '') == 'ASC') {
|
||||
$sortorder[1]='asc';
|
||||
} else {
|
||||
$sortorder[1]='desc';
|
||||
}
|
||||
|
||||
if ($this->session->userdata('user_lotw_name') != "" && $this->session->userdata('user_eqsl_name') != ""){
|
||||
switch($sortorder[0]) {
|
||||
case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1];
|
||||
case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1];
|
||||
case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1];
|
||||
case 4: return 'ORDER BY qsos.COL_MODE ' . $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1];
|
||||
case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1];
|
||||
case 16: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1];
|
||||
case 17: return 'ORDER BY qso.COL_STATE ' . $sortorder[1];
|
||||
case 18: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1];
|
||||
case 19: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1];
|
||||
default: return 'ORDER BY qsos.COL_TIME_ON desc';
|
||||
}
|
||||
}
|
||||
|
||||
else if (($this->session->userdata('user_eqsl_name') != "" && $this->session->userdata('user_lotw_name') == "") || ($this->session->userdata('user_eqsl_name') == "" && $this->session->userdata('user_lotw_name') != "")) {
|
||||
switch($sortorder[0]) {
|
||||
case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1];
|
||||
case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1];
|
||||
case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1];
|
||||
case 4: return 'ORDER BY qsos.COL_MODE ' . $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1];
|
||||
case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1];
|
||||
case 15: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1];
|
||||
case 16: return 'ORDER BY qso.COL_STATE ' . $sortorder[1];
|
||||
case 17: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1];
|
||||
case 18: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1];
|
||||
default: return 'ORDER BY qsos.COL_TIME_ON desc';
|
||||
}
|
||||
}
|
||||
|
||||
else if ($this->session->userdata('user_eqsl_name') == "" && $this->session->userdata('user_lotw_name') == ""){
|
||||
switch($sortorder[0]) {
|
||||
case 1: return 'ORDER BY qsos.COL_TIME_ON ' . $sortorder[1];
|
||||
case 2: return 'ORDER BY station_profile.station_callsign ' . $sortorder[1];
|
||||
case 3: return 'ORDER BY qsos.COL_CALL ' . $sortorder[1];
|
||||
case 4: return 'ORDER BY qsos.COL_MODE ' . $sortorder[1] . ', qsos.COL_SUBMODE ' . $sortorder[1];
|
||||
case 7: return 'ORDER BY qsos.COL_BAND ' . $sortorder[1] . ', qsos.COL_SAT_NAME ' . $sortorder[1];
|
||||
case 14: return 'ORDER BY qsos.COL_COUNTRY ' . $sortorder[1];
|
||||
case 15: return 'ORDER BY qso.COL_STATE ' . $sortorder[1];
|
||||
case 16: return 'ORDER BY qsos.COL_CQZ ' . $sortorder[1];
|
||||
case 17: return 'ORDER BY qsos.COL_IOTA ' . $sortorder[1];
|
||||
default: return 'ORDER BY qsos.COL_TIME_ON desc';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function updateQsl($ids, $user_id, $method, $sent) {
|
||||
$this->load->model('user_model');
|
||||
|
||||
|
||||
@@ -984,7 +984,7 @@ $(document).ready(function () {
|
||||
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
// You should set responseType as blob for binary responses
|
||||
xhttp.responseType = 'blob';
|
||||
xhttp.send("id=" + JSON.stringify(id_list, null, 2)+"&sortorder=" +$('.table').DataTable().order());
|
||||
xhttp.send("id=" + JSON.stringify(id_list, null, 2)+"&sortcolumn=" +$('#sortcolumn').val()+"&sortdirection=" +$('#sortdirection').val());
|
||||
} else {
|
||||
|
||||
// Post data to URL which handles post request
|
||||
|
||||
Reference in New Issue
Block a user