##// END OF EJS Templates
Task #716: Vista ABS, change_beam button is disabled if operation_mode is automatic, main abs view show current active beam...
Fiorella Quino -
r206:18de62ad8959
parent child
Show More
@@ -1,537 +1,542
1 {% extends "dev_conf.html" %}
1 {% extends "dev_conf.html" %}
2
2
3 {% load static %}
4 {% load bootstrap3 %}
5 {% load main_tags %}
6
3 {% block extra-menu-actions %}
7 {% 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>
8 <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 %}
9 {% endblock %}
7
10
8 {% block extra-content %}
11 {% block extra-content %}
9 <style>
12 <style>
10
13
11 .abs {
14 .abs {
12 border: 2px solid #00334d;
15 border: 2px solid #00334d;
13 vertical-align: center;
16 vertical-align: center;
14 display: inline-block;
17 display: inline-block;
15 }
18 }
16 .abs tr:nth-child(1){
19 .abs tr:nth-child(1){
17 border-bottom: 1px dashed #00334d;
20 border-bottom: 1px dashed #00334d;
18 }
21 }
19 .abs tr{
22 .abs tr{
20 border-bottom: 0px solid #00334d;
23 border-bottom: 0px solid #00334d;
21 }
24 }
22 .abs td {
25 .abs td {
23 border-right: 1px dashed #00334d;
26 border-right: 1px dashed #00334d;
24 text-align: center;
27 text-align: center;
25 padding: 5px;
28 padding: 5px;
26 }
29 }
27
30
28
31
29 .legend {
32 .legend {
30 margin-left: 15px;
33 margin-left: 15px;
31 display: inline-block;
34 display: inline-block;
32 border: 2px solid #00334d;
35 border: 2px solid #00334d;
33 vertical-align: top;
36 vertical-align: top;
34 }
37 }
35 .legend th{
38 .legend th{
36 border-bottom: 1px dashed #00334d;
39 border-bottom: 1px dashed #00334d;
37 font-weight: bold;
40 font-weight: bold;
38 vertical-align: center;
41 vertical-align: center;
39 text-align: center;
42 text-align: center;
40 }
43 }
41 .legend td {
44 .legend td {
42 padding: 2px;
45 padding: 2px;
43 text-align: center;
46 text-align: center;
44 }
47 }
45
48
46
49
47 .north {
50 .north {
48 border: 2px solid #00334d;
51 border: 2px solid #00334d;
49 vertical-align: center;
52 vertical-align: center;
50 font-weight: bold;
53 font-weight: bold;
51 }
54 }
52 .north tr{
55 .north tr{
53 border: 1px solid #ffffff;
56 border: 1px solid #ffffff;
54
57
55 }
58 }
56 .north td{
59 .north td{
57 border: 2px solid #e2e2e7;
60 border: 2px solid #e2e2e7;
58 text-align: center;
61 text-align: center;
59 padding: 1px 15px 1px 15px;
62 padding: 1px 15px 1px 15px;
60 }
63 }
61 .north tr:nth-child(even) td:nth-child(n){
64 .north tr:nth-child(even) td:nth-child(n){
62 border-bottom: 12px solid #e2e2e7;
65 border-bottom: 12px solid #e2e2e7;
63 }
66 }
64 .north td:nth-child(n) {
67 .north td:nth-child(n) {
65 border-right: 12px solid #e2e2e7;
68 border-right: 12px solid #e2e2e7;
66 }
69 }
67 .north td:nth-last-child(4n+1) {
70 .north td:nth-last-child(4n+1) {
68 border-right: 2px solid #e2e2e7;
71 border-right: 2px solid #e2e2e7;
69 }
72 }
70 .north tr:nth-last-child(1) td:nth-child(n){
73 .north tr:nth-last-child(1) td:nth-child(n){
71 border-bottom: 3px solid #e2e2e7;
74 border-bottom: 3px solid #e2e2e7;
72 }
75 }
73
76
74
77
75
78
76 .east {
79 .east {
77 border: 2px solid #00334d;
80 border: 2px solid #00334d;
78 vertical-align: center;
81 vertical-align: center;
79 font-weight: bold;
82 font-weight: bold;
80 }
83 }
81 .east tr{
84 .east tr{
82 border: 1px solid #ffffff;
85 border: 1px solid #ffffff;
83 }
86 }
84 .east td{
87 .east td{
85 border: 2px solid #e2e2e7;
88 border: 2px solid #e2e2e7;
86 text-align: center;
89 text-align: center;
87 padding: 1px 15px 1px 15px;
90 padding: 1px 15px 1px 15px;
88 }
91 }
89 .east tr:nth-child(even) td:nth-child(n){
92 .east tr:nth-child(even) td:nth-child(n){
90 border-bottom: 12px solid #e2e2e7;
93 border-bottom: 12px solid #e2e2e7;
91 }
94 }
92 .east td:nth-child(n) {
95 .east td:nth-child(n) {
93 border-right: 12px solid #e2e2e7;
96 border-right: 12px solid #e2e2e7;
94 }
97 }
95 .east td:nth-last-child(4n+1) {
98 .east td:nth-last-child(4n+1) {
96 border-right: 2px solid #e2e2e7;
99 border-right: 2px solid #e2e2e7;
97 }
100 }
98 .east tr:nth-last-child(1) td:nth-child(n){
101 .east tr:nth-last-child(1) td:nth-child(n){
99 border-bottom: 3px solid #e2e2e7;
102 border-bottom: 3px solid #e2e2e7;
100 }
103 }
101
104
102
105
103
106
104
107
105 .west {
108 .west {
106 border: 2px solid #00334d;
109 border: 2px solid #00334d;
107 vertical-align: center;
110 vertical-align: center;
108 font-weight: bold;
111 font-weight: bold;
109 }
112 }
110 .west tr{
113 .west tr{
111 border: 1px solid #ffffff;
114 border: 1px solid #ffffff;
112 }
115 }
113 .west td{
116 .west td{
114 border: 2px solid #e2e2e7;
117 border: 2px solid #e2e2e7;
115 text-align: center;
118 text-align: center;
116 padding: 1px 15px 1px 15px;
119 padding: 1px 15px 1px 15px;
117 }
120 }
118 .west tr:nth-child(even) td:nth-child(n){
121 .west tr:nth-child(even) td:nth-child(n){
119 border-bottom: 12px solid #e2e2e7;
122 border-bottom: 12px solid #e2e2e7;
120 }
123 }
121 .west td:nth-child(n) {
124 .west td:nth-child(n) {
122 border-right: 12px solid #e2e2e7;
125 border-right: 12px solid #e2e2e7;
123 }
126 }
124 .west td:nth-last-child(4n+1) {
127 .west td:nth-last-child(4n+1) {
125 border-right: 2px solid #e2e2e7;
128 border-right: 2px solid #e2e2e7;
126 }
129 }
127 .west tr:nth-last-child(1) td:nth-child(n){
130 .west tr:nth-last-child(1) td:nth-child(n){
128 border-bottom: 3px solid #e2e2e7;
131 border-bottom: 3px solid #e2e2e7;
129 }
132 }
130
133
131
134
132
135
133
136
134 .south {
137 .south {
135 border: 2px solid #00334d;
138 border: 2px solid #00334d;
136 vertical-align: center;
139 vertical-align: center;
137 font-weight: bold;
140 font-weight: bold;
138 }
141 }
139 .south tr{
142 .south tr{
140 border: 1px solid #ffffff;
143 border: 1px solid #ffffff;
141 }
144 }
142 .south td{
145 .south td{
143 border: 2px solid #e2e2e7;
146 border: 2px solid #e2e2e7;
144 text-align: center;
147 text-align: center;
145 padding: 1px 15px 1px 15px;
148 padding: 1px 15px 1px 15px;
146 }
149 }
147 .south tr:nth-child(even) td:nth-child(n){
150 .south tr:nth-child(even) td:nth-child(n){
148 border-bottom: 12px solid #e2e2e7;
151 border-bottom: 12px solid #e2e2e7;
149 }
152 }
150 .south td:nth-child(n) {
153 .south td:nth-child(n) {
151 border-right: 12px solid #e2e2e7;
154 border-right: 12px solid #e2e2e7;
152 }
155 }
153 .south td:nth-last-child(4n+1) {
156 .south td:nth-last-child(4n+1) {
154 border-right: 2px solid #e2e2e7;
157 border-right: 2px solid #e2e2e7;
155 }
158 }
156 .south tr:nth-last-child(1) td:nth-child(n){
159 .south tr:nth-last-child(1) td:nth-child(n){
157 border-bottom: 3px solid #e2e2e7;
160 border-bottom: 3px solid #e2e2e7;
158 }
161 }
159
162
160
163
161
164
162
165
163 </style>
166 </style>
164
167
165
168
166 {% if beams %}
169 {% if beams %}
167
170
168
171
169
172
170 <h4>Beams:</h4>
173 <h4>Beams:</h4>
171 <div class="container">
174 <div class="container">
172 <ul class="nav nav-pills">
175 <ul class="nav nav-pills">
173 {% for beam in beams %}
176 {% for beam in beams %}
174 <li >
177 <li {% if active_beam.id == beam.id %} class="active" {% endif %} >
175 <a data-toggle="pill" href="#menu{{forloop.counter}}">{{forloop.counter}}</a>
178 <a data-toggle="pill" href="#menu{{forloop.counter}}">{{forloop.counter}}</a>
176 </li>
179 </li>
177 {% endfor %}
180 {% endfor %}
178 </ul>
181 </ul>
179
182
180
183
181 <div class="tab-content">
184 <div class="tab-content">
182 <div id="home" class="tab-pane fade in active">
185 <div id="home" class="tab-pane fade in active">
183 <!---->
186 <!---->
184 {% if active_beam %}
187 {% if active_beam %}
185 <h3>Active Beam: {{active_beam.name}}</h3>
188 <h3>Active Beam: {{active_beam.name}}</h3>
186
189
187 <table id="abs_pattern" class="abs">
190 <table id="abs_pattern" class="abs">
188 <tr>
191 <tr>
189 <td> <b>North Quarter</b>
192 <td> <b>North Quarter</b>
190 <table class="north ">
193 <table class="north ">
191 <tr>
194 <tr>
192 <td {{color_status.1}} title='{{module_messages.1}}'>{{active_beam.get_upvalues.0}}</td> <td {{color_status.2}} title='{{module_messages.2}}'>{{active_beam.get_upvalues.1}}</td> <td {{color_status.3}} title='{{module_messages.3}}'>{{active_beam.get_upvalues.2}}</td> <td {{color_status.4}} title='{{module_messages.4}}'>{{active_beam.get_upvalues.3}}</td>
195 <td {{color_status.1}} title='{{module_messages.1}}'>{{active_beam.get_upvalues.0}}</td> <td {{color_status.2}} title='{{module_messages.2}}'>{{active_beam.get_upvalues.1}}</td> <td {{color_status.3}} title='{{module_messages.3}}'>{{active_beam.get_upvalues.2}}</td> <td {{color_status.4}} title='{{module_messages.4}}'>{{active_beam.get_upvalues.3}}</td>
193 </tr>
196 </tr>
194 <tr>
197 <tr>
195 <td {{color_status.1}} title='{{module_messages.1}}'>{{active_beam.get_downvalues.0}}</td> <td {{color_status.2}} title='{{module_messages.2}}'>{{active_beam.get_downvalues.1}}</td> <td {{color_status.3}} title='{{module_messages.3}}'>{{active_beam.get_downvalues.2}}</td> <td {{color_status.4}} title='{{module_messages.4}}'>{{active_beam.get_downvalues.3}}</td>
198 <td {{color_status.1}} title='{{module_messages.1}}'>{{active_beam.get_downvalues.0}}</td> <td {{color_status.2}} title='{{module_messages.2}}'>{{active_beam.get_downvalues.1}}</td> <td {{color_status.3}} title='{{module_messages.3}}'>{{active_beam.get_downvalues.2}}</td> <td {{color_status.4}} title='{{module_messages.4}}'>{{active_beam.get_downvalues.3}}</td>
196 </tr>
199 </tr>
197 <tr>
200 <tr>
198 <td {{color_status.9}} title='{{module_messages.9}}'>{{active_beam.get_upvalues.8}}</td> <td {{color_status.10}} title='{{module_messages.10}}'>{{active_beam.get_upvalues.9}}</td> <td {{color_status.11}} title='{{module_messages.11}}'>{{active_beam.get_upvalues.10}}</td> <td {{color_status.12}} title='{{module_messages.12}}'>{{active_beam.get_upvalues.11}}</td>
201 <td {{color_status.9}} title='{{module_messages.9}}'>{{active_beam.get_upvalues.8}}</td> <td {{color_status.10}} title='{{module_messages.10}}'>{{active_beam.get_upvalues.9}}</td> <td {{color_status.11}} title='{{module_messages.11}}'>{{active_beam.get_upvalues.10}}</td> <td {{color_status.12}} title='{{module_messages.12}}'>{{active_beam.get_upvalues.11}}</td>
199 </tr>
202 </tr>
200 <tr>
203 <tr>
201 <td {{color_status.9}} title='{{module_messages.9}}'>{{active_beam.get_downvalues.8}}</td> <td {{color_status.10}} title='{{module_messages.10}}'>{{active_beam.get_downvalues.9}}</td> <td {{color_status.11}} title='{{module_messages.11}}'>{{active_beam.get_downvalues.10}}</td> <td {{color_status.12}} title='{{module_messages.12}}'>{{active_beam.get_downvalues.11}}</td>
204 <td {{color_status.9}} title='{{module_messages.9}}'>{{active_beam.get_downvalues.8}}</td> <td {{color_status.10}} title='{{module_messages.10}}'>{{active_beam.get_downvalues.9}}</td> <td {{color_status.11}} title='{{module_messages.11}}'>{{active_beam.get_downvalues.10}}</td> <td {{color_status.12}} title='{{module_messages.12}}'>{{active_beam.get_downvalues.11}}</td>
202 </tr>
205 </tr>
203 <tr>
206 <tr>
204 <td {{color_status.17}} title='{{module_messages.17}}'>{{active_beam.get_upvalues.16}}</td> <td {{color_status.18}} title='{{module_messages.18}}'>{{active_beam.get_upvalues.17}}</td> <td {{color_status.19}} title='{{module_messages.19}}'>{{active_beam.get_upvalues.18}}</td> <td {{color_status.20}} title='{{module_messages.20}}'>{{active_beam.get_upvalues.19}}</td>
207 <td {{color_status.17}} title='{{module_messages.17}}'>{{active_beam.get_upvalues.16}}</td> <td {{color_status.18}} title='{{module_messages.18}}'>{{active_beam.get_upvalues.17}}</td> <td {{color_status.19}} title='{{module_messages.19}}'>{{active_beam.get_upvalues.18}}</td> <td {{color_status.20}} title='{{module_messages.20}}'>{{active_beam.get_upvalues.19}}</td>
205 </tr>
208 </tr>
206 <tr>
209 <tr>
207 <td {{color_status.17}} title='{{module_messages.17}}'>{{active_beam.get_downvalues.16}}</td> <td {{color_status.18}} title='{{module_messages.18}}'>{{active_beam.get_downvalues.17}}</td> <td {{color_status.19}} title='{{module_messages.19}}'>{{active_beam.get_downvalues.18}}</td> <td {{color_status.20}} title='{{module_messages.20}}'>{{active_beam.get_downvalues.19}}</td>
210 <td {{color_status.17}} title='{{module_messages.17}}'>{{active_beam.get_downvalues.16}}</td> <td {{color_status.18}} title='{{module_messages.18}}'>{{active_beam.get_downvalues.17}}</td> <td {{color_status.19}} title='{{module_messages.19}}'>{{active_beam.get_downvalues.18}}</td> <td {{color_status.20}} title='{{module_messages.20}}'>{{active_beam.get_downvalues.19}}</td>
208 </tr>
211 </tr>
209 <tr>
212 <tr>
210 <td {{color_status.25}} title='{{module_messages.25}}'>{{active_beam.get_upvalues.24}}</td> <td {{color_status.26}} title='{{module_messages.26}}'>{{active_beam.get_upvalues.25}}</td> <td {{color_status.27}} title='{{module_messages.27}}'>{{active_beam.get_upvalues.26}}</td> <td {{color_status.28}} title='{{module_messages.28}}'>{{active_beam.get_upvalues.27}}</td>
213 <td {{color_status.25}} title='{{module_messages.25}}'>{{active_beam.get_upvalues.24}}</td> <td {{color_status.26}} title='{{module_messages.26}}'>{{active_beam.get_upvalues.25}}</td> <td {{color_status.27}} title='{{module_messages.27}}'>{{active_beam.get_upvalues.26}}</td> <td {{color_status.28}} title='{{module_messages.28}}'>{{active_beam.get_upvalues.27}}</td>
211 </tr>
214 </tr>
212 <tr>
215 <tr>
213 <td {{color_status.25}} title='{{module_messages.25}}'>{{active_beam.get_downvalues.24}}</td> <td {{color_status.26}} title='{{module_messages.26}}'>{{active_beam.get_downvalues.25}}</td> <td {{color_status.27}} title='{{module_messages.27}}'>{{active_beam.get_downvalues.26}}</td> <td {{color_status.28}} title='{{module_messages.28}}'>{{active_beam.get_downvalues.27}}</td>
216 <td {{color_status.25}} title='{{module_messages.25}}'>{{active_beam.get_downvalues.24}}</td> <td {{color_status.26}} title='{{module_messages.26}}'>{{active_beam.get_downvalues.25}}</td> <td {{color_status.27}} title='{{module_messages.27}}'>{{active_beam.get_downvalues.26}}</td> <td {{color_status.28}} title='{{module_messages.28}}'>{{active_beam.get_downvalues.27}}</td>
214 </tr>
217 </tr>
215 </table>
218 </table>
216 </td>
219 </td>
217 <td> <b>East Quarter</b>
220 <td> <b>East Quarter</b>
218 <table class="east ">
221 <table class="east ">
219 <tr>
222 <tr>
220 <td {{color_status.5}} title='{{module_messages.5}}'>{{active_beam.get_upvalues.4}}</td> <td {{color_status.6}} title='{{module_messages.6}}'>{{active_beam.get_upvalues.5}}</td> <td {{color_status.7}} title='{{module_messages.7}}'>{{active_beam.get_upvalues.6}}</td> <td {{color_status.8}} title='{{module_messages.8}}'>{{active_beam.get_upvalues.7}}</td>
223 <td {{color_status.5}} title='{{module_messages.5}}'>{{active_beam.get_upvalues.4}}</td> <td {{color_status.6}} title='{{module_messages.6}}'>{{active_beam.get_upvalues.5}}</td> <td {{color_status.7}} title='{{module_messages.7}}'>{{active_beam.get_upvalues.6}}</td> <td {{color_status.8}} title='{{module_messages.8}}'>{{active_beam.get_upvalues.7}}</td>
221 </tr>
224 </tr>
222 <tr>
225 <tr>
223 <td {{color_status.5}} title='{{module_messages.5}}'>{{active_beam.get_downvalues.4}}</td> <td {{color_status.6}} title='{{module_messages.6}}'>{{active_beam.get_downvalues.5}}</td> <td {{color_status.7}} title='{{module_messages.7}}'>{{active_beam.get_downvalues.6}}</td> <td {{color_status.8}} title='{{module_messages.8}}'>{{active_beam.get_downvalues.7}}</td>
226 <td {{color_status.5}} title='{{module_messages.5}}'>{{active_beam.get_downvalues.4}}</td> <td {{color_status.6}} title='{{module_messages.6}}'>{{active_beam.get_downvalues.5}}</td> <td {{color_status.7}} title='{{module_messages.7}}'>{{active_beam.get_downvalues.6}}</td> <td {{color_status.8}} title='{{module_messages.8}}'>{{active_beam.get_downvalues.7}}</td>
224 </tr>
227 </tr>
225 <tr>
228 <tr>
226 <td {{color_status.13}} title='{{module_messages.13}}'>{{active_beam.get_upvalues.12}}</td> <td {{color_status.14}} title='{{module_messages.14}}'>{{active_beam.get_upvalues.13}}</td> <td {{color_status.15}} title='{{module_messages.15}}'>{{active_beam.get_upvalues.14}}</td> <td {{color_status.16}} title='{{module_messages.16}}'>{{active_beam.get_upvalues.15}}</td>
229 <td {{color_status.13}} title='{{module_messages.13}}'>{{active_beam.get_upvalues.12}}</td> <td {{color_status.14}} title='{{module_messages.14}}'>{{active_beam.get_upvalues.13}}</td> <td {{color_status.15}} title='{{module_messages.15}}'>{{active_beam.get_upvalues.14}}</td> <td {{color_status.16}} title='{{module_messages.16}}'>{{active_beam.get_upvalues.15}}</td>
227 </tr>
230 </tr>
228 <tr>
231 <tr>
229 <td {{color_status.13}} title='{{module_messages.13}}'>{{active_beam.get_downvalues.12}}</td> <td {{color_status.14}} title='{{module_messages.14}}'>{{active_beam.get_downvalues.13}}</td> <td {{color_status.15}} title='{{module_messages.15}}'>{{active_beam.get_downvalues.14}}</td> <td {{color_status.16}} title='{{module_messages.16}}'>{{active_beam.get_downvalues.15}}</td>
232 <td {{color_status.13}} title='{{module_messages.13}}'>{{active_beam.get_downvalues.12}}</td> <td {{color_status.14}} title='{{module_messages.14}}'>{{active_beam.get_downvalues.13}}</td> <td {{color_status.15}} title='{{module_messages.15}}'>{{active_beam.get_downvalues.14}}</td> <td {{color_status.16}} title='{{module_messages.16}}'>{{active_beam.get_downvalues.15}}</td>
230 </tr>
233 </tr>
231 <tr>
234 <tr>
232 <td {{color_status.21}} title='{{module_messages.21}}'>{{active_beam.get_upvalues.20}}</td> <td {{color_status.22}} title='{{module_messages.22}}'>{{active_beam.get_upvalues.21}}</td> <td {{color_status.23}} title='{{module_messages.23}}'>{{active_beam.get_upvalues.22}}</td> <td {{color_status.24}} title='{{module_messages.24}}'>{{active_beam.get_upvalues.23}}</td>
235 <td {{color_status.21}} title='{{module_messages.21}}'>{{active_beam.get_upvalues.20}}</td> <td {{color_status.22}} title='{{module_messages.22}}'>{{active_beam.get_upvalues.21}}</td> <td {{color_status.23}} title='{{module_messages.23}}'>{{active_beam.get_upvalues.22}}</td> <td {{color_status.24}} title='{{module_messages.24}}'>{{active_beam.get_upvalues.23}}</td>
233 </tr>
236 </tr>
234 <tr>
237 <tr>
235 <td {{color_status.21}} title='{{module_messages.21}}'>{{active_beam.get_downvalues.20}}</td> <td {{color_status.22}} title='{{module_messages.22}}'>{{active_beam.get_downvalues.21}}</td> <td {{color_status.23}} title='{{module_messages.23}}'>{{active_beam.get_downvalues.22}}</td> <td {{color_status.24}} title='{{module_messages.24}}'>{{active_beam.get_downvalues.23}}</td>
238 <td {{color_status.21}} title='{{module_messages.21}}'>{{active_beam.get_downvalues.20}}</td> <td {{color_status.22}} title='{{module_messages.22}}'>{{active_beam.get_downvalues.21}}</td> <td {{color_status.23}} title='{{module_messages.23}}'>{{active_beam.get_downvalues.22}}</td> <td {{color_status.24}} title='{{module_messages.24}}'>{{active_beam.get_downvalues.23}}</td>
236 </tr>
239 </tr>
237 <tr>
240 <tr>
238 <td {{color_status.29}} title='{{module_messages.29}}'>{{active_beam.get_upvalues.28}}</td> <td {{color_status.30}} title='{{module_messages.30}}'>{{active_beam.get_upvalues.29}}</td> <td {{color_status.31}} title='{{module_messages.31}}'>{{active_beam.get_upvalues.30}}</td> <td {{color_status.32}} title='{{module_messages.32}}'>{{active_beam.get_upvalues.31}}</td>
241 <td {{color_status.29}} title='{{module_messages.29}}'>{{active_beam.get_upvalues.28}}</td> <td {{color_status.30}} title='{{module_messages.30}}'>{{active_beam.get_upvalues.29}}</td> <td {{color_status.31}} title='{{module_messages.31}}'>{{active_beam.get_upvalues.30}}</td> <td {{color_status.32}} title='{{module_messages.32}}'>{{active_beam.get_upvalues.31}}</td>
239 </tr>
242 </tr>
240 <tr>
243 <tr>
241 <td {{color_status.29}} title='{{module_messages.29}}'>{{active_beam.get_downvalues.28}}</td> <td {{color_status.30}} title='{{module_messages.30}}'>{{active_beam.get_downvalues.29}}</td> <td {{color_status.31}} title='{{module_messages.31}}'>{{active_beam.get_downvalues.30}}</td> <td {{color_status.32}} title='{{module_messages.32}}'>{{active_beam.get_downvalues.31}}</td>
244 <td {{color_status.29}} title='{{module_messages.29}}'>{{active_beam.get_downvalues.28}}</td> <td {{color_status.30}} title='{{module_messages.30}}'>{{active_beam.get_downvalues.29}}</td> <td {{color_status.31}} title='{{module_messages.31}}'>{{active_beam.get_downvalues.30}}</td> <td {{color_status.32}} title='{{module_messages.32}}'>{{active_beam.get_downvalues.31}}</td>
242 </tr>
245 </tr>
243 </table>
246 </table>
244 </td>
247 </td>
245 </tr>
248 </tr>
246 <tr>
249 <tr>
247 <td> <b>West Quarter</b>
250 <td> <b>West Quarter</b>
248 <table class="west ">
251 <table class="west ">
249 <tr>
252 <tr>
250 <td {{color_status.33}} title='{{module_messages.33}}'>{{active_beam.get_upvalues.32}}</td> <td {{color_status.34}} title='{{module_messages.34}}'>{{active_beam.get_upvalues.33}}</td> <td {{color_status.35}} title='{{module_messages.35}}'>{{active_beam.get_upvalues.34}}</td> <td {{color_status.36}} title='{{module_messages.36}}'>{{active_beam.get_upvalues.35}}</td>
253 <td {{color_status.33}} title='{{module_messages.33}}'>{{active_beam.get_upvalues.32}}</td> <td {{color_status.34}} title='{{module_messages.34}}'>{{active_beam.get_upvalues.33}}</td> <td {{color_status.35}} title='{{module_messages.35}}'>{{active_beam.get_upvalues.34}}</td> <td {{color_status.36}} title='{{module_messages.36}}'>{{active_beam.get_upvalues.35}}</td>
251 </tr>
254 </tr>
252 <tr>
255 <tr>
253 <td {{color_status.33}} title='{{module_messages.33}}'>{{active_beam.get_downvalues.32}}</td> <td {{color_status.34}} title='{{module_messages.34}}'>{{active_beam.get_downvalues.33}}</td> <td {{color_status.35}} title='{{module_messages.35}}'>{{active_beam.get_downvalues.34}}</td> <td {{color_status.36}} title='{{module_messages.36}}'>{{active_beam.get_downvalues.35}}</td>
256 <td {{color_status.33}} title='{{module_messages.33}}'>{{active_beam.get_downvalues.32}}</td> <td {{color_status.34}} title='{{module_messages.34}}'>{{active_beam.get_downvalues.33}}</td> <td {{color_status.35}} title='{{module_messages.35}}'>{{active_beam.get_downvalues.34}}</td> <td {{color_status.36}} title='{{module_messages.36}}'>{{active_beam.get_downvalues.35}}</td>
254 </tr>
257 </tr>
255 <tr>
258 <tr>
256 <td {{color_status.41}} title='{{module_messages.41}}'>{{active_beam.get_upvalues.40}}</td> <td {{color_status.42}} title='{{module_messages.42}}'>{{active_beam.get_upvalues.41}}</td> <td {{color_status.43}} title='{{module_messages.43}}'>{{active_beam.get_upvalues.42}}</td> <td {{color_status.44}} title='{{module_messages.44}}'>{{active_beam.get_upvalues.43}}</td>
259 <td {{color_status.41}} title='{{module_messages.41}}'>{{active_beam.get_upvalues.40}}</td> <td {{color_status.42}} title='{{module_messages.42}}'>{{active_beam.get_upvalues.41}}</td> <td {{color_status.43}} title='{{module_messages.43}}'>{{active_beam.get_upvalues.42}}</td> <td {{color_status.44}} title='{{module_messages.44}}'>{{active_beam.get_upvalues.43}}</td>
257 </tr>
260 </tr>
258 <tr>
261 <tr>
259 <td {{color_status.41}} title='{{module_messages.41}}'>{{active_beam.get_downvalues.40}}</td> <td {{color_status.42}} title='{{module_messages.42}}'>{{active_beam.get_downvalues.41}}</td> <td {{color_status.43}} title='{{module_messages.43}}'>{{active_beam.get_downvalues.42}}</td> <td {{color_status.44}} title='{{module_messages.44}}'>{{active_beam.get_downvalues.43}}</td>
262 <td {{color_status.41}} title='{{module_messages.41}}'>{{active_beam.get_downvalues.40}}</td> <td {{color_status.42}} title='{{module_messages.42}}'>{{active_beam.get_downvalues.41}}</td> <td {{color_status.43}} title='{{module_messages.43}}'>{{active_beam.get_downvalues.42}}</td> <td {{color_status.44}} title='{{module_messages.44}}'>{{active_beam.get_downvalues.43}}</td>
260 </tr>
263 </tr>
261 <tr>
264 <tr>
262 <td {{color_status.49}} title='{{module_messages.49}}'>{{active_beam.get_upvalues.48}}</td> <td {{color_status.50}} title='{{module_messages.50}}'>{{active_beam.get_upvalues.49}}</td> <td {{color_status.51}} title='{{module_messages.51}}'>{{active_beam.get_upvalues.50}}</td> <td {{color_status.52}} title='{{module_messages.52}}'>{{active_beam.get_upvalues.51}}</td>
265 <td {{color_status.49}} title='{{module_messages.49}}'>{{active_beam.get_upvalues.48}}</td> <td {{color_status.50}} title='{{module_messages.50}}'>{{active_beam.get_upvalues.49}}</td> <td {{color_status.51}} title='{{module_messages.51}}'>{{active_beam.get_upvalues.50}}</td> <td {{color_status.52}} title='{{module_messages.52}}'>{{active_beam.get_upvalues.51}}</td>
263 </tr>
266 </tr>
264 <tr>
267 <tr>
265 <td {{color_status.49}} title='{{module_messages.49}}'>{{active_beam.get_downvalues.48}}</td> <td {{color_status.50}} title='{{module_messages.50}}'>{{active_beam.get_downvalues.49}}</td> <td {{color_status.51}} title='{{module_messages.51}}'>{{active_beam.get_downvalues.50}}</td> <td {{color_status.52}} title='{{module_messages.52}}'>{{active_beam.get_downvalues.51}}</td>
268 <td {{color_status.49}} title='{{module_messages.49}}'>{{active_beam.get_downvalues.48}}</td> <td {{color_status.50}} title='{{module_messages.50}}'>{{active_beam.get_downvalues.49}}</td> <td {{color_status.51}} title='{{module_messages.51}}'>{{active_beam.get_downvalues.50}}</td> <td {{color_status.52}} title='{{module_messages.52}}'>{{active_beam.get_downvalues.51}}</td>
266 </tr>
269 </tr>
267 <tr>
270 <tr>
268 <td {{color_status.57}} title='{{module_messages.57}}'>{{active_beam.get_upvalues.56}}</td> <td {{color_status.58}} title='{{module_messages.58}}'>{{active_beam.get_upvalues.57}}</td> <td {{color_status.59}} title='{{module_messages.59}}'>{{active_beam.get_upvalues.58}}</td> <td {{color_status.60}} title='{{module_messages.60}}'>{{active_beam.get_upvalues.59}}</td>
271 <td {{color_status.57}} title='{{module_messages.57}}'>{{active_beam.get_upvalues.56}}</td> <td {{color_status.58}} title='{{module_messages.58}}'>{{active_beam.get_upvalues.57}}</td> <td {{color_status.59}} title='{{module_messages.59}}'>{{active_beam.get_upvalues.58}}</td> <td {{color_status.60}} title='{{module_messages.60}}'>{{active_beam.get_upvalues.59}}</td>
269 </tr>
272 </tr>
270 <tr>
273 <tr>
271 <td {{color_status.57}} title='{{module_messages.57}}'>{{active_beam.get_downvalues.56}}</td> <td {{color_status.58}} title='{{module_messages.58}}'>{{active_beam.get_downvalues.57}}</td> <td {{color_status.59}} title='{{module_messages.59}}'>{{active_beam.get_downvalues.58}}</td> <td {{color_status.60}} title='{{module_messages.60}}'>{{active_beam.get_downvalues.59}}</td>
274 <td {{color_status.57}} title='{{module_messages.57}}'>{{active_beam.get_downvalues.56}}</td> <td {{color_status.58}} title='{{module_messages.58}}'>{{active_beam.get_downvalues.57}}</td> <td {{color_status.59}} title='{{module_messages.59}}'>{{active_beam.get_downvalues.58}}</td> <td {{color_status.60}} title='{{module_messages.60}}'>{{active_beam.get_downvalues.59}}</td>
272 </tr>
275 </tr>
273 </table>
276 </table>
274 </td>
277 </td>
275 <td> <b>South Quarter</b>
278 <td> <b>South Quarter</b>
276 <table class="south ">
279 <table class="south ">
277 <tr>
280 <tr>
278 <td {{color_status.37}} title='{{module_messages.37}}'>{{active_beam.get_upvalues.36}}</td> <td {{color_status.38}} title='{{module_messages.38}}'>{{active_beam.get_upvalues.37}}</td> <td {{color_status.39}} title='{{module_messages.39}}'>{{active_beam.get_upvalues.38}}</td> <td {{color_status.40}} title='{{module_messages.40}}'>{{active_beam.get_upvalues.39}}</td>
281 <td {{color_status.37}} title='{{module_messages.37}}'>{{active_beam.get_upvalues.36}}</td> <td {{color_status.38}} title='{{module_messages.38}}'>{{active_beam.get_upvalues.37}}</td> <td {{color_status.39}} title='{{module_messages.39}}'>{{active_beam.get_upvalues.38}}</td> <td {{color_status.40}} title='{{module_messages.40}}'>{{active_beam.get_upvalues.39}}</td>
279 </tr>
282 </tr>
280 <tr>
283 <tr>
281 <td {{color_status.37}} title='{{module_messages.37}}'>{{active_beam.get_downvalues.36}}</td> <td {{color_status.38}} title='{{module_messages.38}}'>{{active_beam.get_downvalues.37}}</td> <td {{color_status.39}} title='{{module_messages.39}}'>{{active_beam.get_downvalues.38}}</td> <td {{color_status.40}} title='{{module_messages.40}}'>{{active_beam.get_downvalues.39}}</td>
284 <td {{color_status.37}} title='{{module_messages.37}}'>{{active_beam.get_downvalues.36}}</td> <td {{color_status.38}} title='{{module_messages.38}}'>{{active_beam.get_downvalues.37}}</td> <td {{color_status.39}} title='{{module_messages.39}}'>{{active_beam.get_downvalues.38}}</td> <td {{color_status.40}} title='{{module_messages.40}}'>{{active_beam.get_downvalues.39}}</td>
282 </tr>
285 </tr>
283 <tr>
286 <tr>
284 <td {{color_status.45}} title='{{module_messages.45}}'>{{active_beam.get_upvalues.44}}</td> <td {{color_status.46}} title='{{module_messages.46}}'>{{active_beam.get_upvalues.45}}</td> <td {{color_status.47}} title='{{module_messages.47}}'>{{active_beam.get_upvalues.46}}</td> <td {{color_status.48}} title='{{module_messages.48}}'>{{active_beam.get_upvalues.47}}</td>
287 <td {{color_status.45}} title='{{module_messages.45}}'>{{active_beam.get_upvalues.44}}</td> <td {{color_status.46}} title='{{module_messages.46}}'>{{active_beam.get_upvalues.45}}</td> <td {{color_status.47}} title='{{module_messages.47}}'>{{active_beam.get_upvalues.46}}</td> <td {{color_status.48}} title='{{module_messages.48}}'>{{active_beam.get_upvalues.47}}</td>
285 </tr>
288 </tr>
286 <tr>
289 <tr>
287 <td {{color_status.45}} title='{{module_messages.45}}'>{{active_beam.get_downvalues.44}}</td> <td {{color_status.46}} title='{{module_messages.46}}'>{{active_beam.get_downvalues.45}}</td> <td {{color_status.47}} title='{{module_messages.47}}'>{{active_beam.get_downvalues.46}}</td> <td {{color_status.48}} title='{{module_messages.48}}'>{{active_beam.get_downvalues.47}}</td>
290 <td {{color_status.45}} title='{{module_messages.45}}'>{{active_beam.get_downvalues.44}}</td> <td {{color_status.46}} title='{{module_messages.46}}'>{{active_beam.get_downvalues.45}}</td> <td {{color_status.47}} title='{{module_messages.47}}'>{{active_beam.get_downvalues.46}}</td> <td {{color_status.48}} title='{{module_messages.48}}'>{{active_beam.get_downvalues.47}}</td>
288 </tr>
291 </tr>
289 <tr>
292 <tr>
290 <td {{color_status.53}} title='{{module_messages.53}}'>{{active_beam.get_upvalues.52}}</td> <td {{color_status.54}} title='{{module_messages.54}}'>{{active_beam.get_upvalues.53}}</td> <td {{color_status.55}} title='{{module_messages.55}}'>{{active_beam.get_upvalues.54}}</td> <td {{color_status.56}} title='{{module_messages.56}}'>{{active_beam.get_upvalues.55}}</td>
293 <td {{color_status.53}} title='{{module_messages.53}}'>{{active_beam.get_upvalues.52}}</td> <td {{color_status.54}} title='{{module_messages.54}}'>{{active_beam.get_upvalues.53}}</td> <td {{color_status.55}} title='{{module_messages.55}}'>{{active_beam.get_upvalues.54}}</td> <td {{color_status.56}} title='{{module_messages.56}}'>{{active_beam.get_upvalues.55}}</td>
291 </tr>
294 </tr>
292 <tr>
295 <tr>
293 <td {{color_status.53}} title='{{module_messages.53}}'>{{active_beam.get_downvalues.52}}</td> <td {{color_status.54}} title='{{module_messages.54}}'>{{active_beam.get_downvalues.53}}</td> <td {{color_status.55}} title='{{module_messages.55}}'>{{active_beam.get_downvalues.54}}</td> <td {{color_status.56}} title='{{module_messages.56}}'>{{active_beam.get_downvalues.55}}</td>
296 <td {{color_status.53}} title='{{module_messages.53}}'>{{active_beam.get_downvalues.52}}</td> <td {{color_status.54}} title='{{module_messages.54}}'>{{active_beam.get_downvalues.53}}</td> <td {{color_status.55}} title='{{module_messages.55}}'>{{active_beam.get_downvalues.54}}</td> <td {{color_status.56}} title='{{module_messages.56}}'>{{active_beam.get_downvalues.55}}</td>
294 </tr>
297 </tr>
295 <tr>
298 <tr>
296 <td {{color_status.61}} title='{{module_messages.61}}'>{{active_beam.get_upvalues.60}}</td> <td {{color_status.62}} title='{{module_messages.62}}'>{{active_beam.get_upvalues.61}}</td> <td {{color_status.63}} title='{{module_messages.63}}'>{{active_beam.get_upvalues.62}}</td> <td {{color_status.64}} title='{{module_messages.64}}'>{{active_beam.get_upvalues.63}}</td>
299 <td {{color_status.61}} title='{{module_messages.61}}'>{{active_beam.get_upvalues.60}}</td> <td {{color_status.62}} title='{{module_messages.62}}'>{{active_beam.get_upvalues.61}}</td> <td {{color_status.63}} title='{{module_messages.63}}'>{{active_beam.get_upvalues.62}}</td> <td {{color_status.64}} title='{{module_messages.64}}'>{{active_beam.get_upvalues.63}}</td>
297 </tr>
300 </tr>
298 <tr>
301 <tr>
299 <td {{color_status.61}} title='{{module_messages.61}}'>{{active_beam.get_downvalues.60}}</td> <td {{color_status.62}} title='{{module_messages.62}}'>{{active_beam.get_downvalues.61}}</td> <td {{color_status.63}} title='{{module_messages.63}}'>{{active_beam.get_downvalues.62}}</td> <td {{color_status.64}} title='{{module_messages.64}}'>{{active_beam.get_downvalues.63}}</td>
302 <td {{color_status.61}} title='{{module_messages.61}}'>{{active_beam.get_downvalues.60}}</td> <td {{color_status.62}} title='{{module_messages.62}}'>{{active_beam.get_downvalues.61}}</td> <td {{color_status.63}} title='{{module_messages.63}}'>{{active_beam.get_downvalues.62}}</td> <td {{color_status.64}} title='{{module_messages.64}}'>{{active_beam.get_downvalues.63}}</td>
300 </tr>
303 </tr>
301 </table>
304 </table>
302 </td>
305 </td>
303 </tr>
306 </tr>
304 </table>
307 </table>
305
308
306
309
307
310
308 <table class="legend">
311 <table class="legend">
309 <tr>
312 <tr>
310 <th colspan="2">Legend</th>
313 <th colspan="2">Legend</th>
311 </tr>
314 </tr>
312 <tr>
315 <tr>
313 <td class="text-danger"><i>RED</i></td><td>Disconnected</td>
316 <td class="text-danger"><i>RED</i></td><td>Disconnected</td>
314 </tr>
317 </tr>
315 <tr>
318 <tr>
316 <td class="text-warning"><i>ORANGE</i></td><td>Connected</td>
319 <td class="text-warning"><i>ORANGE</i></td><td>Connected</td>
317 </tr>
320 </tr>
318 <tr>
321 <tr>
319 <td class="text-success"><i>GREEN</i></td><td>Running </td>
322 <td class="text-success"><i>GREEN</i></td><td>Running </td>
320 </tr>
323 </tr>
321 <!--
324 <!--
322 <tr>
325 <tr>
323 <td colspan="2">
326 <td colspan="2">
324 <button style="margin: 10px;" id="sendbeam" type="button" class="btn btn-default">
327 <button style="margin: 10px;" id="sendbeam" type="button" class="btn btn-default">
325 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
328 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
326 Change Beam</button>
329 Change Beam</button>
327 </td>
330 </td>
328 </tr>
331 </tr>
329 -->
332 -->
330 </table>
333 </table>
331
334
332
335
333
336
334
337
335 {% else %}
338 {% else %}
336 <p><i>This ABS Configuration does not have a current active ABS Beam...<br>
339 <p><i>This ABS Configuration does not have a current active ABS Beam...<br>
337 Please send Beam List to ABS modules. </i></p>
340 Please send Beam List to ABS modules. </i></p>
338
341
339 {% endif %}
342 {% endif %}
340
343
341
344
342 </div>
345 </div>
343
346
344
347
345
348
346 {% for beam in beams %}
349 {% for beam in beams %}
347 <div id="menu{{forloop.counter}}" class="tab-pane fade">
350 <div id="menu{{forloop.counter}}" class="tab-pane fade">
348 <h3>{%if active_beam.id == beam.id%}Active Beam: {%endif%}{{beam.name}}</h3>
351 <h3>{%if active_beam.id == beam.id%}Active Beam: {%endif%}{{beam.name}}</h3>
349 <!--<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>-->
352 <!--<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>-->
350 <table id="abs_pattern{{forloop.counter}}" class="abs">
353 <table id="abs_pattern{{forloop.counter}}" class="abs">
351 <tr>
354 <tr>
352 <td> <b>North Quarter</b>
355 <td> <b>North Quarter</b>
353 <table class="north ">
356 <table class="north ">
354 <tr>
357 <tr>
355 <td {{beam.color_status.1}} title='{{beam.module_messages.1}}'>{{beam.get_upvalues.0}}</td> <td {{beam.color_status.2}} title='{{beam.module_messages.2}}'>{{beam.get_upvalues.1}}</td> <td {{beam.color_status.3}} title='{{beam.module_messages.3}}'>{{beam.get_upvalues.2}}</td> <td {{beam.color_status.4}} title='{{beam.module_messages.4}}'>{{beam.get_upvalues.3}}</td>
358 <td {{beam.color_status.1}} title='{{beam.module_messages.1}}'>{{beam.get_upvalues.0}}</td> <td {{beam.color_status.2}} title='{{beam.module_messages.2}}'>{{beam.get_upvalues.1}}</td> <td {{beam.color_status.3}} title='{{beam.module_messages.3}}'>{{beam.get_upvalues.2}}</td> <td {{beam.color_status.4}} title='{{beam.module_messages.4}}'>{{beam.get_upvalues.3}}</td>
356 </tr>
359 </tr>
357 <tr>
360 <tr>
358 <td {{beam.color_status.1}} title='{{beam.module_messages.1}}'>{{beam.get_downvalues.0}}</td> <td {{beam.color_status.2}} title='{{beam.module_messages.2}}'>{{beam.get_downvalues.1}}</td> <td {{beam.color_status.3}} title='{{beam.module_messages.3}}'>{{beam.get_downvalues.2}}</td> <td {{beam.color_status.4}} title='{{beam.module_messages.4}}'>{{beam.get_downvalues.3}}</td>
361 <td {{beam.color_status.1}} title='{{beam.module_messages.1}}'>{{beam.get_downvalues.0}}</td> <td {{beam.color_status.2}} title='{{beam.module_messages.2}}'>{{beam.get_downvalues.1}}</td> <td {{beam.color_status.3}} title='{{beam.module_messages.3}}'>{{beam.get_downvalues.2}}</td> <td {{beam.color_status.4}} title='{{beam.module_messages.4}}'>{{beam.get_downvalues.3}}</td>
359 </tr>
362 </tr>
360 <tr>
363 <tr>
361 <td {{beam.color_status.9}} title='{{beam.module_messages.9}}'>{{beam.get_upvalues.8}}</td> <td {{beam.color_status.10}} title='{{beam.module_messages.10}}'>{{beam.get_upvalues.9}}</td> <td {{beam.color_status.11}} title='{{beam.module_messages.11}}'>{{beam.get_upvalues.10}}</td> <td {{beam.color_status.12}} title='{{beam.module_messages.12}}'>{{beam.get_upvalues.11}}</td>
364 <td {{beam.color_status.9}} title='{{beam.module_messages.9}}'>{{beam.get_upvalues.8}}</td> <td {{beam.color_status.10}} title='{{beam.module_messages.10}}'>{{beam.get_upvalues.9}}</td> <td {{beam.color_status.11}} title='{{beam.module_messages.11}}'>{{beam.get_upvalues.10}}</td> <td {{beam.color_status.12}} title='{{beam.module_messages.12}}'>{{beam.get_upvalues.11}}</td>
362 </tr>
365 </tr>
363 <tr>
366 <tr>
364 <td {{beam.color_status.9}} title='{{beam.module_messages.9}}'>{{beam.get_downvalues.8}}</td> <td {{beam.color_status.10}} title='{{beam.module_messages.10}}'>{{beam.get_downvalues.9}}</td> <td {{beam.color_status.11}} title='{{beam.module_messages.11}}'>{{beam.get_downvalues.10}}</td> <td {{beam.color_status.12}} title='{{beam.module_messages.12}}'>{{beam.get_downvalues.11}}</td>
367 <td {{beam.color_status.9}} title='{{beam.module_messages.9}}'>{{beam.get_downvalues.8}}</td> <td {{beam.color_status.10}} title='{{beam.module_messages.10}}'>{{beam.get_downvalues.9}}</td> <td {{beam.color_status.11}} title='{{beam.module_messages.11}}'>{{beam.get_downvalues.10}}</td> <td {{beam.color_status.12}} title='{{beam.module_messages.12}}'>{{beam.get_downvalues.11}}</td>
365 </tr>
368 </tr>
366 <tr>
369 <tr>
367 <td {{beam.color_status.17}} title='{{beam.module_messages.17}}'>{{beam.get_upvalues.16}}</td> <td {{beam.color_status.18}} title='{{beam.module_messages.18}}'>{{beam.get_upvalues.17}}</td> <td {{beam.color_status.19}} title='{{beam.module_messages.19}}'>{{beam.get_upvalues.18}}</td> <td {{beam.color_status.20}} title='{{beam.module_messages.20}}'>{{beam.get_upvalues.19}}</td>
370 <td {{beam.color_status.17}} title='{{beam.module_messages.17}}'>{{beam.get_upvalues.16}}</td> <td {{beam.color_status.18}} title='{{beam.module_messages.18}}'>{{beam.get_upvalues.17}}</td> <td {{beam.color_status.19}} title='{{beam.module_messages.19}}'>{{beam.get_upvalues.18}}</td> <td {{beam.color_status.20}} title='{{beam.module_messages.20}}'>{{beam.get_upvalues.19}}</td>
368 </tr>
371 </tr>
369 <tr>
372 <tr>
370 <td {{beam.color_status.17}} title='{{beam.module_messages.17}}'>{{beam.get_downvalues.16}}</td> <td {{beam.color_status.18}} title='{{beam.module_messages.18}}'>{{beam.get_downvalues.17}}</td> <td {{beam.color_status.19}} title='{{beam.module_messages.19}}'>{{beam.get_downvalues.18}}</td> <td {{beam.color_status.20}} title='{{beam.module_messages.20}}'>{{beam.get_downvalues.19}}</td>
373 <td {{beam.color_status.17}} title='{{beam.module_messages.17}}'>{{beam.get_downvalues.16}}</td> <td {{beam.color_status.18}} title='{{beam.module_messages.18}}'>{{beam.get_downvalues.17}}</td> <td {{beam.color_status.19}} title='{{beam.module_messages.19}}'>{{beam.get_downvalues.18}}</td> <td {{beam.color_status.20}} title='{{beam.module_messages.20}}'>{{beam.get_downvalues.19}}</td>
371 </tr>
374 </tr>
372 <tr>
375 <tr>
373 <td {{beam.color_status.25}} title='{{beam.module_messages.25}}'>{{beam.get_upvalues.24}}</td> <td {{beam.color_status.26}} title='{{beam.module_messages.26}}'>{{beam.get_upvalues.25}}</td> <td {{beam.color_status.27}} title='{{beam.module_messages.27}}'>{{beam.get_upvalues.26}}</td> <td {{beam.color_status.28}} title='{{beam.module_messages.28}}'>{{beam.get_upvalues.27}}</td>
376 <td {{beam.color_status.25}} title='{{beam.module_messages.25}}'>{{beam.get_upvalues.24}}</td> <td {{beam.color_status.26}} title='{{beam.module_messages.26}}'>{{beam.get_upvalues.25}}</td> <td {{beam.color_status.27}} title='{{beam.module_messages.27}}'>{{beam.get_upvalues.26}}</td> <td {{beam.color_status.28}} title='{{beam.module_messages.28}}'>{{beam.get_upvalues.27}}</td>
374 </tr>
377 </tr>
375 <tr>
378 <tr>
376 <td {{beam.color_status.25}} title='{{beam.module_messages.25}}'>{{beam.get_downvalues.24}}</td> <td {{beam.color_status.26}} title='{{beam.module_messages.26}}'>{{beam.get_downvalues.25}}</td> <td {{beam.color_status.27}} title='{{beam.module_messages.27}}'>{{beam.get_downvalues.26}}</td> <td {{beam.color_status.28}} title='{{beam.module_messages.28}}'>{{beam.get_downvalues.27}}</td>
379 <td {{beam.color_status.25}} title='{{beam.module_messages.25}}'>{{beam.get_downvalues.24}}</td> <td {{beam.color_status.26}} title='{{beam.module_messages.26}}'>{{beam.get_downvalues.25}}</td> <td {{beam.color_status.27}} title='{{beam.module_messages.27}}'>{{beam.get_downvalues.26}}</td> <td {{beam.color_status.28}} title='{{beam.module_messages.28}}'>{{beam.get_downvalues.27}}</td>
377 </tr>
380 </tr>
378 </table>
381 </table>
379 </td>
382 </td>
380 <td> <b>East Quarter</b>
383 <td> <b>East Quarter</b>
381 <table class="east ">
384 <table class="east ">
382 <tr>
385 <tr>
383 <td {{beam.color_status.5}} title='{{beam.module_messages.5}}'>{{beam.get_upvalues.4}}</td> <td {{beam.color_status.6}} title='{{beam.module_messages.6}}'>{{beam.get_upvalues.5}}</td> <td {{beam.color_status.7}} title='{{beam.module_messages.7}}'>{{beam.get_upvalues.6}}</td> <td {{beam.color_status.8}} title='{{beam.module_messages.8}}'>{{beam.get_upvalues.7}}</td>
386 <td {{beam.color_status.5}} title='{{beam.module_messages.5}}'>{{beam.get_upvalues.4}}</td> <td {{beam.color_status.6}} title='{{beam.module_messages.6}}'>{{beam.get_upvalues.5}}</td> <td {{beam.color_status.7}} title='{{beam.module_messages.7}}'>{{beam.get_upvalues.6}}</td> <td {{beam.color_status.8}} title='{{beam.module_messages.8}}'>{{beam.get_upvalues.7}}</td>
384 </tr>
387 </tr>
385 <tr>
388 <tr>
386 <td {{beam.color_status.5}} title='{{beam.module_messages.5}}'>{{beam.get_downvalues.4}}</td> <td {{beam.color_status.6}} title='{{beam.module_messages.6}}'>{{beam.get_downvalues.5}}</td> <td {{beam.color_status.7}} title='{{beam.module_messages.7}}'>{{beam.get_downvalues.6}}</td> <td {{beam.color_status.8}} title='{{beam.module_messages.8}}'>{{beam.get_downvalues.7}}</td>
389 <td {{beam.color_status.5}} title='{{beam.module_messages.5}}'>{{beam.get_downvalues.4}}</td> <td {{beam.color_status.6}} title='{{beam.module_messages.6}}'>{{beam.get_downvalues.5}}</td> <td {{beam.color_status.7}} title='{{beam.module_messages.7}}'>{{beam.get_downvalues.6}}</td> <td {{beam.color_status.8}} title='{{beam.module_messages.8}}'>{{beam.get_downvalues.7}}</td>
387 </tr>
390 </tr>
388 <tr>
391 <tr>
389 <td {{beam.color_status.13}} title='{{beam.module_messages.13}}'>{{beam.get_upvalues.12}}</td> <td {{beam.color_status.14}} title='{{beam.module_messages.14}}'>{{beam.get_upvalues.13}}</td> <td {{beam.color_status.15}} title='{{beam.module_messages.15}}'>{{beam.get_upvalues.14}}</td> <td {{beam.color_status.16}} title='{{beam.module_messages.16}}'>{{beam.get_upvalues.15}}</td>
392 <td {{beam.color_status.13}} title='{{beam.module_messages.13}}'>{{beam.get_upvalues.12}}</td> <td {{beam.color_status.14}} title='{{beam.module_messages.14}}'>{{beam.get_upvalues.13}}</td> <td {{beam.color_status.15}} title='{{beam.module_messages.15}}'>{{beam.get_upvalues.14}}</td> <td {{beam.color_status.16}} title='{{beam.module_messages.16}}'>{{beam.get_upvalues.15}}</td>
390 </tr>
393 </tr>
391 <tr>
394 <tr>
392 <td {{beam.color_status.13}} title='{{beam.module_messages.13}}'>{{beam.get_downvalues.12}}</td> <td {{beam.color_status.14}} title='{{beam.module_messages.14}}'>{{beam.get_downvalues.13}}</td> <td {{beam.color_status.15}} title='{{beam.module_messages.15}}'>{{beam.get_downvalues.14}}</td> <td {{beam.color_status.16}} title='{{beam.module_messages.16}}'>{{beam.get_downvalues.15}}</td>
395 <td {{beam.color_status.13}} title='{{beam.module_messages.13}}'>{{beam.get_downvalues.12}}</td> <td {{beam.color_status.14}} title='{{beam.module_messages.14}}'>{{beam.get_downvalues.13}}</td> <td {{beam.color_status.15}} title='{{beam.module_messages.15}}'>{{beam.get_downvalues.14}}</td> <td {{beam.color_status.16}} title='{{beam.module_messages.16}}'>{{beam.get_downvalues.15}}</td>
393 </tr>
396 </tr>
394 <tr>
397 <tr>
395 <td {{beam.color_status.21}} title='{{beam.module_messages.21}}'>{{beam.get_upvalues.20}}</td> <td {{beam.color_status.22}} title='{{beam.module_messages.22}}'>{{beam.get_upvalues.21}}</td> <td {{beam.color_status.23}} title='{{beam.module_messages.23}}'>{{beam.get_upvalues.22}}</td> <td {{beam.color_status.24}} title='{{beam.module_messages.24}}'>{{beam.get_upvalues.23}}</td>
398 <td {{beam.color_status.21}} title='{{beam.module_messages.21}}'>{{beam.get_upvalues.20}}</td> <td {{beam.color_status.22}} title='{{beam.module_messages.22}}'>{{beam.get_upvalues.21}}</td> <td {{beam.color_status.23}} title='{{beam.module_messages.23}}'>{{beam.get_upvalues.22}}</td> <td {{beam.color_status.24}} title='{{beam.module_messages.24}}'>{{beam.get_upvalues.23}}</td>
396 </tr>
399 </tr>
397 <tr>
400 <tr>
398 <td {{beam.color_status.21}} title='{{beam.module_messages.21}}'>{{beam.get_downvalues.20}}</td> <td {{beam.color_status.22}} title='{{beam.module_messages.22}}'>{{beam.get_downvalues.21}}</td> <td {{beam.color_status.23}} title='{{beam.module_messages.23}}'>{{beam.get_downvalues.22}}</td> <td {{beam.color_status.24}} title='{{beam.module_messages.24}}'>{{beam.get_downvalues.23}}</td>
401 <td {{beam.color_status.21}} title='{{beam.module_messages.21}}'>{{beam.get_downvalues.20}}</td> <td {{beam.color_status.22}} title='{{beam.module_messages.22}}'>{{beam.get_downvalues.21}}</td> <td {{beam.color_status.23}} title='{{beam.module_messages.23}}'>{{beam.get_downvalues.22}}</td> <td {{beam.color_status.24}} title='{{beam.module_messages.24}}'>{{beam.get_downvalues.23}}</td>
399 </tr>
402 </tr>
400 <tr>
403 <tr>
401 <td {{beam.color_status.29}} title='{{beam.module_messages.29}}'>{{beam.get_upvalues.28}}</td> <td {{beam.color_status.30}} title='{{beam.module_messages.30}}'>{{beam.get_upvalues.29}}</td> <td {{beam.color_status.31}} title='{{beam.module_messages.31}}'>{{beam.get_upvalues.30}}</td> <td {{beam.color_status.32}} title='{{beam.module_messages.32}}'>{{beam.get_upvalues.31}}</td>
404 <td {{beam.color_status.29}} title='{{beam.module_messages.29}}'>{{beam.get_upvalues.28}}</td> <td {{beam.color_status.30}} title='{{beam.module_messages.30}}'>{{beam.get_upvalues.29}}</td> <td {{beam.color_status.31}} title='{{beam.module_messages.31}}'>{{beam.get_upvalues.30}}</td> <td {{beam.color_status.32}} title='{{beam.module_messages.32}}'>{{beam.get_upvalues.31}}</td>
402 </tr>
405 </tr>
403 <tr>
406 <tr>
404 <td {{beam.color_status.29}} title='{{beam.module_messages.29}}'>{{beam.get_downvalues.28}}</td> <td {{beam.color_status.30}} title='{{beam.module_messages.30}}'>{{beam.get_downvalues.29}}</td> <td {{beam.color_status.31}} title='{{beam.module_messages.31}}'>{{beam.get_downvalues.30}}</td> <td {{beam.color_status.32}} title='{{beam.module_messages.32}}'>{{beam.get_downvalues.31}}</td>
407 <td {{beam.color_status.29}} title='{{beam.module_messages.29}}'>{{beam.get_downvalues.28}}</td> <td {{beam.color_status.30}} title='{{beam.module_messages.30}}'>{{beam.get_downvalues.29}}</td> <td {{beam.color_status.31}} title='{{beam.module_messages.31}}'>{{beam.get_downvalues.30}}</td> <td {{beam.color_status.32}} title='{{beam.module_messages.32}}'>{{beam.get_downvalues.31}}</td>
405 </tr>
408 </tr>
406 </table>
409 </table>
407 </td>
410 </td>
408 </tr>
411 </tr>
409 <tr>
412 <tr>
410 <td> <b>West Quarter</b>
413 <td> <b>West Quarter</b>
411 <table class="west ">
414 <table class="west ">
412 <tr>
415 <tr>
413 <td {{beam.color_status.33}} title='{{beam.module_messages.33}}'>{{beam.get_upvalues.32}}</td> <td {{beam.color_status.34}} title='{{beam.module_messages.34}}'>{{beam.get_upvalues.33}}</td> <td {{beam.color_status.35}} title='{{beam.module_messages.35}}'>{{beam.get_upvalues.34}}</td> <td {{beam.color_status.36}} title='{{beam.module_messages.36}}'>{{beam.get_upvalues.35}}</td>
416 <td {{beam.color_status.33}} title='{{beam.module_messages.33}}'>{{beam.get_upvalues.32}}</td> <td {{beam.color_status.34}} title='{{beam.module_messages.34}}'>{{beam.get_upvalues.33}}</td> <td {{beam.color_status.35}} title='{{beam.module_messages.35}}'>{{beam.get_upvalues.34}}</td> <td {{beam.color_status.36}} title='{{beam.module_messages.36}}'>{{beam.get_upvalues.35}}</td>
414 </tr>
417 </tr>
415 <tr>
418 <tr>
416 <td {{beam.color_status.33}} title='{{beam.module_messages.33}}'>{{beam.get_downvalues.32}}</td> <td {{beam.color_status.34}} title='{{beam.module_messages.34}}'>{{beam.get_downvalues.33}}</td> <td {{beam.color_status.35}} title='{{beam.module_messages.35}}'>{{beam.get_downvalues.34}}</td> <td {{beam.color_status.36}} title='{{beam.module_messages.36}}'>{{beam.get_downvalues.35}}</td>
419 <td {{beam.color_status.33}} title='{{beam.module_messages.33}}'>{{beam.get_downvalues.32}}</td> <td {{beam.color_status.34}} title='{{beam.module_messages.34}}'>{{beam.get_downvalues.33}}</td> <td {{beam.color_status.35}} title='{{beam.module_messages.35}}'>{{beam.get_downvalues.34}}</td> <td {{beam.color_status.36}} title='{{beam.module_messages.36}}'>{{beam.get_downvalues.35}}</td>
417 </tr>
420 </tr>
418 <tr>
421 <tr>
419 <td {{beam.color_status.41}} title='{{beam.module_messages.41}}'>{{beam.get_upvalues.40}}</td> <td {{beam.color_status.42}} title='{{beam.module_messages.42}}'>{{beam.get_upvalues.41}}</td> <td {{beam.color_status.43}} title='{{beam.module_messages.43}}'>{{beam.get_upvalues.42}}</td> <td {{beam.color_status.44}} title='{{beam.module_messages.44}}'>{{beam.get_upvalues.43}}</td>
422 <td {{beam.color_status.41}} title='{{beam.module_messages.41}}'>{{beam.get_upvalues.40}}</td> <td {{beam.color_status.42}} title='{{beam.module_messages.42}}'>{{beam.get_upvalues.41}}</td> <td {{beam.color_status.43}} title='{{beam.module_messages.43}}'>{{beam.get_upvalues.42}}</td> <td {{beam.color_status.44}} title='{{beam.module_messages.44}}'>{{beam.get_upvalues.43}}</td>
420 </tr>
423 </tr>
421 <tr>
424 <tr>
422 <td {{beam.color_status.41}} title='{{beam.module_messages.41}}'>{{beam.get_downvalues.40}}</td> <td {{beam.color_status.42}} title='{{beam.module_messages.42}}'>{{beam.get_downvalues.41}}</td> <td {{beam.color_status.43}} title='{{beam.module_messages.43}}'>{{beam.get_downvalues.42}}</td> <td {{beam.color_status.44}} title='{{beam.module_messages.44}}'>{{beam.get_downvalues.43}}</td>
425 <td {{beam.color_status.41}} title='{{beam.module_messages.41}}'>{{beam.get_downvalues.40}}</td> <td {{beam.color_status.42}} title='{{beam.module_messages.42}}'>{{beam.get_downvalues.41}}</td> <td {{beam.color_status.43}} title='{{beam.module_messages.43}}'>{{beam.get_downvalues.42}}</td> <td {{beam.color_status.44}} title='{{beam.module_messages.44}}'>{{beam.get_downvalues.43}}</td>
423 </tr>
426 </tr>
424 <tr>
427 <tr>
425 <td {{beam.color_status.49}} title='{{beam.module_messages.49}}'>{{beam.get_upvalues.48}}</td> <td {{beam.color_status.50}} title='{{beam.module_messages.50}}'>{{beam.get_upvalues.49}}</td> <td {{beam.color_status.51}} title='{{beam.module_messages.51}}'>{{beam.get_upvalues.50}}</td> <td {{beam.color_status.52}} title='{{beam.module_messages.52}}'>{{beam.get_upvalues.51}}</td>
428 <td {{beam.color_status.49}} title='{{beam.module_messages.49}}'>{{beam.get_upvalues.48}}</td> <td {{beam.color_status.50}} title='{{beam.module_messages.50}}'>{{beam.get_upvalues.49}}</td> <td {{beam.color_status.51}} title='{{beam.module_messages.51}}'>{{beam.get_upvalues.50}}</td> <td {{beam.color_status.52}} title='{{beam.module_messages.52}}'>{{beam.get_upvalues.51}}</td>
426 </tr>
429 </tr>
427 <tr>
430 <tr>
428 <td {{beam.color_status.49}} title='{{beam.module_messages.49}}'>{{beam.get_downvalues.48}}</td> <td {{beam.color_status.50}} title='{{beam.module_messages.50}}'>{{beam.get_downvalues.49}}</td> <td {{beam.color_status.51}} title='{{beam.module_messages.51}}'>{{beam.get_downvalues.50}}</td> <td {{beam.color_status.52}} title='{{beam.module_messages.52}}'>{{beam.get_downvalues.51}}</td>
431 <td {{beam.color_status.49}} title='{{beam.module_messages.49}}'>{{beam.get_downvalues.48}}</td> <td {{beam.color_status.50}} title='{{beam.module_messages.50}}'>{{beam.get_downvalues.49}}</td> <td {{beam.color_status.51}} title='{{beam.module_messages.51}}'>{{beam.get_downvalues.50}}</td> <td {{beam.color_status.52}} title='{{beam.module_messages.52}}'>{{beam.get_downvalues.51}}</td>
429 </tr>
432 </tr>
430 <tr>
433 <tr>
431 <td {{beam.color_status.57}} title='{{beam.module_messages.57}}'>{{beam.get_upvalues.56}}</td> <td {{beam.color_status.58}} title='{{beam.module_messages.58}}'>{{beam.get_upvalues.57}}</td> <td {{beam.color_status.59}} title='{{beam.module_messages.59}}'>{{beam.get_upvalues.58}}</td> <td {{beam.color_status.60}} title='{{beam.module_messages.60}}'>{{beam.get_upvalues.59}}</td>
434 <td {{beam.color_status.57}} title='{{beam.module_messages.57}}'>{{beam.get_upvalues.56}}</td> <td {{beam.color_status.58}} title='{{beam.module_messages.58}}'>{{beam.get_upvalues.57}}</td> <td {{beam.color_status.59}} title='{{beam.module_messages.59}}'>{{beam.get_upvalues.58}}</td> <td {{beam.color_status.60}} title='{{beam.module_messages.60}}'>{{beam.get_upvalues.59}}</td>
432 </tr>
435 </tr>
433 <tr>
436 <tr>
434 <td {{beam.color_status.57}} title='{{beam.module_messages.57}}'>{{beam.get_downvalues.56}}</td> <td {{beam.color_status.58}} title='{{beam.module_messages.58}}'>{{beam.get_downvalues.57}}</td> <td {{beam.color_status.59}} title='{{beam.module_messages.59}}'>{{beam.get_downvalues.58}}</td> <td {{beam.color_status.60}} title='{{beam.module_messages.60}}'>{{beam.get_downvalues.59}}</td>
437 <td {{beam.color_status.57}} title='{{beam.module_messages.57}}'>{{beam.get_downvalues.56}}</td> <td {{beam.color_status.58}} title='{{beam.module_messages.58}}'>{{beam.get_downvalues.57}}</td> <td {{beam.color_status.59}} title='{{beam.module_messages.59}}'>{{beam.get_downvalues.58}}</td> <td {{beam.color_status.60}} title='{{beam.module_messages.60}}'>{{beam.get_downvalues.59}}</td>
435 </tr>
438 </tr>
436 </table>
439 </table>
437 </td>
440 </td>
438 <td> <b>South Quarter</b>
441 <td> <b>South Quarter</b>
439 <table class="south ">
442 <table class="south ">
440 <tr>
443 <tr>
441 <td {{beam.color_status.37}} title='{{beam.module_messages.37}}'>{{beam.get_upvalues.36}}</td> <td {{beam.color_status.38}} title='{{beam.module_messages.38}}'>{{beam.get_upvalues.37}}</td> <td {{beam.color_status.39}} title='{{beam.module_messages.39}}'>{{beam.get_upvalues.38}}</td> <td {{beam.color_status.40}} title='{{beam.module_messages.40}}'>{{beam.get_upvalues.39}}</td>
444 <td {{beam.color_status.37}} title='{{beam.module_messages.37}}'>{{beam.get_upvalues.36}}</td> <td {{beam.color_status.38}} title='{{beam.module_messages.38}}'>{{beam.get_upvalues.37}}</td> <td {{beam.color_status.39}} title='{{beam.module_messages.39}}'>{{beam.get_upvalues.38}}</td> <td {{beam.color_status.40}} title='{{beam.module_messages.40}}'>{{beam.get_upvalues.39}}</td>
442 </tr>
445 </tr>
443 <tr>
446 <tr>
444 <td {{beam.color_status.37}} title='{{beam.module_messages.37}}'>{{beam.get_downvalues.36}}</td> <td {{beam.color_status.38}} title='{{beam.module_messages.38}}'>{{beam.get_downvalues.37}}</td> <td {{beam.color_status.39}} title='{{beam.module_messages.39}}'>{{beam.get_downvalues.38}}</td> <td {{beam.color_status.40}} title='{{beam.module_messages.40}}'>{{beam.get_downvalues.39}}</td>
447 <td {{beam.color_status.37}} title='{{beam.module_messages.37}}'>{{beam.get_downvalues.36}}</td> <td {{beam.color_status.38}} title='{{beam.module_messages.38}}'>{{beam.get_downvalues.37}}</td> <td {{beam.color_status.39}} title='{{beam.module_messages.39}}'>{{beam.get_downvalues.38}}</td> <td {{beam.color_status.40}} title='{{beam.module_messages.40}}'>{{beam.get_downvalues.39}}</td>
445 </tr>
448 </tr>
446 <tr>
449 <tr>
447 <td {{beam.color_status.45}} title='{{beam.module_messages.45}}'>{{beam.get_upvalues.44}}</td> <td {{beam.color_status.46}} title='{{beam.module_messages.46}}'>{{beam.get_upvalues.45}}</td> <td {{beam.color_status.47}} title='{{beam.module_messages.47}}'>{{beam.get_upvalues.46}}</td> <td {{beam.color_status.48}} title='{{beam.module_messages.48}}'>{{beam.get_upvalues.47}}</td>
450 <td {{beam.color_status.45}} title='{{beam.module_messages.45}}'>{{beam.get_upvalues.44}}</td> <td {{beam.color_status.46}} title='{{beam.module_messages.46}}'>{{beam.get_upvalues.45}}</td> <td {{beam.color_status.47}} title='{{beam.module_messages.47}}'>{{beam.get_upvalues.46}}</td> <td {{beam.color_status.48}} title='{{beam.module_messages.48}}'>{{beam.get_upvalues.47}}</td>
448 </tr>
451 </tr>
449 <tr>
452 <tr>
450 <td {{beam.color_status.45}} title='{{beam.module_messages.45}}'>{{beam.get_downvalues.44}}</td> <td {{beam.color_status.46}} title='{{beam.module_messages.46}}'>{{beam.get_downvalues.45}}</td> <td {{beam.color_status.47}} title='{{beam.module_messages.47}}'>{{beam.get_downvalues.46}}</td> <td {{beam.color_status.48}} title='{{beam.module_messages.48}}'>{{beam.get_downvalues.47}}</td>
453 <td {{beam.color_status.45}} title='{{beam.module_messages.45}}'>{{beam.get_downvalues.44}}</td> <td {{beam.color_status.46}} title='{{beam.module_messages.46}}'>{{beam.get_downvalues.45}}</td> <td {{beam.color_status.47}} title='{{beam.module_messages.47}}'>{{beam.get_downvalues.46}}</td> <td {{beam.color_status.48}} title='{{beam.module_messages.48}}'>{{beam.get_downvalues.47}}</td>
451 </tr>
454 </tr>
452 <tr>
455 <tr>
453 <td {{beam.color_status.53}} title='{{beam.module_messages.53}}'>{{beam.get_upvalues.52}}</td> <td {{beam.color_status.54}} title='{{beam.module_messages.54}}'>{{beam.get_upvalues.53}}</td> <td {{beam.color_status.55}} title='{{beam.module_messages.55}}'>{{beam.get_upvalues.54}}</td> <td {{beam.color_status.56}} title='{{beam.module_messages.56}}'>{{beam.get_upvalues.55}}</td>
456 <td {{beam.color_status.53}} title='{{beam.module_messages.53}}'>{{beam.get_upvalues.52}}</td> <td {{beam.color_status.54}} title='{{beam.module_messages.54}}'>{{beam.get_upvalues.53}}</td> <td {{beam.color_status.55}} title='{{beam.module_messages.55}}'>{{beam.get_upvalues.54}}</td> <td {{beam.color_status.56}} title='{{beam.module_messages.56}}'>{{beam.get_upvalues.55}}</td>
454 </tr>
457 </tr>
455 <tr>
458 <tr>
456 <td {{beam.color_status.53}} title='{{beam.module_messages.53}}'>{{beam.get_downvalues.52}}</td> <td {{beam.color_status.54}} title='{{beam.module_messages.54}}'>{{beam.get_downvalues.53}}</td> <td {{beam.color_status.55}} title='{{beam.module_messages.55}}'>{{beam.get_downvalues.54}}</td> <td {{beam.color_status.56}} title='{{beam.module_messages.56}}'>{{beam.get_downvalues.55}}</td>
459 <td {{beam.color_status.53}} title='{{beam.module_messages.53}}'>{{beam.get_downvalues.52}}</td> <td {{beam.color_status.54}} title='{{beam.module_messages.54}}'>{{beam.get_downvalues.53}}</td> <td {{beam.color_status.55}} title='{{beam.module_messages.55}}'>{{beam.get_downvalues.54}}</td> <td {{beam.color_status.56}} title='{{beam.module_messages.56}}'>{{beam.get_downvalues.55}}</td>
457 </tr>
460 </tr>
458 <tr>
461 <tr>
459 <td {{beam.color_status.61}} title='{{beam.module_messages.61}}'>{{beam.get_upvalues.60}}</td> <td {{beam.color_status.62}} title='{{beam.module_messages.62}}'>{{beam.get_upvalues.61}}</td> <td {{beam.color_status.63}} title='{{beam.module_messages.63}}'>{{beam.get_upvalues.62}}</td> <td {{beam.color_status.64}} title='{{beam.module_messages.64}}'>{{beam.get_upvalues.63}}</td>
462 <td {{beam.color_status.61}} title='{{beam.module_messages.61}}'>{{beam.get_upvalues.60}}</td> <td {{beam.color_status.62}} title='{{beam.module_messages.62}}'>{{beam.get_upvalues.61}}</td> <td {{beam.color_status.63}} title='{{beam.module_messages.63}}'>{{beam.get_upvalues.62}}</td> <td {{beam.color_status.64}} title='{{beam.module_messages.64}}'>{{beam.get_upvalues.63}}</td>
460 </tr>
463 </tr>
461 <tr>
464 <tr>
462 <td {{beam.color_status.61}} title='{{beam.module_messages.61}}'>{{beam.get_downvalues.60}}</td> <td {{beam.color_status.62}} title='{{beam.module_messages.62}}'>{{beam.get_downvalues.61}}</td> <td {{beam.color_status.63}} title='{{beam.module_messages.63}}'>{{beam.get_downvalues.62}}</td> <td {{beam.color_status.64}} title='{{beam.module_messages.64}}'>{{beam.get_downvalues.63}}</td>
465 <td {{beam.color_status.61}} title='{{beam.module_messages.61}}'>{{beam.get_downvalues.60}}</td> <td {{beam.color_status.62}} title='{{beam.module_messages.62}}'>{{beam.get_downvalues.61}}</td> <td {{beam.color_status.63}} title='{{beam.module_messages.63}}'>{{beam.get_downvalues.62}}</td> <td {{beam.color_status.64}} title='{{beam.module_messages.64}}'>{{beam.get_downvalues.63}}</td>
463 </tr>
466 </tr>
464 </table>
467 </table>
465 </td>
468 </td>
466 </tr>
469 </tr>
467 </table>
470 </table>
468
471
469 {% if active_beam.id != beam.id %}
472 {% if active_beam.id != beam.id %}
470 <div style="vertical-align: top; display:inline-block;">
473 <div style="vertical-align: top; display:inline-block;">
471 <button style="" id="send_beam{{forloop.counter}}" type="button" class="btn btn-default">
474 <button style="" id="send_beam{{forloop.counter}}" type="button" class="btn btn-default">
472 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
475 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
473 Change Beam</button>
476 Change Beam</button>
474 </div>
477 </div>
475 {% endif %}
478 {% endif %}
476
479
477
480
478
481
479
482
480 {% if active_beam %}
483 {% if active_beam %}
481 {% if active_beam.id == beam.id %}
484 {% if active_beam.id == beam.id %}
482 <table class="legend">
485 <table class="legend">
483 <tr>
486 <tr>
484 <th colspan="2">Legend</th>
487 <th colspan="2">Legend</th>
485 </tr>
488 </tr>
486 <tr>
489 <tr>
487 <td class="text-danger"><i>RED</i></td><td>Disconnected</td>
490 <td class="text-danger"><i>RED</i></td><td>Disconnected</td>
488 </tr>
491 </tr>
489 <tr>
492 <tr>
490 <td class="text-warning"><i>ORANGE</i></td><td>Connected</td>
493 <td class="text-warning"><i>ORANGE</i></td><td>Connected</td>
491 </tr>
494 </tr>
492 <tr>
495 <tr>
493 <td class="text-success"><i>GREEN</i></td><td>Running
496 <td class="text-success"><i>GREEN</i></td><td>Running
494 </td>
497 </td>
495 </tr>
498 </tr>
496 </table>
499 </table>
497
500
498 {% endif %}
501 {% endif %}
499 {% endif %}
502 {% endif %}
500
503
501
504
502 </div>
505 </div>
503
506
504
507
505 {% endfor %}
508 {% endfor %}
506
509
507
510
508
511
509 </div>
512 </div>
510 </div>
513 </div>
511
514
512
515
516 {% else %}
517 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
518 {% endif %}
519
520 {% endblock extra-content %}
513
521
514
522
523
524 {% block extra-js%}
515 <script>
525 <script>
516 $(document).ready(function() {
526 $(document).ready(function() {
517
527
518 {% for beam in beams %}
528 {% for beam in beams %}
519 $("#send_beam{{forloop.counter}}").click(function() {
520 document.location = "{% url 'url_send_beam' dev_conf.id beam.id %}";
521 });
522 {%endfor%}
523
524 });
525 </script>
526
527
529
530 {% if dev_conf.operation_mode == 1 %}
531 $("#send_beam{{forloop.counter}}").prop('disabled', true)
532 {% else %}
533 $("#send_beam{{forloop.counter}}").click(function() {
534 document.location = "{% url 'url_send_beam' dev_conf.id beam.id %}";
535 });
536 {% endif %}
528
537
538 {% endfor %}
529
539
530
540 });
531
541 </script>
532 {% else %}
533 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
534 {% endif %}
535
536
537 {% endblock %}
542 {% endblock %}
@@ -1,427 +1,430
1 from django.shortcuts import render_to_response
1 from django.shortcuts import render_to_response
2 from django.template import RequestContext
2 from django.template import RequestContext
3 from django.shortcuts import redirect, render, get_object_or_404
3 from django.shortcuts import redirect, render, get_object_or_404
4 from django.contrib import messages
4 from django.contrib import messages
5 from django.conf import settings
5 from django.conf import settings
6 from django.http import HttpResponse
6 from django.http import HttpResponse
7 from django.core.urlresolvers import reverse
7 from django.core.urlresolvers import reverse
8
8
9 from datetime import datetime
9 from datetime import datetime
10 from time import sleep
10 from time import sleep
11 import os
11 import os
12
12
13 from apps.main.models import Device, Configuration, Experiment
13 from apps.main.models import Device, Configuration, Experiment
14 from apps.main.views import sidebar
14 from apps.main.views import sidebar
15
15
16 from .models import ABSConfiguration, ABSBeam
16 from .models import ABSConfiguration, ABSBeam
17 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm, ABSImportForm
17 from .forms import ABSConfigurationForm, ABSBeamEditForm, ABSBeamAddForm, ABSImportForm
18
18
19 from .utils.overJroShow import overJroShow
19 from .utils.overJroShow import overJroShow
20 from .utils.OverJRO import OverJRO
20 from .utils.OverJRO import OverJRO
21 # Create your views here.
21 # Create your views here.
22 import json, ast
22 import json, ast
23
23
24
24
25 def get_values_from_form(form_data):
25 def get_values_from_form(form_data):
26
26
27 sublistup = []
27 sublistup = []
28 sublistdown = []
28 sublistdown = []
29 subtxlistup = []
29 subtxlistup = []
30 subtxlistdown = []
30 subtxlistdown = []
31 subrxlistup = []
31 subrxlistup = []
32 subrxlistdown = []
32 subrxlistdown = []
33
33
34 up_values_list = []
34 up_values_list = []
35 down_values_list = []
35 down_values_list = []
36 up_txvalues_list = []
36 up_txvalues_list = []
37 down_txvalues_list = []
37 down_txvalues_list = []
38 up_rxvalues_list = []
38 up_rxvalues_list = []
39 down_rxvalues_list = []
39 down_rxvalues_list = []
40
40
41 values_list = {}
41 values_list = {}
42 cont = 1
42 cont = 1
43
43
44 for i in range(1,65):
44 for i in range(1,65):
45 x = float(form_data['abs_up'+str(i)])
45 x = float(form_data['abs_up'+str(i)])
46 y = float(form_data['abs_down'+str(i)])
46 y = float(form_data['abs_down'+str(i)])
47 sublistup.append(x)
47 sublistup.append(x)
48 sublistdown.append(y)
48 sublistdown.append(y)
49
49
50 if str(i) in form_data.getlist('uptx_checks'):
50 if str(i) in form_data.getlist('uptx_checks'):
51 subtxlistup.append(1)
51 subtxlistup.append(1)
52 else:
52 else:
53 subtxlistup.append(0)
53 subtxlistup.append(0)
54 if str(i) in form_data.getlist('downtx_checks'):
54 if str(i) in form_data.getlist('downtx_checks'):
55 subtxlistdown.append(1)
55 subtxlistdown.append(1)
56 else:
56 else:
57 subtxlistdown.append(0)
57 subtxlistdown.append(0)
58
58
59 if str(i) in form_data.getlist('uprx_checks'):
59 if str(i) in form_data.getlist('uprx_checks'):
60 subrxlistup.append(1)
60 subrxlistup.append(1)
61 else:
61 else:
62 subrxlistup.append(0)
62 subrxlistup.append(0)
63 if str(i) in form_data.getlist('downrx_checks'):
63 if str(i) in form_data.getlist('downrx_checks'):
64 subrxlistdown.append(1)
64 subrxlistdown.append(1)
65 else:
65 else:
66 subrxlistdown.append(0)
66 subrxlistdown.append(0)
67
67
68 cont = cont+1
68 cont = cont+1
69
69
70 if cont == 9:
70 if cont == 9:
71 up_values_list.append(sublistup)
71 up_values_list.append(sublistup)
72 down_values_list.append(sublistdown)
72 down_values_list.append(sublistdown)
73 sublistup = []
73 sublistup = []
74 sublistdown = []
74 sublistdown = []
75
75
76 up_txvalues_list.append(subtxlistup)
76 up_txvalues_list.append(subtxlistup)
77 down_txvalues_list.append(subtxlistdown)
77 down_txvalues_list.append(subtxlistdown)
78 subtxlistup = []
78 subtxlistup = []
79 subtxlistdown = []
79 subtxlistdown = []
80 up_rxvalues_list.append(subrxlistup)
80 up_rxvalues_list.append(subrxlistup)
81 down_rxvalues_list.append(subrxlistdown)
81 down_rxvalues_list.append(subrxlistdown)
82 subrxlistup = []
82 subrxlistup = []
83 subrxlistdown = []
83 subrxlistdown = []
84 cont = 1
84 cont = 1
85
85
86
86
87 list_uesup = []
87 list_uesup = []
88 list_uesdown = []
88 list_uesdown = []
89 for i in range(1,5):
89 for i in range(1,5):
90 if form_data['ues_up'+str(i)] == '':
90 if form_data['ues_up'+str(i)] == '':
91 list_uesup.append(0.0)
91 list_uesup.append(0.0)
92 else:
92 else:
93 list_uesup.append(float(form_data['ues_up'+str(i)]))
93 list_uesup.append(float(form_data['ues_up'+str(i)]))
94
94
95 if form_data['ues_down'+str(i)] == '':
95 if form_data['ues_down'+str(i)] == '':
96 list_uesdown.append(0.0)
96 list_uesdown.append(0.0)
97 else:
97 else:
98 list_uesdown.append(float(form_data['ues_down'+str(i)]))
98 list_uesdown.append(float(form_data['ues_down'+str(i)]))
99
99
100 onlyrx_list = form_data.getlist('onlyrx')
100 onlyrx_list = form_data.getlist('onlyrx')
101 only_rx = {}
101 only_rx = {}
102 if '1' in onlyrx_list:
102 if '1' in onlyrx_list:
103 only_rx['up'] = True
103 only_rx['up'] = True
104 else:
104 else:
105 only_rx['up'] = False
105 only_rx['up'] = False
106 if '2' in onlyrx_list:
106 if '2' in onlyrx_list:
107 only_rx['down'] = True
107 only_rx['down'] = True
108 else:
108 else:
109 only_rx['down'] = False
109 only_rx['down'] = False
110
110
111 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
111 antenna = {'antenna_up': up_values_list, 'antenna_down': down_values_list}
112 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
112 tx = {'up': up_txvalues_list, 'down': down_txvalues_list}
113 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
113 rx = {'up': up_rxvalues_list, 'down': down_rxvalues_list}
114 ues = {'up': list_uesup, 'down': list_uesdown}
114 ues = {'up': list_uesup, 'down': list_uesdown}
115 name = str(form_data['beam_name'])
115 name = str(form_data['beam_name'])
116
116
117 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
117 beam_data = {'name': name, 'antenna': antenna, 'tx': tx, 'rx': rx, 'ues': ues, 'only_rx': only_rx}
118
118
119 return beam_data
119 return beam_data
120
120
121
121
122
122
123 def abs_conf(request, id_conf):
123 def abs_conf(request, id_conf):
124
124
125 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
125 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
126 beams = ABSBeam.objects.filter(abs_conf=conf)
126 beams = ABSBeam.objects.filter(abs_conf=conf)
127 active_beam_id = json.loads(conf.active_beam)
127 active_beam_id = json.loads(conf.active_beam)
128
128
129 #------------Colors for Active Beam:-------------
129 #------------Colors for Active Beam:-------------
130 modules_status = json.loads(conf.module_status)
130 modules_status = json.loads(conf.module_status)
131 module_messages = json.loads(conf.module_messages)
131 module_messages = json.loads(conf.module_messages)
132
132
133 color_status = {}
133 color_status = {}
134 for status in modules_status:
134 for status in modules_status:
135 if modules_status[status] == 3: #Running background-color: #00cc00;
135 if modules_status[status] == 3: #Running background-color: #00cc00;
136 color_status[status] = 'class=text-success'#'bgcolor=#00cc00'
136 color_status[status] = 'class=text-success'#'bgcolor=#00cc00'
137 elif modules_status[status] == 1: #Connected background-color: #ee902c;
137 elif modules_status[status] == 1: #Connected background-color: #ee902c;
138 color_status[status] = 'class=text-warning'#'bgcolor=#ee902c'
138 color_status[status] = 'class=text-warning'#'bgcolor=#ee902c'
139 else: #Disconnected background-color: #ff0000;
139 else: #Disconnected background-color: #ff0000;
140 color_status[status] = 'class=text-danger'#'bgcolor=#FF0000'
140 color_status[status] = 'class=text-danger'#'bgcolor=#FF0000'
141 #------------------------------------------------
141 #------------------------------------------------
142
142
143 kwargs = {}
143 kwargs = {}
144 #kwargs['status'] = conf.device.get_status_display()
144 #kwargs['status'] = conf.device.get_status_display()
145 kwargs['connected_modules'] = str(conf.connected_modules())+'/64'
145 kwargs['connected_modules'] = str(conf.connected_modules())+'/64'
146
146
147 kwargs['dev_conf'] = conf
147 kwargs['dev_conf'] = conf
148 kwargs['dev_conf_keys'] = ['name',]
148 if conf.operation_mode == 0:
149 kwargs['dev_conf_keys'] = ['name', 'operation_mode']
150 else:
151 kwargs['dev_conf_keys'] = ['name', 'operation_mode', 'operation_value']
149
152
150 kwargs['title'] = 'ABS Configuration'
153 kwargs['title'] = 'ABS Configuration'
151 kwargs['suptitle'] = 'Details'
154 kwargs['suptitle'] = 'Details'
152 #kwargs['no_play'] = True
155 #kwargs['no_play'] = True
153
156
154 kwargs['button'] = 'Edit Configuration'
157 kwargs['button'] = 'Edit Configuration'
155 #------------------Active Beam-----------------------
158 #------------------Active Beam-----------------------
156 try:
159 try:
157 active_beam_id = active_beam_id['active_beam']
160 active_beam_id = active_beam_id['active_beam']
158 active_beam = ABSBeam.objects.get(pk=active_beam_id)
161 active_beam = ABSBeam.objects.get(pk=active_beam_id)
159 kwargs['active_beam'] = active_beam
162 kwargs['active_beam'] = active_beam
160 for beam in beams:
163 for beam in beams:
161 if beam.id == active_beam.id:
164 if beam.id == active_beam.id:
162 beam.color_status = color_status
165 beam.color_status = color_status
163 beam.module_messages = module_messages
166 beam.module_messages = module_messages
164 except:
167 except:
165 active_beam = ''
168 active_beam = ''
166 #----------------------------------------------------
169 #----------------------------------------------------
167 kwargs['beams'] = beams
170 kwargs['beams'] = beams
168 kwargs['modules_status'] = modules_status
171 kwargs['modules_status'] = modules_status
169 kwargs['color_status'] = color_status
172 kwargs['color_status'] = color_status
170 kwargs['module_messages'] = module_messages
173 kwargs['module_messages'] = module_messages
171
174
172 #kwargs['only_stop'] = True
175 #kwargs['only_stop'] = True
173
176
174 ###### SIDEBAR ######
177 ###### SIDEBAR ######
175 kwargs.update(sidebar(conf=conf))
178 kwargs.update(sidebar(conf=conf))
176
179
177 return render(request, 'abs_conf.html', kwargs)
180 return render(request, 'abs_conf.html', kwargs)
178
181
179 def abs_conf_edit(request, id_conf):
182 def abs_conf_edit(request, id_conf):
180
183
181 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
184 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
182
185
183 beams = ABSBeam.objects.filter(abs_conf=conf)
186 beams = ABSBeam.objects.filter(abs_conf=conf)
184 print beams
187 print beams
185
188
186 if request.method=='GET':
189 if request.method=='GET':
187 form = ABSConfigurationForm(instance=conf)
190 form = ABSConfigurationForm(instance=conf)
188
191
189 if request.method=='POST':
192 if request.method=='POST':
190 form = ABSConfigurationForm(request.POST, instance=conf)
193 form = ABSConfigurationForm(request.POST, instance=conf)
191
194
192 if form.is_valid():
195 if form.is_valid():
193 conf = form.save(commit=False)
196 conf = form.save(commit=False)
194 conf.save()
197 conf.save()
195 return redirect('url_abs_conf', id_conf=conf.id)
198 return redirect('url_abs_conf', id_conf=conf.id)
196
199
197 ###### SIDEBAR ######
200 ###### SIDEBAR ######
198 kwargs = {}
201 kwargs = {}
199
202
200 kwargs['dev_conf'] = conf
203 kwargs['dev_conf'] = conf
201 #kwargs['id_dev'] = conf.id
204 #kwargs['id_dev'] = conf.id
202 kwargs['id_conf'] = conf.id
205 kwargs['id_conf'] = conf.id
203 kwargs['form'] = form
206 kwargs['form'] = form
204 kwargs['abs_beams'] = beams
207 kwargs['abs_beams'] = beams
205 kwargs['title'] = 'Device Configuration'
208 kwargs['title'] = 'Device Configuration'
206 kwargs['suptitle'] = 'Edit'
209 kwargs['suptitle'] = 'Edit'
207 kwargs['button'] = 'Save'
210 kwargs['button'] = 'Save'
208
211
209 kwargs['edit'] = True
212 kwargs['edit'] = True
210
213
211 return render(request, 'abs_conf_edit.html', kwargs)
214 return render(request, 'abs_conf_edit.html', kwargs)
212
215
213
216
214 def import_file(request, id_conf):
217 def import_file(request, id_conf):
215
218
216 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
219 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
217 if request.method=='POST':
220 if request.method=='POST':
218 form = ABSImportForm(request.POST, request.FILES)
221 form = ABSImportForm(request.POST, request.FILES)
219 if form.is_valid():
222 if form.is_valid():
220 try:
223 try:
221 parms = conf.import_from_file(request.FILES['file_name'])
224 parms = conf.import_from_file(request.FILES['file_name'])
222
225
223 if parms:
226 if parms:
224 conf.update_from_file(parms)
227 conf.update_from_file(parms)
225 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
228 messages.success(request, 'Configuration "%s" loaded succesfully' % request.FILES['file_name'])
226 return redirect(conf.get_absolute_url_edit())
229 return redirect(conf.get_absolute_url_edit())
227
230
228 except Exception as e:
231 except Exception as e:
229 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
232 messages.error(request, 'Error parsing file: "%s" - %s' % (request.FILES['file_name'], e))
230
233
231 else:
234 else:
232 messages.warning(request, 'Your current configuration will be replaced')
235 messages.warning(request, 'Your current configuration will be replaced')
233 form = ABSImportForm()
236 form = ABSImportForm()
234
237
235 kwargs = {}
238 kwargs = {}
236 kwargs['form'] = form
239 kwargs['form'] = form
237 kwargs['title'] = 'ABS Configuration'
240 kwargs['title'] = 'ABS Configuration'
238 kwargs['suptitle'] = 'Import file'
241 kwargs['suptitle'] = 'Import file'
239 kwargs['button'] = 'Upload'
242 kwargs['button'] = 'Upload'
240 kwargs['previous'] = conf.get_absolute_url()
243 kwargs['previous'] = conf.get_absolute_url()
241
244
242 return render(request, 'abs_import.html', kwargs)
245 return render(request, 'abs_import.html', kwargs)
243
246
244
247
245 def send_beam(request, id_conf, id_beam):
248 def send_beam(request, id_conf, id_beam):
246
249
247 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
250 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
248 beam = get_object_or_404(ABSBeam, pk=id_beam)
251 beam = get_object_or_404(ABSBeam, pk=id_beam)
249 beams_list = ABSBeam.objects.filter(abs_conf=conf)
252 beams_list = ABSBeam.objects.filter(abs_conf=conf)
250 #To set this beam as an Active Beam
253 #To set this beam as an Active Beam
251 beam.set_as_activebeam()
254 beam.set_as_activebeam()
252 #To send beam position to abs-modules
255 #To send beam position to abs-modules
253 i = 0
256 i = 0
254 for b in beams_list:
257 for b in beams_list:
255 if b.id == int(id_beam):
258 if b.id == int(id_beam):
256 break
259 break
257 else:
260 else:
258 i += 1
261 i += 1
259 beam_pos = i + 1 #Estandarizar
262 beam_pos = i + 1 #Estandarizar
260 print 'Position: ',beam_pos
263 print 'Position: ',beam_pos
261 conf.send_beam_num(beam_pos)
264 conf.send_beam_num(beam_pos)
262
265
263 return redirect('url_abs_conf', conf.id)
266 return redirect('url_abs_conf', conf.id)
264
267
265
268
266 def add_beam(request, id_conf):
269 def add_beam(request, id_conf):
267
270
268 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
271 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
269 confs = Configuration.objects.all()
272 confs = Configuration.objects.all()
270
273
271 if request.method=='GET':
274 if request.method=='GET':
272 #form = ABSBeamEditForm()
275 #form = ABSBeamEditForm()
273 form = ABSBeamAddForm()
276 form = ABSBeamAddForm()
274
277
275 if request.method=='POST':
278 if request.method=='POST':
276 form = ABSBeamAddForm(request.POST)
279 form = ABSBeamAddForm(request.POST)
277
280
278 beam_data = get_values_from_form(request.POST)
281 beam_data = get_values_from_form(request.POST)
279
282
280 new_beam = ABSBeam(
283 new_beam = ABSBeam(
281 name =beam_data['name'],
284 name =beam_data['name'],
282 antenna =json.dumps(beam_data['antenna']),
285 antenna =json.dumps(beam_data['antenna']),
283 abs_conf=conf,
286 abs_conf=conf,
284 tx =json.dumps(beam_data['tx']),
287 tx =json.dumps(beam_data['tx']),
285 rx =json.dumps(beam_data['rx']),
288 rx =json.dumps(beam_data['rx']),
286 ues =json.dumps(beam_data['ues']),
289 ues =json.dumps(beam_data['ues']),
287 only_rx =json.dumps(beam_data['only_rx'])
290 only_rx =json.dumps(beam_data['only_rx'])
288 )
291 )
289 new_beam.save()
292 new_beam.save()
290 #---Update 6bits configuration and add beam to abs configuration beams list.
293 #---Update 6bits configuration and add beam to abs configuration beams list.
291 new_beam.modules_6bits()
294 new_beam.modules_6bits()
292 #new_beam.add_beam2list()
295 #new_beam.add_beam2list()
293 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
296 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
294
297
295 return redirect('url_edit_abs_conf', conf.id)
298 return redirect('url_edit_abs_conf', conf.id)
296
299
297 ###### SIDEBAR ######
300 ###### SIDEBAR ######
298 kwargs = {}
301 kwargs = {}
299
302
300 #kwargs['dev_conf'] = conf.device
303 #kwargs['dev_conf'] = conf.device
301 #kwargs['id_dev'] = conf.device
304 #kwargs['id_dev'] = conf.device
302 kwargs['id_conf'] = conf.id
305 kwargs['id_conf'] = conf.id
303 kwargs['form'] = form
306 kwargs['form'] = form
304 kwargs['title'] = 'ABS Beams'
307 kwargs['title'] = 'ABS Beams'
305 kwargs['suptitle'] = 'Add Beam'
308 kwargs['suptitle'] = 'Add Beam'
306 kwargs['button'] = 'Add'
309 kwargs['button'] = 'Add'
307 kwargs['no_sidebar'] = True
310 kwargs['no_sidebar'] = True
308
311
309 #kwargs['previous'] = conf.get_absolute_url_edit()
312 #kwargs['previous'] = conf.get_absolute_url_edit()
310 kwargs['edit'] = True
313 kwargs['edit'] = True
311
314
312 return render(request, 'abs_add_beam.html', kwargs)
315 return render(request, 'abs_add_beam.html', kwargs)
313
316
314
317
315 def edit_beam(request, id_conf, id_beam):
318 def edit_beam(request, id_conf, id_beam):
316
319
317 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
320 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
318 beam = get_object_or_404(ABSBeam, pk=id_beam)
321 beam = get_object_or_404(ABSBeam, pk=id_beam)
319
322
320 if request.method=='GET':
323 if request.method=='GET':
321 form = ABSBeamEditForm(initial={'beam': beam})
324 form = ABSBeamEditForm(initial={'beam': beam})
322
325
323 if request.method=='POST':
326 if request.method=='POST':
324 form = ABSBeamEditForm(request.POST)
327 form = ABSBeamEditForm(request.POST)
325
328
326 beam_data = get_values_from_form(request.POST)
329 beam_data = get_values_from_form(request.POST)
327
330
328 beam.dict_to_parms(beam_data)
331 beam.dict_to_parms(beam_data)
329 beam.save()
332 beam.save()
330
333
331 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
334 messages.success(request, 'Beam: "%s" has been updated.' % beam.name)
332
335
333 return redirect('url_edit_abs_conf', conf.id)
336 return redirect('url_edit_abs_conf', conf.id)
334
337
335 ###### SIDEBAR ######
338 ###### SIDEBAR ######
336 kwargs = {}
339 kwargs = {}
337
340
338 kwargs['id_conf'] = conf.id
341 kwargs['id_conf'] = conf.id
339 kwargs['form'] = form
342 kwargs['form'] = form
340 kwargs['title'] = 'ABS Beams'
343 kwargs['title'] = 'ABS Beams'
341 kwargs['suptitle'] = 'Edit Beam'
344 kwargs['suptitle'] = 'Edit Beam'
342 kwargs['button'] = 'Save'
345 kwargs['button'] = 'Save'
343 kwargs['no_sidebar'] = True
346 kwargs['no_sidebar'] = True
344
347
345 #kwargs['previous'] = conf.get_absolute_url_edit()
348 #kwargs['previous'] = conf.get_absolute_url_edit()
346 kwargs['edit'] = True
349 kwargs['edit'] = True
347
350
348 return render(request, 'abs_edit_beam.html', kwargs)
351 return render(request, 'abs_edit_beam.html', kwargs)
349
352
350
353
351
354
352 def remove_beam(request, id_conf, id_beam):
355 def remove_beam(request, id_conf, id_beam):
353
356
354 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
357 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
355 beam = get_object_or_404(ABSBeam, pk=id_beam)
358 beam = get_object_or_404(ABSBeam, pk=id_beam)
356
359
357 if request.method=='POST':
360 if request.method=='POST':
358 if beam:
361 if beam:
359 try:
362 try:
360 beam.remove_beamfromlist()
363 beam.remove_beamfromlist()
361 beam.delete()
364 beam.delete()
362 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
365 messages.success(request, 'Beam: "%s" has been deleted.' % beam)
363 except:
366 except:
364 messages.error(request, 'Unable to delete beam: "%s".' % beam)
367 messages.error(request, 'Unable to delete beam: "%s".' % beam)
365
368
366 return redirect('url_edit_abs_conf', conf.id)
369 return redirect('url_edit_abs_conf', conf.id)
367
370
368 ###### SIDEBAR ######
371 ###### SIDEBAR ######
369 kwargs = {}
372 kwargs = {}
370
373
371 kwargs['object'] = beam
374 kwargs['object'] = beam
372 kwargs['delete'] = True
375 kwargs['delete'] = True
373 kwargs['title'] = 'Delete'
376 kwargs['title'] = 'Delete'
374 kwargs['suptitle'] = 'Beam'
377 kwargs['suptitle'] = 'Beam'
375 kwargs['previous'] = conf.get_absolute_url_edit()
378 kwargs['previous'] = conf.get_absolute_url_edit()
376 return render(request, 'confirm.html', kwargs)
379 return render(request, 'confirm.html', kwargs)
377
380
378
381
379
382
380 def plot_patterns(request, id_conf, id_beam=None):
383 def plot_patterns(request, id_conf, id_beam=None):
381
384
382 kwargs = {}
385 kwargs = {}
383 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
386 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
384 beams = ABSBeam.objects.filter(abs_conf=conf)
387 beams = ABSBeam.objects.filter(abs_conf=conf)
385
388
386 if id_beam:
389 if id_beam:
387 beam = get_object_or_404(ABSBeam, pk=id_beam)
390 beam = get_object_or_404(ABSBeam, pk=id_beam)
388 kwargs['beam'] = beam
391 kwargs['beam'] = beam
389
392
390
393
391 ###### SIDEBAR ######
394 ###### SIDEBAR ######
392
395
393 kwargs['dev_conf'] = conf.device
396 kwargs['dev_conf'] = conf.device
394 kwargs['id_dev'] = conf.device
397 kwargs['id_dev'] = conf.device
395 kwargs['id_conf'] = conf.id
398 kwargs['id_conf'] = conf.id
396 kwargs['abs_beams'] = beams
399 kwargs['abs_beams'] = beams
397 kwargs['title'] = 'ABS Patterns'
400 kwargs['title'] = 'ABS Patterns'
398 kwargs['suptitle'] = conf.name
401 kwargs['suptitle'] = conf.name
399 kwargs['no_sidebar'] = True
402 kwargs['no_sidebar'] = True
400
403
401 return render(request, 'abs_patterns.html', kwargs)
404 return render(request, 'abs_patterns.html', kwargs)
402
405
403
406
404 def plot_pattern(request, id_conf, id_beam, antenna):
407 def plot_pattern(request, id_conf, id_beam, antenna):
405
408
406 if antenna=='down':
409 if antenna=='down':
407 sleep(3)
410 sleep(3)
408
411
409 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
412 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
410 beam = get_object_or_404(ABSBeam, pk=id_beam)
413 beam = get_object_or_404(ABSBeam, pk=id_beam)
411
414
412 name = conf.experiment.name
415 name = conf.experiment.name
413
416
414 just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
417 just_rx = 1 if json.loads(beam.only_rx)[antenna] else 0
415 phases = json.loads(beam.antenna)['antenna_{}'.format(antenna)]
418 phases = json.loads(beam.antenna)['antenna_{}'.format(antenna)]
416 gain_tx = json.loads(beam.tx)[antenna]
419 gain_tx = json.loads(beam.tx)[antenna]
417 gain_rx = json.loads(beam.rx)[antenna]
420 gain_rx = json.loads(beam.rx)[antenna]
418 ues = json.loads(beam.ues)[antenna]
421 ues = json.loads(beam.ues)[antenna]
419
422
420 newOverJro = overJroShow(name)
423 newOverJro = overJroShow(name)
421 fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
424 fig = newOverJro.plotPattern2(datetime.today(), phases, gain_tx, gain_rx, ues, just_rx)
422
425
423 response=HttpResponse(content_type='image/png')
426 response=HttpResponse(content_type='image/png')
424
427
425 fig.canvas.print_png(response)
428 fig.canvas.print_png(response)
426
429
427 return response
430 return response
General Comments 0
You need to be logged in to leave comments. Login now