##// END OF EJS Templates
Task #714: Modulo web del ABS ...
Fiorella Quino -
r166:d72e9c99e97e
parent child
Show More
@@ -0,0 +1,19
1 {% extends "dev_conf_edit.html" %}
2
3 {% load bootstrap3 %}
4 {% load static %}
5 {% load main_tags %}
6
7 {% block content %}
8 <form class="form" method="post">
9 {% csrf_token %}
10 {#% bootstrap_form form layout='horizontal' size='medium' %#}
11 {{form}}
12 <div style="clear: both;"></div>
13 <br>
14 <div class="pull-right">
15 <button type="button" class="btn btn-primary" onclick="{% if previous %}window.location.replace('{{ previous }}');{% else %}history.go(-1);{% endif %}">Cancel</button>
16 <button type="submit" class="btn btn-primary">{{button}}</button>
17 </div>
18 </form>
19 {% endblock %}
This diff has been collapsed as it changes many lines, (691 lines changed) Show them Hide them
@@ -0,0 +1,691
1 {% load static %}
2 {% load bootstrap3 %}
3 {% load main_tags %}
4
5 {% block content %}
6 <style>
7
8 .abs {
9 border: 2px solid #00334d;
10 vertical-align: center;
11 display: inline-block;
12 font-size: 95%;
13 }
14
15 .abs tr{
16 border-bottom: 0px solid #00334d;
17 }
18
19 .abs td{
20 border-right: 0px solid #00334d;
21 text-align: center;
22 padding: 4px;
23 }
24
25 .pattern {
26 border: 2px solid #00334d;
27 vertical-align: center;
28 font-weight: bold;
29 text-align: center;
30 }
31 .pattern tr{
32 border: 1px solid #ffffff;
33 background-color: #ecf0f1;
34 }
35 .pattern td{
36 border: 2px solid #e2e2e7;
37 text-align: center;
38 }
39
40 .north_quarter{
41 border: 2px solid #00334d;
42 vertical-align: center;
43 font-weight: bold;
44 }
45 .north_quarter tr{
46 border: 1px solid #ffffff;
47 background-color: #ecf0f1;
48 }
49 .north_quarter td{
50 border: 2px solid #e2e2e7;
51 text-align: center;
52 }
53
54 .east_quarter{
55 border: 2px solid #00334d;
56 vertical-align: center;
57 font-weight: bold;
58 }
59 .east_quarter tr{
60 border: 1px solid #ffffff;
61 background-color: #ecf0f1;
62 }
63 .east_quarter td{
64 border: 2px solid #e2e2e7;
65 text-align: center;
66 }
67
68 .west_quarter{
69 border: 2px solid #00334d;
70 vertical-align: center;
71 font-weight: bold;
72 }
73 .west_quarter tr{
74 border: 1px solid #ffffff;
75 background-color: #ecf0f1;
76 }
77 .west_quarter td{
78 border: 2px solid #e2e2e7;
79 text-align: center;
80 }
81
82 .south_quarter{
83 border: 2px solid #00334d;
84 vertical-align: center;
85 font-weight: bold;
86 }
87 .south_quarter tr{
88 border: 1px solid #ffffff;
89 background-color: #ecf0f1;
90 }
91 .south_quarter td{
92 border: 2px solid #e2e2e7;
93 text-align: center;
94 }
95
96 .abs_tx {
97 border: 2px solid #00334d;
98 vertical-align: center;
99 display: inline-block;
100 vertical-align: top;
101 margin-left: 10px;
102 vertical-align: top;
103 font-size: 95%;
104 }
105
106
107 }
108 .abs_tx tr:nth-last-child(1){
109 border-bottom: 0px solid #00334d;
110 }
111 .abs_tx td {
112 text-align: center;
113 padding: 4px;
114 }
115
116 .abs_rx {
117 border: 2px solid #00334d;
118 vertical-align: center;
119 display: inline-block;
120 margin-left: 10px;
121 text-align: center;
122 font-size: 95%;
123 }
124
125
126 }
127 .abs_rx tr:nth-last-child(1){
128 border-bottom: 0px solid #00334d;
129 }
130 .abs_rx td {
131 text-align: center;
132 padding: 4px;
133 }
134
135 .tx {
136 border: 2px solid #00334d;
137 vertical-align: center;
138 font-weight: bold;
139 }
140 .tx tr{
141 border: 1px solid #ffffff;
142 background-color: #ecf0f1;
143 }
144 .tx td{
145 border: 2px solid #e2e2e7;
146 text-align: center;
147 }
148
149
150 .rx {
151 border: 2px solid #00334d;
152 vertical-align: center;
153 font-weight: bold;
154 }
155 .rx tr{
156 border: 1px solid #ffffff;
157 background-color: #ecf0f1;
158 }
159 .rx td{
160 border: 2px solid #e2e2e7;
161 text-align: center;
162 }
163
164
165 </style>
166
167 <script>
168 $(document).ready(function() {
169
170 $( "#bt_remove_beam-{{ beam.id }}" ).click(function() {
171 document.location = "{% url 'url_remove_abs_beam' id_conf beam.id %}";
172 });
173
174 $( "#bt_edit_beam-{{ beam.id }}" ).click(function() {
175 document.location = "{% url 'url_edit_abs_beam' id_conf beam.id %}";
176 });
177
178 });
179 </script>
180
181
182 <div id="UP" class="panel-group">
183 <div class="panel panel-default">
184 <div class="panel-heading">UP</div>
185 <div class="panel-body">
186 <table class="abs">
187 <tr>
188 <td> <b>Antenna</b>
189 <table id="antenna_up" class="pattern">
190 <tr>
191 <td> North Quarter
192 <table class="north_quarter">
193 <tr>
194 <td>{{beam.get_upvalues.0}}</td> <td>{{beam.get_upvalues.1}}</td> <td>{{beam.get_upvalues.2}}</td> <td>{{beam.get_upvalues.3}}</td>
195 </tr>
196 <tr>
197 <td>{{beam.get_upvalues.8}}</td> <td>{{beam.get_upvalues.9}}</td> <td>{{beam.get_upvalues.10}}</td> <td>{{beam.get_upvalues.11}}</td>
198 </tr>
199 <tr>
200 <td>{{beam.get_upvalues.16}}</td> <td>{{beam.get_upvalues.17}}</td> <td>{{beam.get_upvalues.18}}</td> <td>{{beam.get_upvalues.19}}</td>
201 </tr>
202 <tr>
203 <td>{{beam.get_upvalues.24}}</td> <td>{{beam.get_upvalues.25}}</td> <td>{{beam.get_upvalues.26}}</td> <td>{{beam.get_upvalues.27}}</td>
204 </tr>
205 </table>
206 </td>
207 <td> East Quarter
208 <table class="east_quarter">
209 <tr>
210 <td>{{beam.get_upvalues.4}}</td> <td>{{beam.get_upvalues.5}}</td> <td>{{beam.get_upvalues.6}}</td> <td>{{beam.get_upvalues.7}}</td>
211 </tr>
212 <tr>
213 <td>{{beam.get_upvalues.12}}</td> <td>{{beam.get_upvalues.13}}</td> <td>{{beam.get_upvalues.14}}</td> <td>{{beam.get_upvalues.15}}</td>
214 </tr>
215 <tr>
216 <td>{{beam.get_upvalues.20}}</td> <td>{{beam.get_upvalues.21}}</td> <td>{{beam.get_upvalues.22}}</td> <td>{{beam.get_upvalues.23}}</td>
217 </tr>
218 <tr>
219 <td>{{beam.get_upvalues.28}}</td> <td>{{beam.get_upvalues.29}}</td> <td>{{beam.get_upvalues.30}}</td> <td>{{beam.get_upvalues.31}}</td>
220 </tr>
221 </table>
222 </td>
223 </tr>
224 <tr>
225 <td> West Quarter
226 <table class="west_quarter">
227 <tr>
228 <td>{{beam.get_upvalues.32}}</td> <td>{{beam.get_upvalues.33}}</td> <td>{{beam.get_upvalues.34}}</td> <td>{{beam.get_upvalues.35}}</td>
229 </tr>
230 <tr>
231 <td>{{beam.get_upvalues.40}}</td> <td>{{beam.get_upvalues.41}}</td> <td>{{beam.get_upvalues.42}}</td> <td>{{beam.get_upvalues.43}}</td>
232 </tr>
233 <tr>
234 <td>{{beam.get_upvalues.48}}</td> <td>{{beam.get_upvalues.49}}</td> <td>{{beam.get_upvalues.50}}</td> <td>{{beam.get_upvalues.51}}</td>
235 </tr>
236 <tr>
237 <td>{{beam.get_upvalues.56}}</td> <td>{{beam.get_upvalues.57}}</td> <td>{{beam.get_upvalues.58}}</td> <td>{{beam.get_upvalues.59}}</td>
238 </tr>
239 </table>
240 </td>
241 <td> South Quarter
242 <table class="south_quarter">
243 <tr>
244 <td>{{beam.get_upvalues.36}}</td> <td>{{beam.get_upvalues.37}}</td> <td>{{beam.get_upvalues.38}}</td> <td>{{beam.get_upvalues.39}}</td>
245 </tr>
246 <tr>
247 <td>{{beam.get_upvalues.44}}</td> <td>{{beam.get_upvalues.45}}</td> <td>{{beam.get_upvalues.46}}</td> <td>{{beam.get_upvalues.47}}</td>
248 </tr>
249 <tr>
250 <td>{{beam.get_upvalues.52}}</td> <td>{{beam.get_upvalues.53}}</td> <td>{{beam.get_upvalues.54}}</td> <td>{{beam.get_upvalues.55}}</td>
251 </tr>
252 <tr>
253 <td>{{beam.get_upvalues.60}}</td> <td>{{beam.get_upvalues.61}}</td> <td>{{beam.get_upvalues.62}}</td> <td>{{beam.get_upvalues.63}}</td>
254 </tr>
255 </table>
256 </td>
257 </tr>
258 </table>
259 </td>
260 </tr>
261 </table>
262
263
264 <table class="abs_tx">
265 <tr>
266 <td> <b>TX</b>
267 <table id="tx_up" class="tx">
268 <tr>
269 <td> North Quarter
270 <table align="center" class="north_quarter">
271 <tr>
272 <td>{{beam.get_tx.up.0.0}}</td> <td>{{beam.get_tx.up.0.1}}</td> <td>{{beam.get_tx.up.0.2}}</td> <td>{{beam.get_tx.up.0.3}}</td>
273 </tr>
274 <tr>
275 <td>{{beam.get_tx.up.1.0}}</td> <td>{{beam.get_tx.up.1.1}}</td> <td>{{beam.get_tx.up.1.2}}</td> <td>{{beam.get_tx.up.1.3}}</td>
276 </tr>
277 <tr>
278 <td>{{beam.get_tx.up.2.0}}</td> <td>{{beam.get_tx.up.2.1}}</td> <td>{{beam.get_tx.up.2.2}}</td> <td>{{beam.get_tx.up.2.3}}</td>
279 </tr>
280 <tr>
281 <td>{{beam.get_tx.up.3.0}}</td> <td>{{beam.get_tx.up.3.1}}</td> <td>{{beam.get_tx.up.3.2}}</td> <td>{{beam.get_tx.up.3.3}}</td>
282 </tr>
283 </table>
284 </td>
285 <td> East Quarter
286 <table align="center" class="east_quarter">
287 <tr>
288 <td>{{beam.get_tx.up.0.4}}</td> <td>{{beam.get_tx.up.0.5}}</td> <td>{{beam.get_tx.up.0.6}}</td> <td>{{beam.get_tx.up.0.7}}</td>
289 </tr>
290 <tr>
291 <td>{{beam.get_tx.up.1.4}}</td> <td>{{beam.get_tx.up.1.5}}</td> <td>{{beam.get_tx.up.1.6}}</td> <td>{{beam.get_tx.up.1.7}}</td>
292 </tr>
293 <tr>
294 <td>{{beam.get_tx.up.2.4}}</td> <td>{{beam.get_tx.up.2.5}}</td> <td>{{beam.get_tx.up.2.6}}</td> <td>{{beam.get_tx.up.2.7}}</td>
295 </tr>
296 <tr>
297 <td>{{beam.get_tx.up.3.4}}</td> <td>{{beam.get_tx.up.3.5}}</td> <td>{{beam.get_tx.up.3.6}}</td> <td>{{beam.get_tx.up.3.7}}</td>
298 </tr>
299 </table>
300 </td>
301 </tr>
302 <tr>
303 <td> West Quarter
304 <table align="center" class="west_quarter">
305 <tr>
306 <td>{{beam.get_tx.up.4.0}}</td> <td>{{beam.get_tx.up.4.1}}</td> <td>{{beam.get_tx.up.4.2}}</td> <td>{{beam.get_tx.up.4.3}}</td>
307 </tr>
308 <tr>
309 <td>{{beam.get_tx.up.5.0}}</td> <td>{{beam.get_tx.up.5.1}}</td> <td>{{beam.get_tx.up.5.2}}</td> <td>{{beam.get_tx.up.5.3}}</td>
310 </tr>
311 <tr>
312 <td>{{beam.get_tx.up.6.0}}</td> <td>{{beam.get_tx.up.6.1}}</td> <td>{{beam.get_tx.up.6.2}}</td> <td>{{beam.get_tx.up.6.3}}</td>
313 </tr>
314 <tr>
315 <td>{{beam.get_tx.up.7.0}}</td> <td>{{beam.get_tx.up.7.1}}</td> <td>{{beam.get_tx.up.7.2}}</td> <td>{{beam.get_tx.up.7.3}}</td>
316 </tr>
317 </table>
318 </td>
319 <td> South Quarter
320 <table align="center" class="south_quarter">
321 <tr>
322 <td>{{beam.get_tx.up.4.4}}</td> <td>{{beam.get_tx.up.4.5}}</td> <td>{{beam.get_tx.up.4.6}}</td> <td>{{beam.get_tx.up.4.7}}</td>
323 </tr>
324 <tr>
325 <td>{{beam.get_tx.up.5.4}}</td> <td>{{beam.get_tx.up.5.5}}</td> <td>{{beam.get_tx.up.5.6}}</td> <td>{{beam.get_tx.up.5.7}}</td>
326 </tr>
327 <tr>
328 <td>{{beam.get_tx.up.6.4}}</td> <td>{{beam.get_tx.up.6.5}}</td> <td>{{beam.get_tx.up.6.6}}</td> <td>{{beam.get_tx.up.6.7}}</td>
329 </tr>
330 <tr>
331 <td>{{beam.get_tx.up.7.4}}</td> <td>{{beam.get_tx.up.7.5}}</td> <td>{{beam.get_tx.up.7.6}}</td> <td>{{beam.get_tx.up.7.7}}</td>
332 </tr>
333 </table>
334 </td>
335 </tr>
336 </table>
337 </td>
338 </tr>
339 </table>
340
341
342 <table class="abs_rx">
343 <tr>
344 <td> <b>RX</b>
345 <table id="rx_up" class="rx">
346 <tr>
347 <td> North Quarter
348 <table align="center" class="north_quarter">
349 <tr>
350 <td>{{beam.get_rx.up.0.0}}</td> <td>{{beam.get_rx.up.0.1}}</td> <td>{{beam.get_rx.up.0.2}}</td> <td>{{beam.get_rx.up.0.3}}</td>
351 </tr>
352 <tr>
353 <td>{{beam.get_rx.up.1.0}}</td> <td>{{beam.get_rx.up.1.1}}</td> <td>{{beam.get_rx.up.1.2}}</td> <td>{{beam.get_rx.up.1.3}}</td>
354 </tr>
355 <tr>
356 <td>{{beam.get_rx.up.2.0}}</td> <td>{{beam.get_rx.up.2.1}}</td> <td>{{beam.get_rx.up.2.2}}</td> <td>{{beam.get_rx.up.2.3}}</td>
357 </tr>
358 <tr>
359 <td>{{beam.get_rx.up.3.0}}</td> <td>{{beam.get_rx.up.3.1}}</td> <td>{{beam.get_rx.up.3.2}}</td> <td>{{beam.get_rx.up.3.3}}</td>
360 </tr>
361 </table>
362 </td>
363 <td> East Quarter
364 <table align="center" class="east_quarter">
365 <tr>
366 <td>{{beam.get_rx.up.0.4}}</td> <td>{{beam.get_rx.up.0.5}}</td> <td>{{beam.get_rx.up.0.6}}</td> <td>{{beam.get_rx.up.0.7}}</td>
367 </tr>
368 <tr>
369 <td>{{beam.get_rx.up.1.4}}</td> <td>{{beam.get_rx.up.1.5}}</td> <td>{{beam.get_rx.up.1.6}}</td> <td>{{beam.get_rx.up.1.7}}</td>
370 </tr>
371 <tr>
372 <td>{{beam.get_rx.up.2.4}}</td> <td>{{beam.get_rx.up.2.5}}</td> <td>{{beam.get_rx.up.2.6}}</td> <td>{{beam.get_rx.up.2.7}}</td>
373 </tr>
374 <tr>
375 <td>{{beam.get_rx.up.3.4}}</td> <td>{{beam.get_rx.up.3.5}}</td> <td>{{beam.get_rx.up.3.6}}</td> <td>{{beam.get_rx.up.3.7}}</td>
376 </tr>
377 </table>
378 </td>
379 </tr>
380 <tr>
381 <td> West Quarter
382 <table align="center" class="west_quarter">
383 <tr>
384 <td>{{beam.get_rx.up.4.0}}</td> <td>{{beam.get_rx.up.4.1}}</td> <td>{{beam.get_rx.up.4.2}}</td> <td>{{beam.get_rx.up.4.3}}</td>
385 </tr>
386 <tr>
387 <td>{{beam.get_rx.up.5.0}}</td> <td>{{beam.get_rx.up.5.1}}</td> <td>{{beam.get_rx.up.5.2}}</td> <td>{{beam.get_rx.up.5.3}}</td>
388 </tr>
389 <tr>
390 <td>{{beam.get_rx.up.6.0}}</td> <td>{{beam.get_rx.up.6.1}}</td> <td>{{beam.get_rx.up.6.2}}</td> <td>{{beam.get_rx.up.6.3}}</td>
391 </tr>
392 <tr>
393 <td>{{beam.get_rx.up.7.0}}</td> <td>{{beam.get_rx.up.7.1}}</td> <td>{{beam.get_rx.up.7.2}}</td> <td>{{beam.get_rx.up.7.3}}</td>
394 </tr>
395 </table>
396 </td>
397 <td> South Quarter
398 <table align="center" class="south_quarter">
399 <tr>
400 <td>{{beam.get_rx.up.4.4}}</td> <td>{{beam.get_rx.up.4.5}}</td> <td>{{beam.get_rx.up.4.6}}</td> <td>{{beam.get_rx.up.4.7}}</td>
401 </tr>
402 <tr>
403 <td>{{beam.get_rx.up.5.4}}</td> <td>{{beam.get_rx.up.5.5}}</td> <td>{{beam.get_rx.up.5.6}}</td> <td>{{beam.get_rx.up.5.7}}</td>
404 </tr>
405 <tr>
406 <td>{{beam.get_rx.up.6.4}}</td> <td>{{beam.get_rx.up.6.5}}</td> <td>{{beam.get_rx.up.6.6}}</td> <td>{{beam.get_rx.up.6.7}}</td>
407 </tr>
408 <tr>
409 <td>{{beam.get_rx.up.7.4}}</td> <td>{{beam.get_rx.up.7.5}}</td> <td>{{beam.get_rx.up.7.6}}</td> <td>{{beam.get_rx.up.7.7}}</td>
410 </tr>
411 </table>
412 </td>
413 </tr>
414 </table>
415 </td>
416 </tr>
417 </table>
418
419
420
421 <br>
422
423 <div id="up_ues" style="display: inline-block">
424 Ues: {{beam.get_up_ues}}
425 </div>
426
427 <div style="margin-left: 70px; display: inline-block">
428 <input type="checkbox" id="up_onlyrx" {% if beam.get_up_onlyrx == True %} checked="True" {% endif %} disabled>
429 Only RX: {{beam.get_up_onlyrx}}
430 </input>
431 </div>
432
433 </div>
434 </div>
435 </div>
436
437 <div id="DOWN" class="panel-group">
438 <div class="panel panel-default">
439 <div class="panel-heading">DOWN</div>
440 <div class="panel-body">
441 <table class="abs">
442 <tr>
443 <td> <b>Antenna</b>
444 <table id="antenna_down" class="pattern">
445 <tr>
446 <td> <b>North Quarter</b>
447 <table class="north_quarter">
448 <tr>
449 <td>{{beam.get_downvalues.0}}</td> <td>{{beam.get_downvalues.1}}</td> <td>{{beam.get_downvalues.2}}</td> <td>{{beam.get_downvalues.3}}</td>
450 </tr>
451 <tr>
452 <td>{{beam.get_downvalues.8}}</td> <td>{{beam.get_downvalues.9}}</td> <td>{{beam.get_downvalues.10}}</td> <td>{{beam.get_downvalues.11}}</td>
453 </tr>
454 <tr>
455 <td>{{beam.get_downvalues.16}}</td> <td>{{beam.get_downvalues.17}}</td> <td>{{beam.get_downvalues.18}}</td> <td>{{beam.get_downvalues.19}}</td>
456 </tr>
457 <tr>
458 <td>{{beam.get_downvalues.24}}</td> <td>{{beam.get_downvalues.25}}</td> <td>{{beam.get_downvalues.26}}</td> <td>{{beam.get_downvalues.27}}</td>
459 </tr>
460 </table>
461 </td>
462 <td> <b>East Quarter</b>
463 <table class="east_quarter">
464 <tr>
465 <td>{{beam.get_downvalues.4}}</td> <td>{{beam.get_downvalues.5}}</td> <td>{{beam.get_downvalues.6}}</td> <td>{{beam.get_downvalues.7}}</td>
466 </tr>
467 <tr>
468 <td>{{beam.get_downvalues.12}}</td> <td>{{beam.get_downvalues.13}}</td> <td>{{beam.get_downvalues.14}}</td> <td>{{beam.get_downvalues.15}}</td>
469 </tr>
470 <tr>
471 <td>{{beam.get_downvalues.20}}</td> <td>{{beam.get_downvalues.21}}</td> <td>{{beam.get_downvalues.22}}</td> <td>{{beam.get_downvalues.23}}</td>
472 </tr>
473 <tr>
474 <td>{{beam.get_downvalues.28}}</td> <td>{{beam.get_downvalues.29}}</td> <td>{{beam.get_downvalues.30}}</td> <td>{{beam.get_downvalues.31}}</td>
475 </tr>
476 </table>
477 </td>
478 </tr>
479 <tr>
480 <td> <b>West Quarter</b>
481 <table class="west_quarter">
482 <tr>
483 <td>{{beam.get_downvalues.32}}</td> <td>{{beam.get_downvalues.33}}</td> <td>{{beam.get_downvalues.34}}</td> <td>{{beam.get_downvalues.35}}</td>
484 </tr>
485 <tr>
486 <td>{{beam.get_downvalues.40}}</td> <td>{{beam.get_downvalues.41}}</td> <td>{{beam.get_downvalues.42}}</td> <td>{{beam.get_downvalues.43}}</td>
487 </tr>
488 <tr>
489 <td>{{beam.get_downvalues.48}}</td> <td>{{beam.get_downvalues.49}}</td> <td>{{beam.get_downvalues.50}}</td> <td>{{beam.get_downvalues.51}}</td>
490 </tr>
491 <tr>
492 <td>{{beam.get_downvalues.56}}</td> <td>{{beam.get_downvalues.57}}</td> <td>{{beam.get_downvalues.58}}</td> <td>{{beam.get_downvalues.59}}</td>
493 </tr>
494 </table>
495 </td>
496 <td> <b>South Quarter</b>
497 <table class="south_quarter">
498 <tr>
499 <td>{{beam.get_downvalues.36}}</td> <td>{{beam.get_downvalues.37}}</td> <td>{{beam.get_downvalues.38}}</td> <td>{{beam.get_downvalues.39}}</td>
500 </tr>
501 <tr>
502 <td>{{beam.get_downvalues.44}}</td> <td>{{beam.get_downvalues.45}}</td> <td>{{beam.get_downvalues.46}}</td> <td>{{beam.get_downvalues.47}}</td>
503 </tr>
504 <tr>
505 <td>{{beam.get_downvalues.52}}</td> <td>{{beam.get_downvalues.53}}</td> <td>{{beam.get_downvalues.54}}</td> <td>{{beam.get_downvalues.55}}</td>
506 </tr>
507 <tr>
508 <td>{{beam.get_downvalues.60}}</td> <td>{{beam.get_downvalues.61}}</td> <td>{{beam.get_downvalues.62}}</td> <td>{{beam.get_downvalues.63}}</td>
509 </tr>
510 </table>
511 </td>
512 </tr>
513 </table>
514 </td>
515 </tr>
516 </table>
517
518 <table class="abs_tx">
519 <tr>
520 <td> <b>TX</b>
521 <table id="tx_down" class="tx">
522 <tr>
523 <td> <b>North Quarter</b>
524 <table align="center" class="north_quarter">
525 <tr>
526 <td>{{beam.get_tx.down.0.0}}</td> <td>{{beam.get_tx.down.0.1}}</td> <td>{{beam.get_tx.down.0.2}}</td> <td>{{beam.get_tx.down.0.3}}</td>
527 </tr>
528 <tr>
529 <td>{{beam.get_tx.down.1.0}}</td> <td>{{beam.get_tx.down.1.1}}</td> <td>{{beam.get_tx.down.1.2}}</td> <td>{{beam.get_tx.down.1.3}}</td>
530 </tr>
531 <tr>
532 <td>{{beam.get_tx.down.2.0}}</td> <td>{{beam.get_tx.down.2.1}}</td> <td>{{beam.get_tx.down.2.2}}</td> <td>{{beam.get_tx.down.2.3}}</td>
533 </tr>
534 <tr>
535 <td>{{beam.get_tx.down.3.0}}</td> <td>{{beam.get_tx.down.3.1}}</td> <td>{{beam.get_tx.down.3.2}}</td> <td>{{beam.get_tx.down.3.3}}</td>
536 </tr>
537 </table>
538 </td>
539 <td> <b>East Quarter</b>
540 <table align="center" class="east_quarter">
541 <tr>
542 <td>{{beam.get_tx.down.0.4}}</td> <td>{{beam.get_tx.down.0.5}}</td> <td>{{beam.get_tx.down.0.6}}</td> <td>{{beam.get_tx.down.0.7}}</td>
543 </tr>
544 <tr>
545 <td>{{beam.get_tx.down.1.4}}</td> <td>{{beam.get_tx.down.1.5}}</td> <td>{{beam.get_tx.down.1.6}}</td> <td>{{beam.get_tx.down.1.7}}</td>
546 </tr>
547 <tr>
548 <td>{{beam.get_tx.down.2.4}}</td> <td>{{beam.get_tx.down.2.5}}</td> <td>{{beam.get_tx.down.2.6}}</td> <td>{{beam.get_tx.down.2.7}}</td>
549 </tr>
550 <tr>
551 <td>{{beam.get_tx.down.3.4}}</td> <td>{{beam.get_tx.down.3.5}}</td> <td>{{beam.get_tx.down.3.6}}</td> <td>{{beam.get_tx.down.3.7}}</td>
552 </tr>
553 </table>
554 </td>
555 </tr>
556 <tr>
557 <td> <b>West Quarter</b>
558 <table align="center" class="west_quarter">
559 <tr>
560 <td>{{beam.get_tx.down.4.0}}</td> <td>{{beam.get_tx.down.4.1}}</td> <td>{{beam.get_tx.down.4.2}}</td> <td>{{beam.get_tx.down.4.3}}</td>
561 </tr>
562 <tr>
563 <td>{{beam.get_tx.down.5.0}}</td> <td>{{beam.get_tx.down.5.1}}</td> <td>{{beam.get_tx.down.5.2}}</td> <td>{{beam.get_tx.down.5.3}}</td>
564 </tr>
565 <tr>
566 <td>{{beam.get_tx.down.6.0}}</td> <td>{{beam.get_tx.down.6.1}}</td> <td>{{beam.get_tx.down.6.2}}</td> <td>{{beam.get_tx.down.6.3}}</td>
567 </tr>
568 <tr>
569 <td>{{beam.get_tx.down.7.0}}</td> <td>{{beam.get_tx.down.7.1}}</td> <td>{{beam.get_tx.down.7.2}}</td> <td>{{beam.get_tx.down.7.3}}</td>
570 </tr>
571 </table>
572 </td>
573 <td> <b>South Quarter</b>
574 <table align="center" class="south_quarter">
575 <tr>
576 <td>{{beam.get_tx.down.4.4}}</td> <td>{{beam.get_tx.down.4.5}}</td> <td>{{beam.get_tx.down.4.6}}</td> <td>{{beam.get_tx.down.4.7}}</td>
577 </tr>
578 <tr>
579 <td>{{beam.get_tx.down.5.4}}</td> <td>{{beam.get_tx.down.5.5}}</td> <td>{{beam.get_tx.down.5.6}}</td> <td>{{beam.get_tx.down.5.7}}</td>
580 </tr>
581 <tr>
582 <td>{{beam.get_tx.down.6.4}}</td> <td>{{beam.get_tx.down.6.5}}</td> <td>{{beam.get_tx.down.6.6}}</td> <td>{{beam.get_tx.down.6.7}}</td>
583 </tr>
584 <tr>
585 <td>{{beam.get_tx.down.7.4}}</td> <td>{{beam.get_tx.down.7.5}}</td> <td>{{beam.get_tx.down.7.6}}</td> <td>{{beam.get_tx.down.7.7}}</td>
586 </tr>
587 </table>
588 </td>
589 </tr>
590 </table>
591 </td>
592 </tr>
593 </table>
594
595
596 <table class="abs_rx">
597 <tr>
598 <td> <b>RX</b>
599 <table id="rx_down" class="rx">
600 <tr>
601 <td> <b>North Quarter</b>
602 <table align="center" class="north_quarter">
603 <tr>
604 <td>{{beam.get_rx.down.0.0}}</td> <td>{{beam.get_rx.down.0.1}}</td> <td>{{beam.get_rx.down.0.2}}</td> <td>{{beam.get_rx.down.0.3}}</td>
605 </tr>
606 <tr>
607 <td>{{beam.get_rx.down.1.0}}</td> <td>{{beam.get_rx.down.1.1}}</td> <td>{{beam.get_rx.down.1.2}}</td> <td>{{beam.get_rx.down.1.3}}</td>
608 </tr>
609 <tr>
610 <td>{{beam.get_rx.down.2.0}}</td> <td>{{beam.get_rx.down.2.1}}</td> <td>{{beam.get_rx.down.2.2}}</td> <td>{{beam.get_rx.down.2.3}}</td>
611 </tr>
612 <tr>
613 <td>{{beam.get_rx.down.3.0}}</td> <td>{{beam.get_rx.down.3.1}}</td> <td>{{beam.get_rx.down.3.2}}</td> <td>{{beam.get_rx.down.3.3}}</td>
614 </tr>
615 </table>
616 </td>
617 <td> <b>East Quarter</b>
618 <table align="center" class="east_quarter">
619 <tr>
620 <td>{{beam.get_rx.down.0.4}}</td> <td>{{beam.get_rx.down.0.5}}</td> <td>{{beam.get_rx.down.0.6}}</td> <td>{{beam.get_rx.down.0.7}}</td>
621 </tr>
622 <tr>
623 <td>{{beam.get_rx.down.1.4}}</td> <td>{{beam.get_rx.down.1.5}}</td> <td>{{beam.get_rx.down.1.6}}</td> <td>{{beam.get_rx.down.1.7}}</td>
624 </tr>
625 <tr>
626 <td>{{beam.get_rx.down.2.4}}</td> <td>{{beam.get_rx.down.2.5}}</td> <td>{{beam.get_rx.down.2.6}}</td> <td>{{beam.get_rx.down.2.7}}</td>
627 </tr>
628 <tr>
629 <td>{{beam.get_rx.down.3.4}}</td> <td>{{beam.get_rx.down.3.5}}</td> <td>{{beam.get_rx.down.3.6}}</td> <td>{{beam.get_rx.down.3.7}}</td>
630 </tr>
631 </table>
632 </td>
633 </tr>
634 <tr>
635 <td> <b>West Quarter</b>
636 <table align="center" class="west_quarter">
637 <tr>
638 <td>{{beam.get_rx.down.4.0}}</td> <td>{{beam.get_rx.down.4.1}}</td> <td>{{beam.get_rx.down.4.2}}</td> <td>{{beam.get_rx.down.4.3}}</td>
639 </tr>
640 <tr>
641 <td>{{beam.get_rx.down.5.0}}</td> <td>{{beam.get_rx.down.5.1}}</td> <td>{{beam.get_rx.down.5.2}}</td> <td>{{beam.get_rx.down.5.3}}</td>
642 </tr>
643 <tr>
644 <td>{{beam.get_rx.down.6.0}}</td> <td>{{beam.get_rx.down.6.1}}</td> <td>{{beam.get_rx.down.6.2}}</td> <td>{{beam.get_rx.down.6.3}}</td>
645 </tr>
646 <tr>
647 <td>{{beam.get_rx.down.7.0}}</td> <td>{{beam.get_rx.down.7.1}}</td> <td>{{beam.get_rx.down.7.2}}</td> <td>{{beam.get_rx.down.7.3}}</td>
648 </tr>
649 </table>
650 </td>
651 <td> <b>South Quarter</b>
652 <table class="south_quarter">
653 <tr>
654 <td>{{beam.get_rx.down.4.4}}</td> <td>{{beam.get_rx.down.4.5}}</td> <td>{{beam.get_rx.down.4.6}}</td> <td>{{beam.get_rx.down.4.7}}</td>
655 </tr>
656 <tr>
657 <td>{{beam.get_rx.down.5.4}}</td> <td>{{beam.get_rx.down.5.5}}</td> <td>{{beam.get_rx.down.5.6}}</td> <td>{{beam.get_rx.down.5.7}}</td>
658 </tr>
659 <tr>
660 <td>{{beam.get_rx.down.6.4}}</td> <td>{{beam.get_rx.down.6.5}}</td> <td>{{beam.get_rx.down.6.6}}</td> <td>{{beam.get_rx.down.6.7}}</td>
661 </tr>
662 <tr>
663 <td>{{beam.get_rx.down.7.4}}</td> <td>{{beam.get_rx.down.7.5}}</td> <td>{{beam.get_rx.down.7.6}}</td> <td>{{beam.get_rx.down.7.7}}</td>
664 </tr>
665 </table>
666 </td>
667 </tr>
668 </table>
669 </td>
670 </tr>
671 </table>
672
673
674
675 <br>
676
677 <div id="down_ues" style="display: inline-block">
678 Ues: {{beam.get_down_ues}}
679 </div>
680
681 <div style="margin-left: 70px; display: inline-block">
682 <input type="checkbox" id="up_onlyrx" {% if beam.get_down_onlyrx == True %} checked="True" {% endif %} disabled>
683 Only RX: {{beam.get_down_onlyrx}}
684 </input>
685 </div>
686
687 </div>
688 </div>
689 </div>
690
691 {% endblock %}
@@ -0,0 +1,42
1 {% load bootstrap3 %}
2
3 {% if abs_beams %}
4
5 <div class="pull-right">
6 <button id="bt_toggle" type="button" class="btn btn-default btn-sm" >
7 Expand/Collapse
8 </button>
9 </div><br><br>
10
11
12 {% for beam in abs_beams %}
13 <div class="panel panel-default" id="panel-{{beam.id}}">
14 <div class="panel-heading" role="tab" id="heading{{beam.id}}">
15 <h4 class="panel-title">
16 <a role="button" onclick="beam_values(beam.id)" data-toggle="collapse" data-parent="#div_lines" href="#collapse{{beam.id}}" aria-expanded="true" aria-controls="collapse{{beam.id}}">
17 #{{forloop.counter}} Name: {{beam.name}}
18 </a>
19 {% if edit %}
20 <button id="bt_remove_beam-{{ beam.id }}" type="button" class="btn-xs btn-default pull-right" name="bt_remove_beam" value="{{beam.pk}}"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></button>
21 <button id="bt_edit_beam-{{ beam.id }}" type="button" class="btn-xs btn-default pull-right" name="bt_edit_beam" value="{{beam.pk}}"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></button>
22 {% endif %}
23 </h4>
24 </div>
25 <div id="collapse{{beam.id}}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading{{beam.id}}">
26 <div class="panel-body">
27 {% include "abs_beam_values.html" %}
28 {# bootstrap_form beam.form layout='horizontal' size='small' #}
29 <br>
30
31 <br>
32 <!--<button type="button" class="btn btn-sm btn-default" style="margin-left: 10px" name="bt_add_subline" value="{{line.pk}}">Add {{line.line_type.name}}</button>-->
33 {# endif #}
34
35 </div>
36 </div>
37 </div>
38 {% endfor%}
39
40 {% else %}
41 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
42 {% endif %}
@@ -0,0 +1,462
1 {% extends "dev_conf.html" %}
2
3 {% block extra-menu-actions %}
4 <li><a href="{{ dev_conf.get_absolute_url_plot }}" target="_blank"><span class="glyphicon glyphicon-picture" aria-hidden="true"></span> View Patterns </a></li>
5 <li><a href="{{ dev_conf.get_absolute_url_write }}"><span class="glyphicon glyphicon-download" aria-hidden="true"></span> Write</a></li>
6 {% endblock %}
7
8 {% block extra-content %}
9 <style>
10
11 .abs {
12 border: 2px solid #00334d;
13 vertical-align: center;
14 display: inline-block;
15 }
16 .abs tr:nth-child(1){
17 border-bottom: 1px dashed #00334d;
18 }
19 .abs tr{
20 border-bottom: 0px solid #00334d;
21 }
22 .abs td {
23 border-right: 1px dashed #00334d;
24 text-align: center;
25 padding: 5px;
26 }
27
28
29 .legend {
30 margin-left: 15px;
31 display: inline-block;
32 border: 2px solid #00334d;
33 vertical-align: top;
34 }
35 .legend th{
36 border-bottom: 1px dashed #00334d;
37 font-weight: bold;
38 vertical-align: center;
39 text-align: center;
40 }
41 .legend td {
42 padding: 2px;
43 text-align: center;
44 }
45
46
47 .north {
48 border: 2px solid #00334d;
49 vertical-align: center;
50 font-weight: bold;
51 }
52 .north tr{
53 border: 1px solid #ffffff;
54 background-color: #FF0000;
55 }
56 .north td{
57 border: 2px solid #e2e2e7;
58 text-align: center;
59 padding: 1px 15px 1px 15px;
60 }
61 .north tr:nth-child(even) td:nth-child(n){
62 border-bottom: 12px solid #e2e2e7;
63 }
64 .north td:nth-child(n) {
65 border-right: 12px solid #e2e2e7;
66 }
67 .north td:nth-last-child(4n+1) {
68 border-right: 2px solid #e2e2e7;
69 }
70 .north tr:nth-last-child(1) td:nth-child(n){
71 border-bottom: 3px solid #e2e2e7;
72 }
73
74 .north tr:nth-child(2) td:nth-child(2){
75 background-color: #00cc00;
76 }
77
78 .north tr:nth-child(2) td:nth-child(4){
79 background-color: #ee902c;
80 }
81
82
83
84 .east {
85 border: 2px solid #00334d;
86 vertical-align: center;
87 font-weight: bold;
88 }
89 .east tr{
90 border: 1px solid #ffffff;
91 background-color: #FF0000;
92 }
93 .east td{
94 border: 2px solid #e2e2e7;
95 text-align: center;
96 padding: 1px 15px 1px 15px;
97 }
98 .east tr:nth-child(even) td:nth-child(n){
99 border-bottom: 12px solid #e2e2e7;
100 }
101 .east td:nth-child(n) {
102 border-right: 12px solid #e2e2e7;
103 }
104 .east td:nth-last-child(4n+1) {
105 border-right: 2px solid #e2e2e7;
106 }
107 .east tr:nth-last-child(1) td:nth-child(n){
108 border-bottom: 3px solid #e2e2e7;
109 }
110
111 .east tr:nth-child(2) td:nth-child(2){
112 background-color: #00cc00;
113 }
114
115 .east tr:nth-child(2) td:nth-child(4){
116 background-color: #ee902c;
117 }
118
119
120 .west {
121 border: 2px solid #00334d;
122 vertical-align: center;
123 font-weight: bold;
124 }
125 .west tr{
126 border: 1px solid #ffffff;
127 background-color: #FF0000;
128 }
129 .west td{
130 border: 2px solid #e2e2e7;
131 text-align: center;
132 padding: 1px 15px 1px 15px;
133 }
134 .west tr:nth-child(even) td:nth-child(n){
135 border-bottom: 12px solid #e2e2e7;
136 }
137 .west td:nth-child(n) {
138 border-right: 12px solid #e2e2e7;
139 }
140 .west td:nth-last-child(4n+1) {
141 border-right: 2px solid #e2e2e7;
142 }
143 .west tr:nth-last-child(1) td:nth-child(n){
144 border-bottom: 3px solid #e2e2e7;
145 }
146
147 .west tr:nth-child(2) td:nth-child(2){
148 background-color: #00cc00;
149 }
150
151 .west tr:nth-child(2) td:nth-child(4){
152 background-color: #ee902c;
153 }
154
155
156 .south {
157 border: 2px solid #00334d;
158 vertical-align: center;
159 font-weight: bold;
160 }
161 .south tr{
162 border: 1px solid #ffffff;
163 background-color: #FF0000;
164 }
165 .south td{
166 border: 2px solid #e2e2e7;
167 text-align: center;
168 padding: 1px 15px 1px 15px;
169 }
170 .south tr:nth-child(even) td:nth-child(n){
171 border-bottom: 12px solid #e2e2e7;
172 }
173 .south td:nth-child(n) {
174 border-right: 12px solid #e2e2e7;
175 }
176 .south td:nth-last-child(4n+1) {
177 border-right: 2px solid #e2e2e7;
178 }
179 .south tr:nth-last-child(1) td:nth-child(n){
180 border-bottom: 3px solid #e2e2e7;
181 }
182
183 .south tr:nth-child(2) td:nth-child(2){
184 background-color: #00cc00;
185 }
186
187 .south tr:nth-child(2) td:nth-child(4){
188 background-color: #ee902c;
189 }
190
191
192
193 </style>
194
195 <h4>Beams:</h4>
196 {% if beams_id %}
197
198 <div class="container">
199 <ul class="nav nav-pills">
200
201 {% for beam in beams %}
202 <li {% if forloop.counter == 1 %} class="active" {% endif %}>
203 <a data-toggle="pill" id="button-{{ forloop.counter }}" href="#">{{ forloop.counter }}</a>
204 </li>
205 {% endfor %}
206
207 </ul>
208 </div>
209
210
211 <script>
212 $(document).ready(function() {
213
214 {% for beam in beams %}
215 $( "#button-{{ forloop.counter }}" ).click(function() {
216 //$(this).addClass('active');
217
218 var beam_upvalues = {{beam.get_upvalues}};
219 var beam_downvalues = {{beam.get_downvalues}};
220 //alert(beam_upvalues)
221 var table = document.getElementById('abs_pattern');
222 var cells = table.getElementsByTagName('td');
223 //alert(cells[99].textContent);
224
225 for (var i = 1, len = 30; i < len; i++) {
226 if ((i > 24) && (i<29)){
227 cells[i].innerHTML = beam_upvalues[i-1].toFixed(1);
228 cells[i+4].innerHTML = beam_downvalues[i-1].toFixed(1);
229 }
230 else if ((i > 16) && (i<21)){
231 cells[i].innerHTML = beam_upvalues[i-1].toFixed(1);
232 cells[i+4].innerHTML = beam_downvalues[i-1].toFixed(1);
233 }
234 else if ((i > 8) && (i<13)){
235 cells[i].innerHTML = beam_upvalues[i-1].toFixed(1);
236 cells[i+4].innerHTML = beam_downvalues[i-1].toFixed(1);
237 }
238 else if (i < 5) {
239 cells[i].innerHTML = beam_upvalues[i-1].toFixed(1);
240 cells[i+4].innerHTML = beam_downvalues[i-1].toFixed(1);
241 }
242 }
243
244 for (var i = 34, len = 63; i < len; i++) {
245 if ((i > 57) && (i<62)) {
246 cells[i].innerHTML = beam_upvalues[i-30].toFixed(1);
247 cells[i+4].innerHTML = beam_downvalues[i-30].toFixed(1);
248 }
249 if ((i > 49) && (i<54)) {
250 cells[i].innerHTML = beam_upvalues[i-30].toFixed(1);
251 cells[i+4].innerHTML = beam_downvalues[i-30].toFixed(1);
252 }
253 else if ((i > 41) && (i<46)) {
254 cells[i].innerHTML = beam_upvalues[i-30].toFixed(1);
255 cells[i+4].innerHTML = beam_downvalues[i-30].toFixed(1);
256 }
257 else if (i < 38) {
258 cells[i].innerHTML = beam_upvalues[i-30].toFixed(1);
259 cells[i+4].innerHTML = beam_downvalues[i-30].toFixed(1);
260 }
261 }
262
263 for (var i = 67, len = 96; i < len; i++) {
264 if ((i > 90) && (i<95)) {
265 cells[i].innerHTML = beam_upvalues[i-35].toFixed(1);
266 cells[i+4].innerHTML = beam_downvalues[i-35].toFixed(1);
267 }
268 else if ((i > 82) && (i<87)) {
269 cells[i].innerHTML = beam_upvalues[i-35].toFixed(1);
270 cells[i+4].innerHTML = beam_downvalues[i-35].toFixed(1);
271 }
272 else if ((i > 74) && (i<79)) {
273 cells[i].innerHTML = beam_upvalues[i-35].toFixed(1);
274 cells[i+4].innerHTML = beam_downvalues[i-35].toFixed(1);
275 }
276 else if (i < 71) {
277 cells[i].innerHTML = beam_upvalues[i-35].toFixed(1);
278 cells[i+4].innerHTML = beam_downvalues[i-35].toFixed(1);
279 }
280 }
281
282 for (var i = 100, len = 129; i < len; i++) {
283 if ((i > 123) && (i<128)) {
284 cells[i].innerHTML = beam_upvalues[i-64].toFixed(1);
285 cells[i+4].innerHTML = beam_downvalues[i-64].toFixed(1);
286 }
287 else if ((i > 115) && (i<120)) {
288 cells[i].innerHTML = beam_upvalues[i-64].toFixed(1);
289 cells[i+4].innerHTML = beam_downvalues[i-64].toFixed(1);
290 }
291 else if ((i > 107) && (i<112)) {
292 cells[i].innerHTML = beam_upvalues[i-64].toFixed(1);
293 cells[i+4].innerHTML = beam_downvalues[i-64].toFixed(1);
294 }
295 else if (i < 104) {
296 cells[i].innerHTML = beam_upvalues[i-64].toFixed(1);
297 cells[i+4].innerHTML = beam_downvalues[i-64].toFixed(1);
298 }
299 }
300
301 //$('#button-1').addClass("active");
302
303 });
304
305 {% endfor %}
306
307
308
309
310 //})
311
312 //function ChangeColor() {
313 // document.getElementById("button_1").style.backgroundColor = "#2c3e50";
314 // document.getElementById("button_1").style.color = "#ecf0f1";
315 //}
316 });
317 </script>
318
319
320
321 <br>
322
323 <table id="abs_pattern" class="abs">
324 <tr>
325 <td> <b>North Quarter</b>
326 <table class="north ">
327 <tr>
328 <td>{{beams.0.get_upvalues.0}}</td> <td>{{beams.0.get_upvalues.1}}</td> <td>{{beams.0.get_upvalues.2}}</td> <td>{{beams.0.get_upvalues.3}}</td>
329 </tr>
330 <tr>
331 <td>{{beams.0.get_downvalues.0}}</td> <td>{{beams.0.get_downvalues.1}}</td> <td>{{beams.0.get_downvalues.2}}</td> <td>{{beams.0.get_downvalues.3}}</td>
332 </tr>
333 <tr>
334 <td>{{beams.0.get_upvalues.8}}</td> <td>{{beams.0.get_upvalues.9}}</td> <td>{{beams.0.get_upvalues.10}}</td> <td>{{beams.0.get_upvalues.11}}</td>
335 </tr>
336 <tr>
337 <td>{{beams.0.get_downvalues.8}}</td> <td>{{beams.0.get_downvalues.9}}</td> <td>{{beams.0.get_downvalues.10}}</td> <td>{{beams.0.get_downvalues.11}}</td>
338 </tr>
339 <tr>
340 <td>{{beams.0.get_upvalues.16}}</td> <td>{{beams.0.get_upvalues.17}}</td> <td>{{beams.0.get_upvalues.18}}</td> <td>{{beams.0.get_upvalues.19}}</td>
341 </tr>
342 <tr>
343 <td>{{beams.0.get_downvalues.16}}</td> <td>{{beams.0.get_downvalues.17}}</td> <td>{{beams.0.get_downvalues.18}}</td> <td>{{beams.0.get_downvalues.19}}</td>
344 </tr>
345 <tr>
346 <td>{{beams.0.get_upvalues.24}}</td> <td>{{beams.0.get_upvalues.25}}</td> <td>{{beams.0.get_upvalues.26}}</td> <td>{{beams.0.get_upvalues.27}}</td>
347 </tr>
348 <tr>
349 <td>{{beams.0.get_downvalues.24}}</td> <td>{{beams.0.get_downvalues.25}}</td> <td>{{beams.0.get_downvalues.26}}</td> <td>{{beams.0.get_downvalues.27}}</td>
350 </tr>
351 </table>
352 </td>
353 <td> <b>East Quarter</b>
354 <table class="east ">
355 <tr>
356 <td>{{beams.0.get_upvalues.4}}</td> <td>{{beams.0.get_upvalues.5}}</td> <td>{{beams.0.get_upvalues.6}}</td> <td>{{beams.0.get_upvalues.7}}</td>
357 </tr>
358 <tr>
359 <td>{{beams.0.get_downvalues.4}}</td> <td>{{beams.0.get_downvalues.5}}</td> <td>{{beams.0.get_downvalues.6}}</td> <td>{{beams.0.get_downvalues.7}}</td>
360 </tr>
361 <tr>
362 <td>{{beams.0.get_upvalues.12}}</td> <td>{{beams.0.get_upvalues.13}}</td> <td>{{beams.0.get_upvalues.14}}</td> <td>{{beams.0.get_upvalues.15}}</td>
363 </tr>
364 <tr>
365 <td>{{beams.0.get_downvalues.12}}</td> <td>{{beams.0.get_downvalues.13}}</td> <td>{{beams.0.get_downvalues.14}}</td> <td>{{beams.0.get_downvalues.15}}</td>
366 </tr>
367 <tr>
368 <td>{{beams.0.get_upvalues.20}}</td> <td>{{beams.0.get_upvalues.21}}</td> <td>{{beams.0.get_upvalues.22}}</td> <td>{{beams.0.get_upvalues.23}}</td>
369 </tr>
370 <tr>
371 <td>{{beams.0.get_downvalues.20}}</td> <td>{{beams.0.get_downvalues.21}}</td> <td>{{beams.0.get_downvalues.22}}</td> <td>{{beams.0.get_downvalues.23}}</td>
372 </tr>
373 <tr>
374 <td>{{beams.0.get_upvalues.28}}</td> <td>{{beams.0.get_upvalues.29}}</td> <td>{{beams.0.get_upvalues.30}}</td> <td>{{beams.0.get_upvalues.31}}</td>
375 </tr>
376 <tr>
377 <td>{{beams.0.get_downvalues.28}}</td> <td>{{beams.0.get_downvalues.29}}</td> <td>{{beams.0.get_downvalues.30}}</td> <td>{{beams.0.get_downvalues.31}}</td>
378 </tr>
379 </table>
380 </td>
381 </tr>
382 <tr>
383 <td> <b>West Quarter</b>
384 <table class="west ">
385 <tr>
386 <td>{{beams.0.get_upvalues.32}}</td> <td>{{beams.0.get_upvalues.33}}</td> <td>{{beams.0.get_upvalues.34}}</td> <td>{{beams.0.get_upvalues.35}}</td>
387 </tr>
388 <tr>
389 <td>{{beams.0.get_downvalues.32}}</td> <td>{{beams.0.get_downvalues.33}}</td> <td>{{beams.0.get_downvalues.34}}</td> <td>{{beams.0.get_downvalues.35}}</td>
390 </tr>
391 <tr>
392 <td>{{beams.0.get_upvalues.40}}</td> <td>{{beams.0.get_upvalues.41}}</td> <td>{{beams.0.get_upvalues.42}}</td> <td>{{beams.0.get_upvalues.43}}</td>
393 </tr>
394 <tr>
395 <td>{{beams.0.get_downvalues.40}}</td> <td>{{beams.0.get_downvalues.41}}</td> <td>{{beams.0.get_downvalues.42}}</td> <td>{{beams.0.get_downvalues.43}}</td>
396 </tr>
397 <tr>
398 <td>{{beams.0.get_upvalues.48}}</td> <td>{{beams.0.get_upvalues.49}}</td> <td>{{beams.0.get_upvalues.50}}</td> <td>{{beams.0.get_upvalues.51}}</td>
399 </tr>
400 <tr>
401 <td>{{beams.0.get_downvalues.48}}</td> <td>{{beams.0.get_downvalues.49}}</td> <td>{{beams.0.get_downvalues.50}}</td> <td>{{beams.0.get_downvalues.51}}</td>
402 </tr>
403 <tr>
404 <td>{{beams.0.get_upvalues.56}}</td> <td>{{beams.0.get_upvalues.57}}</td> <td>{{beams.0.get_upvalues.58}}</td> <td>{{beams.0.get_upvalues.59}}</td>
405 </tr>
406 <tr>
407 <td>{{beams.0.get_downvalues.56}}</td> <td>{{beams.0.get_downvalues.57}}</td> <td>{{beams.0.get_downvalues.58}}</td> <td>{{beams.0.get_downvalues.59}}</td>
408 </tr>
409 </table>
410 </td>
411 <td> <b>South Quarter</b>
412 <table class="south ">
413 <tr>
414 <td>{{beams.0.get_upvalues.36}}</td> <td>{{beams.0.get_upvalues.37}}</td> <td>{{beams.0.get_upvalues.38}}</td> <td>{{beams.0.get_upvalues.39}}</td>
415 </tr>
416 <tr>
417 <td>{{beams.0.get_downvalues.36}}</td> <td>{{beams.0.get_downvalues.37}}</td> <td>{{beams.0.get_downvalues.38}}</td> <td>{{beams.0.get_downvalues.39}}</td>
418 </tr>
419 <tr>
420 <td>{{beams.0.get_upvalues.44}}</td> <td>{{beams.0.get_upvalues.45}}</td> <td>{{beams.0.get_upvalues.46}}</td> <td>{{beams.0.get_upvalues.47}}</td>
421 </tr>
422 <tr>
423 <td>{{beams.0.get_downvalues.44}}</td> <td>{{beams.0.get_downvalues.45}}</td> <td>{{beams.0.get_downvalues.46}}</td> <td>{{beams.0.get_downvalues.47}}</td>
424 </tr>
425 <tr>
426 <td>{{beams.0.get_upvalues.52}}</td> <td>{{beams.0.get_upvalues.53}}</td> <td>{{beams.0.get_upvalues.54}}</td> <td>{{beams.0.get_upvalues.55}}</td>
427 </tr>
428 <tr>
429 <td>{{beams.0.get_downvalues.52}}</td> <td>{{beams.0.get_downvalues.53}}</td> <td>{{beams.0.get_downvalues.54}}</td> <td>{{beams.0.get_downvalues.55}}</td>
430 </tr>
431 <tr>
432 <td>{{beams.0.get_upvalues.60}}</td> <td>{{beams.0.get_upvalues.61}}</td> <td>{{beams.0.get_upvalues.62}}</td> <td>{{beams.0.get_upvalues.63}}</td>
433 </tr>
434 <tr>
435 <td>{{beams.0.get_downvalues.60}}</td> <td>{{beams.0.get_downvalues.61}}</td> <td>{{beams.0.get_downvalues.62}}</td> <td>{{beams.0.get_downvalues.63}}</td>
436 </tr>
437 </table>
438 </td>
439 </tr>
440 </table>
441
442 <table class="legend">
443 <tr>
444 <th colspan="2">Legend</th>
445 </tr>
446 <tr>
447 <td style="color:#ff0000;"><i>RED</i></td><td>Disconnected</td>
448 </tr>
449 <tr>
450 <td style="color:#ee902c;"><i>ORANGE</i></td><td>Connected</td>
451 </tr>
452 <tr>
453 <td style="color:#00cc00;"><i>GREEN</i></td><td>Running</td>
454 </tr>
455 </table>
456
457 {% else %}
458 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
459 {% endif %}
460
461
462 {% endblock %}
This diff has been collapsed as it changes many lines, (876 lines changed) Show them Hide them
@@ -0,0 +1,876
1 {% load static %}
2 {% load bootstrap3 %}
3 {% load main_tags %}
4
5 {% block content %}
6 <style>
7
8 .abs {
9 border: 2px solid #00334d;
10 vertical-align: center;
11 display: inline-block;
12 font-size: 95%;
13 }
14
15 .abs tr{
16 border-bottom: 0px solid #00334d;
17 }
18
19 .abs td{
20 border-right: 0px solid #00334d;
21 text-align: center;
22 padding: 4px;
23 }
24
25 .pattern {
26 border: 2px solid #00334d;
27 vertical-align: center;
28 font-weight: bold;
29 text-align: center;
30 }
31 .pattern tr{
32 border: 1px solid #ffffff;
33 background-color: #ecf0f1;
34 }
35 .pattern td{
36 border: 2px solid #e2e2e7;
37 text-align: center;
38 }
39
40 .north_quarter{
41 border: 2px solid #00334d;
42 vertical-align: center;
43 font-weight: bold;
44 }
45 .north_quarter tr{
46 border: 1px solid #ffffff;
47 background-color: #ecf0f1;
48 }
49 .north_quarter td{
50 border: 2px solid #e2e2e7;
51 text-align: center;
52 }
53
54 .east_quarter{
55 border: 2px solid #00334d;
56 vertical-align: center;
57 font-weight: bold;
58 }
59 .east_quarter tr{
60 border: 1px solid #ffffff;
61 background-color: #ecf0f1;
62 }
63 .east_quarter td{
64 border: 2px solid #e2e2e7;
65 text-align: center;
66 }
67
68 .west_quarter{
69 border: 2px solid #00334d;
70 vertical-align: center;
71 font-weight: bold;
72 }
73 .west_quarter tr{
74 border: 1px solid #ffffff;
75 background-color: #ecf0f1;
76 }
77 .west_quarter td{
78 border: 2px solid #e2e2e7;
79 text-align: center;
80 }
81
82 .south_quarter{
83 border: 2px solid #00334d;
84 vertical-align: center;
85 font-weight: bold;
86 }
87 .south_quarter tr{
88 border: 1px solid #ffffff;
89 background-color: #ecf0f1;
90 }
91 .south_quarter td{
92 border: 2px solid #e2e2e7;
93 text-align: center;
94 }
95
96 .abs_tx {
97 border: 2px solid #00334d;
98 vertical-align: center;
99 display: inline-block;
100 vertical-align: top;
101 margin-left: 10px;
102 vertical-align: top;
103 font-size: 95%;
104 }
105
106
107 }
108 .abs_tx tr:nth-last-child(1){
109 border-bottom: 0px solid #00334d;
110 }
111 .abs_tx td {
112 text-align: center;
113 padding: 4px;
114 }
115
116 .abs_rx {
117 border: 2px solid #00334d;
118 vertical-align: center;
119 display: inline-block;
120 margin-left: 10px;
121 text-align: center;
122 font-size: 95%;
123 }
124
125
126 }
127 .abs_rx tr:nth-last-child(1){
128 border-bottom: 0px solid #00334d;
129 }
130 .abs_rx td {
131 text-align: center;
132 padding: 4px;
133 }
134
135 .tx {
136 border: 2px solid #00334d;
137 vertical-align: center;
138 font-weight: bold;
139 }
140 .tx tr{
141 border: 1px solid #ffffff;
142 background-color: #ecf0f1;
143 }
144 .tx td{
145 border: 2px solid #e2e2e7;
146 text-align: center;
147 }
148
149
150 .rx {
151 border: 2px solid #00334d;
152 vertical-align: center;
153 font-weight: bold;
154 }
155 .rx tr{
156 border: 1px solid #ffffff;
157 background-color: #ecf0f1;
158 }
159 .rx td{
160 border: 2px solid #e2e2e7;
161 text-align: center;
162 }
163
164 .pattern_image{
165 display: inline-block;
166 }
167
168 </style>
169
170 <script>
171 $(document).ready(function() {
172
173 {% for beam in abs_beams %}
174 $( "#button-{{ forloop.counter }}" ).click(function() {
175
176 var antenna_upvalues = {{beam.antenna_upvalues}};
177 var antenna_downvalues = {{beam.antenna_downvalues}};
178
179 var table_up = document.getElementById('antenna_up');
180 var cells_up = table_up.getElementsByTagName('td');
181
182 var table_down = document.getElementById('antenna_down');
183 var cells_down = table_down.getElementsByTagName('td');
184
185 //TX Tables
186 var tx_upvalues = {{beam.get_tx.up}};
187 var tx_downvalues = {{beam.get_tx.down}};
188
189 var tabletx_up = document.getElementById('tx_up');
190 var cellstx_up = tabletx_up.getElementsByTagName('td');
191 var tabletx_down = document.getElementById('tx_down');
192 var cellstx_down = tabletx_down.getElementsByTagName('td');
193
194 //RX Tables
195 var rx_upvalues = {{beam.get_rx.up}};
196 var rx_downvalues = {{beam.get_rx.down}};
197
198 var tablerx_up = document.getElementById('rx_up');
199 var cellsrx_up = tablerx_up.getElementsByTagName('td');
200 var tablerx_down = document.getElementById('rx_down');
201 var cellsrx_down = tablerx_down.getElementsByTagName('td');
202
203 //alert(cells_down[51].textContent);
204 //alert(cells_up[51].textContent);
205
206 for (var i = 1, len = 17; i < len; i++) {
207 if ((i > 12) && (i<17)){
208 cells_up[i].innerHTML = antenna_upvalues[3][i-13].toFixed(1);
209 cells_down[i].innerHTML = antenna_downvalues[3][i-13].toFixed(1);
210 cellstx_up[i].innerHTML = tx_upvalues[3][i-13];
211 cellstx_down[i].innerHTML = tx_downvalues[3][i-13];
212 cellsrx_up[i].innerHTML = rx_upvalues[3][i-13];
213 cellsrx_down[i].innerHTML = rx_downvalues[3][i-13];
214 }
215 else if ((i > 8) && (i<13)){
216 cells_up[i].innerHTML = antenna_upvalues[2][i-9].toFixed(1);
217 cells_down[i].innerHTML = antenna_downvalues[2][i-9].toFixed(1);
218 cellstx_up[i].innerHTML = tx_upvalues[2][i-9];
219 cellstx_down[i].innerHTML = tx_downvalues[2][i-9];
220 cellsrx_up[i].innerHTML = rx_upvalues[2][i-9];
221 cellsrx_down[i].innerHTML = rx_downvalues[2][i-9];
222 }
223 else if ((i > 4) && (i<9)){
224 cells_up[i].innerHTML = antenna_upvalues[1][i-5].toFixed(1);
225 cells_down[i].innerHTML = antenna_downvalues[1][i-5].toFixed(1);
226 cellstx_up[i].innerHTML = tx_upvalues[1][i-5];
227 cellstx_down[i].innerHTML = tx_downvalues[1][i-5];
228 cellsrx_up[i].innerHTML = rx_upvalues[1][i-5];
229 cellsrx_down[i].innerHTML = rx_downvalues[1][i-5];
230 }
231 else if (i < 5) {
232 cells_up[i].innerHTML = antenna_upvalues[0][i-1].toFixed(1);
233 cells_down[i].innerHTML = antenna_downvalues[0][i-1].toFixed(1);
234 cellstx_up[i].innerHTML = tx_upvalues[0][i-1];
235 cellstx_down[i].innerHTML = tx_downvalues[0][i-1];
236 cellsrx_up[i].innerHTML = rx_upvalues[0][i-1];
237 cellsrx_down[i].innerHTML = rx_downvalues[0][i-1];
238 }
239 }
240
241 for (var i = 18, len = 34; i < len; i++) {
242 if ((i > 29) && (i<34)) {
243 cells_up[i].innerHTML = antenna_upvalues[3][i-26].toFixed(1);
244 cells_down[i].innerHTML = antenna_downvalues[3][i-26].toFixed(1);
245 cellstx_up[i].innerHTML = tx_upvalues[3][i-26];
246 cellstx_down[i].innerHTML = tx_downvalues[3][i-26];
247 cellsrx_up[i].innerHTML = rx_upvalues[3][i-26];
248 cellsrx_down[i].innerHTML = rx_downvalues[3][i-26];
249 }
250 if ((i > 25) && (i<30)) {
251 cells_up[i].innerHTML = antenna_upvalues[2][i-22].toFixed(1);
252 cells_down[i].innerHTML = antenna_downvalues[2][i-22].toFixed(1);
253 cellstx_up[i].innerHTML = tx_upvalues[2][i-22];
254 cellstx_down[i].innerHTML = tx_downvalues[2][i-22];
255 cellsrx_up[i].innerHTML = rx_upvalues[2][i-22];
256 cellsrx_down[i].innerHTML = rx_downvalues[2][i-22];
257 }
258 else if ((i > 21) && (i<26)) {
259 cells_up[i].innerHTML = antenna_upvalues[1][i-18].toFixed(1);
260 cells_down[i].innerHTML = antenna_downvalues[1][i-18].toFixed(1);
261 cellstx_up[i].innerHTML = tx_upvalues[1][i-18];
262 cellstx_down[i].innerHTML = tx_downvalues[1][i-18];
263 cellsrx_up[i].innerHTML = rx_upvalues[1][i-18];
264 cellsrx_down[i].innerHTML = rx_downvalues[1][i-18];
265 }
266 else if (i < 22) {
267 cells_up[i].innerHTML = antenna_upvalues[0][i-14].toFixed(1);
268 cells_down[i].innerHTML = antenna_downvalues[0][i-14].toFixed(1);
269 cellstx_up[i].innerHTML = tx_upvalues[0][i-14];
270 cellstx_down[i].innerHTML = tx_downvalues[0][i-14];
271 cellsrx_up[i].innerHTML = rx_upvalues[0][i-14];
272 cellsrx_down[i].innerHTML = rx_downvalues[0][i-14];
273 }
274 }
275
276 for (var i = 35, len = 51; i < len; i++) {
277 if ((i > 46) && (i<51)) {
278 cells_up[i].innerHTML = antenna_upvalues[7][i-47].toFixed(1);
279 cells_down[i].innerHTML = antenna_downvalues[7][i-47].toFixed(1);
280 cellstx_up[i].innerHTML = tx_upvalues[7][i-47];
281 cellstx_down[i].innerHTML = tx_downvalues[7][i-47];
282 cellsrx_up[i].innerHTML = rx_upvalues[7][i-47];
283 cellsrx_down[i].innerHTML = rx_downvalues[7][i-47];
284 }
285 else if ((i > 42) && (i<47)) {
286 cells_up[i].innerHTML = antenna_upvalues[6][i-43].toFixed(1);
287 cells_down[i].innerHTML = antenna_downvalues[6][i-43].toFixed(1);
288 cellstx_up[i].innerHTML = tx_upvalues[6][i-43];
289 cellstx_down[i].innerHTML = tx_downvalues[6][i-43];
290 cellsrx_up[i].innerHTML = rx_upvalues[6][i-43];
291 cellsrx_down[i].innerHTML = rx_downvalues[6][i-43];
292 }
293 else if ((i > 38) && (i<43)) {
294 cells_up[i].innerHTML = antenna_upvalues[5][i-39].toFixed(1);
295 cells_down[i].innerHTML = antenna_downvalues[5][i-39].toFixed(1);
296 cellstx_up[i].innerHTML = tx_upvalues[5][i-39];
297 cellstx_down[i].innerHTML = tx_downvalues[5][i-39];
298 cellsrx_up[i].innerHTML = rx_upvalues[5][i-39];
299 cellsrx_down[i].innerHTML = rx_downvalues[5][i-39];
300 }
301 else if (i < 39) {
302 cells_up[i].innerHTML = antenna_upvalues[4][i-35].toFixed(1);
303 cells_down[i].innerHTML = antenna_downvalues[4][i-35].toFixed(1);
304 cellstx_up[i].innerHTML = tx_upvalues[4][i-35];
305 cellstx_down[i].innerHTML = tx_downvalues[4][i-35];
306 cellsrx_up[i].innerHTML = rx_upvalues[4][i-35];
307 cellsrx_down[i].innerHTML = rx_downvalues[4][i-35];
308 }
309 }
310
311 for (var i = 52, len = 68; i < len; i++) {
312 if ((i > 63) && (i<68)) {
313 cells_up[i].innerHTML = antenna_upvalues[7][i-60].toFixed(1);
314 cells_down[i].innerHTML = antenna_downvalues[7][i-60].toFixed(1);
315 cellstx_up[i].innerHTML = tx_upvalues[7][i-60];
316 cellstx_down[i].innerHTML = tx_downvalues[7][i-60];
317 cellsrx_up[i].innerHTML = rx_upvalues[7][i-60];
318 cellsrx_down[i].innerHTML = rx_downvalues[7][i-60];
319 }
320 else if ((i > 59) && (i<64)) {
321 cells_up[i].innerHTML = antenna_upvalues[6][i-56].toFixed(1);
322 cells_down[i].innerHTML = antenna_downvalues[6][i-56].toFixed(1);
323 cellstx_up[i].innerHTML = tx_upvalues[6][i-56];
324 cellstx_down[i].innerHTML = tx_downvalues[6][i-56];
325 cellsrx_up[i].innerHTML = rx_upvalues[6][i-56];
326 cellsrx_down[i].innerHTML = rx_downvalues[6][i-56];
327 }
328 else if ((i > 55) && (i<60)) {
329 cells_up[i].innerHTML = antenna_upvalues[5][i-52].toFixed(1);
330 cells_down[i].innerHTML = antenna_downvalues[5][i-52].toFixed(1);
331 cellstx_up[i].innerHTML = tx_upvalues[5][i-52];
332 cellstx_down[i].innerHTML = tx_downvalues[5][i-52];
333 cellsrx_up[i].innerHTML = rx_upvalues[5][i-52];
334 cellsrx_down[i].innerHTML = rx_downvalues[5][i-52];
335 }
336 else if (i < 56) {
337 cells_up[i].innerHTML = antenna_upvalues[4][i-48].toFixed(1);
338 cells_down[i].innerHTML = antenna_downvalues[4][i-48].toFixed(1);
339 cellstx_up[i].innerHTML = tx_upvalues[4][i-48];
340 cellstx_down[i].innerHTML = tx_downvalues[4][i-48];
341 cellsrx_up[i].innerHTML = rx_upvalues[4][i-48];
342 cellsrx_down[i].innerHTML = rx_downvalues[4][i-48];
343 }
344 }
345
346 var up_ues = document.getElementById('up_ues');
347 up_ues.innerHTML = "{{beam.get_up_ues}}";
348 var down_ues = document.getElementById('down_ues');
349 down_ues.innerHTML = "{{beam.get_down_ues}}";
350
351 });
352
353 {% endfor %}
354
355 });
356 </script>
357
358
359 <div id="UP" class="panel-group">
360 <div class="panel panel-default">
361 <div class="panel-heading">UP</div>
362 <div class="panel-body">
363 <table class="abs">
364 <tr>
365 <td> <b>Antenna</b>
366 <table id="antenna_up" class="pattern">
367 <tr>
368 <td> North Quarter
369 <table class="north_quarter">
370 <tr>
371 <td>{{abs_beams.0.get_upvalues.0}}</td> <td>{{abs_beams.0.get_upvalues.1}}</td> <td>{{abs_beams.0.get_upvalues.2}}</td> <td>{{abs_beams.0.get_upvalues.3}}</td>
372 </tr>
373 <tr>
374 <td>{{abs_beams.0.get_upvalues.8}}</td> <td>{{abs_beams.0.get_upvalues.9}}</td> <td>{{abs_beams.0.get_upvalues.10}}</td> <td>{{abs_beams.0.get_upvalues.11}}</td>
375 </tr>
376 <tr>
377 <td>{{abs_beams.0.get_upvalues.16}}</td> <td>{{abs_beams.0.get_upvalues.17}}</td> <td>{{abs_beams.0.get_upvalues.18}}</td> <td>{{abs_beams.0.get_upvalues.19}}</td>
378 </tr>
379 <tr>
380 <td>{{abs_beams.0.get_upvalues.24}}</td> <td>{{abs_beams.0.get_upvalues.25}}</td> <td>{{abs_beams.0.get_upvalues.26}}</td> <td>{{abs_beams.0.get_upvalues.27}}</td>
381 </tr>
382 </table>
383 </td>
384 <td> East Quarter
385 <table class="east_quarter">
386 <tr>
387 <td>{{abs_beams.0.get_upvalues.4}}</td> <td>{{abs_beams.0.get_upvalues.5}}</td> <td>{{abs_beams.0.get_upvalues.6}}</td> <td>{{abs_beams.0.get_upvalues.7}}</td>
388 </tr>
389 <tr>
390 <td>{{abs_beams.0.get_upvalues.12}}</td> <td>{{abs_beams.0.get_upvalues.13}}</td> <td>{{abs_beams.0.get_upvalues.14}}</td> <td>{{abs_beams.0.get_upvalues.15}}</td>
391 </tr>
392 <tr>
393 <td>{{abs_beams.0.get_upvalues.20}}</td> <td>{{abs_beams.0.get_upvalues.21}}</td> <td>{{abs_beams.0.get_upvalues.22}}</td> <td>{{abs_beams.0.get_upvalues.23}}</td>
394 </tr>
395 <tr>
396 <td>{{abs_beams.0.get_upvalues.28}}</td> <td>{{abs_beams.0.get_upvalues.29}}</td> <td>{{abs_beams.0.get_upvalues.30}}</td> <td>{{abs_beams.0.get_upvalues.31}}</td>
397 </tr>
398 </table>
399 </td>
400 </tr>
401 <tr>
402 <td> West Quarter
403 <table class="west_quarter">
404 <tr>
405 <td>{{abs_beams.0.get_upvalues.32}}</td> <td>{{abs_beams.0.get_upvalues.33}}</td> <td>{{abs_beams.0.get_upvalues.34}}</td> <td>{{abs_beams.0.get_upvalues.35}}</td>
406 </tr>
407 <tr>
408 <td>{{abs_beams.0.get_upvalues.40}}</td> <td>{{abs_beams.0.get_upvalues.41}}</td> <td>{{abs_beams.0.get_upvalues.42}}</td> <td>{{abs_beams.0.get_upvalues.43}}</td>
409 </tr>
410 <tr>
411 <td>{{abs_beams.0.get_upvalues.48}}</td> <td>{{abs_beams.0.get_upvalues.49}}</td> <td>{{abs_beams.0.get_upvalues.50}}</td> <td>{{abs_beams.0.get_upvalues.51}}</td>
412 </tr>
413 <tr>
414 <td>{{abs_beams.0.get_upvalues.56}}</td> <td>{{abs_beams.0.get_upvalues.57}}</td> <td>{{abs_beams.0.get_upvalues.58}}</td> <td>{{abs_beams.0.get_upvalues.59}}</td>
415 </tr>
416 </table>
417 </td>
418 <td> South Quarter
419 <table class="south_quarter">
420 <tr>
421 <td>{{abs_beams.0.get_upvalues.36}}</td> <td>{{abs_beams.0.get_upvalues.37}}</td> <td>{{abs_beams.0.get_upvalues.38}}</td> <td>{{abs_beams.0.get_upvalues.39}}</td>
422 </tr>
423 <tr>
424 <td>{{abs_beams.0.get_upvalues.44}}</td> <td>{{abs_beams.0.get_upvalues.45}}</td> <td>{{abs_beams.0.get_upvalues.46}}</td> <td>{{abs_beams.0.get_upvalues.47}}</td>
425 </tr>
426 <tr>
427 <td>{{abs_beams.0.get_upvalues.52}}</td> <td>{{abs_beams.0.get_upvalues.53}}</td> <td>{{abs_beams.0.get_upvalues.54}}</td> <td>{{abs_beams.0.get_upvalues.55}}</td>
428 </tr>
429 <tr>
430 <td>{{abs_beams.0.get_upvalues.60}}</td> <td>{{abs_beams.0.get_upvalues.61}}</td> <td>{{abs_beams.0.get_upvalues.62}}</td> <td>{{abs_beams.0.get_upvalues.63}}</td>
431 </tr>
432 </table>
433 </td>
434 </tr>
435 </table>
436 </td>
437 </tr>
438 </table>
439
440
441 <table class="abs_tx">
442 <tr>
443 <td> <b>TX</b>
444 <table id="tx_up" class="tx">
445 <tr>
446 <td> North Quarter
447 <table align="center" class="north_quarter">
448 <tr>
449 <td>{{abs_beams.0.get_tx.up.0.0}}</td> <td>{{abs_beams.0.get_tx.up.0.1}}</td> <td>{{abs_beams.0.get_tx.up.0.2}}</td> <td>{{abs_beams.0.get_tx.up.0.3}}</td>
450 </tr>
451 <tr>
452 <td>{{abs_beams.0.get_tx.up.1.0}}</td> <td>{{abs_beams.0.get_tx.up.1.1}}</td> <td>{{abs_beams.0.get_tx.up.1.2}}</td> <td>{{abs_beams.0.get_tx.up.1.3}}</td>
453 </tr>
454 <tr>
455 <td>{{abs_beams.0.get_tx.up.2.0}}</td> <td>{{abs_beams.0.get_tx.up.2.1}}</td> <td>{{abs_beams.0.get_tx.up.2.2}}</td> <td>{{abs_beams.0.get_tx.up.2.3}}</td>
456 </tr>
457 <tr>
458 <td>{{abs_beams.0.get_tx.up.3.0}}</td> <td>{{abs_beams.0.get_tx.up.3.1}}</td> <td>{{abs_beams.0.get_tx.up.3.2}}</td> <td>{{abs_beams.0.get_tx.up.3.3}}</td>
459 </tr>
460 </table>
461 </td>
462 <td> East Quarter
463 <table align="center" class="east_quarter">
464 <tr>
465 <td>{{abs_beams.0.get_tx.up.0.4}}</td> <td>{{abs_beams.0.get_tx.up.0.5}}</td> <td>{{abs_beams.0.get_tx.up.0.6}}</td> <td>{{abs_beams.0.get_tx.up.0.7}}</td>
466 </tr>
467 <tr>
468 <td>{{abs_beams.0.get_tx.up.1.4}}</td> <td>{{abs_beams.0.get_tx.up.1.5}}</td> <td>{{abs_beams.0.get_tx.up.1.6}}</td> <td>{{abs_beams.0.get_tx.up.1.7}}</td>
469 </tr>
470 <tr>
471 <td>{{abs_beams.0.get_tx.up.2.4}}</td> <td>{{abs_beams.0.get_tx.up.2.5}}</td> <td>{{abs_beams.0.get_tx.up.2.6}}</td> <td>{{abs_beams.0.get_tx.up.2.7}}</td>
472 </tr>
473 <tr>
474 <td>{{abs_beams.0.get_tx.up.3.4}}</td> <td>{{abs_beams.0.get_tx.up.3.5}}</td> <td>{{abs_beams.0.get_tx.up.3.6}}</td> <td>{{abs_beams.0.get_tx.up.3.7}}</td>
475 </tr>
476 </table>
477 </td>
478 </tr>
479 <tr>
480 <td> West Quarter
481 <table align="center" class="west_quarter">
482 <tr>
483 <td>{{abs_beams.0.get_tx.up.4.0}}</td> <td>{{abs_beams.0.get_tx.up.4.1}}</td> <td>{{abs_beams.0.get_tx.up.4.2}}</td> <td>{{abs_beams.0.get_tx.up.4.3}}</td>
484 </tr>
485 <tr>
486 <td>{{abs_beams.0.get_tx.up.5.0}}</td> <td>{{abs_beams.0.get_tx.up.5.1}}</td> <td>{{abs_beams.0.get_tx.up.5.2}}</td> <td>{{abs_beams.0.get_tx.up.5.3}}</td>
487 </tr>
488 <tr>
489 <td>{{abs_beams.0.get_tx.up.6.0}}</td> <td>{{abs_beams.0.get_tx.up.6.1}}</td> <td>{{abs_beams.0.get_tx.up.6.2}}</td> <td>{{abs_beams.0.get_tx.up.6.3}}</td>
490 </tr>
491 <tr>
492 <td>{{abs_beams.0.get_tx.up.7.0}}</td> <td>{{abs_beams.0.get_tx.up.7.1}}</td> <td>{{abs_beams.0.get_tx.up.7.2}}</td> <td>{{abs_beams.0.get_tx.up.7.3}}</td>
493 </tr>
494 </table>
495 </td>
496 <td> South Quarter
497 <table align="center" class="south_quarter">
498 <tr>
499 <td>{{abs_beams.0.get_tx.up.4.4}}</td> <td>{{abs_beams.0.get_tx.up.4.5}}</td> <td>{{abs_beams.0.get_tx.up.4.6}}</td> <td>{{abs_beams.0.get_tx.up.4.7}}</td>
500 </tr>
501 <tr>
502 <td>{{abs_beams.0.get_tx.up.5.4}}</td> <td>{{abs_beams.0.get_tx.up.5.5}}</td> <td>{{abs_beams.0.get_tx.up.5.6}}</td> <td>{{abs_beams.0.get_tx.up.5.7}}</td>
503 </tr>
504 <tr>
505 <td>{{abs_beams.0.get_tx.up.6.4}}</td> <td>{{abs_beams.0.get_tx.up.6.5}}</td> <td>{{abs_beams.0.get_tx.up.6.6}}</td> <td>{{abs_beams.0.get_tx.up.6.7}}</td>
506 </tr>
507 <tr>
508 <td>{{abs_beams.0.get_tx.up.7.4}}</td> <td>{{abs_beams.0.get_tx.up.7.5}}</td> <td>{{abs_beams.0.get_tx.up.7.6}}</td> <td>{{abs_beams.0.get_tx.up.7.7}}</td>
509 </tr>
510 </table>
511 </td>
512 </tr>
513 </table>
514 </td>
515 </tr>
516 </table>
517
518
519 <table class="abs_rx">
520 <tr>
521 <td> <b>RX</b>
522 <table id="rx_up" class="rx">
523 <tr>
524 <td> North Quarter
525 <table align="center" class="north_quarter">
526 <tr>
527 <td>{{abs_beams.0.get_rx.up.0.0}}</td> <td>{{abs_beams.0.get_rx.up.0.1}}</td> <td>{{abs_beams.0.get_rx.up.0.2}}</td> <td>{{abs_beams.0.get_rx.up.0.3}}</td>
528 </tr>
529 <tr>
530 <td>{{abs_beams.0.get_rx.up.1.0}}</td> <td>{{abs_beams.0.get_rx.up.1.1}}</td> <td>{{abs_beams.0.get_rx.up.1.2}}</td> <td>{{abs_beams.0.get_rx.up.1.3}}</td>
531 </tr>
532 <tr>
533 <td>{{abs_beams.0.get_rx.up.2.0}}</td> <td>{{abs_beams.0.get_rx.up.2.1}}</td> <td>{{abs_beams.0.get_rx.up.2.2}}</td> <td>{{abs_beams.0.get_rx.up.2.3}}</td>
534 </tr>
535 <tr>
536 <td>{{abs_beams.0.get_rx.up.3.0}}</td> <td>{{abs_beams.0.get_rx.up.3.1}}</td> <td>{{abs_beams.0.get_rx.up.3.2}}</td> <td>{{abs_beams.0.get_rx.up.3.3}}</td>
537 </tr>
538 </table>
539 </td>
540 <td> East Quarter
541 <table align="center" class="east_quarter">
542 <tr>
543 <td>{{abs_beams.0.get_rx.up.0.4}}</td> <td>{{abs_beams.0.get_rx.up.0.5}}</td> <td>{{abs_beams.0.get_rx.up.0.6}}</td> <td>{{abs_beams.0.get_rx.up.0.7}}</td>
544 </tr>
545 <tr>
546 <td>{{abs_beams.0.get_rx.up.1.4}}</td> <td>{{abs_beams.0.get_rx.up.1.5}}</td> <td>{{abs_beams.0.get_rx.up.1.6}}</td> <td>{{abs_beams.0.get_rx.up.1.7}}</td>
547 </tr>
548 <tr>
549 <td>{{abs_beams.0.get_rx.up.2.4}}</td> <td>{{abs_beams.0.get_rx.up.2.5}}</td> <td>{{abs_beams.0.get_rx.up.2.6}}</td> <td>{{abs_beams.0.get_rx.up.2.7}}</td>
550 </tr>
551 <tr>
552 <td>{{abs_beams.0.get_rx.up.3.4}}</td> <td>{{abs_beams.0.get_rx.up.3.5}}</td> <td>{{abs_beams.0.get_rx.up.3.6}}</td> <td>{{abs_beams.0.get_rx.up.3.7}}</td>
553 </tr>
554 </table>
555 </td>
556 </tr>
557 <tr>
558 <td> West Quarter
559 <table align="center" class="west_quarter">
560 <tr>
561 <td>{{abs_beams.0.get_rx.up.4.0}}</td> <td>{{abs_beams.0.get_rx.up.4.1}}</td> <td>{{abs_beams.0.get_rx.up.4.2}}</td> <td>{{abs_beams.0.get_rx.up.4.3}}</td>
562 </tr>
563 <tr>
564 <td>{{abs_beams.0.get_rx.up.5.0}}</td> <td>{{abs_beams.0.get_rx.up.5.1}}</td> <td>{{abs_beams.0.get_rx.up.5.2}}</td> <td>{{abs_beams.0.get_rx.up.5.3}}</td>
565 </tr>
566 <tr>
567 <td>{{abs_beams.0.get_rx.up.6.0}}</td> <td>{{abs_beams.0.get_rx.up.6.1}}</td> <td>{{abs_beams.0.get_rx.up.6.2}}</td> <td>{{abs_beams.0.get_rx.up.6.3}}</td>
568 </tr>
569 <tr>
570 <td>{{abs_beams.0.get_rx.up.7.0}}</td> <td>{{abs_beams.0.get_rx.up.7.1}}</td> <td>{{abs_beams.0.get_rx.up.7.2}}</td> <td>{{abs_beams.0.get_rx.up.7.3}}</td>
571 </tr>
572 </table>
573 </td>
574 <td> South Quarter
575 <table align="center" class="south_quarter">
576 <tr>
577 <td>{{abs_beams.0.get_rx.up.4.4}}</td> <td>{{abs_beams.0.get_rx.up.4.5}}</td> <td>{{abs_beams.0.get_rx.up.4.6}}</td> <td>{{abs_beams.0.get_rx.up.4.7}}</td>
578 </tr>
579 <tr>
580 <td>{{abs_beams.0.get_rx.up.5.4}}</td> <td>{{abs_beams.0.get_rx.up.5.5}}</td> <td>{{abs_beams.0.get_rx.up.5.6}}</td> <td>{{abs_beams.0.get_rx.up.5.7}}</td>
581 </tr>
582 <tr>
583 <td>{{abs_beams.0.get_rx.up.6.4}}</td> <td>{{abs_beams.0.get_rx.up.6.5}}</td> <td>{{abs_beams.0.get_rx.up.6.6}}</td> <td>{{abs_beams.0.get_rx.up.6.7}}</td>
584 </tr>
585 <tr>
586 <td>{{abs_beams.0.get_rx.up.7.4}}</td> <td>{{abs_beams.0.get_rx.up.7.5}}</td> <td>{{abs_beams.0.get_rx.up.7.6}}</td> <td>{{abs_beams.0.get_rx.up.7.7}}</td>
587 </tr>
588 </table>
589 </td>
590 </tr>
591 </table>
592 </td>
593 </tr>
594 </table>
595
596 {% if not edit %}
597 {% include "abs_pattern_img.html" %}
598 {% endif %}
599
600 <br>
601
602 <div id="up_ues" style="display: inline-block">
603 Ues: {{abs_beams.0.get_up_ues}}
604 </div>
605
606 <div style="margin-left: 70px; display: inline-block">
607 <input type="checkbox" id="up_onlyrx" {% if abs_beams.0.get_up_onlyrx == True %} checked="True" {% endif %} disabled>
608 Only RX: {{abs_beams.0.get_up_onlyrx}}
609 </input>
610 </div>
611
612 </div>
613 </div>
614 </div>
615
616 <div id="DOWN" class="panel-group">
617 <div class="panel panel-default">
618 <div class="panel-heading">DOWN</div>
619 <div class="panel-body">
620 <table class="abs">
621 <tr>
622 <td> <b>Antenna</b>
623 <table id="antenna_down" class="pattern">
624 <tr>
625 <td> <b>North Quarter</b>
626 <table class="north_quarter">
627 <tr>
628 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
629 </tr>
630 <tr>
631 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
632 </tr>
633 <tr>
634 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
635 </tr>
636 <tr>
637 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
638 </tr>
639 </table>
640 </td>
641 <td> <b>East Quarter</b>
642 <table class="east_quarter">
643 <tr>
644 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
645 </tr>
646 <tr>
647 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
648 </tr>
649 <tr>
650 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
651 </tr>
652 <tr>
653 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
654 </tr>
655 </table>
656 </td>
657 </tr>
658 <tr>
659 <td> <b>West Quarter</b>
660 <table class="west_quarter">
661 <tr>
662 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
663 </tr>
664 <tr>
665 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
666 </tr>
667 <tr>
668 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
669 </tr>
670 <tr>
671 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
672 </tr>
673 </table>
674 </td>
675 <td> <b>South Quarter</b>
676 <table class="south_quarter">
677 <tr>
678 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
679 </tr>
680 <tr>
681 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
682 </tr>
683 <tr>
684 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
685 </tr>
686 <tr>
687 <td>0.0</td> <td>0.0</td> <td>0.0</td> <td>0.0</td>
688 </tr>
689 </table>
690 </td>
691 </tr>
692 </table>
693 </td>
694 </tr>
695 </table>
696
697 <table class="abs_tx">
698 <tr>
699 <td> <b>TX</b>
700 <table id="tx_down" class="tx">
701 <tr>
702 <td> <b>North Quarter</b>
703 <table align="center" class="north_quarter">
704 <tr>
705 <td>{{abs_beams.0.get_tx.down.0.0}}</td> <td>{{abs_beams.0.get_tx.down.0.1}}</td> <td>{{abs_beams.0.get_tx.down.0.2}}</td> <td>{{abs_beams.0.get_tx.down.0.3}}</td>
706 </tr>
707 <tr>
708 <td>{{abs_beams.0.get_tx.down.1.0}}</td> <td>{{abs_beams.0.get_tx.down.1.1}}</td> <td>{{abs_beams.0.get_tx.down.1.2}}</td> <td>{{abs_beams.0.get_tx.down.1.3}}</td>
709 </tr>
710 <tr>
711 <td>{{abs_beams.0.get_tx.down.2.0}}</td> <td>{{abs_beams.0.get_tx.down.2.1}}</td> <td>{{abs_beams.0.get_tx.down.2.2}}</td> <td>{{abs_beams.0.get_tx.down.2.3}}</td>
712 </tr>
713 <tr>
714 <td>{{abs_beams.0.get_tx.down.3.0}}</td> <td>{{abs_beams.0.get_tx.down.3.1}}</td> <td>{{abs_beams.0.get_tx.down.3.2}}</td> <td>{{abs_beams.0.get_tx.down.3.3}}</td>
715 </tr>
716 </table>
717 </td>
718 <td> <b>East Quarter</b>
719 <table align="center" class="east_quarter">
720 <tr>
721 <td>{{abs_beams.0.get_tx.down.0.4}}</td> <td>{{abs_beams.0.get_tx.down.0.5}}</td> <td>{{abs_beams.0.get_tx.down.0.6}}</td> <td>{{abs_beams.0.get_tx.down.0.7}}</td>
722 </tr>
723 <tr>
724 <td>{{abs_beams.0.get_tx.down.1.4}}</td> <td>{{abs_beams.0.get_tx.down.1.5}}</td> <td>{{abs_beams.0.get_tx.down.1.6}}</td> <td>{{abs_beams.0.get_tx.down.1.7}}</td>
725 </tr>
726 <tr>
727 <td>{{abs_beams.0.get_tx.down.2.4}}</td> <td>{{abs_beams.0.get_tx.down.2.5}}</td> <td>{{abs_beams.0.get_tx.down.2.6}}</td> <td>{{abs_beams.0.get_tx.down.2.7}}</td>
728 </tr>
729 <tr>
730 <td>{{abs_beams.0.get_tx.down.3.4}}</td> <td>{{abs_beams.0.get_tx.down.3.5}}</td> <td>{{abs_beams.0.get_tx.down.3.6}}</td> <td>{{abs_beams.0.get_tx.down.3.7}}</td>
731 </tr>
732 </table>
733 </td>
734 </tr>
735 <tr>
736 <td> <b>West Quarter</b>
737 <table align="center" class="west_quarter">
738 <tr>
739 <td>{{abs_beams.0.get_tx.down.4.0}}</td> <td>{{abs_beams.0.get_tx.down.4.1}}</td> <td>{{abs_beams.0.get_tx.down.4.2}}</td> <td>{{abs_beams.0.get_tx.down.4.3}}</td>
740 </tr>
741 <tr>
742 <td>{{abs_beams.0.get_tx.down.5.0}}</td> <td>{{abs_beams.0.get_tx.down.5.1}}</td> <td>{{abs_beams.0.get_tx.down.5.2}}</td> <td>{{abs_beams.0.get_tx.down.5.3}}</td>
743 </tr>
744 <tr>
745 <td>{{abs_beams.0.get_tx.down.6.0}}</td> <td>{{abs_beams.0.get_tx.down.6.1}}</td> <td>{{abs_beams.0.get_tx.down.6.2}}</td> <td>{{abs_beams.0.get_tx.down.6.3}}</td>
746 </tr>
747 <tr>
748 <td>{{abs_beams.0.get_tx.down.7.0}}</td> <td>{{abs_beams.0.get_tx.down.7.1}}</td> <td>{{abs_beams.0.get_tx.down.7.2}}</td> <td>{{abs_beams.0.get_tx.down.7.3}}</td>
749 </tr>
750 </table>
751 </td>
752 <td> <b>South Quarter</b>
753 <table align="center" class="south_quarter">
754 <tr>
755 <td>{{abs_beams.0.get_tx.down.4.4}}</td> <td>{{abs_beams.0.get_tx.down.4.5}}</td> <td>{{abs_beams.0.get_tx.down.4.6}}</td> <td>{{abs_beams.0.get_tx.down.4.7}}</td>
756 </tr>
757 <tr>
758 <td>{{abs_beams.0.get_tx.down.5.4}}</td> <td>{{abs_beams.0.get_tx.down.5.5}}</td> <td>{{abs_beams.0.get_tx.down.5.6}}</td> <td>{{abs_beams.0.get_tx.down.5.7}}</td>
759 </tr>
760 <tr>
761 <td>{{abs_beams.0.get_tx.down.6.4}}</td> <td>{{abs_beams.0.get_tx.down.6.5}}</td> <td>{{abs_beams.0.get_tx.down.6.6}}</td> <td>{{abs_beams.0.get_tx.down.6.7}}</td>
762 </tr>
763 <tr>
764 <td>{{abs_beams.0.get_tx.down.7.4}}</td> <td>{{abs_beams.0.get_tx.down.7.5}}</td> <td>{{abs_beams.0.get_tx.down.7.6}}</td> <td>{{abs_beams.0.get_tx.down.7.7}}</td>
765 </tr>
766 </table>
767 </td>
768 </tr>
769 </table>
770 </td>
771 </tr>
772 </table>
773
774
775 <table class="abs_rx">
776 <tr>
777 <td> <b>RX</b>
778 <table id="rx_down" class="rx">
779 <tr>
780 <td> <b>North Quarter</b>
781 <table align="center" class="north_quarter">
782 <tr>
783 <td>{{abs_beams.0.get_rx.down.0.0}}</td> <td>{{abs_beams.0.get_rx.down.0.1}}</td> <td>{{abs_beams.0.get_rx.down.0.2}}</td> <td>{{abs_beams.0.get_rx.down.0.3}}</td>
784 </tr>
785 <tr>
786 <td>{{abs_beams.0.get_rx.down.1.0}}</td> <td>{{abs_beams.0.get_rx.down.1.1}}</td> <td>{{abs_beams.0.get_rx.down.1.2}}</td> <td>{{abs_beams.0.get_rx.down.1.3}}</td>
787 </tr>
788 <tr>
789 <td>{{abs_beams.0.get_rx.down.2.0}}</td> <td>{{abs_beams.0.get_rx.down.2.1}}</td> <td>{{abs_beams.0.get_rx.down.2.2}}</td> <td>{{abs_beams.0.get_rx.down.2.3}}</td>
790 </tr>
791 <tr>
792 <td>{{abs_beams.0.get_rx.down.3.0}}</td> <td>{{abs_beams.0.get_rx.down.3.1}}</td> <td>{{abs_beams.0.get_rx.down.3.2}}</td> <td>{{abs_beams.0.get_rx.down.3.3}}</td>
793 </tr>
794 </table>
795 </td>
796 <td> <b>East Quarter</b>
797 <table align="center" class="east_quarter">
798 <tr>
799 <td>{{abs_beams.0.get_rx.down.0.4}}</td> <td>{{abs_beams.0.get_rx.down.0.5}}</td> <td>{{abs_beams.0.get_rx.down.0.6}}</td> <td>{{abs_beams.0.get_rx.down.0.7}}</td>
800 </tr>
801 <tr>
802 <td>{{abs_beams.0.get_rx.down.1.4}}</td> <td>{{abs_beams.0.get_rx.down.1.5}}</td> <td>{{abs_beams.0.get_rx.down.1.6}}</td> <td>{{abs_beams.0.get_rx.down.1.7}}</td>
803 </tr>
804 <tr>
805 <td>{{abs_beams.0.get_rx.down.2.4}}</td> <td>{{abs_beams.0.get_rx.down.2.5}}</td> <td>{{abs_beams.0.get_rx.down.2.6}}</td> <td>{{abs_beams.0.get_rx.down.2.7}}</td>
806 </tr>
807 <tr>
808 <td>{{abs_beams.0.get_rx.down.3.4}}</td> <td>{{abs_beams.0.get_rx.down.3.5}}</td> <td>{{abs_beams.0.get_rx.down.3.6}}</td> <td>{{abs_beams.0.get_rx.down.3.7}}</td>
809 </tr>
810 </table>
811 </td>
812 </tr>
813 <tr>
814 <td> <b>West Quarter</b>
815 <table align="center" class="west_quarter">
816 <tr>
817 <td>{{abs_beams.0.get_rx.down.4.0}}</td> <td>{{abs_beams.0.get_rx.down.4.1}}</td> <td>{{abs_beams.0.get_rx.down.4.2}}</td> <td>{{abs_beams.0.get_rx.down.4.3}}</td>
818 </tr>
819 <tr>
820 <td>{{abs_beams.0.get_rx.down.5.0}}</td> <td>{{abs_beams.0.get_rx.down.5.1}}</td> <td>{{abs_beams.0.get_rx.down.5.2}}</td> <td>{{abs_beams.0.get_rx.down.5.3}}</td>
821 </tr>
822 <tr>
823 <td>{{abs_beams.0.get_rx.down.6.0}}</td> <td>{{abs_beams.0.get_rx.down.6.1}}</td> <td>{{abs_beams.0.get_rx.down.6.2}}</td> <td>{{abs_beams.0.get_rx.down.6.3}}</td>
824 </tr>
825 <tr>
826 <td>{{abs_beams.0.get_rx.down.7.0}}</td> <td>{{abs_beams.0.get_rx.down.7.1}}</td> <td>{{abs_beams.0.get_rx.down.7.2}}</td> <td>{{abs_beams.0.get_rx.down.7.3}}</td>
827 </tr>
828 </table>
829 </td>
830 <td> <b>South Quarter</b>
831 <table class="south_quarter">
832 <tr>
833 <td>{{abs_beams.0.get_rx.down.4.4}}</td> <td>{{abs_beams.0.get_rx.down.4.5}}</td> <td>{{abs_beams.0.get_rx.down.4.6}}</td> <td>{{abs_beams.0.get_rx.down.4.7}}</td>
834 </tr>
835 <tr>
836 <td>{{abs_beams.0.get_rx.down.5.4}}</td> <td>{{abs_beams.0.get_rx.down.5.5}}</td> <td>{{abs_beams.0.get_rx.down.5.6}}</td> <td>{{abs_beams.0.get_rx.down.5.7}}</td>
837 </tr>
838 <tr>
839 <td>{{abs_beams.0.get_rx.down.6.4}}</td> <td>{{abs_beams.0.get_rx.down.6.5}}</td> <td>{{abs_beams.0.get_rx.down.6.6}}</td> <td>{{abs_beams.0.get_rx.down.6.7}}</td>
840 </tr>
841 <tr>
842 <td>{{abs_beams.0.get_rx.down.7.4}}</td> <td>{{abs_beams.0.get_rx.down.7.5}}</td> <td>{{abs_beams.0.get_rx.down.7.6}}</td> <td>{{abs_beams.0.get_rx.down.7.7}}</td>
843 </tr>
844 </table>
845 </td>
846 </tr>
847 </table>
848 </td>
849 </tr>
850 </table>
851
852 {% if not edit %}
853 {% include "abs_pattern_img.html" %}
854 {% endif %}
855
856 <br>
857
858 <div id="down_ues" style="display: inline-block">
859 Ues: {{abs_beams.0.get_down_ues}}
860 </div>
861
862 <div style="margin-left: 70px; display: inline-block">
863 <input type="checkbox" id="up_onlyrx" {% if abs_beams.0.get_down_onlyrx == True %} checked="True" {% endif %} disabled>
864 Only RX: {{abs_beams.0.get_down_onlyrx}}
865 </input>
866 </div>
867
868 </div>
869 </div>
870 </div>
871
872 {% endblock %}
873
874 <script>
875
876 </script>
@@ -0,0 +1,47
1 {% extends "dev_conf.html" %}
2 {% load static %}
3 {% load bootstrap3 %}
4 {% load main_tags %}
5
6 {% block content %}
7 <style>
8
9 </style>
10
11 {% if abs_beams %}
12 <div>
13 <h4>Beams:</h4>
14
15 <div class="container">
16 <ul class="nav nav-pills">
17
18 {% for beam in abs_beams %}
19 <li {% if forloop.counter == 1 %} class="active" {% endif %}>
20 <a data-toggle="pill" id="button-{{ forloop.counter }}" href="#">{{ forloop.counter }}</a>
21 </li>
22 {% endfor %}
23
24 </ul>
25 </div>
26
27 </div>
28
29 <br>
30 {% include "abs_pattern.html" %}
31 <br>
32
33 {% else %}
34 <div>
35 <h4>Beams:</h4>
36 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
37 </div>
38 {% endif %}
39
40 {% endblock %}
41
42 <script>
43 function ChangeColor() {
44 document.getElementById("button_1").style.backgroundColor = "#2c3e50";
45 document.getElementById("button_1").style.color = "#ecf0f1";
46 }
47 </script>
@@ -1,8 +1,56
1 from django import forms
1 from django import forms
2 from .models import ABSConfiguration
2 from .models import ABSConfiguration, ABSBeam
3 from .widgets import UpDataWidget, DownDataWidget, EditUpDataWidget, EditDownDataWidget
4 from apps.main.models import Configuration
3
5
4 class ABSConfigurationForm(forms.ModelForm):
6 class ABSConfigurationForm(forms.ModelForm):
7 def __init__(self, *args, **kwargs):
8 super(ABSConfigurationForm, self).__init__(*args, **kwargs)
9 #instance = getattr(self, 'instance', None)
10
11 #if instance and instance.pk:
12 # devices = Device.objects.filter(device_type__name='abs')
13
14 #if instance.experiment:
15 # experiments = Experiment.objects.filter(pk=instance.experiment.id)
16 # self.fields['experiment'].widget.choices = [(experiment.id, experiment) for experiment in experiments]
5
17
6 class Meta:
18 class Meta:
7 model = ABSConfiguration
19 model = ABSConfiguration
8 fields = ('experiment',)
20 exclude = ('type', 'status', 'parameters', 'beams', 'module_status')
21
22 class ABSBeamAddForm(forms.Form):
23
24 #abs_conf = forms.CharField(widget=forms.HiddenInput)
25 #name = forms.CharField(max_length=60)
26 up_data = forms.CharField(widget=UpDataWidget, label='')
27 down_data = forms.CharField(widget=DownDataWidget, label='')
28
29 def __init__(self, *args, **kwargs):
30 super(ABSBeamAddForm, self).__init__(*args, **kwargs)
31 #if 'abs_conf' in self.initial:
32 # self.fields['abs_conf'].initial = self.initial['abs_conf']
33 #self.fields['name'].initial = 'Beam'
34 # self.fields['up_data'].initial = self.initial['abs_conf']
35 # self.fields['down_data'].initial = self.initial['abs_conf']
36 #self.fields['abs_conf'].initial = self.initial['abs_conf']
37 #self.fields['name'].initial = 'Beam'
38 #self.fields['up_data'].initial = self.initial['abs_conf']
39 #self.fields['down_data'].initial = self.initial['abs_conf']
40
41
42
43 class ABSBeamEditForm(forms.Form):
44
45 #abs_conf = forms.CharField(widget=forms.HiddenInput)
46 up_data = forms.CharField(widget=EditUpDataWidget, label='')
47 down_data = forms.CharField(widget=EditDownDataWidget, label='')
48
49 def __init__(self, *args, **kwargs):
50 super(ABSBeamEditForm, self).__init__(*args, **kwargs)
51
52 if 'initial' in kwargs:
53 if 'beam' in self.initial:
54 #self.fields['abs_conf'].initial = self.initial['beam'].abs_conf
55 self.fields['up_data'].initial = self.initial['beam']
56 self.fields['down_data'].initial = self.initial['beam']
@@ -869,6 +869,38 class ABSBeam(models.Model):
869 return data
869 return data
870
870
871 @property
871 @property
872 def get_uptx(self):
873 """
874 This function shows the up-tx-values of one beam
875 """
876 data = json.loads(self.tx)
877 up_data = data['up']
878
879 up_values = []
880 for data in up_data:
881 for i in range(0,8):
882 up_values.append(data[i])
883
884 return up_values
885
886 @property
887 def get_downtx(self):
888 """
889 This function shows the down-tx-values of one beam
890 """
891 data = json.loads(self.tx)
892 down_data = data['down']
893
894 down_values = []
895 for data in down_data:
896 for i in range(0,8):
897 down_values.append(data[i])
898
899 return down_values
900
901
902
903 @property
872 def get_rx(self):
904 def get_rx(self):
873 """
905 """
874 This function shows the rx-values of one beam
906 This function shows the rx-values of one beam
@@ -876,3 +908,33 class ABSBeam(models.Model):
876 data = json.loads(self.rx)
908 data = json.loads(self.rx)
877
909
878 return data
910 return data
911
912 @property
913 def get_uprx(self):
914 """
915 This function shows the up-rx-values of one beam
916 """
917 data = json.loads(self.rx)
918 up_data = data['up']
919
920 up_values = []
921 for data in up_data:
922 for i in range(0,8):
923 up_values.append(data[i])
924
925 return up_values
926
927 @property
928 def get_downrx(self):
929 """
930 This function shows the down-rx-values of one beam
931 """
932 data = json.loads(self.rx)
933 down_data = data['down']
934
935 down_values = []
936 for data in down_data:
937 for i in range(0,8):
938 down_values.append(data[i])
939
940 return down_values
@@ -1,6 +1,13
1 from django.conf.urls import url
1 from django.conf.urls import url
2
2
3 urlpatterns = (
3 urlpatterns = (
4 url(r'^(?P<id_conf>-?\d+)/$', 'apps.main.views.dev_conf', name='url_abs_conf'),
4 url(r'^(?P<id_conf>-?\d+)/$', 'apps.abs.views.abs_conf', name='url_abs_conf'),
5 url(r'^(?P<id_conf>-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_abs_conf'),
5 url(r'^(?P<id_conf>-?\d+)/edit/$', 'apps.abs.views.abs_conf_edit', name='url_edit_abs_conf'),
6 url(r'^(?P<id_conf>-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_abs_conf'),
7 url(r'^(?P<id_conf>-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_abs_conf'),
8 url(r'^(?P<id_conf>-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_abs_conf'),
9 url(r'^(?P<id_conf>-?\d+)/plot/$', 'apps.abs.views.plot_patterns', name='url_plot_abs_patterns'),
10 url(r'^(?P<id_conf>-?\d+)/add_beam/$', 'apps.abs.views.add_beam', name='url_add_abs_beam'),
11 url(r'^(?P<id_conf>-?\d+)/beam/(?P<id_beam>-?\d+)/delete/$', 'apps.abs.views.remove_beam', name='url_remove_abs_beam'),
12 url(r'^(?P<id_conf>-?\d+)/beam/(?P<id_beam>-?\d+)/edit/$', 'apps.abs.views.edit_beam', name='url_edit_abs_beam'),
6 )
13 )
@@ -1,3 +1,327
1 from django.shortcuts import render
1 from django.shortcuts import render_to_response
2 from django.template import RequestContext
3 from django.shortcuts import redirect, render, get_object_or_404
4 from django.contrib import messages
2
5
6 from apps.main.models import Device, Configuration
7 from apps.main.views import sidebar
8
9 from .models import ABSConfiguration, ABSBeam
10 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm
3 # Create your views here.
11 # Create your views here.
12 import json, ast
13
14
15 def get_values_from_form(form_data):
16
17 sublistup = []
18 sublistdown = []
19 subtxlistup = []
20 subtxlistdown = []
21 subrxlistup = []
22 subrxlistdown = []
23
24 up_values_list = []
25 down_values_list = []
26 up_txvalues_list = []
27 down_txvalues_list = []
28 up_rxvalues_list = []
29 down_rxvalues_list = []
30
31 values_list = {}
32 cont = 1
33
34 for i in range(1,65):
35 x = float(form_data['abs_up'+str(i)])
36 y = float(form_data['abs_down'+str(i)])
37 sublistup.append(x)
38 sublistdown.append(y)
39
40 if str(i) in form_data.getlist('uptx_checks'):
41 subtxlistup.append(1)
42 else:
43 subtxlistup.append(0)
44 if str(i) in form_data.getlist('downtx_checks'):
45 subtxlistdown.append(1)
46 else:
47 subtxlistdown.append(0)
48
49 if str(i) in form_data.getlist('uprx_checks'):
50 subrxlistup.append(1)
51 else:
52 subrxlistup.append(0)
53 if str(i) in form_data.getlist('downrx_checks'):
54 subrxlistdown.append(1)
55 else:
56 subrxlistdown.append(0)
57
58 cont = cont+1
59
60 if cont == 9:
61 up_values_list.append(sublistup)
62 down_values_list.append(sublistdown)
63 sublistup = []
64 sublistdown = []
65
66 up_txvalues_list.append(subtxlistup)
67 down_txvalues_list.append(subtxlistdown)
68 subtxlistup = []
69 subtxlistdown = []
70 up_rxvalues_list.append(subrxlistup)
71 down_rxvalues_list.append(subrxlistdown)
72 subrxlistup = []
73 subrxlistdown = []
74 cont = 1
75
76
77 list_uesup = []
78 list_uesdown = []
79 for i in range(1,5):
80 if form_data['ues_up'+str(i)] == '':
81 list_uesup.append(0.0)
82 else:
83 list_uesup.append(float(form_data['ues_up'+str(i)]))
84
85 if form_data['ues_down'+str(i)] == '':
86 list_uesdown.append(0.0)
87 else:
88 list_uesdown.append(float(form_data['ues_down'+str(i)]))
89
90 onlyrx_list = form_data.getlist('onlyrx')
91 only_rx = {}
92 if '1' in onlyrx_list:
93 only_rx['up'] = True
94 else:
95 only_rx['up'] = False
96 if '2' in onlyrx_list:
97 only_rx['down'] = True
98 else:
99 only_rx['down'] = False
100
101 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
102 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
103 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
104 ues = {'up': list_uesup, 'down': list_uesdown}
105 name = str(form_data['beam_name'])
106
107 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
108
109 return beam_data
110
111
112
113 def abs_conf(request, id_conf):
114
115 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
116
117 beams_dict = ast.literal_eval(conf.beams)
118 beams = []
119 for beam_id in range(1,len(beams_dict)+1):
120 beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
121 beams.append(beam)
122
123 beams_id = ast.literal_eval(conf.beams)
124
125 ip=conf.device.ip_address
126 port=conf.device.port_address
127
128 kwargs = {}
129 kwargs['status'] = conf.device.get_status_display()
130
131
132 kwargs['dev_conf'] = conf
133 kwargs['dev_conf_keys'] = ['name',]
134
135 kwargs['title'] = 'ABS Configuration'
136 kwargs['suptitle'] = 'Details'
137 kwargs['no_play'] = True
138
139 kwargs['button'] = 'Edit Configuration'
140
141 #kwargs['no_play'] = True
142 kwargs['beams_id'] = beams_id
143 kwargs['beams'] = beams
144 kwargs['beam_selector'] = 0
145 #kwargs['my_data'] = simplejson.dumps(beams)
146
147 kwargs['only_stop'] = True
148
149 ###### SIDEBAR ######
150 kwargs.update(sidebar(conf=conf))
151
152 return render(request, 'abs_conf.html', kwargs)
153
154 def abs_conf_edit(request, id_conf):
155
156 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
157 beams_list = ast.literal_eval(conf.beams)
158 i = 1
159 beams = []
160 for b in beams_list:
161 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
162 beams.append(beam)
163 i=i+1
164
165 if request.method=='GET':
166 form = ABSConfigurationForm(instance=conf)
167
168 if request.method=='POST':
169 form = ABSConfigurationForm(request.POST, instance=conf)
170
171 if form.is_valid():
172 conf = form.save(commit=False)
173 conf.save()
174 return redirect('url_abs_conf', id_conf=conf.id)
175
176 ###### SIDEBAR ######
177 kwargs = {}
178
179 kwargs['dev_conf'] = conf
180 #kwargs['id_dev'] = conf.id
181 kwargs['id_conf'] = conf.id
182 kwargs['form'] = form
183 kwargs['abs_beams'] = beams
184 kwargs['title'] = 'Device Configuration'
185 kwargs['suptitle'] = 'Edit'
186 kwargs['button'] = 'Save'
187
188 kwargs['edit'] = True
189
190 return render(request, 'abs_conf_edit.html', kwargs)
191
192
193 def plot_patterns(request, id_conf):
194
195 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
196 beams_list = ast.literal_eval(conf.beams)
197 i = 1
198 beams = []
199 for b in beams_list:
200 beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
201 beams.append(beam)
202 i=i+1
203
204 ###### SIDEBAR ######
205 kwargs = {}
206
207 kwargs['dev_conf'] = conf.device
208 kwargs['id_dev'] = conf.device
209 kwargs['id_conf'] = conf.id
210 kwargs['abs_beams'] = beams
211 kwargs['title'] = 'ABS Patterns'
212 kwargs['suptitle'] = conf.name
213 kwargs['no_sidebar'] = True
214
215 return render(request, 'abs_patterns.html', kwargs)
216
217 def add_beam(request, id_conf):
218
219 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
220 confs = Configuration.objects.all()
221
222 if request.method=='GET':
223 #form = ABSBeamEditForm()
224 form = ABSBeamAddForm()
225
226 if request.method=='POST':
227 form = ABSBeamAddForm(request.POST)
228
229 beam_data = get_values_from_form(request.POST)
230
231 new_beam = ABSBeam(
232 name =beam_data['name'],
233 antenna =json.dumps(beam_data['antenna']),
234 abs_conf=conf,
235 tx =json.dumps(beam_data['tx']),
236 rx =json.dumps(beam_data['rx']),
237 ues =json.dumps(beam_data['ues']),
238 only_rx =json.dumps(beam_data['only_rx'])
239 )
240 new_beam.save()
241 #---Update 6bits configuration and add beam to abs configuration beams list.
242 new_beam.modules_6bits()
243 new_beam.add_beam2list()
244 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
245
246 return redirect('url_edit_abs_conf', conf.id)
247
248 ###### SIDEBAR ######
249 kwargs = {}
250
251 #kwargs['dev_conf'] = conf.device
252 #kwargs['id_dev'] = conf.device
253 kwargs['id_conf'] = conf.id
254 kwargs['form'] = form
255 kwargs['title'] = 'ABS Beams'
256 kwargs['suptitle'] = 'Add Beam'
257 kwargs['button'] = 'Add'
258 kwargs['no_sidebar'] = True
259
260 #kwargs['previous'] = conf.get_absolute_url_edit()
261 kwargs['edit'] = True
262
263 return render(request, 'abs_add_beam.html', kwargs)
264
265
266 def edit_beam(request, id_conf, id_beam):
267
268 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
269 beam = get_object_or_404(ABSBeam, pk=id_beam)
270
271 if request.method=='GET':
272 form = ABSBeamEditForm(initial={'beam': beam})
273
274 if request.method=='POST':
275 form = ABSBeamEditForm(request.POST)
276
277 beam_data = get_values_from_form(request.POST)
278
279 beam.dict_to_parms(beam_data)
280 beam.save()
281
282 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
283
284 return redirect('url_edit_abs_conf', conf.id)
285
286 ###### SIDEBAR ######
287 kwargs = {}
288
289 kwargs['id_conf'] = conf.id
290 kwargs['form'] = form
291 kwargs['title'] = 'ABS Beams'
292 kwargs['suptitle'] = 'Edit Beam'
293 kwargs['button'] = 'Save'
294 kwargs['no_sidebar'] = True
295
296 #kwargs['previous'] = conf.get_absolute_url_edit()
297 kwargs['edit'] = True
298
299 return render(request, 'abs_add_beam.html', kwargs)
300
301
302
303 def remove_beam(request, id_conf, id_beam):
304
305 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
306 beam = get_object_or_404(ABSBeam, pk=id_beam)
307
308 if request.method=='POST':
309 if beam:
310 try:
311 beam.remove_beamfromlist()
312 beam.delete()
313 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
314 except:
315 messages.error(request, 'Unable to delete beam: "%s".' % beam)
316
317 return redirect('url_edit_abs_conf', conf.id)
318
319 ###### SIDEBAR ######
320 kwargs = {}
321
322 kwargs['object'] = beam
323 kwargs['delete'] = True
324 kwargs['title'] = 'Delete'
325 kwargs['suptitle'] = 'Beam'
326 kwargs['previous'] = conf.get_absolute_url_edit()
327 return render(request, 'confirm.html', kwargs)
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now