9 Commits

Author SHA1 Message Date
Marco Dalla Tiezza
cc607fdd28 Added more extension for FileDialog 2024-06-01 22:28:13 +02:00
Marco Dalla Tiezza
f5565a6b5e Basic Operations chapter added to the docs 2024-06-01 22:22:14 +02:00
Marco Dalla Tiezza
04bc4cce5f Added documentation for the new 2 products implemented in the previous commits 2024-06-01 13:12:15 +02:00
Marco Dalla Tiezza
c6afcc0e75 Added Aurora Forecast Model 2024-06-01 11:48:27 +02:00
Marco Dalla Tiezza
3fdbdbfae4 Added D-Region Absorption Predictions 2024-05-31 19:59:51 +02:00
Marco Dalla Tiezza
359e5c9076 Added Sporadic-E and Aurora spots in RF propagation panel 2024-05-31 16:48:27 +02:00
Marco Dalla Tiezza
7a89b64ca8 Code polished from unused functions 2024-05-31 16:36:34 +02:00
Marco Dalla Tiezza
e2a48e7a54 Docs updated and corrected a type in the space weather window 2024-05-30 18:25:18 +02:00
Marco Dalla Tiezza
2a70e42a59 Changed to GitHub hosted latest software and db version manifest 2024-05-30 12:48:29 +02:00
46 changed files with 3258 additions and 1290 deletions

3
.gitignore vendored
View File

@@ -4,4 +4,5 @@
data/ data/
.flake8 .flake8
*.qtds *.qtds
artemis_rc.py artemis_rc.py
site

View File

@@ -4,10 +4,11 @@
<div align="center"> <div align="center">
<a href="">![GitHub Release](https://img.shields.io/github/v/release/aresvalley/artemis)</a> ![GitHub Release](https://img.shields.io/github/v/release/aresvalley/artemis)
<a href="">![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/windows.yml?logo=windows&logoColor=white)</a> ![GitHub Release](https://img.shields.io/github/v/release/AresValley/Artemis-DB?label=DB%20version)
<a href="">![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/linux.yml?logo=linux&logoColor=white)</a> ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/windows.yml?logo=windows&logoColor=white)
<a href="">![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/aresvalley/artemis)</a> ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/linux.yml?logo=linux&logoColor=white)
![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/aresvalley/artemis)
</div> </div>

View File

