375 lines
19 KiB
HTML
375 lines
19 KiB
HTML
{% extends "base/home.html" %}
|
|
|
|
{% load tags %}
|
|
{% load staticfiles %}
|
|
|
|
{% block title %} - Suggest{% endblock %}
|
|
|
|
{% block top %}{% endblock %}
|
|
|
|
{% block content %}
|
|
|
|
<!-- Satellite Overview Section -->
|
|
<div class="row">
|
|
<div class="col-md-12 satellite-panels">
|
|
<div class="panel panel-default panel-satellite">
|
|
<div class="panel-heading">
|
|
<div class="satellite-title">
|
|
{{ satellite }}
|
|
</div>
|
|
</div>
|
|
<div class="row panel-body">
|
|
<div class="col-md-3 panel-satellite">
|
|
<div>
|
|
{{ satellite.names }}
|
|
</div>
|
|
<div>
|
|
<img src="{{ satellite.get_image }}" alt="{{ satellite.name }}" class="satellite-img-full">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Transmitters Section -->
|
|
<div class="row">
|
|
<div class="col-md-12 satellite-panels">
|
|
<div class="panel panel-default panel-satellite">
|
|
<div class="panel-heading">
|
|
<div class="satellite-title">
|
|
Transmitters
|
|
</div>
|
|
</div>
|
|
<div class="row panel-body">
|
|
<div class="col-md-3 panel-satellite">
|
|
{% if suggestions %}
|
|
<div class="suggestions-counter label label-primary">
|
|
{{ suggestions.count }} suggestion{{ suggestions.count|pluralize }} pending
|
|
</div>
|
|
{% endif %}
|
|
<div>
|
|
<button type="button"
|
|
class="btn btn-primary"
|
|
data-toggle="modal" data-target="#NewSuggestionModal">
|
|
Suggest New Transmitter
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-9">
|
|
<div class="row">
|
|
{% for transmitter in satellite.transmitters.all %}
|
|
<div class="col-md-6">
|
|
<div class="panel {% if transmitter.alive %}panel-primary{% else %}panel-danger{% endif %} panel-transmitter">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">
|
|
<span class="transmitter-title">{{ transmitter.description }}</span>
|
|
<button type="button"
|
|
class="btn btn-default btn-sm pull-right suggest-transmitter"
|
|
data-toggle="modal"
|
|
data-target="#EditSuggestionModal-{{ transmitter.id }}">
|
|
<span class="glyphicon glyphicon-edit" title="Suggest edits"></span>
|
|
</button>
|
|
</h3>
|
|
</div>
|
|
<div class="row panel-body">
|
|
<div class="col-md-12">
|
|
{% if transmitter.alive %}
|
|
{% include "includes/field.html" with name="Alive" value=transmitter.alive %}
|
|
{% endif %}
|
|
{% if transmitter.mode %}
|
|
{% include "includes/field.html" with name="Mode" value=transmitter.mode %}
|
|
{% endif %}
|
|
{% if transmitter.invert %}
|
|
{% include "includes/field.html" with name="Invert" value=transmitter.invert %}
|
|
{% endif %}
|
|
{% if transmitter.baud %}
|
|
{% include "includes/field.html" with name="Baud" value=transmitter.baud %}
|
|
{% endif %}
|
|
{% if transmitter.uplink_low %}
|
|
{% include "includes/field.html" with name="Uplink Low" value=transmitter.uplink_low|frq %}
|
|
{% endif %}
|
|
{% if transmitter.uplink_high %}
|
|
{% include "includes/field.html" with name="Uplink High" value=transmitter.uplink_high|frq %}
|
|
{% endif %}
|
|
{% if transmitter.downlink_low %}
|
|
{% include "includes/field.html" with name="Downlink Low" value=transmitter.downlink_low|frq %}
|
|
{% endif %}
|
|
{% if transmitter.downlink_high %}
|
|
{% include "includes/field.html" with name="Downlink High" value=transmitter.downlink_high|frq %}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Edit Suggestion Modal -->
|
|
<div class="modal fade" id="EditSuggestionModal-{{ transmitter.id }}" tabindex="-1" role="dialog" aria-labelledby="EditSuggestionModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
<h4 class="modal-title" id="EditSuggestionModalLabel">Suggest an edit to this Transmitter</h4>
|
|
</div>
|
|
{% if request.user.is_authenticated %}
|
|
<form action="{% url 'suggestion' %}" method="post" id="editsuggestion-form">{% csrf_token %}
|
|
<div class="modal-body">
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Description</div>
|
|
<input type="text" class="form-control" name="description" value="{{ transmitter.description }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<input type="checkbox" value="1" name="alive" {% if transmitter.alive %}checked{% endif %}> Alive
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Uplink Low</div>
|
|
<input type="number" class="form-control" name="uplink_low" value="{{ transmitter.uplink_low|default_if_none:'' }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Uplink High</div>
|
|
<input type="number" class="form-control" name="uplink_high" value="{{ transmitter.uplink_high|default_if_none:'' }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Downlink Low</div>
|
|
<input type="number" class="form-control" name="downlink_low" value="{{ transmitter.downlink_low|default_if_none:'' }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Downlink High</div>
|
|
<input type="number" class="form-control" name="downlink_high" value="{{ transmitter.downlink_high|default_if_none:'' }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Mode</div>
|
|
<select class="form-control" name="mode">
|
|
<option value="" selected></option>
|
|
{% for mode in modes %}
|
|
<option value="{{ mode.id }}" {% ifequal transmitter.mode mode %}selected{% endifequal %}>
|
|
{{ mode }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<input type="checkbox" value="1" name="invert" {% if transmitter.invert %}checked{% endif %}> Invert
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Baud Rate</div>
|
|
<input type="number" class="form-control" name="baud" value="{{ transmitter.baud|default_if_none:'' }}">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Citation URL</div>
|
|
<input type="text" class="form-control" name="citation" required>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="submit" class="btn btn-primary">Send</button>
|
|
</div>
|
|
<input type="hidden" name="transmitter" value="{{ transmitter.pk }}">
|
|
<input type="hidden" name="satellite" value="{{ satellite.pk }}">
|
|
</form>
|
|
{% else %}
|
|
<div class="modal-body">
|
|
<div class="text-danger">You need to login first to add a new suggestion.</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<a href="{% url 'account_login' %}" class="btn btn-primary">Log In</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% if forloop.counter|divisibleby:2 %}
|
|
</div>
|
|
{% if not loop.last %}
|
|
<div class="row">
|
|
{% endif %}
|
|
{% endif %}
|
|
{% empty %}
|
|
<div class="row panel-body">
|
|
<div class="col-md-12">
|
|
<span class="text-danger">No approved transmitters yet for this Satellite.</span>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{% if request.user.is_superuser %}
|
|
<hr>
|
|
<div class="row">
|
|
{% for suggestion in suggestions %}
|
|
<div class="col-md-6">
|
|
<div class="panel panel-{% if suggestion.transmitter %}info{% else %}warning{% endif %} panel-transmitter">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">
|
|
<span class="transmitter-title">{{ suggestion.description }}</span>
|
|
<a type="button" href="{% url 'admin:base_suggestion_change' suggestion.id %}"
|
|
target="_blank" title="Edit on admin"
|
|
class="btn btn-default btn-sm pull-right suggest-transmitter">
|
|
<span class="glyphicon glyphicon-wrench" ></span>
|
|
</a>
|
|
</h3>
|
|
</div>
|
|
<div class="row panel-body">
|
|
<div class="col-md-12">
|
|
{% if suggestion.alive %}
|
|
{% include "includes/field.html" with name="Alive" value=suggestion.alive original=suggestion.transmitter.alive %}
|
|
{% endif %}
|
|
{% if suggestion.mode %}
|
|
{% include "includes/field.html" with name="Mode" value=suggestion.mode original=suggestion.transmitter.mode %}
|
|
{% endif %}
|
|
{% if suggestion.invert %}
|
|
{% include "includes/field.html" with name="Invert" value=suggestion.invert original=suggestion.transmitter.invert %}
|
|
{% endif %}
|
|
{% if suggestion.baud %}
|
|
{% include "includes/field.html" with name="Baud" value=suggestion.baud original=suggestion.transmitter.baud %}
|
|
{% endif %}
|
|
{% if suggestion.uplink_low %}
|
|
{% include "includes/field.html" with name="Uplink Low" value=suggestion.uplink_low|frq original=suggestion.transmitter.uplink_low|frq %}
|
|
{% endif %}
|
|
{% if suggestion.uplink_high %}
|
|
{% include "includes/field.html" with name="Uplink High" value=suggestion.uplink_high|frq original=suggestion.transmitter.uplink_high|frq %}
|
|
{% endif %}
|
|
{% if suggestion.downlink_low %}
|
|
{% include "includes/field.html" with name="Downlink Low" value=suggestion.downlink_low|frq original=suggestion.transmitter.downlink_low|frq %}
|
|
{% endif %}
|
|
{% if suggestion.downlink_high %}
|
|
{% include "includes/field.html" with name="Downlink High" value=suggestion.downlink_high|frq original=suggestion.transmitter.downlink_high|frq %}
|
|
{% endif %}
|
|
{% if suggestion.citation %}
|
|
{% include "includes/field.html" with name="Citation" value=suggestion.citation|urlizetrunc:35 %}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% if forloop.counter|divisibleby:2 %}
|
|
</div>
|
|
{% if not loop.last %}
|
|
<div class="row">
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Telemetry Section -->
|
|
<div class="row">
|
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 satellite-panels">
|
|
<div class="panel panel-default panel-satellite">
|
|
<div class="panel-heading">
|
|
<div class="satellite-title" id="telemetry-block" data-satid="{{ satellite.norad_cat_id }}">
|
|
Telemetry
|
|
</div>
|
|
</div>
|
|
<div class="row panel-body">
|
|
<div class="panel-satellite chart">
|
|
<div class="col-md-3 panel-satellite">
|
|
<ul id="telemetry-descriptors">
|
|
</ul>
|
|
</div>
|
|
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script id="telemetryDescriptorsTemplate" type="text/template">
|
|
<li class="list-group-item active telemetry-key" id="<%- key %>"><%- description %></li>
|
|
</script>
|
|
|
|
<!-- Suggestion Modal -->
|
|
<div class="modal fade" id="NewSuggestionModal" tabindex="-1" role="dialog" aria-labelledby="NewSuggestionModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
<h4 class="modal-title" id="NewSuggestionModalLabel">Suggest a new Transmitter</h4>
|
|
</div>
|
|
{% if request.user.is_authenticated %}
|
|
<form action="{% url 'suggestion' %}" method="post" id="newsuggestion-form">{% csrf_token %}
|
|
<div class="modal-body">
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Description</div>
|
|
<input type="text" class="form-control" name="description">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<input type="checkbox" value="1" name="alive" checked> Alive
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Uplink_Low</div>
|
|
<input type="number" class="form-control" name="uplink_low">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Uplink High</div>
|
|
<input type="number" class="form-control" name="uplink_high">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Downlink Low</div>
|
|
<input type="number" class="form-control" name="downlink_low">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Downlink High</div>
|
|
<input type="number" class="form-control" name="downlink_high">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Mode</div>
|
|
<select class="form-control" name="mode">
|
|
<option value="" selected></option>
|
|
{% for mode in modes %}
|
|
<option value="{{ mode.id }}">
|
|
{{ mode }}
|
|
</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<input type="checkbox" value="1" name="invert"> Invert
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Baud Rate</div>
|
|
<input type="number" class="form-control" name="baud">
|
|
</div>
|
|
<div class="input-group transmitter-element-suggest">
|
|
<div class="input-group-addon">Citation URL</div>
|
|
<input type="url" class="form-control" name="citation" required>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="submit" class="btn btn-primary">Send</button>
|
|
</div>
|
|
<input type="hidden" name="satellite" value="{{ satellite.pk }}">
|
|
</form>
|
|
{% else %}
|
|
<div class="modal-body">
|
|
<div class="text-danger">You need to login first to add a new suggestion.</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<a href="{% url 'account_login' %}" class="btn btn-primary">Log In</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
{% block javascript %}
|
|
<script src="{% static 'lib/underscore/underscore-min.js' %}"></script>
|
|
<script src="{% static 'lib/backbone/backbone-min.js' %}"></script>
|
|
<script src="{% static 'lib/d3/d3.min.js' %}"></script>
|
|
<script src="{% static 'js/app.backbone.js' %}"></script>
|
|
{% endblock %}
|