##// END OF EJS Templates
- Mejorando el diseño de la aplicacion.
jsalyrosas -
r180:181
parent child
Show More
@@ -1,401 +1,401
1 1 from django.shortcuts import render_to_response, redirect
2 2 from django.http import HttpResponse
3 3 from django.conf import settings
4 4 from django.utils.encoding import smart_str
5 5 from django.core.servers.basehttp import FileWrapper
6 6 import mimetypes
7 7
8 8 from datetime import datetime
9 9
10 10 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
11 11
12 12 from util.readABSFile import readABSFile
13 13 from util.saveABSFile import saveABSFile
14 14 from scripts.sendFile import sendFile
15 15
16 16 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
17 17 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
18 18 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
19 19 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
20 20 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
21 21 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
22 22 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
23 23 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
24 24
25 25 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
26 26 "[1,1,1,1,1,1,1,1]," \
27 27 "[1,1,1,1,1,1,1,1]," \
28 28 "[1,1,1,1,1,1,1,1]," \
29 29 "[1,1,1,1,1,1,1,1]," \
30 30 "[1,1,1,1,1,1,1,1]," \
31 31 "[1,1,1,1,1,1,1,1]," \
32 32 "[1,1,1,1,1,1,1,1]]"
33 33
34 34 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
35 35 "[1,1,1,1,0,0,0,0]," \
36 36 "[1,1,1,1,0,0,0,0]," \
37 37 "[1,1,1,1,0,0,0,0]," \
38 38 "[0,0,0,0,1,1,1,1]," \
39 39 "[0,0,0,0,1,1,1,1]," \
40 40 "[0,0,0,0,1,1,1,1]," \
41 41 "[0,0,0,0,1,1,1,1]]"
42 42
43 43 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
44 44 "[0,0,0,0,1,1,1,1]," \
45 45 "[0,0,0,0,1,1,1,1]," \
46 46 "[0,0,0,0,1,1,1,1]," \
47 47 "[1,1,1,1,1,1,1,1]," \
48 48 "[1,1,1,1,1,1,1,1]," \
49 49 "[1,1,1,1,1,1,1,1]," \
50 50 "[1,1,1,1,1,1,1,1]]"
51 51
52 52 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
53 53 "[1,1,1,1,1,1,1,1]," \
54 54 "[1,1,1,1,1,1,1,1]," \
55 55 "[1,1,1,1,1,1,1,1]," \
56 56 "[1,1,1,1,1,1,1,1]," \
57 57 "[1,1,1,1,1,1,1,1]," \
58 58 "[1,1,1,1,1,1,1,1]," \
59 59 "[1,1,1,1,1,1,1,1]]"
60 60
61 61 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
62 62
63 63 def index(request):
64 64 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
65 65 profile_list = Profile.objects.filter(state=1)
66 66 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
67 67
68 68 def new(request):
69 69 profile_list = Profile.objects.filter(state=1)
70 70 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
71 71 newprofile = Profile(name=txtProfile)
72 72 newprofile.save()
73 73
74 74 lsPatterns = None
75 75
76 76 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
77 77 'txtAntenna' : txtAntenna,
78 78 'profile_name' : newprofile.name,
79 79 'profile_id' : newprofile.id,
80 80 'lsPatterns' : lsPatterns,
81 81 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
82 82 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
83 83 'txtRxDown' : txtRxDown,
84 84 })
85 85
86 86 def save(request):
87 87
88 88 txtProfile = request.POST["txtProfile"]
89 89
90 90 txtAntennaUp = request.POST["txtAntennaUp"]
91 91 txtTxUp = request.POST["txtTxUp"]
92 92 txtRxUp = request.POST["txtRxUp"]
93 93 txtUesUp = request.POST["txtUesUp"]
94 94
95 95 txtAntennaDown = request.POST["txtAntennaDown"]
96 96 txtTxDown = request.POST["txtTxDown"]
97 97 txtRxDown = request.POST["txtRxDown"]
98 98 txtUesDown = request.POST["txtUesDown"]
99 99
100 100 newprofile = Profile(name=txtProfile)
101 101 newprofile.save()
102 102
103 103 newpattern = newprofile.pattern_set.create(value=1)
104 104 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
105 105 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
106 106
107 107 newurl = '/abscontrol/view/%d' % newprofile.id
108 108
109 109 return redirect(newurl)
110 110
111 111 def view(request, profile_id):
112 112 nextPattern = 0
113 113
114 114 if request.method == 'GET' and 'pattern' in request.GET:
115 115 pattern_value = request.GET["pattern"]
116 116 else:
117 117 pattern_value = 1
118 118
119 119 profile_list = Profile.objects.filter(state=1)
120 120 objProfile = Profile.objects.get(pk=profile_id)
121 121
122 122 lsPatterns = objProfile.pattern_set.all()
123 123 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
124 124 objAntennaUp = patternChoosen.antennaup_set.get()
125 125 objAntennaDown = patternChoosen.antennadown_set.get()
126 126
127 127 if len(lsPatterns) > 1:
128 128 if pattern_value == 1:
129 129 nextValuePattern = pattern_value + 1
130 130 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
131 131
132 132
133 133 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
134 134 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
135 135 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
136 136 'nextPattern' : nextPattern,
137 137 })
138 138
139 139 def edit(request, profile_id):
140 140 if request.method == 'GET' and 'pattern' in request.GET:
141 141 pattern_value = request.GET["pattern"]
142 142 else:
143 143 pattern_value = 1
144 144
145 145 profile_list = Profile.objects.filter(state=1)
146 146 objProfile = Profile.objects.get(pk=profile_id)
147 147
148 148 lsPatterns = objProfile.pattern_set.all()
149 149 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
150 150 objAntennaUp = patternChoosen.antennaup_set.get()
151 151 objAntennaDown = patternChoosen.antennadown_set.get()
152 152
153 153 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
154 154 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
155 155 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
156 156 })
157 157
158 158 def addPattern(request, profile_id):
159 159 profile_list = Profile.objects.filter(state=1)
160 160 objProfile = Profile.objects.get(pk=profile_id)
161 161
162 162 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
163 163 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
164 164 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
165 165 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
166 166 })
167 167
168 168 def editPattern(request, profile_id, pattern_id):
169 169 profile_list = Profile.objects.filter(state=1)
170 170 objProfile = Profile.objects.get(pk=profile_id)
171 171 lsPatterns = objProfile.pattern_set.all()
172 172 patternChoosen = Pattern.objects.get(pk=pattern_id)
173 173 objAntennaUp = patternChoosen.antennaup_set.get()
174 174 objAntennaDown = patternChoosen.antennadown_set.get()
175 175
176 176 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
177 177 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
178 178 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
179 179 })
180 180
181 181 def savePattern(request, profile_id):
182 182 pattern_id = 0
183 183 method = "save"
184 184
185 185 if 'pattern_id' in request.POST:
186 186 pattern_id = request.POST["pattern_id"]
187 187 method = "update"
188 188
189 189 maxValuePattern = 0
190 190 txtAntennaUp = request.POST["txtAntennaUp"]
191 191 txtTxUp = request.POST["txtTxUp"]
192 192 txtRxUp = request.POST["txtRxUp"]
193 193 txtUesUp = request.POST["txtUesUp"]
194 194
195 195 txtAntennaDown = request.POST["txtAntennaDown"]
196 196 txtTxDown = request.POST["txtTxDown"]
197 197 txtRxDown = request.POST["txtRxDown"]
198 198 txtUesDown = request.POST["txtUesDown"]
199 199
200 200 mode = request.POST["mode"]
201 201
202 202 if method == "save":
203 203 objProfile = Profile.objects.get(pk=profile_id)
204 204 lsPatterns = objProfile.pattern_set.all()
205 205 if len(lsPatterns) > 0:
206 206 for element in lsPatterns:
207 207 if element.value > maxValuePattern:
208 208 maxPattern = element.value
209 209 else:
210 210 maxPattern = 0
211 211
212 212 if maxPattern < 10 :
213 213 newValuePattern = maxPattern + 1
214 214 newpattern = objProfile.pattern_set.create(value=newValuePattern)
215 215 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
216 216 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
217 217 error = 0
218 218 else:
219 219 error = 1 # Can not add more patterns
220 220
221 221 if mode == "e":
222 222 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
223 223 else:
224 224 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
225 225 else:
226 226 txtAntennaUpId = request.POST["txtAntennaUpId"]
227 227 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
228 228 objAntennaUp.value = txtAntennaUp
229 229 objAntennaUp.tx = txtTxUp
230 230 objAntennaUp.rx = txtRxUp
231 231 objAntennaUp.ues = txtUesUp
232 232 objAntennaUp.save()
233 233
234 234 txtAntennaDownId = request.POST["txtAntennaDownId"]
235 235 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
236 236 objAntennaDown.value = txtAntennaDown
237 237 objAntennaDown.tx = txtTxDown
238 238 objAntennaDown.rx = txtRxDown
239 239 objAntennaDown.ues = txtUesDown
240 240 objAntennaDown.save()
241 241
242 242 if mode == "e":
243 243 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
244 244 else:
245 245 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
246 246
247 247 return redirect(newurl)
248 248
249 249 def viewPattern(request, profile_id, pattern_id):
250 250
251 251 profile_list = Profile.objects.filter(state=1)
252 252 objProfile = Profile.objects.get(pk=profile_id)
253 253
254 254 patternChoosen = Pattern.objects.get(pk=pattern_id)
255 255
256 256 objAntennaUp = patternChoosen.antennaup_set.get()
257 257 objAntennaDown = patternChoosen.antennadown_set.get()
258 258
259 259 lsPatterns = objProfile.pattern_set.all()
260 260
261 261 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
262 262 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
263 263 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
264 264 })
265 265
266 266 def deletePattern(request, profile_id, pattern_id):
267 267 newurl = '/abscontrol/edit/%d' % int(profile_id)
268 268
269 269 return redirect(newurl)
270 270
271 271 def importProfile(request):
272 profile_list = Profile.objects.all()
272 profile_list = Profile.objects.filter(state=1)
273 273 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,})
274 274
275 275 def showImport(request):
276 276 if request.method == 'POST':
277 277 txtFilename = request.FILES['txtFile']
278 278 if txtFilename:
279 279 destination = open('/tmp/'+txtFilename.name, 'wb+')
280 280 for chunk in txtFilename.chunks():
281 281 destination.write(chunk)
282 282 destination.close()
283 283 filename = '/tmp/'+txtFilename.name
284 284 readFile = readABSFile(filename)
285 285 expName, num_patterns, patterns = readFile.getMetadata()
286 286 else:
287 287 txtFilename = "Error"
288 288 #content = "Error"
289 289 expName = ""
290 290 num_patterns = 0
291 291
292 292 return render_to_response('abscontrol/upload-edit.html', {'txtFilename': txtFilename, 'patterns' : patterns,
293 293 'expName' : expName, 'num_patterns' : num_patterns,
294 294 })
295 295
296 296 def saveImport(request):
297 297 patterns = []
298 298
299 299 expName = request.POST["txtProfile"]
300 300 num_patterns = int(request.POST["txtNumPatterns"])
301 301
302 302 newprofile = Profile(name=expName)
303 303 newprofile.save()
304 304
305 305 for i in range(0,num_patterns):
306 306 number = request.POST["txtNumberPattern"+str(i+1)]
307 307 txtAntennaUp = request.POST["txtAntennaUp"+str(i+1)]
308 308 txtAntennaDown = request.POST["txtAntennaDown"+str(i+1)]
309 309 dicPattern = {"number" : number, "up" : txtAntennaUp, "down" : txtAntennaDown}
310 310 patterns.append(dicPattern)
311 311 newpattern = newprofile.pattern_set.create(value=number)
312 312 newpattern.antennaup_set.create(value=txtAntennaUp)
313 313 newpattern.antennadown_set.create(value=txtAntennaDown)
314 314
315 315 newurl = '/abscontrol/view/%d' % newprofile.id
316 316
317 317 return redirect(newurl)
318 318 '''
319 319 return render_to_response('abscontrol/upload-view.html', {'expName' : expName, 'patterns' : patterns,
320 320 'num_patterns' : num_patterns,
321 321 })
322 322 '''
323 323
324 324 def overJRO(request, profile_id, pattern_id, antenna_id):
325 325 if request.GET["beam"] == "Up":
326 326 objAntenna = AntennaUp.objects.get(pk=antenna_id)
327 327 else:
328 328 objAntenna = AntennaDown.objects.get(pk=antenna_id)
329 329 objProfile = Profile.objects.get(pk=profile_id)
330 330 exp_name = objProfile.name
331 331
332 332 phase_tx = objAntenna.value
333 333 gain_tx = objAntenna.tx
334 334 gain_rx = objAntenna.rx
335 335 ues_tx = objAntenna.ues
336 336 only_rx = objAntenna.only_rx
337 337
338 338 return exp_name, phase_tx, gain_tx, gain_rx, ues_tx, only_rx
339 339
340 340 def export(request, profile_id):
341 341 listPatterns = []
342 342 objProfile = Profile.objects.get(pk=profile_id)
343 343 exp_name = objProfile.name
344 344 lsPatterns = objProfile.pattern_set.all()
345 345 for element in lsPatterns:
346 346 objAntennaUp = element.antennaup_set.get()
347 347 objAntennaDown = element.antennadown_set.get()
348 348 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
349 349 listPatterns.append(dicPatterns)
350 350
351 351 absFile = saveABSFile()
352 352 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
353 353 filename, filesize = absFile.save()
354 354
355 355 wrapper = FileWrapper( open( filename, "r" ) )
356 356 content_type = mimetypes.guess_type( filename )[0]
357 357
358 358 response = HttpResponse(wrapper, content_type = content_type)
359 359 response['Content-Description'] = 'File Transfer'
360 360 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
361 361 response['Content-Transfer-Encoding'] = 'binary'
362 362 response['Expires'] = '0'
363 363 response['Cache-Control'] = 'must-revalidate'
364 364 response['Pragma'] = 'public'
365 365 response['Content-Length'] = '%s' % str(filesize)
366 366 response['X-Sendfile'] = '%s' % smart_str(filename)
367 367
368 368 return response
369 369
370 370 def send(request, profile_id):
371 371 listPatterns = []
372 372 objProfile = Profile.objects.get(pk=profile_id)
373 373 exp_name = objProfile.name
374 374
375 375 lsPatterns = objProfile.pattern_set.all()
376 376 for element in lsPatterns:
377 377 objAntennaUp = element.antennaup_set.get()
378 378 objAntennaDown = element.antennadown_set.get()
379 379 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
380 380 listPatterns.append(dicPatterns)
381 381
382 382 absFile = saveABSFile()
383 383 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
384 384 filename, filesize = absFile.save()
385 385
386 386 apiclient = sendFile()
387 387 apiclient.execute(filename)
388 388 output = apiclient.getOutput()
389 389
390 390 if output == "OK":
391 391 message = "File sent successfully."
392 392 objProfile.hits += 1
393 393 objProfile.save()
394 394 else:
395 395 message = "Error sending file."
396 396
397 397 profile_list = Profile.objects.all()
398 398
399 399 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
400 400 'objProfile': objProfile,
401 401 })
@@ -1,97 +1,99
1 1 /*
2 2 * font-family: 'Droid Sans', sans-serif;
3 3 * font-family: 'Ubuntu', sans-serif;
4 4 * font-family: 'Open Sans', sans-serif;
5 5 * font-family: 'Open Sans Condensed', sans-serif;
6 6 * font-family: 'Roboto Condensed', sans-serif;
7 7 */
8 8
9 9 body { font-size: 12px; }
10 10 header {border: 1px solid #fcc; font-size: 2em; height: 50px; text-align: center; line-height: 50px}
11 11 #schema {margin: 0 auto; width: 980px; border: 1px solid #f00 !important; padding: 10px 10px 10px 10px}
12 #content {border: 1px solid #1cc; margin-top: 5px; margin-bottom: 5px}
13 #content #leftcolumn {float: left;border: 2px solid #f00 !important; width: 160px; }
14 #content #maincolumn {float: left; border: 1px solid #000 !important; width: 780px; margin: 0; padding: 0px 10px }
12 #content {border: 0px solid #1cc; margin-top: 5px; margin-bottom: 5px}
13 #content #topcolumn {float: left;border: 1px solid #ddd !important; width: 980px; height: 40px; line-height: 35px;
14 margin: 2px 0px; box-shadow: 2px 2px 5px #888;}
15 #content #maincolumn {float: left; border: 0px solid #000 !important; width: 980px; margin: 2px 0px; padding: 0px 0px;
16 box-shadow: 2px 2px 5px #666;}
15 17 footer {border: 1px solid #200; font-size: 0.9em; height: 30px; text-align: center; line-height: 20px}
16 18
17 19 .cleardivs {clear: both; border: 0px solid #400; height: 0px}
18 20 /****************************************************************************************/
19 21 /****** ESTILOS GENERALES *****************/
20 22 /****************************************************************************************/
21 23 .mnu{ height: 22px; border: 0px solid #c55 !important;}
22 24 .mnu li{ display:inline;}
23 25 .MnuVertical, .MnuHorizontal { font-family: 'Droid Sans', sans-serif; font-size: 1.2em; font-style: italic; text-shadow: 2px 2px #eee}
24 26 .MnuHorizontal ul{ list-style: none; list-style-type: none; margin: 0;}
25 27
26 28 /*.MnuHorizontal{ display: -webkit-box; -webkit-box-orient:horizontal;}*/
27 29 /*.MnuHorizontal a{ display:block; padding:10px; -webkit-box-flex:1; text-align:center; }*/
28 30
29 31 /****************************************************************************************/
30 32 /****** MENU DE NAVEGACION DE PERFILES **********************************/
31 33 /****************************************************************************************/
32 #content #infoProfiles {border: 1px solid #1cc !important; width: 100%; margin: 0px; padding-top: 2px; padding-bottom: 2px}
33 .lblInfo {line-height: 20px; padding: 10px 10px 10px 12px; margin: 10px 0}
34 #infoProfiles select {padding-left: 0px; line-height: 25px;margin-left: 12px; font-family: 'Droid Sans', sans-serif;
35 font-size: 11px; letter-spacing: 0.029em;}
36 #content nav {border: 0px solid #c55 !important; margin: 0px;}
37
38 #leftcolumn #mnuProfiles{ margin: 5px 0px; border: 0px solid #1494F6 !important; }
34 #infoProfiles {border: 0px solid #1cc !important; width: 300px; margin: 0px; padding-top: 2px; padding-bottom: 2px;
35 float: left;}
36 #infoProfiles label {padding: 10px 10px 10px 12px; margin: 10px 0}
37 #infoProfiles select {padding: 4px 0px; margin: 0; font-family: 'Droid Sans', sans-serif;
38 font-size: 12px; letter-spacing: 0.029em; width: 200px;}
39 #mnuProfiles{margin: 0px; border: 0px solid #1494F6 !important; float: left; padding: 2px 10px}
39 40 #mnuProfiles ul{list-style: none; list-style-type: none; margin: 0; padding-left: 20px; border: 0px solid #f00 !important}
40 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; line-height: 22px}
41 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: left}
41 #mnuProfiles li{ width: 80px; padding: 2px; border: 0px solid #c55 !important; float: left; }
42 #mnuProfiles a{ font-weight: normal; color: #1494F6; display: block; border: 0px solid #1cc !important; text-align: center}
42 43
43 44 /****************************************************************************************/
44 45 /******** FORMULARIO DE PERFILES *************************************/
45 46 /****************************************************************************************/
46 #divProfile { border: 0px solid #dff; margin: 10px 0px; padding: 10px 10px; width: 500px }
47 .flsAntenna { margin: 0; width: 750px; padding: 5px }
47 #divProfile { border: 0px solid #dff !important; margin: 10px 0px; padding: 10px 10px; width: 500px }
48 .flsAntenna { margin: 0; width: 100%; padding: 0px; border: 0px solid #f00 !important }
48 49 #divPattern textarea,input[type=text],label{ font-family: "Open Sans"; font-size: inherit; }
49 50 #divPattern textarea {resize: none; overflow: hidden}
50 .antenna{ border: 1px solid #1494F6 !important; padding: 5px}
51 .antenna{ border: 0px solid #1494F6 !important; padding: 2px; margin: 5px 10px; float: left; width: 480px}
51 52 .infoAntenna{ border: 0px solid #f00 !important; width: 480px; float: left}
52 53 .overJRO{ border: 0px solid #1cc !important; width: 250px; float: left; margin: 0px 5px}
53 54 .divAntenna { float: left; margin: 10px; border: 0px solid #fcc !important; width: 190px }
54 55 .divAntenna label{ display: block }
55 56 .txtAntenna { width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 4px;
56 57 border: 2px solid #eee !important; /*font-family: "Ubuntu"; font-size: inherit;*/
57 58 text-align: justify; margin: 0 auto; line-height: 20px}
58 59 .divAntenna p{ width: 175px; max-width: 180px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
59 60 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
60 61 text-align: justify; margin: 0 auto; line-height: 20px}
61 62
62 63 .divTx { display: block; float: left; margin: 10px; height: 150px }
63 64 .divTx label{ display: block }
64 65 .divTx textarea{ width: 135px; max-width: 135px; height: 135px; max-height: 140px; text-align: justify }
65 66 .divTx p{ width: 100px; max-width: 105px; height: 160px; max-height: 165px; background: #fdfdfb; padding: 2px;
66 67 border: 1px solid #eee !important; font-family: "Ubuntu"; font-size: inherit;
67 68 text-align: justify; margin: 0 auto; line-height: 20px;}
68 69
69 70 .divUes { display: block; margin: 10px}
70 71 .divUes input[type=text] { width: 240px; max-width: 240px; font-family: "Ubuntu"; font-size: inherit;}
71 72
72 .overJRO img{width: 200; height: 145px; text-align: center; vertical-align: middle; margin: 25px 5px 5px 5px;
73 .overJRO img{width: 400px; height: 200px; text-align: center; vertical-align: middle; margin: 40px 5px 5px 5px;
73 74 display: block; background: #fdfdfb; border: 1px solid #eee !important;}
74 75 .overJRO a{ text-align: center; margin: 0 auto; display: block}
75 76
76 77 /****************************************************************************************/
77 78 /****** MENU DE NAVEGACION DE PATRONES **********************************/
78 79 /****************************************************************************************/
79 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: left; margin-left: 500px}
80 #divMnuPattern li{ float: left; display: block; width: 60px; border: 0px solid #2cc !important}
80 #divMnuPattern{ width: 280px; height: 25px; display: block; border: 0px solid #1cc !important; float: right;
81 margin: 5px 40px 5px 0px;}
82 #divMnuPattern li{ float: right; display: block; width: 60px; border: 0px solid #2cc !important}
81 83 #divMnuPattern a{ display: block; line-height: 22px; text-decoration: none; padding: 0px 5px;
82 84 border-bottom: 1px solid #1494F6 !important; margin: 0px 2px; text-align: center; color: #1494F6
83 85 }
84 #infoPattern{ display: block; border: 1px solid #1494f6 !important, margin: 5px 2px; }
86 #infoPattern{ display: block; border: 1px solid #1494f6 !important; margin: 5px 2px; }
85 87
86 #navPatterns{ margin: 5px auto; border: 0px solid #d00 !important; width: 700px; height: 30px;
87 font-family: 'Ubuntu', sans-serif; font-size: 14px; padding: 10px 0px}
88 #navPatternList{ margin: 0px auto; border: 1px solid #ecc !important}
88 #navPatterns{ margin: 0 auto; border: 0px solid #d00 !important; width: 700px; height: 30px;
89 font-family: 'Ubuntu', sans-serif; font-size: 14px; padding: 5px 0px}
90 #navPatternList{ margin: 0 auto; border: 0px solid #ecc !important}
89 91 #navPatternList ul{ list-style: none; list-style-type: none; margin: 0;}
90 92 #navPatternList ul li{ float: left; width: 50px; border: 1px solid #eee !important; }
91 93 #navPatternList a{ width: 50px; border: 0px solid #1cc !important; display: block; text-align: center; line-height: 30px; padding: 1px 0px}
92 94 .lnkPattern{ background-color: #ccc !important; color: #eee;}
93 95 .lnkPatternSelected{ background-color: #2cc !important; color: #fff;}
94 96
95 97 .divListofPatterns{ width: 650px; display: block; border: 1px solid #1cc !important; margin: 0 auto}
96 98 .divPattern{ width: 600px; display: block; border: 1px solid #f00 !important; margin: 2px auto; }
97 99
@@ -1,109 +1,110
1 1 {% extends "abscontrol/index.html" %}
2 2 {% block title %}ABS CONTROL:::PROFILE:::{{ objProfile.name }}{% endblock %}
3 3 {% block scripting %}
4 4 <script src="/static/static/js/patterns.js"></script>
5 5 {% endblock %}
6 6 {% block mnu_profile %}
7 7 <nav class="MnuVertical" id="mnuProfiles">
8 8 <ul>
9 9 <li><a href="/abscontrol/new">New</a></li>
10 10 <li><a href="#">Save</a></li>
11 11 <li><a href="#">Save as</a></li>
12 12 <li><a href="/abscontrol/import">Import</a></li>
13 13 {% if objProfile %}
14 14 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
15 15 {% endif %}
16 16 </ul>
17 17 </nav>
18 18 {% endblock %}
19 19 {% block maincolumn%}
20 20 <div id="maincolumn">
21 21 <div id="divProfile">
22 22 <label for="lblName">Profile:</label>
23 23 <label for="lblProfile">{{ objProfile.name }}</label>
24 24 </div>
25 {% if patternChoosen %}
26 <div id="navPatterns">
27 <nav class="" id="navPatternList">
28 <ul>
29 {% for element in lsPatterns %}
30 {% if patternChoosen.id == element.id %}
31 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPatternSelected">{{ element.value }}</a></li>
32 {% else %}
33 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPattern">{{ element.value }}</a></li>
34 {% endif %}
35 {% endfor %}
36 </ul>
37 </nav>
38 </div>
39 {% endif %}
25 40 <div id="divPattern">
26 41 {% block mnuPattern %}
27 42 <div class="divMenu" id="divMnuPattern">
28 43 <nav class="MnuHorizontal">
29 44 <ul class="mnu" id="mnuPattern">
45 {% if lsPatterns|length > 1 %}
46 <li><a href="/abscontrol/{{ objProfile.id }}/delete/{{ patternChoosen.id }}">Delete</a></li>
47 {% endif %}
48 <li><a href="#" class="" id="lnkSave">Save</a></li>
30 49 {% if lsPatterns|length < 10 %}
31 50 <li><a href="/abscontrol/{{ objProfile.id }}/add">Add</a></li>
32 {% endif %}
33 <li><a href="#" class="" id="lnkSave">Save</a></li>
34 {% if lsPatterns|length > 1 %}
35 <li><a href="/abscontrol/{{ objProfile.id }}/delete/{{ patternChoosen.id }}">Delete</a></li>
36 51 {% endif %}
37 52 </ul>
38 53 </nav>
39 54 </div>
40 55 <div class="cleardivs"></div>
41 56 {% endblock %}
42 57 {% block pattern %}
43 58 <div id="infoPattern">
44 {% if patternChoosen %}
45 <div id="navPatterns">
46 <nav class="" id="navPatternList">
47 <ul>
48 {% for element in lsPatterns %}
49 {% if patternChoosen.id == element.id %}
50 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPatternSelected">{{ element.value }}</a></li>
51 {% else %}
52 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPattern">{{ element.value }}</a></li>
53 {% endif %}
54 {% endfor %}
55 </ul>
56 </nav>
57 </div>
58 {% endif %}
59
59 60 <div id="antennaUp">
60 61 <fieldset class="flsAntenna">
61 62 <legend>UP</legend>
62 63 <div class="divAntenna">
63 64 <label for="lblAntenna">Antenna</label>
64 65 <textarea name="txtAntennaUp" class="txtAntenna" cols="38" rows="8">{{ antennaUp.value }}</textarea>
65 66 </div>
66 67 <div class="divTx">
67 68 <label for="lblTx">Tx</label>
68 69 <textarea name="txtTxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.tx }}</textarea>
69 70 </div>
70 71 <div class="divTx">
71 72 <label for="lblRx">Rx</label>
72 73 <textarea name="txtRxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.rx }}</textarea>
73 74 </div>
74 75 <div class="cleardivs"></div>
75 76 <div class="divUes">
76 77 <label for="lblUes">Ues:</label>
77 78 <input type="text" name="txtUesUp" value="{{ antennaUp.ues }}" />
78 79 </div>
79 80 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}" />
80 81 </fieldset>
81 82 </div>
82 83 <div id="antennaDown">
83 84 <fieldset class="flsAntenna">
84 85 <legend>DOWN</legend>
85 86 <div class="divAntenna">
86 87 <label for="lblAntenna">Antenna</label>
87 88 <textarea name="txtAntennaDown" class="txtAntenna" cols="38" rows="8">{{ antennaDown.value }}</textarea>
88 89 </div>
89 90 <div class="divTx">
90 91 <label for="lblTx">Tx</label>
91 92 <textarea name="txtTxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.tx }}</textarea>
92 93 </div>
93 94 <div class="divTx">
94 95 <label for="lblRx">Rx</label>
95 96 <textarea name="txtRxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.rx }}</textarea>
96 97 </div>
97 98 <div class="cleardivs"></div>
98 99 <div class="divUes">
99 100 <label for="lblUes">Ues:</label>
100 101 <input type="text" name="txtUesDown" value="{{ antennaDown.ues }}" />
101 102 </div>
102 103 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}" />
103 104 </fieldset>
104 105 </div>
105 106 </div>
106 107 {% endblock %}
107 108 </div>
108 109 </div>
109 110 {% endblock %}
@@ -1,85 +1,71
1 1 {% extends "abscontrol/edit.html" %}
2 2
3 3 {% block mnuPattern %}
4 4 <div class="divMenu" id="divMnuPattern">
5 5 <nav class="MnuHorizontal">
6 6 <ul class="mnu" id="mnuPattern">
7 <li><a href="#" id="lnkCancel">Delete</a></li>
8 <li><a href="#" id="lnkSave">Save</a></li>
7 9 {% if lsPatterns|length < 10 %}
8 10 <li><a href="#" id="lnkAdd">Add</a></li>
9 11 {% endif %}
10 <li><a href="#" id="lnkSave">Save</a></li>
11 <li><a href="#" id="lnkCancel">Delete</a></li>
12 12 </ul>
13 13 </nav>
14 14 </div>
15 15 <div class="cleardivs"></div>
16 16 {% endblock %}
17 17 {% block pattern %}
18 18 <div id="infoPattern">
19 <div id="navPatterns">
20 <nav class="" id="navPatternList">
21 <ul>
22 {% for element in lsPatterns %}
23 {% if patternChoosen.id == element.id %}
24 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPatternSelected">{{ element.value }}</a></li>
25 {% else %}
26 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ element.id }}" class="lnkPattern">{{ element.value }}</a></li>
27 {% endif %}
28 {% endfor %}
29 </ul>
30 </nav>
31 </div>
32 <div class="cleardivs"></div>
33 19 <form action="/abscontrol/{{ objProfile.id }}/save/" id="frmPattern" method="post">
34 20 <div id="antennaUp">
35 21 <fieldset class="flsAntenna">
36 22 <legend>UP</legend>
37 23 <div class="divAntenna">
38 24 <label for="lblAntenna">Antenna</label>
39 25 <textarea name="txtAntennaUp" class="txtAntenna" cols="38" rows="8">{{ antennaUp.value }}</textarea>
40 26 </div>
41 27 <div class="divTx">
42 28 <label for="lblTx">Tx</label>
43 29 <textarea name="txtTxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.tx }}</textarea>
44 30 </div>
45 31 <div class="divTx">
46 32 <label for="lblRx">Rx</label>
47 33 <textarea name="txtRxUp" class="txtTR" cols="20" rows="8">{{ antennaUp.rx }}</textarea>
48 34 </div>
49 35 <div class="cleardivs"></div>
50 36 <div class="divUes">
51 37 <label for="lblUes">Ues:</label>
52 38 <input type="text" name="txtUesUp" value="{{ antennaUp.ues }}" />
53 39 </div>
54 40 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}" />
55 41 </fieldset>
56 42 </div>
57 43 <div id="antennaDown">
58 44 <fieldset class="flsAntenna">
59 45 <legend>DOWN</legend>
60 46 <div class="divAntenna">
61 47 <label for="lblAntenna">Antenna</label>
62 48 <textarea name="txtAntennaDown" class="txtAntenna" cols="38" rows="8">{{ antennaDown.value }}</textarea>
63 49 </div>
64 50 <div class="divTx">
65 51 <label for="lblTx">Tx</label>
66 52 <textarea name="txtTxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.tx }}</textarea>
67 53 </div>
68 54 <div class="divTx">
69 55 <label for="lblRx">Rx</label>
70 56 <textarea name="txtRxDown" class="txtTR" cols="20" rows="8">{{ antennaDown.rx }}</textarea>
71 57 </div>
72 58 <div class="cleardivs"></div>
73 59 <div class="divUes">
74 60 <label for="lblUes">Ues:</label>
75 61 <input type="text" name="txtUesDown" value="{{ antennaDown.ues }}" />
76 62 </div>
77 63 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}" />
78 64 </fieldset>
79 65 </div>
80 66 <input type="hidden" name="pattern_id" id="pattern_id" value="{{ patternChoosen.id }}" />
81 67 <input type="hidden" name="profile_id" id="profile_id" value="{{ objProfile.id }}" />
82 68 <input type="hidden" name="mode" value="e">
83 69 </form>
84 70 </div>
85 71 {% endblock %} No newline at end of file
@@ -1,62 +1,66
1 1 {% extends "base.html" %}
2 2
3 3 {% block title %}ABS CONTROL:::::{% endblock %}
4 4 {% block scripting %}
5 5 {% if profile_list %}
6 6 <script src="/static/static/js/profiles.js"></script>
7 7 {% endif %}
8 8 {% endblock %}
9 9 {% block content %}
10 10 <div id="content">
11 {% block leftcolumn %}
12 <div id="leftcolumn">
11 {% block topcolumn %}
12 <div id="topcolumn">
13 13 <div id="lsProfiles">
14 14 <div id="infoProfiles">
15 <label for="lblProfile" class="lblInfo">Profiles:</label><br />
15 <label for="lblProfile" class="lblInfo">Profiles: </label>
16 16 {% if profile_list %}
17 17 <select name="lsProfiles" id="listProfiles">
18 18 <option value="-1">Choose ...</option>
19 19 {% for entry in profile_list %}
20 20 {% if objProfile %}
21 21 {% if objProfile.id == entry.id %}
22 22 <option value="{{ entry.id }}" selected>{{ entry.name }}</option>
23 23 {% else %}
24 24 <option value="{{ entry.id }}">{{ entry.name }}</option>
25 25 {% endif %}
26 26 {% else %}
27 27 <option value="{{ entry.id }}">{{ entry.name }}</option>
28 28 {% endif %}
29 29 {% endfor %}
30 30 </select>
31 31 {% else %}
32 32 <label for="lblMessage" class="lblInfo">No profiles.</label>
33 33 {% endif %}
34 34 </div>
35 35 </div>
36 36 {% block mnu_profile %}
37 <nav class="MnuVertical" id="mnuProfiles">
37 <div id="mnuProfiles">
38 <nav class="MnuVertical" id="navProfiles">
38 39 <ul>
39 40 <li><a href="/abscontrol/new">New</a></li>
40 41 {% if objProfile %}
41 42 <li><a href="/abscontrol/edit/{{ objProfile.id }}">Edit</a></li>
42 43 <li><a href="#">Save</a></li>
43 44 {% endif %}
44 45 <li><a href="#">Save as</a></li>
45 46 <li><a href="/abscontrol/import">Import</a></li>
46 47 {% if objProfile %}
47 48 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
48 49 <li><a href="#" id="lnkSendFile" alt="{{ objProfile.id }}">Send</a></li>
49 50 {% endif %}
50 51 </ul>
52 <div class="cleardivs"></div>
51 53 </nav>
54 </div>
52 55 {% endblock %}
56 <div class="cleardivs"></div>
53 57 </div>
54 58 {% endblock %}
55 59 {% block maincolumn %}
56 60 <div id="maincolumn">
57 61
58 62 </div>
59 63 {% endblock %}
60 64 <div class="cleardivs"></div>
61 65 </div>
62 66 {% endblock %} No newline at end of file
@@ -1,130 +1,133
1 1 {% extends "abscontrol/index.html" %}
2 2 {% block title %}ABS CONTROL:::PROFILE:::{{ objProfile.name }}{% endblock %}
3 3
4 4 {% block mnu_profile %}
5 5 <nav class="MnuVertical" id="mnuProfiles">
6 6 <ul>
7 7 <li><a href="/abscontrol/new">New</a></li>
8 8 {% if patternChoosen %}
9 9 <li><a href="/abscontrol/{{ objProfile.id }}/edit/{{ patternChoosen.id }}">Edit</a></li>
10 10 {% else %}
11 11 <li><a href="/abscontrol/edit/{{ objProfile.id }}">Edit</a></li>
12 12 {% endif %}
13 13 <li><a href="#">Save as</a></li>
14 14 <li><a href="/abscontrol/import">Import</a></li>
15 15 <li><a href="#" id="lnkExport" alt="{{ objProfile.id }}">Export</a></li>
16 16 <li><a href="#" id="lnkSendFile" alt="{{ objProfile.id }}">Send</a></li>
17 17 </ul>
18 18 </nav>
19 19 {% endblock %}
20 20 {% block maincolumn%}
21 21 <div id="maincolumn">
22 22 <div id="divProfile">
23 23 <label for="lblName">Profile:</label>
24 24 <label for="lblProfile">{{ objProfile.name }}</label>
25 25 </div>
26 {% if patternChoosen %}
27 <div id="navPatterns">
28 <nav class="" id="navPatternList">
29 <ul>
30 {% for element in lsPatterns %}
31 {% if patternChoosen.id == element.id %}
32 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPatternSelected">{{ element.value }}</a></li>
33 {% else %}
34 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPattern">{{ element.value }}</a></li>
35 {% endif %}
36 {% endfor %}
37 </ul>
38 <div class="cleardivs"></div>
39 </nav>
40 </div>
41 {% endif %}
42 {% block mnuPattern %}
43 <div class="divMenu" id="divMnuPattern">
44 <nav class="MnuHorizontal">
45 <ul class="mnu" id="mnuPattern">
46 <li><a href="#">Apply</a></li>
47 </ul>
48 </nav>
49 </div>
50 <div class="cleardivs"></div>
51 {% endblock %}
26 52 <div id="divPattern">
27 {% block mnuPattern %}
28 <div class="divMenu" id="divMnuPattern">
29 <nav class="MnuHorizontal">
30 <ul class="mnu" id="mnuPattern">
31 <li><a href="#">Apply</a></li>
32 </ul>
33 </nav>
34 </div>
35 <div class="cleardivs"></div>
36 {% endblock %}
37 53 <div id="infoPattern">
38 {% if patternChoosen %}
39 <div id="navPatterns">
40 <nav class="" id="navPatternList">
41 <ul>
42 {% for element in lsPatterns %}
43 {% if patternChoosen.id == element.id %}
44 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPatternSelected">{{ element.value }}</a></li>
45 {% else %}
46 <li><a href="/abscontrol/{{ objProfile.id }}/view/{{ element.id }}/" class="lnkPattern">{{ element.value }}</a></li>
47 {% endif %}
48 {% endfor %}
49 </ul>
50 </nav>
51 </div>
52 {% endif %}
53 54 <div id="antennaUp" class="antenna">
54 55 <fieldset class="flsAntenna">
55 56 <legend>UP</legend>
56 57 <div class="infoAntenna">
57 58 <div class="divAntenna">
58 59 <label for="lblAntenna">Antenna</label>
59 60 <p>{{ antennaUp.value }}</p>
60 61 </div>
61 62 <div class="divTx">
62 63 <label for="lblTx">Tx</label>
63 64 <p>{{ antennaUp.tx }}</p>
64 65 </div>
65 66 <div class="divTx">
66 67 <label for="lblRx">Rx</label>
67 68 <p>{{ antennaUp.rx }}</p>
68 69 </div>
69 70 <div class="cleardivs"></div>
70 71 <div class="divUes">
71 72 <label for="lblUes">Ues:</label>
72 73 <label for="lblAntennaUpUes">{{ antennaUp.ues }}</label>
73 74 {% if antennaUp.only_rx == 0 %}
74 75 <input type="checkbox" name="chkOnlyRxUp" value="" />
75 76 {% else %}
76 77 <input type="checkbox" name="chkOnlyRxUp" value="" checked="checked"/>
77 78 {% endif %}
78 79 <label for="lblOnlyRx">Only RX</label>
79 80 </div>
80 81 </div>
81 <div class="overJRO">
82 <img />
83 <a href="#" class="activeOverJRO" id="Up">Preview</a>
84 </div>
85 <div class="cleardivs"></div>
86 </fieldset>
82 </fieldset>
83 </div>
84 <div class="overJRO">
85 <img />
86 <a href="#" class="activeOverJRO" id="Up">Preview</a>
87 87 </div>
88 <div class="cleardivs"></div>
89
88 90 <div id="antennaDown" class="antenna">
89 91 <fieldset class="flsAntenna">
90 92 <legend>DOWN</legend>
91 93 <div class="infoAntenna">
92 94 <div class="divAntenna">
93 95 <label for="lblAntenna">Antenna</label>
94 96 <p>{{ antennaDown.value }}</p>
95 97 </div>
96 98 <div class="divTx">
97 99 <label for="lblTx">Tx</label>
98 100 <p>{{ antennaDown.tx }}</p>
99 101 </div>
100 102 <div class="divTx">
101 103 <label for="lblRx">Rx</label>
102 104 <p>{{ antennaDown.rx }}</p>
103 105 </div>
104 106 <div class="cleardivs"></div>
105 107 <div class="divUes">
106 108 <label for="lblUes">Ues:</label>
107 109 <label for="lblAntennaDownUes">{{ antennaDown.ues }}</label>
108 110 {% if antennaDown.only_rx == 0 %}
109 111 <input type="checkbox" name="chkOnlyRxDown" value="" />
110 112 {% else %}
111 113 <input type="checkbox" name="chkOnlyRxDown" value="" checked="checked"/>
112 114 {% endif %}
113 115 <label for="lblOnlyRx">Only RX</label>
114 116 </div>
115 117 </div>
116 <div class="overJRO">
117 <img />
118 <a href="#" class="activeOverJRO" id="Down">Preview</a>
119 </div>
120 <div class="cleardivs"></div>
118
121 119 </fieldset>
122 120 </div>
121 <div class="overJRO">
122 <img />
123 <a href="#" class="activeOverJRO" id="Down">Preview</a>
124 </div>
125 <div class="cleardivs"></div>
123 126 </div>
124 127 <input type="hidden" name="txtAntennaUpId" value="{{ antennaUp.id }}"/>
125 128 <input type="hidden" name="txtAntennaDownId" value="{{ antennaDown.id }}"/>
126 129 <input type="hidden" name="txtPatternId" value="{{ patternChoosen.id }}"/>
127 130 <input type="hidden" name="txtProfileId" value="{{ objProfile.id }}"/>
128 131 </div>
129 132 </div>
130 133 {% endblock %}
@@ -1,53 +1,48
1 1 {% load static %}
2 2 <!DOCTYPE html>
3 3 <html lang="en">
4 4 <head>
5 5 <meta charset="utf-8" />
6 6 {% comment %}
7 7 <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
8 8 Remove this if you use the .htaccess -->
9 9 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
10 10 {% endcomment %}
11 11 <link href='http://fonts.googleapis.com/css?family=Droid+Sans|Ubuntu:400,500,300italic|Open+Sans:400,300,600|Open+Sans+Condensed:300,700|Roboto+Condensed:400,300' rel='stylesheet' type='text/css'>
12 12 <link rel="stylesheet" href="{% static 'static/css/style.css' %}" type="text/css" />
13 13 <script src="{% static 'static/js/jquery-1.9.1.min.js' %}"></script>
14 14 {% block scripting %}{% endblock %}
15 15 <title>{% block title %}JRO WEB APPS::::{% endblock %}</title>
16 16 <meta name="description" content="JRO WEB APPLICATIONS" />
17 17 <meta name="author" content="Jose Antonio Sal y Rosas Celi" />
18 18
19 19 {# <meta name="viewport" content="width=device-width; initial-scale=1.0" /> #}
20 20 {% comment %}
21 21 <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
22 22 <link rel="shortcut icon" href="/favicon.ico" />
23 23 <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
24 24 {% endcomment %}
25 25 </head>
26 26 <body>
27 27 <div id="schema">
28 28 <header>
29 29 {% block header %}
30 30 <nav>
31 <a href="/abscontrol">ABS</a> |
31 <a href="/abscontrol/">ABS</a> |
32 32 <a href="#">CR</a> |
33 33 <a href="#">DDS</a> |
34 34 <a href="#">JARS</a>
35 35 </nav>
36 36 {% endblock %}
37 37 </header>
38 38 {% block content %}
39 <div id="content">
40 <nav>
41 <p><a href="/">Home</a></p>
42 <p><a href="/contact">Contact</a></p>
43 </nav>
44 </div>
39 <div id="content"></div>
45 40 {% endblock %}
46 41 <footer>
47 42 {% block footer %}
48 43 <p>&copy; Copyright by Jicamarca Radio Observatory</p>
49 44 {% endblock %}
50 45 </footer>
51 46 </div>
52 47 </body>
53 48 </html>
General Comments 0
You need to be logged in to leave comments. Login now