Added Aurora Forecast Model

This commit is contained in:
Marco Dalla Tiezza
2024-06-01 11:48:27 +02:00
parent 3fdbdbfae4
commit c6afcc0e75
5 changed files with 204 additions and 48 deletions

View File

@@ -39,6 +39,7 @@
<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/SpaceWeatherDRAPPage.qml</file>
<file>ui/SpaceWeatherAuroraPage.qml</file>
<file>ui/About.qml</file> <file>ui/About.qml</file>

View File

@@ -5961,42 +5961,43 @@ Text\x0d\x0a \
.WordWrap\x0d\x0a \ .WordWrap\x0d\x0a \
}\x0d\x0a }\x0d\x0a}\x0d\x0a\ }\x0d\x0a }\x0d\x0a}\x0d\x0a\
\ \
\x00\x00\x02\x19\ \x00\x00\x02*\
\x00\ \x00\
\x00\x07\x87x\xda\xbdT\xddk\xdb0\x10\x7f\x0f\xe4\x7f\ \x00\x08\x87x\xda\xbdUQk\xdb0\x10~\x0f\xe4?\
\x10}j\x1f\xe6\xa5\x8510\xf4!\xcd\x18+\xb4\x90\ \x88>\xb5\x0f\xd3\xd2\xc2\x18\x18\xfa\x90f\x8c\x15ZH\
.\x85<+\xf69\x16\x95%O:\x93d\xc3\xff\xfb\ \x97B\x9e\x15\xfb\x1c\x8b\xca\x92'\x9dI\xb2\xe1\xff>\
\xf4a%\xb6\xe3lM\xcbv\xf8A\xba\xfb\xdd\xdd\xef\ \xc9\xb2\x12\xdbq\xb6\xa5\xa3\x15y\x90\xee\xbe\xbb\xfb\xee\
>,V\x94R!y\xc2\xa7\x8a%/\xe3\x11\xeb\xdc\ \xf4Y\xe1y\xa14\x92'|*y\xfc2\x1e\xf1\xce\
\xa3%\x13\xa9\xdc\x1c\xa9gR\xa0\x92\x5c\x9f4D\x8f\ \x99.\xb9L\xd4\xe6\xc8<S\x12\xb5\x12\xe6\xa4\x83>\
\x14A1\xca\x8f\x10\x0ft'+4\x9e\xe3\x91\x0fN\ 2\x04\xcd\x998B<\xb0\x9d*\xd1F\x8eG>9\
~\x8dG\xc4\x08Kc\xb2q\x9aEI\x13X\x02\xc5\ \xf95\x1e\x11\xbbx\x12\x91MmY\x14,\x86%0\
\x1c\x94\xc5Y\xeb\x86\xa5\x98\xc7\xe4z2\x99xE\x0e\ \xcc@;\x9c\xf3nx\x82YD\xae'\x93\x897d\
l\x9dcL>[\x85W\xcd\xa4I%@`$\x85\ \xc0\xd7\x19F\xe4\xb33x\xd3L\xd9R\x12$R%\
=s@0A\x9b\xf8V\xb6\xe4\x96,\x12\x05 \x22\ \xdd^\x00\x82M\xda\xe4wkKn\xc9\x22\xd6\x00\x92\
\x17\x90|$7\xe4\x03\xd9\x9f\x0f\xc8\xdd\x01\xe935\ \xd6\x09\xc9GrC>\x90\xfd\xfe\x80\xdc\x1d\x90\xbeR\
\xd0\xc3\xc5c\xeb\x90\xbc\x90)\xe5\x0cw\xb1\xa94\x9a\ \x03=\x1c<\xb6\x0a\xc5s\x950\xc1q\x17\xd9N\xe9\
\x96%g\x09E&\xc5\xa3\xd5{H\xc6\xe9Z;{\ \xb4(\x04\x8f\x19r%\x1f\x9d\xddCR\xc1\xd6\xa6\xf6\
h\xab\xd7#C\x0e1\xf9\xa1\x9f\xd5\xe5\xc5T!\x14\ \x87\xb1z;r\x14\x10\x91\x1f\xe6Y_^L5B\
L\x9bT\xae\x0d\xa4\xe9\xc3\xc5U@g\x95Hl`\ \xce\x8d-U\x8f\x814s\xb8\xb8\x0a\xe8\xb4\x94\xb1K\
R\x95\xa9i\xf2\x9dD\x94\xc5\x1dU\x97\x05hM\xd7\ L\xca\x22\xb1C\xbeS\x88*\xbfc\xfa2\x07c\xd8\
p\xd5.X\xdb\x18{H\x84\xb0ESX\x83lU\ \x1a\xae\xda\x0d\x1b\x97c\x0f\xa1\x08[\xb4\x8d5\xc8V\
\xe0\x8fs\xa3l{S\x91\xe4R\xe9(c\x9c\xc7\xa4\ \x07~;\xb7\xc6v4\x93q\xa6\xb4\xa1)\x17\x22\x22\
\xa4\xca\xf46`\x1d\x15)\xcd\x94c\xf2@W\xc0\xdb\ \x05\xd3v\xb6\x01[SQ\xca\xderD\x1e\xd8\x0aD\
\x8ea\x9e\xdd\xf4]{fV%*\xd9\x16\xf8\x82\xfd\ ;0\xdcg\xb7|\xd7\x9fZ\xa9\xd0\x82oA,\xf8\
4\xe5_\xdft\xed\x1c2\x9c\xd34eb\x1d\x93O\ O\xdb\xfe\xf5M\xd7/ \xc59K\x12.\xd7\x11\xf9\
]\x9b\xb2C8e\x5c\xb9|C\xd6\xbaM~&y\ \xd4\xf5iw\x09\xa7\x9c\xab\xba\xde\x90\xb7j\x93\x9f)\
U\x08\xbf\x8e}\xee\x7f+\xdc\xca3]\x99\x9a\xfa\x9e\ Q\xe6\xd2\xcb\xb1\xcf\xfdo\x8d\xbb\xf5\xccV\xb6\xa7~\
\xa1rt\xd6c[\xb3\xc7>\xa4_\xc2c\x90'\xe5\ d\xe8\x1ck\xef\xb1\xaf\xd1\xb1O\xe9Ex\x0c\xf2\xa4\
\xb2/=\x1eU\x05}\x02\x81De\xca\x15C<\xdc\ \xea\xeaK\x8fG]B\x9f@ Q\xdav\xe5\x10\x8f\
n\x99\x89\x87\xd5\x9aU\xcaf\xb5\xab\xd4\x87\xd5\xef\x0c\ Z[\xf6\xc6\x83\xb4f\xa5vU\x9d\x94\xfa\xb0\xea?\
\xfdU*H\xa8F\xfd/\x82\x7f\xf9>\x9d\xbf\x22n\ S\x7fU\x1abf\xd0\xbcE\xf2/\xdf\xa7\xf3\xb7\xc8\
\xddo\xd0\x02i\xf22<`+\x89o\xc7\xbdHa\ ;-\xb5\xd2\xec\x1f2W\xfd\xd1/\x90\xc5/\xc3\xd2\
\x1b\x06\x16\xb5\x95\x7f\x1c\xcc\xb7\xe6\xfd\xf1\x93y\xfb\x04\ q+\xf6\x83\xbe\x97\x09l\x83\x14h\xdb\xf8\xc7+\xff\
\xef\xcd\xef~\xaa\x09\xed\x87\xb0\x19^\xff\x17\x1d\xda=\ \xd6\xbcl\xfe\xce_\xaf\x8d{\xfb\x90\x9c\x1aC\xfb\x89\
=\xec6\xecT\x0f\xf6\xf5\xed<\xc3&\x9cK\xb4\xed\ md\xd1\xff\xf8\x87Tm\x86\xc3\x86\x83\xaa\xc1\xb9\xbe\
\xf7\x7f\x98\xda\xb5:\x97e\xf09\x87\xe1\x89k\xbd\x7f\ \x9eg\xd0\xd8\xb9D\xdbq\xef\xc3\xd4\x09\xf6\x5c\x96!\
~\xcd\xf7\x1b\xf1b\xd4\xe4\ \xe6}\x18z\xe9\x9f\xcb\xf1\x10u\x0e\xcb\x13\xc7j\xff\
\xf7c\x7f\xbf\x01\x0fJ\x0a\x01\
\x00\x00\x08\xdf\ \x00\x00\x08\xdf\
\x00\ \x00\
\x00[\x00x\xda\xed\x5cmo\xdb\xb6\x16\xfe>`\xff\ \x00[\x00x\xda\xed\x5cmo\xdb\xb6\x16\xfe>`\xff\
@@ -6249,6 +6250,91 @@ n4\xcd\xc2\xae\xe4\xb4\xef\xb9m\xaf\xc4\xc0;\x8a\xd6\
\xfc\x9e\x95V\xdc&\xfe\x9f\x95\xb5\xbd*\xef\xa7+\xf3\ \xfc\x9e\x95V\xdc&\xfe\x9f\x95\xb5\xbd*\xef\xa7+\xf3\
+\xff\xe7\xa8\xca\xf4\xf7=k\xaa\xfa\x1b\xe4\xbfp\xab\ +\xff\xe7\xa8\xca\xf4\xf7=k\xaa\xfa\x1b\xe4\xbfp\xab\
\xb0\xf1\xdd\x13\xc2\xff\x7f\x00&\x9a\x88\xe6\ \xb0\xf1\xdd\x13\xc2\xff\x7f\x00&\x9a\x88\xe6\
\x00\x00\x05%\
i\
mport QtQuick\x0d\x0ai\
mport QtQuick.Wi\
ndow\x0d\x0aimport QtQ\
uick.Controls\x0d\x0ai\
mport QtQuick.Co\
ntrols.Material\x0d\
\x0aimport QtQuick.\
Layouts\x0d\x0a\x0d\x0a\x0d\x0aPag\
e {\x0d\x0a id: spa\
ceWeatherAurora\x0d\
\x0a anchors.fil\
l: parent\x0d\x0a\x0d\x0a \
objectName: \x22sp\
aceWeatherAurora\
Obj\x22\x0d\x0a\x0d\x0a func\
tion loadAuroraR\
eport() {\x0d\x0a \
checkUrlExist\
s(\x22https://www.a\
resvalley.com/po\
seidon_engine/au\
rora.png\x22, funct\
ion(exists) {\x0d\x0a \
if (e\
xists) {\x0d\x0a \
imageB\
ox.source = \x22htt\
ps://www.aresval\
ley.com/poseidon\
_engine/aurora.p\
ng\x22\x0d\x0a \
} else {\x0d\x0a \
image\
Box.source = \x22qr\
c:///images/arte\
mis_not_availabl\
e.svg\x22\x0d\x0a \
}\x0d\x0a }\
)\x0d\x0a }\x0d\x0a\x0d\x0a \
function checkUr\
lExists(url, cal\
lback) {\x0d\x0a \
var xhr = new \
XMLHttpRequest()\
\x0d\x0a xhr.on\
readystatechange\
= function() {\x0d\
\x0a if \
(xhr.readyState \
=== XMLHttpReque\
st.DONE) {\x0d\x0a \
call\
back(xhr.status \
=== 200)\x0d\x0a \
}\x0d\x0a \
}\x0d\x0a xhr.\
open(\x22HEAD\x22, url\
, true)\x0d\x0a \
xhr.send()\x0d\x0a \
}\x0d\x0a\x0d\x0a Column\
Layout {\x0d\x0a \
anchors.fill: \
parent\x0d\x0a \
anchors.rightMar\
gin: 20\x0d\x0a \
anchors.leftMar\
gin: 20\x0d\x0a \
anchors.bottomM\
argin: 20\x0d\x0a \
anchors.topMa\
rgin: 20\x0d\x0a\x0d\x0a \
Image {\x0d\x0a \
id: ima\
geBox\x0d\x0a \
Layout.fillHe\
ight: true\x0d\x0a \
Layout.f\
illWidth: true\x0d\x0a\
fill\
Mode: Image.Pres\
erveAspectFit\x0d\x0a \
}\x0d\x0a }\x0d\
\x0a}\x0d\x0a\
\x00\x00\x03\xf0\ \x00\x00\x03\xf0\
\x00\ \x00\
\x00\x0f\xd5x\xda\xddWQo\xdb6\x10~/\xd0\xff\ \x00\x0f\xd5x\xda\xddWQo\xdb6\x10~/\xd0\xff\
@@ -7007,6 +7093,11 @@ qt_resource_name = b"\
\x09\x22a\xfc\ \x09\x22a\xfc\
\x00D\ \x00D\
\x00b\x00M\x00a\x00n\x00a\x00g\x00e\x00r\x00.\x00q\x00m\x00l\ \x00b\x00M\x00a\x00n\x00a\x00g\x00e\x00r\x00.\x00q\x00m\x00l\
\x00\x1a\
\x0f\x8fy|\
\x00S\
\x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00A\x00u\x00r\x00o\x00r\
\x00a\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
\x00\x0f\ \x00\x0f\
\x0e^\x1a\x9c\ \x0e^\x1a\x9c\
\x00P\ \x00P\
@@ -7044,7 +7135,7 @@ qt_resource_name = b"\
qt_resource_struct = b"\ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x19\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x19\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x0a\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\ \x00\x00\x00\x0a\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
@@ -7102,35 +7193,37 @@ qt_resource_struct = b"\
\x00\x00\x01\x8f\xcb\x84\x8f\xb2\ \x00\x00\x01\x8f\xcb\x84\x8f\xb2\
\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x01;\xcf\ \x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x01;\xcf\
\x00\x00\x01\x8f\xcb\x849\xd5\ \x00\x00\x01\x8f\xcb\x849\xd5\
\x00\x00\x05J\x00\x00\x00\x00\x00\x01\x00\x01\x95N\ \x00\x00\x05\x84\x00\x00\x00\x00\x00\x01\x00\x01\x9a\x88\
\x00\x00\x01\x8f\xcb\x83\x89\xfd\ \x00\x00\x01\x8f\xcb\x83\x89\xfd\
\x00\x00\x03N\x00\x01\x00\x00\x00\x01\x00\x01E\xbf\ \x00\x00\x03N\x00\x01\x00\x00\x00\x01\x00\x01E\xbf\
\x00\x00\x01\x8f\xcb\x86T\x18\ \x00\x00\x01\x8f\xcb\x86T\x18\
\x00\x00\x05(\x00\x00\x00\x00\x00\x01\x00\x01\x8f\x9f\ \x00\x00\x05b\x00\x00\x00\x00\x00\x01\x00\x01\x94\xd9\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x034\x00\x02\x00\x00\x00\x04\x00\x00\x00)\ \x00\x00\x034\x00\x02\x00\x00\x00\x04\x00\x00\x00*\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x04\xa0\x00\x01\x00\x00\x00\x01\x00\x01rI\ \x00\x00\x04\xa0\x00\x01\x00\x00\x00\x01\x00\x01rZ\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x05\x06\x00\x01\x00\x00\x00\x01\x00\x01\x85\xc1\ \x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8a\xfb\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x01{,\ \x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x01{=\
\x00\x00\x01\x8f\xcb\x83z\xd6\ \x00\x00\x01\x8f\xcb\x83z\xd6\
\x00\x00\x04$\x00\x01\x00\x00\x00\x01\x00\x01^\xa5\ \x00\x00\x04$\x00\x01\x00\x00\x00\x01\x00\x01^\xa5\
\x00\x00\x01\x8f\xcb\x84\xd9\xfc\ \x00\x00\x01\x8f\xcb\x84\xd9\xfc\
\x00\x00\x04R\x00\x00\x00\x00\x00\x01\x00\x01jg\ \x00\x00\x04R\x00\x00\x00\x00\x00\x01\x00\x01jg\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x04z\x00\x01\x00\x00\x00\x01\x00\x01p,\ \x00\x00\x04z\x00\x01\x00\x00\x00\x01\x00\x01p,\
\x00\x00\x01\x8f\xcf4qQ\ \x00\x00\x01\x8f\xd301\xb9\
\x00\x00\x04\xe2\x00\x01\x00\x00\x00\x01\x00\x01\x81\xcd\ \x00\x00\x05\x1c\x00\x01\x00\x00\x00\x01\x00\x01\x87\x07\
\x00\x00\x01\x8f\xcb\x85\x05&\ \x00\x00\x01\x8f\xcb\x85\x05&\
\x00\x00\x05~\x00\x01\x00\x00\x00\x01\x00\x01\x9e\x01\ \x00\x00\x04\xe2\x00\x00\x00\x00\x00\x01\x00\x01\x81\xde\
\x00\x00\x01\x8f\xd3.\xfb<\
\x00\x00\x05\xb8\x00\x01\x00\x00\x00\x01\x00\x01\xa3;\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x05\xc6\x00\x01\x00\x00\x00\x01\x00\x01\xa3\xfe\ \x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xa98\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x05b\x00\x01\x00\x00\x00\x01\x00\x01\x9a\xfe\ \x00\x00\x05\x9c\x00\x01\x00\x00\x00\x01\x00\x01\xa08\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x05\xa2\x00\x01\x00\x00\x00\x01\x00\x01\xa0\xc0\ \x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xa5\xfa\
\x00\x00\x01\x8f\xc8\xd7c\x19\ \x00\x00\x01\x8f\xc8\xd7c\x19\
" "

View File

@@ -13,6 +13,7 @@ class UIspaceweather(QObject):
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_poseidon_drap_report = Signal(dict)
load_aurora_report = Signal()
update_bottom_bar = Signal(str) update_bottom_bar = Signal(str)
@@ -28,6 +29,7 @@ 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_drap = self._window.findChild(QObject, "spaceWeatherDRAPObj")
self._window_aurora = self._window.findChild(QObject, "spaceWeatherAuroraObj")
self._connect() self._connect()
@@ -41,6 +43,7 @@ class UIspaceweather(QObject):
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_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):
@@ -59,6 +62,7 @@ class UIspaceweather(QObject):
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_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

@@ -53,6 +53,9 @@ Window {
TabButton { TabButton {
text: qsTr("DRAP") text: qsTr("DRAP")
} }
TabButton {
text: qsTr("Aurora")
}
} }
StackLayout { StackLayout {
@@ -77,6 +80,12 @@ Window {
id: 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
}
}
}