##// END OF EJS Templates
Task #714: Modulo Web ABS...
Fiorella Quino -
r182:7e17a44bea6b
parent child
Show More
@@ -17,7 +17,7 class ABSConfigurationForm(forms.ModelForm):
17
17
18 class Meta:
18 class Meta:
19 model = ABSConfiguration
19 model = ABSConfiguration
20 exclude = ('type', 'status', 'parameters', 'beams', 'module_status')
20 exclude = ('type', 'status', 'parameters', 'active_beam', 'module_status')
21
21
22 class ABSBeamAddForm(forms.Form):
22 class ABSBeamAddForm(forms.Form):
23
23
@@ -175,48 +175,8 def fromChar2Binary(char):
175 return bits
175 return bits
176
176
177
177
178 def change_beam_for_multiprocessing(module):
179
180 for i in range (1,50):
181 beam_pos = 0
182 module_address = ('192.168.1.'+str(module), 5500)
183 header = 'JROABSCeCnModCnMod0100000'
184 numbers = len(str(beam_pos))
185 function = 'CHGB'
186
187 message_tx = header+str(numbers)+function+str(beam_pos)+'0'
188
189 # Create the datagram socket
190 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
191 sock.connect(module_address)
192
193 sock.send(message_tx)
194 #t = sock.recv(1024)
195 sock.close()
196 sock = None
197
198
199 time.sleep(0.2)
200
201
202 beam_pos = 1
203 numbers = len(str(beam_pos))
204
205 message_tx = header+str(numbers)+function+str(beam_pos)+'0'
206
207 # Create the datagram socket
208 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
209 sock.connect(module_address)
210 sock.send(message_tx)
211 sock.close()
212 sock = None
213
214 time.sleep(0.2)
215
216
217
218 class ABSConfiguration(Configuration):
178 class ABSConfiguration(Configuration):
219 beams = models.CharField(verbose_name='Beams', max_length=20000, default="{}")
179 active_beam = models.CharField(verbose_name='Active Beam', max_length=20000, default="{}")
220 module_status = models.CharField(verbose_name='Module Status', max_length=10000, default=json.dumps(status_default))
180 module_status = models.CharField(verbose_name='Module Status', max_length=10000, default=json.dumps(status_default))
221
181
222 class Meta:
182 class Meta:
@@ -234,11 +194,11 class ABSConfiguration(Configuration):
234 parameters['name'] = self.name
194 parameters['name'] = self.name
235 parameters['beams'] = {}
195 parameters['beams'] = {}
236
196
237 beams = ast.literal_eval(self.beams)
197 beams = ABSBeam.objects.get(pk=self.id)
238 b=1
198 b=1
239 for beam in beams:
199 for beam in beams:
240 absbeam = ABSBeam.objects.get(pk=beams[beam])
200 #absbeam = ABSBeam.objects.get(pk=beams[beam])
241 parameters['beams']['beam'+str(b)] = absbeam.parms_to_dict()
201 parameters['beams']['beam'+str(b)] = beam.parms_to_dict()#absbeam.parms_to_dict()
242 b+=1
202 b+=1
243
203
244 return parameters
204 return parameters
@@ -336,6 +296,38 class ABSConfiguration(Configuration):
336
296
337 return module_bits
297 return module_bits
338
298
299 def status_device(self):
300 """
301 This function gets the status of each abs module. It sends GET method to Web Application
302 in Python Bottle.
303 """
304 ip_address = self.device.ip_address
305 ip_address = ip_address.split('.')
306 module_seq = (ip_address[0],ip_address[1],ip_address[2])
307 dot = '.'
308 module_port = self.device.port_address
309
310 modules_status = json.loads(self.module_status)
311
312 for i in range(1,65):
313 module_ip = dot.join(module_seq)+'.'+str(i)
314 print module_ip
315
316 route = 'http://'+module_ip+':'+str(module_port)+'/hello'
317
318 try:
319 r = requests.get(route, timeout=0.7)
320 modules_status[str(i)] = 1
321 except:
322 modules_status[str(i)] = 0
323 pass
324
325 self.message = 'ABS modules Status have been updated.'
326 self.module_status=json.dumps(modules_status)
327 self.save()
328
329 return
330
339
331
340 def write_device(self):
332 def write_device(self):
341 """
333 """
@@ -438,7 +430,7 class ABSConfiguration(Configuration):
438
430
439 #El indice del apunte debe ser menor que el numero total de apuntes
431 #El indice del apunte debe ser menor que el numero total de apuntes
440 #El servidor tcp en el embebido comienza a contar desde 0
432 #El servidor tcp en el embebido comienza a contar desde 0
441 beams_list = ast.literal_eval(self.beams)
433 beams_list = ABSBeam.objects.filter(abs_conf=self)
442 if len(beams_list) < beam_pos:
434 if len(beams_list) < beam_pos:
443 return 0
435 return 0
444
436
@@ -496,7 +488,7 class ABSConfiguration(Configuration):
496
488
497 #El indice del apunte debe ser menor que el numero total de apuntes
489 #El indice del apunte debe ser menor que el numero total de apuntes
498 #El servidor tcp en el embebido comienza a contar desde 0
490 #El servidor tcp en el embebido comienza a contar desde 0
499 beams_list = ast.literal_eval(self.beams)
491 beams_list = ABSBeam.objects.filter(abs_conf=self)
500 if len(beams_list) < beam_pos:
492 if len(beams_list) < beam_pos:
501 return 0
493 return 0
502
494
@@ -684,10 +676,6 class ABSConfiguration(Configuration):
684 return 1
676 return 1
685
677
686
678
687 def status_device(self):
688
689 return 1
690
691
679
692
680
693 class ABSBeam(models.Model):
681 class ABSBeam(models.Model):
@@ -758,74 +746,7 class ABSBeam(models.Model):
758 return self
746 return self
759
747
760
748
761 def change_beam(self, beam_pos=0):
749
762
763 module_63 = ('192.168.1.63', 5500)
764 header = 'JROABSCeCnModCnMod0100000'
765 numbers = len(str(beam_pos))
766 function = 'CHGB'
767
768 message_tx = header+str(numbers)+function+str(beam_pos)+'0'
769
770 # Create the datagram socket
771 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
772 sock.connect(module_63)
773 sock.send(message_tx)
774 sock.close()
775 return message_tx
776
777 def change_module_beam(self, module=61,beam_pos=0):
778
779 module_address = ('192.168.1.'+str(module), 5500)
780 header = 'JROABSCeCnModCnMod0100000'
781 numbers = len(str(beam_pos))
782 function = 'CHGB'
783
784 message_tx = header+str(numbers)+function+str(beam_pos)+'0'
785
786 # Create the datagram socket
787 try:
788 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
789 sock.connect(module_address)
790 sock.send(message_tx)
791 sock.close()
792 except:
793 return 0
794 return message_tx
795
796 def write_device(self):
797
798 parameters = {}
799
800 module_ip = '192.168.1.63'
801 write_route = 'http://192.168.1.63:8080/configure'
802
803 header = 'JROABSCeCnModCnMod01000108SNDFexperimento1.ab1'
804 module = 'ABS_63'
805 beams = {1: '001000', 2: '010001', 3: '010010', 4: '000011', 5: '101100', 6: '101101',
806 7: '110110', 8: '111111', 9: '000000', 10: '001001', 11: '010010', 12: '011011'}
807
808 parameters['header'] = header
809 parameters['module'] = module
810 parameters['beams'] = json.dumps(beams)
811
812 answer = ''
813
814 try:
815 r_write = requests.post(write_route, parameters, timeout=0.5)
816 answer = r_write.json()
817 self.message = answer['message']
818 except:
819 self.message = "Could not write ABS parameters"
820 return 0
821
822
823 #self.device.status = int(answer['status'])
824
825 return 1
826
827
828
829 def module_6bits(self, module):
750 def module_6bits(self, module):
830 """
751 """
831 This function reads antenna pattern and choose 6bits (upbits-downbits) for one abs module
752 This function reads antenna pattern and choose 6bits (upbits-downbits) for one abs module
@@ -862,44 +783,13 class ABSBeam(models.Model):
862
783
863 return self.modules_conf
784 return self.modules_conf
864
785
865 def add_beam2list(self):
786
866 """
787 def active_beam(self):
867 This function adds a beam to the beams list of ABS Configuration.
868 """
869 beams = ast.literal_eval(self.abs_conf.beams)
870 if any(beams):
871 for beam in beams:
872 if beams[beam] == self.id:
873 return
874 i = len(beams)+1
875 beams['beam'+str(i)] = self.id
876 else:
877 beams['beam1'] = self.id
878
879 self.abs_conf.beams = json.dumps(beams)
880 self.abs_conf.save()
881
882 return
883
884 def remove_beamfromlist(self):
885 """
788 """
886 This function removes current beam from the beams list of ABS Configuration.
789 This function set this beam as the active beam of its ABS Configuration.
887 """
790 """
888 beams = ast.literal_eval(self.abs_conf.beams)
791 self.abs_conf.active_beam = json.dumps({'active_beam': self.id})
889 dict_position = ''
890
891 if any(beams):
892 for beam in beams:
893 if beams[beam] == self.id:
894 dict_position = beam
895 if dict_position != '':
896 beams.pop(str(dict_position),None)
897 else:
898 return
899
900 self.abs_conf.beams = json.dumps(beams)
901 self.abs_conf.save()
792 self.abs_conf.save()
902
903 return
793 return
904
794
905 @property
795 @property
This diff has been collapsed as it changes many lines, (627 lines changed) Show them Hide them
@@ -51,7 +51,7
51 }
51 }
52 .north tr{
52 .north tr{
53 border: 1px solid #ffffff;
53 border: 1px solid #ffffff;
54 background-color: #FF0000;
54
55 }
55 }
56 .north td{
56 .north td{
57 border: 2px solid #e2e2e7;
57 border: 2px solid #e2e2e7;
@@ -71,14 +71,6
71 border-bottom: 3px solid #e2e2e7;
71 border-bottom: 3px solid #e2e2e7;
72 }
72 }
73
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
74
83
75
84 .east {
76 .east {
@@ -88,7 +80,6
88 }
80 }
89 .east tr{
81 .east tr{
90 border: 1px solid #ffffff;
82 border: 1px solid #ffffff;
91 background-color: #FF0000;
92 }
83 }
93 .east td{
84 .east td{
94 border: 2px solid #e2e2e7;
85 border: 2px solid #e2e2e7;
@@ -108,13 +99,7
108 border-bottom: 3px solid #e2e2e7;
99 border-bottom: 3px solid #e2e2e7;
109 }
100 }
110
101
111 .east tr:nth-child(2) td:nth-child(2){
112 background-color: #00cc00;
113 }
114
102
115 .east tr:nth-child(2) td:nth-child(4){
116 background-color: #ee902c;
117 }
118
103
119
104
120 .west {
105 .west {
@@ -124,7 +109,6
124 }
109 }
125 .west tr{
110 .west tr{
126 border: 1px solid #ffffff;
111 border: 1px solid #ffffff;
127 background-color: #FF0000;
128 }
112 }
129 .west td{
113 .west td{
130 border: 2px solid #e2e2e7;
114 border: 2px solid #e2e2e7;
@@ -144,13 +128,7
144 border-bottom: 3px solid #e2e2e7;
128 border-bottom: 3px solid #e2e2e7;
145 }
129 }
146
130
147 .west tr:nth-child(2) td:nth-child(2){
148 background-color: #00cc00;
149 }
150
131
151 .west tr:nth-child(2) td:nth-child(4){
152 background-color: #ee902c;
153 }
154
132
155
133
156 .south {
134 .south {
@@ -160,7 +138,6
160 }
138 }
161 .south tr{
139 .south tr{
162 border: 1px solid #ffffff;
140 border: 1px solid #ffffff;
163 background-color: #FF0000;
164 }
141 }
165 .south td{
142 .south td{
166 border: 2px solid #e2e2e7;
143 border: 2px solid #e2e2e7;
@@ -180,279 +157,373
180 border-bottom: 3px solid #e2e2e7;
157 border-bottom: 3px solid #e2e2e7;
181 }
158 }
182
159
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
160
191
161
192
162
193 </style>
163 </style>
194
164
195 <h4>Beams:</h4>
165
196 {% if beams %}
166 {% if beams %}
197
167
198 <div class="container">
199 <ul class="nav nav-pills">
200
168
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
169
207 </ul>
170 <h4>Beams:</h4>
208 </div>
171 <div class="container">
172 <ul class="nav nav-pills">
173 {% for beam in beams %}
174 <li >
175 <a data-toggle="pill" href="#menu{{forloop.counter}}">{{forloop.counter}}</a>
176 </li>
177 {% endfor %}
178 </ul>
179
180
181 <div class="tab-content">
182 <div id="home" class="tab-pane fade in active">
183 <!---->
184 {% if active_beam %}
185 <h3>Active Beam: {{active_beam.name}}</h3>
186
187 <table id="abs_pattern" class="abs">
188 <tr>
189 <td> <b>North Quarter</b>
190 <table class="north ">
191 <tr>
192 <td {{color_status.1}}>{{active_beam.get_upvalues.0}}</td> <td {{color_status.2}}>{{active_beam.get_upvalues.1}}</td> <td {{color_status.3}}>{{active_beam.get_upvalues.2}}</td> <td {{color_status.4}}>{{active_beam.get_upvalues.3}}</td>
193 </tr>
194 <tr>
195 <td {{color_status.1}}>{{active_beam.get_downvalues.0}}</td> <td {{color_status.2}}>{{active_beam.get_downvalues.1}}</td> <td {{color_status.3}}>{{active_beam.get_downvalues.2}}</td> <td {{color_status.4}}>{{active_beam.get_downvalues.3}}</td>
196 </tr>
197 <tr>
198 <td {{color_status.9}}>{{active_beam.get_upvalues.8}}</td> <td {{color_status.10}}>{{active_beam.get_upvalues.9}}</td> <td {{color_status.11}}>{{active_beam.get_upvalues.10}}</td> <td {{color_status.12}}>{{active_beam.get_upvalues.11}}</td>
199 </tr>
200 <tr>
201 <td {{color_status.9}}>{{active_beam.get_downvalues.8}}</td> <td {{color_status.10}}>{{active_beam.get_downvalues.9}}</td> <td {{color_status.11}}>{{active_beam.get_downvalues.10}}</td> <td {{color_status.12}}>{{active_beam.get_downvalues.11}}</td>
202 </tr>
203 <tr>
204 <td {{color_status.17}}>{{active_beam.get_upvalues.16}}</td> <td {{color_status.18}}>{{active_beam.get_upvalues.17}}</td> <td {{color_status.19}}>{{active_beam.get_upvalues.18}}</td> <td {{color_status.20}}>{{active_beam.get_upvalues.19}}</td>
205 </tr>
206 <tr>
207 <td {{color_status.17}}>{{active_beam.get_downvalues.16}}</td> <td {{color_status.18}}>{{active_beam.get_downvalues.17}}</td> <td {{color_status.19}}>{{active_beam.get_downvalues.18}}</td> <td {{color_status.20}}>{{active_beam.get_downvalues.19}}</td>
208 </tr>
209 <tr>
210 <td {{color_status.25}}>{{active_beam.get_upvalues.24}}</td> <td {{color_status.26}}>{{active_beam.get_upvalues.25}}</td> <td {{color_status.27}}>{{active_beam.get_upvalues.26}}</td> <td {{color_status.28}}>{{active_beam.get_upvalues.27}}</td>
211 </tr>
212 <tr>
213 <td {{color_status.25}}>{{active_beam.get_downvalues.24}}</td> <td {{color_status.26}}>{{active_beam.get_downvalues.25}}</td> <td {{color_status.27}}>{{active_beam.get_downvalues.26}}</td> <td {{color_status.28}}>{{active_beam.get_downvalues.27}}</td>
214 </tr>
215 </table>
216 </td>
217 <td> <b>East Quarter</b>
218 <table class="east ">
219 <tr>
220 <td {{color_status.5}}>{{active_beam.get_upvalues.4}}</td> <td {{color_status.6}}>{{active_beam.get_upvalues.5}}</td> <td {{color_status.7}}>{{active_beam.get_upvalues.6}}</td> <td {{color_status.8}}>{{active_beam.get_upvalues.7}}</td>
221 </tr>
222 <tr>
223 <td {{color_status.5}}>{{active_beam.get_downvalues.4}}</td> <td {{color_status.6}}>{{active_beam.get_downvalues.5}}</td> <td {{color_status.7}}>{{active_beam.get_downvalues.6}}</td> <td {{color_status.8}}>{{active_beam.get_downvalues.7}}</td>
224 </tr>
225 <tr>
226 <td {{color_status.13}}>{{active_beam.get_upvalues.12}}</td> <td {{color_status.14}}>{{active_beam.get_upvalues.13}}</td> <td {{color_status.15}}>{{active_beam.get_upvalues.14}}</td> <td {{color_status.16}}>{{active_beam.get_upvalues.15}}</td>
227 </tr>
228 <tr>
229 <td {{color_status.13}}>{{active_beam.get_downvalues.12}}</td> <td {{color_status.14}}>{{active_beam.get_downvalues.13}}</td> <td {{color_status.15}}>{{active_beam.get_downvalues.14}}</td> <td {{color_status.16}}>{{active_beam.get_downvalues.15}}</td>
230 </tr>
231 <tr>
232 <td {{color_status.21}}>{{active_beam.get_upvalues.20}}</td> <td {{color_status.22}}>{{active_beam.get_upvalues.21}}</td> <td {{color_status.23}}>{{active_beam.get_upvalues.22}}</td> <td {{color_status.24}}>{{active_beam.get_upvalues.23}}</td>
233 </tr>
234 <tr>
235 <td {{color_status.21}}>{{active_beam.get_downvalues.20}}</td> <td {{color_status.22}}>{{active_beam.get_downvalues.21}}</td> <td {{color_status.23}}>{{active_beam.get_downvalues.22}}</td> <td {{color_status.24}}>{{active_beam.get_downvalues.23}}</td>
236 </tr>
237 <tr>
238 <td {{color_status.29}}>{{active_beam.get_upvalues.28}}</td> <td {{color_status.30}}>{{active_beam.get_upvalues.29}}</td> <td {{color_status.31}}>{{active_beam.get_upvalues.30}}</td> <td {{color_status.32}}>{{active_beam.get_upvalues.31}}</td>
239 </tr>
240 <tr>
241 <td {{color_status.29}}>{{active_beam.get_downvalues.28}}</td> <td {{color_status.30}}>{{active_beam.get_downvalues.29}}</td> <td {{color_status.31}}>{{active_beam.get_downvalues.30}}</td> <td {{color_status.32}}>{{active_beam.get_downvalues.31}}</td>
242 </tr>
243 </table>
244 </td>
245 </tr>
246 <tr>
247 <td> <b>West Quarter</b>
248 <table class="west ">
249 <tr>
250 <td {{color_status.33}}>{{active_beam.get_upvalues.32}}</td> <td {{color_status.34}}>{{active_beam.get_upvalues.33}}</td> <td {{color_status.35}}>{{active_beam.get_upvalues.34}}</td> <td {{color_status.36}}>{{active_beam.get_upvalues.35}}</td>
251 </tr>
252 <tr>
253 <td {{color_status.33}}>{{active_beam.get_downvalues.32}}</td> <td {{color_status.34}}>{{active_beam.get_downvalues.33}}</td> <td {{color_status.35}}>{{active_beam.get_downvalues.34}}</td> <td {{color_status.36}}>{{active_beam.get_downvalues.35}}</td>
254 </tr>
255 <tr>
256 <td {{color_status.41}}>{{active_beam.get_upvalues.40}}</td> <td {{color_status.42}}>{{active_beam.get_upvalues.41}}</td> <td {{color_status.43}}>{{active_beam.get_upvalues.42}}</td> <td {{color_status.44}}>{{active_beam.get_upvalues.43}}</td>
257 </tr>
258 <tr>
259 <td {{color_status.41}}>{{active_beam.get_downvalues.40}}</td> <td {{color_status.42}}>{{active_beam.get_downvalues.41}}</td> <td {{color_status.43}}>{{active_beam.get_downvalues.42}}</td> <td {{color_status.44}}>{{active_beam.get_downvalues.43}}</td>
260 </tr>
261 <tr>
262 <td {{color_status.49}}>{{active_beam.get_upvalues.48}}</td> <td {{color_status.50}}>{{active_beam.get_upvalues.49}}</td> <td {{color_status.51}}>{{active_beam.get_upvalues.50}}</td> <td {{color_status.52}}>{{active_beam.get_upvalues.51}}</td>
263 </tr>
264 <tr>
265 <td {{color_status.49}}>{{active_beam.get_downvalues.48}}</td> <td {{color_status.50}}>{{active_beam.get_downvalues.49}}</td> <td {{color_status.51}}>{{active_beam.get_downvalues.50}}</td> <td {{color_status.52}}>{{active_beam.get_downvalues.51}}</td>
266 </tr>
267 <tr>
268 <td {{color_status.57}}>{{active_beam.get_upvalues.56}}</td> <td {{color_status.58}}>{{active_beam.get_upvalues.57}}</td> <td {{color_status.59}}>{{active_beam.get_upvalues.58}}</td> <td {{color_status.60}}>{{active_beam.get_upvalues.59}}</td>
269 </tr>
270 <tr>
271 <td {{color_status.57}}>{{active_beam.get_downvalues.56}}</td> <td {{color_status.58}}>{{active_beam.get_downvalues.57}}</td> <td {{color_status.59}}>{{active_beam.get_downvalues.58}}</td> <td {{color_status.60}}>{{active_beam.get_downvalues.59}}</td>
272 </tr>
273 </table>
274 </td>
275 <td> <b>South Quarter</b>
276 <table class="south ">
277 <tr>
278 <td {{color_status.37}}>{{active_beam.get_upvalues.36}}</td> <td {{color_status.38}}>{{active_beam.get_upvalues.37}}</td> <td {{color_status.39}}>{{active_beam.get_upvalues.38}}</td> <td {{color_status.40}}>{{active_beam.get_upvalues.39}}</td>
279 </tr>
280 <tr>
281 <td {{color_status.37}}>{{active_beam.get_downvalues.36}}</td> <td {{color_status.38}}>{{active_beam.get_downvalues.37}}</td> <td {{color_status.39}}>{{active_beam.get_downvalues.38}}</td> <td {{color_status.40}}>{{active_beam.get_downvalues.39}}</td>
282 </tr>
283 <tr>
284 <td {{color_status.45}}>{{active_beam.get_upvalues.44}}</td> <td {{color_status.46}}>{{active_beam.get_upvalues.45}}</td> <td {{color_status.47}}>{{active_beam.get_upvalues.46}}</td> <td {{color_status.48}}>{{active_beam.get_upvalues.47}}</td>
285 </tr>
286 <tr>
287 <td {{color_status.45}}>{{active_beam.get_downvalues.44}}</td> <td {{color_status.46}}>{{active_beam.get_downvalues.45}}</td> <td {{color_status.47}}>{{active_beam.get_downvalues.46}}</td> <td {{color_status.48}}>{{active_beam.get_downvalues.47}}</td>
288 </tr>
289 <tr>
290 <td {{color_status.53}}>{{active_beam.get_upvalues.52}}</td> <td {{color_status.54}}>{{active_beam.get_upvalues.53}}</td> <td {{color_status.55}}>{{active_beam.get_upvalues.54}}</td> <td {{color_status.56}}>{{active_beam.get_upvalues.55}}</td>
291 </tr>
292 <tr>
293 <td {{color_status.53}}>{{active_beam.get_downvalues.52}}</td> <td {{color_status.54}}>{{active_beam.get_downvalues.53}}</td> <td {{color_status.55}}>{{active_beam.get_downvalues.54}}</td> <td {{color_status.56}}>{{active_beam.get_downvalues.55}}</td>
294 </tr>
295 <tr>
296 <td {{color_status.61}}>{{active_beam.get_upvalues.60}}</td> <td {{color_status.62}}>{{active_beam.get_upvalues.61}}</td> <td {{color_status.63}}>{{active_beam.get_upvalues.62}}</td> <td {{color_status.64}}>{{active_beam.get_upvalues.63}}</td>
297 </tr>
298 <tr>
299 <td {{color_status.61}}>{{active_beam.get_downvalues.60}}</td> <td {{color_status.62}}>{{active_beam.get_downvalues.61}}</td> <td {{color_status.63}}>{{active_beam.get_downvalues.62}}</td> <td {{color_status.64}}>{{active_beam.get_downvalues.63}}</td>
300 </tr>
301 </table>
302 </td>
303 </tr>
304 </table>
305
306
307
308 <table class="legend">
309 <tr>
310 <th colspan="2">Legend</th>
311 </tr>
312 <tr>
313 <td style="color:#ff0000;"><i>RED</i></td><td>Disconnected</td>
314 </tr>
315 <tr>
316 <td style="color:#ee902c;"><i>ORANGE</i></td><td>Connected</td>
317 </tr>
318 <tr>
319 <td style="color:#00cc00;"><i>GREEN</i></td><td>Running
320 </td>
321 </tr>
322 <!--
323 <tr>
324 <td colspan="2">
325 <button style="margin: 10px;" id="sendbeam" type="button" class="btn btn-default">
326 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
327 Change Beam</button>
328 </td>
329 </tr>
330 -->
331 </table>
332
333
334
335
336 {% else %}
337 <p><i>This ABS Configuration does not have a current active ABS Beam...<br>
338 Please send Beam List to ABS modules. </i></p>
339
340 {% endif %}
341
342
343 </div>
344
345
346
347 {% for beam in beams %}
348 <div id="menu{{forloop.counter}}" class="tab-pane fade">
349 <h3>{%if active_beam.id == beam.id%}Active Beam: {%endif%}{{beam.name}}</h3>
350 <!--<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>-->
351 <table id="abs_pattern{{forloop.counter}}" class="abs">
352 <tr>
353 <td> <b>North Quarter</b>
354 <table class="north ">
355 <tr>
356 <td {{beam.color_status.1}}>{{beam.get_upvalues.0}}</td> <td {{beam.color_status.2}}>{{beam.get_upvalues.1}}</td> <td {{beam.color_status.3}}>{{beam.get_upvalues.2}}</td> <td {{beam.color_status.4}}>{{beam.get_upvalues.3}}</td>
357 </tr>
358 <tr>
359 <td {{beam.color_status.1}}>{{beam.get_downvalues.0}}</td> <td {{beam.color_status.2}}>{{beam.get_downvalues.1}}</td> <td {{beam.color_status.3}}>{{beam.get_downvalues.2}}</td> <td {{beam.color_status.4}}>{{beam.get_downvalues.3}}</td>
360 </tr>
361 <tr>
362 <td {{beam.color_status.9}}>{{beam.get_upvalues.8}}</td> <td {{beam.color_status.10}}>{{beam.get_upvalues.9}}</td> <td {{beam.color_status.11}}>{{beam.get_upvalues.10}}</td> <td {{beam.color_status.12}}>{{beam.get_upvalues.11}}</td>
363 </tr>
364 <tr>
365 <td {{beam.color_status.9}}>{{beam.get_downvalues.8}}</td> <td {{beam.color_status.10}}>{{beam.get_downvalues.9}}</td> <td {{beam.color_status.11}}>{{beam.get_downvalues.10}}</td> <td {{beam.color_status.12}}>{{beam.get_downvalues.11}}</td>
366 </tr>
367 <tr>
368 <td {{beam.color_status.17}}>{{beam.get_upvalues.16}}</td> <td {{beam.color_status.18}}>{{beam.get_upvalues.17}}</td> <td {{beam.color_status.19}}>{{beam.get_upvalues.18}}</td> <td {{beam.color_status.20}}>{{beam.get_upvalues.19}}</td>
369 </tr>
370 <tr>
371 <td {{beam.color_status.17}}>{{beam.get_downvalues.16}}</td> <td {{beam.color_status.18}}>{{beam.get_downvalues.17}}</td> <td {{beam.color_status.19}}>{{beam.get_downvalues.18}}</td> <td {{beam.color_status.20}}>{{beam.get_downvalues.19}}</td>
372 </tr>
373 <tr>
374 <td {{beam.color_status.25}}>{{beam.get_upvalues.24}}</td> <td {{beam.color_status.26}}>{{beam.get_upvalues.25}}</td> <td {{beam.color_status.27}}>{{beam.get_upvalues.26}}</td> <td {{beam.color_status.28}}>{{beam.get_upvalues.27}}</td>
375 </tr>
376 <tr>
377 <td {{beam.color_status.25}}>{{beam.get_downvalues.24}}</td> <td {{beam.color_status.26}}>{{beam.get_downvalues.25}}</td> <td {{beam.color_status.27}}>{{beam.get_downvalues.26}}</td> <td {{beam.color_status.28}}>{{beam.get_downvalues.27}}</td>
378 </tr>
379 </table>
380 </td>
381 <td> <b>East Quarter</b>
382 <table class="east ">
383 <tr>
384 <td {{beam.color_status.5}}>{{beam.get_upvalues.4}}</td> <td {{beam.color_status.6}}>{{beam.get_upvalues.5}}</td> <td {{beam.color_status.7}}>{{beam.get_upvalues.6}}</td> <td {{beam.color_status.8}}>{{beam.get_upvalues.7}}</td>
385 </tr>
386 <tr>
387 <td {{beam.color_status.5}}>{{beam.get_downvalues.4}}</td> <td {{beam.color_status.6}}>{{beam.get_downvalues.5}}</td> <td {{beam.color_status.7}}>{{beam.get_downvalues.6}}</td> <td {{beam.color_status.8}}>{{beam.get_downvalues.7}}</td>
388 </tr>
389 <tr>
390 <td {{beam.color_status.13}}>{{beam.get_upvalues.12}}</td> <td {{beam.color_status.14}}>{{beam.get_upvalues.13}}</td> <td {{beam.color_status.15}}>{{beam.get_upvalues.14}}</td> <td {{beam.color_status.16}}>{{beam.get_upvalues.15}}</td>
391 </tr>
392 <tr>
393 <td {{beam.color_status.13}}>{{beam.get_downvalues.12}}</td> <td {{beam.color_status.14}}>{{beam.get_downvalues.13}}</td> <td {{beam.color_status.15}}>{{beam.get_downvalues.14}}</td> <td {{beam.color_status.16}}>{{beam.get_downvalues.15}}</td>
394 </tr>
395 <tr>
396 <td {{beam.color_status.21}}>{{beam.get_upvalues.20}}</td> <td {{beam.color_status.22}}>{{beam.get_upvalues.21}}</td> <td {{beam.color_status.23}}>{{beam.get_upvalues.22}}</td> <td {{beam.color_status.24}}>{{beam.get_upvalues.23}}</td>
397 </tr>
398 <tr>
399 <td {{beam.color_status.21}}>{{beam.get_downvalues.20}}</td> <td {{beam.color_status.22}}>{{beam.get_downvalues.21}}</td> <td {{beam.color_status.23}}>{{beam.get_downvalues.22}}</td> <td {{beam.color_status.24}}>{{beam.get_downvalues.23}}</td>
400 </tr>
401 <tr>
402 <td {{beam.color_status.29}}>{{beam.get_upvalues.28}}</td> <td {{beam.color_status.30}}>{{beam.get_upvalues.29}}</td> <td {{beam.color_status.31}}>{{beam.get_upvalues.30}}</td> <td {{beam.color_status.32}}>{{beam.get_upvalues.31}}</td>
403 </tr>
404 <tr>
405 <td {{beam.color_status.29}}>{{beam.get_downvalues.28}}</td> <td {{beam.color_status.30}}>{{beam.get_downvalues.29}}</td> <td {{beam.color_status.31}}>{{beam.get_downvalues.30}}</td> <td {{beam.color_status.32}}>{{beam.get_downvalues.31}}</td>
406 </tr>
407 </table>
408 </td>
409 </tr>
410 <tr>
411 <td> <b>West Quarter</b>
412 <table class="west ">
413 <tr>
414 <td {{beam.color_status.33}}>{{beam.get_upvalues.32}}</td> <td {{beam.color_status.34}}>{{beam.get_upvalues.33}}</td> <td {{beam.color_status.35}}>{{beam.get_upvalues.34}}</td> <td {{beam.color_status.36}}>{{beam.get_upvalues.35}}</td>
415 </tr>
416 <tr>
417 <td {{beam.color_status.33}}>{{beam.get_downvalues.32}}</td> <td {{beam.color_status.34}}>{{beam.get_downvalues.33}}</td> <td {{beam.color_status.35}}>{{beam.get_downvalues.34}}</td> <td {{beam.color_status.36}}>{{beam.get_downvalues.35}}</td>
418 </tr>
419 <tr>
420 <td {{beam.color_status.41}}>{{beam.get_upvalues.40}}</td> <td {{beam.color_status.42}}>{{beam.get_upvalues.41}}</td> <td {{beam.color_status.43}}>{{beam.get_upvalues.42}}</td> <td {{beam.color_status.44}}>{{beam.get_upvalues.43}}</td>
421 </tr>
422 <tr>
423 <td {{beam.color_status.41}}>{{beam.get_downvalues.40}}</td> <td {{beam.color_status.42}}>{{beam.get_downvalues.41}}</td> <td {{beam.color_status.43}}>{{beam.get_downvalues.42}}</td> <td {{beam.color_status.44}}>{{beam.get_downvalues.43}}</td>
424 </tr>
425 <tr>
426 <td {{beam.color_status.49}}>{{beam.get_upvalues.48}}</td> <td {{beam.color_status.50}}>{{beam.get_upvalues.49}}</td> <td {{beam.color_status.51}}>{{beam.get_upvalues.50}}</td> <td {{beam.color_status.52}}>{{beam.get_upvalues.51}}</td>
427 </tr>
428 <tr>
429 <td {{beam.color_status.49}}>{{beam.get_downvalues.48}}</td> <td {{beam.color_status.50}}>{{beam.get_downvalues.49}}</td> <td {{beam.color_status.51}}>{{beam.get_downvalues.50}}</td> <td {{beam.color_status.52}}>{{beam.get_downvalues.51}}</td>
430 </tr>
431 <tr>
432 <td {{beam.color_status.57}}>{{beam.get_upvalues.56}}</td> <td {{beam.color_status.58}}>{{beam.get_upvalues.57}}</td> <td {{beam.color_status.59}}>{{beam.get_upvalues.58}}</td> <td {{beam.color_status.60}}>{{beam.get_upvalues.59}}</td>
433 </tr>
434 <tr>
435 <td {{beam.color_status.57}}>{{beam.get_downvalues.56}}</td> <td {{beam.color_status.58}}>{{beam.get_downvalues.57}}</td> <td {{beam.color_status.59}}>{{beam.get_downvalues.58}}</td> <td {{beam.color_status.60}}>{{beam.get_downvalues.59}}</td>
436 </tr>
437 </table>
438 </td>
439 <td> <b>South Quarter</b>
440 <table class="south ">
441 <tr>
442 <td {{beam.color_status.37}}>{{beam.get_upvalues.36}}</td> <td {{beam.color_status.38}}>{{beam.get_upvalues.37}}</td> <td {{beam.color_status.39}}>{{beam.get_upvalues.38}}</td> <td {{beam.color_status.40}}>{{beam.get_upvalues.39}}</td>
443 </tr>
444 <tr>
445 <td {{beam.color_status.37}}>{{beam.get_downvalues.36}}</td> <td {{beam.color_status.38}}>{{beam.get_downvalues.37}}</td> <td {{beam.color_status.39}}>{{beam.get_downvalues.38}}</td> <td {{beam.color_status.40}}>{{beam.get_downvalues.39}}</td>
446 </tr>
447 <tr>
448 <td {{beam.color_status.45}}>{{beam.get_upvalues.44}}</td> <td {{beam.color_status.46}}>{{beam.get_upvalues.45}}</td> <td {{beam.color_status.47}}>{{beam.get_upvalues.46}}</td> <td {{beam.color_status.48}}>{{beam.get_upvalues.47}}</td>
449 </tr>
450 <tr>
451 <td {{beam.color_status.45}}>{{beam.get_downvalues.44}}</td> <td {{beam.color_status.46}}>{{beam.get_downvalues.45}}</td> <td {{beam.color_status.47}}>{{beam.get_downvalues.46}}</td> <td {{beam.color_status.48}}>{{beam.get_downvalues.47}}</td>
452 </tr>
453 <tr>
454 <td {{beam.color_status.53}}>{{beam.get_upvalues.52}}</td> <td {{beam.color_status.54}}>{{beam.get_upvalues.53}}</td> <td {{beam.color_status.55}}>{{beam.get_upvalues.54}}</td> <td {{beam.color_status.56}}>{{beam.get_upvalues.55}}</td>
455 </tr>
456 <tr>
457 <td {{beam.color_status.53}}>{{beam.get_downvalues.52}}</td> <td {{beam.color_status.54}}>{{beam.get_downvalues.53}}</td> <td {{beam.color_status.55}}>{{beam.get_downvalues.54}}</td> <td {{beam.color_status.56}}>{{beam.get_downvalues.55}}</td>
458 </tr>
459 <tr>
460 <td {{beam.color_status.61}}>{{beam.get_upvalues.60}}</td> <td {{beam.color_status.62}}>{{beam.get_upvalues.61}}</td> <td {{beam.color_status.63}}>{{beam.get_upvalues.62}}</td> <td {{beam.color_status.64}}>{{beam.get_upvalues.63}}</td>
461 </tr>
462 <tr>
463 <td {{beam.color_status.61}}>{{beam.get_downvalues.60}}</td> <td {{beam.color_status.62}}>{{beam.get_downvalues.61}}</td> <td {{beam.color_status.63}}>{{beam.get_downvalues.62}}</td> <td {{beam.color_status.64}}>{{beam.get_downvalues.63}}</td>
464 </tr>
465 </table>
466 </td>
467 </tr>
468 </table>
469
470 {% if active_beam.id != beam.id %}
471 <div style="vertical-align: top; display:inline-block;">
472 <button style="" id="sendbeam" type="button" class="btn btn-default">
473 <span class="glyphicon glyphicon-export" aria-hidden="true"></span>
474 Change Beam</button>
475 </div>
476 {% endif %}
477
478
479
480
481 {% if active_beam %}
482 {% if active_beam.id == beam.id %}
483 <table class="legend">
484 <tr>
485 <th colspan="2">Legend</th>
486 </tr>
487 <tr>
488 <td style="color:#ff0000;"><i>RED</i></td><td>Disconnected</td>
489 </tr>
490 <tr>
491 <td style="color:#ee902c;"><i>ORANGE</i></td><td>Connected</td>
492 </tr>
493 <tr>
494 <td style="color:#00cc00;"><i>GREEN</i></td><td>Running
495 </td>
496 </tr>
497 </table>
498
499 {% endif %}
500 {% endif %}
501
502
503 </div>
504
505
506 {% endfor %}
507
508
509
510 </div>
511 </div>
512
513
209
514
210
515
211 <script>
516 <script>
212 $(document).ready(function() {
517 $(document).ready(function() {
213
518
214 {% for beam in beams %}
519
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 });
520 });
317 </script>
521 </script>
318
522
319
523
320
524
321 <br>
525
322
526
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
527
457 {% else %}
528 {% else %}
458 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
529 <p style="color:#b4bcc2; margin-left: 5%;"><i>No Beams...</i></p>
@@ -121,18 +121,22 def get_values_from_form(form_data):
121
121
122 def abs_conf(request, id_conf):
122 def abs_conf(request, id_conf):
123
123
124 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
124 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
125 beams = ABSBeam.objects.filter(abs_conf=conf)
125 beams = ABSBeam.objects.filter(abs_conf=conf)
126 #beams_dict = ast.literal_eval(conf.beams)
126 active_beam_id = json.loads(conf.active_beam)
127 #beams = []
127
128 #for beam_id in range(1,len(beams_dict)+1):
128 #------------Colors for Active Beam:-------------
129 # beam = ABSBeam.objects.get(pk=beams_dict['beam'+str(beam_id)])
129 modules_status = json.loads(conf.module_status)
130 # beams.append(beam)
130
131
131 color_status = {}
132 #beams_id = ast.literal_eval(conf.beams)
132 for status in modules_status:
133
133 if modules_status[status] == 2: #Running background-color: #ff0000;
134 ip=conf.device.ip_address
134 color_status[status] = 'bgcolor=#00cc00'
135 port=conf.device.port_address
135 elif modules_status[status] == 1: #Connected background-color: #ee902c;
136 color_status[status] = 'bgcolor=#ee902c'
137 else: #Disconnected background-color: #00cc00;
138 color_status[status] = 'bgcolor=#FF0000'
139 #------------------------------------------------
136
140
137 kwargs = {}
141 kwargs = {}
138 kwargs['status'] = conf.device.get_status_display()
142 kwargs['status'] = conf.device.get_status_display()
@@ -146,12 +150,20 def abs_conf(request, id_conf):
146 kwargs['no_play'] = True
150 kwargs['no_play'] = True
147
151
148 kwargs['button'] = 'Edit Configuration'
152 kwargs['button'] = 'Edit Configuration'
149
153 #------------------Active Beam-----------------------
150 #kwargs['no_play'] = True
154 try:
151 #kwargs['beams_id'] = beams_id
155 active_beam_id = active_beam_id['active_beam']
156 active_beam = ABSBeam.objects.get(pk=active_beam_id)
157 kwargs['active_beam'] = active_beam
158 for beam in beams:
159 if beam.id == active_beam.id:
160 beam.color_status=color_status
161 except:
162 active_beam = ''
163 #----------------------------------------------------
152 kwargs['beams'] = beams
164 kwargs['beams'] = beams
153 kwargs['beam_selector'] = 0
165 kwargs['modules_status'] = modules_status
154 #kwargs['my_data'] = simplejson.dumps(beams)
166 kwargs['color_status'] = color_status
155
167
156 kwargs['only_stop'] = True
168 kwargs['only_stop'] = True
157
169
@@ -163,14 +175,7 def abs_conf(request, id_conf):
163 def abs_conf_edit(request, id_conf):
175 def abs_conf_edit(request, id_conf):
164
176
165 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
177 conf = get_object_or_404(ABSConfiguration, pk=id_conf)
166 #beams_list = ast.literal_eval(conf.beams)
178
167 #i = 1
168 #beams = []
169 #for b in beams_list:
170 # beam = ABSBeam.objects.get(pk=beams_list['beam'+str(i)])
171 # beams.append(beam)
172 # i=i+1
173
174 beams = ABSBeam.objects.filter(abs_conf=conf)
179 beams = ABSBeam.objects.filter(abs_conf=conf)
175 print beams
180 print beams
176
181
@@ -230,7 +235,7 def add_beam(request, id_conf):
230 new_beam.save()
235 new_beam.save()
231 #---Update 6bits configuration and add beam to abs configuration beams list.
236 #---Update 6bits configuration and add beam to abs configuration beams list.
232 new_beam.modules_6bits()
237 new_beam.modules_6bits()
233 new_beam.add_beam2list()
238 #new_beam.add_beam2list()
234 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
239 messages.success(request, 'Beam: "%s" has been added.' % new_beam.name)
235
240
236 return redirect('url_edit_abs_conf', conf.id)
241 return redirect('url_edit_abs_conf', conf.id)
General Comments 0
You need to be logged in to leave comments. Login now