5397 |
03 May 19 |
nicklas |
1 |
<%@ page |
5397 |
03 May 19 |
nicklas |
2 |
pageEncoding="UTF-8" |
5397 |
03 May 19 |
nicklas |
3 |
session="false" |
5397 |
03 May 19 |
nicklas |
4 |
import="net.sf.basedb.core.Application" |
5397 |
03 May 19 |
nicklas |
5 |
import="net.sf.basedb.core.User" |
5397 |
03 May 19 |
nicklas |
6 |
import="net.sf.basedb.core.DbControl" |
5397 |
03 May 19 |
nicklas |
7 |
import="net.sf.basedb.core.SessionControl" |
5397 |
03 May 19 |
nicklas |
8 |
import="net.sf.basedb.clients.web.Base" |
5397 |
03 May 19 |
nicklas |
9 |
import="net.sf.basedb.clients.web.util.HTML" |
5397 |
03 May 19 |
nicklas |
10 |
import="net.sf.basedb.clients.web.extensions.ExtensionsControl" |
5397 |
03 May 19 |
nicklas |
11 |
import="net.sf.basedb.util.Values" |
5397 |
03 May 19 |
nicklas |
12 |
import="net.sf.basedb.util.formatter.WellCoordinateFormatter" |
5406 |
08 May 19 |
nicklas |
13 |
import="java.util.regex.Pattern" |
5406 |
08 May 19 |
nicklas |
14 |
import="java.util.regex.Matcher" |
5397 |
03 May 19 |
nicklas |
15 |
%> |
5397 |
03 May 19 |
nicklas |
16 |
<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %> |
5397 |
03 May 19 |
nicklas |
17 |
<%@ taglib prefix="m" uri="/WEB-INF/menu.tld" %> |
5397 |
03 May 19 |
nicklas |
18 |
<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %> |
5397 |
03 May 19 |
nicklas |
19 |
<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %> |
5397 |
03 May 19 |
nicklas |
20 |
<% |
5397 |
03 May 19 |
nicklas |
21 |
final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true); |
5397 |
03 May 19 |
nicklas |
22 |
final String ID = sc.getId(); |
5397 |
03 May 19 |
nicklas |
23 |
final float scale = Base.getScale(sc); |
5397 |
03 May 19 |
nicklas |
24 |
final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie"); |
5397 |
03 May 19 |
nicklas |
25 |
DbControl dc = null; |
5397 |
03 May 19 |
nicklas |
26 |
try |
5397 |
03 May 19 |
nicklas |
27 |
{ |
5397 |
03 May 19 |
nicklas |
28 |
dc = sc.newDbControl(); |
5397 |
03 May 19 |
nicklas |
29 |
final User user = User.getById(dc, sc.getLoggedInUserId()); |
5406 |
08 May 19 |
nicklas |
30 |
String defaultPrefix = sc.getUserClientSetting("reggie.mips.last-import-prefix"); |
5406 |
08 May 19 |
nicklas |
31 |
if (defaultPrefix == null) |
5406 |
08 May 19 |
nicklas |
32 |
{ |
5406 |
08 May 19 |
nicklas |
33 |
// Generate a default prefix by using first letters from the logged in user's name |
5406 |
08 May 19 |
nicklas |
34 |
defaultPrefix = ""; |
5406 |
08 May 19 |
nicklas |
35 |
Pattern p = Pattern.compile("\\b\\w"); |
5406 |
08 May 19 |
nicklas |
36 |
Matcher m = p.matcher(user.getName()); |
5406 |
08 May 19 |
nicklas |
37 |
while (m.find()) defaultPrefix += m.group(); |
5406 |
08 May 19 |
nicklas |
38 |
if (defaultPrefix.length() < 2) |
5406 |
08 May 19 |
nicklas |
39 |
{ |
5406 |
08 May 19 |
nicklas |
40 |
// If the prefix is too whort we take the first two letters |
5406 |
08 May 19 |
nicklas |
41 |
defaultPrefix = user.getName().substring(0, 2); |
5406 |
08 May 19 |
nicklas |
42 |
} |
5406 |
08 May 19 |
nicklas |
43 |
defaultPrefix = defaultPrefix.toUpperCase() + "_"; |
5406 |
08 May 19 |
nicklas |
44 |
} |
5397 |
03 May 19 |
nicklas |
45 |
%> |
5397 |
03 May 19 |
nicklas |
46 |
<base:page type="default"> |
5397 |
03 May 19 |
nicklas |
47 |
<base:head |
5447 |
24 May 19 |
nicklas |
48 |
scripts="~../reggie-2.js,~import_plates.js,~plate.js" |
5397 |
03 May 19 |
nicklas |
49 |
styles="path.css,toolbar.css,~../css/reggie-2.css,~../css/plate.css" |
5397 |
03 May 19 |
nicklas |
50 |
> |
5397 |
03 May 19 |
nicklas |
51 |
<style> |
5397 |
03 May 19 |
nicklas |
52 |
|
5397 |
03 May 19 |
nicklas |
53 |
/* Empty wells should have greyed, italic text */ |
5397 |
03 May 19 |
nicklas |
54 |
.well.empty |
5397 |
03 May 19 |
nicklas |
55 |
{ |
5397 |
03 May 19 |
nicklas |
56 |
text-align: center; |
5397 |
03 May 19 |
nicklas |
57 |
vertical-align: middle; |
5397 |
03 May 19 |
nicklas |
58 |
font-style: italic; |
5397 |
03 May 19 |
nicklas |
59 |
color: #999999; |
5397 |
03 May 19 |
nicklas |
60 |
} |
5397 |
03 May 19 |
nicklas |
61 |
|
5397 |
03 May 19 |
nicklas |
62 |
.well .missing |
5397 |
03 May 19 |
nicklas |
63 |
{ |
5397 |
03 May 19 |
nicklas |
64 |
font-style: italic; |
5397 |
03 May 19 |
nicklas |
65 |
} |
5397 |
03 May 19 |
nicklas |
66 |
|
5447 |
24 May 19 |
nicklas |
67 |
.comment |
5397 |
03 May 19 |
nicklas |
68 |
{ |
5447 |
24 May 19 |
nicklas |
69 |
font-style: italic; |
5397 |
03 May 19 |
nicklas |
70 |
} |
5600 |
13 Sep 19 |
nicklas |
71 |
.mips-panel |
5397 |
03 May 19 |
nicklas |
72 |
{ |
5447 |
24 May 19 |
nicklas |
73 |
color: #0000C8; |
5397 |
03 May 19 |
nicklas |
74 |
} |
5401 |
07 May 19 |
nicklas |
75 |
.volume |
5401 |
07 May 19 |
nicklas |
76 |
{ |
5401 |
07 May 19 |
nicklas |
77 |
color: #C80000; |
5401 |
07 May 19 |
nicklas |
78 |
float: right; |
5401 |
07 May 19 |
nicklas |
79 |
} |
5447 |
24 May 19 |
nicklas |
80 |
.mips-form |
5448 |
27 May 19 |
nicklas |
81 |
{} |
5403 |
08 May 19 |
nicklas |
82 |
|
5447 |
24 May 19 |
nicklas |
83 |
.mips-form span + span:before |
5447 |
24 May 19 |
nicklas |
84 |
{ |
5447 |
24 May 19 |
nicklas |
85 |
content: '−'; |
5447 |
24 May 19 |
nicklas |
86 |
padding: 0 0.25em; |
5447 |
24 May 19 |
nicklas |
87 |
} |
5447 |
24 May 19 |
nicklas |
88 |
|
5403 |
08 May 19 |
nicklas |
89 |
#plateSummary |
5403 |
08 May 19 |
nicklas |
90 |
{ |
5403 |
08 May 19 |
nicklas |
91 |
margin: 0.5em; |
5403 |
08 May 19 |
nicklas |
92 |
border-width: 1px; |
5403 |
08 May 19 |
nicklas |
93 |
} |
5403 |
08 May 19 |
nicklas |
94 |
#plateSummary b |
5403 |
08 May 19 |
nicklas |
95 |
{ |
5403 |
08 May 19 |
nicklas |
96 |
display: inline-block; |
5403 |
08 May 19 |
nicklas |
97 |
background: #F0F0F0; |
5403 |
08 May 19 |
nicklas |
98 |
padding: 0.3em 0.6em; |
5403 |
08 May 19 |
nicklas |
99 |
margin-right: 0.25em; |
5403 |
08 May 19 |
nicklas |
100 |
} |
5403 |
08 May 19 |
nicklas |
101 |
#plateSummary span |
5403 |
08 May 19 |
nicklas |
102 |
{ |
5403 |
08 May 19 |
nicklas |
103 |
margin-right: 1em; |
5403 |
08 May 19 |
nicklas |
104 |
} |
5403 |
08 May 19 |
nicklas |
105 |
#plateSummary div + div |
5403 |
08 May 19 |
nicklas |
106 |
{ |
5403 |
08 May 19 |
nicklas |
107 |
border-top-width: 1px; |
5403 |
08 May 19 |
nicklas |
108 |
border-top-style: dotted; |
5403 |
08 May 19 |
nicklas |
109 |
} |
5403 |
08 May 19 |
nicklas |
110 |
#importPossible |
5403 |
08 May 19 |
nicklas |
111 |
{ |
5403 |
08 May 19 |
nicklas |
112 |
font-weight: bold; |
5403 |
08 May 19 |
nicklas |
113 |
} |
5403 |
08 May 19 |
nicklas |
114 |
#importPossible img |
5403 |
08 May 19 |
nicklas |
115 |
{ |
5403 |
08 May 19 |
nicklas |
116 |
margin-right: 0.25em; |
5403 |
08 May 19 |
nicklas |
117 |
} |
5444 |
23 May 19 |
nicklas |
118 |
|
5397 |
03 May 19 |
nicklas |
119 |
</style> |
5397 |
03 May 19 |
nicklas |
120 |
</base:head> |
5397 |
03 May 19 |
nicklas |
121 |
<base:body> |
5397 |
03 May 19 |
nicklas |
122 |
<p:path><p:pathelement |
5397 |
03 May 19 |
nicklas |
123 |
title="Reggie" href="<%="../index.jsp?ID="+ID%>" |
5397 |
03 May 19 |
nicklas |
124 |
/><p:pathelement title="Import aliquot plates for MIPs" |
5397 |
03 May 19 |
nicklas |
125 |
/></p:path> |
5397 |
03 May 19 |
nicklas |
126 |
|
5397 |
03 May 19 |
nicklas |
127 |
<div class="content"> |
5397 |
03 May 19 |
nicklas |
128 |
|
5397 |
03 May 19 |
nicklas |
129 |
<form name="reggie" id="wizard" class="wizard"> |
5397 |
03 May 19 |
nicklas |
130 |
|
5400 |
06 May 19 |
nicklas |
131 |
<div class="step" id="step-1"> |
5397 |
03 May 19 |
nicklas |
132 |
<div class="step-no">1</div> |
5397 |
03 May 19 |
nicklas |
133 |
<div class="step-title">File</div> |
5397 |
03 May 19 |
nicklas |
134 |
<div class="step-content"> |
5397 |
03 May 19 |
nicklas |
135 |
|
5397 |
03 May 19 |
nicklas |
136 |
<table class="step-form"> |
5397 |
03 May 19 |
nicklas |
137 |
<tr> |
5397 |
03 May 19 |
nicklas |
138 |
<td class="prompt">Prefix</td> |
5397 |
03 May 19 |
nicklas |
139 |
<td class="input"> |
5406 |
08 May 19 |
nicklas |
140 |
<input type="text" name="prefix" id="prefix" value="<%=HTML.encodeTags(defaultPrefix)%>" |
5397 |
03 May 19 |
nicklas |
141 |
class="required auto-init" data-auto-init="focus" data-next-focus="importfile" |
5397 |
03 May 19 |
nicklas |
142 |
style="width: 12em;" maxlength="12"> |
5397 |
03 May 19 |
nicklas |
143 |
</td> |
5397 |
03 May 19 |
nicklas |
144 |
<td class="status" id="prefix.status"></td> |
5397 |
03 May 19 |
nicklas |
145 |
<td class="help"> |
5397 |
03 May 19 |
nicklas |
146 |
<span id="prefix.message" class="message"></span> |
5399 |
06 May 19 |
nicklas |
147 |
All aliquots that are imported must have a prefix. The prefix should be |
5397 |
03 May 19 |
nicklas |
148 |
at least 2 letters followed by an underscore. |
5397 |
03 May 19 |
nicklas |
149 |
</td> |
5397 |
03 May 19 |
nicklas |
150 |
</tr> |
5397 |
03 May 19 |
nicklas |
151 |
<tr class="align-top"> |
5397 |
03 May 19 |
nicklas |
152 |
<td class="prompt">Select file</td> |
5397 |
03 May 19 |
nicklas |
153 |
<td class="input"> |
5397 |
03 May 19 |
nicklas |
154 |
<table style="width: 100%;"> |
5397 |
03 May 19 |
nicklas |
155 |
<tr> |
5397 |
03 May 19 |
nicklas |
156 |
<td> |
5397 |
03 May 19 |
nicklas |
157 |
<input class="text required" type="text" name="importfile" id="importfile" |
5397 |
03 May 19 |
nicklas |
158 |
data-name-filter="%.csv|%.xlsx" |
5397 |
03 May 19 |
nicklas |
159 |
data-directory="/home/SCANB/MIPsImportFiles" |
5397 |
03 May 19 |
nicklas |
160 |
> |
5397 |
03 May 19 |
nicklas |
161 |
</td> |
5397 |
03 May 19 |
nicklas |
162 |
<td style="padding-left: 4px; width: 7em;"> |
5397 |
03 May 19 |
nicklas |
163 |
<base:button |
5397 |
03 May 19 |
nicklas |
164 |
title="Browse…" |
5397 |
03 May 19 |
nicklas |
165 |
id="importfile.btn" |
5397 |
03 May 19 |
nicklas |
166 |
/> |
5397 |
03 May 19 |
nicklas |
167 |
</td> |
5397 |
03 May 19 |
nicklas |
168 |
</tr> |
5397 |
03 May 19 |
nicklas |
169 |
</table> |
5397 |
03 May 19 |
nicklas |
170 |
</td> |
5397 |
03 May 19 |
nicklas |
171 |
<td class="status" id="importfile.status"></td> |
5447 |
24 May 19 |
nicklas |
172 |
<td class="help" rowspan="2"> |
5397 |
03 May 19 |
nicklas |
173 |
<span id="importfile.message" class="message"></span> |
5397 |
03 May 19 |
nicklas |
174 |
Select the <b>CSV</b> or <b>Excel</b> file that contains information about DNA aliquots. |
5444 |
23 May 19 |
nicklas |
175 |
The following columns are required: <b>Name</b>, <b>Plate</b>, <b>Row</b>, |
5600 |
13 Sep 19 |
nicklas |
176 |
<b>Column</b>, <b>MIPS_Panel</b> and <b>PoolVolume</b>. |
5447 |
24 May 19 |
nicklas |
177 |
Optional columns are: <b>NormalTumor</b>, <b>Form</b>, <b>Variant</b>, |
5447 |
24 May 19 |
nicklas |
178 |
<b>VariantList</b>, <b>Screening</b> and <b>Comment</b>. All other columns are ignored. |
5402 |
07 May 19 |
nicklas |
179 |
More information <base:help helpid="net.sf.basedb.reggie.mips-import-file" /> |
5447 |
24 May 19 |
nicklas |
180 |
<div id="worksheetSection.help" style="display:none;"> |
5447 |
24 May 19 |
nicklas |
181 |
Note that it is only possible to import from one worksheet at a time. |
5447 |
24 May 19 |
nicklas |
182 |
</div> |
5397 |
03 May 19 |
nicklas |
183 |
</td> |
5397 |
03 May 19 |
nicklas |
184 |
</tr> |
5447 |
24 May 19 |
nicklas |
185 |
<tr id="worksheetSection" style="display: none;"> |
5447 |
24 May 19 |
nicklas |
186 |
<td class="subprompt">- worksheet</td> |
5397 |
03 May 19 |
nicklas |
187 |
<td class="input"> |
5397 |
03 May 19 |
nicklas |
188 |
<select name="sheet" id="sheet" class="required" style="width: auto; min-width: 10em;"></select> |
5397 |
03 May 19 |
nicklas |
189 |
</td> |
5397 |
03 May 19 |
nicklas |
190 |
<td class="status" id="sheet.status"></td> |
5397 |
03 May 19 |
nicklas |
191 |
</tr> |
5397 |
03 May 19 |
nicklas |
192 |
</table> |
5397 |
03 May 19 |
nicklas |
193 |
|
5397 |
03 May 19 |
nicklas |
194 |
<div id="platePreview" class="topborder" style="display: none;"> |
5397 |
03 May 19 |
nicklas |
195 |
<table style="margin: 0.5em auto 0 auto;"><tr><td> |
5403 |
08 May 19 |
nicklas |
196 |
<div id="plateSummary"> |
5403 |
08 May 19 |
nicklas |
197 |
<div> |
5403 |
08 May 19 |
nicklas |
198 |
<b style="width: 12em;">Summary of file</b><span id="filename"></span> |
5403 |
08 May 19 |
nicklas |
199 |
<b>Plates</b><span id="numPlates"></span> |
5403 |
08 May 19 |
nicklas |
200 |
<b>Aliquots</b><span id="numAliquots"></span> |
5403 |
08 May 19 |
nicklas |
201 |
<b>Errors</b><span id="numErrors"></span> |
5403 |
08 May 19 |
nicklas |
202 |
<b>Warnings</b><span id="numWarnings"></span> |
5403 |
08 May 19 |
nicklas |
203 |
</div> |
5403 |
08 May 19 |
nicklas |
204 |
<div> |
5403 |
08 May 19 |
nicklas |
205 |
<b style="width: 12em;">Preview of plate</b> |
5403 |
08 May 19 |
nicklas |
206 |
<span><select name="plateNames" id="plateNames" style="min-width: 15em;"></select></span> |
5403 |
08 May 19 |
nicklas |
207 |
<span id="importPossible"></span> |
5403 |
08 May 19 |
nicklas |
208 |
</div> |
5397 |
03 May 19 |
nicklas |
209 |
</div> |
5397 |
03 May 19 |
nicklas |
210 |
<table id="plate" class="plate"> |
5397 |
03 May 19 |
nicklas |
211 |
<% |
5397 |
03 May 19 |
nicklas |
212 |
int columns = 12; |
5397 |
03 May 19 |
nicklas |
213 |
int rows = 8; |
5397 |
03 May 19 |
nicklas |
214 |
WellCoordinateFormatter rowF = new WellCoordinateFormatter(true); |
5397 |
03 May 19 |
nicklas |
215 |
WellCoordinateFormatter colF = new WellCoordinateFormatter(false); |
5397 |
03 May 19 |
nicklas |
216 |
%> |
5397 |
03 May 19 |
nicklas |
217 |
<tr class="header"> |
5397 |
03 May 19 |
nicklas |
218 |
<th></th> |
5397 |
03 May 19 |
nicklas |
219 |
<% |
5397 |
03 May 19 |
nicklas |
220 |
for (int c = 0; c < columns; ++c) |
5397 |
03 May 19 |
nicklas |
221 |
{ |
5397 |
03 May 19 |
nicklas |
222 |
%> |
5397 |
03 May 19 |
nicklas |
223 |
<th class="link auto-init" id="col.<%=c%>" |
5397 |
03 May 19 |
nicklas |
224 |
data-auto-init="plate-col" data-col="<%=c%>" |
5397 |
03 May 19 |
nicklas |
225 |
title="Select/deselect all wells in this column"><%=colF.format(c)%></th> |
5397 |
03 May 19 |
nicklas |
226 |
<% |
5397 |
03 May 19 |
nicklas |
227 |
} |
5397 |
03 May 19 |
nicklas |
228 |
%> |
5397 |
03 May 19 |
nicklas |
229 |
</tr> |
5397 |
03 May 19 |
nicklas |
230 |
<tbody> |
5397 |
03 May 19 |
nicklas |
231 |
<% |
5397 |
03 May 19 |
nicklas |
232 |
for (int r = 0; r < rows; ++r) |
5397 |
03 May 19 |
nicklas |
233 |
{ |
5397 |
03 May 19 |
nicklas |
234 |
String row = rowF.format(r); |
5397 |
03 May 19 |
nicklas |
235 |
%> |
5397 |
03 May 19 |
nicklas |
236 |
<tr class="row-<%=r%>"> |
5397 |
03 May 19 |
nicklas |
237 |
<th class="link auto-init" id="row.<%=r%>" |
5397 |
03 May 19 |
nicklas |
238 |
data-auto-init="plate-row" data-row="<%=r%>" |
5397 |
03 May 19 |
nicklas |
239 |
title="Select/deselect all wells in this row"><%=row%></th> |
5397 |
03 May 19 |
nicklas |
240 |
<% |
5397 |
03 May 19 |
nicklas |
241 |
for (int c = 0; c < columns; ++c) |
5397 |
03 May 19 |
nicklas |
242 |
{ |
5397 |
03 May 19 |
nicklas |
243 |
%> |
5397 |
03 May 19 |
nicklas |
244 |
<td id="well.<%=r%>.<%=c%>" class="well empty auto-init" |
5397 |
03 May 19 |
nicklas |
245 |
data-auto-init="plate-well" data-col="<%=c%>" data-row="<%=r%>" |
5397 |
03 May 19 |
nicklas |
246 |
title="Select/deselect this well">empty</td> |
5397 |
03 May 19 |
nicklas |
247 |
<% |
5397 |
03 May 19 |
nicklas |
248 |
} |
5397 |
03 May 19 |
nicklas |
249 |
%> |
5397 |
03 May 19 |
nicklas |
250 |
</tr> |
5397 |
03 May 19 |
nicklas |
251 |
<% |
5397 |
03 May 19 |
nicklas |
252 |
} |
5397 |
03 May 19 |
nicklas |
253 |
%> |
5397 |
03 May 19 |
nicklas |
254 |
</tbody> |
5447 |
24 May 19 |
nicklas |
255 |
<tr id="pool-row" style="display: none;"> |
5444 |
23 May 19 |
nicklas |
256 |
<th colspan=<%=columns+1 %>> </th> |
5444 |
23 May 19 |
nicklas |
257 |
</tr> |
5397 |
03 May 19 |
nicklas |
258 |
</table> |
5397 |
03 May 19 |
nicklas |
259 |
<div style="margin: 0.5em; text-align: center;"> |
5397 |
03 May 19 |
nicklas |
260 |
<base:icon image="<%=home+"/images/error.png"%>" style="padding-left: 1em;" />=Error that prevent plate import |
5397 |
03 May 19 |
nicklas |
261 |
<base:icon image="<%=home+"/images/warning.png"%>" style="padding-left: 1em;" />=Warning but plate can be imported |
5397 |
03 May 19 |
nicklas |
262 |
</div> |
5397 |
03 May 19 |
nicklas |
263 |
</td></tr></table> |
5397 |
03 May 19 |
nicklas |
264 |
</div> |
5397 |
03 May 19 |
nicklas |
265 |
|
5397 |
03 May 19 |
nicklas |
266 |
|
5397 |
03 May 19 |
nicklas |
267 |
</div> |
5397 |
03 May 19 |
nicklas |
268 |
</div> |
5397 |
03 May 19 |
nicklas |
269 |
|
5397 |
03 May 19 |
nicklas |
270 |
<div id="wizard-status"></div> |
5397 |
03 May 19 |
nicklas |
271 |
|
5397 |
03 May 19 |
nicklas |
272 |
<table class="navigation" id="navigation"> |
5397 |
03 May 19 |
nicklas |
273 |
<tr> |
5397 |
03 May 19 |
nicklas |
274 |
<td><base:button id="gocancel" title="Cancel" /></td> |
5397 |
03 May 19 |
nicklas |
275 |
<td><base:button id="gonext" title="Next" image="<%=home+"/images/gonext.png"%>" /></td> |
5397 |
03 May 19 |
nicklas |
276 |
<td><base:button id="goregister" title="Register" image="<%=home+"/images/import.png"%>" /></td> |
5397 |
03 May 19 |
nicklas |
277 |
<td><base:button id="gorestart" title="Restart" image="<%=home+"/images/goback.png"%>" /></td> |
5397 |
03 May 19 |
nicklas |
278 |
<td id="gonext-message" class="message"></td> |
5397 |
03 May 19 |
nicklas |
279 |
</tr> |
5397 |
03 May 19 |
nicklas |
280 |
</table> |
5397 |
03 May 19 |
nicklas |
281 |
|
5397 |
03 May 19 |
nicklas |
282 |
</form> |
5397 |
03 May 19 |
nicklas |
283 |
</div> |
5397 |
03 May 19 |
nicklas |
284 |
</div> |
5397 |
03 May 19 |
nicklas |
285 |
</base:body> |
5397 |
03 May 19 |
nicklas |
286 |
</base:page> |
5397 |
03 May 19 |
nicklas |
287 |
<% |
5397 |
03 May 19 |
nicklas |
288 |
} |
5397 |
03 May 19 |
nicklas |
289 |
finally |
5397 |
03 May 19 |
nicklas |
290 |
{ |
5397 |
03 May 19 |
nicklas |
291 |
if (dc != null) dc.close(); |
5397 |
03 May 19 |
nicklas |
292 |
} |
5397 |
03 May 19 |
nicklas |
293 |
%> |