Refacter transmitter_card fields and kaitai struct decoder info
Removes the field.html include - and the frequent inclusion of that in the transmitter cards. Fix a bug in satellite.js where input not recognized as an integer Add gitlab links to the version info Removes the manually-entered kaitai struct field from view (will need removed from db in a later change) - replacing with a procedurally generated list of fields from the class imported through satnogsdecoders. Fixes #385 Signed-off-by: Corey Shields <cshields@gmail.com>spacecruft
parent
faa38e3960
commit
ff3d88001e
|
@ -4,6 +4,7 @@ from os import path
|
|||
from uuid import uuid4
|
||||
|
||||
import h5py
|
||||
import satnogsdecoders
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ValidationError
|
||||
|
@ -488,6 +489,18 @@ class Telemetry(models.Model):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
def get_kaitai_fields(self):
|
||||
"""Return an empty-value dict of fields for this kaitai.io struct
|
||||
Beware the overuse of "decoder" in satnogsdecoders and "decoder" the
|
||||
field above in this Telemetry model"""
|
||||
results = {}
|
||||
try:
|
||||
decoder_class = getattr(satnogsdecoders.decoder, self.decoder.capitalize())
|
||||
results = satnogsdecoders.decoder.get_fields(decoder_class, empty=True)
|
||||
except AttributeError:
|
||||
pass
|
||||
return results
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class DemodData(models.Model):
|
||||
|
|
|
@ -81,7 +81,8 @@ function freq_to_ppb(freq_obs, freq) {
|
|||
}
|
||||
}
|
||||
|
||||
function format_freq(frequency) {
|
||||
function format_freq(freq) {
|
||||
var frequency = +freq;
|
||||
if (frequency < 1000) {
|
||||
// Frequency is in Hz range
|
||||
return frequency.toFixed(3) + ' Hz';
|
||||
|
|
|
@ -161,9 +161,9 @@
|
|||
</nav>
|
||||
<div class="satnogs-sidebar-footer text-center">
|
||||
<span>
|
||||
{{ version }}
|
||||
<a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-db" target="_blank">{{ version }} <i class="fab fa-gitlab"></i></a>
|
||||
<br>
|
||||
{{ decoders_version }}
|
||||
<a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-decoders" target="_blank">{{ decoders_version }} <i class="fab fa-gitlab"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="satnogs-sidebar-footer text-center">
|
||||
|
|
|
@ -272,25 +272,28 @@
|
|||
{% for telemetry in satellite.telemetries.all %}
|
||||
<div class="col-12 col-md-6 my-2">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center no-gutters">
|
||||
<div class="col mr-2">
|
||||
<div class="font-weight-bold h5 mb-1"><span>Decoder:
|
||||
{{ telemetry.name }}</span></div>
|
||||
</div>
|
||||
<div class="card-header">
|
||||
<div class="satellite-title">
|
||||
<i class="fas fa-code"></i>
|
||||
Decoder: {{ telemetry.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="col-12">
|
||||
{% include "includes/field.html" with name="Decoder Script" value=telemetry.decoder %}
|
||||
<div class="row transmitter-element">
|
||||
<div class="col-md-6">
|
||||
<span class="badge badge-secondary satellite-detail-badge">Decoder Struct</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-sm-4">Script Name</dt>
|
||||
<dd class="col-sm-8">{{ telemetry.decoder }}</dd>
|
||||
</dl>
|
||||
<dl class="row mb-0">
|
||||
<dt class="col-sm-4">
|
||||
Decoder Fields
|
||||
</dt>
|
||||
<dd class="col-sm-8">
|
||||
<a href="#" data-toggle="modal" data-target="#StructModal-{{ telemetry.id }}">
|
||||
Click here
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -301,23 +304,25 @@
|
|||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title" id="StructModalLabel">Kaitai Struct for {{ telemetry.name }}</h4>
|
||||
<h4 class="modal-title" id="StructModalLabel">Kaitai decoder fields for {{ telemetry.name }}</h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{% if not telemetry.schema == '' %}
|
||||
<div class="kaitai-header">
|
||||
See <a href="http://kaitai.io" target="_blank">kaitai.io</a> for more information on the format
|
||||
See <a href="http://kaitai.io" target="_blank">kaitai.io <i class="fas fa-external-link-alt fa-xs"></i></a> for more information on the format
|
||||
and <a href="https://gitlab.com/librespacefoundation/satnogs/satnogs-decoders" target="_blank">
|
||||
the satnogs-decoders repository</a> for the most recent decoders.
|
||||
the satnogs-decoders repository <i class="fas fa-external-link-alt fa-xs"></i></a> for the most recent decoders.
|
||||
</div>
|
||||
<div class="kaitai-struct">
|
||||
<pre>{{ telemetry.schema }}</pre>
|
||||
<div class="kaitai-struct m-2">
|
||||
{% for field in telemetry.get_kaitai_fields %}
|
||||
<code>{{ field }}</code><br/>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div>
|
||||
Struct format appears to be missing.
|
||||
Struct fields appear to be missing.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -331,14 +336,13 @@
|
|||
{% else %}
|
||||
<div class="col-12 col-md-6 my-2">
|
||||
<div class="card">
|
||||
<div class="card-body transmitter-card-body">
|
||||
<div class="row align-items-center no-gutters">
|
||||
<div class="col mr-2">
|
||||
<div class="text-uppercase text-satnogs-primary font-weight-bold h6 mb-1"><span>No Decoders
|
||||
Found</span></div>
|
||||
</div>
|
||||
<div class="col-auto"><i class="fas fa-exclamation-circle fa-2x text-satnogs-inactive"></i></div>
|
||||
<div class="card-header">
|
||||
<div class="satellite-title">
|
||||
<i class="fas fa-code"></i>
|
||||
No Decoders Found
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="col-12">
|
||||
<span>Help us develop a decoder, you can find instructions at this <a
|
||||
href="https://wiki.satnogs.org/Adding_a_new_data_decoder" target="_blank">wiki link</a></span>
|
||||
|
|
|
@ -46,68 +46,56 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="col-12">
|
||||
{% if transmitter.type %}
|
||||
{% include "includes/field.html" with name="Type" value=transmitter.type %}
|
||||
{% endif %}
|
||||
{% if transmitter.service %}
|
||||
{% include "includes/field.html" with name="Service" value=transmitter.service %}
|
||||
<dl class="row">
|
||||
<dt class="col-sm-6">Type</dt>
|
||||
<dd class="col-sm-6">{{ transmitter.type }}</dd>
|
||||
{% if transmitter.service and transmitter.service != 'Unknown' %}
|
||||
<dt class="col-sm-6">Service</dt>
|
||||
<dd class="col-sm-6">{{ transmitter.service }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_mode %}
|
||||
{% include "includes/field.html" with name="Downlink Mode" value=transmitter.downlink_mode %}
|
||||
<dt class="col-sm-6">Downlink Mode</dt>
|
||||
<dd class="col-sm-6">{{ transmitter.downlink_mode }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_mode %}
|
||||
{% include "includes/field.html" with name="Uplink Mode" value=transmitter.uplink_mode %}
|
||||
{% if transmitter.downlink_low %}
|
||||
<dt class="col-sm-6">Downlink Frequency</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.downlink_low }} Hz">
|
||||
<span class="frequency">{{ transmitter.downlink_low }}</span></dd>
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_drift %}
|
||||
<dt class="col-sm-6">Downlink Drifted</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.downlink_drift }} ppb">
|
||||
<span class="frequency drifted" data-freq_or="{{ transmitter.downlink_low }}" data-drift="{{ transmitter.downlink_drift }}">{{ transmitter.downlink_drift }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.baud %}
|
||||
{% include "includes/field.html" with name="Baud" value=transmitter.baud %}
|
||||
{% endif %}
|
||||
{% if transmitter.type == 'Transmitter' %}
|
||||
{% if transmitter.downlink_low %}
|
||||
{% include "includes/field.html" with name="Downlink" value=transmitter.downlink_low hz=transmitter.downlink_low %}
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_drift %}
|
||||
{% include "includes/field.html" with name="Downlink Drifted" value=transmitter.downlink_drift hz=transmitter.downlink_drift class="drifted" freq_or=transmitter.downlink_low %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if transmitter.type == 'Transceiver' %}
|
||||
{% if transmitter.downlink_low %}
|
||||
{% include "includes/field.html" with name="Downlink" value=transmitter.downlink_low hz=transmitter.downlink_low %}
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_drift %}
|
||||
{% include "includes/field.html" with name="Downlink Drifted" value=transmitter.downlink_drift hz=transmitter.downlink_drift class="drifted" freq_or=transmitter.downlink_low %}
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_low %}
|
||||
{% include "includes/field.html" with name="Uplink" value=transmitter.uplink_low hz=transmitter.uplink_low %}
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_drift %}
|
||||
{% include "includes/field.html" with name="Uplink Drifted" value=transmitter.uplink_drift hz=transmitter.uplink_drift class="drifted" freq_or=transmitter.uplink_low %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if transmitter.type == 'Transponder' %}
|
||||
{% if transmitter.downlink_low %}
|
||||
{% include "includes/field.html" with name="Downlink Low" value=transmitter.downlink_low hz=transmitter.downlink_low %}
|
||||
<dt class="col-sm-6">Baud</dt>
|
||||
<dd class="col-sm-6">{{ transmitter.baud|floatformat:0 }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_high %}
|
||||
{% include "includes/field.html" with name="Downlink High" value=transmitter.downlink_high hz=transmitter.downlink_high %}
|
||||
{% endif %}
|
||||
{% if transmitter.downlink_drift %}
|
||||
{% include "includes/field.html" with name="Downlink Drift" value=transmitter.downlink_drift hz=transmitter.downlink_drift %}
|
||||
<dt class="col-sm-6">Downlink High</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.downlink_high }}">
|
||||
<span class="frequency">{{ transmitter.downlink_high }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_low %}
|
||||
{% include "includes/field.html" with name="Uplink Low" value=transmitter.uplink_low hz=transmitter.uplink_low %}
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_high %}
|
||||
{% include "includes/field.html" with name="Uplink High" value=transmitter.uplink_high hz=transmitter.uplink_high %}
|
||||
<dt class="col-sm-6">Uplink Frequency</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.uplink_low }}">
|
||||
<span class="frequency">{{ transmitter.uplink_low }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_drift %}
|
||||
{% include "includes/field.html" with name="Uplink Drift" value=transmitter.uplink_drift hz=transmitter.uplink_drift %}
|
||||
<dt class="col-sm-6">Uplink Drift</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.uplink_drift }} ppb">
|
||||
<span class="frequency drifted" data-freq_or="{{ transmitter.uplink_low }}" data-drift="{{ transmitter.uplink_drift }}">{{ transmitter.uplink_drift }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.uplink_high %}
|
||||
<dt class="col-sm-6">Uplink High</dt>
|
||||
<dd class="col-sm-6" data-toggle="tooltip" data-placement="bottom" title="{{ transmitter.uplink_high }}">
|
||||
<span class="frequency">{{ transmitter.uplink_high }}</dd>
|
||||
{% endif %}
|
||||
{% if transmitter.invert %}
|
||||
{% include "includes/field.html" with name="Invert" value=transmitter.invert %}
|
||||
<dt class="col-sm-6">Inverted</dt>
|
||||
<dd class="col-sm-6">Yes</dd>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="card-footer align-items-baseline justify-content-between transmitter-card-footer">
|
||||
Updated on {{ transmitter.created|date:'Y-m-d H:i' }} by {{ transmitter.user }}
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
<div class="row transmitter-element">
|
||||
<div class="col-md-6">
|
||||
<span class="badge badge-secondary satellite-detail-badge">{{ name }}</span>
|
||||
</div>
|
||||
<div class="col-md-6" {% if hz %}
|
||||
{% if freq_or %}
|
||||
data-toggle="tooltip" data-placement="bottom" title="{{ hz }} ppb"
|
||||
{% else %}
|
||||
data-toggle="tooltip" data-placement="bottom" title="{{ hz }} Hz"
|
||||
{% endif %}
|
||||
{% endif %}>
|
||||
<span {% if hz %}class="frequency {{ class }}"{% endif %}
|
||||
{% if freq_or %}data-freq_or="{{ freq_or }}" data-drift="{{ value }}"{% endif %}>{{ value }}</span>
|
||||
{% if original and original != value %}
|
||||
<div>
|
||||
<del class="text-muted">{{ original }}</del>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in New Issue