Merge branch 'master' of https://github.com/magicbug/Cloudlog into configurable_modes
some futher modifications
这个提交包含在:
当前提交
9cbd65b0cd
共有 24 个文件被更改,包括 782 次插入 和 144 次删除
9
.github/ISSUE_TEMPLATE/bug_report.md
vendored
9
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -1,20 +1,25 @@
|
||||||
---
|
---
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help us improve
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**This is for reporting bugs with the code, if this issue is regarding setting up on your local server please use the forum see readme for details**
|
||||||
|
|
||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
**To Reproduce**
|
**To Reproduce**
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behaviour:
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
4. See error
|
4. See error
|
||||||
|
|
||||||
**Expected behavior**
|
**Expected behaviour**
|
||||||
A clear and concise description of what you expected to happen.
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
**Screenshots**
|
**Screenshots**
|
||||||
|
|
|
||||||
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
5
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
|
@ -1,9 +1,14 @@
|
||||||
---
|
---
|
||||||
name: Feature request
|
name: Feature request
|
||||||
about: Suggest an idea for this project
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**This is for reporting bugs with the code, if this issue is regarding setting up on your local server please use the forum see readme for details**
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
**Is your feature request related to a problem? Please describe.**
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
|
|
||||||
37
README.md
37
README.md
|
|
@ -6,43 +6,24 @@ Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
* Linux based Operating System
|
* Linux based Operating System
|
||||||
* Apache (Nignx should work)
|
* Apache (Nginx should work)
|
||||||
* PHP (Version 7 or higher) & MySQL
|
* PHP (Version 7 or higher) & MySQL
|
||||||
|
|
||||||
You will also needthe following PHP modules installed
|
|
||||||
|
|
||||||
php-curl, php-mbstrings, php-xml
|
|
||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
* Master - Current working copy (Commit wise frozen till v2 is ready for release, unless bug fixes needed)
|
* **Master** - Current working branch
|
||||||
* cloudlog-v2 - This is the current development copy, while to work on bringing multiclient to Cloudlog without breaking users stable coplies, master now has a freeze on it.
|
* cloudlog-v2 - This is the current development copy, while to work on bringing multiclient to Cloudlog without breaking users stable copies.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
You can set up the basics of Cloudlog by opening /install in your browser. Please note theres an issue with the demo account creation (password invalid) so after this process you must disable auth via the config.php file and manually create yourself a user in till this issue is fixed.
|
Installation information can be found on the [wiki](https://github.com/magicbug/Cloudlog/wiki).
|
||||||
|
|
||||||
More information can be found in the [wiki](https://github.com/magicbug/Cloudlog/wiki).
|
|
||||||
|
|
||||||
Cloudlog now has a [Change Log](https://github.com/magicbug/Cloudlog/wiki/Change-Log) to go along with the commit history please consult this when updating.
|
Cloudlog now has a [Change Log](https://github.com/magicbug/Cloudlog/wiki/Change-Log) to go along with the commit history please consult this when updating.
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
Cloudlog support is handled via Issues on GitHub.
|
Cloudlog has two support systems for code issues use Github issues, however if you have general issues with setting up your server please use our general discussion forum [https://forum.cloudlog.co.uk](https://forum.cloudlog.co.uk).
|
||||||
|
|
||||||
## CAT Control
|
|
||||||
|
|
||||||
Cloudlog supports pushing radio information just like you would with a desktop operating system this is via a desktop app called [CloudlogCAT](https://github.com/magicbug/CloudlogCAT/releases) this application uses Omni-Rig thus supports most of the radios on the market.
|
|
||||||
|
|
||||||
If you use Linux, Mac or just hate Omni-Rig then Tobias (DL4TMA) has made a script called [cloudlog-rigctl-interface](https://github.com/Manawyrm/cloudlog-rigctl-interface) this interfaces rigctl to Cloudlogs CAT API. This script requires PHP-CLI to be installed. If you would like a pure Bash version, Tony (G0WFV) has you covered with [CloudlogBashCat](https://github.com/g0wfv/CloudlogBashCat) which also synchronises Cloudlog with rigctld.
|
|
||||||
|
|
||||||
## SatPC32 Interface
|
|
||||||
|
|
||||||
If your into satellite operations I have written a application [SatPC32 to Cloud Interface](https://github.com/magicbug/SatPC32-To-Cloudlog) which allows automatic population of satellite fields, Cloudlog just sees this as another radio interface.
|
|
||||||
|
|
||||||
## QSL Card Labels
|
|
||||||
|
|
||||||
I've started building out some scripts to generate labels for sticking on QSL Cards, at the moment it supports 24 label sheets, but theres no reason for it not to support more, these can be found at [Cloudlog-Labels](https://github.com/magicbug/cloudlog-labels)
|
|
||||||
|
|
||||||
## Want Cloudlog Hosting?
|
## Want Cloudlog Hosting?
|
||||||
|
|
||||||
|
|
@ -50,9 +31,9 @@ If you would prefer not to setup Cloudlog yourself [magicbug](https://magicbug.c
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
If you would like to contributing in anyway to Cloudlog then its most appreciated, this has been developed in free time, help coding new features or writing documentation is always useful.
|
If you would like to contribute in any way to Cloudlog, it is most appreciated. This has been developed in free time, help coding new features or writing documentation is always useful.
|
||||||
|
|
||||||
Please note that Cloudlog was built using [Codeigniter](https://www.codeigniter.com/docs) version 3 and uses Bootstrap 4 for the user CSS framework documentation is available for this when building components.
|
Please note that Cloudlog was built using [Codeigniter](https://www.codeigniter.com/docs) version 3 and uses Bootstrap 4 for the user CSS framework documentation is available for this when building components, code will also only be accepted for PR with comments.
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
|
@ -62,6 +43,6 @@ Thanks to Andy (VE7CXZ), Gavin (M1BXF), Graham (W5ISP), Robert (M0VFC), Corby (K
|
||||||
|
|
||||||
Cloudlog is supported by Patreon and donations via PayPal, thanks to the following people:
|
Cloudlog is supported by Patreon and donations via PayPal, thanks to the following people:
|
||||||
|
|
||||||
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY)
|
Paul (M0TZO), Tim (G4VXE), Paul (N8HM), Michelle (W5NYV), Mitchell (AD0HJ), Dan (M0TCB), Martin (DK3ML), Juan Carlos (EA5WA), Iain (M0PCB), Charlie (GM1TGY), Ondrej (OK1CDJ).
|
||||||
|
|
||||||
If you'd like to donate to Cloudlog to help allow @magicbug spend less time doing commerical work and more time coding Cloudlog then you can donate via [PayPal](https://paypal.me/PGoodhall) or become a [Patreon](https://www.patreon.com/2m0sql)
|
If you'd like to donate to Cloudlog to help allow @magicbug spend less time doing commercial work and more time coding Cloudlog then you can donate via [PayPal](https://paypal.me/PGoodhall) or become a [Patreon](https://www.patreon.com/2m0sql)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ class API extends CI_Controller {
|
||||||
|
|
||||||
|
|
||||||
function search_callsign($callsign) {
|
function search_callsign($callsign) {
|
||||||
$this->db->select('COL_PRIMARY_KEY, COL_CALL, COL_MODE, COL_BAND, COL_COUNTRY, COL_FREQ, COL_GRIDSQUARE, COL_RST_RCVD, COL_RST_SENT, COL_SAT_MODE, COL_SAT_NAME');
|
$this->db->select('COL_PRIMARY_KEY, COL_CALL, COL_MODE, COL_SUBMODE, COL_BAND, COL_COUNTRY, COL_FREQ, COL_GRIDSQUARE, COL_RST_RCVD, COL_RST_SENT, COL_SAT_MODE, COL_SAT_NAME');
|
||||||
//$this->db->select("DATE_FORMAT(COL_TIME_ON, '%H:%i') AS time_on", FALSE );
|
//$this->db->select("DATE_FORMAT(COL_TIME_ON, '%H:%i') AS time_on", FALSE );
|
||||||
//$this->db->select("DATE_FORMAT(COL_TIME_ON, '%d/%c/%Y') AS date_on", FALSE );
|
//$this->db->select("DATE_FORMAT(COL_TIME_ON, '%d/%c/%Y') AS date_on", FALSE );
|
||||||
$this->db->like('COL_CALL', $callsign);
|
$this->db->like('COL_CALL', $callsign);
|
||||||
|
|
|
||||||
|
|
@ -380,7 +380,7 @@ class Logbook extends CI_Controller {
|
||||||
$html = "";
|
$html = "";
|
||||||
|
|
||||||
|
|
||||||
$this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, station_profile.*');
|
$this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, station_profile.*');
|
||||||
$this->db->from($this->config->item('table_name'));
|
$this->db->from($this->config->item('table_name'));
|
||||||
|
|
||||||
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
|
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
|
||||||
|
|
@ -418,7 +418,10 @@ class Logbook extends CI_Controller {
|
||||||
} else {
|
} else {
|
||||||
$html .= "<td>".$row->COL_BAND."</td>";
|
$html .= "<td>".$row->COL_BAND."</td>";
|
||||||
}
|
}
|
||||||
$html .= "<td>".$row->COL_MODE."</td>";
|
if ($row->COL_SUBMODE==null)
|
||||||
|
$html .= "<td>".$row->COL_MODE."</td>";
|
||||||
|
else
|
||||||
|
$html .= "<td>".$row->COL_SUBMODE."</td>";
|
||||||
$html .= "<td class=\"qsl\">";
|
$html .= "<td class=\"qsl\">";
|
||||||
$html .= "<span class=\"qsl-";
|
$html .= "<span class=\"qsl-";
|
||||||
switch ($row->COL_QSL_SENT) {
|
switch ($row->COL_QSL_SENT) {
|
||||||
|
|
@ -483,7 +486,7 @@ class Logbook extends CI_Controller {
|
||||||
|
|
||||||
if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
|
if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; }
|
||||||
|
|
||||||
$this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_NAME, '.$this->config->item('table_name').'.COL_COUNTRY, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, station_profile.*');
|
$this->db->select(''.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_RST_RCVD, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_NAME, '.$this->config->item('table_name').'.COL_COUNTRY, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_SAT_NAME, '.$this->config->item('table_name').'.COL_GRIDSQUARE, '.$this->config->item('table_name').'.COL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_RCVD, '.$this->config->item('table_name').'.COL_EQSL_QSL_SENT, '.$this->config->item('table_name').'.COL_QSL_SENT, '.$this->config->item('table_name').'.COL_STX, '.$this->config->item('table_name').'.COL_STX_STRING, '.$this->config->item('table_name').'.COL_SRX, '.$this->config->item('table_name').'.COL_SRX_STRING, '.$this->config->item('table_name').'.COL_LOTW_QSL_SENT, '.$this->config->item('table_name').'.COL_LOTW_QSL_RCVD, '.$this->config->item('table_name').'.COL_VUCC_GRIDS, station_profile.*');
|
||||||
|
|
||||||
$this->db->from($this->config->item('table_name'));
|
$this->db->from($this->config->item('table_name'));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,13 @@ class Qrz extends CI_Controller {
|
||||||
$this->config->load('config');
|
$this->config->load('config');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Upload QSO to QRZ.com
|
/*
|
||||||
|
* Upload QSO to QRZ.com
|
||||||
|
* When called from the url cloudlog/qrz/upload, the function loops through all station_id's with a qrz api key defined.
|
||||||
|
* All QSOs not previously uploaded, will then be uploaded, one at a time
|
||||||
|
*/
|
||||||
public function upload() {
|
public function upload() {
|
||||||
|
$this->setOptions();
|
||||||
$this->config->load('config');
|
|
||||||
ini_set('memory_limit', '-1');
|
|
||||||
ini_set('display_errors', 1);
|
|
||||||
ini_set('display_startup_errors', 1);
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
|
|
||||||
$this->load->model('logbook_model');
|
$this->load->model('logbook_model');
|
||||||
|
|
||||||
|
|
@ -27,7 +26,13 @@ class Qrz extends CI_Controller {
|
||||||
if ($station_ids) {
|
if ($station_ids) {
|
||||||
foreach ($station_ids as $station_id) {
|
foreach ($station_ids as $station_id) {
|
||||||
$qrz_api_key = $this->logbook_model->exists_qrz_api_key($station_id);
|
$qrz_api_key = $this->logbook_model->exists_qrz_api_key($station_id);
|
||||||
$this->mass_upload_qsos($station_id, $qrz_api_key);
|
if($this->mass_upload_qsos($station_id, $qrz_api_key)) {
|
||||||
|
echo "QSOs has been uploaded to QRZ.com.";
|
||||||
|
log_message('info', 'QSOs has been uploaded to QRZ.com.');
|
||||||
|
} else{
|
||||||
|
echo "No QSOs found for upload.";
|
||||||
|
log_message('info', 'No QSOs found for upload.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
echo "No station_id's with a QRZ API Key found";
|
echo "No station_id's with a QRZ API Key found";
|
||||||
|
|
@ -36,7 +41,21 @@ class Qrz extends CI_Controller {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setOptions() {
|
||||||
|
$this->config->load('config');
|
||||||
|
ini_set('memory_limit', '-1');
|
||||||
|
ini_set('display_errors', 1);
|
||||||
|
ini_set('display_startup_errors', 1);
|
||||||
|
error_reporting(E_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function gets all QSOs from given station_id, that are not previously uploaded to qrz.
|
||||||
|
* Adif is build for each qso, and then uploaded, one at a time
|
||||||
|
*/
|
||||||
function mass_upload_qsos($station_id, $qrz_api_key) {
|
function mass_upload_qsos($station_id, $qrz_api_key) {
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
$data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id);
|
$data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id);
|
||||||
|
|
||||||
if ($data['qsos']) {
|
if ($data['qsos']) {
|
||||||
|
|
@ -45,17 +64,66 @@ class Qrz extends CI_Controller {
|
||||||
$result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif);
|
$result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$this->markqso($qso['COL_PRIMARY_KEY']);
|
$this->markqso($qso['COL_PRIMARY_KEY']);
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo "QSOs has been uploaded to QRZ.com.";
|
return $i;
|
||||||
log_message('info', 'QSOs has been uploaded to QRZ.com.');
|
|
||||||
} else {
|
} else {
|
||||||
echo "No QSOs found for upload.";
|
return $i;
|
||||||
log_message('info', 'No QSOs found for upload.');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function marks QSO with given primarykey as uploaded to qrz
|
||||||
|
*/
|
||||||
function markqso($primarykey) {
|
function markqso($primarykey) {
|
||||||
$this->logbook_model->mark_qrz_qsos_sent($primarykey);
|
$this->logbook_model->mark_qrz_qsos_sent($primarykey);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/*
|
||||||
|
* Used for displaying the uid for manually selecting log for upload to qrz
|
||||||
|
*/
|
||||||
|
public function export() {
|
||||||
|
$this->load->model('stations');
|
||||||
|
|
||||||
|
$data['page_title'] = "QRZ.com Export";
|
||||||
|
|
||||||
|
$data['station_profile'] = $this->stations->stations_with_qrz_api_key();
|
||||||
|
$active_station_id = $this->stations->find_active();
|
||||||
|
$station_profile = $this->stations->profile($active_station_id);
|
||||||
|
|
||||||
|
$data['active_station_info'] = $station_profile->row();
|
||||||
|
|
||||||
|
$this->load->view('interface_assets/header', $data);
|
||||||
|
$this->load->view('qrz/export');
|
||||||
|
$this->load->view('interface_assets/footer');
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Used for ajax-function when selecting log for upload to qrz
|
||||||
|
*/
|
||||||
|
public function upload_station() {
|
||||||
|
$this->setOptions();
|
||||||
|
$this->load->model('stations');
|
||||||
|
$postData = $this->input->post();
|
||||||
|
|
||||||
|
$this->load->model('logbook_model');
|
||||||
|
$qrz_api_key = $this->logbook_model->exists_qrz_api_key($postData['station_id']);
|
||||||
|
|
||||||
|
header('Content-type: application/json');
|
||||||
|
if ($i = $this->mass_upload_qsos($postData['station_id'], $qrz_api_key)) {
|
||||||
|
|
||||||
|
$stationinfo = $this->stations->stations_with_qrz_api_key();
|
||||||
|
$info = $stationinfo->result();
|
||||||
|
|
||||||
|
$data['status'] = 'OK';
|
||||||
|
$data['info'] = $info;
|
||||||
|
$data['infomessage'] = $i . " QSOs are now uploaded to QRZ.com";
|
||||||
|
echo json_encode($data);
|
||||||
|
} else {
|
||||||
|
$data['status'] = 'Error';
|
||||||
|
$data['info'] = 'Error, no QSOs to upload found';
|
||||||
|
echo json_encode($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
class Frequency {
|
class Frequency {
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
const modes = array('SSB','FM','AM','CW','DSTAR','C4FM','DMR','DIGITALVOICE',
|
||||||
|
'PSK31','PSK63','RTTY','JT65','JT65B','JT6C','JT9-1',
|
||||||
|
'JT9','FT4','FT8','JS8','FSK441','JTMS','ISCAT','MSK144','JTMSK',
|
||||||
|
'QRA64','PKT','SSTV','HELL','HELL80','MFSK16', 'JT6M', 'ROS');
|
||||||
|
|
||||||
|
>>>>>>> 2ea3233ee2a0eae45f596e44c6841846cc2b1a7b
|
||||||
public $defaultFrequencies = array(
|
public $defaultFrequencies = array(
|
||||||
'160m'=>array(
|
'160m'=>array(
|
||||||
'SSB'=>"1900000",
|
'SSB'=>"1900000",
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,26 @@
|
||||||
|
|
||||||
class Qra {
|
class Qra {
|
||||||
|
|
||||||
// Name: QRA
|
/*
|
||||||
|
* Class Description: QRA handles manipulation of the Gridsquares used within amateur radio
|
||||||
|
*
|
||||||
|
* Units of measurement are the following
|
||||||
|
*
|
||||||
|
* Info: Distance Function
|
||||||
|
*
|
||||||
|
* M = Miles
|
||||||
|
* K = Kilometers
|
||||||
|
* N = Nautical Miles
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Name: qra2latlong
|
||||||
// Task: convert qra to lat/long
|
// Task: convert qra to lat/long
|
||||||
|
|
||||||
function qra2latlong($strQRA)
|
function qra2latlong($strQRA)
|
||||||
{
|
{
|
||||||
return qra2latlong($strQRA);
|
return qra2latlong($strQRA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calculate the bearing between two squares
|
||||||
function bearing($tx, $rx, $unit = 'M') {
|
function bearing($tx, $rx, $unit = 'M') {
|
||||||
$my = qra2latlong($tx);
|
$my = qra2latlong($tx);
|
||||||
$stn = qra2latlong($rx);
|
$stn = qra2latlong($rx);
|
||||||
|
|
@ -18,16 +30,27 @@ class Qra {
|
||||||
|
|
||||||
return $bearing;
|
return $bearing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: calculate the distance between two gridsqaures
|
||||||
|
*
|
||||||
|
* Inputs are QRA's TX and TX and the unit
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function distance($tx, $rx, $unit = 'M') {
|
||||||
|
// Calc LatLongs
|
||||||
|
$my = qra2latlong($tx);
|
||||||
|
$stn = qra2latlong($rx);
|
||||||
|
|
||||||
|
// Feed in Lat Longs plus the unit type
|
||||||
|
$total_distance = distance($my[0], $my[1], $stn[0], $stn[1], $unit);
|
||||||
|
|
||||||
|
// Return the distance
|
||||||
|
return $total_distance;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Info: Distance Function
|
|
||||||
|
|
||||||
M = Miles
|
|
||||||
K = Kilometers
|
|
||||||
N = Nautical Miles
|
|
||||||
*/
|
|
||||||
|
|
||||||
function distance($lat1, $lon1, $lat2, $lon2, $unit = 'M') {
|
function distance($lat1, $lon1, $lat2, $lon2, $unit = 'M') {
|
||||||
$theta = $lon1 - $lon2;
|
$theta = $lon1 - $lon2;
|
||||||
|
|
|
||||||
|
|
@ -612,7 +612,7 @@ class Logbook_model extends CI_Model {
|
||||||
|
|
||||||
/* Return last 10 QSOs */
|
/* Return last 10 QSOs */
|
||||||
function last_ten() {
|
function last_ten() {
|
||||||
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
||||||
$this->db->order_by("COL_TIME_ON", "desc");
|
$this->db->order_by("COL_TIME_ON", "desc");
|
||||||
$this->db->limit(10);
|
$this->db->limit(10);
|
||||||
|
|
||||||
|
|
@ -621,7 +621,7 @@ class Logbook_model extends CI_Model {
|
||||||
|
|
||||||
/* Show custom number of qsos */
|
/* Show custom number of qsos */
|
||||||
function last_custom($num) {
|
function last_custom($num) {
|
||||||
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
||||||
$this->db->order_by("COL_TIME_ON", "desc");
|
$this->db->order_by("COL_TIME_ON", "desc");
|
||||||
$this->db->limit($num);
|
$this->db->limit($num);
|
||||||
|
|
||||||
|
|
@ -850,7 +850,7 @@ class Logbook_model extends CI_Model {
|
||||||
function get_qrz_qsos($station_id){
|
function get_qrz_qsos($station_id){
|
||||||
$sql = 'select * from ' . $this->config->item('table_name') .
|
$sql = 'select * from ' . $this->config->item('table_name') .
|
||||||
' where station_id = ' . $station_id .
|
' where station_id = ' . $station_id .
|
||||||
' and (COL_QRZCOM_QSO_UPLOAD_STATUS = NULL
|
' and (COL_QRZCOM_QSO_UPLOAD_STATUS is NULL
|
||||||
or COL_QRZCOM_QSO_UPLOAD_STATUS = ""
|
or COL_QRZCOM_QSO_UPLOAD_STATUS = ""
|
||||||
or COL_QRZCOM_QSO_UPLOAD_STATUS = "M"
|
or COL_QRZCOM_QSO_UPLOAD_STATUS = "M"
|
||||||
or COL_QRZCOM_QSO_UPLOAD_STATUS = "N")';
|
or COL_QRZCOM_QSO_UPLOAD_STATUS = "N")';
|
||||||
|
|
@ -885,7 +885,7 @@ class Logbook_model extends CI_Model {
|
||||||
$CI->load->model('Stations');
|
$CI->load->model('Stations');
|
||||||
$station_id = $CI->Stations->find_active();
|
$station_id = $CI->Stations->find_active();
|
||||||
|
|
||||||
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_STX_STRING, COL_SRX_STRING');
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_STX_STRING, COL_SRX_STRING');
|
||||||
$this->db->where("station_id", $station_id);
|
$this->db->where("station_id", $station_id);
|
||||||
$this->db->order_by("COL_TIME_ON", "desc");
|
$this->db->order_by("COL_TIME_ON", "desc");
|
||||||
$this->db->limit($num);
|
$this->db->limit($num);
|
||||||
|
|
@ -896,7 +896,7 @@ class Logbook_model extends CI_Model {
|
||||||
|
|
||||||
/* Get All QSOs with a Valid Grid */
|
/* Get All QSOs with a Valid Grid */
|
||||||
function kml_get_all_qsos() {
|
function kml_get_all_qsos() {
|
||||||
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE');
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME, COL_GRIDSQUARE');
|
||||||
$this->db->where('COL_GRIDSQUARE != \'null\'');
|
$this->db->where('COL_GRIDSQUARE != \'null\'');
|
||||||
$query = $this->db->get($this->config->item('table_name'));
|
$query = $this->db->get($this->config->item('table_name'));
|
||||||
|
|
||||||
|
|
@ -904,7 +904,7 @@ class Logbook_model extends CI_Model {
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_date_qsos($date) {
|
function get_date_qsos($date) {
|
||||||
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
$this->db->select('COL_CALL, COL_BAND, COL_TIME_ON, COL_RST_RCVD, COL_RST_SENT, COL_MODE, COL_SUBMODE, COL_NAME, COL_COUNTRY, COL_PRIMARY_KEY, COL_SAT_NAME');
|
||||||
$this->db->order_by("COL_TIME_ON", "desc");
|
$this->db->order_by("COL_TIME_ON", "desc");
|
||||||
$start = $date." 00:00:00";
|
$start = $date." 00:00:00";
|
||||||
$end = $date." 23:59:59";
|
$end = $date." 23:59:59";
|
||||||
|
|
@ -1406,7 +1406,7 @@ class Logbook_model extends CI_Model {
|
||||||
|
|
||||||
// Show all QSOs we need to send to eQSL
|
// Show all QSOs we need to send to eQSL
|
||||||
function eqsl_not_yet_sent() {
|
function eqsl_not_yet_sent() {
|
||||||
$this->db->select('station_profile.*, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_COMMENT, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_PROP_MODE');
|
$this->db->select('station_profile.*, '.$this->config->item('table_name').'.COL_PRIMARY_KEY, '.$this->config->item('table_name').'.COL_TIME_ON, '.$this->config->item('table_name').'.COL_CALL, '.$this->config->item('table_name').'.COL_MODE, '.$this->config->item('table_name').'.COL_SUBMODE, '.$this->config->item('table_name').'.COL_BAND, '.$this->config->item('table_name').'.COL_COMMENT, '.$this->config->item('table_name').'.COL_RST_SENT, '.$this->config->item('table_name').'.COL_PROP_MODE');
|
||||||
$this->db->from('station_profile');
|
$this->db->from('station_profile');
|
||||||
$this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id AND station_profile.eqslqthnickname != ""','left');
|
$this->db->join($this->config->item('table_name'),'station_profile.station_id = '.$this->config->item('table_name').'.station_id AND station_profile.eqslqthnickname != ""','left');
|
||||||
$this->db->where($this->config->item('table_name').'.COL_EQSL_QSL_SENT !=', 'Y');
|
$this->db->where($this->config->item('table_name').'.COL_EQSL_QSL_SENT !=', 'Y');
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,34 @@ class Stations extends CI_Model {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function stations_with_qrz_api_key() {
|
||||||
|
$sql = "select station_profile.station_id, station_profile.station_profile_name, station_profile.station_callsign, modc.modcount, notc.notcount, totc.totcount
|
||||||
|
from station_profile
|
||||||
|
left outer join (
|
||||||
|
select count(*) modcount, station_id
|
||||||
|
from ". $this->config->item('table_name') .
|
||||||
|
" where COL_QRZCOM_QSO_UPLOAD_STATUS = 'M'
|
||||||
|
group by station_id
|
||||||
|
) as modc on station_profile.station_id = modc.station_id
|
||||||
|
left outer join (
|
||||||
|
select count(*) notcount, station_id
|
||||||
|
from " . $this->config->item('table_name') .
|
||||||
|
" where (coalesce(COL_QRZCOM_QSO_UPLOAD_STATUS, '') = ''
|
||||||
|
or COL_QRZCOM_QSO_UPLOAD_STATUS = 'N')
|
||||||
|
group by station_id
|
||||||
|
) as notc on station_profile.station_id = notc.station_id
|
||||||
|
left outer join (
|
||||||
|
select count(*) totcount, station_id
|
||||||
|
from " . $this->config->item('table_name') .
|
||||||
|
" where COL_QRZCOM_QSO_UPLOAD_STATUS = 'Y'
|
||||||
|
group by station_id
|
||||||
|
) as totc on station_profile.station_id = totc.station_id
|
||||||
|
where coalesce(station_profile.qrzapikey, '') <> ''";
|
||||||
|
$query = $this->db->query($sql);
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
@ -4,6 +4,6 @@
|
||||||
<EOH>
|
<EOH>
|
||||||
|
|
||||||
<?php foreach ($qsos->result() as $qso) { //print_r($qso);?>
|
<?php foreach ($qsos->result() as $qso) { //print_r($qso);?>
|
||||||
<call:<?php echo strlen($qso->COL_CALL); ?>><?php echo $qso->COL_CALL; ?><band:<?php echo strlen($qso->COL_BAND); ?>><?php echo $qso->COL_BAND; ?><mode:<?php echo strlen($qso->COL_MODE); ?>><?php echo $qso->COL_MODE; ?><?php if($qso->COL_FREQ != "0") { ?><freq:<?php echo strlen($qso->COL_FREQ); ?>><?php echo $qso->COL_FREQ; ?><?php } ?><?php $date_on = strtotime($qso->COL_TIME_ON); $new_date = date('Ymd', $date_on); ?><qso_date:<?php echo strlen($new_date); ?>><?php echo $new_date; ?><?php $time_on = strtotime($qso->COL_TIME_ON); $new_on = date('Hi', $time_on); ?><time_on:<?php echo strlen($new_on); ?>><?php echo $new_on; ?><?php $time_off = strtotime($qso->COL_TIME_OFF); $new_off = date('Hi', $time_off); ?><time_off:<?php echo strlen($new_off); ?>><?php echo $new_off; ?><rst_rcvd:<?php echo strlen($qso->COL_RST_RCVD); ?>><?php echo $qso->COL_RST_RCVD; ?><rst_sent:<?php echo strlen($qso->COL_RST_SENT); ?>><?php echo $qso->COL_RST_SENT; ?><qsl_rcvd:<?php echo strlen($qso->COL_QSL_RCVD); ?>><?php echo $qso->COL_QSL_RCVD; ?><qsl_sent:<?php echo strlen($qso->COL_QSL_SENT); ?>><?php echo $qso->COL_QSL_SENT; ?><country:<?php echo strlen($qso->COL_COUNTRY); ?>><?php echo $qso->COL_COUNTRY; ?><?php if($qso->COL_GRIDSQUARE != "") { ?><gridsquare:<?php echo strlen($qso->COL_GRIDSQUARE); ?>><?php echo $qso->COL_GRIDSQUARE; ?><?php } ?><?php if($qso->COL_SAT_NAME) { ?><sat_mode:<?php echo strlen($qso->COL_SAT_MODE); ?>><?php echo $qso->COL_SAT_MODE; ?><sat_name:<?php echo strlen($qso->COL_SAT_NAME); ?>><?php echo $qso->COL_SAT_NAME; ?><?php } ?><?php if($qso->COL_PROP_MODE) { ?><prop_mode:<?php echo strlen($qso->COL_PROP_MODE); ?>><?php echo $qso->COL_PROP_MODE; ?><?php } ?><?php if($qso->COL_NAME) { ?><name:<?php echo strlen($qso->COL_NAME); ?>><?php echo $qso->COL_NAME; ?><?php } ?><?php if($qso->COL_COMMENT) { ?><comment:<?php echo strlen($qso->COL_COMMENT); ?>><?php echo $qso->COL_COMMENT; ?><?php } ?><eor>
|
<call:<?php echo strlen($qso->COL_CALL); ?>><?php echo $qso->COL_CALL; ?><band:<?php echo strlen($qso->COL_BAND); ?>><?php echo $qso->COL_BAND; ?><mode:<?php echo strlen($qso->COL_MODE); ?>><?php echo $qso->COL_MODE; ?><?php if($qso->COL_SUBMODE) { ?><SUBMODE:<?php echo strlen($qso->COL_SUBMODE); ?>><?php echo $qso->COL_SUBMODE; ?><?php } ?><?php if($qso->COL_FREQ != "0") { ?><freq:<?php echo strlen($qso->COL_FREQ); ?>><?php echo $qso->COL_FREQ; ?><?php } ?><?php $date_on = strtotime($qso->COL_TIME_ON); $new_date = date('Ymd', $date_on); ?><qso_date:<?php echo strlen($new_date); ?>><?php echo $new_date; ?><?php $time_on = strtotime($qso->COL_TIME_ON); $new_on = date('Hi', $time_on); ?><time_on:<?php echo strlen($new_on); ?>><?php echo $new_on; ?><?php $time_off = strtotime($qso->COL_TIME_OFF); $new_off = date('Hi', $time_off); ?><time_off:<?php echo strlen($new_off); ?>><?php echo $new_off; ?><rst_rcvd:<?php echo strlen($qso->COL_RST_RCVD); ?>><?php echo $qso->COL_RST_RCVD; ?><rst_sent:<?php echo strlen($qso->COL_RST_SENT); ?>><?php echo $qso->COL_RST_SENT; ?><qsl_rcvd:<?php echo strlen($qso->COL_QSL_RCVD); ?>><?php echo $qso->COL_QSL_RCVD; ?><qsl_sent:<?php echo strlen($qso->COL_QSL_SENT); ?>><?php echo $qso->COL_QSL_SENT; ?><country:<?php echo strlen($qso->COL_COUNTRY); ?>><?php echo $qso->COL_COUNTRY; ?><?php if($qso->COL_GRIDSQUARE != "") { ?><gridsquare:<?php echo strlen($qso->COL_GRIDSQUARE); ?>><?php echo $qso->COL_GRIDSQUARE; ?><?php } ?><?php if($qso->COL_SAT_NAME) { ?><sat_mode:<?php echo strlen($qso->COL_SAT_MODE); ?>><?php echo $qso->COL_SAT_MODE; ?><sat_name:<?php echo strlen($qso->COL_SAT_NAME); ?>><?php echo $qso->COL_SAT_NAME; ?><?php } ?><?php if($qso->COL_PROP_MODE) { ?><prop_mode:<?php echo strlen($qso->COL_PROP_MODE); ?>><?php echo $qso->COL_PROP_MODE; ?><?php } ?><?php if($qso->COL_NAME) { ?><name:<?php echo strlen($qso->COL_NAME); ?>><?php echo $qso->COL_NAME; ?><?php } ?><?php if($qso->COL_COMMENT) { ?><comment:<?php echo strlen($qso->COL_COMMENT); ?>><?php echo $qso->COL_COMMENT; ?><?php } ?><eor>
|
||||||
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
<?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?>
|
<?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td><?php echo $row->COL_MODE; ?></td>
|
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
|
||||||
<td class="d-none d-sm-table-cell"><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?><span class="label"><?php echo $row->COL_STX_STRING;?></span><?php } ?></td>
|
<td class="d-none d-sm-table-cell"><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?><span class="label"><?php echo $row->COL_STX_STRING;?></span><?php } ?></td>
|
||||||
<td class="d-none d-sm-table-cell"><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?><span class="label"><?php echo $row->COL_SRX_STRING;?></span><?php } ?></td>
|
<td class="d-none d-sm-table-cell"><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?><span class="label"><?php echo $row->COL_SRX_STRING;?></span><?php } ?></td>
|
||||||
<?php if($row->COL_SAT_NAME != null) { ?>
|
<?php if($row->COL_SAT_NAME != null) { ?>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="radio" name="eqslimport" id="fetch" value="fetch" /> Pull eQSL data for me</td>
|
<td><input type="radio" name="eqslimport" id="fetch" value="fetch" checked="checked"/> Pull eQSL data for me</td>
|
||||||
<td>
|
<td>
|
||||||
<p>Cloudlog will use the eQSL username and password stored in your user profile to download confirmations from eQSL for you. We will only download confirmations received since your last eQSL confirmed QSO.</p>
|
<p>Cloudlog will use the eQSL username and password stored in your user profile to download confirmations from eQSL for you. We will only download confirmations received since your last eQSL confirmed QSO.</p>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,10 @@ $(".search-results-box").hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
var callsign = '<a data-fancybox data-type="iframe" data-src="<?php echo site_url('logbook/view');?>/' + item.COL_PRIMARY_KEY + '" data-src="" href="javascript:;">' + item.COL_CALL + '</a>';
|
var callsign = '<a data-fancybox data-type="iframe" data-src="<?php echo site_url('logbook/view');?>/' + item.COL_PRIMARY_KEY + '" data-src="" href="javascript:;">' + item.COL_CALL + '</a>';
|
||||||
|
if item.COL_SUBMODE==null
|
||||||
$('#results').append('<tr class="qso"><td>' + item.COL_TIME_ON + '</td><td>' + callsign + '</td><td>' + item.COL_MODE + '</td><td>' + item.COL_RST_SENT + '</td><td>' + item.COL_RST_RCVD + '</td><td>' + band + '</td><td>' + item.COL_COUNTRY + '</td><td></td></tr>');
|
$('#results').append('<tr class="qso"><td>' + item.COL_TIME_ON + '</td><td>' + callsign + '</td><td>' + item.COL_MODE + '</td><td>' + item.COL_RST_SENT + '</td><td>' + item.COL_RST_RCVD + '</td><td>' + band + '</td><td>' + item.COL_COUNTRY + '</td><td></td></tr>');
|
||||||
|
else
|
||||||
|
$('#results').append('<tr class="qso"><td>' + item.COL_TIME_ON + '</td><td>' + callsign + '</td><td>' + item.COL_SUBMODE + '</td><td>' + item.COL_RST_SENT + '</td><td>' + item.COL_RST_RCVD + '</td><td>' + band + '</td><td>' + item.COL_COUNTRY + '</td><td></td></tr>');
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -269,6 +271,100 @@ $(document).on('keypress',function(e) {
|
||||||
|
|
||||||
<?php if ($this->uri->segment(1) == "qso") { ?>
|
<?php if ($this->uri->segment(1) == "qso") { ?>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$( document ).ready(function() {
|
||||||
|
/*
|
||||||
|
Populate the Satellite Names Field on the QSO Panel
|
||||||
|
*/
|
||||||
|
$.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {
|
||||||
|
|
||||||
|
// Build the options array
|
||||||
|
var items = [];
|
||||||
|
$.each( data, function( key, val ) {
|
||||||
|
items.push(
|
||||||
|
'<option value="' + key + '">' + key + '</option>'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add to the datalist
|
||||||
|
$('.satellite_names_list').append(items.join( "" ));
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
var selected_sat;
|
||||||
|
var selected_sat_mode;
|
||||||
|
|
||||||
|
$(document).on('change', 'input', function(){
|
||||||
|
var optionslist = $('.satellite_names_list')[0].options;
|
||||||
|
var value = $(this).val();
|
||||||
|
for (var x=0;x<optionslist.length;x++){
|
||||||
|
if (optionslist[x].value === value) {
|
||||||
|
$("#sat_mode").val("");
|
||||||
|
$('.satellite_modes_list').find('option').remove().end();
|
||||||
|
selected_sat = value;
|
||||||
|
// get Json file
|
||||||
|
$.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {
|
||||||
|
|
||||||
|
// Build the options array
|
||||||
|
var sat_modes = [];
|
||||||
|
$.each( data, function( key, val ) {
|
||||||
|
if (key == value) {
|
||||||
|
$.each( val.Modes, function( key1, val2 ) {
|
||||||
|
//console.log (key1);
|
||||||
|
sat_modes.push('<option value="' + key1 + '">' + key1 + '</option>');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add to the datalist
|
||||||
|
$('.satellite_modes_list').append(sat_modes.join( "" ));
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('change', 'input', function(){
|
||||||
|
var optionslist = $('.satellite_modes_list')[0].options;
|
||||||
|
var value = $(this).val();
|
||||||
|
for (var x=0;x<optionslist.length;x++){
|
||||||
|
if (optionslist[x].value === value) {
|
||||||
|
|
||||||
|
// Store selected sat mode
|
||||||
|
selected_sat_mode = value;
|
||||||
|
|
||||||
|
// get Json file
|
||||||
|
$.getJSON( "<?php echo base_url();?>assets/json/satellite_data.json", function( data ) {
|
||||||
|
|
||||||
|
// Build the options array
|
||||||
|
var sat_modes = [];
|
||||||
|
$.each( data, function( key, val ) {
|
||||||
|
if (key == selected_sat) {
|
||||||
|
$.each( val.Modes, function( key1, val2 ) {
|
||||||
|
if(key1 == selected_sat_mode) {
|
||||||
|
|
||||||
|
if (val2[0].Uplink_Mode == "LSB" || val2[0].Uplink_Mode == "USB") {
|
||||||
|
$("#mode").val("SSB");
|
||||||
|
} else {
|
||||||
|
$("#mode").val(val2[0].Uplink_Mode);
|
||||||
|
}
|
||||||
|
$("#band").val(frequencyToBand(val2[0].Uplink_Freq));
|
||||||
|
$("#frequency").val(val2[0].Uplink_Freq);
|
||||||
|
$("#frequency_rx").val(val2[0].Downlink_Freq);
|
||||||
|
$("#selectPropagation").val('SAT');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
var markers = L.layerGroup();
|
var markers = L.layerGroup();
|
||||||
var mymap = L.map('qsomap').setView([51.505, -0.09], 13);
|
var mymap = L.map('qsomap').setView([51.505, -0.09], 13);
|
||||||
|
|
@ -1262,5 +1358,35 @@ $(document).ready(function(){
|
||||||
</script>
|
</script>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if ($this->uri->segment(1) == "qrz") { ?>
|
||||||
|
<script>
|
||||||
|
function ExportQrz(station_id) {
|
||||||
|
$(".ld-ext-right").addClass('running');
|
||||||
|
$(".ld-ext-right").prop('disabled', true);
|
||||||
|
var baseURL= "<?php echo base_url();?>";
|
||||||
|
$.ajax({
|
||||||
|
url: baseURL + 'index.php/qrz/upload_station',
|
||||||
|
type: 'post',
|
||||||
|
data: {'station_id': station_id},
|
||||||
|
success: function (data) {
|
||||||
|
$(".ld-ext-right").removeClass('running');
|
||||||
|
$(".ld-ext-right").prop('disabled', false);
|
||||||
|
if (data.status == 'OK') {
|
||||||
|
$.each(data.info, function(index, value){
|
||||||
|
$('#modcount'+value.station_id).html(value.modcount);
|
||||||
|
$('#notcount'+value.station_id).html(value.notcount);
|
||||||
|
$('#totcount'+value.station_id).html(value.totcount);
|
||||||
|
});
|
||||||
|
$(".card-body").append('<div class="alert alert-success" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>' + data.infomessage + '</div>');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(".card-body").append('<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>' + data.info + '</div>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<?php } ?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,12 @@
|
||||||
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
|
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/quill/quill.snow.css" />
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<?php if ($this->uri->segment(1) == "qso") { ?>
|
<?php if ($this->uri->segment(1) == "qrz") { ?>
|
||||||
|
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/loading.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/css/ldbtn.min.css" />
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if ($this->uri->segment(1) == "qso") { ?>
|
||||||
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/select2/css/select2.min.css" />
|
<link rel="stylesheet" type="text/css" href="<?php echo base_url(); ?>assets/plugins/select2/css/select2.min.css" />
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php if ($this->uri->segment(1) == "adif") { ?>
|
<?php if ($this->uri->segment(1) == "adif") { ?>
|
||||||
|
|
@ -108,13 +113,17 @@
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<a class="dropdown-item" href="<?php echo site_url('lotw/import');?>" title="LoTW Import/Export"><i class="fas fa-sync"></i> LoTW Import/Export</a>
|
<a class="dropdown-item" href="<?php echo site_url('lotw/import');?>" title="LoTW Import"><i class="fas fa-sync"></i> LoTW Import</a>
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<a class="dropdown-item" href="<?php echo site_url('eqsl/import');?>" title="eQSL Import/Export"><i class="fas fa-sync"></i> eQSL Import/Export</a>
|
<a class="dropdown-item" href="<?php echo site_url('eqsl/import');?>" title="eQSL Import/Export"><i class="fas fa-sync"></i> eQSL Import/Export</a>
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
|
<a class="dropdown-item" href="<?php echo site_url('qrz/export');?>" title="QRZ.com Export"><i class="fas fa-sync"></i> QRZ.com Export</a>
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<a class="dropdown-item" href="<?php echo site_url('qslprint');?>" title="Print Requested QSLs"><i class="fas fa-print"></i> Print Requested QSLs</a>
|
<a class="dropdown-item" href="<?php echo site_url('qslprint');?>" title="Print Requested QSLs"><i class="fas fa-print"></i> Print Requested QSLs</a>
|
||||||
|
|
||||||
|
|
@ -163,6 +172,10 @@
|
||||||
|
|
||||||
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/wiki" title="Help"><i class="fas fa-question"></i> Help</a>
|
<a class="dropdown-item" target="_blank" href="https://github.com/magicbug/Cloudlog/wiki" title="Help"><i class="fas fa-question"></i> Help</a>
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
|
<a class="dropdown-item" target="_blank" href="https://forum.cloudlog.co.uk" title="Forum"><i class="fas fa-question"></i> Forum</a>
|
||||||
|
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<a class="dropdown-item" href="<?php echo site_url('user/logout');?>" title="Logout"><i class="fas fa-sign-out-alt"></i> Logout</a>
|
<a class="dropdown-item" href="<?php echo site_url('user/logout');?>" title="Logout"><i class="fas fa-sign-out-alt"></i> Logout</a>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<div class="custom-control custom-radio">
|
<div class="custom-control custom-radio">
|
||||||
<input type="radio" name="lotwimport" id="fetch" class="custom-control-input" value="fetch" />
|
<input type="radio" name="lotwimport" id="fetch" class="custom-control-input" value="fetch" checked="checked" />
|
||||||
<label class="custom-control-label" for="fetch">Pull LoTW data for me</label>
|
<label class="custom-control-label" for="fetch">Pull LoTW data for me</label>
|
||||||
</div>
|
</div>
|
||||||
<p class="card-text">From date:</p>
|
<p class="card-text">From date:</p>
|
||||||
|
|
|
||||||
52
application/views/qrz/export.php
普通文件
52
application/views/qrz/export.php
普通文件
|
|
@ -0,0 +1,52 @@
|
||||||
|
|
||||||
|
<div class="container adif">
|
||||||
|
|
||||||
|
<h1>QRZ.com Functions</h1>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h5 class="card-title"><?php echo $page_title; ?></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<p>Here you can upload all QSOs to QRZ.com, which have not been previously uploaded. This might take a while, since only 1 QSO is uploaded at a time.</p>
|
||||||
|
|
||||||
|
<p>You need to set a QRZ API Key in your station profile. Only a station profile with an API Key set, is diplayed in the table below.</p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
if ($station_profile->result()) {
|
||||||
|
echo '
|
||||||
|
|
||||||
|
<table class="table table-bordered table-hover table-striped table-condensed text-center">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td>Profile name</td>
|
||||||
|
<td>Station callsign</td>
|
||||||
|
<td>Edited QSOs not uploaded</td>
|
||||||
|
<td>Total QSOs not uploaded</td>
|
||||||
|
<td>Total QSOs uploaded</td>
|
||||||
|
<td></td>
|
||||||
|
</thead>
|
||||||
|
<tbody>';
|
||||||
|
foreach ($station_profile->result() as $station) { // Fills the table with the data
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<td>' . $station->station_profile_name . '</td>';
|
||||||
|
echo '<td>' . $station->station_callsign . '</td>';
|
||||||
|
echo '<td id ="modcount'.$station->station_id.'">' . $station->modcount . '</td>';
|
||||||
|
echo '<td id ="notcount'.$station->station_id.'">' . $station->notcount . '</td>';
|
||||||
|
echo '<td id ="totcount'.$station->station_id.'">' . $station->totcount . '</td>';
|
||||||
|
echo '<td><button id="qrzUpload" type="button" name="qrzUpload" class="btn btn-primary btn-sm ld-ext-right" onclick="ExportQrz('. $station->station_id .')">Export<div class="ld ld-ring ld-spin"></div></button></td>';
|
||||||
|
echo '</tr>';
|
||||||
|
}
|
||||||
|
echo '</tfoot></table></div>';
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
echo '<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>Nothing found!</div>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
@ -332,12 +332,18 @@
|
||||||
<div class="tab-pane fade" id="satellite" role="tabpanel" aria-labelledby="satellite-tab">
|
<div class="tab-pane fade" id="satellite" role="tabpanel" aria-labelledby="satellite-tab">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="inputSatName">Satellite Name</label>
|
<label for="inputSatName">Satellite Name</label>
|
||||||
<input id="sat_name" type="text" name="sat_name" class="form-control" value="<?php echo $this->session->userdata('sat_name'); ?>" />
|
|
||||||
|
<input list="satellite_names" id="sat_name" type="text" name="sat_name" class="form-control" value="<?php echo $this->session->userdata('sat_name'); ?>">
|
||||||
|
|
||||||
|
<datalist id="satellite_names" class="satellite_names_list"></datalist>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="inputSatMode">Satellite Mode</label>
|
<label for="inputSatMode">Satellite Mode</label>
|
||||||
<input id="sat_mode" type="text" name="sat_mode" class="form-control" value="<?php echo $this->session->userdata('sat_mode'); ?>" />
|
|
||||||
|
<input list="satellite_modes" id="sat_mode" type="text" name="sat_mode" class="form-control" value="<?php echo $this->session->userdata('sat_mode'); ?>">
|
||||||
|
|
||||||
|
<datalist id="satellite_modes" class="satellite_modes_list"></datalist>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -441,7 +447,7 @@
|
||||||
<?php echo '<tr class="tr'.($i & 1).'">'; ?>
|
<?php echo '<tr class="tr'.($i & 1).'">'; ?>
|
||||||
<td><?php echo date($this->config->item('qso_date_format').' H:i',strtotime($row->COL_TIME_ON)); ?></td>
|
<td><?php echo date($this->config->item('qso_date_format').' H:i',strtotime($row->COL_TIME_ON)); ?></td>
|
||||||
<td><a class="qsobox" data-fancybox data-type="iframe" data-width="750" data-height="520" data-src="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>" href="javascript:;"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
<td><a class="qsobox" data-fancybox data-type="iframe" data-width="750" data-height="520" data-src="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>" href="javascript:;"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
||||||
<td><?php echo $row->COL_MODE; ?></td>
|
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
|
||||||
<td><?php echo $row->COL_RST_SENT; ?></td>
|
<td><?php echo $row->COL_RST_SENT; ?></td>
|
||||||
<td><?php echo $row->COL_RST_RCVD; ?></td>
|
<td><?php echo $row->COL_RST_RCVD; ?></td>
|
||||||
<?php if($row->COL_SAT_NAME != null) { ?>
|
<?php if($row->COL_SAT_NAME != null) { ?>
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); ?></td>
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); ?></td>
|
||||||
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
|
||||||
<td><a class="fancybox" href="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
<td><a class="fancybox" href="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
||||||
<td><?php echo $row->COL_MODE; ?></td>
|
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
|
||||||
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?><span class="label"><?php echo $row->COL_STX_STRING;?></span><?php } ?></td>
|
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?><span class="label"><?php echo $row->COL_STX_STRING;?></span><?php } ?></td>
|
||||||
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?><span class="label"><?php echo $row->COL_SRX_STRING;?></span><?php } ?></td>
|
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?><span class="label"><?php echo $row->COL_SRX_STRING;?></span><?php } ?></td>
|
||||||
<?php if($row->COL_SAT_NAME != null) { ?>
|
<?php if($row->COL_SAT_NAME != null) { ?>
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>Mode:</td>
|
<td>Mode:</td>
|
||||||
<td><?php echo $row->COL_MODE; ?></td>
|
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -67,6 +67,34 @@
|
||||||
</tr>
|
</tr>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
<?php if($row->COL_GRIDSQUARE != null) { ?>
|
||||||
|
<!-- Total Distance Between the Station Profile Gridsquare and Logged Square -->
|
||||||
|
<tr>
|
||||||
|
<td>Total Distance</td>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
// Load the QRA Library
|
||||||
|
$CI =& get_instance();
|
||||||
|
$CI->load->library('qra');
|
||||||
|
|
||||||
|
// Cacluate Distance
|
||||||
|
echo $CI->qra->distance($row->station_gridsquare, $row->COL_GRIDSQUARE, 'M');
|
||||||
|
switch ($this->config->item('measurement_base')) {
|
||||||
|
case 'M':
|
||||||
|
echo "mi";
|
||||||
|
break;
|
||||||
|
case 'K':
|
||||||
|
echo "km";
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
echo "nmi";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
<?php if($row->COL_VUCC_GRIDS != null) { ?>
|
<?php if($row->COL_VUCC_GRIDS != null) { ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Gridsquare (Multi):</td>
|
<td>Gridsquare (Multi):</td>
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); ?></td>
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('d/m/y', $timestamp); ?></td>
|
||||||
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
|
<td><?php $timestamp = strtotime($row->COL_TIME_ON); echo date('H:i', $timestamp); ?></td>
|
||||||
<td><a class="qsobox" href="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
<td><a class="qsobox" href="<?php echo site_url('logbook/view')."/".$row->COL_PRIMARY_KEY; ?>"><?php echo str_replace("0","Ø",strtoupper($row->COL_CALL)); ?></a></td>
|
||||||
<td><?php echo $row->COL_MODE; ?></td>
|
<td><?php echo $row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE; ?></td>
|
||||||
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?>(<?php echo $row->COL_STX_STRING;?>)<?php } ?></td>
|
<td><?php echo $row->COL_RST_SENT; ?> <?php if ($row->COL_STX_STRING) { ?>(<?php echo $row->COL_STX_STRING;?>)<?php } ?></td>
|
||||||
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?>(<?php echo $row->COL_SRX_STRING;?>)<?php } ?></td>
|
<td><?php echo $row->COL_RST_RCVD; ?> <?php if ($row->COL_SRX_STRING) { ?>(<?php echo $row->COL_SRX_STRING;?>)<?php } ?></td>
|
||||||
<?php if($row->COL_SAT_NAME != null) { ?>
|
<?php if($row->COL_SAT_NAME != null) { ?>
|
||||||
|
|
|
||||||
1
assets/css/ldbtn.min.css
vendored
普通文件
1
assets/css/ldbtn.min.css
vendored
普通文件
|
|
@ -0,0 +1 @@
|
||||||
|
.ld-ext-right,.ld-ext-left,.ld-ext-bottom,.ld-ext-top,.ld-over,.ld-over-inverse,.ld-over-full,.ld-over-full-inverse{position:relative;transition:all .3s;transition-timing-function:ease-in}.ld-ext-right>.ld,.ld-ext-left>.ld,.ld-ext-bottom>.ld,.ld-ext-top>.ld,.ld-over>.ld,.ld-over-inverse>.ld,.ld-over-full>.ld,.ld-over-full-inverse>.ld{position:absolute;top:50%;left:50%;width:1em;height:1em;margin:-0.5em;opacity:0;z-index:-1;transition:all .3s;transition-timing-function:ease-in}.ld-ext-right>.ld>*,.ld-ext-left>.ld>*,.ld-ext-bottom>.ld>*,.ld-ext-top>.ld>*,.ld-over>.ld>*,.ld-over-inverse>.ld>*,.ld-over-full>.ld>*,.ld-over-full-inverse>.ld>*{width:1em;height:1em;position:absolute;top:50%;left:50%;transform:translate(-0.5em,-0.5em)}.ld-ext-right.running>.ld,.ld-ext-left.running>.ld,.ld-ext-bottom.running>.ld,.ld-ext-top.running>.ld,.ld-over.running>.ld,.ld-over-inverse.running>.ld,.ld-over-full.running>.ld,.ld-over-full-inverse.running>.ld{opacity:1;z-index:auto;visibility:visible}.ld-ext-right.running{padding-right:2.5em !important}.ld-ext-right>.ld{top:50%;left:auto;right:1.25em}.ld-ext-left.running{padding-left:2.5em !important}.ld-ext-left>.ld{top:50%;right:auto;left:1.25em}.ld-ext-bottom.running{padding-bottom:2.5em !important}.ld-ext-bottom>.ld{top:auto;left:50%;bottom:1.25em}.ld-ext-top.running{padding-top:2.5em !important}.ld-ext-top>.ld{bottom:auto;left:50%;top:1.25em}.ld-over:before,.ld-over-inverse:before,.ld-over-full:before,.ld-over-full-inverse:before{content:" ";display:block;opacity:0;position:absolute;z-index:-1;top:0;left:0;width:100%;height:100%;transition:all .3s;transition-timing-function:ease-in;background:rgba(240,240,240,0.8)}.ld-over.running>.ld,.ld-over-inverse.running>.ld,.ld-over-full.running>.ld,.ld-over-full-inverse.running>.ld{z-index:4001}.ld-over.running:before,.ld-over-inverse.running:before,.ld-over-full.running:before,.ld-over-full-inverse.running:before{opacity:1;z-index:4000;display:block}.ld-over-full.running>.ld,.ld-over-full-inverse.running>.ld,.ld-over-full.running:before,.ld-over-full-inverse.running:before{position:fixed}.ld-over-full>.ld{color:rgba(0,0,0,0.8)}.ld-over-full:before,.ld-over-full-inverse:before{background:rgba(255,255,255,0.8)}.ld-over-inverse>.ld{color:rgba(255,255,255,0.8)}.ld-over-inverse:before{background:rgba(0,0,0,0.6)}.ld-over-full-inverse>.ld{color:rgba(255,255,255,0.8)}.ld-over-full-inverse:before{background:rgba(0,0,0,0.6)}
|
||||||
1
assets/css/loading.min.css
vendored
普通文件
1
assets/css/loading.min.css
vendored
普通文件
文件差异因一行或多行过长而隐藏
|
|
@ -1,68 +1,358 @@
|
||||||
{
|
{
|
||||||
"QO-100": {
|
"AISAT-1":{
|
||||||
"Modes": ["S/X"]
|
"Modes":{
|
||||||
},
|
"V":[
|
||||||
"AO-7": {
|
{
|
||||||
"Modes": ["U/V", "V/A"]
|
"Uplink_Mode":"PKT",
|
||||||
},
|
"Uplink_Freq":"145825000",
|
||||||
"AO-73": {
|
"Downlink_Mode":"PKT",
|
||||||
"Modes": ["U/V"]
|
"Downlink_Freq":"145825000"
|
||||||
},
|
}
|
||||||
"FO-29": {
|
]
|
||||||
"Modes": ["V/U"]
|
}
|
||||||
},
|
},
|
||||||
"XW-2A": {
|
"ARISS":{
|
||||||
"Modes": ["U/V"]
|
"Modes":{
|
||||||
},
|
"V":[
|
||||||
"XW-2B": {
|
{
|
||||||
"Modes": ["U/V"]
|
"Uplink_Mode":"PKT",
|
||||||
},
|
"Uplink_Freq":"145825000",
|
||||||
"XW-2C": {
|
"Downlink_Mode":"PKT",
|
||||||
"Modes": ["U/V"]
|
"Downlink_Freq":"145825000"
|
||||||
},
|
}
|
||||||
"XW-2D": {
|
]
|
||||||
"Modes": ["U/V"]
|
}
|
||||||
},
|
},
|
||||||
"XW-2E": {
|
"AO-7":{
|
||||||
"Modes": ["U/V"]
|
"Modes":{
|
||||||
},
|
"U/V":[
|
||||||
"CAS-4A": {
|
{
|
||||||
"Modes": ["U/V"]
|
"Uplink_Mode":"LSB",
|
||||||
},
|
"Uplink_Freq":"432150000",
|
||||||
"CAS-4B": {
|
"Downlink_Mode":"USB",
|
||||||
"Modes": ["U/V"]
|
"Downlink_Freq":"145950000"
|
||||||
},
|
}
|
||||||
"EO-88": {
|
],
|
||||||
"Modes": ["U/V"]
|
"V/A":[
|
||||||
},
|
{
|
||||||
"FO-99": {
|
"Uplink_Mode":"USB",
|
||||||
"Modes": ["V/U"]
|
"Uplink_Freq":"145900000",
|
||||||
},
|
"Downlink_Mode":"USB",
|
||||||
"AO-91": {
|
"Downlink_Freq":"29450000"
|
||||||
"Modes": ["U/V"]
|
}
|
||||||
},
|
]
|
||||||
"AO-92": {
|
}
|
||||||
"Modes": ["U/V", "L/V"]
|
},
|
||||||
},
|
"AO-27":{
|
||||||
"SO-50": {
|
"Modes":{
|
||||||
"Modes": ["V/U"]
|
"V/U":[
|
||||||
},
|
{
|
||||||
"Lilacsat-1": {
|
"Uplink_Mode":"FM",
|
||||||
"Modes": ["V/U"]
|
"Uplink_Freq":"145850000",
|
||||||
},
|
"Downlink_Mode":"FM",
|
||||||
"PO-101": {
|
"Downlink_Freq":"436795000"
|
||||||
"Modes": ["U/v"]
|
}
|
||||||
},
|
]
|
||||||
"AISAT-1": {
|
}
|
||||||
"Modes": ["V"]
|
},
|
||||||
},
|
"AO-73":{
|
||||||
"NO-84": {
|
"Modes":{
|
||||||
"Modes": ["A/U", "V"]
|
"U/V":[
|
||||||
},
|
{
|
||||||
"NO-104": {
|
"Uplink_Mode":"LSB",
|
||||||
"Modes": ["A/U", "V"]
|
"Uplink_Freq":"435140000",
|
||||||
},
|
"Downlink_Mode":"USB",
|
||||||
"ARISS": {
|
"Downlink_Freq":"145960000"
|
||||||
"Modes": ["V"]
|
}
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"AO-91":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"435250000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"145960000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AO-92":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"435350000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"145880000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"L/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"1267350000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"145880000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"CAS-4A":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435220000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145870000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"CAS-4B":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435280000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145925000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EO-88":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435030000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145975000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FO-29":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"145950000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"435850000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FO-99":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"145915000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"435895000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FS-3":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"PKT",
|
||||||
|
"Uplink_Freq":"145840000",
|
||||||
|
"Downlink_Mode":"PKT",
|
||||||
|
"Downlink_Freq":"435103000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"HO-107":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435925000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145925000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"IO-86":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"145880000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"435880000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Lilacsat-1":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"144350000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"437200000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NO-84":{
|
||||||
|
"Modes":{
|
||||||
|
"A/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"28120000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"435350000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"PKT",
|
||||||
|
"Uplink_Freq":"145825000",
|
||||||
|
"Downlink_Mode":"PKT",
|
||||||
|
"Downlink_Freq":"145825000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NO-104":{
|
||||||
|
"Modes":{
|
||||||
|
"A/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"29481500",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"435350000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"PKT",
|
||||||
|
"Uplink_Freq":"145825000",
|
||||||
|
"Downlink_Mode":"PKT",
|
||||||
|
"Downlink_Freq":"145825000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"PO-101":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"437500000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"145900000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"QO-100":{
|
||||||
|
"Modes":{
|
||||||
|
"S/X":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"2400175000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"110489675000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"RS-44":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"145965000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"435640000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SO-50":{
|
||||||
|
"Modes":{
|
||||||
|
"V/U":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"FM",
|
||||||
|
"Uplink_Freq":"145850000",
|
||||||
|
"Downlink_Mode":"FM",
|
||||||
|
"Downlink_Freq":"436795000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"XW-2A":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435040000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145675000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"XW-2B":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435100000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145675000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"XW-2C":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435160000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145805000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"XW-2D":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435220000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145870000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"XW-2F":{
|
||||||
|
"Modes":{
|
||||||
|
"U/V":[
|
||||||
|
{
|
||||||
|
"Uplink_Mode":"LSB",
|
||||||
|
"Uplink_Freq":"435340000",
|
||||||
|
"Downlink_Mode":"USB",
|
||||||
|
"Downlink_Freq":"145990000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
正在加载…
在新工单中引用