Compare commits
5 Commits
353f073d12
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| e1a3b498e5 | |||
| 9e1ebebeb2 | |||
| 2af30f3a32 | |||
| f3ccaaefd8 | |||
| a15aee1da6 |
12
README.md
12
README.md
@@ -1,6 +1,6 @@
|
|||||||
# survBot
|
# survBot
|
||||||
|
|
||||||
version: 0.1
|
version: 0.2
|
||||||
|
|
||||||
survBot is a small program used to track station quality channels of DSEBRA stations via PowBox output over SOH channels
|
survBot is a small program used to track station quality channels of DSEBRA stations via PowBox output over SOH channels
|
||||||
by analysing contents of a Seiscomp3 datapath.
|
by analysing contents of a Seiscomp3 datapath.
|
||||||
@@ -40,8 +40,16 @@ The GUI can be loaded via
|
|||||||
python survBotGui.py
|
python survBotGui.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Version Changes
|
||||||
|
- surveillance of mass, clock and gaps
|
||||||
|
- individual mailing lists for different stations
|
||||||
|
- html mail with recent status information
|
||||||
|
- updated web page design
|
||||||
|
- restructured parameter file
|
||||||
|
- recognize if PBox is disconnected
|
||||||
|
|
||||||
## Staff
|
## Staff
|
||||||
|
|
||||||
Original author: M.Paffrath (marcel.paffrath@rub.de)
|
Original author: M.Paffrath (marcel.paffrath@rub.de)
|
||||||
|
|
||||||
November 2022
|
June 2023
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# survBot is a small program used to track station quality channels of DSEBRA stations via PowBox output
|
||||||
|
# over SOH channels by analysing contents of a Seiscomp3 datapath.
|
||||||
|
__version__ = "0.2"
|
||||||
|
|||||||
@@ -3,27 +3,23 @@ body {
|
|||||||
place-items: center;
|
place-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-bottom: 30px;
|
padding-bottom: 30px;
|
||||||
font-family: "Helvetica", "sans-serif"
|
font-family: "Helvetica", "sans-serif";
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
position: relative
|
position: relative
|
||||||
}
|
}
|
||||||
|
|
||||||
#managerTable {
|
|
||||||
max-height: 800px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
td {
|
||||||
border-radius: 4px;
|
border-radius: 2px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
background-color: #999;
|
background-color: #999;
|
||||||
border-radius: 4px;
|
color: #fff;
|
||||||
|
border-radius: 2px;
|
||||||
padding: 3px 1px;
|
padding: 3px 1px;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -35,7 +31,7 @@ a:link, a:visited {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: block;
|
display: block;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid #bbb;
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
|
|||||||
@@ -3,37 +3,35 @@ body {
|
|||||||
place-items: center;
|
place-items: center;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-bottom: 30px;
|
padding-bottom: 30px;
|
||||||
font-family: "Helvetica", "sans-serif"
|
font-family: "Helvetica", "sans-serif";
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
position: relative
|
position: relative
|
||||||
}
|
}
|
||||||
|
|
||||||
#managerTable {
|
|
||||||
max-height: 800px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
td {
|
||||||
border-radius: 4px;
|
border-radius: 3px;
|
||||||
padding: 10px 2px;
|
padding: 10px 2px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
background-color: #999;
|
background-color: #999;
|
||||||
border-radius: 4px;
|
color: #fff;
|
||||||
|
border-radius: 3px;
|
||||||
padding: 10px, 2px;
|
padding: 10px, 2px;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:link {
|
a:link, a:visited {
|
||||||
background-color: #e8e8e8;
|
background-color: #e8e8e8;
|
||||||
color: #000;
|
color: #000;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: block;
|
display: block;
|
||||||
border-radius: 4px;
|
border-radius: 6px;
|
||||||
border: 1px solid #bbb;
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
@@ -49,9 +47,9 @@ a:hover {
|
|||||||
animation: blinkingBackground 2s infinite;
|
animation: blinkingBackground 2s infinite;
|
||||||
}
|
}
|
||||||
@keyframes blinkingBackground{
|
@keyframes blinkingBackground{
|
||||||
0% { background-color: #ffee00;}
|
0% { background-color: #ffcc00;}
|
||||||
50% { background-color: #ff3200;}
|
50% { background-color: #ff3200;}
|
||||||
100% { background-color: #ffee00;}
|
100% { background-color: #ffcc00;}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
|
|||||||
2
utils.py
2
utils.py
@@ -66,7 +66,7 @@ def get_time_delay_color(dt, dt_thresh):
|
|||||||
|
|
||||||
|
|
||||||
def get_warn_color(count, n_colors=20):
|
def get_warn_color(count, n_colors=20):
|
||||||
if count > n_colors:
|
if count >= n_colors:
|
||||||
count = -1
|
count = -1
|
||||||
gradient = np.linspace((240, 245, 110, 255), (250, 192, 63, 255), n_colors, dtype=int)
|
gradient = np.linspace((240, 245, 110, 255), (250, 192, 63, 255), n_colors, dtype=int)
|
||||||
return tuple(gradient[count])
|
return tuple(gradient[count])
|
||||||
|
|||||||
Reference in New Issue
Block a user