diff --git a/artemis.qrc b/artemis.qrc
index d45e4d7..4567b95 100644
--- a/artemis.qrc
+++ b/artemis.qrc
@@ -22,6 +22,7 @@
images/icons/documents.svg
images/icons/abort.svg
images/spectrum_not_available.svg
+ images/artemis_not_available.svg
ui/Artemis.qml
ui/DbManager.qml
@@ -37,6 +38,7 @@
ui/SignalPage.qml
ui/SpaceWeatherCurrentPage.qml
ui/SpaceWeatherForecastPage.qml
+ ui/SpaceWeatherDRAPPage.qml
ui/About.qml
diff --git a/artemis/resources.py b/artemis/resources.py
index 00c3923..3a6dc14 100644
--- a/artemis/resources.py
+++ b/artemis/resources.py
@@ -3122,6 +3122,1296 @@ f\x84\x83Y\xf8p\x1e\x0e4MF\x05D\x01\x87\x01\
\x0c\xa2\x07\x1d\xb8\x8c\xcb\xb8\x04?\xe2H\x94\x9e\xd6\xf7\
\xff\x01\xf66\x1f\xe8_\xafk\xb1\x00\x00\x00\x00IE\
ND\xaeB`\x82\x93\xe4\xf7\x89\
+\x00\x00Pz\
+<\
+svg xmlns=\x22http:\
+//www.w3.org/200\
+0/svg\x22 width=\x2232\
+02.013\x22 height=\x22\
+1392.257\x22 xmlns:\
+v=\x22https://vecta\
+.io/nano\x22>\
\x00\x00\x04\x09\
<\
svg xmlns=\x22http:\
@@ -4116,6 +5406,58 @@ j\x1c\xaf\xc9Xd8\x99\xadZY\x16\x9f\xcd\x16\xd8\
\x13\xad\xcb[\x9a\xae\x14-\x22\x5c*\xb6O\xd98J\
\x22(-\x81\x98\xb7l\xd0\xf4\x11\xd6m\xca\xc0\x9f.\
\xd6\x91\xa6\xff\xfe\x02\xb9y\xac\x1b\
+\x00\x00\x03\x18\
+\x00\
+\x00\x0b\xf1x\xda\xb5Vmo\xda0\x10\xfe>\xa9\xff\
+\xc1\xe2\x0b u\xa1\xeb\xc7H|`\xc0D\xa5Rh\
+\xa0-UUU&9\x88[\xc7Nm\x87\x97m\xfc\
+\xf7\xd9a\xbc$$\xc0\xda\x11\x90\x88s\xcf\x9d\x9f{\
+\xee|\x81\x04!\x17\x0a\xdd\xaa\xdb\x88\xb8og_H\
+bm=\x10\xe6\xf1\xe9\xce\xe3:gJp*s\x0d\
+V\x1b+\x10\x04\xd3\x1d\xc45\x9e\xf3HiO\xf3\xe9\
+\xe21\xa0_g_\x90\xbe\x88g#\x19b\x17\x1e\x00\
++\x1fD\xc3\xa9u\x97\x16\xcc\x5c\x9f\x0bi\x8d\x08\xa5\
+6\x0a\xb1\x00\xa6\x8c\xb7\xb1\xf1\xe1+\xb8\xea\x06\x07`\
+\xa3B\xda\xbd3|-\xac\x80\xa3\x88\xb9\x8ap\x86(\
+\xc7^C\xe0\xd0\x01\xc3\xab\x14r\x09\xc4\xe3\xec\xc5\xc3\
+\x0a\x97Wd\xccE\xf1\x10\xa8\x03.\x9f\x80\x98[\x0a\
+f\x0aUQ\x02\xfeT4\xbb\x14\x9f\x9f\x8a+\x18\xea\
+\x93\x00\x8a\xcf\xa9 \x03\x81\xe7m9>\x10c\xe0\xe0\
+9\xd2\xb0\x1d\xf7\xae\xe0\x8a\xb3\xc3\x01\x96\xb8U\x88M\
+\x10\xd7\x07\xf7\xedN\xd0\xe6\x8cH%K\x05_\xa9P\
+\xda\x95\xcat:\xb5\xb4\x98r\x82)\x85\xb9\xe5\xf2\xa0\
+\xb2\x8e\x0clL\x18T<-\x94\x15\xb2q\xe1|-\
+`\x09\xe20\x09\xa9\xe2\xfa\x8dP\x9e)6\x07\xba\xd6\
+\xdf\xf9\xcc\x92<\x12.\xe8,>\xc4#\x19x\x81\x80\
+J8r\xbbw\xe1\xea\xcd*\xb1EV\xb0P\x10\x10\
+\xf9\xc2\xb8z\xc1\x13L\xb4\xd2\x14,9\xd9\xd9b\xb3\
+\x5c\x94\x97\xf7\x8b\x9d\x9eJ)\x1c\x09z\x8e\x5c\x9d\xcd\
+\x10\xbbo\x095&X\xa0\x99/4\x1d\x06S4h\
+_\xb7\xb4\x06\x0e\xbcG U\xa9\xbc\xc1i\x8c\xc5\x99\
+\x00\xec\xcd\xa5\xd2G\xc9\xf51\x1b\x9b,\xd6U\xc8\xd4\
+\xdf\xb8\xc5N=\xe3\x84\xaa\xd5jj\x0f\xab\xd1\xb9i\
+f\xd6gE7\x8ea\xf6\x8cd\xec\x7fyqQ\xce\
+W$\xc58\x04V*\xb4\x9a\xb5\x86\xee\x97X\x04%\
+\x22H\xa5%\x81y\xa5\xb4\x92uN\xa3\x80-g\xc3\
+6\xbb\xec\xa3\x9f\xb6\x0a2\xf6U\x1b\x0b\xdd*\xb6&\
+\xbc\x0b\xa00\xdak\x1fr\xa5x\xb0\x0f\xa1x\xb8m\
+\xde\x00\xae\x82\xad\x19\xb6\xae\x85\x9ee\xab\x0eLZ\x96\
+)\xc6\xf9\xb4\xc0\xd0\xb6c\x8drA\x0f\xc4S~\x16\
+\xc6\x18\xdb\xdc\xd3c/f`u\xf5\x01\x021\x81\x9a\
+\x0c\xf5@\xfcA\xd46\xc9\xc5\xf6\xc2\xe1\xd3]\xa1\xe3\
+T\xf4\x89\xc8j\x8dc\xe8,\xd2\x19\xe8\xb9\x95\x15\xcb\
+L0\x1b\xbd\xcb\xbe(\x15\x9cf\xbds\xdft\x1eQ\
+\xff\xaa\xdd\xb4\x0b\xe5cv\x1ea}\xe0s\x81\x98\x92\
+1\x0bt\x8f\xd8\xfa}c\xd5\xcc\xaaU\xd7K\x10\xe8\
+\xf7\xfa\xc9\xfd\xf2\xc9\xc7\xf8\x9b\xca&^\x0c'\xe0\x12\
+\x97W\xbfH\xad\x90\x13\xa6z\xe4\xa7.\xf2\xb7\xcb\x1c\
+\xcc\x90S\xef\x88\x82\xfc\xa7\xda\x1e\xd7H\x9fV \x8f\
+U\x12\x9574\x0e\x161\xdd\x88\x83\xafN\xed\x11\xf5\
+\xfa\xb5\xfe]/\xab\x0d\x17\xff\x18{\xdd$\x7f_\xfc\
+\xd9\xa8cJ|\xb0\xcc\x19\xf4\x16i\x9d>Y\xfb\x13\
+\x89\xdeu:\xfd\xce\xcd\x1e\xd5\xf7w\x92c\x86\xe71\
+'\xe9\xc3\xc5[\xff\xed:\x19\xb5\x13wA\xeaV\xff\
+\xe8\xef\x1f\xd9\xc5\x1f}\
\x00\x00\x06\xd4\
\x00\
\x00E\x82x\xda\xed[mo\xda:\x14\xfe>i\xff\
@@ -4619,113 +5961,42 @@ Text\x0d\x0a \
.WordWrap\x0d\x0a \
}\x0d\x0a }\x0d\x0a}\x0d\x0a\
\
-\x00\x00\x06\x8d\
-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\x0aWindo\
-w {\x0d\x0a id: win\
-dowSpaceWeather\x0d\
-\x0a\x0d\x0a width: 10\
-00\x0d\x0a height: \
-700\x0d\x0a\x0d\x0a Compo\
-nent.onCompleted\
-: {\x0d\x0a x =\
- Screen.width / \
-2 - width / 2\x0d\x0a \
- y = Scree\
-n.height / 2 - h\
-eight / 2\x0d\x0a }\
-\x0d\x0a\x0d\x0a modality\
-: Qt.Application\
-Modal\x0d\x0a flags\
-: Qt.Window\x0d\x0a\x0d\x0a \
- title: qsTr(\x22\
-Artemis - Space \
-Weather\x22)\x0d\x0a\x0d\x0a \
- function update\
-BottomBar(messag\
-e) {\x0d\x0a sp\
-aceBottomBar.tex\
-t = message\x0d\x0a \
- }\x0d\x0a\x0d\x0a\x0d\x0a Page\
- {\x0d\x0a anch\
-ors.fill: parent\
-\x0d\x0a\x0d\x0a foot\
-er: Label {\x0d\x0a \
- id: spa\
-ceBottomBar\x0d\x0a \
- font.pi\
-xelSize: 12\x0d\x0a \
- leftPad\
-ding: 5\x0d\x0a \
- rightPaddin\
-g: 5\x0d\x0a \
- bottomPadding:\
- 5\x0d\x0a }\x0d\x0a\x0d\
-\x0a ColumnL\
-ayout {\x0d\x0a \
- anchors.fil\
-l: parent\x0d\x0a\x0d\x0a \
- TabBar \
-{\x0d\x0a \
- id: tabBar\x0d\x0a \
- w\
-idth: parent.wid\
-th\x0d\x0a \
- Layout.fillW\
-idth: true\x0d\x0a\x0d\x0a \
- Ta\
-bButton {\x0d\x0a \
- t\
-ext: qsTr(\x22Curre\
-nt\x22)\x0d\x0a \
- }\x0d\x0a \
- TabButt\
-on {\x0d\x0a \
- text: \
-qsTr(\x22Forecasts\x22\
-)\x0d\x0a \
- }\x0d\x0a \
- }\x0d\x0a\x0d\x0a \
- StackLayout {\
-\x0d\x0a \
- currentIndex: \
-tabBar.currentIn\
-dex\x0d\x0a \
- Layout.fill\
-Height: true\x0d\x0a \
- La\
-yout.fillWidth: \
-true\x0d\x0a\x0d\x0a \
- Item {\x0d\x0a\
- \
- SpaceWeather\
-CurrentPage {\x0d\x0a \
- \
- id: space\
-WeatherCurrentPa\
-ge\x0d\x0a \
- }\x0d\x0a \
- }\x0d\x0a\x0d\x0a\
- \
-Item {\x0d\x0a \
- Spac\
-eWeatherForecast\
-Page {\x0d\x0a \
- \
-id: spaceWeather\
-ForecastPage\x0d\x0a \
- \
- }\x0d\x0a \
- }\x0d\x0a \
- }\x0d\x0a }\
-\x0d\x0a }\x0d\x0a}\x0d\x0a\
+\x00\x00\x02\x19\
+\x00\
+\x00\x07\x87x\xda\xbdT\xddk\xdb0\x10\x7f\x0f\xe4\x7f\
+\x10}j\x1f\xe6\xa5\x8510\xf4!\xcd\x18+\xb4\x90\
+.\x85<+\xf69\x16\x95%O:\x93d\xc3\xff\xfb\
+\xf4a%\xb6\xe3lM\xcbv\xf8A\xba\xfb\xdd\xdd\xef\
+>,V\x94R!y\xc2\xa7\x8a%/\xe3\x11\xeb\xdc\
+\xa3%\x13\xa9\xdc\x1c\xa9gR\xa0\x92\x5c\x9f4D\x8f\
+\x14A1\xca\x8f\x10\x0ft'+4\x9e\xe3\x91\x0fN\
+~\x8dG\xc4\x08Kc\xb2q\x9aEI\x13X\x02\xc5\
+\x1c\x94\xc5Y\xeb\x86\xa5\x98\xc7\xe4z2\x99xE\x0e\
+l\x9dcL>[\x85W\xcd\xa4I%@`$\x85\
+=s@0A\x9b\xf8V\xb6\xe4\x96,\x12\x05 \x22\
+\x17\x90|$7\xe4\x03\xd9\x9f\x0f\xc8\xdd\x01\xe935\
+\xd0\xc3\xc5c\xeb\x90\xbc\x90)\xe5\x0cw\xb1\xa94\x9a\
+\x96%g\x09E&\xc5\xa3\xd5{H\xc6\xe9Z;{\
+h\xab\xd7#C\x0e1\xf9\xa1\x9f\xd5\xe5\xc5T!\x14\
+L\x9bT\xae\x0d\xa4\xe9\xc3\xc5U@g\x95Hl`\
+R\x95\xa9i\xf2\x9dD\x94\xc5\x1dU\x97\x05hM\xd7\
+p\xd5.X\xdb\x18{H\x84\xb0ESX\x83lU\
+\xe0\x8fs\xa3l{S\x91\xe4R\xe9(c\x9c\xc7\xa4\
+\xa4\xca\xf46`\x1d\x15)\xcd\x94c\xf2@W\xc0\xdb\
+\x8ea\x9e\xdd\xf4]{fV%*\xd9\x16\xf8\x82\xfd\
+4\xe5_\xdft\xed\x1c2\x9c\xd34eb\x1d\x93O\
+]\x9b\xb2C8e\x5c\xb9|C\xd6\xbaM~&y\
+U\x08\xbf\x8e}\xee\x7f+\xdc\xca3]\x99\x9a\xfa\x9e\
+\xa1rt\xd6c[\xb3\xc7>\xa4_\xc2c\x90'\xe5\
+\xb2/=\x1eU\x05}\x02\x81De\xca\x15C<\xdc\
+n\x99\x89\x87\xd5\x9aU\xcaf\xb5\xab\xd4\x87\xd5\xef\x0c\
+\xfdU*H\xa8F\xfd/\x82\x7f\xf9>\x9d\xbf\x22n\
+\xddo\xd0\x02i\xf22<`+\x89o\xc7\xbdHa\
+\x1b\x06\x16\xb5\x95\x7f\x1c\xcc\xb7\xe6\xfd\xf1\x93y\xfb\x04\
+\xef\xcd\xef~\xaa\x09\xed\x87\xb0\x19^\xff\x17\x1d\xda=\
+=\xec6\xecT\x0f\xf6\xf5\xed<\xc3&\x9cK\xb4\xed\
+\xf7\x7f\x98\xda\xb5:\x97e\xf09\x87\xe1\x89k\xbd\x7f\
+~\xcd\xf7\x1b\xf1b\xd4\xe4\
\x00\x00\x08\xdf\
\x00\
\x00[\x00x\xda\xed\x5cmo\xdb\xb6\x16\xfe>`\xff\
@@ -5609,6 +6880,11 @@ qt_resource_name = b"\
\x02\xfaB\xdf\
\x00a\
\x00r\x00t\x00e\x00m\x00i\x00s\x00_\x00i\x00c\x00o\x00n\x00.\x00i\x00c\x00o\
+\x00\x19\
+\x0a\xec\xd1\x87\
+\x00a\
+\x00r\x00t\x00e\x00m\x00i\x00s\x00_\x00n\x00o\x00t\x00_\x00a\x00v\x00a\x00i\x00l\
+\x00a\x00b\x00l\x00e\x00.\x00s\x00v\x00g\
\x00\x0f\
\x07\x9a\x02\x07\
\x00p\
@@ -5695,6 +6971,11 @@ qt_resource_name = b"\
\x00S\
\x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00F\x00o\x00r\x00e\x00c\
\x00a\x00s\x00t\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
+\x00\x18\
+\x01-\xec\xdc\
+\x00S\
+\x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00D\x00R\x00A\x00P\x00P\
+\x00a\x00g\x00e\x00.\x00q\x00m\x00l\
\x00\x1b\
\x03\xae7\xfc\
\x00S\
@@ -5763,11 +7044,11 @@ qt_resource_name = b"\
qt_resource_struct = b"\
\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\x02\x00\x00\x00\x0f\x00\x00\x00\x18\
+\x00\x00\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x19\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x0a\x00\x02\x00\x00\x00\x04\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\x1c\x00\x02\x00\x00\x00\x11\x00\x00\x00\x07\
+\x00\x00\x00\x1c\x00\x02\x00\x00\x00\x11\x00\x00\x00\x08\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x8f\xc8\xd7c\x19\
@@ -5775,77 +7056,81 @@ qt_resource_struct = b"\
\x00\x00\x01\x8f\xc8\xd7c\x15\
\x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x00Xk\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01\xc0\x00\x00\x00\x00\x00\x01\x00\x00\xd2K\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\xc8\x9e\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x00\xd1/\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x02|\x00\x00\x00\x00\x00\x01\x00\x00\xe2\x16\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x02f\x00\x00\x00\x00\x00\x01\x00\x00\xdf\xff\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\xc9\xfc\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01\xe0\x00\x00\x00\x00\x00\x01\x00\x00\xd3\xbd\
-\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\xc2Z\
+\x00\x00\x01\x8f\xcf\xcb\xb7\x93\
+\x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x01\x22\xc9\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01\xf6\x00\x00\x00\x00\x00\x01\x00\x00\xd5\xf9\
+\x00\x00\x014\x00\x00\x00\x00\x00\x01\x00\x01\x19\x1c\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x020\x00\x00\x00\x00\x00\x01\x00\x00\xdb\x0a\
+\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x01!\xad\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x02\xb4\x00\x00\x00\x00\x00\x01\x00\x012\x94\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x02\x9e\x00\x00\x00\x00\x00\x01\x00\x010}\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x01Z\x00\x00\x00\x00\x00\x01\x00\x01\x1az\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x01$;\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x00\xea\x00\x00\x00\x00\x00\x01\x00\x01\x12\xd8\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x02.\x00\x00\x00\x00\x00\x01\x00\x01&w\
+\x00\x00\x01\x8f\xc8\xd7c\x16\
+\x00\x00\x02h\x00\x00\x00\x00\x00\x01\x00\x01+\x88\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xe4&\
+\x00\x00\x02\xd8\x00\x00\x00\x00\x00\x01\x00\x014\xa4\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x01x\x00\x00\x00\x00\x00\x01\x00\x00\xcfB\
+\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x1f\xc0\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x02J\x00\x00\x00\x00\x00\x01\x00\x00\xdcf\
+\x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x01,\xe4\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x02\x0a\x00\x00\x00\x00\x00\x01\x00\x00\xd8_\
+\x00\x00\x02B\x00\x00\x00\x00\x00\x01\x00\x01(\xdd\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01:\x00\x00\x00\x00\x00\x01\x00\x00\xcc\x1a\
+\x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x01^\x00\x00\x00\x00\x00\x01\x00\x00\xcd\x12\
+\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x01\x00\x00\xc6g\
+\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\
\x00\x00\x01\x8f\xc8\xd7c\x16\
-\x00\x00\x03\x90\x00\x01\x00\x00\x00\x01\x00\x01\x04\x88\
+\x00\x00\x03\x8c\x00\x01\x00\x00\x00\x01\x00\x01N.\
+\x00\x00\x01\x8f\xcf\xcd\xa1A\
+\x00\x00\x03\xfe\x00\x01\x00\x00\x00\x01\x00\x01X\x22\
\x00\x00\x01\x8f\xcb\x85\x0fz\
-\x00\x00\x03T\x00\x01\x00\x00\x00\x01\x00\x00\xfd\xb0\
+\x00\x00\x03\xc2\x00\x01\x00\x00\x00\x01\x00\x01QJ\
\x00\x00\x01\x8f\xcf\x1c*%\
-\x00\x00\x02\xb6\x00\x01\x00\x00\x00\x01\x00\x00\xe5\xfd\
+\x00\x00\x02\xee\x00\x01\x00\x00\x00\x01\x00\x016{\
\x00\x00\x01\x8f\xcb\x84\x8f\xb2\
-\x00\x00\x02\xe0\x00\x01\x00\x00\x00\x01\x00\x00\xebQ\
+\x00\x00\x03\x18\x00\x01\x00\x00\x00\x01\x00\x01;\xcf\
\x00\x00\x01\x8f\xcb\x849\xd5\
-\x00\x00\x04\xdc\x00\x00\x00\x00\x00\x01\x00\x01F(\
+\x00\x00\x05J\x00\x00\x00\x00\x00\x01\x00\x01\x95N\
\x00\x00\x01\x8f\xcb\x83\x89\xfd\
-\x00\x00\x03\x16\x00\x01\x00\x00\x00\x01\x00\x00\xf5A\
+\x00\x00\x03N\x00\x01\x00\x00\x00\x01\x00\x01E\xbf\
\x00\x00\x01\x8f\xcb\x86T\x18\
-\x00\x00\x04\xba\x00\x00\x00\x00\x00\x01\x00\x01@y\
+\x00\x00\x05(\x00\x00\x00\x00\x00\x01\x00\x01\x8f\x9f\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x02\xfc\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\x042\x00\x01\x00\x00\x00\x01\x00\x01##\
+\x00\x00\x04\xa0\x00\x01\x00\x00\x00\x01\x00\x01rI\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x016\x9b\
+\x00\x00\x05\x06\x00\x01\x00\x00\x00\x01\x00\x01\x85\xc1\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x04T\x00\x01\x00\x00\x00\x01\x00\x01,\x06\
+\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x01{,\
\x00\x00\x01\x8f\xcb\x83z\xd6\
-\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x01\x0b\x0b\
+\x00\x00\x04$\x00\x01\x00\x00\x00\x01\x00\x01^\xa5\
\x00\x00\x01\x8f\xcb\x84\xd9\xfc\
-\x00\x00\x03\xe4\x00\x00\x00\x00\x00\x01\x00\x01\x16\xcd\
+\x00\x00\x04R\x00\x00\x00\x00\x00\x01\x00\x01jg\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x04\x0c\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x92\
-\x00\x00\x01\x8f\xcb\x85;\x83\
-\x00\x00\x04t\x00\x01\x00\x00\x00\x01\x00\x012\xa7\
+\x00\x00\x04z\x00\x01\x00\x00\x00\x01\x00\x01p,\
+\x00\x00\x01\x8f\xcf4qQ\
+\x00\x00\x04\xe2\x00\x01\x00\x00\x00\x01\x00\x01\x81\xcd\
\x00\x00\x01\x8f\xcb\x85\x05&\
-\x00\x00\x05\x10\x00\x01\x00\x00\x00\x01\x00\x01N\xdb\
+\x00\x00\x05~\x00\x01\x00\x00\x00\x01\x00\x01\x9e\x01\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x05X\x00\x01\x00\x00\x00\x01\x00\x01T\xd8\
+\x00\x00\x05\xc6\x00\x01\x00\x00\x00\x01\x00\x01\xa3\xfe\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x04\xf4\x00\x01\x00\x00\x00\x01\x00\x01K\xd8\
+\x00\x00\x05b\x00\x01\x00\x00\x00\x01\x00\x01\x9a\xfe\
\x00\x00\x01\x8f\xc8\xd7c\x19\
-\x00\x00\x054\x00\x01\x00\x00\x00\x01\x00\x01Q\x9a\
+\x00\x00\x05\xa2\x00\x01\x00\x00\x00\x01\x00\x01\xa0\xc0\
\x00\x00\x01\x8f\xc8\xd7c\x19\
"
diff --git a/artemis/ui/spaceweather.py b/artemis/ui/spaceweather.py
index bee8164..507086c 100644
--- a/artemis/ui/spaceweather.py
+++ b/artemis/ui/spaceweather.py
@@ -12,6 +12,7 @@ class UIspaceweather(QObject):
show_ui = Signal()
load_poseidon_report = Signal(dict)
load_poseidon_forecast_report = Signal(dict)
+ load_poseidon_drap_report = Signal(dict)
update_bottom_bar = Signal(str)
@@ -26,6 +27,7 @@ class UIspaceweather(QObject):
self._window_current = self._window.findChild(QObject, "spaceWeatherCurrentObj")
self._window_forecast = self._window.findChild(QObject, "spaceWeatherForecastObj")
+ self._window_drap = self._window.findChild(QObject, "spaceWeatherDRAPObj")
self._connect()
@@ -38,6 +40,7 @@ class UIspaceweather(QObject):
self.update_bottom_bar.connect(self._window.updateBottomBar)
self.load_poseidon_report.connect(self._window_current.loadReport)
self.load_poseidon_forecast_report.connect(self._window_forecast.loadForecastReport)
+ self.load_poseidon_drap_report.connect(self._window_drap.loadDrapReport)
def load_spaceweather_ui(self):
@@ -55,6 +58,7 @@ class UIspaceweather(QObject):
if poseidon_data:
self.load_poseidon_report.emit(poseidon_data)
self.load_poseidon_forecast_report.emit(poseidon_data)
+ self.load_poseidon_drap_report.emit(poseidon_data)
self.update_bottom_bar.emit(
'Loaded Poseidon report issued on {} at {} UTC'.format(
diff --git a/images/artemis_not_available.svg b/images/artemis_not_available.svg
new file mode 100644
index 0000000..7bbd6dd
--- /dev/null
+++ b/images/artemis_not_available.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/ui/SpaceWeather.qml b/ui/SpaceWeather.qml
index 0d56b81..1f24a46 100644
--- a/ui/SpaceWeather.qml
+++ b/ui/SpaceWeather.qml
@@ -50,6 +50,9 @@ Window {
TabButton {
text: qsTr("Forecasts")
}
+ TabButton {
+ text: qsTr("DRAP")
+ }
}
StackLayout {
@@ -68,6 +71,12 @@ Window {
id: spaceWeatherForecastPage
}
}
+
+ Item {
+ SpaceWeatherDRAPPage {
+ id: spaceWeatherDRAPPage
+ }
+ }
}
}
}
diff --git a/ui/SpaceWeatherDRAPPage.qml b/ui/SpaceWeatherDRAPPage.qml
new file mode 100644
index 0000000..b3ecd73
--- /dev/null
+++ b/ui/SpaceWeatherDRAPPage.qml
@@ -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
+ }
+ }
+ }
+ }
+}