##// END OF EJS Templates
- Corregido el bug cuando se agrega el nuevo perfil y agregada nuevos filtros a la plantilla administrador de la aplicacion.
jsalyrosas -
r189:190
parent child
Show More
@@ -1,42 +1,45
1 from abscontrol.models import Profile, Pattern, AntennaUp, AntennaDown
1 from abscontrol.models import Profile, Pattern, AntennaUp, AntennaDown
2 from django.contrib import admin
2 from django.contrib import admin
3
3
4 class AntennaUpInline(admin.StackedInline):
4 class AntennaUpInline(admin.StackedInline):
5 model = AntennaUp
5 model = AntennaUp
6
6
7 class AntennaDownInline(admin.StackedInline):
7 class AntennaDownInline(admin.StackedInline):
8 model = AntennaDown
8 model = AntennaDown
9
9
10 class PatternAdmin(admin.ModelAdmin):
10 class PatternAdmin(admin.ModelAdmin):
11 fieldsets = [
11 fieldsets = [
12 (None, {'fields': ['value']}),
12 (None, {'fields': ['value']}),
13 ('Date information', {'fields': ['date_create', 'date_modified'], 'classes': ['collapse']}),
13 ('Date information', {'fields': ['date_create', 'date_modified'], 'classes': ['collapse']}),
14 ]
14 ]
15 inlines = [AntennaUpInline]
15 inlines = [AntennaUpInline]
16 inlines = [AntennaDownInline]
16 inlines = [AntennaDownInline]
17
17
18 class PatternInline(admin.StackedInline):
18 class PatternInline(admin.StackedInline):
19 model = Pattern
19 model = Pattern
20 readonly_fields = ['date_create', 'date_modified', 'hits']
20 readonly_fields = ['date_create', 'date_modified', 'hits']
21
21
22 fieldsets = [
22 fieldsets = [
23 (None, {'fields': ['value']}),
23 (None, {'fields': ['value']}),
24 ('Date information', {'fields': [('date_create', 'date_modified')], 'classes': ['collapse']}),
24 ('Date information', {'fields': [('date_create', 'date_modified')], 'classes': ['collapse']}),
25 ('State', {'fields': ['hits', 'state'], 'classes': ['collapse', 'wide', 'extrapretty']}),
25 ('State', {'fields': ['hits', 'state'], 'classes': ['collapse', 'wide', 'extrapretty']}),
26 ]
26 ]
27 extra = 0
27 extra = 0
28
28
29 class ProfileAdmin(admin.ModelAdmin):
29 class ProfileAdmin(admin.ModelAdmin):
30 list_display = ('name', 'date_create','hits','state')
31 list_filter = ['state','date_create','date_modified']
32 date_hierarchy = 'date_create'
30 readonly_fields = ['date_create', 'date_modified','hits']
33 readonly_fields = ['date_create', 'date_modified','hits']
31 fieldsets = [
34 fieldsets = [
32 (None, {'fields': ['name']}),
35 (None, {'fields': ['name']}),
33 ('Date information', {'fields': [('date_create', 'date_modified')], 'classes': ['collapse']}),
36 ('Date information', {'fields': [('date_create', 'date_modified')], 'classes': ['collapse']}),
34 ('State', {'fields': ['hits', 'state'], 'classes': ['collapse']}),
37 ('State', {'fields': ['hits', 'state'], 'classes': ['collapse']}),
35 ]
38 ]
36 inlines = [PatternInline]
39 inlines = [PatternInline]
37
40
38
41
39 admin.site.register(Profile, ProfileAdmin)
42 admin.site.register(Profile, ProfileAdmin)
40 #admin.site.register(Pattern, PatternAdmin)
43 #admin.site.register(Pattern, PatternAdmin)
41 #admin.site.register(AntennaUp)
44 #admin.site.register(AntennaUp)
42 #admin.site.register(AntennaDown) No newline at end of file
45 #admin.site.register(AntennaDown)
@@ -1,25 +1,26
1 from django.conf.urls import patterns, url
1 from django.conf.urls import patterns, url
2
2
3 urlpatterns = patterns('abscontrol.views',
3 urlpatterns = patterns('abscontrol.views',
4 url(r'^$', 'index'),
4 url(r'^$', 'index'),
5 url(r'^new/$', 'new'),
5 url(r'^new/$', 'new'),
6 url(r'^save/$', 'save'),
6 url(r'^save/$', 'save'),
7 url(r'^view/(?P<profile_id>\d+)/$', 'view'),
7 url(r'^view/(?P<profile_id>\d+)/$', 'view'),
8 url(r'^edit/(?P<profile_id>\d+)/$', 'edit'),
8 url(r'^edit/(?P<profile_id>\d+)/$', 'edit'),
9 url(r'^update/(?P<profile_id>\d+)/$', 'update'),
9 url(r'^update/(?P<profile_id>\d+)/$', 'update'),
10 url(r'^upgrade/(?P<profile_id>\d+)/$', 'upgrade'),
10 url(r'^changeName/(?P<profile_id>\d+)/$', 'changeName'),
11 url(r'^changeName/(?P<profile_id>\d+)/$', 'changeName'),
11 #url(r'^(?P<profile_id>\d+)/$', 'detail'),
12 #url(r'^(?P<profile_id>\d+)/$', 'detail'),
12 url(r'^(?P<profile_id>\d+)/add/$', 'addPattern'),
13 url(r'^(?P<profile_id>\d+)/add/$', 'addPattern'),
13 url(r'^(?P<profile_id>\d+)/save/$', 'savePattern'),
14 url(r'^(?P<profile_id>\d+)/save/$', 'savePattern'),
14 url(r'^(?P<profile_id>\d+)/edit/(?P<pattern_id>\d+)/$', 'editPattern'),
15 url(r'^(?P<profile_id>\d+)/edit/(?P<pattern_id>\d+)/$', 'editPattern'),
15 url(r'^(?P<profile_id>\d+)/view/(?P<pattern_id>\d+)/$', 'viewPattern'),
16 url(r'^(?P<profile_id>\d+)/view/(?P<pattern_id>\d+)/$', 'viewPattern'),
16 url(r'^(?P<profile_id>\d+)/delete/(?P<pattern_id>\d+)/$', 'deletePattern'),
17 url(r'^(?P<profile_id>\d+)/delete/(?P<pattern_id>\d+)/$', 'deletePattern'),
17 #url(r'^(?P<poll_id>\d+)/results/$', 'results'),
18 #url(r'^(?P<poll_id>\d+)/results/$', 'results'),
18 #url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
19 #url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
19 url(r'^import/$', 'importProfile'),
20 url(r'^import/$', 'importProfile'),
20 url(r'^upload/$', 'upload'),
21 url(r'^upload/$', 'upload'),
21 #url(r'^saveImport/$', 'saveImport'),
22 #url(r'^saveImport/$', 'saveImport'),
22 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjro/(?P<antenna_id>\d+)/$', 'overJRO'),
23 url(r'^(?P<profile_id>\d+)/(?P<pattern_id>\d+)/overjro/(?P<antenna_id>\d+)/$', 'overJRO'),
23 url(r'^export/(?P<profile_id>\d+)/$', 'export'),
24 url(r'^export/(?P<profile_id>\d+)/$', 'export'),
24 url(r'^send/(?P<profile_id>\d+)/$', 'send'),
25 url(r'^send/(?P<profile_id>\d+)/$', 'send'),
25 ) No newline at end of file
26 )
@@ -1,410 +1,430
1 from django.shortcuts import render_to_response, redirect
1 from django.shortcuts import render_to_response, redirect
2 from django.http import HttpResponse
2 from django.http import HttpResponse
3 from django.conf import settings
3 from django.conf import settings
4 from django.utils.encoding import smart_str
4 from django.utils.encoding import smart_str
5 from django.core.servers.basehttp import FileWrapper
5 from django.core.servers.basehttp import FileWrapper
6 import mimetypes
6 import mimetypes
7
7
8 from datetime import datetime
8 from datetime import datetime
9
9
10 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
10 from abscontrol.models import Profile, Pattern, AntennaDown, AntennaUp
11
11
12 from util.readABSFile import readABSFile
12 from util.readABSFile import readABSFile
13 from util.saveABSFile import saveABSFile
13 from util.saveABSFile import saveABSFile
14 from scripts.sendFile import sendFile
14 from scripts.sendFile import sendFile
15
15
16 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
16 txtAntenna = "[[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
17 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
17 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
18 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
18 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
19 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
19 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
20 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
20 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
21 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
21 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]," \
22 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
22 "[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]," \
23 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
23 "[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5]]"
24
24
25 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
25 txtTxUp = "[[1,1,1,1,1,1,1,1]," \
26 "[1,1,1,1,1,1,1,1]," \
26 "[1,1,1,1,1,1,1,1]," \
27 "[1,1,1,1,1,1,1,1]," \
27 "[1,1,1,1,1,1,1,1]," \
28 "[1,1,1,1,1,1,1,1]," \
28 "[1,1,1,1,1,1,1,1]," \
29 "[1,1,1,1,1,1,1,1]," \
29 "[1,1,1,1,1,1,1,1]," \
30 "[1,1,1,1,1,1,1,1]," \
30 "[1,1,1,1,1,1,1,1]," \
31 "[1,1,1,1,1,1,1,1]," \
31 "[1,1,1,1,1,1,1,1]," \
32 "[1,1,1,1,1,1,1,1]]"
32 "[1,1,1,1,1,1,1,1]]"
33
33
34 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
34 txtTxDown = "[[1,1,1,1,0,0,0,0]," \
35 "[1,1,1,1,0,0,0,0]," \
35 "[1,1,1,1,0,0,0,0]," \
36 "[1,1,1,1,0,0,0,0]," \
36 "[1,1,1,1,0,0,0,0]," \
37 "[1,1,1,1,0,0,0,0]," \
37 "[1,1,1,1,0,0,0,0]," \
38 "[0,0,0,0,1,1,1,1]," \
38 "[0,0,0,0,1,1,1,1]," \
39 "[0,0,0,0,1,1,1,1]," \
39 "[0,0,0,0,1,1,1,1]," \
40 "[0,0,0,0,1,1,1,1]," \
40 "[0,0,0,0,1,1,1,1]," \
41 "[0,0,0,0,1,1,1,1]]"
41 "[0,0,0,0,1,1,1,1]]"
42
42
43 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
43 txtRxUp = "[[0,0,0,0,1,1,1,1]," \
44 "[0,0,0,0,1,1,1,1]," \
44 "[0,0,0,0,1,1,1,1]," \
45 "[0,0,0,0,1,1,1,1]," \
45 "[0,0,0,0,1,1,1,1]," \
46 "[0,0,0,0,1,1,1,1]," \
46 "[0,0,0,0,1,1,1,1]," \
47 "[1,1,1,1,1,1,1,1]," \
47 "[1,1,1,1,1,1,1,1]," \
48 "[1,1,1,1,1,1,1,1]," \
48 "[1,1,1,1,1,1,1,1]," \
49 "[1,1,1,1,1,1,1,1]," \
49 "[1,1,1,1,1,1,1,1]," \
50 "[1,1,1,1,1,1,1,1]]"
50 "[1,1,1,1,1,1,1,1]]"
51
51
52 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
52 txtRxDown = "[[1,1,1,1,1,1,1,1]," \
53 "[1,1,1,1,1,1,1,1]," \
53 "[1,1,1,1,1,1,1,1]," \
54 "[1,1,1,1,1,1,1,1]," \
54 "[1,1,1,1,1,1,1,1]," \
55 "[1,1,1,1,1,1,1,1]," \
55 "[1,1,1,1,1,1,1,1]," \
56 "[1,1,1,1,1,1,1,1]," \
56 "[1,1,1,1,1,1,1,1]," \
57 "[1,1,1,1,1,1,1,1]," \
57 "[1,1,1,1,1,1,1,1]," \
58 "[1,1,1,1,1,1,1,1]," \
58 "[1,1,1,1,1,1,1,1]," \
59 "[1,1,1,1,1,1,1,1]]"
59 "[1,1,1,1,1,1,1,1]]"
60
60
61 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
61 txtUes = "[0.533333,0.00000,1.06667,0.00000]"
62
62
63 def index(request):
63 def index(request):
64 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
64 #latest_poll_list = profileAntenna.objects.all().order_by('-pub_date')[:5]
65 profile_list = Profile.objects.filter(state=1)
65 profile_list = Profile.objects.filter(state=1)
66 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
66 return render_to_response('abscontrol/index.html', {'profile_list': profile_list})
67
67
68 def new(request):
68 def new(request):
69 profile_list = Profile.objects.filter(state=1)
69 profile_list = Profile.objects.filter(state=1)
70 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
70 txtProfile = datetime.now().strftime("%Y%m%d%H%M%S%f")
71 newprofile = Profile(name=txtProfile)
71 newprofile = Profile(name=txtProfile)
72 newprofile.save()
72 newprofile.save()
73
73
74 lsPatterns = None
74 lsPatterns = None
75
75
76 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
76 return render_to_response('abscontrol/new.html', {'profile_list': profile_list,
77 'txtAntenna' : txtAntenna,
77 'txtAntenna' : txtAntenna,
78 'profile_name' : newprofile.name,
78 'profile_name' : newprofile.name,
79 'profile_id' : newprofile.id,
79 'profile_id' : newprofile.id,
80 'lsPatterns' : lsPatterns,
80 'lsPatterns' : lsPatterns,
81 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
81 'txtUes' : txtUes, 'txtTxUp' : txtTxUp,
82 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
82 'txtTxDown' : txtTxDown, 'txtRxUp' : txtRxUp,
83 'txtRxDown' : txtRxDown,
83 'txtRxDown' : txtRxDown,
84 'range' : range(8),
84 'range' : range(8),
85 })
85 })
86
86
87 def save(request):
87 def save(request):
88
88
89 txtProfile = request.POST["txtProfile"]
89 txtProfile = request.POST["txtProfile"]
90
90
91 txtAntennaUp = request.POST["txtAntennaUp"]
91 txtAntennaUp = request.POST["txtAntennaUp"]
92 txtTxUp = request.POST["txtTxUp"]
92 txtTxUp = request.POST["txtTxUp"]
93 txtRxUp = request.POST["txtRxUp"]
93 txtRxUp = request.POST["txtRxUp"]
94 txtUesUp = request.POST["txtUesUp"]
94 txtUesUp = request.POST["txtUesUp"]
95
95
96 txtAntennaDown = request.POST["txtAntennaDown"]
96 txtAntennaDown = request.POST["txtAntennaDown"]
97 txtTxDown = request.POST["txtTxDown"]
97 txtTxDown = request.POST["txtTxDown"]
98 txtRxDown = request.POST["txtRxDown"]
98 txtRxDown = request.POST["txtRxDown"]
99 txtUesDown = request.POST["txtUesDown"]
99 txtUesDown = request.POST["txtUesDown"]
100
100
101 newprofile = Profile(name=txtProfile)
101 newprofile = Profile(name=txtProfile)
102 newprofile.save()
102 newprofile.save()
103
103
104 newpattern = newprofile.pattern_set.create(value=1)
104 newpattern = newprofile.pattern_set.create(value=1)
105 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
105 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
106 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
106 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
107
107
108 newurl = '/abscontrol/view/%d' % newprofile.id
108 newurl = '/abscontrol/view/%d' % newprofile.id
109
109
110 return redirect(newurl)
111
112 # Update temporal experiment
113 def upgrade(request, profile_id):
114 txtAntennaUp = request.POST["txtAntennaUp"]
115 txtTxUp = request.POST["txtTxUp"]
116 txtRxUp = request.POST["txtRxUp"]
117 txtUesUp = request.POST["txtUesUp"]
118
119 txtAntennaDown = request.POST["txtAntennaDown"]
120 txtTxDown = request.POST["txtTxDown"]
121 txtRxDown = request.POST["txtRxDown"]
122 txtUesDown = request.POST["txtUesDown"]
123
124 objProfile = Profile.objects.get(pk=profile_id)
125 newpattern = objProfile.pattern_set.create(value=1)
126 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
127 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
128
129 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
110 return redirect(newurl)
130 return redirect(newurl)
111
131
112 def update(request, profile_id):
132 def update(request, profile_id):
113 txtProfile = request.POST["txtProfile"]
133 txtProfile = request.POST["txtProfile"]
114
134
115 objProfile = Profile.objects.get(pk=profile_id)
135 objProfile = Profile.objects.get(pk=profile_id)
116 objProfile.name = txtProfile
136 objProfile.name = txtProfile
117 objProfile.state = 1
137 objProfile.state = 1
118 objProfile.save()
138 objProfile.save()
119
139
120 newurl = '/abscontrol/view/%d' % objProfile.id
140 newurl = '/abscontrol/view/%d' % objProfile.id
121 return redirect(newurl)
141 return redirect(newurl)
122
142
123 def changeName(request, profile_id):
143 def changeName(request, profile_id):
124 profile_list = Profile.objects.filter(state=1)
144 profile_list = Profile.objects.filter(state=1)
125 objProfile = Profile.objects.get(pk=profile_id)
145 objProfile = Profile.objects.get(pk=profile_id)
126 lsPatterns = objProfile.pattern_set.all()
146 lsPatterns = objProfile.pattern_set.all()
127
147
128 return render_to_response('abscontrol/changeName.html', {'profile_list': profile_list,
148 return render_to_response('abscontrol/changeName.html', {'profile_list': profile_list,
129 'objProfile': objProfile,
149 'objProfile': objProfile,
130 'lsPatterns' : lsPatterns,
150 'lsPatterns' : lsPatterns,
131 })
151 })
132
152
133 def view(request, profile_id):
153 def view(request, profile_id):
134 nextPattern = 0
154 nextPattern = 0
135
155
136 if request.method == 'GET' and 'pattern' in request.GET:
156 if request.method == 'GET' and 'pattern' in request.GET:
137 pattern_value = request.GET["pattern"]
157 pattern_value = request.GET["pattern"]
138 else:
158 else:
139 pattern_value = 1
159 pattern_value = 1
140
160
141 profile_list = Profile.objects.filter(state=1)
161 profile_list = Profile.objects.filter(state=1)
142 objProfile = Profile.objects.get(pk=profile_id)
162 objProfile = Profile.objects.get(pk=profile_id)
143
163
144 lsPatterns = objProfile.pattern_set.all()
164 lsPatterns = objProfile.pattern_set.all()
145 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
165 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
146 objAntennaUp = patternChoosen.antennaup_set.get()
166 objAntennaUp = patternChoosen.antennaup_set.get()
147 objAntennaDown = patternChoosen.antennadown_set.get()
167 objAntennaDown = patternChoosen.antennadown_set.get()
148
168
149 if len(lsPatterns) > 1:
169 if len(lsPatterns) > 1:
150 if pattern_value == 1:
170 if pattern_value == 1:
151 nextValuePattern = pattern_value + 1
171 nextValuePattern = pattern_value + 1
152 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
172 nextPattern = objProfile.pattern_set.get(value=nextValuePattern)
153
173
154
174
155 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
175 return render_to_response('abscontrol/view.html', {'objProfile': objProfile, 'profile_list': profile_list,
156 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
176 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
157 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
177 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
158 'nextPattern' : nextPattern,
178 'nextPattern' : nextPattern,
159 })
179 })
160
180
161 def edit(request, profile_id):
181 def edit(request, profile_id):
162 if request.method == 'GET' and 'pattern' in request.GET:
182 if request.method == 'GET' and 'pattern' in request.GET:
163 pattern_value = request.GET["pattern"]
183 pattern_value = request.GET["pattern"]
164 else:
184 else:
165 pattern_value = 1
185 pattern_value = 1
166
186
167 profile_list = Profile.objects.filter(state=1)
187 profile_list = Profile.objects.filter(state=1)
168 objProfile = Profile.objects.get(pk=profile_id)
188 objProfile = Profile.objects.get(pk=profile_id)
169
189
170 lsPatterns = objProfile.pattern_set.all()
190 lsPatterns = objProfile.pattern_set.all()
171 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
191 patternChoosen = objProfile.pattern_set.get(value=pattern_value)
172 objAntennaUp = patternChoosen.antennaup_set.get()
192 objAntennaUp = patternChoosen.antennaup_set.get()
173 objAntennaDown = patternChoosen.antennadown_set.get()
193 objAntennaDown = patternChoosen.antennadown_set.get()
174
194
175 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
195 return render_to_response('abscontrol/edit.html', {'objProfile': objProfile, 'profile_list': profile_list,
176 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
196 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
177 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
197 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
178 })
198 })
179
199
180 def addPattern(request, profile_id):
200 def addPattern(request, profile_id):
181 profile_list = Profile.objects.filter(state=1)
201 profile_list = Profile.objects.filter(state=1)
182 objProfile = Profile.objects.get(pk=profile_id)
202 objProfile = Profile.objects.get(pk=profile_id)
183
203
184 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
204 return render_to_response('abscontrol/addPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
185 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
205 'txtAntenna' : txtAntenna, 'txtUes' : txtUes,
186 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
206 'txtTxUp' : txtTxUp, 'txtTxDown' : txtTxDown,
187 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
207 'txtRxUp' : txtRxUp, 'txtRxDown' : txtRxDown,
188 })
208 })
189
209
190 def editPattern(request, profile_id, pattern_id):
210 def editPattern(request, profile_id, pattern_id):
191 profile_list = Profile.objects.filter(state=1)
211 profile_list = Profile.objects.filter(state=1)
192 objProfile = Profile.objects.get(pk=profile_id)
212 objProfile = Profile.objects.get(pk=profile_id)
193 lsPatterns = objProfile.pattern_set.all()
213 lsPatterns = objProfile.pattern_set.all()
194 patternChoosen = Pattern.objects.get(pk=pattern_id)
214 patternChoosen = Pattern.objects.get(pk=pattern_id)
195 objAntennaUp = patternChoosen.antennaup_set.get()
215 objAntennaUp = patternChoosen.antennaup_set.get()
196 objAntennaDown = patternChoosen.antennadown_set.get()
216 objAntennaDown = patternChoosen.antennadown_set.get()
197
217
198 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
218 return render_to_response('abscontrol/editPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
199 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
219 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
200 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
220 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
201 })
221 })
202
222
203 def savePattern(request, profile_id):
223 def savePattern(request, profile_id):
204 pattern_id = 0
224 pattern_id = 0
205 method = "save"
225 method = "save"
206
226
207 if 'pattern_id' in request.POST:
227 if 'pattern_id' in request.POST:
208 pattern_id = request.POST["pattern_id"]
228 pattern_id = request.POST["pattern_id"]
209 method = "update"
229 method = "update"
210
230
211 maxValuePattern = 0
231 maxValuePattern = 0
212 txtAntennaUp = request.POST["txtAntennaUp"]
232 txtAntennaUp = request.POST["txtAntennaUp"]
213 txtTxUp = request.POST["txtTxUp"]
233 txtTxUp = request.POST["txtTxUp"]
214 txtRxUp = request.POST["txtRxUp"]
234 txtRxUp = request.POST["txtRxUp"]
215 txtUesUp = request.POST["txtUesUp"]
235 txtUesUp = request.POST["txtUesUp"]
216
236
217 txtAntennaDown = request.POST["txtAntennaDown"]
237 txtAntennaDown = request.POST["txtAntennaDown"]
218 txtTxDown = request.POST["txtTxDown"]
238 txtTxDown = request.POST["txtTxDown"]
219 txtRxDown = request.POST["txtRxDown"]
239 txtRxDown = request.POST["txtRxDown"]
220 txtUesDown = request.POST["txtUesDown"]
240 txtUesDown = request.POST["txtUesDown"]
221
241
222 mode = request.POST["mode"]
242 mode = request.POST["mode"]
223
243
224 if method == "save":
244 if method == "save":
225 objProfile = Profile.objects.get(pk=profile_id)
245 objProfile = Profile.objects.get(pk=profile_id)
226 lsPatterns = objProfile.pattern_set.all()
246 lsPatterns = objProfile.pattern_set.all()
227 if len(lsPatterns) > 0:
247 if len(lsPatterns) > 0:
228 for element in lsPatterns:
248 for element in lsPatterns:
229 if element.value > maxValuePattern:
249 if element.value > maxValuePattern:
230 maxPattern = element.value
250 maxPattern = element.value
231 else:
251 else:
232 maxPattern = 0
252 maxPattern = 0
233
253
234 if maxPattern < 10 :
254 if maxPattern < 10 :
235 newValuePattern = maxPattern + 1
255 newValuePattern = maxPattern + 1
236 newpattern = objProfile.pattern_set.create(value=newValuePattern)
256 newpattern = objProfile.pattern_set.create(value=newValuePattern)
237 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
257 newpattern.antennaup_set.create(value=txtAntennaUp,tx=txtTxUp,rx=txtRxUp,ues=txtUesUp)
238 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
258 newpattern.antennadown_set.create(value=txtAntennaDown,tx=txtTxDown,rx=txtRxDown,ues=txtUesDown)
239 error = 0
259 error = 0
240 else:
260 else:
241 error = 1 # Can not add more patterns
261 error = 1 # Can not add more patterns
242
262
243 if mode == "e":
263 if mode == "e":
244 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
264 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), newpattern.id)
245 else:
265 else:
246 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
266 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), newpattern.id)
247 else:
267 else:
248 txtAntennaUpId = request.POST["txtAntennaUpId"]
268 txtAntennaUpId = request.POST["txtAntennaUpId"]
249 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
269 objAntennaUp = AntennaUp.objects.get(pk=txtAntennaUpId)
250 objAntennaUp.value = txtAntennaUp
270 objAntennaUp.value = txtAntennaUp
251 objAntennaUp.tx = txtTxUp
271 objAntennaUp.tx = txtTxUp
252 objAntennaUp.rx = txtRxUp
272 objAntennaUp.rx = txtRxUp
253 objAntennaUp.ues = txtUesUp
273 objAntennaUp.ues = txtUesUp
254 objAntennaUp.save()
274 objAntennaUp.save()
255
275
256 txtAntennaDownId = request.POST["txtAntennaDownId"]
276 txtAntennaDownId = request.POST["txtAntennaDownId"]
257 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
277 objAntennaDown = AntennaDown.objects.get(pk=txtAntennaDownId)
258 objAntennaDown.value = txtAntennaDown
278 objAntennaDown.value = txtAntennaDown
259 objAntennaDown.tx = txtTxDown
279 objAntennaDown.tx = txtTxDown
260 objAntennaDown.rx = txtRxDown
280 objAntennaDown.rx = txtRxDown
261 objAntennaDown.ues = txtUesDown
281 objAntennaDown.ues = txtUesDown
262 objAntennaDown.save()
282 objAntennaDown.save()
263
283
264 if mode == "e":
284 if mode == "e":
265 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
285 newurl = '/abscontrol/%d/edit/%d' % (int(profile_id), int(pattern_id))
266 else:
286 else:
267 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
287 newurl = '/abscontrol/%d/view/%d' % (int(profile_id), int(pattern_id))
268
288
269 return redirect(newurl)
289 return redirect(newurl)
270
290
271 def viewPattern(request, profile_id, pattern_id):
291 def viewPattern(request, profile_id, pattern_id):
272
292
273 profile_list = Profile.objects.filter(state=1)
293 profile_list = Profile.objects.filter(state=1)
274 objProfile = Profile.objects.get(pk=profile_id)
294 objProfile = Profile.objects.get(pk=profile_id)
275
295
276 patternChoosen = Pattern.objects.get(pk=pattern_id)
296 patternChoosen = Pattern.objects.get(pk=pattern_id)
277
297
278 objAntennaUp = patternChoosen.antennaup_set.get()
298 objAntennaUp = patternChoosen.antennaup_set.get()
279 objAntennaDown = patternChoosen.antennadown_set.get()
299 objAntennaDown = patternChoosen.antennadown_set.get()
280
300
281 lsPatterns = objProfile.pattern_set.all()
301 lsPatterns = objProfile.pattern_set.all()
282
302
283 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
303 return render_to_response('abscontrol/viewPattern.html', {'objProfile': objProfile, 'profile_list': profile_list,
284 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
304 'patternChoosen' : patternChoosen, 'lsPatterns' : lsPatterns,
285 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
305 'antennaUp' : objAntennaUp, 'antennaDown' : objAntennaDown,
286 })
306 })
287
307
288 def deletePattern(request, profile_id, pattern_id):
308 def deletePattern(request, profile_id, pattern_id):
289 newurl = '/abscontrol/edit/%d' % int(profile_id)
309 newurl = '/abscontrol/edit/%d' % int(profile_id)
290
310
291 return redirect(newurl)
311 return redirect(newurl)
292
312
293 def importProfile(request):
313 def importProfile(request):
294 profile_list = Profile.objects.filter(state=1)
314 profile_list = Profile.objects.filter(state=1)
295 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,})
315 return render_to_response('abscontrol/import.html', {'profile_list': profile_list,})
296
316
297 def upload(request):
317 def upload(request):
298 profile_list = Profile.objects.filter(state=1)
318 profile_list = Profile.objects.filter(state=1)
299 if request.method == 'POST':
319 if request.method == 'POST':
300 txtFilename = request.FILES['txtFile']
320 txtFilename = request.FILES['txtFile']
301 if txtFilename:
321 if txtFilename:
302 destination = open('/tmp/'+txtFilename.name, 'wb+')
322 destination = open('/tmp/'+txtFilename.name, 'wb+')
303 for chunk in txtFilename.chunks():
323 for chunk in txtFilename.chunks():
304 destination.write(chunk)
324 destination.write(chunk)
305 destination.close()
325 destination.close()
306 filename = '/tmp/'+txtFilename.name
326 filename = '/tmp/'+txtFilename.name
307 readFile = readABSFile(filename)
327 readFile = readABSFile(filename)
308 expName, num_patterns, patterns = readFile.getMetadata()
328 expName, num_patterns, patterns = readFile.getMetadata()
309
329
310 if expName != "" and num_patterns > 0:
330 if expName != "" and num_patterns > 0:
311 newprofile = Profile(name=expName)
331 newprofile = Profile(name=expName)
312 newprofile.save()
332 newprofile.save()
313 newprofile.state = 1
333 newprofile.state = 1
314
334
315 for element in patterns:
335 for element in patterns:
316 newpattern = newprofile.pattern_set.create(value=element["number"])
336 newpattern = newprofile.pattern_set.create(value=element["number"])
317 newpattern.antennaup_set.create(value=element["up"])
337 newpattern.antennaup_set.create(value=element["up"])
318 newpattern.antennadown_set.create(value=element["down"])
338 newpattern.antennadown_set.create(value=element["down"])
319
339
320 newprofile.save()
340 newprofile.save()
321
341
322 newurl = '/abscontrol/edit/%d' % int(newprofile.id)
342 newurl = '/abscontrol/edit/%d' % int(newprofile.id)
323 return redirect(newurl)
343 return redirect(newurl)
324 else:
344 else:
325 txtError = "Experiment's name not found or the number of patterns is 0."
345 txtError = "Experiment's name not found or the number of patterns is 0."
326 return render_to_response('abscontrol/error.html', {'profile_list': profile_list,
346 return render_to_response('abscontrol/error.html', {'profile_list': profile_list,
327 'txtError' : txtError, })
347 'txtError' : txtError, })
328 else:
348 else:
329 txtError = "No file."
349 txtError = "No file."
330
350
331 return render_to_response('abscontrol/error.html', {'profile_list': profile_list, 'txtError' : txtError, })
351 return render_to_response('abscontrol/error.html', {'profile_list': profile_list, 'txtError' : txtError, })
332
352
333 def overJRO(request, profile_id, pattern_id, antenna_id):
353 def overJRO(request, profile_id, pattern_id, antenna_id):
334 if request.GET["beam"] == "Up":
354 if request.GET["beam"] == "Up":
335 objAntenna = AntennaUp.objects.get(pk=antenna_id)
355 objAntenna = AntennaUp.objects.get(pk=antenna_id)
336 else:
356 else:
337 objAntenna = AntennaDown.objects.get(pk=antenna_id)
357 objAntenna = AntennaDown.objects.get(pk=antenna_id)
338 objProfile = Profile.objects.get(pk=profile_id)
358 objProfile = Profile.objects.get(pk=profile_id)
339 exp_name = objProfile.name
359 exp_name = objProfile.name
340
360
341 phase_tx = objAntenna.value
361 phase_tx = objAntenna.value
342 gain_tx = objAntenna.tx
362 gain_tx = objAntenna.tx
343 gain_rx = objAntenna.rx
363 gain_rx = objAntenna.rx
344 ues_tx = objAntenna.ues
364 ues_tx = objAntenna.ues
345 only_rx = objAntenna.only_rx
365 only_rx = objAntenna.only_rx
346
366
347 return exp_name, phase_tx, gain_tx, gain_rx, ues_tx, only_rx
367 return exp_name, phase_tx, gain_tx, gain_rx, ues_tx, only_rx
348
368
349 def export(request, profile_id):
369 def export(request, profile_id):
350 listPatterns = []
370 listPatterns = []
351 objProfile = Profile.objects.get(pk=profile_id)
371 objProfile = Profile.objects.get(pk=profile_id)
352 exp_name = objProfile.name
372 exp_name = objProfile.name
353 lsPatterns = objProfile.pattern_set.all()
373 lsPatterns = objProfile.pattern_set.all()
354 for element in lsPatterns:
374 for element in lsPatterns:
355 objAntennaUp = element.antennaup_set.get()
375 objAntennaUp = element.antennaup_set.get()
356 objAntennaDown = element.antennadown_set.get()
376 objAntennaDown = element.antennadown_set.get()
357 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
377 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
358 listPatterns.append(dicPatterns)
378 listPatterns.append(dicPatterns)
359
379
360 absFile = saveABSFile()
380 absFile = saveABSFile()
361 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
381 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
362 filename, filesize = absFile.save()
382 filename, filesize = absFile.save()
363
383
364 wrapper = FileWrapper( open( filename, "r" ) )
384 wrapper = FileWrapper( open( filename, "r" ) )
365 content_type = mimetypes.guess_type( filename )[0]
385 content_type = mimetypes.guess_type( filename )[0]
366
386
367 response = HttpResponse(wrapper, content_type = content_type)
387 response = HttpResponse(wrapper, content_type = content_type)
368 response['Content-Description'] = 'File Transfer'
388 response['Content-Description'] = 'File Transfer'
369 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
389 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
370 response['Content-Transfer-Encoding'] = 'binary'
390 response['Content-Transfer-Encoding'] = 'binary'
371 response['Expires'] = '0'
391 response['Expires'] = '0'
372 response['Cache-Control'] = 'must-revalidate'
392 response['Cache-Control'] = 'must-revalidate'
373 response['Pragma'] = 'public'
393 response['Pragma'] = 'public'
374 response['Content-Length'] = '%s' % str(filesize)
394 response['Content-Length'] = '%s' % str(filesize)
375 response['X-Sendfile'] = '%s' % smart_str(filename)
395 response['X-Sendfile'] = '%s' % smart_str(filename)
376
396
377 return response
397 return response
378
398
379 def send(request, profile_id):
399 def send(request, profile_id):
380 listPatterns = []
400 listPatterns = []
381 objProfile = Profile.objects.get(pk=profile_id)
401 objProfile = Profile.objects.get(pk=profile_id)
382 exp_name = objProfile.name
402 exp_name = objProfile.name
383
403
384 lsPatterns = objProfile.pattern_set.all()
404 lsPatterns = objProfile.pattern_set.all()
385 for element in lsPatterns:
405 for element in lsPatterns:
386 objAntennaUp = element.antennaup_set.get()
406 objAntennaUp = element.antennaup_set.get()
387 objAntennaDown = element.antennadown_set.get()
407 objAntennaDown = element.antennadown_set.get()
388 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
408 dicPatterns = {"number" : element.value, "up" : objAntennaUp.value, "down" : objAntennaDown.value}
389 listPatterns.append(dicPatterns)
409 listPatterns.append(dicPatterns)
390
410
391 absFile = saveABSFile()
411 absFile = saveABSFile()
392 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
412 absFile.setParameters(settings.MEDIA_ROOT, exp_name, listPatterns)
393 filename, filesize = absFile.save()
413 filename, filesize = absFile.save()
394
414
395 apiclient = sendFile()
415 apiclient = sendFile()
396 apiclient.execute(filename)
416 apiclient.execute(filename)
397 output = apiclient.getOutput()
417 output = apiclient.getOutput()
398
418
399 if output == "OK":
419 if output == "OK":
400 message = "File sent successfully."
420 message = "File sent successfully."
401 objProfile.hits += 1
421 objProfile.hits += 1
402 objProfile.save()
422 objProfile.save()
403 else:
423 else:
404 message = "Error sending file."
424 message = "Error sending file."
405
425
406 profile_list = Profile.objects.all()
426 profile_list = Profile.objects.all()
407
427
408 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
428 return render_to_response('abscontrol/sendFile.html', {'message': message, "profile_list" : profile_list,
409 'objProfile': objProfile,
429 'objProfile': objProfile,
410 })
430 })
@@ -1,467 +1,467
1 /*
1 /*
2 * font-family: 'Droid Sans', sans-serif;
2 * font-family: 'Droid Sans', sans-serif;
3 * font-family: 'Ubuntu', sans-serif;
3 * font-family: 'Ubuntu', sans-serif;
4 * font-family: 'Open Sans', sans-serif;
4 * font-family: 'Open Sans', sans-serif;
5 * font-family: 'Open Sans Condensed', sans-serif;
5 * font-family: 'Open Sans Condensed', sans-serif;
6 * font-family: 'Roboto Condensed', sans-serif;
6 * font-family: 'Roboto Condensed', sans-serif;
7 */
7 */
8
8
9 body {
9 body {
10 padding: 0;
10 padding: 0;
11 margin: 0;
11 margin: 0;
12 font-size: 12px; }
12 font-size: 12px; }
13
13
14 header {
14 header {
15 width: 980px;
15 width: 980px;
16 height: 50px;
16 height: 50px;
17 text-align: center;
17 text-align: center;
18 line-height: 50px;
18 line-height: 50px;
19 border: 0px solid #fcc !important; }
19 border: 0px solid #fcc !important; }
20
20
21 #schema {
21 #schema {
22 margin: 0 auto;
22 margin: 0 auto;
23 width: 980px;
23 width: 980px;
24 padding: 10px 10px;
24 padding: 10px 10px;
25 border: 0px solid #f00 !important; }
25 border: 0px solid #f00 !important; }
26
26
27 #content {
27 #content {
28 margin: 5px 0px;
28 margin: 5px 0px;
29 border: 0px solid #1cc; }
29 border: 0px solid #1cc; }
30
30
31 #topcolumn {
31 #topcolumn {
32 float: left;
32 float: left;
33 width: 980px;
33 width: 980px;
34 height: 40px;
34 height: 40px;
35 line-height: 35px;
35 line-height: 35px;
36 margin: 2px 0px;
36 margin: 2px 0px;
37 border: 1px solid #ddd !important;
37 border: 1px solid #ddd !important;
38 box-shadow: 2px 2px 5px #888; }
38 box-shadow: 2px 2px 5px #888; }
39
39
40 #maincolumn {
40 #maincolumn {
41 float: left;
41 float: left;
42 width: 980px;
42 width: 980px;
43 margin: 2px 0px;
43 margin: 2px 0px;
44 padding: 0px 0px;
44 padding: 0px 0px;
45 border: 1px solid #ddd !important;
45 border: 1px solid #ddd !important;
46 box-shadow: 2px 2px 5px #666; }
46 box-shadow: 2px 2px 5px #666; }
47
47
48 footer {
48 footer {
49 height: 30px;
49 height: 30px;
50 line-height: 30px;
50 line-height: 30px;
51 text-align: center;
51 text-align: center;
52 margin: 0px 0px;
52 margin: 0px 0px;
53 border: 0px solid #200 !important;
53 border: 0px solid #200 !important;
54 box-shadow: 2px 2px 5px #888; }
54 box-shadow: 2px 2px 5px #888; }
55
55
56 .cleardivs {
56 .cleardivs {
57 clear: both;
57 clear: both;
58 border: 0px solid #400;
58 border: 0px solid #400;
59 height: 0px; }
59 height: 0px; }
60
60
61 textarea {
61 textarea {
62 resize: none;
62 resize: none;
63 overflow: hidden; }
63 overflow: hidden; }
64
64
65 /****************************************************************************************/
65 /****************************************************************************************/
66 /****** ESTILOS GENERALES *****************/
66 /****** ESTILOS GENERALES *****************/
67 /****************************************************************************************/
67 /****************************************************************************************/
68 .mnu {
68 .mnu {
69 height: 22px;
69 height: 22px;
70 border: 0px solid #c55 !important; }
70 border: 0px solid #c55 !important; }
71
71
72 .mnu li {
72 .mnu li {
73 display:inline; }
73 display:inline; }
74
74
75 .MnuVertical, .MnuHorizontal {
75 .MnuVertical, .MnuHorizontal {
76 font-family: 'Droid Sans', sans-serif;
76 font-family: 'Droid Sans', sans-serif;
77 font-size: inherit;
77 font-size: inherit;
78 font-style: normal;
78 font-style: normal;
79 text-shadow: 2px 2px #eee; }
79 text-shadow: 2px 2px #eee; }
80
80
81 .MnuHorizontal ul {
81 .MnuHorizontal ul {
82 list-style: none;
82 list-style: none;
83 list-style-type: none;
83 list-style-type: none;
84 margin: 0; }
84 margin: 0; }
85
85
86 /*.MnuHorizontal{
86 /*.MnuHorizontal{
87 display: -webkit-box;
87 display: -webkit-box;
88 -webkit-box-orient:horizontal; }
88 -webkit-box-orient:horizontal; }
89
89
90 .MnuHorizontal a{
90 .MnuHorizontal a{
91 display:block;
91 display:block;
92 padding:10px;
92 padding:10px;
93 -webkit-box-flex:1;
93 -webkit-box-flex:1;
94 text-align:center; }*/
94 text-align:center; }*/
95
95
96 /****************************************************************************************/
96 /****************************************************************************************/
97 /****** MENU DE NAVEGACION DE PERFILES *************/
97 /****** MENU DE NAVEGACION DE PERFILES *************/
98 /****************************************************************************************/
98 /****************************************************************************************/
99 #infoProfiles {
99 #infoProfiles {
100 float: left;
100 float: left;
101 width: 300px;
101 width: 300px;
102 margin: 0px;
102 margin: 0px;
103 padding: 2px 0px;
103 padding: 2px 0px;
104 border: 0px solid #1cc !important; }
104 border: 0px solid #1cc !important; }
105
105
106 #infoProfiles label {
106 #infoProfiles label {
107 padding: 10px 10px 10px 12px;
107 padding: 10px 10px 10px 12px;
108 margin: 10px 0; }
108 margin: 10px 0; }
109
109
110 #infoProfiles select {
110 #infoProfiles select {
111 padding: 4px 0px; margin: 0;
111 padding: 4px 0px; margin: 0;
112 font-family: 'Droid Sans', sans-serif;
112 font-family: 'Droid Sans', sans-serif;
113 font-size: 12px;
113 font-size: 12px;
114 letter-spacing: 0.029em;
114 letter-spacing: 0.029em;
115 width: 200px; }
115 width: 200px; }
116
116
117 #mnuProfiles {
117 #mnuProfiles {
118 margin: 0;
118 margin: 0;
119 float: right;
119 float: right;
120 padding: 2px 10px;
120 padding: 2px 10px;
121 border: 0px solid #1494F6 !important; }
121 border: 0px solid #1494F6 !important; }
122
122
123 #mnuProfiles ul {
123 #mnuProfiles ul {
124 list-style: none;
124 list-style: none;
125 list-style-type: none;
125 list-style-type: none;
126 margin: 0;
126 margin: 0;
127 padding-left: 20px;
127 padding-left: 20px;
128 border: 0px solid #f00 !important; }
128 border: 0px solid #f00 !important; }
129
129
130 #mnuProfiles li {
130 #mnuProfiles li {
131 width: 80px;
131 width: 80px;
132 float: left;
132 float: left;
133 padding: 2px;
133 padding: 2px;
134 border: 0px solid #c55 !important; }
134 border: 0px solid #c55 !important; }
135
135
136 #mnuProfiles a {
136 #mnuProfiles a {
137 font-weight: normal;
137 font-weight: normal;
138 color: #1494F6;
138 color: #1494F6;
139 display: block;
139 display: block;
140 text-align: center;
140 text-align: center;
141 border-bottom: 1px solid #1494F6 !important;
141 border-bottom: 1px solid #1494F6 !important;
142 text-decoration: none;
142 text-decoration: none;
143 padding: 0px 4px;
143 padding: 0px 4px;
144 line-height: 18px;
144 line-height: 18px;
145 margin: 6px; }
145 margin: 6px; }
146
146
147 /****************************************************************************************/
147 /****************************************************************************************/
148 /******** FORMULARIO DE PERFILES *************************************/
148 /******** FORMULARIO DE PERFILES *************************************/
149 /****************************************************************************************/
149 /****************************************************************************************/
150 #divProfile {
150 #divProfile {
151 margin: 10px 0px;
151 margin: 10px 0px;
152 padding: 10px 10px;
152 padding: 10px 10px;
153 width: 500px;
153 width: 500px;
154 border: 0px solid #dff !important; }
154 border: 0px solid #dff !important; }
155
155
156 #divPattern textarea,input[type=text],label,input[type=file],input[type=button],input[type=submit] {
156 #divPattern textarea,input[type=text],label,input[type=file],input[type=button],input[type=submit] {
157 font-family: 'Open Sans', sans-serif;
157 font-family: 'Open Sans', sans-serif;
158 font-size: inherit; }
158 font-size: inherit; }
159
159
160 .antenna, .NewAntenna {
160 .antenna, .NewAntenna {
161 box-shadow: 1px 1px 2px #666;
161 box-shadow: 1px 1px 2px #666;
162 padding: 5px;
162 padding: 5px;
163 margin: 10px auto;
163 margin: 10px auto;
164 width: 520px;
164 width: 520px;
165 display: block;
165 display: block;
166 border: 0px solid #fee !important; }
166 border: 0px solid #fee !important; }
167
167
168 .antenna {
168 .antenna {
169 width: 520px; }
169 width: 520px; }
170
170
171 .NewAntenna {
171 .NewAntenna {
172 width: 620px; }
172 width: 620px; }
173
173
174 .flsAntenna, .NewFlsAntenna {
174 .flsAntenna, .NewFlsAntenna {
175 margin: 0;
175 margin: 0;
176 padding: 0px;
176 padding: 0px;
177 border: 1px solid #fee !important;
177 border: 1px solid #fee !important;
178 width: 510px; }
178 width: 510px; }
179
179
180 .flsAntenna {
180 .flsAntenna {
181 width: 510px; }
181 width: 510px; }
182
182
183 .NewFlsAntenna {
183 .NewFlsAntenna {
184 width: 610px; }
184 width: 610px; }
185
185
186 .legendAntenna {
186 .legendAntenna {
187 font-family: 'Roboto Condensed', sans-serif;
187 font-family: 'Roboto Condensed', sans-serif;
188 font-size: inherit;
188 font-size: inherit;
189 text-align: center;
189 text-align: center;
190 margin-left: 10px; }
190 margin-left: 10px; }
191
191
192 .infoAntenna {
192 .infoAntenna {
193 width: 480px;
193 width: 500px;
194 float: left;
194 float: left;
195 border: 0px solid #f00 !important; }
195 border: 0px solid #f00 !important; }
196
196
197 .overJRO {
197 .overJRO {
198 width: 250px;
198 width: 250px;
199 float: left;
199 float: left;
200 margin: 0px 5px;
200 margin: 0px 5px;
201 border: 0px solid #1cc !important; }
201 border: 0px solid #1cc !important; }
202
202
203 .divAntenna {
203 .divAntenna {
204 width: 220px;
204 width: 220px;
205 float: left;
205 float: left;
206 margin: 10px;
206 margin: 10px;
207 border: 0px solid #fcc !important; }
207 border: 0px solid #fcc !important; }
208
208
209 .NewDivAntenna {
209 .NewDivAntenna {
210 width: 290px;
210 width: 290px;
211 float: left;
211 float: left;
212 margin: 10px;
212 margin: 10px;
213 border: 0px solid #fcc !important; }
213 border: 0px solid #fcc !important; }
214
214
215 .titleField {
215 .titleField {
216 display: block;
216 display: block;
217 text-align: center; }
217 text-align: center; }
218
218
219 .txtAntenna, .view-textAntenna {
219 .txtAntenna, .view-textAntenna {
220 width: 175px;
220 width: 175px;
221 max-width: 180px;
221 max-width: 180px;
222 height: 160px;
222 height: 160px;
223 max-height: 165px;
223 max-height: 165px;
224 background: #fdfdfb;
224 background: #fdfdfb;
225 border: 2px solid #eee !important;
225 border: 2px solid #eee !important;
226 text-align: justify;
226 text-align: justify;
227 margin: 0 auto;
227 margin: 0 auto;
228 line-height: 20px; }
228 line-height: 20px; }
229
229
230 .txtAntenna {
230 .txtAntenna {
231 padding: 4px;
231 padding: 4px;
232 }
232 }
233
233
234 .view-textAntenna {
234 .view-textAntenna {
235 padding: 2px;
235 padding: 2px;
236 font-family: "Ubuntu";
236 font-family: "Ubuntu";
237 font-size: inherit; }
237 font-size: inherit; }
238
238
239 .boxAntenna {
239 .boxAntenna {
240 width: 280px;
240 width: 280px;
241 border: 2px solid #eee !important;
241 border: 2px solid #eee !important;
242 text-align: center;
242 text-align: center;
243 display: block;
243 display: block;
244 float: left;
244 float: left;
245 margin: 0;
245 margin: 0;
246 padding: 0; }
246 padding: 0; }
247
247
248 .lineInputs {
248 .lineInputs {
249 width: 262px;
249 width: 262px;
250 text-align: center;
250 text-align: center;
251 line-height: 18px;
251 line-height: 18px;
252 padding: 0;
252 padding: 0;
253 height: 20px;
253 height: 20px;
254 margin: 0 auto;
254 margin: 0 auto;
255 display: block;
255 display: block;
256 border: 0px solid #1cc !important; }
256 border: 0px solid #1cc !important; }
257
257
258 .lineInputs label {
258 .lineInputs label {
259 float: left;
259 float: left;
260 margin: 0px 2px;
260 margin: 0px 2px;
261 border: 0px solid #bbb !important; }
261 border: 0px solid #bbb !important; }
262
262
263 .divValuesAntenna {
263 .divValuesAntenna {
264 width: 230px;
264 width: 230px;
265 border: 0px solid #bbb !important;
265 border: 0px solid #bbb !important;
266 float: left;
266 float: left;
267 display: block;
267 display: block;
268 margin: 0 auto; }
268 margin: 0 auto; }
269
269
270 .divValuesAntenna input[type=text] {
270 .divValuesAntenna input[type=text] {
271 width: 18px;
271 width: 18px;
272 border: 0px;
272 border: 0px;
273 border-bottom: 1px solid #666 !important;
273 border-bottom: 1px solid #666 !important;
274 line-height: 20px; }
274 line-height: 20px; }
275
275
276 .lblSign {
276 .lblSign {
277 width: 8px;
277 width: 8px;
278 font-family: 'Roboto Condensed', sans-serif;
278 font-family: 'Roboto Condensed', sans-serif;
279 font-size: 1.1em;
279 font-size: 1.1em;
280 color: #666; }
280 color: #666; }
281
281
282 #lblSignLeft, #lblSignRight {
282 #lblSignLeft, #lblSignRight {
283 margin: 0;
283 margin: 0;
284 line-height: 18px;
284 line-height: 18px;
285 height: 20px;
285 height: 20px;
286 float: left;
286 float: left;
287 padding: 0; }
287 padding: 0; }
288
288
289 .divTx {
289 .divTx {
290 display: block;
290 display: block;
291 float: left;
291 float: left;
292 margin: 10px;
292 margin: 10px;
293 border: 0px solid #f00 !important; }
293 border: 0px solid #f00 !important; }
294
294
295 .divTx label {
295 .divTx label {
296 display: block; }
296 display: block; }
297
297
298 .divTx textarea {
298 .divTx textarea {
299 width: 100px;
299 width: 100px;
300 max-width: 100px;
300 max-width: 100px;
301 height: 160px;
301 height: 160px;
302 max-height: 165px;
302 max-height: 165px;
303 text-align: justify;
303 text-align: justify;
304 border: 2px solid #eee !important;
304 border: 2px solid #eee !important;
305 font-family: "Ubuntu";
305 font-family: "Ubuntu";
306 font-size: inherit;
306 font-size: inherit;
307 line-height: 20px; }
307 line-height: 20px; }
308
308
309 .divTx p {
309 .divTx p {
310 width: 100px;
310 width: 100px;
311 max-width: 105px;
311 max-width: 105px;
312 height: 160px;
312 height: 160px;
313 max-height: 165px;
313 max-height: 165px;
314 background: #fdfdfb;
314 background: #fdfdfb;
315 padding: 2px;
315 padding: 2px;
316 border: 1px solid #eee !important;
316 border: 1px solid #eee !important;
317 font-family: 'Ubuntu', sans-serif;
317 font-family: 'Ubuntu', sans-serif;
318 font-size: inherit;
318 font-size: inherit;
319 text-align: justify;
319 text-align: justify;
320 margin: 0 auto;
320 margin: 0 auto;
321 line-height: 20px; }
321 line-height: 20px; }
322
322
323 .divUes {
323 .divUes {
324 display: block;
324 display: block;
325 margin: 10px; }
325 margin: 10px; }
326
326
327 .divUes input[type=text] {
327 .divUes input[type=text] {
328 width: 240px;
328 width: 240px;
329 max-width: 240px;
329 max-width: 240px;
330 font-family: 'Ubuntu', sans-serif;
330 font-family: 'Ubuntu', sans-serif;
331 font-size: inherit; }
331 font-size: inherit; }
332
332
333 .overJRO img {
333 .overJRO img {
334 width: 400px;
334 width: 400px;
335 height: 200px;
335 height: 200px;
336 text-align: center;
336 text-align: center;
337 vertical-align: middle;
337 vertical-align: middle;
338 margin: 40px 5px 5px 5px;
338 margin: 40px 5px 5px 5px;
339 display: block;
339 display: block;
340 background: #fdfdfb;
340 background: #fdfdfb;
341 border: 1px solid #eee !important; }
341 border: 1px solid #eee !important; }
342
342
343 .overJRO a {
343 .overJRO a {
344 text-align: center;
344 text-align: center;
345 margin: 0 auto;
345 margin: 0 auto;
346 display: block; }
346 display: block; }
347
347
348 /****************************************************************************************/
348 /****************************************************************************************/
349 /****** MENU DE NAVEGACION DE PATRONES **********************************/
349 /****** MENU DE NAVEGACION DE PATRONES **********************************/
350 /****************************************************************************************/
350 /****************************************************************************************/
351 #divMnuPattern {
351 #divMnuPattern {
352 width: 280px;
352 width: 280px;
353 height: 25px;
353 height: 25px;
354 display: block;
354 display: block;
355 float: right;
355 float: right;
356 margin: 5px 40px 5px 0px;
356 margin: 5px 40px 5px 0px;
357 border: 0px solid #1cc !important; }
357 border: 0px solid #1cc !important; }
358
358
359 #divMnuPattern li {
359 #divMnuPattern li {
360 float: right;
360 float: right;
361 display: block;
361 display: block;
362 width: 60px;
362 width: 60px;
363 border: 0px solid #2cc !important; }
363 border: 0px solid #2cc !important; }
364
364
365 #divMnuPattern a {
365 #divMnuPattern a {
366 display: block;
366 display: block;
367 line-height: 22px;
367 line-height: 22px;
368 text-decoration: none;
368 text-decoration: none;
369 padding: 0px 5px;
369 padding: 0px 5px;
370 margin: 0px 2px;
370 margin: 0px 2px;
371 text-align: center;
371 text-align: center;
372 color: #1494F6;
372 color: #1494F6;
373 border-bottom: 1px solid #1494F6 !important; }
373 border-bottom: 1px solid #1494F6 !important; }
374
374
375 #infoPattern {
375 #infoPattern {
376 display: block;
376 display: block;
377 margin: 0px 25px;
377 margin: 0px 25px;
378 border: 0px solid #1494f6 !important; }
378 border: 0px solid #1494f6 !important; }
379
379
380 #navPatterns {
380 #navPatterns {
381 margin: 0 auto;
381 margin: 0 auto;
382 width: 700px;
382 width: 700px;
383 height: 30px;
383 height: 30px;
384 border: 0px solid #d00 !important;
384 border: 0px solid #d00 !important;
385 font-family: 'Ubuntu', sans-serif;
385 font-family: 'Ubuntu', sans-serif;
386 font-size: 14px;
386 font-size: 14px;
387 padding: 5px 0px; }
387 padding: 5px 0px; }
388
388
389 #navPatternList {
389 #navPatternList {
390 margin: 0 auto;
390 margin: 0 auto;
391 border: 0px solid #ecc !important; }
391 border: 0px solid #ecc !important; }
392
392
393 #navPatternList ul {
393 #navPatternList ul {
394 list-style: none;
394 list-style: none;
395 list-style-type: none;
395 list-style-type: none;
396 margin: 0; }
396 margin: 0; }
397
397
398 #navPatternList ul li {
398 #navPatternList ul li {
399 float: left;
399 float: left;
400 width: 50px;
400 width: 50px;
401 border: 1px solid #eee !important; }
401 border: 1px solid #eee !important; }
402
402
403 #navPatternList a {
403 #navPatternList a {
404 width: 50px;
404 width: 50px;
405 display: block;
405 display: block;
406 text-align: center;
406 text-align: center;
407 line-height: 30px;
407 line-height: 30px;
408 padding: 1px 0px;
408 padding: 1px 0px;
409 border: 0px solid #1cc !important; }
409 border: 0px solid #1cc !important; }
410
410
411 .lnkPattern {
411 .lnkPattern {
412 background-color: #ccc !important;
412 background-color: #ccc !important;
413 color: #eee; }
413 color: #eee; }
414
414
415 .lnkPatternSelected {
415 .lnkPatternSelected {
416 background-color: #2cc !important;
416 background-color: #2cc !important;
417 color: #fff; }
417 color: #fff; }
418
418
419 .divListofPatterns {
419 .divListofPatterns {
420 width: 650px;
420 width: 650px;
421 display: block;
421 display: block;
422 border: 1px solid #1cc !important;
422 border: 1px solid #1cc !important;
423 margin: 0 auto; }
423 margin: 0 auto; }
424
424
425 .divPattern {
425 .divPattern {
426 width: 600px;
426 width: 600px;
427 display: block;
427 display: block;
428 border: 1px solid #f00 !important;
428 border: 1px solid #f00 !important;
429 margin: 2px auto; }
429 margin: 2px auto; }
430
430
431 /****************************************************************************************/
431 /****************************************************************************************/
432 /****** HEADER *************/
432 /****** HEADER *************/
433 /****************************************************************************************/
433 /****************************************************************************************/
434 header nav {
434 header nav {
435 width: 960px;
435 width: 960px;
436 margin: 0 auto;
436 margin: 0 auto;
437 height: 100%;
437 height: 100%;
438 border: 0px solid #1cc !important; }
438 border: 0px solid #1cc !important; }
439
439
440 header nav a {
440 header nav a {
441 font-family: 'Roboto Condensed', sans-serif;
441 font-family: 'Roboto Condensed', sans-serif;
442 font-size: 1.98em;
442 font-size: 1.98em;
443 text-transform: uppercase;
443 text-transform: uppercase;
444 width: 232px;
444 width: 232px;
445 padding: 2px;
445 padding: 2px;
446 text-align: center;
446 text-align: center;
447 border: 1px solid #ddd !important;
447 border: 1px solid #ddd !important;
448 box-shadow: 1px 1px 2px #ddd;
448 box-shadow: 1px 1px 2px #ddd;
449 display: block;
449 display: block;
450 float: left;
450 float: left;
451 height: 45px;
451 height: 45px;
452 text-decoration: none;
452 text-decoration: none;
453 background: #eee;
453 background: #eee;
454 line-height: 45px;
454 line-height: 45px;
455 color: #15425d;
455 color: #15425d;
456 margin: 0px 1px; }
456 margin: 0px 1px; }
457
457
458 header nav a.selected {
458 header nav a.selected {
459 background: #666;
459 background: #666;
460 color: #fff; }
460 color: #fff; }
461
461
462 /****************************************************************************************/
462 /****************************************************************************************/
463 /****** FOOTER *************/
463 /****** FOOTER *************/
464 /****************************************************************************************/
464 /****************************************************************************************/
465 footer p {
465 footer p {
466 font-family: 'Roboto Condensed', sans-serif;
466 font-family: 'Roboto Condensed', sans-serif;
467 font-size: 0.98em; } No newline at end of file
467 font-size: 0.98em; }
@@ -1,38 +1,73
1 /**
1 /**
2 * @author Jose Antonio Sal y Rosas Celi
2 * @author Jose Antonio Sal y Rosas Celi
3 * @contact: jose.salyrosas@jro.igp.gob.pe, arturo.jasyrc@gmail.com
3 * @contact: jose.salyrosas@jro.igp.gob.pe, arturo.jasyrc@gmail.com
4 */
4 */
5
5
6 $(document).on('ready',function(){
6 $(document).on('ready',function(){
7 $('#listProfiles').change(function() {
7 $('#listProfiles').change(function() {
8 if($(this).val() != -1){
8 if($(this).val() != -1){
9 location.href = "/abscontrol/view/" + $(this).val();
9 location.href = "/abscontrol/view/" + $(this).val();
10 }
10 }
11 });
11 });
12 $('#lnkAdd').click(function() {
12 $('#lnkAdd').click(function() {
13 profile_id = $("#profile_id").val();
13 profile_id = $("#profile_id").val();
14 location.href = "/abscontrol/" + profile_id + "/add/";
14 location.href = "/abscontrol/" + profile_id + "/add/";
15 });
15 });
16 $('#lnkSave').click(function() {
16 $('#lnkSave').click(function() {
17 $('#frmPattern').submit();
17 $('#frmPattern').submit();
18 });
19 $('#lnkSavePattern').click(function() {
20 valueAntennaUp = "";
21 valueAntennaDown = "";
22 for(i=0; i<=7; i++){
23 if(i == 0){
24 valueAntennaUp += "[";
25 valueAntennaDown += "[";
26 }else{
27 valueAntennaUp += ",";
28 valueAntennaDown += ",";
29 }
30 for(j=0; j<=7; j++){
31 if(j == 0){
32 valueAntennaUp += "[";
33 valueAntennaDown += "[";
34 }
35 valueAntennaUp += $("input[id=txtUnitAntennaUp_"+i+"_"+j+"]").val();
36 valueAntennaDown += $("input[id=txtUnitAntennaDown_"+i+"_"+j+"]").val();
37 if(j != 7){
38 valueAntennaUp += ",";
39 valueAntennaDown += ",";
40 }else{
41 valueAntennaUp += "]";
42 valueAntennaDown += "]";
43 }
44 }
45 if(i == 7){
46 valueAntennaUp += "]";
47 valueAntennaDown += "]";
48 }
49 }
50 $('input[name=txtAntennaUp]').attr("value",valueAntennaUp);
51 $('input[name=txtAntennaDown]').attr("value",valueAntennaDown);
52 $('#frmPattern').submit();
18 });
53 });
19 $('#lnkCancel').click(function() {
54 $('#lnkCancel').click(function() {
20 if ($("#pattern_id").val() == 0){
55 if ($("#pattern_id").val() == 0){
21 location.href = "/abscontrol/edit/" + $("#profile_id").val();
56 location.href = "/abscontrol/edit/" + $("#profile_id").val();
22 }else{
57 }else{
23 //location.href="/abscontrol/" + $("#profile_id").val() + "/view/" + $("#pattern_id").val();
58 //location.href="/abscontrol/" + $("#profile_id").val() + "/view/" + $("#pattern_id").val();
24 location.href = "/abscontrol/edit/" + $("#profile_id").val();
59 location.href = "/abscontrol/edit/" + $("#profile_id").val();
25 }
60 }
26 });
61 });
27 $('#lnkExport').click(function(){
62 $('#lnkExport').click(function(){
28 profile_id = $(this).attr("alt");
63 profile_id = $(this).attr("alt");
29 location.href = "/abscontrol/export/" + profile_id + "/";
64 location.href = "/abscontrol/export/" + profile_id + "/";
30 });
65 });
31 $('#lnkSendFile').click(function(){
66 $('#lnkSendFile').click(function(){
32 profile_id = $(this).attr("alt");
67 profile_id = $(this).attr("alt");
33 location.href = "/abscontrol/send/" + profile_id + "/";
68 location.href = "/abscontrol/send/" + profile_id + "/";
34 });
69 });
35 $('#lnkUpdateProfile').click(function(){
70 $('#lnkUpdateProfile').click(function(){
36 $('#frmProfile').submit();
71 $('#frmProfile').submit();
37 });
72 });
38 }); No newline at end of file
73 });
@@ -1,91 +1,109
1 {% extends "abscontrol/index.html" %}
1 {% extends "abscontrol/index.html" %}
2 {% block title %}ABS CONTROL:::::NEW PROFILE{% endblock %}
2 {% block title %}ABS CONTROL:::::NEW PROFILE{% endblock %}
3 {% block scripting %}
3 {% block scripting %}
4 <script src="/static/static/js/patterns.js"></script>
4 <script src="/static/static/js/patterns.js"></script>
5 {% endblock %}
5 {% endblock %}
6 {% block maincolumn%}
6 {% block maincolumn%}
7 <div id="maincolumn">
7 <div id="maincolumn">
8 <form action="/abscontrol/{{ profile_id }}/save/" method="post" id="frmPattern">
8 <!-- <form action="/abscontrol/{{ profile_id }}/save/" method="post" id="frmPattern"> -->
9 <form action="/abscontrol/upgrade/{{ profile_id }}/" method="post" id="frmPattern">
9 <div id="divProfile">
10 <div id="divProfile">
10 <label for="lblName">Profile: {{ profile_name }}</label>
11 <label for="lblName">Profile: {{ profile_name }}</label>
11 </div>
12 </div>
12 {% block mnuPattern %}
13 {% block mnuPattern %}
13 <div class="divMenu" id="divMnuPattern">
14 <div class="divMenu" id="divMnuPattern">
14 <nav class="MnuHorizontal">
15 <nav class="MnuHorizontal">
15 <ul class="mnu" id="mnuPattern">
16 <ul class="mnu" id="mnuPattern">
16 <li><a href="#" id="lnkSave">Save</a></li>
17 <li><a href="#" id="lnkSavePattern">Save</a></li>
17 </ul>
18 </ul>
18 </nav>
19 </nav>
19 </div>
20 </div>
20 <div class="cleardivs"></div>
21 <div class="cleardivs"></div>
21 {% endblock %}
22 {% endblock %}
22 <div id="divPattern">
23 <div id="divPattern">
23 <div id="antennaUp" class="NewAntenna">
24 <div id="antennaUp" class="NewAntenna">
24 <fieldset class="NewFlsAntenna">
25 <fieldset class="NewFlsAntenna">
25 <legend class="legendAntenna">UP</legend>
26 <legend class="legendAntenna">UP</legend>
26 <div class="NewDivAntenna">
27 <div class="NewDivAntenna">
27 <label for="lblAntenna" class="titleField">Antenna</label>
28 <label for="lblAntenna" class="titleField">Antenna</label>
28 <div class="boxAntenna" id="divtxtAntenna">
29 <div class="boxAntenna" id="divtxtAntenna">
29 {% for i in range %}
30 {% for i in range %}
30 <div class="lineInputs">
31 <div class="lineInputs">
31 {% if i == 0 %}<label for="lblSignLeft" class="lblSign" id="lblSignLeft">[</label>{% endif %}
32 {% if i == 0 %}<label for="lblSignLeft" class="lblSign" id="lblSignLeft">[</label>{% endif %}
32 <label for="lblSign" class="lblSign">[</label>
33 <label for="lblSign" class="lblSign">[</label>
33 <div class="divValuesAntenna">
34 <div class="divValuesAntenna">
34 {% for j in range %}
35 {% for j in range %}
35 <input type="text" name="txtUnitAntenna" class="txtUnitAntenna" value="0.5" />
36 <input type="text" name="txtUnitAntennaUp" class="txtUnitAntenna" id="txtUnitAntennaUp_{{ i }}_{{ j }}" value="0.5" />
36 {% if j != 7 %},{% endif %}
37 {% if j != 7 %},{% endif %}
37 {% endfor %}
38 {% endfor %}
38 </div>
39 </div>
39 <label for="lblSign" class="lblSign">]</label>
40 <label for="lblSign" class="lblSign">]</label>
40 {% if i == 7 %}<label for="lblSignRight" class="lblSign" id="lblSignRight">]</label>{% endif %}
41 {% if i == 7 %}<label for="lblSignRight" class="lblSign" id="lblSignRight">]</label>{% endif %}
41 </div>
42 </div>
42 {% endfor %}
43 {% endfor %}
43 </div>
44 </div>
44 </div>
45 </div>
45 <div class="divTx">
46 <div class="divTx">
46 <label for="lblTx" class="titleField">Tx</label>
47 <label for="lblTx" class="titleField">Tx</label>
47 <textarea name="txtTxUp" class="txtTR" cols="18" rows="8">{{ txtTxUp }}</textarea>
48 <textarea name="txtTxUp" class="txtTR" cols="18" rows="8">{{ txtTxUp }}</textarea>
48 </div>
49 </div>
49 <div class="divTx">
50 <div class="divTx">
50 <label for="lblRx" class="titleField" >Rx</label>
51 <label for="lblRx" class="titleField" >Rx</label>
51 <textarea name="txtRxUp" class="txtTR" cols="18" rows="8">{{ txtRxUp }}</textarea>
52 <textarea name="txtRxUp" class="txtTR" cols="18" rows="8">{{ txtRxUp }}</textarea>
52 </div>
53 </div>
53 <div class="cleardivs"></div>
54 <div class="cleardivs"></div>
54 <div class="divUes">
55 <div class="divUes">
55 <label for="lblUes">Ues:</label>
56 <label for="lblUes">Ues:</label>
56 <input type="text" name="txtUesUp" value="{{ txtUes }}" />
57 <input type="text" name="txtUesUp" value="{{ txtUes }}" />
57 <input type="checkbox" name="chkOnlyRxUp" value="" />
58 <input type="checkbox" name="chkOnlyRxUp" value="" />
58 <label for="lblOnlyRx">Only RX</label>
59 <label for="lblOnlyRx">Only RX</label>
59 </div>
60 </div>
60 </fieldset>
61 </fieldset>
62 <input type="hidden" name="txtAntennaUp" value="" />
61 </div>
63 </div>
62
64
63 <div id="antennaDown" class="NewAntenna">
65 <div id="antennaDown" class="NewAntenna">
64 <fieldset class="NewFlsAntenna">
66 <fieldset class="NewFlsAntenna">
65 <legend class="legendAntenna">DOWN</legend>
67 <legend class="legendAntenna">DOWN</legend>
66 <div class="divAntenna">
68 <div class="NewDivAntenna">
67 <label for="lblAntenna">Antenna</label>
69 <label for="lblAntenna" class="titleField">Antenna</label>
68 <textarea name="txtAntennaDown" class="txtAntenna" cols="38" rows="8">{{ txtAntenna }}</textarea>
70 <div class="boxAntenna" id="divtxtAntenna">
71 {% for i in range %}
72 <div class="lineInputs">
73 {% if i == 0 %}<label for="lblSignLeft" class="lblSign" id="lblSignLeft">[</label>{% endif %}
74 <label for="lblSign" class="lblSign">[</label>
75 <div class="divValuesAntenna">
76 {% for j in range %}
77 <input type="text" name="txtUnitAntennaDown" class="txtUnitAntenna" id="txtUnitAntennaDown_{{ i }}_{{ j }}" value="0.5" />
78 {% if j != 7 %},{% endif %}
79 {% endfor %}
80 </div>
81 <label for="lblSign" class="lblSign">]</label>
82 {% if i == 7 %}<label for="lblSignRight" class="lblSign" id="lblSignRight">]</label>{% endif %}
83 </div>
84 {% endfor %}
85 </div>
69 </div>
86 </div>
70 <div class="divTx">
87 <div class="divTx">
71 <label for="lblTx">Tx</label>
88 <label for="lblTx">Tx</label>
72 <textarea name="txtTxDown" class="txtTR" cols="15" rows="8">{{ txtTxDown }}</textarea>
89 <textarea name="txtTxDown" class="txtTR" cols="15" rows="8">{{ txtTxDown }}</textarea>
73 </div>
90 </div>
74 <div class="divTx">
91 <div class="divTx">
75 <label for="lblRx">Rx</label>
92 <label for="lblRx">Rx</label>
76 <textarea name="txtRxDown" class="txtTR" cols="15" rows="8">{{ txtRxDown }}</textarea>
93 <textarea name="txtRxDown" class="txtTR" cols="15" rows="8">{{ txtRxDown }}</textarea>
77 </div>
94 </div>
78 <div class="cleardivs"></div>
95 <div class="cleardivs"></div>
79 <div class="divUes">
96 <div class="divUes">
80 <label for="lblUes">Ues:</label>
97 <label for="lblUes">Ues:</label>
81 <input type="text" name="txtUesDown" value="{{ txtUes }}" />
98 <input type="text" name="txtUesDown" value="{{ txtUes }}" />
82 <input type="checkbox" name="chkOnlyRxDown" value="" />
99 <input type="checkbox" name="chkOnlyRxDown" value="" />
83 <label for="lblOnlyRx">Only RX</label>
100 <label for="lblOnlyRx">Only RX</label>
84 </div>
101 </div>
85 </fieldset>
102 </fieldset>
103 <input type="hidden" name="txtAntennaDown" value="" />
86 </div>
104 </div>
87 </div>
105 </div>
88 <input type="hidden" name="mode" value="e">
106 <input type="hidden" name="mode" value="e">
89 </form>
107 </form>
90 </div>
108 </div>
91 {% endblock %}
109 {% endblock %}
General Comments 0
You need to be logged in to leave comments. Login now