@@ -22,6 +22,7 @@
<file>images/icons/documents.svg</file> <file>images/icons/documents.svg</file>
<file>images/icons/abort.svg</file> <file>images/icons/abort.svg</file>
<file>images/spectrum_not_available.svg</file> <file>images/spectrum_not_available.svg</file>
<file>images/artemis_not_available.svg</file>
<file>ui/Artemis.qml</file> <file>ui/Artemis.qml</file>
<file>ui/DbManager.qml</file> <file>ui/DbManager.qml</file>
@@ -37,6 +38,8 @@
<file>ui/SignalPage.qml</file> <file>ui/SignalPage.qml</file>
<file>ui/SpaceWeatherCurrentPage.qml</file> <file>ui/SpaceWeatherCurrentPage.qml</file>
<file>ui/SpaceWeatherForecastPage.qml</file> <file>ui/SpaceWeatherForecastPage.qml</file>
<file>ui/SpaceWeatherDRAPPage.qml</file>
<file>ui/SpaceWeatherAuroraPage.qml</file>
<file>ui/About.qml</file> <file>ui/About.qml</file>

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,8 @@ class UIspaceweather(QObject):
show_ui = Signal() show_ui = Signal()
load_poseidon_report = Signal(dict) load_poseidon_report = Signal(dict)
load_poseidon_forecast_report = Signal(dict) load_poseidon_forecast_report = Signal(dict)
load_poseidon_drap_report = Signal(dict)
load_aurora_report = Signal()
update_bottom_bar = Signal(str) update_bottom_bar = Signal(str)
@@ -26,6 +28,8 @@ class UIspaceweather(QObject):
self._window_current = self._window.findChild(QObject, "spaceWeatherCurrentObj") self._window_current = self._window.findChild(QObject, "spaceWeatherCurrentObj")
self._window_forecast = self._window.findChild(QObject, "spaceWeatherForecastObj") self._window_forecast = self._window.findChild(QObject, "spaceWeatherForecastObj")
self._window_drap = self._window.findChild(QObject, "spaceWeatherDRAPObj")
self._window_aurora = self._window.findChild(QObject, "spaceWeatherAuroraObj")
self._connect() self._connect()
@@ -38,6 +42,8 @@ class UIspaceweather(QObject):
self.update_bottom_bar.connect(self._window.updateBottomBar) self.update_bottom_bar.connect(self._window.updateBottomBar)
self.load_poseidon_report.connect(self._window_current.loadReport) self.load_poseidon_report.connect(self._window_current.loadReport)
self.load_poseidon_forecast_report.connect(self._window_forecast.loadForecastReport) self.load_poseidon_forecast_report.connect(self._window_forecast.loadForecastReport)
self.load_poseidon_drap_report.connect(self._window_drap.loadDrapReport)
self.load_aurora_report.connect(self._window_aurora.loadAuroraReport)
def load_spaceweather_ui(self): def load_spaceweather_ui(self):
@@ -50,11 +56,13 @@ class UIspaceweather(QObject):
network_manager = self._parent.network_manager network_manager = self._parent.network_manager
network_manager.show_popup = True network_manager.show_popup = True
poseidon_data = network_manager.fetch_remote_json( poseidon_data = network_manager.fetch_remote_json(
Constants.POSEIDON_REPORT Constants.POSEIDON_REPORT_URL
) )
if poseidon_data: if poseidon_data:
self.load_poseidon_report.emit(poseidon_data) self.load_poseidon_report.emit(poseidon_data)
self.load_poseidon_forecast_report.emit(poseidon_data) self.load_poseidon_forecast_report.emit(poseidon_data)
self.load_poseidon_drap_report.emit(poseidon_data)
self.load_aurora_report.emit()
self.update_bottom_bar.emit( self.update_bottom_bar.emit(
'Loaded Poseidon report issued on {} at {} UTC'.format( 'Loaded Poseidon report issued on {} at {} UTC'.format(

View File

@@ -23,8 +23,8 @@ class Constants():
SQL_NAME = 'data.sqlite' SQL_NAME = 'data.sqlite'
DB_LATEST_VERSION = 'https://www.aresvalley.com/artemis/v4/latest.json' LATEST_VERSION_URL = 'https://raw.githubusercontent.com/AresValley/Artemis/master/config/release-info.json'
POSEIDON_REPORT = 'https://www.aresvalley.com/poseidon_engine/data.json' POSEIDON_REPORT_URL = 'https://www.aresvalley.com/poseidon_engine/data.json'
DEFAULT_ENCODING = 'utf-8' DEFAULT_ENCODING = 'utf-8'
SYSTEM_LANGUAGE = 'en_US' # locale.getdefaultlocale()[0] SYSTEM_LANGUAGE = 'en_US' # locale.getdefaultlocale()[0]

View File

@@ -37,7 +37,7 @@ class NetworkManager:
popup (bool, optional): Suppress the "already up-to-date" message on startup. popup (bool, optional): Suppress the "already up-to-date" message on startup.
Defaults to False. Defaults to False.
""" """
latest_json = self.fetch_remote_json(Constants.DB_LATEST_VERSION) latest_json = self.fetch_remote_json(Constants.LATEST_VERSION_URL)
if latest_json: if latest_json:
local_db = self.load_local_db() local_db = self.load_local_db()
remote_db = latest_json['sigID_DB'] remote_db = latest_json['sigID_DB']

17
config/release-info.json Normal file
View File

@@ -0,0 +1,17 @@
{
"sigID_DB": {
"version": 60,
"url": "https://github.com/AresValley/Artemis-DB/releases/download/v60/v60.tar",
"sha256_hash": "78a2c2e5fc00ef4e6c3c975436177eb726fe38ad05463e5cc84b16797225b803",
"total_bytes": 244070400
},
"windows": {
"version": "4.0.0"
},
"linux": {
"version": "4.0.0"
},
"mac": {
"version": "4.0.0"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
docs/assets/sw_1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

BIN
docs/assets/sw_2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
docs/assets/sw_3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

BIN
docs/assets/sw_4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

60
docs/basic_operations.md Normal file
View File

@@ -0,0 +1,60 @@
#
![sw_current](assets/main_window.webp)
## 1. Main Menu
### File
* **New Database:** Create a new database.
* **Load Database:** Open the Database Manager windows in order to open, rename, or delete a database.
* **Import Database:** Import an Artemis database with a standard .tar format.
* **Export Database:** Export the loaded database with a standard .tar format.
* **Edit Tags:** Open the tags editor window. From here, you can add, rename, or delete tags. The tags can be added to a signal from the [tags menu](#4-tags)
* **Open Database Folder:** Shows the folder of the currently loaded database in the explorer.
* **Preferences:** Open the program settings window.
* **Exit:** This will simply close the application.
### Signal
* **New:** Add a new signal to the database.
* **Edit:** Edit the current/selected signal from the loaded database.
### Space Weather
* **Check Report:** Open the main [Space Weather window](space_weather/current.md) and retrieve all the live data from Poseidon Crawler.
## 2. Signal List
This is the signal list where all the database entries are shown. When a signal is selected, it will load on the right panel. On top of the list, there is a field for filtering signals by name: this filter has the highest priority among all the filters.
## 3. Signal Menu
Here you can swithc between the main **signal** window and the **filter** page.
## 4. Tags
* **Associate Tag:** Custom tags can be associated to the selected signal with the :octicons-plus-circle-16: icon
* **Remove Tag:** In order to remove a tag, just click on its badge.
* **Add/Rename Tag:** To add a new tag open the [Tags Editor](#1-main-menu) in the main menu.
## 5. Add Parameter
Click on the labels to add the corresponding parameter to the signal (e.g. click on **Frequency** to add a new frequency).
## 6. Edit Parameter
Click on the parameter badge to open the Signal Editor windows. From here, you can edit or delete the corresponding parameter.
!!! tip "Parameter Description"
All the parameters have a description field: if some text is added, it will appear when the corresponding parameter badge is hovered with the mouse pointer.
## 7. Description :simple-markdown:{ title="Markdown Supported" }
This is the description of the signal and can be edited from the [Main Menu](#1-main-menu) (`Signal/Edit...`)
!!! tip "Markdown Supported"
The Description field can render **Markdown**, a simple markup language for creating rich text using plain text. Headers, emphasis, lists, links, code blocks, and many more features for advanced text formatting. [Markdown Basic Syntax :simple-markdown:](https://www.markdownguide.org/basic-syntax/)
## 8. Audio Sample
This is a player where an audio sample of the signal can be played. To associate an audio file to be shown as the **main** audio sample, check in the [extra menu](#10-extra) below the signal spectrum.
## 9. Image Sample
This is an image box that commonly contains the signal spectrum/waterfall. To associate an image file to be shown as the **main** image sample, check in the [extra menu](#10-extra) below the signal spectrum.
## 10. Extra
:material-earth: This button is only available for the standard SigID wiki database and connects the local signal to its counterpart on the [sigidwiki website](https://www.sigidwiki.com/).
:material-file-document-multiple: This will open the **Documents Manager**. From here you can add any file (audio, image, pdf, etc.) to the signal entry. It is also possible to mark only one image and one audio to be shown on the main signal window.

View File

@@ -2,7 +2,7 @@
The table contains 4 columns explained below. The table contains 4 columns explained below.
!!! example !!! example
A technical explanation on how autocorrelation function works along with a practical example is reported [HERE](acf_analysis.md) A technical explanation on how autocorrelation function works along with a practical example is reported [HERE](../acf_analysis.md)
## ACF_ID ## ACF_ID
`INTEGER` :material-key-outline:{ title="Primary key" } :material-upload-outline:{ title="Auto-increment" } `INTEGER` :material-key-outline:{ title="Primary key" } :material-upload-outline:{ title="Auto-increment" }

View File

@@ -2,7 +2,7 @@
With the release of Artemis 4, we have made a significant upgrade in our data management system by transitioning from a CSV file to a full relational SQL database. This change brings a multitude of advantages that enhance the efficiency, scalability, and reliability of our system. In the following sections, we will explore, table by table, the structure of the new database. With the release of Artemis 4, we have made a significant upgrade in our data management system by transitioning from a CSV file to a full relational SQL database. This change brings a multitude of advantages that enhance the efficiency, scalability, and reliability of our system. In the following sections, we will explore, table by table, the structure of the new database.
![Screenshot](assets/sql_schema.webp) ![Screenshot](../assets/sql_schema.webp)

View File

@@ -1,8 +1,17 @@
# SigID Wiki Database # SigID Wiki Database
<div align="center" markdown>
![GitHub Release](https://img.shields.io/github/v/release/AresValley/Artemis-DB?label=Latest%20release)
![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/AresValley/Artemis-DB/total?label=DB%20requests)
![GitHub Release Date](https://img.shields.io/github/release-date/AresValley/Artemis-DB)
</div>
Artemis serves as a valuable resource for both personal signal collection and leveraging a vast repository of pre-identified signals. This software application allows users to curate their own collections, but its true strength lies in its integration with a comprehensive database of known signals. This database is directly sourced from the [Signal Identification Wiki](https://www.sigidwiki.com/wiki/Signal_Identification_Guide), an open-source resource collaboratively maintained by a global community of radio enthusiasts. Artemis serves as a valuable resource for both personal signal collection and leveraging a vast repository of pre-identified signals. This software application allows users to curate their own collections, but its true strength lies in its integration with a comprehensive database of known signals. This database is directly sourced from the [Signal Identification Wiki](https://www.sigidwiki.com/wiki/Signal_Identification_Guide), an open-source resource collaboratively maintained by a global community of radio enthusiasts.
!!! tip "Database Revision" !!! tip "Database Revision"
For quality control purposes, the database undergoes a rigorous review process before integration into Artemis. This review adheres to established guidelines (**DIANA** crawler, not yet released), ensuring the accuracy and completeness of the information presented to users. The specifics of this review process are outlined in the following section. For quality control purposes, the database undergoes a rigorous review process before integration into Artemis. This review adheres to established [guidelines](https://github.com/AresValley/Artemis-DB), ensuring the accuracy and completeness of the information presented to users. The specifics of this review process are outlined in the following section.
## Modulation ## Modulation
A good practise (reported also on ) is to write the primary type of modulation (if known) and not all the possible variants. A practical example is reported on [Signal Identification Wiki](https://www.sigidwiki.com/wiki/Signal_Identification_Guide): there is no need to write **8-PSK** or **QPSK**, **PSK** is enough. The Artemis SigID database is provided without any modulation variants included. The recognized modulations are listed below: A good practise (reported also on ) is to write the primary type of modulation (if known) and not all the possible variants. A practical example is reported on [Signal Identification Wiki](https://www.sigidwiki.com/wiki/Signal_Identification_Guide): there is no need to write **8-PSK** or **QPSK**, **PSK** is enough. The Artemis SigID database is provided without any modulation variants included. The recognized modulations are listed below:

View File

@@ -1,7 +1,7 @@
--- ---
title: Documentation title: Documentation
--- ---
# #
<p align="center" markdown> <p align="center" markdown>
![Logo](assets/logo_large_black.svg#only-light){width="400"} ![Logo](assets/logo_large_black.svg#only-light){width="400"}

View File

@@ -7,12 +7,12 @@
* **macOS** 11+ (Big Sur or later) * **macOS** 11+ (Big Sur or later)
## :simple-windows: Windows ## :simple-windows: Windows
Just download the installer and follow the guided procedure to complete the installation process. 1. Download the installer `Artemis-Windows-x86_64-4.x.x.exe` in the Assets menu from the [:material-download: LATEST RELEASE](https://github.com/AresValley/Artemis/releases) and follow the guided procedure to complete the installation process.
--- ---
## :simple-linux: Linux ## :simple-linux: Linux
Download and extract the tarball archive in a folder of your choice and run the executable `app.bin`. 1. Download `Artemis-Linux-x86_64-4.x.x.tar` in the Assets menu from the [:material-download: LATEST RELEASE](https://github.com/AresValley/Artemis/releases) and extract the tarball archive in a folder of your choice and run the executable `app.bin`.
### Create a Shortcut ### Create a Shortcut
@@ -31,8 +31,12 @@ This script will:
--- ---
## :simple-apple: Mac OS ## :simple-apple: Mac OS
!!! warning
The macOS support is temporarily limited!
The support for the macOS compiled version of the program is temporarily limited due to a lack of machines for extensive testing. To use Artemis on a macOS device, you have the following options: The support for the macOS compiled version of the program is temporarily limited due to a lack of machines for extensive testing. To use Artemis on a macOS device, you have the following options:
* **Run the program directly from the source:** Follow the instructions provided in [this chapter](run_from_source.md) to launch the program from the source code. * **Run the program directly from the source:** Follow the instructions provided in [this chapter](run_from_source.md) to launch the program from the source code.
* **Compile the Artemis 4 binaries on your machine:** In this case, you can contribute by reporting any issues you encounter by [opening an Issue](https://github.com/AresValley/Artemis/issues). * **Compile the Artemis 4 binaries on your machine:** In this case, you can contribute by reporting any issues you encounter by [opening an Issue](https://github.com/AresValley/Artemis/issues).
* **Use the last available compiled version (3.2.1):** Although this version is no longer officially supported, it remains available for use. * **Use the last available compiled version (3.2.1):** Although this version is no longer officially supported, it remains available for use: [:material-download: Artemis-3.2.1.dmg](https://aresvalley.com/download/11/).

View File

@@ -0,0 +1,9 @@
#
![sw_current](../assets/sw_4.webp)
This short-term aurora forecast predicts its location and intensity over the next 30 to 90 minutes, based on the [OVATION model](https://www.swpc.noaa.gov/products/aurora-30-minute-forecast). The lead time of the forecast corresponds to the duration it takes for the solar wind to travel from the L1 observation point to Earth.
Auroras indicate current geomagnetic storm conditions and provide situational awareness for various technologies: for example, they directly affect HF radio communication and GPS/GNSS satellite navigation and are related to ground-induced currents impacting electric power transmission.
For many people, the aurora is a beautiful nighttime phenomenon that is worth traveling to arctic regions just to observe. It is the only way for most people to actually experience space weather.

View File

@@ -0,0 +1,212 @@
#
![sw_current](../assets/sw_1.webp)
## 1. Kp Index
The **K index** is a number (from 0 to 9) that shows how much Earth's magnetic field is disturbed. A K index of 1 means things are calm, while a K index of 5 or higher indicates a geomagnetic storm. These disturbances are measured with magnetometers that track changes in Earth's magnetic field every three hours. The K itself comes from a German word "Kennziffer" meaning "characteristic digit". To get a big picture of what's happening around the world, an official planetary **Kp index** is calculated. This is done by averaging the K indices from a special network of 13 geomagnetic observatories located around the globe at mid-latitudes.
## 2. A Index
The **A index** represents the three-hourly equivalent amplitude of geomagnetic activity at a specific magnetometer station, derived from the station-specific K index. Due to the quasi-logarithmic nature of the K-scale in relation to magnetometer fluctuations, directly averaging a set of K indices is not really meaningful. Instead each K is converted back into a linear scale. The **Ap index** is determined by averaging the eight daily A values, providing a measure of geomagnetic activity for a specific day. Days with higher levels of geomagnetic activity correspond to higher daily Ap values.
## 3. NOAA Space Weather Scale
### Geomagnetic Storm
??? danger "G5 (Extreme)"
* **Physical measure:** Kp = 9
* **Average Frequency:** 4 days per cycle (11 years)
**Power systems:** Widespread voltage control problems and protective system problems can occur, some grid systems may experience complete collapse or blackouts. Transformers may experience damage.
**Spacecraft operations:** May experience extensive surface charging, problems with orientation, uplink/downlink and tracking satellites.
**Other systems:** Pipeline currents can reach hundreds of amps, HF (high frequency) radio propagation may be impossible in many areas for one to two days, satellite navigation may be degraded for days, low-frequency radio navigation can be out for hours, and aurora has been seen as low as Florida and southern Texas (typically 40° geomagnetic lat.).
??? danger "G4 (Severe)"
* **Physical measure:** Kp = 8 to 9-
* **Average Frequency:** 60 days per cycle (11 years)
**Power systems:** Possible widespread voltage control problems and some protective systems will mistakenly trip out key assets from the grid.
**Spacecraft operations:** May experience surface charging and tracking problems, corrections may be needed for orientation problems.
**Other systems:** Induced pipeline currents affect preventive measures, HF radio propagation sporadic, satellite navigation degraded for hours, low-frequency radio navigation disrupted, and aurora has been seen as low as Alabama and northern California (typically 45° geomagnetic lat.).
??? warning "G3 (Strong)"
* **Physical measure:** Kp = 7
* **Average Frequency:** 130 days per cycle (11 years)
**Power systems:** Voltage corrections may be required, false alarms triggered on some protection devices.
**Spacecraft operations:** Surface charging may occur on satellite components, drag may increase on low-Earth-orbit satellites, and corrections may be needed for orientation problems.
**Other systems:** Intermittent satellite navigation and low-frequency radio navigation problems may occur, HF radio may be intermittent, and aurora has been seen as low as Illinois and Oregon (typically 50° geomagnetic lat.).
??? warning "G2 (Moderate)"
* **Physical measure:** Kp = 6
* **Average Frequency:** 360 days per cycle (11 years)
**Power systems:** High-latitude power systems may experience voltage alarms, long-duration storms may cause transformer damage.
**Spacecraft operations:** Corrective actions to orientation may be required by ground control; possible changes in drag affect orbit predictions.
**Other systems:** HF radio propagation can fade at higher latitudes, and aurora has been seen as low as New York and Idaho (typically 55° geomagnetic lat.).
??? info "G1 (Minor)"
* **Physical measure:** Kp = 5
* **Average Frequency:** 900 days per cycle (11 years)
**Power systems:** Weak power grid fluctuations can occur.
**Spacecraft operations:** Minor impact on satellite operations possible.
**Other systems:** Migratory animals are affected at this and higher levels; aurora is commonly visible at high latitudes (northern Michigan and Maine).
### Solar Radiation Storms
??? danger "S5 (Extreme)"
* **Physical measure:** Flux level of $\ge 10 MeV$ particles = $10^5$
* **Average Frequency:** < 1 event per cycle (11 years)
**Biological:** Unavoidable high radiation hazard to astronauts on EVA (extra-vehicular activity); passengers and crew in high-flying aircraft at high latitudes may be exposed to radiation risk.
**Satellite operations:** Satellites may be rendered useless, memory impacts can cause loss of control, may cause serious noise in image data, star-trackers may be unable to locate sources; permanent damage to solar panels possible.
**Other systems:** Complete blackout of HF (high frequency) communications possible through the polar regions, and position errors make navigation operations extremely difficult.
??? danger "S4 (Severe)"
* **Physical measure:** Flux level of $\ge 10 MeV$ particles = $10^4$
* **Average Frequency:** 3 events per cycle (11 years)
**Biological:** Unavoidable radiation hazard to astronauts on EVA; passengers and crew in high-flying aircraft at high latitudes may be exposed to radiation risk.
**Satellite operations:** May experience memory device problems and noise on imaging systems; star-tracker problems may cause orientation problems, and solar panel efficiency can be degraded.
**Other systems:** Blackout of HF radio communications through the polar regions and increased navigation errors over several days are likely.
??? warning "S3 (Strong)"
* **Physical measure:** Flux level of $\ge 10 MeV$ particles = $10^3$
* **Average Frequency:** 10 events per cycle (11 years)
**Biological:** Radiation hazard avoidance recommended for astronauts on EVA; passengers and crew in high-flying aircraft at high latitudes may be exposed to radiation risk.
**Satellite operations:** Single-event upsets, noise in imaging systems, and slight reduction of efficiency in solar panel are likely.
**Other systems:** Degraded HF radio propagation through the polar regions and navigation position errors likely.
??? warning "S2 (Moderate)"
* **Physical measure:** Flux level of $\ge 10 MeV$ particles = $10^2$
* **Average Frequency:** 25 events per cycle (11 years)
**Biological:** Passengers and crew in high-flying aircraft at high latitudes may be exposed to elevated radiation risk.
**Satellite operations:** Infrequent single-event upsets possible.
**Other systems:** Small effects on HF propagation through the polar regions and navigation at polar cap locations possibly affected.
??? info "S1 (Minor)"
* **Physical measure:** Flux level of $\ge 10 MeV$ particles = $10$
* **Average Frequency:** 50 events per cycle (11 years)
**Biological:** None.
**Satellite operations:** None.
**Other systems:** Minor impacts on HF radio in the polar regions.
### Radio Blackouts
??? danger "R5 (Extreme)"
* **Physical measure:*** X20 ($2e^{-3} Wm^{-2}$)
* **Average Frequency:** < 1 days per cycle (11 years)
**HF Radio:** Complete HF (high frequency**) radio blackout on the entire sunlit side of the Earth lasting for a
number of hours. This results in no HF radio contact with mariners and en route aviators in this sector.
**Navigation:** Low-frequency navigation signals used by maritime and general aviation systems experience outages
on the sunlit side of the Earth for many hours, causing loss in positioning. Increased satellite navigation errors in
positioning for several hours on the sunlit side of Earth, which may spread into the night side.
*GOES X-ray peak brightness by class and by flux (measured in the 0.1-0.8 nm range, in W·m-2)
??? danger "R4 (Severe)"
* **Physical measure:*** X10 ($10^{-3} Wm^{-2}$)
* **Average Frequency:** 8 days per cycle (11 years)
**HF Radio:** HF radio communication blackout on most of the sunlit side of Earth for one to two hours. HF radio
contact lost during this time.
**Navigation:** Outages of low-frequency navigation signals cause increased error in positioning for one to two
hours. Minor disruptions of satellite navigation possible on the sunlit side of Earth.
*GOES X-ray peak brightness by class and by flux (measured in the 0.1-0.8 nm range, in W·m-2)
??? warning "R3 (Strong)"
* **Physical measure:*** X1 ($10^{-4} Wm^{-2}$)
* **Average Frequency:** 140 days per cycle (11 years)
**HF Radio:** Wide area blackout of HF radio communication, loss of radio contact for about an hour on sunlit side
of Earth.
**Navigation:** Low-frequency navigation signals degraded for about an hour.
*GOES X-ray peak brightness by class and by flux (measured in the 0.1-0.8 nm range, in W·m-2)
??? warning "R2 (Moderate)"
* **Physical measure:*** M5 ($5e^{-5} Wm^{-2}$)
* **Average Frequency:** 300 days per cycle (11 years)
**HF Radio:** Limited blackout of HF radio communication on sunlit side of the Earth, loss of radio contact for tens
of minutes.
**Navigation:** Degradation of low-frequency navigation signals for tens of minutes.
*GOES X-ray peak brightness by class and by flux (measured in the 0.1-0.8 nm range, in W·m-2)
??? info "R1 (Minor)"
* **Physical measure:*** M1 ($10^{-5} Wm^{-2}$)
* **Average Frequency:** 950 days per cycle (11 years)
**HF Radio:** Weak or minor degradation of HF radio communication on sunlit side of the Earth, occasional loss of
radio contact.
**Navigation:** Low-frequency navigation signals degraded for brief intervals.
*GOES X-ray peak brightness by class and by flux (measured in the 0.1-0.8 nm range, in W·m-2)
## 4. X-Ray Solar Activity
This is a summary of the **X-Ray Flare Class**. Large solar X-ray flares can change the Earths ionosphere, which blocks high-frequency (HF) radio transmissions on the sunlit side of the Earth. Solar flares are also associated with Coronal Mass Ejections (CMEs) which can ultimately lead to geomagnetic storms. SWPC sends out space weather alerts at the M5 level. Some large flares are accompanied by strong radio bursts that may interfere with other radio frequencies and cause problems for satellite communication and radio navigation (GPS).
| Class | Peak Strength (W/m<sup>2</sup>) | Effects on Earth |
|-------|---------------------------------|--------------------------------------------------------------|
| B | I < 10<sup>-6</sup> | Too small to harm Earth |
| C | 10<sup>-6</sup> ≤ I < 10<sup>-5</sup> | Small with few noticeable consequences |
| M | 10<sup>-5</sup> ≤ I < 10<sup>-4</sup> | Brief radio blackouts in polar regions, minor radiation storms |
| X | I ≥ 10<sup>-4</sup> | Planet-wide radio blackouts, long-lasting radiation storms |
## 5. RF Propagation
### Maximum Usable Frequency
In radio transmission, the maximum usable frequency (MUF) is the highest frequency that can be effectively used for communication between two locations on Earth by reflecting off the ionosphere (via skywave or skip) at a given time, regardless of the transmitter's power. This measurement is particularly valuable for shortwave transmissions.
### Earth-Moon-Earth
EarthMoonEarth communication (EME), commonly referred to as Moon bounce, is a radio communication method in which radio waves are transmitted from an Earth-based station, reflected off the Moon's surface, and then received back on Earth. The value gives the probability of a succesfull connection.
### Meteor Scatter
Meteor burst communications (MBC), also known as meteor scatter (MS) communications, is a radio propagation technique that uses the ionized trails created by meteors entering the atmosphere to establish brief communication links between radio stations up to 2,250 kilometers (1,400 miles) apart. This can involve either forward-scatter or back-scatter of the radio waves. Like EME, the value gives the probability of a succesfull connection.
### Sporadic-E
**Report of the latest E-skip spots on 50, 70 & 144 MHz by [DXrobot](https://dxrobot.gooddx.net/)**
Sporadic E (Es or SpE) is a rare type of radio propagation that uses a lower part of the Earth's ionosphere, which typically doesn't refract radio waves. It reflects signals off small "clouds" in the E region at altitudes of 95-150 km (50-100 miles). Unlike the regular F region skywave propagation, which depends on daily cycles of ionized layers from UV light, Sporadic E uses transient ionized patches. This allows for occasional long-distance VHF communication, usually during the six weeks around the summer solstice, beyond the normal line-of-sight range.
### Aurora Spots
**Report of the latest aurora spots on 50, 70 & 144 MHz by [DXrobot](https://dxrobot.gooddx.net/)**
Auroral propagation, or auroral backscatter, is a form of radio propagation that occurs during an auroral event, affecting VHF and UHF communications. Increased ionization in the E layer of the ionosphere reflects signals at much higher frequencies than usual, enabling communication up to 1000 MHz, though 500 MHz is more common. Signals are directed towards the auroral region and reflected back, but they are often distorted due to particle movement (the signal is roughly Doppler shifted of 1 kHz at around 150 MHz as the electrons stream down).
### Expected HF Noise
This is just the expected noise in HF based on the current Space Weather conditions.
## 6. Report Age
Poseidon Daemon is in charge of parse all the necessary data used for the Space Weather module. The data of the last generated report is written here.

View File

@@ -0,0 +1,7 @@
#
![sw_current](../assets/sw_3.webp)
The D-Region Absorption Product (DRAP) evaluates the effects of solar X-ray flux and solar energetic particle (SEP) events on HF radio communication. Long-distance communications using high frequency (HF) radio waves (3 - 30 MHz) rely on signal reflection in the ionosphere. Typically, radio waves reflect near the peak of the F2 layer (~300 km altitude), but during their journey to and from this peak, the signals experience attenuation due to absorption by the intervening ionosphere.
The [D-Region Absorption Prediction model](https://www.swpc.noaa.gov/products/d-region-absorption-predictions-d-rap) provides guidance to understand the degradation and blackouts of HF radio communications that can result from these conditions.

View File

@@ -0,0 +1,15 @@
#
![sw_current](../assets/sw_2.webp)
## 1. Forecast Summary
Geomagnetic activity, Solar Radiation Storms and Radio Blackouts probable events (in the next 3 days) are described in this section.
## 2. 3-Day Kp Index
This is a 3 day projection of the [Kp index](current.md).
## 3. Events Probability
The probability (in percentage) of different events that can take place and generate some important conditions for RF propagation. All the event are explained [here](current.md).
!!! info
Geomagnetic Activity has two percentual value per day: the left one refers to high-latitude location and the right one is for middle-latitude locations.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -53,20 +53,26 @@ nav:
- Installation: 'installation.md' - Installation: 'installation.md'
- Run from source: 'run_from_source.md' - Run from source: 'run_from_source.md'
- Build Package: 'build_package.md' - Build Package: 'build_package.md'
- Basic Operations: 'basic_operations.md'
- Database: - Database:
- 'Overview': 'db_overview.md' - Overview: 'database/db_overview.md'
- Structure: - Structure:
- 'Info': 'db_info.md' - Info: 'database/db_info.md'
- 'Signals': 'db_signals.md' - Signals: 'database/db_signals.md'
- 'Frequency': 'db_frequency.md' - Frequency: 'database/db_frequency.md'
- 'Bandwidth': 'db_bandwidth.md' - Bandwidth: 'database/db_bandwidth.md'
- 'Modulation': 'db_modulation.md' - Modulation: 'database/db_modulation.md'
- 'Mode': 'db_mode.md' - Mode: 'database/db_mode.md'
- 'Location': 'db_location.md' - Location: 'database/db_location.md'
- 'Category': 'db_category.md' - Category: 'database/db_category.md'
- 'Category Label': 'db_cat_label.md' - Category Label: 'database/db_cat_label.md'
- 'ACF': 'db_acf.md' - ACF: 'database/db_acf.md'
- SigID: 'sigid.md' - SigID: 'database/sigid.md'
- Space Weather:
- Current: 'space_weather/current.md'
- Forecasts: 'space_weather/forecasts.md'
- DRAP: 'space_weather/drap.md'
- Aurora: 'space_weather/aurora.md'
- Example: - Example:
- ACF Analysis: 'acf_analysis.md' - ACF Analysis: 'acf_analysis.md'
- Contribute: 'contribute.md' - Contribute: 'contribute.md'

View File

@@ -4,6 +4,7 @@ import QtQuick.Controls
import QtQuick.Window import QtQuick.Window
import QtQuick.Controls.Material import QtQuick.Controls.Material
Dialog { Dialog {
x: (parent.width - width) / 2 x: (parent.width - width) / 2
y: (parent.height - height) / 2 y: (parent.height - height) / 2

View File

@@ -12,8 +12,8 @@ Window {
height: 800 height: 800
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
title: qsTr("Artemis") title: qsTr("Artemis")
@@ -169,13 +169,16 @@ Window {
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
Label {
text: qsTr("Enter the name of the new database:")
Layout.bottomMargin: 15
font.pointSize: 12
}
TextField { TextField {
id: newDbName id: newDbName
Layout.fillWidth: true Layout.fillWidth: true
placeholderText: qsTr("New DB Name") placeholderText: qsTr("Name")
} }
} }
onAccepted: { onAccepted: {

View File

@@ -13,8 +13,8 @@ Window {
height: 400 height: 400
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
modality: Qt.ApplicationModal modality: Qt.ApplicationModal
@@ -41,14 +41,6 @@ Window {
} }
} }
function getModel() {
var modelList = []
for (var i = 0; i < myModel.count; i++) {
modelList.push(myModel.get(i).value)
}
return modelList
}
function clearAll() { function clearAll() {
myModel.clear() myModel.clear()
} }
@@ -79,11 +71,15 @@ Window {
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
Label {
text: qsTr("Enter the name of the new tag:")
Layout.bottomMargin: 15
font.pointSize: 12
}
TextField { TextField {
id: newCatName id: newCatName
Layout.fillWidth: true Layout.fillWidth: true
placeholderText: qsTr("Tag") placeholderText: qsTr("Tag Name")
} }
} }
@@ -105,11 +101,15 @@ Window {
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
Label {
text: qsTr("Enter the new name for the tag:")
Layout.bottomMargin: 15
font.pointSize: 12
}
TextField { TextField {
id: renameCatName id: renameCatName
Layout.fillWidth: true Layout.fillWidth: true
placeholderText: qsTr("Tag") placeholderText: qsTr("Tag Name")
} }
} }

View File

@@ -4,6 +4,7 @@ import QtQuick.Controls
import QtQuick.Controls.Material import QtQuick.Controls.Material
import QtQuick.Layouts import QtQuick.Layouts
Window { Window {
id: windowDBmanager id: windowDBmanager
@@ -41,14 +42,6 @@ Window {
} }
} }
function getModel() {
var modelList = []
for (var i = 0; i < myModel.count; i++) {
modelList.push(myModel.get(i).name)
}
return modelList
}
function clearAll() { function clearAll() {
titleLabel.text = 'N/A' titleLabel.text = 'N/A'
totDocsLabel.text = '' totDocsLabel.text = ''
@@ -62,7 +55,6 @@ Window {
loadDB(myModel.get(listView.currentIndex).db_dir_name) loadDB(myModel.get(listView.currentIndex).db_dir_name)
} }
function renameDb() { function renameDb() {
if (textDBName.readOnly) { if (textDBName.readOnly) {
textDBName.focus = true textDBName.focus = true
@@ -120,7 +112,11 @@ Window {
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
Label {
text: qsTr("Enter the new for the database:")
Layout.bottomMargin: 15
font.pointSize: 12
}
TextField { TextField {
id: newDbName id: newDbName
Layout.fillWidth: true Layout.fillWidth: true

View File

@@ -12,8 +12,8 @@ Window {
height: 500 height: 500
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
modality: Qt.ApplicationModal modality: Qt.ApplicationModal
@@ -167,9 +167,9 @@ Window {
id: fileDialog id: fileDialog
title: "Please choose a file" title: "Please choose a file"
nameFilters: [ nameFilters: [
"Image (*.jpg *.png)", "Image (*.png *.jpg *.jpeg *.gif *.bmp *.tiff *.tif *.webp *.svg *.heic *.raw *.cr2 *.nef *.orf *.sr2 *.arw *.dng)",
"Audio (*.mp3 *.m4a *.ogg)", "Audio (*.mp3 *.wav *.aac *.flac *.alac *.wma *.ogg *.m4a *.aiff *.aif *.amr *.opus *.mid *.midi *.pcm)",
"Document (*.txt *.pdf)", "Document (*.doc *.docx *.pdf *.txt *.rtf *.odt *.html *.htm *.xml *.ppt *.pptx *.xls *.xlsx *.csv *.epub *.mobi *.md *.tex *.wps)",
"All files (*)" "All files (*)"
] ]

View File

@@ -12,8 +12,8 @@ Window {
height: 400 height: 400
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
modality: Qt.ApplicationModal modality: Qt.ApplicationModal

View File

@@ -12,8 +12,8 @@ Window {
height: 400 height: 400
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
modality: Qt.ApplicationModal modality: Qt.ApplicationModal

View File

@@ -11,8 +11,8 @@ Window {
height: 700 height: 700
Component.onCompleted: { Component.onCompleted: {
x = Screen.width/2 - width/2 x = Screen.width / 2 - width / 2
y = Screen.height/2 - height/2 y = Screen.height / 2 - height / 2
} }
modality: Qt.ApplicationModal modality: Qt.ApplicationModal
@@ -50,6 +50,12 @@ Window {
TabButton { TabButton {
text: qsTr("Forecasts") text: qsTr("Forecasts")
} }
TabButton {
text: qsTr("DRAP")
}
TabButton {
text: qsTr("Aurora")
}
} }
StackLayout { StackLayout {
@@ -68,6 +74,18 @@ Window {
id: spaceWeatherForecastPage id: spaceWeatherForecastPage
} }
} }
Item {
SpaceWeatherDRAPPage {
id: spaceWeatherDRAPPage
}
}
Item {
SpaceWeatherAuroraPage {
id: spaceWeatherAuroraPage
}
}
} }
} }
} }

View File

@@ -0,0 +1,49 @@
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
Page {
id: spaceWeatherAurora
anchors.fill: parent
objectName: "spaceWeatherAuroraObj"
function loadAuroraReport() {
checkUrlExists("https://www.aresvalley.com/poseidon_engine/aurora.png", function(exists) {
if (exists) {
imageBox.source = "https://www.aresvalley.com/poseidon_engine/aurora.png"
} else {
imageBox.source = "qrc:///images/artemis_not_available.svg"
}
})
}
function checkUrlExists(url, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
callback(xhr.status === 200)
}
}
xhr.open("HEAD", url, true)
xhr.send()
}
ColumnLayout {
anchors.fill: parent
anchors.rightMargin: 20
anchors.leftMargin: 20
anchors.bottomMargin: 20
anchors.topMargin: 20
Image {
id: imageBox
Layout.fillHeight: true
Layout.fillWidth: true
fillMode: Image.PreserveAspectFit
}
}
}

View File

@@ -39,6 +39,10 @@ Page {
labelMux.text = poseidon_data['PROPAGATION']['MUX'] labelMux.text = poseidon_data['PROPAGATION']['MUX']
labelEME.text = poseidon_data['PROPAGATION']['EME'] labelEME.text = poseidon_data['PROPAGATION']['EME']
labelMS.text = poseidon_data['PROPAGATION']['MS'] labelMS.text = poseidon_data['PROPAGATION']['MS']
labelESEU50.text = poseidon_data['PROPAGATION']['ES_EU_50']
labelESEU70.text = poseidon_data['PROPAGATION']['ES_EU_70']
labelESEU144.text = poseidon_data['PROPAGATION']['ES_EU_144']
labelESAURORA.text = poseidon_data['PROPAGATION']['ES_AURORA']
labelHfNoise.text = poseidon_data['AK']['exp_noise'] labelHfNoise.text = poseidon_data['AK']['exp_noise']
labelPeakFluxClass.text = poseidon_data['XRAY']['peak_flux_class'] labelPeakFluxClass.text = poseidon_data['XRAY']['peak_flux_class']
@@ -261,7 +265,6 @@ Page {
Label { Label {
text: qsTr("Current Flux Class:") text: qsTr("Current Flux Class:")
font.capitalization: Font.SmallCaps
} }
Label { Label {
@@ -274,7 +277,6 @@ Page {
Label { Label {
text: qsTr("Peak 3h Flux Class:") text: qsTr("Peak 3h Flux Class:")
font.capitalization: Font.SmallCaps
} }
Label { Label {
@@ -287,7 +289,6 @@ Page {
Label { Label {
text: qsTr("Peak 24h Flux Class:") text: qsTr("Peak 24h Flux Class:")
font.capitalization: Font.SmallCaps
} }
Label { Label {
@@ -321,7 +322,7 @@ Page {
columns: 2 columns: 2
Label { Label {
text: qsTr("MUX (MHz):") text: qsTr("Maximum Usable Frequency (MHz):")
} }
Label { Label {
@@ -334,7 +335,6 @@ Page {
Label { Label {
text: qsTr("Earth-Moon-Earth:") text: qsTr("Earth-Moon-Earth:")
font.capitalization: Font.SmallCaps
} }
Label { Label {
@@ -347,7 +347,6 @@ Page {
Label { Label {
text: qsTr("Meteor Scatter:") text: qsTr("Meteor Scatter:")
font.capitalization: Font.SmallCaps
} }
Label { Label {
@@ -359,8 +358,55 @@ Page {
} }
Label { Label {
text: qsTr("Expected HF Noise:") text: qsTr("Sporadic-E EU 50 MHz:")
}
Label {
id: labelESEU50
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
font.pointSize: 12
font.capitalization: Font.SmallCaps font.capitalization: Font.SmallCaps
font.bold: true
}
Label {
text: qsTr("Sporadic-E EU 70 MHz:")
}
Label {
id: labelESEU70
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
font.pointSize: 12
font.capitalization: Font.SmallCaps
font.bold: true
}
Label {
text: qsTr("Sporadic-E EU 144 MHz:")
}
Label {
id: labelESEU144
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
font.pointSize: 12
font.capitalization: Font.SmallCaps
font.bold: true
}
Label {
text: qsTr("Aurora Spots:")
}
Label {
id: labelESAURORA
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
font.pointSize: 12
font.capitalization: Font.SmallCaps
font.bold: true
}
Label {
text: qsTr("Expected HF Noise:")
} }
Label { Label {

107
ui/SpaceWeatherDRAPPage.qml Normal file
View File

@@ -0,0 +1,107 @@
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
Page {
id: spaceWeatherDRAP
anchors.fill: parent
objectName: "spaceWeatherDRAPObj"
function loadDrapReport(poseidon_data) {
labelRecovery.text = poseidon_data['DRAP']['Recovery Time']
labelXrayMsg.text = poseidon_data['DRAP']['XRay Msg']
labelProtonMsg.text = poseidon_data['DRAP']['Proton Msg']
checkUrlExists("https://www.aresvalley.com/poseidon_engine/drap.png", function(exists) {
if (exists) {
imageBox.source = "https://www.aresvalley.com/poseidon_engine/drap.png"
} else {
imageBox.source = "qrc:///images/artemis_not_available.svg"
}
})
}
function checkUrlExists(url, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
callback(xhr.status === 200)
}
}
xhr.open("HEAD", url, true)
xhr.send()
}
ColumnLayout {
anchors.fill: parent
anchors.rightMargin: 20
anchors.leftMargin: 20
anchors.bottomMargin: 20
anchors.topMargin: 20
Image {
id: imageBox
Layout.fillHeight: true
Layout.fillWidth: true
fillMode: Image.PreserveAspectFit
}
RowLayout {
Item {
Layout.fillWidth: true
}
Label {
text: qsTr("RECOVERY TIME:")
Layout.fillWidth: false
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
}
Label {
id: labelRecovery
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
font.pointSize: 12
font.bold: true
}
Item {
Layout.fillWidth: true
}
}
RowLayout {
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
Layout.fillWidth: true
ColumnLayout {
Label {
text: qsTr("X-RAY STATUS")
}
Label {
id: labelXrayMsg
font.pointSize: 12
font.bold: true
}
}
Item {
Layout.fillWidth: true
}
ColumnLayout {
Label {
text: qsTr("PROTON STATUS")
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
}
Label {
id: labelProtonMsg
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
font.pointSize: 12
font.bold: true
}
}
}
}
}

View File

@@ -53,7 +53,6 @@ Page {
} }
} }
labelDay1Event.text = poseidon_data['FORCST']['PRE_DATES'][0] labelDay1Event.text = poseidon_data['FORCST']['PRE_DATES'][0]
labelDay2Event.text = poseidon_data['FORCST']['PRE_DATES'][1] labelDay2Event.text = poseidon_data['FORCST']['PRE_DATES'][1]
labelDay3Event.text = poseidon_data['FORCST']['PRE_DATES'][2] labelDay3Event.text = poseidon_data['FORCST']['PRE_DATES'][2]
@@ -119,7 +118,6 @@ Page {
labelEventMajor2.text = geoMajorM2 + ' / ' + geoMajorH2 labelEventMajor2.text = geoMajorM2 + ' / ' + geoMajorH2
} }
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
anchors.rightMargin: 20 anchors.rightMargin: 20