Skip to content

Commit

Permalink
Improve GOTO conditions tooltips.
Browse files Browse the repository at this point in the history
  • Loading branch information
pchote committed Dec 6, 2023
1 parent 656eedc commit 5bbad1b
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 34 deletions.
12 changes: 6 additions & 6 deletions dashboard/templates/overview.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,12 @@
</div>
<div class="col-lg-3 col-md-6 col-xs-12 g-2">
<div class="list-group rounded-0">
<span class="list-group-item" data-index='["superwasp_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">SuperWASP</span>
<span class="list-group-item" data-index='["clasp_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">CLASP</span>
<span class="list-group-item" data-index='["onemetre_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">W1m</span>
<span class="list-group-item" data-index='["halfmetre_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">0.5m</span>
<span class="list-group-item" data-index='["goto1_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">GOTO1</span>
<span class="list-group-item" data-index='["goto2_ops"]' data-generator="opsStatus" data-bs-toggle="tooltip" data-bs-placement="left">GOTO2</span>
<span class="list-group-item" data-index='["superwasp_ops"]' data-generator="rockitStatus" data-bs-toggle="tooltip" data-bs-placement="left">SuperWASP</span>
<span class="list-group-item" data-index='["clasp_ops"]' data-generator="rockitStatus" data-bs-toggle="tooltip" data-bs-placement="left">CLASP</span>
<span class="list-group-item" data-index='["onemetre_ops"]' data-generator="rockitStatus" data-bs-toggle="tooltip" data-bs-placement="left">W1m</span>
<span class="list-group-item" data-index='["halfmetre_ops"]' data-generator="rockitStatus" data-bs-toggle="tooltip" data-bs-placement="left">0.5m</span>
<span class="list-group-item" data-index='["goto1_ops"]' data-generator="gotoStatus" data-bs-toggle="tooltip" data-bs-placement="left">GOTO1</span>
<span class="list-group-item" data-index='["goto2_ops"]' data-generator="gotoStatus" data-bs-toggle="tooltip" data-bs-placement="left">GOTO2</span>
</div>
<span class="m-0 text-center list-group-item" id="data-updated">Loading...</span>
</div>
Expand Down
58 changes: 52 additions & 6 deletions static/dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,14 +172,11 @@ function seeingIfAvailable(row, cell, data) {
}
}

