From 809e95e1395b687f20526df7794920a70e24dd57 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 12:06:30 +0100 Subject: [PATCH 01/19] Added reference to forum.cloudlog.co.uk --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8c53eeb..da87dd94 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Cloudlog now has a [Change Log](https://github.com/magicbug/Cloudlog/wiki/Change ## 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 genereal discussion forum [https://forum.cloudlog.co.uk](https://forum.cloudlog.co.uk). ## CAT Control From de489739888d077805a6c69f85dcbcc432f9ca58 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 12:35:10 +0100 Subject: [PATCH 02/19] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 9 +++++++-- .github/ISSUE_TEMPLATE/feature_request.md | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b7353733..79b0646e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,20 +1,25 @@ --- name: Bug report 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** A clear and concise description of what the bug is. **To Reproduce** -Steps to reproduce the behavior: +Steps to reproduce the behaviour: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error -**Expected behavior** +**Expected behaviour** A clear and concise description of what you expected to happen. **Screenshots** diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 066b2d92..ff87b84d 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,9 +1,14 @@ --- name: Feature request 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.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] From dbb722cd5d824512fdf9b683254a3ace511c5e99 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 12:43:30 +0100 Subject: [PATCH 03/19] Added Forum to the menu under profile along with help --- application/views/interface_assets/header.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 5652842e..6a46275d 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -159,6 +159,10 @@ Help + + + Forum + Logout From 3ea94a8c9b4871fec4a648921324b110961e6ab6 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 17:52:23 +0100 Subject: [PATCH 04/19] Populated some of the satellite fields in the json file --- assets/json/satellite_data.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index de0ec5cd..9ad9c4de 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -3,10 +3,26 @@ "Modes": ["S/X"] }, "AO-7": { - "Modes": ["U/V", "V/A"] + "Modes": + { + "U/V": + [ + { "Uplink_Mode": "LSB", "Uplink_Freq": "432151000", "Downlink_Mode": "USB", "Downlink_Freq": "145950000" } + ], + "V/A": + [ + { "Uplink_Mode": "USB", "Uplink_Freq": "145900000", "Downlink_Mode": "USB", "Downlink_Freq": "29450000" } + ] + } }, "AO-73": { - "Modes": ["U/V"] + "Modes": + { + "U/V": + [ + { "Uplink_Mode": "LSB", "Uplink_Freq": "435150000", "Downlink_Mode": "USB", "Downlink_Freq": "145960000" } + ] + } }, "FO-29": { "Modes": ["V/U"] @@ -39,7 +55,13 @@ "Modes": ["V/U"] }, "AO-91": { - "Modes": ["U/V"] + "Modes": + { + "U/V": + [ + { "Uplink_Mode": "FM", "Uplink_Freq": "435250000", "Downlink_Mode": "FM", "Downlink_Freq": "145960000" } + ] + } }, "AO-92": { "Modes": ["U/V", "L/V"] From 5f17d8e49eee4d304d8a0bb4dad47919b117580d Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 19:13:19 +0100 Subject: [PATCH 05/19] Cleaned up readme with large amounts moved to the wiki --- README.md | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index da87dd94..03a62115 100644 --- a/README.md +++ b/README.md @@ -9,20 +9,14 @@ Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk) * Apache (Nignx should work) * PHP (Version 7 or higher) & MySQL -You will also needthe following PHP modules installed - -php-curl, php-mbstrings, php-xml - ## Versions -* Master - Current working copy (Commit wise frozen till v2 is ready for release, unless bug fixes needed) -* 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. +* **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. ## 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. - -More information can be found in the [wiki](https://github.com/magicbug/Cloudlog/wiki). +Installation information can be found on 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. @@ -30,19 +24,6 @@ Cloudlog now has a [Change Log](https://github.com/magicbug/Cloudlog/wiki/Change 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 genereal 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? @@ -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: -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) From 5548958c7124d1cd088c8eef3a25f1e90a04477f Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Sun, 17 May 2020 19:14:36 +0100 Subject: [PATCH 06/19] More Readme updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 03a62115..cafe61c9 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ If you would prefer not to setup Cloudlog yourself [magicbug](https://magicbug.c 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. -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 From 1c387a1d340121a0f51d4ed8afa9afc74bf23bb0 Mon Sep 17 00:00:00 2001 From: Ciemon Date: Sun, 17 May 2020 21:41:15 +0100 Subject: [PATCH 07/19] Update satellite_data.json Added data for all listed satellites --- assets/json/satellite_data.json | 386 ++++++++++++++++++++++++-------- 1 file changed, 297 insertions(+), 89 deletions(-) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index 9ad9c4de..f1ff140e 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -1,90 +1,298 @@ { - "QO-100": { - "Modes": ["S/X"] - }, - "AO-7": { - "Modes": - { - "U/V": - [ - { "Uplink_Mode": "LSB", "Uplink_Freq": "432151000", "Downlink_Mode": "USB", "Downlink_Freq": "145950000" } - ], - "V/A": - [ - { "Uplink_Mode": "USB", "Uplink_Freq": "145900000", "Downlink_Mode": "USB", "Downlink_Freq": "29450000" } - ] - } - }, - "AO-73": { - "Modes": - { - "U/V": - [ - { "Uplink_Mode": "LSB", "Uplink_Freq": "435150000", "Downlink_Mode": "USB", "Downlink_Freq": "145960000" } - ] - } - }, - "FO-29": { - "Modes": ["V/U"] - }, - "XW-2A": { - "Modes": ["U/V"] - }, - "XW-2B": { - "Modes": ["U/V"] - }, - "XW-2C": { - "Modes": ["U/V"] - }, - "XW-2D": { - "Modes": ["U/V"] - }, - "XW-2E": { - "Modes": ["U/V"] - }, - "CAS-4A": { - "Modes": ["U/V"] - }, - "CAS-4B": { - "Modes": ["U/V"] - }, - "EO-88": { - "Modes": ["U/V"] - }, - "FO-99": { - "Modes": ["V/U"] - }, - "AO-91": { - "Modes": - { - "U/V": - [ - { "Uplink_Mode": "FM", "Uplink_Freq": "435250000", "Downlink_Mode": "FM", "Downlink_Freq": "145960000" } - ] - } - }, - "AO-92": { - "Modes": ["U/V", "L/V"] - }, - "SO-50": { - "Modes": ["V/U"] - }, - "Lilacsat-1": { - "Modes": ["V/U"] - }, - "PO-101": { - "Modes": ["U/v"] - }, - "AISAT-1": { - "Modes": ["V"] - }, - "NO-84": { - "Modes": ["A/U", "V"] - }, - "NO-104": { - "Modes": ["A/U", "V"] - }, - "ARISS": { - "Modes": ["V"] - } -} \ No newline at end of file + "QO-100":{ + "Modes":{ + "S/X":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"2400175000", + "Downlink_Mode":"USB", + "Downlink_Freq":"110489675000" + } + ] + } + }, + "AO-7":{ + "Modes":{ + "U/V":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"432150000", + "Downlink_Mode":"USB", + "Downlink_Freq":"145950000" + } + ], + "V/A":[ + { + "Uplink_Mode":"USB", + "Uplink_Freq":"145900000", + "Downlink_Mode":"USB", + "Downlink_Freq":"29450000" + } + ] + } + }, + "AO-73":{ + "Modes":{ + "U/V":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"435140000", + "Downlink_Mode":"USB", + "Downlink_Freq":"145960000" + } + ] + } + }, + "FO-29":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"145950000", + "Downlink_Mode":"USB", + "Downlink_Freq":"435.850000" + } + ] + } + }, + "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" + } + ] + } + }, + "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-99":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"145915000", + "Downlink_Mode":"USB", + "Downlink_Freq":"435895000" + } + ] + } + }, + "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" + } + ] + } + }, + "SO-50":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145850000", + "Downlink_Mode":"FM", + "Downlink_Freq":"436795000" + } + ] + } + }, + "Lilacsat-1":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"144350000", + "Downlink_Mode":"FM", + "Downlink_Freq":"437200000" + } + ] + } + }, + "PO-101":{ + "Modes":{ + "U/V":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"437500000", + "Downlink_Mode":"FM", + "Downlink_Freq":"145900000" + } + ] + } + }, + "AISAT-1":{ + "Modes":{ + "V":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145825000", + "Downlink_Mode":"FM", + "Downlink_Freq":"145825000" + } + ] + } + }, + "NO-84":{ + "Modes":{ + "A/U":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"28120000", + "Downlink_Mode":"FM", + "Downlink_Freq":"435350000" + } + ], + "V":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145825000", + "Downlink_Mode":"FM", + "Downlink_Freq":"145825000" + } + ] + } + }, + "NO-104":{ + "Modes":{ + "A/U":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"29481500", + "Downlink_Mode":"FM", + "Downlink_Freq":"435350000" + } + ], + "V":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145825000", + "Downlink_Mode":"FM", + "Downlink_Freq":"145825000" + } + ] + } + }, + "ARISS":{ + "Modes":{ + "V":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145825000", + "Downlink_Mode":"FM", + "Downlink_Freq":"145825000" + } + ] + } + } +} From 03d0aa43aff612e0cadfd61206594f7f63944231 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Mon, 18 May 2020 21:25:33 +0100 Subject: [PATCH 08/19] Removed a decimal, changed APRS sats modes to PKT --- assets/json/satellite_data.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index f1ff140e..0ca30423 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -50,7 +50,7 @@ "Uplink_Mode":"LSB", "Uplink_Freq":"145950000", "Downlink_Mode":"USB", - "Downlink_Freq":"435.850000" + "Downlink_Freq":"435850000" } ] } @@ -235,9 +235,9 @@ "Modes":{ "V":[ { - "Uplink_Mode":"FM", + "Uplink_Mode":"PKT", "Uplink_Freq":"145825000", - "Downlink_Mode":"FM", + "Downlink_Mode":"PKT", "Downlink_Freq":"145825000" } ] @@ -255,9 +255,9 @@ ], "V":[ { - "Uplink_Mode":"FM", + "Uplink_Mode":"PKT", "Uplink_Freq":"145825000", - "Downlink_Mode":"FM", + "Downlink_Mode":"PKT", "Downlink_Freq":"145825000" } ] @@ -275,9 +275,9 @@ ], "V":[ { - "Uplink_Mode":"FM", + "Uplink_Mode":"PKT", "Uplink_Freq":"145825000", - "Downlink_Mode":"FM", + "Downlink_Mode":"PKT", "Downlink_Freq":"145825000" } ] @@ -287,9 +287,9 @@ "Modes":{ "V":[ { - "Uplink_Mode":"FM", + "Uplink_Mode":"PKT", "Uplink_Freq":"145825000", - "Downlink_Mode":"FM", + "Downlink_Mode":"PKT", "Downlink_Freq":"145825000" } ] From 97440b21618660c1109b4dc7eed05002dfb2cd23 Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Wed, 20 May 2020 19:43:13 +0200 Subject: [PATCH 09/19] UI for uploading QSOs to QRZ.com Added 2 css files for dynamic loading button. https://github.com/loadingio/ldButton/tree/master/dist and https://github.com/loadingio/loading.css/tree/master/dist --- application/controllers/Qrz.php | 94 ++++++++++++++++--- application/models/Logbook_model.php | 2 +- application/models/Stations.php | 28 ++++++ application/views/interface_assets/footer.php | 30 ++++++ application/views/interface_assets/header.php | 11 ++- application/views/qrz/export.php | 51 ++++++++++ assets/css/ldbtn.min.css | 1 + assets/css/loading.min.css | 1 + 8 files changed, 203 insertions(+), 15 deletions(-) create mode 100644 application/views/qrz/export.php create mode 100644 assets/css/ldbtn.min.css create mode 100644 assets/css/loading.min.css diff --git a/application/controllers/Qrz.php b/application/controllers/Qrz.php index dd2b190d..52c2b9ad 100644 --- a/application/controllers/Qrz.php +++ b/application/controllers/Qrz.php @@ -11,14 +11,13 @@ class Qrz extends CI_Controller { $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() { - - $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->setOptions(); $this->load->model('logbook_model'); @@ -27,7 +26,13 @@ class Qrz extends CI_Controller { if ($station_ids) { foreach ($station_ids as $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 { 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) { + + $i = 0; $data['qsos'] = $this->logbook_model->get_qrz_qsos($station_id); if ($data['qsos']) { @@ -45,17 +64,66 @@ class Qrz extends CI_Controller { $result = $this->logbook_model->push_qso_to_qrz($qrz_api_key, $adif); if ($result) { $this->markqso($qso['COL_PRIMARY_KEY']); + $i++; } } - echo "QSOs has been uploaded to QRZ.com."; - log_message('info', 'QSOs has been uploaded to QRZ.com.'); + return $i; } else { - echo "No QSOs found for upload."; - log_message('info', 'No QSOs found for upload.'); + return $i; } } + /* + * Function marks QSO with given primarykey as uploaded to qrz + */ function markqso($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); + } + } +} \ No newline at end of file diff --git a/application/models/Logbook_model.php b/application/models/Logbook_model.php index 23431d91..438dffae 100755 --- a/application/models/Logbook_model.php +++ b/application/models/Logbook_model.php @@ -829,7 +829,7 @@ class Logbook_model extends CI_Model { function get_qrz_qsos($station_id){ $sql = 'select * from ' . $this->config->item('table_name') . ' 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 = "M" or COL_QRZCOM_QSO_UPLOAD_STATUS = "N")'; diff --git a/application/models/Stations.php b/application/models/Stations.php index b13d1472..e5110a8e 100644 --- a/application/models/Stations.php +++ b/application/models/Stations.php @@ -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; + } + } ?> \ No newline at end of file diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 692c5146..e786939c 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -1243,5 +1243,35 @@ $(document).ready(function(){ + uri->segment(1) == "qrz") { ?> + + diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 5652842e..01c27a6d 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -24,7 +24,12 @@ -uri->segment(1) == "qso") { ?> +uri->segment(1) == "qrz") { ?> + + + + + uri->segment(1) == "qso") { ?> uri->segment(1) == "adif") { ?> @@ -111,6 +116,10 @@ eQSL Import/Export + + QRZ.com export + + Print Requested QSLs diff --git a/application/views/qrz/export.php b/application/views/qrz/export.php new file mode 100644 index 00000000..82068212 --- /dev/null +++ b/application/views/qrz/export.php @@ -0,0 +1,51 @@ + +
+ +

QRZ.com functions

+ +
+
+
+
+ +
+ +

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. + 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.

+ +result()) { + echo ' + + + + + + + + + + + + '; + foreach ($station_profile->result() as $station) { // Fills the table with the data + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
Profile nameStation callsignEdited QSOs not uploadedTotal QSOs not uploadedTotal QSOs uploaded
' . $station->station_profile_name . '' . $station->station_callsign . '' . $station->modcount . '' . $station->notcount . '' . $station->totcount . '
'; + + } + else { + echo ''; + } + ?> + +
+
+ diff --git a/assets/css/ldbtn.min.css b/assets/css/ldbtn.min.css new file mode 100644 index 00000000..28ae81f7 --- /dev/null +++ b/assets/css/ldbtn.min.css @@ -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)} diff --git a/assets/css/loading.min.css b/assets/css/loading.min.css new file mode 100644 index 00000000..5db3d68a --- /dev/null +++ b/assets/css/loading.min.css @@ -0,0 +1 @@ +.ld-ball,.ld-ring,.ld-hourglass,.ld-loader,.ld-cross,.ld-square,.ld-pie,.ld-spinner{width:1em;height:1em;position:relative;color:inherit;display:inline-block;box-sizing:content-box}.ld-ball:after,.ld-ring:after,.ld-hourglass:after,.ld-loader:after,.ld-cross:after,.ld-square:after,.ld-pie:after,.ld-spinner:after{content:" ";display:block;width:2em;height:2em;box-sizing:border-box;transform-origin:0 0;transform:translateZ(0) scale(0.5);backface-visibility:hidden}.ld-ring:after{border-radius:50%;border:.3em solid currentColor;border-left-color:transparent}.ld-ball:after{border-radius:50%;background:currentColor}.ld-hourglass:after{border-radius:50%;border:1em solid currentColor;border-left-color:transparent;border-right-color:transparent}.ld-cross:after{position:absolute;height:.5em;transform:translateZ(0) scale(0.5) translate(0,0.75em);background:currentColor}.ld-cross:before{content:" ";display:block;width:.5em;height:2em;box-sizing:border-box;transform-origin:0 0;backface-visibility:hidden;position:absolute;width:.5em;transform:translateZ(0) scale(0.5) translate(0.75em,0);background:currentColor}.ld-square:after{background:currentColor}.ld-pie:after{border-radius:50%;border:1em solid currentColor;border-left-color:transparent}.ld-spinner:after{position:absolute;width:.4em;height:.4em;transform:translateZ(0) scale(0.5) translate(0.8em,0.8em);border-radius:50%;background:0;box-shadow:0 1em 0 currentColor,0 -1em 0 currentColor,1em 0 0 currentColor,-1em 0 0 currentColor,.70710678em .70710678em 0 currentColor,-.70710678em .70710678em 0 currentColor,.70710678em -.70710678em 0 currentColor,-.70710678em -.70710678em 0 currentColor}.ld-loader{background-size:cover}.ld{transform-origin:50% 50%;transform-box:fill-box}@keyframes ld-blink{0%{opacity:1}49.75%{opacity:1}50.25%{opacity:0}99.5%{opacity:0}100%{opacity:1}}.ld.ld-blink{animation:ld-blink 1s infinite linear}@keyframes ld-blur{0%{filter:blur(0)}50%{filter:blur(10%)}100%{filter:blur(0)}}.ld.ld-blur{animation:ld-blur 1s infinite linear}@keyframes ld-beat{0%{animation-timing-function:cubic-bezier(0.1028,0.2484,0.1372,0.849);transform:scale(1)}34%{animation-timing-function:cubic-bezier(0.7116,0.2095,0.8159,0.6876);transform:scale(1.2)}68%{animation-timing-function:cubic-bezier(0.1475,0.2888,0.294,0.883);transform:scale(1.0268)}84%{animation-timing-function:cubic-bezier(0.8176,0.2193,0.867,0.6889);transform:scale(1.0932)}100%{transform:scale(1)}}.ld.ld-beat{animation:ld-beat 1s infinite linear}@keyframes ld-bounceAlt{0%{animation-timing-function:cubic-bezier(0.1348,0.3256,0.2495,0.8687);transform:translate(0,0)}51%{animation-timing-function:cubic-bezier(0.7426,0.1782,0.8523,0.6514);transform:translate(0,-14%)}100%{transform:translate(0,0)}}.ld.ld-bounceAlt{animation:ld-bounceAlt 1s infinite linear}@keyframes ld-tick-alt{0%{animation-timing-function:cubic-bezier(0.0637,0.1569,-0.0154,0.8727);transform:rotate(0)}22%{animation-timing-function:cubic-bezier(0.7634,0.2713,0.7818,0.6832);transform:rotate(-44.865deg)}43%{animation-timing-function:cubic-bezier(0.0599,0.1266,0.2372,1.029);transform:rotate(-7.515000000000001deg)}56%{animation-timing-function:cubic-bezier(0.6353,0.3049,0.6792,0.6671);transform:rotate(-25.290000000000003deg)}68%{animation-timing-function:cubic-bezier(0.0513,0.1148,0.3085,1.1548);transform:rotate(-5.13deg)}76%{animation-timing-function:cubic-bezier(0.467,0.2881,0.3593,0.7819);transform:rotate(-14.175deg)}83%{animation-timing-function:cubic-bezier(0.0632,0.1615,0.3539,1.4565);transform:rotate(-3.6deg)}88%{animation-timing-function:cubic-bezier(0.3563,0.3125,0.5387,1.6475);transform:rotate(-7.74deg)}92%{animation-timing-function:cubic-bezier(0.1265,0.4155,0.3821,1.8827);transform:rotate(-2.6100000000000003deg)}95%{animation-timing-function:cubic-bezier(0.5727,1.3521,0.0229,3.0356);transform:rotate(-4.185deg)}98%{animation-timing-function:cubic-bezier(0.4531,-1.3593,0.757,0.0281);transform:rotate(-2.565deg)}100%{transform:rotate(0)}}.ld.ld-tick-alt{animation:ld-tick-alt 1s infinite linear}@keyframes ld-jump{0%{animation-timing-function:cubic-bezier(0.0637,0.1569,-0.0154,0.8727);transform:translate(0,0)}22%{animation-timing-function:cubic-bezier(0.7634,0.2713,0.7818,0.6832);transform:translate(0,-13.958%)}43%{animation-timing-function:cubic-bezier(0.0599,0.1266,0.2372,1.029);transform:translate(0,-2.338%)}56%{animation-timing-function:cubic-bezier(0.6353,0.3049,0.6792,0.6671);transform:translate(0,-7.868%)}68%{animation-timing-function:cubic-bezier(0.0513,0.1148,0.3085,1.1548);transform:translate(0,-1.596%)}76%{animation-timing-function:cubic-bezier(0.467,0.2881,0.3593,0.7819);transform:translate(0,-4.41%)}83%{animation-timing-function:cubic-bezier(0.0632,0.1615,0.3539,1.4565);transform:translate(0,-1.12%)}88%{animation-timing-function:cubic-bezier(0.3563,0.3125,0.5387,1.6475);transform:translate(0,-2.4080000000000004%)}92%{animation-timing-function:cubic-bezier(0.1265,0.4155,0.3821,1.8827);transform:translate(0,-0.812%)}95%{animation-timing-function:cubic-bezier(0.5727,1.3521,0.0229,3.0356);transform:translate(0,-1.302%)}98%{animation-timing-function:cubic-bezier(0.4531,-1.3593,0.757,0.0281);transform:translate(0,-0.798%)}100%{transform:translate(0,0)}}.ld.ld-jump{animation:ld-jump 1s infinite linear}@keyframes ld-bounce{0%{animation-timing-function:cubic-bezier(0.138,0.2541,0.2177,0.8747);transform:translate(0,0) scaleY(1)}37%{animation-timing-function:cubic-bezier(0.7679,0.1817,0.8401,0.7167);transform:translate(0,-39.96%) scaleY(1)}72.2%{animation-timing-function:cubic-bezier(0.1045,0.2026,0.2224,0.9608);transform:translate(0,0) scaleY(1)}87.2%{animation-timing-function:cubic-bezier(0.7463,0.2314,0.8159,0.6941);transform:translate(0,19.85%) scaleY(0.603)}100%{transform:translate(0,0) scaleY(1)}}.ld.ld-bounce{animation:ld-bounce 1s infinite linear}@keyframes ld-clock{0%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(0)}8.33333%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(30deg)}16.66667%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(60deg)}25%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(90deg)}33.33333%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(120deg)}41.66667%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(150deg)}50%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(180deg)}58.33333%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(210deg)}66.66667%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(240deg)}75%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(270deg)}83.33333%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(300deg)}91.66667%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(330deg)}100%{animation-timing-function:cubic-bezier(0,0.7,0.30000000000000004,1);transform:rotate(360deg)}}.ld.ld-clock{animation:ld-clock 12s infinite linear}@keyframes ld-fade{0%{animation-timing-function:cubic-bezier(0.2057,0.573,0.3723,0.9184);opacity:1}100%{opacity:0}}.ld.ld-fade{animation:ld-fade 1s infinite linear}@keyframes ld-flip{0%,25%,50%,75%,100%{animation-timing-function:cubic-bezier(0,0.4,0.6,1)}0%{transform:scale(1,1)}25%{transform:scale(-1,1)}50%{transform:scale(-1,-1)}75%{transform:scale(1,-1)}100%{transform:scale(1,1)}}.ld.ld-flip{animation:ld-flip 1s infinite linear}@keyframes ld-float{0%{animation-timing-function:cubic-bezier(0,0.4,0.6,1);transform:translate(0,0) scale(0.7);box-shadow:0 0 0 rgba(0,0,0,.3)}50%{animation-timing-function:cubic-bezier(0.4,0,1,0.6);transform:translate(0,-15%) scale(1);box-shadow:0 23% 5% -15% rgba(0,0,0,.2)}100%{transform:translate(0,0) scale(0.7);box-shadow:0 0 0 rgba(0,0,0,.3)}}.ld.ld-float{animation:ld-float 1s infinite linear}@keyframes ld-heartbeat{0%{animation-timing-function:cubic-bezier(0.1678,0.6042,0.5465,3.0859);transform:scale(1.3)}30%{animation-timing-function:cubic-bezier(0.3206,0.3435,0.6825,0.6598);transform:scale(1.15)}31%{animation-timing-function:cubic-bezier(0.2811,0.5061,0.5347,0.909);transform:scale(1.1458)}100%{transform:scale(1)}}.ld.ld-heartbeat{animation:ld-heartbeat 1s infinite linear}@keyframes ld-hit{0%{animation-timing-function:cubic-bezier(0.5,0,1,0.5);transform:scale(0) translate(0,0) skewX(0);opacity:1}20%{transform:scale(1) translate(0,0) skewX(20deg)}50%{animation-timing-function:cubic-bezier(0.6,0,1,0.4);transform:scale(1) translate(0,0) skewX(20deg)}50%{opacity:1}100%{transform:scale(1) translate(0,200%) skewX(20deg);opacity:0}}.ld.ld-hit{animation:ld-hit 2s infinite linear}@keyframes ld-move-ltr{0%{transform:translate(0,0)}40%{transform:translate(80%,0)}49.99999%{transform:translate(99.99998%,0)}50%{transform:translate(-100%,0)}50.00001%{transform:translate(-99.99998%,0)}60%{transform:translate(-80%,0)}100%{transform:translate(0,0)}}.ld.ld-move-ltr{animation:ld-move-ltr 1s infinite linear}@keyframes ld-move-rtl{0%{transform:translate(0,0)}40%{transform:translate(-80%,0)}49.99999%{transform:translate(-99.99998%,0)}50%{transform:translate(100%,0)}50.00001%{transform:translate(99.99998%,0)}60%{transform:translate(80%,0)}100%{transform:translate(0,0)}}.ld.ld-move-rtl{animation:ld-move-rtl 1s infinite linear}@keyframes ld-move-ttb{0%{transform:translate(0,0)}40%{transform:translate(0,80%)}49.99999%{transform:translate(0,99.99998%)}50%{transform:translate(0,-100%)}50.00001%{transform:translate(0,-99.99998%)}60%{transform:translate(0,-80%)}100%{transform:translate(0,0)}}.ld.ld-move-ttb{animation:ld-move-ttb 1s infinite linear}@keyframes ld-move-btt{0%{transform:translate(0,0)}40%{transform:translate(0,-80%)}49.99999%{transform:translate(0,-99.99998%)}50%{transform:translate(0,100%)}50.00001%{transform:translate(0,99.99998%)}60%{transform:translate(0,80%)}100%{transform:translate(0,0)}}.ld.ld-move-btt{animation:ld-move-btt 1s infinite linear}@keyframes ld-move-fade-ltr{0%{transform:translate(0,0);opacity:1}40%{transform:translate(80%,0);opacity:1}49.99999%{transform:translate(99.99998%,0);opacity:0}50%{transform:translate(-100%,0);opacity:0}50.00001%{transform:translate(-99.99998%,0);opacity:0}60%{transform:translate(-80%,0);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-move-fade-ltr{animation:ld-move-fade-ltr 1s infinite linear}@keyframes ld-move-fade-rtl{0%{transform:translate(0,0);opacity:1}40%{transform:translate(-80%,0);opacity:1}49.99999%{transform:translate(-99.99998%,0);opacity:0}50%{transform:translate(100%,0);opacity:0}50.00001%{transform:translate(99.99998%,0);opacity:0}60%{transform:translate(80%,0);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-move-fade-rtl{animation:ld-move-fade-rtl 1s infinite linear}@keyframes ld-move-fade-ttb{0%{transform:translate(0,0);opacity:1}40%{transform:translate(0,80%);opacity:1}49.99999%{transform:translate(0,99.99998%);opacity:0}50%{transform:translate(0,-100%);opacity:0}50.00001%{transform:translate(0,-99.99998%);opacity:0}60%{transform:translate(0,-80%);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-move-fade-ttb{animation:ld-move-fade-ttb 1s infinite linear}@keyframes ld-move-fade-btt{0%{transform:translate(0,0);opacity:1}40%{transform:translate(0,-80%);opacity:1}49.99999%{transform:translate(0,-99.99998%);opacity:0}50%{transform:translate(0,100%);opacity:0}50.00001%{transform:translate(0,99.99998%);opacity:0}60%{transform:translate(0,80%);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-move-fade-btt{animation:ld-move-fade-btt 1s infinite linear}@keyframes ld-orbit{0%{animation-timing-function:linear;transform:translate(0,-60%) rotate(0)}8.33333%{animation-timing-function:linear;transform:translate(30%,-51.96152%) rotate(30deg)}16.66667%{animation-timing-function:linear;transform:translate(51.96152%,-30%) rotate(60deg)}25%{animation-timing-function:linear;transform:translate(60%,0) rotate(90deg)}33.33333%{animation-timing-function:linear;transform:translate(51.96152%,30%) rotate(120deg)}41.66667%{animation-timing-function:linear;transform:translate(30%,51.96152%) rotate(150deg)}50%{animation-timing-function:linear;transform:translate(0,60%) rotate(180deg)}58.33333%{animation-timing-function:linear;transform:translate(-30%,51.96152%) rotate(210deg)}66.66667%{animation-timing-function:linear;transform:translate(-51.96152%,30%) rotate(240deg)}75%{animation-timing-function:linear;transform:translate(-60%,0) rotate(270deg)}83.33333%{animation-timing-function:linear;transform:translate(-51.96152%,-30%) rotate(300deg)}91.66667%{animation-timing-function:linear;transform:translate(-30%,-51.96152%) rotate(330deg)}100%{animation-timing-function:linear;transform:translate(0,-60%) rotate(360deg)}}.ld.ld-orbit{animation:ld-orbit 1s infinite linear}@keyframes ld-breath{0%{animation-timing-function:cubic-bezier(0.9647,0.2413,-0.0705,0.7911);transform:scale(0.9099999999999999)}51%{animation-timing-function:cubic-bezier(0.9226,0.2631,-0.0308,0.7628);transform:scale(1.02994)}100%{transform:scale(0.9099999999999999)}}.ld.ld-breath{animation:ld-breath 1s infinite linear}@keyframes ld-dim{0%{animation-timing-function:cubic-bezier(0.9647,0.2413,-0.0705,0.7911);opacity:0}51%{animation-timing-function:cubic-bezier(0.9226,0.2631,-0.0308,0.7628);opacity:.9995}100%{opacity:0}}.ld.ld-dim{animation:ld-dim 1s infinite linear}@keyframes ld-metronome{0%{animation-timing-function:cubic-bezier(0.7806,0.0715,0.8998,0.731);transform:translate(-10%) rotate(-20deg)}17.5%{animation-timing-function:cubic-bezier(0.484,0.3308,0.6853,0.6667);transform:translate(-6.18%) rotate(-12.36deg)}27.6%{animation-timing-function:cubic-bezier(0.0676,0.1836,0.0518,0.9433);transform:translate(2.48%) rotate(4.96deg)}50.1%{animation-timing-function:cubic-bezier(0.7773,0.0708,0.9008,0.735);transform:translate(10%) rotate(20deg)}67.6%{animation-timing-function:cubic-bezier(0.4888,0.331,0.6153,0.6674);transform:translate(6.16%) rotate(12.32deg)}80%{animation-timing-function:cubic-bezier(0.0801,0.2206,0.1357,0.9363);transform:translate(-4.57%) rotate(-9.14deg)}100%{transform:translate(-10%) rotate(-20deg)}}.ld.ld-metronome{animation:ld-metronome 1s infinite linear}@keyframes ld-swing{0%{animation-timing-function:cubic-bezier(0.9647,0.2413,-0.0705,0.7911);transform:rotate(-30deg)}51%{animation-timing-function:cubic-bezier(0.9226,0.2631,-0.0308,0.7628);transform:rotate(29.97deg)}100%{transform:rotate(-30deg)}}.ld.ld-swing{animation:ld-swing 1s infinite linear}@keyframes ld-wander-v{0%{animation-timing-function:cubic-bezier(0.9647,0.2413,-0.0705,0.7911);transform:translate(0,-10%)}51%{animation-timing-function:cubic-bezier(0.9226,0.2631,-0.0308,0.7628);transform:translate(0,9.99%)}100%{transform:translate(0,-10%)}}.ld.ld-wander-v{animation:ld-wander-v 1s infinite linear}@keyframes ld-wander-h{0%{animation-timing-function:cubic-bezier(0.9647,0.2413,-0.0705,0.7911);transform:translate(-10%,0)}51%{animation-timing-function:cubic-bezier(0.9226,0.2631,-0.0308,0.7628);transform:translate(9.99%,0)}100%{transform:translate(-10%,0)}}.ld.ld-wander-h,.ld.ld-wander{animation:ld-wander-h 1s infinite linear}@keyframes ld-pulse{0%{animation-timing-function:cubic-bezier(0.3333,0.3333,0.3124,0.6668);transform:scale(0.85)}0.5%{animation-timing-function:cubic-bezier(0.0233,-0.3865,0.6667,0.6667);transform:scale(1.141)}1.5%{animation-timing-function:cubic-bezier(0.2893,0.354,0.6158,0.6958);transform:scale(1.124)}11%{animation-timing-function:cubic-bezier(0.2861,0.4196,0.6215,0.7476);transform:scale(0.992)}25%{animation-timing-function:cubic-bezier(0.0793,0.2627,0.9972,1.5511);transform:scale(0.887)}49.5%{animation-timing-function:cubic-bezier(0.6664,0.3332,0.6667,0.6667);transform:scale(0.85)}50%{animation-timing-function:cubic-bezier(0,0.3522,1,0.6686);transform:scale(1.1500000000000001)}51%{animation-timing-function:cubic-bezier(0.2668,0.4036,0.554,0.7657);transform:scale(1.1320000000000001)}73.5%{animation-timing-function:cubic-bezier(0.2997,1.0028,0.6671,1);transform:scale(0.894)}100%{transform:scale(0.85)}}.ld.ld-pulse{animation:ld-pulse 1s infinite linear}@keyframes ld-jingle{0%{animation-timing-function:cubic-bezier(0.146,0.2111,0.5902,1.3204);transform:rotate(0)}11%{animation-timing-function:cubic-bezier(0.1079,0.1992,-0.6462,0.828);transform:rotate(7.61deg)}23%{animation-timing-function:cubic-bezier(0.0504,0.0951,0.0163,0.9677);transform:rotate(-5.789999999999999deg)}36%{animation-timing-function:cubic-bezier(0.0475,0.0921,0.3134,1.0455);transform:rotate(3.35deg)}49%{animation-timing-function:cubic-bezier(0.0789,0.1565,0.3413,1.0972);transform:rotate(-1.9300000000000002deg)}62%{animation-timing-function:cubic-bezier(0.141,0.2885,0.406,1.1519);transform:rotate(1.12deg)}75%{animation-timing-function:cubic-bezier(0.226,0.4698,0.5031,1.1722);transform:rotate(-0.64deg)}88%{animation-timing-function:cubic-bezier(0.3121,0.5521,0.5655,0.8997);transform:rotate(0.37deg)}100%{transform:rotate(-0.28deg)}}.ld.ld-jingle{animation:ld-jingle 1s infinite linear;transform-origin:50% 0}@keyframes ld-rubber-v{0%{animation-timing-function:cubic-bezier(0.1858,0.2841,0.5834,1.4615);transform:scaleY(1)}31%{animation-timing-function:cubic-bezier(0.0467,0.1102,0.4803,1.4719);transform:scaleY(1.1354)}41%{animation-timing-function:cubic-bezier(0.0469,0.1108,0.4775,1.4732);transform:scaleY(0.9052)}51%{animation-timing-function:cubic-bezier(0.0478,0.1131,0.4723,1.4819);transform:scaleY(1.0664)}61%{animation-timing-function:cubic-bezier(0.0506,0.1192,0.4639,1.4818);transform:scaleY(0.9536)}71%{animation-timing-function:cubic-bezier(0.0581,0.1374,0.457,1.4901);transform:scaleY(1.0326)}81%{animation-timing-function:cubic-bezier(0.0765,0.1813,0.4542,1.4923);transform:scaleY(0.9772)}91%{animation-timing-function:cubic-bezier(0.1747,0.3181,0.341,0.878);transform:scaleY(1.016)}100%{transform:scaleY(0.9836)}}.ld.ld-rubber-v{animation:ld-rubber-v 1s infinite linear}@keyframes ld-rubber-h{0%{animation-timing-function:cubic-bezier(0.1858,0.2841,0.5834,1.4615);transform:scaleX(1)}31%{animation-timing-function:cubic-bezier(0.0467,0.1102,0.4803,1.4719);transform:scaleX(1.1354)}41%{animation-timing-function:cubic-bezier(0.0469,0.1108,0.4775,1.4732);transform:scaleX(0.9052)}51%{animation-timing-function:cubic-bezier(0.0478,0.1131,0.4723,1.4819);transform:scaleX(1.0664)}61%{animation-timing-function:cubic-bezier(0.0506,0.1192,0.4639,1.4818);transform:scaleX(0.9536)}71%{animation-timing-function:cubic-bezier(0.0581,0.1374,0.457,1.4901);transform:scaleX(1.0326)}81%{animation-timing-function:cubic-bezier(0.0765,0.1813,0.4542,1.4923);transform:scaleX(0.9772)}91%{animation-timing-function:cubic-bezier(0.1747,0.3181,0.341,0.878);transform:scaleX(1.016)}100%{transform:scaleX(0.9836)}}.ld.ld-rubber-h,.ld.ld-rubber{animation:ld-rubber-h 1s infinite linear}@keyframes ld-shake-v{0%{animation-timing-function:cubic-bezier(0.1441,0.1912,0.6583,1.1029);transform:translate(0,0)}31%{animation-timing-function:cubic-bezier(0.0667,0.1419,0.6667,1.1415);transform:translate(0,7.800000000000001%)}45%{animation-timing-function:cubic-bezier(0.0542,0.1151,0.5697,1.181);transform:translate(0,-4.680000000000001%)}59%{animation-timing-function:cubic-bezier(0.0497,0.1058,0.4541,1.231);transform:translate(0,2.8100000000000005%)}73%{animation-timing-function:cubic-bezier(0.0808,0.1711,0.4109,1.2519);transform:translate(0,-1.6800000000000002%)}87%{animation-timing-function:cubic-bezier(0.2073,0.3705,0.4064,0.8839);transform:translate(0,1.01%)}100%{transform:translate(0,-0.78%)}}.ld.ld-shake-v{animation:ld-shake-v 1s infinite linear}@keyframes ld-shake-h{0%{animation-timing-function:cubic-bezier(0.1515,0.2047,0.6562,1.1369);transform:translate(0,0)}31%{animation-timing-function:cubic-bezier(0.0628,0.1361,0.6012,1.2083);transform:translate(7.66%,0)}45%{animation-timing-function:cubic-bezier(0.0579,0.1251,0.5661,1.2263);transform:translate(-5.36%,0)}59%{animation-timing-function:cubic-bezier(0.0523,0.113,0.5181,1.2493);transform:translate(3.75%,0)}73%{animation-timing-function:cubic-bezier(0.0513,0.1113,0.4632,1.2762);transform:translate(-2.63%,0)}87%{animation-timing-function:cubic-bezier(0.1502,0.2709,0.2303,0.8469);transform:translate(1.8399999999999999%,0)}100%{transform:translate(-1.6800000000000002%,0)}}.ld.ld-shake-h,.ld.ld-shake{animation:ld-shake-h 1s infinite linear}@keyframes ld-tick{0%{animation-timing-function:cubic-bezier(0.1858,0.2841,0.5834,1.4615);transform:rotate(0)}31%{animation-timing-function:cubic-bezier(0.0467,0.1102,0.4803,1.4719);transform:rotate(13.540000000000001deg)}41%{animation-timing-function:cubic-bezier(0.0469,0.1108,0.4775,1.4732);transform:rotate(-9.48deg)}51%{animation-timing-function:cubic-bezier(0.0478,0.1131,0.4723,1.4819);transform:rotate(6.640000000000001deg)}61%{animation-timing-function:cubic-bezier(0.0506,0.1192,0.4639,1.4818);transform:rotate(-4.640000000000001deg)}71%{animation-timing-function:cubic-bezier(0.0581,0.1374,0.457,1.4901);transform:rotate(3.2600000000000002deg)}81%{animation-timing-function:cubic-bezier(0.0765,0.1813,0.4542,1.4923);transform:rotate(-2.2800000000000002deg)}91%{animation-timing-function:cubic-bezier(0.1747,0.3181,0.341,0.878);transform:rotate(1.6deg)}100%{transform:rotate(-1.6400000000000001deg)}}.ld.ld-tick{animation:ld-tick 1s infinite linear}@keyframes ld-smash{0%{animation-timing-function:cubic-bezier(0.3385,0.332,0.6667,0.6667);transform:rotate(0)}40.8%{animation-timing-function:cubic-bezier(0.3316,0.3338,0.5714,1.3045);transform:rotate(24.48deg)}48.5%{animation-timing-function:cubic-bezier(0.9673,0.2776,0.6667,0.6667);transform:rotate(29.07deg)}51%{animation-timing-function:cubic-bezier(0.1933,0.2947,-0.0572,0.7191);transform:rotate(25.38deg)}60.8%{animation-timing-function:cubic-bezier(0.0583,2.8507,0.8558,1);transform:rotate(0.54deg)}100%{transform:rotate(0)}}.ld.ld-smash{animation:ld-smash 1s infinite linear}@keyframes ld-jelly-alt{0%{animation-timing-function:cubic-bezier(0.1858,0.2841,0.5834,1.4615);transform:skewX(0)}31%{animation-timing-function:cubic-bezier(0.0467,0.1102,0.4803,1.4719);transform:skewX(6.7700000000000005deg)}41%{animation-timing-function:cubic-bezier(0.0469,0.1108,0.4775,1.4732);transform:skewX(-4.74deg)}51%{animation-timing-function:cubic-bezier(0.0478,0.1131,0.4723,1.4819);transform:skewX(3.3200000000000003deg)}61%{animation-timing-function:cubic-bezier(0.0506,0.1192,0.4639,1.4818);transform:skewX(-2.3200000000000003deg)}71%{animation-timing-function:cubic-bezier(0.0581,0.1374,0.457,1.4901);transform:skewX(1.6300000000000001deg)}81%{animation-timing-function:cubic-bezier(0.0765,0.1813,0.4542,1.4923);transform:skewX(-1.1400000000000001deg)}91%{animation-timing-function:cubic-bezier(0.1747,0.3181,0.341,0.878);transform:skewX(0.8deg)}100%{transform:skewX(-0.8200000000000001deg)}}.ld.ld-jelly-alt{animation:ld-jelly-alt 1s infinite linear}@keyframes ld-jelly{0%{animation-timing-function:cubic-bezier(0.1441,0.1912,0.6583,1.1029);transform:translate(0,0) skewX(0)}31%{animation-timing-function:cubic-bezier(0.0667,0.1419,0.6667,1.1415);transform:translate(-7.800000000000001%,0) skewX(7.800000000000001deg)}45%{animation-timing-function:cubic-bezier(0.0542,0.1151,0.5697,1.181);transform:translate(4.680000000000001%,0) skewX(-4.680000000000001deg)}59%{animation-timing-function:cubic-bezier(0.0497,0.1058,0.4541,1.231);transform:translate(-2.8100000000000005%,0) skewX(2.8100000000000005deg)}73%{animation-timing-function:cubic-bezier(0.0808,0.1711,0.4109,1.2519);transform:translate(1.6800000000000002%,0) skewX(-1.6800000000000002deg)}87%{animation-timing-function:cubic-bezier(0.2073,0.3705,0.4064,0.8839);transform:translate(-1.01%,0) skewX(1.01deg)}100%{transform:translate(0.78%,0) skewX(-0.78deg)}}.ld.ld-jelly{animation:ld-jelly 1s infinite linear}@keyframes ld-damage{0%{animation-timing-function:cubic-bezier(0.1916,0.3481,0.5313,2.0622);opacity:1}21%{animation-timing-function:cubic-bezier(0.0461,0.1237,0.4559,1.8579);opacity:.42200000000000004}29%{animation-timing-function:cubic-bezier(0.0468,0.1254,0.4564,1.8559);opacity:1.462}37%{animation-timing-function:cubic-bezier(0.0479,0.1283,0.457,1.856);opacity:.63}45%{animation-timing-function:cubic-bezier(0.0487,0.1306,0.457,1.8506);opacity:1.296}53%{animation-timing-function:cubic-bezier(0.0515,0.1383,0.4591,1.8571);opacity:.763}61%{animation-timing-function:cubic-bezier(0.0556,0.1484,0.4608,1.846);opacity:1.189}69%{animation-timing-function:cubic-bezier(0.0595,0.1602,0.4632,1.8456);opacity:.848}77%{animation-timing-function:cubic-bezier(0.0689,0.1849,0.4698,1.8391);opacity:1.121}85%{animation-timing-function:cubic-bezier(0.0794,0.2133,0.4765,1.8226);opacity:.903}93%{animation-timing-function:cubic-bezier(0.1486,0.2692,0.2335,0.855);opacity:1.078}100%{opacity:.893}}.ld.ld-damage{animation:ld-damage 1s infinite linear}@keyframes ld-rush-ltr{0%{animation-timing-function:cubic-bezier(0,0.5,0.5,1);opacity:0}5%{opacity:1}0%{transform:translateX(-318.47520861406804%) skewX(30deg)}25%{transform:translateX(-21.425625842204074%) skewX(-15deg)}33%{transform:translateX(8.574374157795926%) skewX(-15deg)}44%{transform:translateX(-4.212879922796667%) skewX(7.5deg)}55.00000000000001%{transform:translateX(2.097390810087623%) skewX(-3.75deg)}66%{transform:translateX(0) skewX(0)}80%{transform:translateX(0) skewX(0)}100%{transform:translateX(300%) skewX(30deg)}100%{opacity:1}}.ld.ld-rush-ltr{animation:ld-rush-ltr 1s infinite linear}@keyframes ld-rush-rtl{0%{animation-timing-function:cubic-bezier(0,0.5,0.5,1);opacity:0}5%{opacity:1}0%{transform:translateX(318.47520861406804%) skewX(-30deg)}25%{transform:translateX(21.425625842204074%) skewX(15deg)}33%{transform:translateX(-8.574374157795926%) skewX(15deg)}44%{transform:translateX(4.212879922796667%) skewX(-7.5deg)}55.00000000000001%{transform:translateX(-2.097390810087623%) skewX(3.75deg)}66%{transform:translateX(0) skewX(0)}80%{transform:translateX(0) skewX(0)}100%{transform:translateX(-300%) skewX(-30deg)}100%{opacity:1}}.ld.ld-rush-rtl{animation:ld-rush-rtl 1s infinite linear}@keyframes ld-rush-ttb{0%{animation-timing-function:cubic-bezier(0,0.5,0.5,1);opacity:0}5%{opacity:1}0%{transform:translateY(-78.47520861406802%) skewY(30deg)}25%{transform:translateY(2.5743741577959263%) skewY(-15deg)}33%{transform:translateY(8.574374157795926%) skewY(-15deg)}44%{transform:translateY(-4.212879922796667%) skewY(7.5deg)}55.00000000000001%{transform:translateY(2.097390810087623%) skewY(-3.75deg)}66%{transform:translateY(0) skewY(0)}80%{transform:translateY(0) skewY(0)}100%{transform:translateY(60%) skewY(30deg)}100%{opacity:1}}.ld.ld-rush-ttb{animation:ld-rush-ttb 1s infinite linear}@keyframes ld-rush-btt{0%{animation-timing-function:cubic-bezier(0,0.5,0.5,1);opacity:0}5%{opacity:1}0%{transform:translateY(318.47520861406804%) skewY(-30deg)}25%{transform:translateY(21.425625842204074%) skewY(15deg)}33%{transform:translateY(-8.574374157795926%) skewY(15deg)}44%{transform:translateY(4.212879922796667%) skewY(-7.5deg)}55.00000000000001%{transform:translateY(-2.097390810087623%) skewY(3.75deg)}66%{transform:translateY(0) skewY(0)}80%{transform:translateY(0) skewY(0)}100%{transform:translateY(-300%) skewY(-30deg)}100%{opacity:1}}.ld.ld-rush-btt{animation:ld-rush-btt 1s infinite linear}@keyframes ld-skew{0%,50%,100%{animation-timing-function:cubic-bezier(0.4,0,1,0.6)}25%,75%{animation-timing-function:cubic-bezier(0,0.4,0.6,1)}0%{transform:skewX(20deg) scale(1)}25%{transform:skewX(0) scale(0.9)}50%{transform:skewX(-20deg) scale(1)}75%{transform:skewX(0) scale(0.9)}100%{transform:skewX(20deg) scale(1)}}.ld.ld-skew{animation:ld-skew 1s infinite linear}@keyframes ld-skew-alt{0%,50%,100%{animation-timing-function:cubic-bezier(0.4,0,1,0.6)}25%,75%{animation-timing-function:cubic-bezier(0,0.4,0.6,1)}0%{transform:skewY(20deg) scale(1)}25%{transform:skewY(0) scale(0.9)}50%{transform:skewY(-20deg) scale(1)}75%{transform:skewY(0) scale(0.9)}100%{transform:skewY(20deg) scale(1)}}.ld.ld-skew-alt{animation:ld-skew-alt 1s infinite linear}@keyframes ld-slide-ltr{0%{animation-timing-function:cubic-bezier(0.4652,0.1051,0.774,0.6426);transform:translate(0,0);opacity:1}22.5%{animation-timing-function:cubic-bezier(0.4142,0.3131,0.7623,0.6513);transform:translate(47.8%,0);opacity:1}45%{animation-timing-function:cubic-bezier(0.3615,0.331,0.9646,1.3461);transform:translate(147.8%,0);opacity:1}47.5%{animation-timing-function:cubic-bezier(0.7006,0.3332,0.6667,0.6667);transform:translate(165.6%,0);opacity:0}50%{animation-timing-function:cubic-bezier(0.1604,0.3176,-0.0218,0.6965);transform:translate(-200%,0);opacity:0}51%{animation-timing-function:cubic-bezier(0.1983,0.3529,0.5263,0.6945);transform:translate(-179.8%,0);opacity:0}80.4%{animation-timing-function:cubic-bezier(0.2342,0.3708,0.5422,0.9065);transform:translate(-38.4%,0);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-slide-ltr{animation:ld-slide-ltr 1s infinite linear}@keyframes ld-slide-rtl{0%{animation-timing-function:cubic-bezier(0.4652,0.1051,0.774,0.6426);transform:translate(0,0);opacity:1}22.5%{animation-timing-function:cubic-bezier(0.4142,0.3131,0.7623,0.6513);transform:translate(-47.8%,0);opacity:1}45%{animation-timing-function:cubic-bezier(0.3615,0.331,0.9646,1.3461);transform:translate(-147.8%,0);opacity:1}47.5%{animation-timing-function:cubic-bezier(0.7006,0.3332,0.6667,0.6667);transform:translate(-165.6%,0);opacity:0}50%{animation-timing-function:cubic-bezier(0.1604,0.3176,-0.0218,0.6965);transform:translate(200%,0);opacity:0}51%{animation-timing-function:cubic-bezier(0.1983,0.3529,0.5263,0.6945);transform:translate(179.8%,0);opacity:0}80.4%{animation-timing-function:cubic-bezier(0.2342,0.3708,0.5422,0.9065);transform:translate(38.4%,0);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-slide-rtl{animation:ld-slide-rtl 1s infinite linear}@keyframes ld-slide-btt{0%{animation-timing-function:cubic-bezier(0.4652,0.1051,0.774,0.6426);transform:translate(0,0);opacity:1}22.5%{animation-timing-function:cubic-bezier(0.4142,0.3131,0.7623,0.6513);transform:translate(0,-47.8%);opacity:1}45%{animation-timing-function:cubic-bezier(0.3615,0.331,0.9646,1.3461);transform:translate(0,-147.8%);opacity:1}47.5%{animation-timing-function:cubic-bezier(0.7006,0.3332,0.6667,0.6667);transform:translate(0,-165.6%);opacity:0}50%{animation-timing-function:cubic-bezier(0.1604,0.3176,-0.0218,0.6965);transform:translate(0,200%);opacity:0}51%{animation-timing-function:cubic-bezier(0.1983,0.3529,0.5263,0.6945);transform:translate(0,179.8%);opacity:0}80.4%{animation-timing-function:cubic-bezier(0.2342,0.3708,0.5422,0.9065);transform:translate(0,38.4%);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-slide-btt{animation:ld-slide-btt 1s infinite linear}@keyframes ld-slide-ttb{0%{animation-timing-function:cubic-bezier(0.4652,0.1051,0.774,0.6426);transform:translate(0,0);opacity:1}22.5%{animation-timing-function:cubic-bezier(0.4142,0.3131,0.7623,0.6513);transform:translate(0,47.8%);opacity:1}45%{animation-timing-function:cubic-bezier(0.3615,0.331,0.9646,1.3461);transform:translate(0,147.8%);opacity:1}47.5%{animation-timing-function:cubic-bezier(0.7006,0.3332,0.6667,0.6667);transform:translate(0,165.6%);opacity:0}50%{animation-timing-function:cubic-bezier(0.1604,0.3176,-0.0218,0.6965);transform:translate(0,-200%);opacity:0}51%{animation-timing-function:cubic-bezier(0.1983,0.3529,0.5263,0.6945);transform:translate(0,-179.8%);opacity:0}80.4%{animation-timing-function:cubic-bezier(0.2342,0.3708,0.5422,0.9065);transform:translate(0,-38.4%);opacity:1}100%{transform:translate(0,0);opacity:1}}.ld.ld-slide-ttb{animation:ld-slide-ttb 1s infinite linear}@keyframes ld-coin-h{0%{animation-timing-function:cubic-bezier(0.5856,0.0703,0.4143,0.9297);transform:rotateY(0)}100%{transform:rotateY(3600deg)}}.ld.ld-coin-h,.ld.ld-coin{animation:ld-coin-h 2s infinite linear}@keyframes ld-coin-v{0%{animation-timing-function:cubic-bezier(0.5856,0.0703,0.4143,0.9297);transform:rotateX(0)}100%{transform:rotateX(3600deg)}}.ld.ld-coin-v{animation:ld-coin-v 2s infinite linear}@keyframes ld-cycle{0%{animation-timing-function:cubic-bezier(0.3333,0.3333,0.6667,0.6667);transform:rotate(0)}100%{transform:rotate(360deg)}}.ld.ld-cycle{animation:ld-cycle 1s infinite linear}@keyframes ld-cycle-alt{0%{animation-timing-function:cubic-bezier(0.3333,0.3333,0.6667,0.6667);transform:rotate(0)}100%{transform:rotate(-360deg)}}.ld.ld-cycle-alt{animation:ld-cycle-alt 1s infinite linear}@keyframes ld-flip-h{0%{animation-timing-function:cubic-bezier(0.1909,0.4373,0.4509,0.7454);transform:rotateY(0)}30%{animation-timing-function:cubic-bezier(0.128,0.2315,0.9704,0.8632);transform:rotateY(153.72deg)}50%{animation-timing-function:cubic-bezier(0.5788,0.3001,0.5613,0.6784);transform:rotateY(180deg)}55%{animation-timing-function:cubic-bezier(0.1545,0.4929,0.6089,0.9373);transform:rotateY(238.68deg)}100%{transform:rotateY(360deg)}}.ld.ld-flip-h{animation:ld-flip-h 1s infinite linear}@keyframes ld-flip-v{0%{animation-timing-function:cubic-bezier(0.1909,0.4373,0.4509,0.7454);transform:rotateX(0)}30%{animation-timing-function:cubic-bezier(0.128,0.2315,0.9704,0.8632);transform:rotateX(153.72deg)}50%{animation-timing-function:cubic-bezier(0.5788,0.3001,0.5613,0.6784);transform:rotateX(180deg)}55%{animation-timing-function:cubic-bezier(0.1545,0.4929,0.6089,0.9373);transform:rotateX(238.68deg)}100%{transform:rotateX(360deg)}}.ld.ld-flip-v{animation:ld-flip-v 1s infinite linear}@keyframes ld-spin-fast{0%{animation-timing-function:cubic-bezier(0.5856,0.0703,0.4143,0.9297);transform:rotate(0)}100%{transform:rotate(1800deg)}}.ld.ld-spin-fast{animation:ld-spin-fast 1s infinite linear}@keyframes ld-spin{0%{animation-timing-function:cubic-bezier(0.5856,0.0703,0.4143,0.9297);transform:rotate(0)}100%{transform:rotate(360deg)}}.ld.ld-spin{animation:ld-spin 1s infinite linear}@keyframes ld-squeeze{0%{animation-timing-function:cubic-bezier(0.1685,0.4459,0.3641,0.7833);transform:scale(0.5,1)}30%{animation-timing-function:cubic-bezier(0.0995,0.199,0.9948,0.959);transform:scale(0.9490000000000001,0.5509999999999999)}50%{animation-timing-function:cubic-bezier(0.6064,0.3078,0.5406,0.6764);transform:scale(1,0.5)}55%{animation-timing-function:cubic-bezier(0.1401,0.5826,0.6091,0.9651);transform:scale(0.8019999999999999,0.6980000000000001)}100%{transform:scale(0.5,1)}}.ld.ld-squeeze{animation:ld-squeeze 1s infinite linear}@keyframes ld-static{}.ld.ld-static{animation:ld-static 1s infinite linear}@keyframes ld-surprise{0%{transform:skewX(0) scale(1)}10%{transform:skewX(-25deg) scale(0.5)}20%{transform:skewX(-25deg) scale(0.5)}30%{transform:skewX(25deg) scale(1)}40%{transform:skewX(-25deg) scale(1)}50%{transform:skewX(25deg) scale(1)}60%{transform:skewX(-25deg) scale(1)}70%{transform:skewX(25deg) scale(1)}80%{transform:skewX(-25deg) scale(1)}90%{transform:skewX(25deg) scale(1)}100%{transform:skewX(-25deg) scale(1)}}.ld.ld-surprise{animation:ld-surprise 1s infinite linear}@keyframes ld-measure{0%{transform:translate(0,0) rotate(0)}3.33333%{transform:translate(0,0) rotate(-14.99241deg)}6.66667%{transform:translate(0,0) rotate(10.93733deg)}10%{transform:translate(0,0) rotate(10.60793deg)}13.33333%{transform:translate(0,0) rotate(-10.26249deg)}16.66667%{transform:translate(0,0) rotate(0.47337deg)}20%{transform:translate(0,0) rotate(15deg)}23.33333%{transform:translate(0,0) rotate(0.48087deg)}26.66667%{transform:translate(0,0) rotate(-10.26796deg)}30%{transform:translate(0,0) rotate(10.60262deg)}33.33333%{transform:translate(0,0) rotate(10.94246deg)}36.66667%{transform:translate(0,0) rotate(-14.99265deg)}40%{transform:translate(0,0) rotate(-0.0075deg)}43.33333%{transform:translate(0,0) rotate(14.99217deg)}46.66667%{transform:translate(0,0) rotate(-10.93219deg)}50%{transform:translate(0,0) rotate(-10.61323deg)}53.33333%{transform:translate(0,0) rotate(10.25702deg)}56.66667%{transform:translate(0,0) rotate(-0.46588deg)}60%{transform:translate(0,0) rotate(-15deg)}63.33333%{transform:translate(0,0) rotate(-0.48836deg)}66.66667%{transform:translate(0,0) rotate(10.27343deg)}70%{transform:translate(0,0) rotate(-10.59732deg)}73.33333%{transform:translate(0,0) rotate(-10.94759deg)}76.66667%{transform:translate(0,0) rotate(14.99288deg)}80%{transform:translate(0,0) rotate(0.015deg)}83.33333%{transform:translate(0,0) rotate(-14.99193deg)}86.66667%{transform:translate(0,0) rotate(10.92706deg)}90%{transform:translate(0,0) rotate(10.61853deg)}93.33333%{transform:translate(0,0) rotate(-10.25155deg)}96.66667%{transform:translate(0,0) rotate(0.45838deg)}100%{transform:translate(0,0) rotate(0)}}.ld.ld-measure{animation:ld-measure 5s infinite linear}@keyframes ld-shiver{0%{transform:translate(0,0) scale(1)}3.33333%{transform:translate(0,0) scale(1.04279)}6.66667%{transform:translate(0,0) scale(1.00524)}10%{transform:translate(0,0) scale(0.96369)}13.33333%{transform:translate(0,0) scale(0.95064)}16.66667%{transform:translate(0,0) scale(0.97651)}20%{transform:translate(0,0) scale(1.02078)}23.33333%{transform:translate(0,0) scale(1.04875)}26.66667%{transform:translate(0,0) scale(1.03832)}30%{transform:translate(0,0) scale(0.99777)}33.33333%{transform:translate(0,0) scale(0.95897)}36.66667%{transform:translate(0,0) scale(0.95244)}40%{transform:translate(0,0) scale(0.98335)}43.33333%{transform:translate(0,0) scale(1.02733)}46.66667%{transform:translate(0,0) scale(1.04988)}50%{transform:translate(0,0) scale(1.0331)}53.33333%{transform:translate(0,0) scale(0.99035)}56.66667%{transform:translate(0,0) scale(0.95507)}60%{transform:translate(0,0) scale(0.95527)}63.33333%{transform:translate(0,0) scale(0.99057)}66.66667%{transform:translate(0,0) scale(1.03343)}70%{transform:translate(0,0) scale(1.04984)}73.33333%{transform:translate(0,0) scale(1.02714)}76.66667%{transform:translate(0,0) scale(0.98293)}80%{transform:translate(0,0) scale(0.9523)}83.33333%{transform:translate(0,0) scale(0.9591)}86.66667%{transform:translate(0,0) scale(0.99821)}90%{transform:translate(0,0) scale(1.0386)}93.33333%{transform:translate(0,0) scale(1.0487)}96.66667%{transform:translate(0,0) scale(1.02038)}100%{transform:translate(0,0) scale(1)}}.ld.ld-shiver{animation:ld-shiver .5s infinite linear}@keyframes ld-swim{0%{transform:translate(0,0) rotate(0)}8.33333%{transform:translate(-5.96462px,4.90845px) rotate(-13.66821deg)}16.66667%{transform:translate(5.25471px,-2.05606px) rotate(0.47337deg)}25%{transform:translate(2.30929px,5.79372px) rotate(13.8564deg)}33.33333%{transform:translate(-5.75556px,-4.60802px) rotate(10.94246deg)}41.66667%{transform:translate(3.73522px,5.97742px) rotate(-14.03079deg)}50%{transform:translate(4.2628px,-3.01222px) rotate(-10.61323deg)}58.33333%{transform:translate(-4.65975px,-2.51269px) rotate(5.2869deg)}66.66667%{transform:translate(1.64024px,-1.05167px) rotate(10.27343deg)}75%{transform:translate(5.55954px,-4.22763px) rotate(-5.72726deg)}83.33333%{transform:translate(-2.84602px,5.91439px) rotate(-14.99193deg)}91.66667%{transform:translate(-0.70744px,-5.43064px) rotate(6.16192deg)}100%{transform:translate(0,0) rotate(0)}}.ld.ld-swim{animation:ld-swim 10s infinite linear}@keyframes ld-tremble{0%{transform:translate(0,0)}3.33333%{transform:translate(-0.18923px,1.45485px)}6.66667%{transform:translate(-0.84296px,-1.32524px)}10%{transform:translate(0.67971px,1.00422px)}13.33333%{transform:translate(-0.5056px,0.83616px)}16.66667%{transform:translate(1.31368px,-0.51401px)}20%{transform:translate(-1.21184px,1.49193px)}23.33333%{transform:translate(1.09065px,-0.21259px)}26.66667%{transform:translate(-1.49916px,0.56159px)}30%{transform:translate(1.48086px,1.21228px)}33.33333%{transform:translate(-1.43889px,-1.152px)}36.66667%{transform:translate(1.35914px,1.34835px)}40%{transform:translate(-1.42834px,0.3091px)}43.33333%{transform:translate(1.47472px,-1.49889px)}46.66667%{transform:translate(-0.92402px,1.4416px)}50%{transform:translate(1.0657px,-0.75306px)}53.33333%{transform:translate(-1.19035px,-1.07484px)}56.66667%{transform:translate(0.28828px,0.79337px)}60%{transform:translate(-0.47167px,-1.42789px)}63.33333%{transform:translate(0.64753px,-0.09795px)}66.66667%{transform:translate(0.41006px,-0.26292px)}70%{transform:translate(-0.22477px,-1.3683px)}73.33333%{transform:translate(0.03588px,0.92931px)}76.66667%{transform:translate(-1.01937px,-1.18398px)}80%{transform:translate(0.8724px,-0.60494px)}83.33333%{transform:translate(-0.71151px,1.4786px)}86.66667%{transform:translate(1.40734px,-1.49607px)}90%{transform:translate(-1.33062px,0.46957px)}93.33333%{transform:translate(1.23264px,1.26738px)}96.66667%{transform:translate(-1.48975px,-1.03867px)}100%{transform:translate(0,0)}}.ld.ld-tremble{animation:ld-tremble .5s infinite linear}@keyframes ld-vortex{0%,60%{animation-timing-function:cubic-bezier(0.3,0,1,0.7)}0%{opacity:0;transform:rotate(-1800deg) scale(0.3)}60%{opacity:1;transform:rotate(0) scale(1)}100%{opacity:0;transform:rotate(0) scale(1)}}.ld.ld-vortex{animation:ld-vortex 1s infinite linear}@keyframes ld-vortex-alt{0%,60%{animation-timing-function:cubic-bezier(0.3,0,1,0.7)}0%{opacity:0;transform:rotate(-1800deg) scale(3)}60%{opacity:1;transform:rotate(0) scale(1)}100%{opacity:0;transform:rotate(0) scale(1)}}.ld.ld-vortex-alt{animation:ld-vortex-alt 1s infinite linear}@keyframes ld-wrench{20%,36%,70%,86%{transform:rotate(0)}0%,50%,100%{transform:rotate(45deg)}}.ld.ld-wrench{animation:ld-wrench 1s infinite linear} From a4ffcd9866cb048e3fb26bb7f7203caf5a7625cc Mon Sep 17 00:00:00 2001 From: Ciemon Date: Wed, 20 May 2020 19:13:28 +0100 Subject: [PATCH 10/19] Update satellite_data.json Added RS-44, FS-3, HO-107, AO-27, IO-86 --- assets/json/satellite_data.json | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/assets/json/satellite_data.json b/assets/json/satellite_data.json index 0ca30423..40cbe483 100644 --- a/assets/json/satellite_data.json +++ b/assets/json/satellite_data.json @@ -43,6 +43,66 @@ ] } }, + "RS-44":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"145965000", + "Downlink_Mode":"USB", + "Downlink_Freq":"435640000" + } + ] + } + }, + "HO-107":{ + "Modes":{ + "U/V":[ + { + "Uplink_Mode":"LSB", + "Uplink_Freq":"435925000", + "Downlink_Mode":"USB", + "Downlink_Freq":"145925000" + } + ] + } + }, + "AO-27":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145850000", + "Downlink_Mode":"FM", + "Downlink_Freq":"436795000" + } + ] + } + }, + "FS-3":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"PKT", + "Uplink_Freq":"145840000", + "Downlink_Mode":"PKT", + "Downlink_Freq":"435103000" + } + ] + } + }, + "IO-86":{ + "Modes":{ + "V/U":[ + { + "Uplink_Mode":"FM", + "Uplink_Freq":"145880000", + "Downlink_Mode":"FM", + "Downlink_Freq":"435880000" + } + ] + } + }, "FO-29":{ "Modes":{ "V/U":[ From df9ab4722709c7a4098f35be7696de026390f97c Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Wed, 20 May 2020 21:58:36 +0100 Subject: [PATCH 11/19] Made some text tweaks to QRZ views --- application/views/interface_assets/header.php | 2 +- application/views/qrz/export.php | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/application/views/interface_assets/header.php b/application/views/interface_assets/header.php index 07926e9a..8c265ff1 100644 --- a/application/views/interface_assets/header.php +++ b/application/views/interface_assets/header.php @@ -117,7 +117,7 @@ - QRZ.com export + QRZ.com Export diff --git a/application/views/qrz/export.php b/application/views/qrz/export.php index 82068212..9958abb3 100644 --- a/application/views/qrz/export.php +++ b/application/views/qrz/export.php @@ -1,7 +1,7 @@
-

QRZ.com functions

+

QRZ.com Functions

@@ -10,8 +10,9 @@
-

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. - 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.

+

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.

+ +

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.

result()) { From 1ff7ff2a4c4e25ddf5a18c9794cfb1516918813d Mon Sep 17 00:00:00 2001 From: AndreasK79 Date: Thu, 21 May 2020 13:01:18 +0200 Subject: [PATCH 12/19] Fixed typos in readme. --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cafe61c9..1b218cf4 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,13 @@ Website: [http://www.cloudlog.co.uk](http://www.cloudlog.co.uk) ## Requirements * Linux based Operating System -* Apache (Nignx should work) +* Apache (Nginx should work) * PHP (Version 7 or higher) & MySQL ## Versions * **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. +* cloudlog-v2 - This is the current development copy, while to work on bringing multiclient to Cloudlog without breaking users stable copies. ## Setup @@ -22,7 +22,7 @@ Cloudlog now has a [Change Log](https://github.com/magicbug/Cloudlog/wiki/Change ## Support -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 genereal discussion forum [https://forum.cloudlog.co.uk](https://forum.cloudlog.co.uk). +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). ## Want Cloudlog Hosting? @@ -31,7 +31,7 @@ If you would prefer not to setup Cloudlog yourself [magicbug](https://magicbug.c ## 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, code will also only be accepted for PR with comments. @@ -45,4 +45,4 @@ Cloudlog is supported by Patreon and donations via PayPal, thanks to the followi 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) From 1c824502664f74a633967240ccbe1ab241e59e8d Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Thu, 21 May 2020 21:01:43 +0100 Subject: [PATCH 13/19] Added dropdowns for SAT NAME & Mode along with the free flow inputs this addresses #335 --- application/views/interface_assets/footer.php | 94 +++++++++++++++++++ application/views/qso/index.php | 10 +- 2 files changed, 102 insertions(+), 2 deletions(-) diff --git a/application/views/interface_assets/footer.php b/application/views/interface_assets/footer.php index 5d65e25e..6c3e7faa 100644 --- a/application/views/interface_assets/footer.php +++ b/application/views/interface_assets/footer.php @@ -269,6 +269,100 @@ $(document).on('keypress',function(e) { uri->segment(1) == "qso") { ?> + +