Sumbit form for new observation.
parent
a363d23d28
commit
1e9ad7d64c
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('base', '0007_auto_20141027_0000'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='data',
|
||||
name='payload',
|
||||
field=models.FileField(null=True, upload_to=b'data_payloads', blank=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -110,4 +110,4 @@ class Data(models.Model):
|
|||
end = models.DateTimeField()
|
||||
observation = models.ForeignKey(Observation)
|
||||
ground_station = models.ForeignKey(Station)
|
||||
payload = models.FileField(upload_to='data_payloads', null=True)
|
||||
payload = models.FileField(upload_to='data_payloads', blank=True, null=True)
|
||||
|
|
|
@ -36,24 +36,25 @@ def observation_new(request):
|
|||
"""View for new observation"""
|
||||
me = request.user
|
||||
if request.method == 'POST':
|
||||
sat_id = request.POST.get('sat_id')
|
||||
trans_id = request.POST.get('trans_id')
|
||||
start = request.POST.get('start')
|
||||
end = request.POST.get('end')
|
||||
sat = Satellite.objects.get(id=sat_id)
|
||||
sat_id = request.POST.get('satellite')
|
||||
trans_id = request.POST.get('transponder')
|
||||
start = request.POST.get('start-time')
|
||||
end = request.POST.get('end-time')
|
||||
sat = Satellite.objects.get(norad_cat_id=sat_id)
|
||||
trans = Transponder.objects.get(id=trans_id)
|
||||
obs = Observation(satellite=sat, transponder=trans,
|
||||
author=me, start=start, end=end)
|
||||
obs.save()
|
||||
total = int(request.POST.get('total'))
|
||||
for item in total:
|
||||
start = request.POST.get('d-start')
|
||||
end = request.POST.get('d-end')
|
||||
station_id = request.POST.get('d-station_id')
|
||||
for item in range(total):
|
||||
start = request.POST.get('{}-starting_time'.format(item))
|
||||
end = request.POST.get('{}-ending_time'.format(item))
|
||||
station_id = request.POST.get('{}-station'.format(item))
|
||||
ground_station = Station.objects.get(id=station_id)
|
||||
Data.objects.create(start=start, end=end, ground_station=ground_station,
|
||||
observation=obs)
|
||||
return redirect(reverse('observations_view_observation', kwargs={'id': obs.id}))
|
||||
|
||||
return redirect(reverse('observations_view_observation', kwargs={'id': obs.id}))
|
||||
|
||||
satellites = Satellite.objects.all()
|
||||
transponders = Transponder.objects.filter(alive=True)
|
||||
|
|
|
@ -3,8 +3,9 @@ $(function () {
|
|||
$('#datetimepicker-start').data("DateTimePicker").setMinDate(moment().add(1,'h'));
|
||||
$('#datetimepicker-end').datetimepicker();
|
||||
$("#datetimepicker-start").on("dp.change",function (e) {
|
||||
$('#datetimepicker-end').data("DateTimePicker").setMinDate(e.date);
|
||||
$('#datetimepicker-end').data("DateTimePicker").setMaxDate(moment(e.date).add(24, 'h'));
|
||||
//Setting minimum and maximum for end
|
||||
$('#datetimepicker-end').data("DateTimePicker").setMinDate(e.date);
|
||||
$('#datetimepicker-end').data("DateTimePicker").setMaxDate(moment(e.date).add(24, 'h'));
|
||||
});
|
||||
|
||||
$('#satellite-selection').change( function() {
|
||||
|
@ -29,6 +30,7 @@ $( document ).ready( function(){
|
|||
$.ajax({
|
||||
url: '/prediction_windows/'+satellite+'/'+start_time+'/'+end_time
|
||||
}).done(function(data) {
|
||||
var dc = 0; //Data counter
|
||||
var suggested_data = [];
|
||||
$.each(data, function( i,k ){
|
||||
label = k.id + " - " + k.name;
|
||||
|
@ -37,13 +39,18 @@ $( document ).ready( function(){
|
|||
$.each(k.window, function( m,n ){
|
||||
var starting_time = moment(n.start).valueOf();
|
||||
var ending_time = moment(n.end).valueOf();
|
||||
$('#windows-data').append('<input type="hidden" name="'+dc+'-starting_time" value="'+n.start+'">');
|
||||
$('#windows-data').append('<input type="hidden" name="'+dc+'-ending_time" value="'+n.end+'">');
|
||||
$('#windows-data').append('<input type="hidden" name="'+dc+'-station" value="'+k.id+'">');
|
||||
times.push({starting_time: starting_time, ending_time: ending_time})
|
||||
dc = dc +1;
|
||||
});
|
||||
suggested_data.push({label : label, times : times});
|
||||
//console.log(k);
|
||||
//console.log(k.name);
|
||||
});
|
||||
|
||||
$('#windows-data').append('<input type="hidden" name="total" value="'+dc+'">');
|
||||
/*data.each(function( index ){
|
||||
var data_groundstation = $(this).data('groundstation');
|
||||
var data_time_start = 1000 * $(this).data('start');
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<option id="no-transponder" value="" disabled selected>No transponder available</option>
|
||||
{% for transponder in transponders %}
|
||||
<option data-satellite="{{ transponder.satellite.norad_cat_id }}"
|
||||
value="{{ transponder.satellite.norad_cat_id }}">
|
||||
value="{{ transponder.id }}">
|
||||
{{ transponder.description }} - {{ transponder.downlink_low }} - {{ transponder.mode }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
|
@ -94,6 +94,7 @@
|
|||
<div id="name"></div>
|
||||
<div id="scrolled_date"></div>
|
||||
</div>
|
||||
<div id="windows-data"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -38,53 +38,70 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>Timeline</h3>
|
||||
<div id="timeline"></div>
|
||||
<div id="hoverRes">
|
||||
<div class="coloredDiv"></div>
|
||||
<div id="name"></div>
|
||||
<div id="scrolled_date"></div>
|
||||
{% if not observation.data_set.all %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p class="notice">
|
||||
No data associated with this observation.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>Data</h3>
|
||||
{% for data in data %}
|
||||
<div class="panel panel-default observation-data"
|
||||
data-id="{{ data.id }}"
|
||||
data-payload="{{ MEDIA_URL }}{{ data.payload }}"
|
||||
data-start="{{ data.start|date:"U" }}"
|
||||
data-end="{{ data.end|date:"U" }}"
|
||||
data-groundstation="{{ data.ground_station }}">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
Data payload #{{ data.id }} from {{ data.ground_station }}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="wave" id="data-{{ data.id }}"></div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<span class="label label-default">Timeframe</span>
|
||||
{{ data.start|date:"Y-m-d H:i:s" }} ~ {{ data.end|date:"Y-m-d H:i:s" }}
|
||||
<a href="{{ MEDIA_URL }}{{ data.payload }}" target="_blank" class="pull-right">
|
||||
<button type="button" class="btn btn-default btn-xs">
|
||||
<span class="glyphicon glyphicon-download"></span> Data
|
||||
</button>
|
||||
</a>
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right playpause">
|
||||
<span class="glyphicon glyphicon-play"></span>
|
||||
<span class="glyphicon glyphicon-pause"></span>
|
||||
</button>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>Timeline</h3>
|
||||
<div id="timeline"></div>
|
||||
<div id="hoverRes">
|
||||
<div class="coloredDiv"></div>
|
||||
<div id="name"></div>
|
||||
<div id="scrolled_date"></div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>Data</h3>
|
||||
{% for data in data %}
|
||||
<div class="panel panel-default observation-data"
|
||||
data-id="{{ data.id }}"
|
||||
data-payload="{{ MEDIA_URL }}{{ data.payload }}"
|
||||
data-start="{{ data.start|date:"U" }}"
|
||||
data-end="{{ data.end|date:"U" }}"
|
||||
data-groundstation="{{ data.ground_station }}">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">
|
||||
Data payload #{{ data.id }} from {{ data.ground_station }}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{% if data.payload %}
|
||||
<div class="wave" id="data-{{ data.id }}"></div>
|
||||
{% else %}
|
||||
<div class="notice">
|
||||
Waiting for data
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<span class="label label-default">Timeframe</span>
|
||||
{{ data.start|date:"Y-m-d H:i:s" }} ~ {{ data.end|date:"Y-m-d H:i:s" }}
|
||||
<a href="{{ MEDIA_URL }}{{ data.payload }}" target="_blank" class="pull-right">
|
||||
<button type="button" class="btn btn-default btn-xs">
|
||||
<span class="glyphicon glyphicon-download"></span> Data
|
||||
</button>
|
||||
</a>
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right playpause">
|
||||
<span class="glyphicon glyphicon-play"></span>
|
||||
<span class="glyphicon glyphicon-pause"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
{% block javascript %}
|
||||
|
|
|
@ -3,7 +3,12 @@
|
|||
{% block title %}Observations{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Observations</h1>
|
||||
<h1>
|
||||
Observations
|
||||
{% if user.is_authenticated == 1 %}
|
||||
<a class="btn btn-primary pull-right" href="{% url 'observation_new' %}">New Observation</a>
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
|
Loading…
Reference in New Issue