function opsConditionsTooltip(row, data) {
function rockitConditionsTooltip(row, data) {
const status_classes = ['', 'text-success', 'text-warning', 'text-danger'];
let tooltip = '<table style="margin: 5px">';
let rows = 0;
for (let c in data['conditions']) {
if (!(c in data['conditions']))
continue;

tooltip += '<tr><td style="text-align: right;">' + c + ':</td>';
const params = data['conditions'][c];
for (let p in params)
Expand All @@ -203,7 +200,48 @@ function opsConditionsTooltip(row, data) {
});
}

function opsStatus(row, cell, data) {
function gotoConditionsTooltip(row, data) {
const status_classes = ['', 'text-success', 'text-warning', 'text-danger'];
const status_labels = ['UNKNOWN', 'SAFE', 'WARN', 'UNSAFE'];

let tooltip = '<table style="margin: 5px">';
let i = 0;
let rows = 0;
for (let c in data['conditions']) {
if (i++ === 0)
tooltip += '<tr>';

const p = data['conditions'][c];
tooltip += '<td style="text-align: right;">' + c + ':</td>';
tooltip += '<td style="padding: 0 5px" class="' + status_classes[p] + '">' + status_labels[p] + '</td>';

if (i === 2) {
tooltip += '</tr>';
rows += 1;
i = 0;
}
}

if (i !== 0) {
tooltip += '</tr>';
rows += 1;
}

if (rows === 0)
tooltip += '<tr><td style="text-align: center;">NO DATA</td></tr>'
tooltip += '</table>';

row.tooltip({
title: tooltip,
html: true,
sanitize: false,
animation: false,
container: 'body',
customClass: 'ops-tooltip'
});
}

function opsStatus(row, cell, data, makeTooltip) {
if ('safe' in data && 'conditions' in data && 'dome_closed' in data && 'dome_auto' in data) {
const mode_class = data['dome_auto'] ? 'text-success' : 'text-warning';
const mode_label = data['dome_auto'] ? 'AUTO' : 'MANUAL';
Expand All @@ -215,9 +253,17 @@ function opsStatus(row, cell, data) {
label += '&nbsp;(<span class="text-danger">ENV</span>)';

cell.html(label);
opsConditionsTooltip(row, data);
makeTooltip(row, data);
} else {
cell.html('NO DATA');
cell.addClass('text-danger');
}
}

function rockitStatus(row, cell, data) {
opsStatus(row, cell, data, rockitConditionsTooltip)
}

function gotoStatus(row, cell, data) {
opsStatus(row, cell, data, gotoConditionsTooltip)
}
33 changes: 18 additions & 15 deletions static/goto-dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ function conditionFlags(row, cell, data) {
'ice': 'Ice',
'dew_point': 'Dew&nbsp;Point',
'rain': 'Rain',
'sky_temp': 'Sky&nbsp;Temp',
'ups': 'UPS&nbsp;Status',
'diskspace': 'Disk&nbsp;Space',
'link': 'Network',
'hatch': 'Dome&nbsp;Hatch',
'override': 'Override',
'clouds': 'Clouds',
'dark': 'Dark',
'dust': 'Dust'
}
Expand All @@ -84,24 +84,27 @@ function conditionFlags(row, cell, data) {
let safe = true;
let tooltip = '<table style="margin: 15px">';
let i = 0;
let info_flags = Object.values(data['info_flags']);
for (let c in data['flags']) {
if (i++ === 0)
tooltip += '<tr>';
if (c === 'clouds')
continue;

tooltip += '<td style="text-align: right;">' + (c in labels ? labels[c] : c) + ':</td>';
if (c in data['critical_flags']) {
if (data['flags'][c] === 1)
safe = false;
if (i++ === 0)
tooltip += '<tr>';

tooltip += '<td style="padding: 0 5px; text-align: left" class="' + status_classes[data['flags'][c]] + '">' + (data['flags'][c] === 0 ? 'SAFE' : 'UNSAFE') + '</td>';
} else {
tooltip += '<td style="padding: 0 5px; text-align: left" class="' + info_status_classes[data['flags'][c]] + '">' + (data['flags'][c] === 0 ? 'SAFE' : 'WARN') + '</td>';
}
tooltip += '<td style="text-align: right;">' + (c in labels ? labels[c] : c) + ':</td>';
if (data['ignored_flags'].includes(c) || info_flags.includes(c)) {
tooltip += '<td style="padding: 0 5px; text-align: left" class="' + info_status_classes[data['flags'][c]] + '">' + (data['flags'][c] === 0 ? 'SAFE' : 'WARN') + '</td>';
} else {
if (data['flags'][c] === 1)
safe = false;
tooltip += '<td style="padding: 0 5px; text-align: left" class="' + status_classes[data['flags'][c]] + '">' + (data['flags'][c] === 0 ? 'SAFE' : 'UNSAFE') + '</td>';
}

if (i === 2) {
tooltip += '</tr>';
i = 0;
}
if (i === 2) {
tooltip += '</tr>';
i = 0;
}
}

tooltip += '</table>';
Expand Down
2 changes: 1 addition & 1 deletion static/rockit-dashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function opsConditions(row, cell, data) {
if ('safe' in data && 'conditions' in data) {
cell.html(data['safe'] ? 'SAFE' : 'NOT SAFE');
cell.addClass(data['safe'] ? 'text-success' : 'text-danger');
opsConditionsTooltip(row, data);
rockitConditionsTooltip(row, data);
} else {
cell.html('NO DATA');
cell.addClass('text-danger');
Expand Down
20 changes: 14 additions & 6 deletions update-dashboard-overview
Original file line number Diff line number Diff line change
Expand Up @@ -143,11 +143,11 @@ def generate_json(output_path, date):
'ice': 'Ice',
'dew_point': 'Dew&nbsp;Point',
'rain': 'Rain',
'sky_temp': 'Sky&nbsp;Temp',
'ups': 'UPS&nbsp;Status',
'diskspace': 'Disk&nbsp;Space',
'link': 'Network',
'override': 'Override',
'clouds': 'Clouds',
'dark': 'Dark',
'dust': 'Dust'
}
Expand All @@ -159,16 +159,24 @@ def generate_json(output_path, date):
'dome_closed': dome_data.get('dome', None) == 'closed',
'dome_auto': dome_data.get('mode') == 'robotic',
'safe': not dome_data.get('conditions_bad', True),
'observable': not dome_data.get('conditions_bad', True) and conditions_data.get('flags', {}).get('dark', 1) == 0,
'observable': not dome_data.get('lockdown', True),
'conditions': {}
}

info = conditions_data.get('info_flags', [])
ignored = conditions_data.get('ignored_flags', [])
for flag, value in conditions_data.get('flags', {}).items():
safe = 1 if value == 0 else 3
if flag in ignored:
safe = 0
if flag == 'clouds':
continue

if value == 0:
safe = 1
elif flag in ignored or flag in info:
safe = 2
else:
safe = 3

output[f'{key}_ops']['conditions'][goto_flags.get(flag, flag)] = {'SAFE': safe}
output[f'{key}_ops']['conditions'][goto_flags.get(flag, flag)] = safe
try:
with gzip.open(output_path + '.tmp', 'w') as output_file:
output_file.write(json.dumps(output or {}).encode('utf-8'))
Expand Down

0 comments on commit 5bbad1b

Please sign in to comment.