5359 |
12 Apr 19 |
nicklas |
1 |
<%@ page |
5359 |
12 Apr 19 |
nicklas |
2 |
pageEncoding="UTF-8" |
5359 |
12 Apr 19 |
nicklas |
3 |
session="false" |
5359 |
12 Apr 19 |
nicklas |
4 |
import="net.sf.basedb.core.User" |
5359 |
12 Apr 19 |
nicklas |
5 |
import="net.sf.basedb.core.DbControl" |
5359 |
12 Apr 19 |
nicklas |
6 |
import="net.sf.basedb.core.SessionControl" |
5359 |
12 Apr 19 |
nicklas |
7 |
import="net.sf.basedb.core.Application" |
5359 |
12 Apr 19 |
nicklas |
8 |
import="net.sf.basedb.util.Values" |
5359 |
12 Apr 19 |
nicklas |
9 |
import="net.sf.basedb.util.formatter.DateFormatter" |
5359 |
12 Apr 19 |
nicklas |
10 |
import="net.sf.basedb.util.formatter.Formatter" |
5359 |
12 Apr 19 |
nicklas |
11 |
import="net.sf.basedb.util.extensions.Extension" |
5359 |
12 Apr 19 |
nicklas |
12 |
import="net.sf.basedb.clients.web.Base" |
5359 |
12 Apr 19 |
nicklas |
13 |
import="net.sf.basedb.clients.web.util.HTML" |
5359 |
12 Apr 19 |
nicklas |
14 |
import="net.sf.basedb.clients.web.extensions.ExtensionsControl" |
5359 |
12 Apr 19 |
nicklas |
15 |
import="java.util.Arrays" |
5359 |
12 Apr 19 |
nicklas |
16 |
import="java.util.Date" |
5359 |
12 Apr 19 |
nicklas |
17 |
%> |
5359 |
12 Apr 19 |
nicklas |
18 |
<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %> |
5359 |
12 Apr 19 |
nicklas |
19 |
<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %> |
5359 |
12 Apr 19 |
nicklas |
20 |
<% |
5359 |
12 Apr 19 |
nicklas |
21 |
final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true); |
5359 |
12 Apr 19 |
nicklas |
22 |
final String ID = sc.getId(); |
5359 |
12 Apr 19 |
nicklas |
23 |
final float scale = Base.getScale(sc); |
5359 |
12 Apr 19 |
nicklas |
24 |
final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie"); |
5359 |
12 Apr 19 |
nicklas |
25 |
final Formatter dateFormat = new DateFormatter("yyyyMMdd"); |
5359 |
12 Apr 19 |
nicklas |
26 |
DbControl dc = null; |
5359 |
12 Apr 19 |
nicklas |
27 |
try |
5359 |
12 Apr 19 |
nicklas |
28 |
{ |
5359 |
12 Apr 19 |
nicklas |
29 |
dc = sc.newDbControl(); |
5359 |
12 Apr 19 |
nicklas |
30 |
final Extension reggie = ExtensionsControl.get(dc).getExtension("net.sf.basedb.reggie"); |
5359 |
12 Apr 19 |
nicklas |
31 |
final User user = User.getById(dc, sc.getLoggedInUserId()); |
5359 |
12 Apr 19 |
nicklas |
32 |
%> |
5359 |
12 Apr 19 |
nicklas |
33 |
<base:page type="default" > |
5359 |
12 Apr 19 |
nicklas |
34 |
<base:head |
5359 |
12 Apr 19 |
nicklas |
35 |
scripts="~../reggie-2.js,~dna_normalization.js" |
5359 |
12 Apr 19 |
nicklas |
36 |
styles="path.css,~../css/reggie-2.css,~../css/normalize_extract.css" |
5359 |
12 Apr 19 |
nicklas |
37 |
> |
5359 |
12 Apr 19 |
nicklas |
38 |
|
5359 |
12 Apr 19 |
nicklas |
39 |
<style> |
5359 |
12 Apr 19 |
nicklas |
40 |
tr.highlight |
5359 |
12 Apr 19 |
nicklas |
41 |
{ |
5359 |
12 Apr 19 |
nicklas |
42 |
border-top-width: 1px; |
5359 |
12 Apr 19 |
nicklas |
43 |
border-top-style: dotted; |
5359 |
12 Apr 19 |
nicklas |
44 |
} |
5359 |
12 Apr 19 |
nicklas |
45 |
|
5359 |
12 Apr 19 |
nicklas |
46 |
#extractTable |
5359 |
12 Apr 19 |
nicklas |
47 |
{ |
5359 |
12 Apr 19 |
nicklas |
48 |
border-width: 0; |
5359 |
12 Apr 19 |
nicklas |
49 |
font-size: 100%; |
5359 |
12 Apr 19 |
nicklas |
50 |
} |
5359 |
12 Apr 19 |
nicklas |
51 |
|
5359 |
12 Apr 19 |
nicklas |
52 |
#extractTable td:first-child, #extractTable th:first-child |
5359 |
12 Apr 19 |
nicklas |
53 |
{ |
5359 |
12 Apr 19 |
nicklas |
54 |
border-left-width: 0; |
5359 |
12 Apr 19 |
nicklas |
55 |
} |
5359 |
12 Apr 19 |
nicklas |
56 |
|
5359 |
12 Apr 19 |
nicklas |
57 |
#protocol-header |
5359 |
12 Apr 19 |
nicklas |
58 |
{ |
5359 |
12 Apr 19 |
nicklas |
59 |
display: none; |
5359 |
12 Apr 19 |
nicklas |
60 |
} |
6726 |
04 May 22 |
nicklas |
61 |
#protocol-footer |
6726 |
04 May 22 |
nicklas |
62 |
{ |
6726 |
04 May 22 |
nicklas |
63 |
border-top-width: 1px; |
6726 |
04 May 22 |
nicklas |
64 |
padding: 0.5em; |
6726 |
04 May 22 |
nicklas |
65 |
} |
5359 |
12 Apr 19 |
nicklas |
66 |
</style> |
5359 |
12 Apr 19 |
nicklas |
67 |
|
5359 |
12 Apr 19 |
nicklas |
68 |
</base:head> |
5359 |
12 Apr 19 |
nicklas |
69 |
<base:body> |
5359 |
12 Apr 19 |
nicklas |
70 |
|
5359 |
12 Apr 19 |
nicklas |
71 |
<p:path><p:pathelement |
5359 |
12 Apr 19 |
nicklas |
72 |
title="Reggie" href="<%="../index.jsp?ID="+ID%>" |
5359 |
12 Apr 19 |
nicklas |
73 |
/><p:pathelement title="DNA concentration normalization" |
5359 |
12 Apr 19 |
nicklas |
74 |
/></p:path> |
5359 |
12 Apr 19 |
nicklas |
75 |
|
5359 |
12 Apr 19 |
nicklas |
76 |
<div class="content"> |
5359 |
12 Apr 19 |
nicklas |
77 |
|
5359 |
12 Apr 19 |
nicklas |
78 |
<div id="page-data" class="datacontainer" |
5359 |
12 Apr 19 |
nicklas |
79 |
data-home-url="<%=home%>" |
5359 |
12 Apr 19 |
nicklas |
80 |
></div> |
5359 |
12 Apr 19 |
nicklas |
81 |
|
5359 |
12 Apr 19 |
nicklas |
82 |
<form name="reggie" id="wizard" class="wizard"> |
5359 |
12 Apr 19 |
nicklas |
83 |
|
5359 |
12 Apr 19 |
nicklas |
<!-- 1. DNA selection --> |
5359 |
12 Apr 19 |
nicklas |
85 |
<div class="step auto-hide" id="step-1"> |
5359 |
12 Apr 19 |
nicklas |
86 |
<div class="step-no">1</div> |
5359 |
12 Apr 19 |
nicklas |
87 |
<div class="step-title">Select DNA</div> |
5359 |
12 Apr 19 |
nicklas |
88 |
<div class="step-content"> |
5359 |
12 Apr 19 |
nicklas |
89 |
|
5359 |
12 Apr 19 |
nicklas |
90 |
<table class="step-form"> |
5359 |
12 Apr 19 |
nicklas |
91 |
<tr class="align-top"> |
5359 |
12 Apr 19 |
nicklas |
92 |
<td class="prompt">DNA extracts</td> |
5359 |
12 Apr 19 |
nicklas |
93 |
<td class="input" rowspan="2"> |
5359 |
12 Apr 19 |
nicklas |
94 |
<select name="dna" id="dna" class="yellow-label-support" multiple size="15"></select> |
5359 |
12 Apr 19 |
nicklas |
95 |
|
5359 |
12 Apr 19 |
nicklas |
96 |
<base:buttongroup style="margin-top: 0.5em;"> |
5359 |
12 Apr 19 |
nicklas |
97 |
<base:button id="btnSelectDna" title="Select manually…" /> |
5359 |
12 Apr 19 |
nicklas |
98 |
</base:buttongroup> |
5359 |
12 Apr 19 |
nicklas |
99 |
</td> |
5359 |
12 Apr 19 |
nicklas |
100 |
<td class="status" id="dna.status"></td> |
5359 |
12 Apr 19 |
nicklas |
101 |
<td class="help"> |
5359 |
12 Apr 19 |
nicklas |
102 |
<span id="dna.message" class="message"></span> |
5359 |
12 Apr 19 |
nicklas |
103 |
The list contain DNA extracts that has been selected |
5359 |
12 Apr 19 |
nicklas |
104 |
for pre-normalization. The list is sorted by Qiacube run and |
5359 |
12 Apr 19 |
nicklas |
105 |
position. |
5359 |
12 Apr 19 |
nicklas |
106 |
Use the <b>Select manually</b> button for free selection.<br> |
5359 |
12 Apr 19 |
nicklas |
107 |
<base:icon image="<%=home+"/images/yellow-label.png"%>" /> = YellowLabel specimen |
5359 |
12 Apr 19 |
nicklas |
108 |
</td> |
5359 |
12 Apr 19 |
nicklas |
109 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
110 |
</table> |
5359 |
12 Apr 19 |
nicklas |
111 |
</div> |
5359 |
12 Apr 19 |
nicklas |
112 |
</div> |
5359 |
12 Apr 19 |
nicklas |
113 |
|
5359 |
12 Apr 19 |
nicklas |
114 |
<div class="step" id="step-2"> |
5359 |
12 Apr 19 |
nicklas |
115 |
<div class="step-no">2</div> |
5359 |
12 Apr 19 |
nicklas |
116 |
<div class="step-title">Normalization protocol</div> |
5359 |
12 Apr 19 |
nicklas |
117 |
<div class="step-content"> |
5359 |
12 Apr 19 |
nicklas |
118 |
|
5359 |
12 Apr 19 |
nicklas |
119 |
<table class="step-form"> |
5361 |
15 Apr 19 |
nicklas |
120 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
121 |
<td class="prompt">Normalization protocol</td> |
5361 |
15 Apr 19 |
nicklas |
122 |
<td class="input"> |
5359 |
12 Apr 19 |
nicklas |
123 |
<select name="normalizationProtocol" id="normalizationProtocol" class="required"></select> |
5359 |
12 Apr 19 |
nicklas |
124 |
</td> |
5359 |
12 Apr 19 |
nicklas |
125 |
<td class="status" id="normalizationProtocol.status"></td> |
5359 |
12 Apr 19 |
nicklas |
126 |
<td class="help"> |
5359 |
12 Apr 19 |
nicklas |
127 |
<span id="normalizationProtocol.message" class="message"></span> |
5359 |
12 Apr 19 |
nicklas |
128 |
Select the protocol that match the intended library preparation |
5359 |
12 Apr 19 |
nicklas |
129 |
protocol for the selected DNA items. DNA that |
5359 |
12 Apr 19 |
nicklas |
130 |
doesn't have enough remaining quantity for the selected |
5359 |
12 Apr 19 |
nicklas |
131 |
protocol are flagged with the <b>NotEnoughRemainingQuantity</b> |
5359 |
12 Apr 19 |
nicklas |
132 |
annotation. |
5359 |
12 Apr 19 |
nicklas |
133 |
</td> |
5359 |
12 Apr 19 |
nicklas |
134 |
</tr> |
5361 |
15 Apr 19 |
nicklas |
135 |
<tr> |
5361 |
15 Apr 19 |
nicklas |
136 |
<td class="prompt">Normalized plate</td> |
5361 |
15 Apr 19 |
nicklas |
137 |
<td class="input"> |
5361 |
15 Apr 19 |
nicklas |
138 |
<select name="normalizedPlate" id="normalizedPlate" class="required"></select> |
5361 |
15 Apr 19 |
nicklas |
139 |
</td> |
5361 |
15 Apr 19 |
nicklas |
140 |
<td class="status" id="normalizedPlate.status"></td> |
5361 |
15 Apr 19 |
nicklas |
141 |
<td class="help"> |
5361 |
15 Apr 19 |
nicklas |
142 |
<span id="normalizedPlate.message" class="message"></span> |
5361 |
15 Apr 19 |
nicklas |
143 |
Select an existing plate for DNA normalized aliquots or create a new one. |
5361 |
15 Apr 19 |
nicklas |
144 |
</td> |
5361 |
15 Apr 19 |
nicklas |
145 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
146 |
</table> |
5359 |
12 Apr 19 |
nicklas |
147 |
|
5359 |
12 Apr 19 |
nicklas |
148 |
<div id="full-protocol" class="topborder"> |
5359 |
12 Apr 19 |
nicklas |
149 |
|
5359 |
12 Apr 19 |
nicklas |
150 |
<div id="protocol-header"> |
5359 |
12 Apr 19 |
nicklas |
151 |
<h1>Lab Protocol for DNA normalization <span class="reggie">Reggie <%=reggie.getAbout().getVersion() %></span></h1> |
5359 |
12 Apr 19 |
nicklas |
152 |
|
5359 |
12 Apr 19 |
nicklas |
153 |
<table class="protocolheader"> |
5359 |
12 Apr 19 |
nicklas |
154 |
<tbody id="qiacube-info" style="display: none;"> |
5359 |
12 Apr 19 |
nicklas |
155 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
156 |
<th>Qiacube date</th> |
5359 |
12 Apr 19 |
nicklas |
157 |
<td id="qiacube-date"></td> |
5359 |
12 Apr 19 |
nicklas |
158 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
159 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
160 |
<th>Qiacube run</th> |
5359 |
12 Apr 19 |
nicklas |
161 |
<td id="qiacube-run"></td> |
5359 |
12 Apr 19 |
nicklas |
162 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
163 |
</tbody> |
5359 |
12 Apr 19 |
nicklas |
164 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
165 |
<th>Normalization protocol</th> |
5359 |
12 Apr 19 |
nicklas |
166 |
<td id="normalization-protocol"></td> |
5359 |
12 Apr 19 |
nicklas |
167 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
168 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
169 |
<th>Normalization date</th> |
5359 |
12 Apr 19 |
nicklas |
170 |
<td></td> |
5359 |
12 Apr 19 |
nicklas |
171 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
172 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
173 |
<th>Normalization operator</th> |
5359 |
12 Apr 19 |
nicklas |
174 |
<td></td> |
5359 |
12 Apr 19 |
nicklas |
175 |
</tr> |
5361 |
15 Apr 19 |
nicklas |
176 |
<tr> |
5361 |
15 Apr 19 |
nicklas |
177 |
<th>Normalized plate</th> |
5361 |
15 Apr 19 |
nicklas |
178 |
<td id="normalized-plate-name"></td> |
5361 |
15 Apr 19 |
nicklas |
179 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
180 |
</table> |
5359 |
12 Apr 19 |
nicklas |
181 |
</div> |
5359 |
12 Apr 19 |
nicklas |
182 |
|
5359 |
12 Apr 19 |
nicklas |
183 |
<div id="dnaNormalize"></div> |
5359 |
12 Apr 19 |
nicklas |
184 |
|
5359 |
12 Apr 19 |
nicklas |
185 |
</div> |
5359 |
12 Apr 19 |
nicklas |
186 |
|
5359 |
12 Apr 19 |
nicklas |
187 |
</div> |
5359 |
12 Apr 19 |
nicklas |
188 |
</div> |
5359 |
12 Apr 19 |
nicklas |
189 |
|
5359 |
12 Apr 19 |
nicklas |
190 |
<div class="step" id="step-3"> |
5359 |
12 Apr 19 |
nicklas |
191 |
<div class="step-no">3</div> |
5359 |
12 Apr 19 |
nicklas |
192 |
<div class="step-title">Register normalization</div> |
5359 |
12 Apr 19 |
nicklas |
193 |
<div class="step-content"> |
5359 |
12 Apr 19 |
nicklas |
194 |
|
5359 |
12 Apr 19 |
nicklas |
195 |
<table class="step-form"> |
5359 |
12 Apr 19 |
nicklas |
196 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
197 |
<td class="prompt">Normalization date</td> |
5359 |
12 Apr 19 |
nicklas |
198 |
<td class="input"> |
5359 |
12 Apr 19 |
nicklas |
199 |
<input type="text" name="normalizationDate" id="normalizationDate" |
5359 |
12 Apr 19 |
nicklas |
200 |
value="<%=dateFormat.format(new Date()) %>" |
5359 |
12 Apr 19 |
nicklas |
201 |
class="required auto-init" data-auto-init="focus-on-enter" data-next-focus="normalizationOperator" |
5359 |
12 Apr 19 |
nicklas |
202 |
style="width: 12em;" maxlength="10"> |
5359 |
12 Apr 19 |
nicklas |
203 |
<base:icon |
5359 |
12 Apr 19 |
nicklas |
204 |
id="normalizationDateCalendar" |
5359 |
12 Apr 19 |
nicklas |
205 |
subclass="auto-init" |
5359 |
12 Apr 19 |
nicklas |
206 |
data-auto-init="calendar" |
5359 |
12 Apr 19 |
nicklas |
207 |
data-textarea-id="normalizationDate" |
5359 |
12 Apr 19 |
nicklas |
208 |
data-date-format="yyyyMMdd" |
5359 |
12 Apr 19 |
nicklas |
209 |
data-title="Normalization date" |
5359 |
12 Apr 19 |
nicklas |
210 |
image="calendar.png" |
5359 |
12 Apr 19 |
nicklas |
211 |
tooltip="Select a date from a calendar" |
5359 |
12 Apr 19 |
nicklas |
212 |
tabindex="-1" |
5359 |
12 Apr 19 |
nicklas |
213 |
/> |
5359 |
12 Apr 19 |
nicklas |
214 |
</td> |
5359 |
12 Apr 19 |
nicklas |
215 |
<td class="status" id="normalizationDate.status"></td> |
5359 |
12 Apr 19 |
nicklas |
216 |
<td class="help"> |
5359 |
12 Apr 19 |
nicklas |
217 |
<span id="normalizationDate.message" class="message"></span> |
5359 |
12 Apr 19 |
nicklas |
218 |
Date the DNA was normalized (YYYYMMDD or MMDD) |
5359 |
12 Apr 19 |
nicklas |
219 |
</td> |
5359 |
12 Apr 19 |
nicklas |
220 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
221 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
222 |
<td class="prompt">Operator</td> |
5359 |
12 Apr 19 |
nicklas |
223 |
<td class="input"> |
5359 |
12 Apr 19 |
nicklas |
224 |
<input type="text" name="normalizationOperator" id="normalizationOperator" |
5359 |
12 Apr 19 |
nicklas |
225 |
value="<%=HTML.encodeTags(user.getName()) %>" maxlength="255"> |
5359 |
12 Apr 19 |
nicklas |
226 |
</td> |
5359 |
12 Apr 19 |
nicklas |
227 |
<td class="status" id="normalizationOperator.status"></td> |
5359 |
12 Apr 19 |
nicklas |
228 |
<td class="help"> |
5359 |
12 Apr 19 |
nicklas |
229 |
<span id="normalizationOperator.message" class="message"></span> |
5359 |
12 Apr 19 |
nicklas |
230 |
</td> |
5359 |
12 Apr 19 |
nicklas |
231 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
232 |
</table> |
5359 |
12 Apr 19 |
nicklas |
233 |
|
5359 |
12 Apr 19 |
nicklas |
234 |
</div> |
5359 |
12 Apr 19 |
nicklas |
235 |
</div> |
5359 |
12 Apr 19 |
nicklas |
236 |
|
5359 |
12 Apr 19 |
nicklas |
237 |
<div id="wizard-status"></div> |
5359 |
12 Apr 19 |
nicklas |
238 |
|
5359 |
12 Apr 19 |
nicklas |
239 |
<table class="navigation" id="navigation"> |
5359 |
12 Apr 19 |
nicklas |
240 |
<tr> |
5359 |
12 Apr 19 |
nicklas |
241 |
<td><base:button id="gocancel" title="Cancel" /></td> |
5359 |
12 Apr 19 |
nicklas |
242 |
<td><base:button id="gonext" title="Next" image="<%=home+"/images/gonext.png"%>" /></td> |
5359 |
12 Apr 19 |
nicklas |
243 |
<td><base:button id="goprint" title="Print…" image="<%=home+"/images/print.png"%>" /></td> |
5359 |
12 Apr 19 |
nicklas |
244 |
<td><base:button id="goregister" title="Register" image="<%=home+"/images/import.png"%>" /></td> |
5359 |
12 Apr 19 |
nicklas |
245 |
<td><base:button id="gorestart" title="Restart" image="<%=home+"/images/goback.png"%>" /></td> |
5359 |
12 Apr 19 |
nicklas |
246 |
<td id="gonext-message" class="message"></td> |
5359 |
12 Apr 19 |
nicklas |
247 |
</tr> |
5359 |
12 Apr 19 |
nicklas |
248 |
</table> |
5359 |
12 Apr 19 |
nicklas |
249 |
|
5359 |
12 Apr 19 |
nicklas |
250 |
</form> |
5359 |
12 Apr 19 |
nicklas |
251 |
</div> |
5359 |
12 Apr 19 |
nicklas |
252 |
|
5359 |
12 Apr 19 |
nicklas |
253 |
</base:body> |
5359 |
12 Apr 19 |
nicklas |
254 |
</base:page> |
5359 |
12 Apr 19 |
nicklas |
255 |
<% |
5359 |
12 Apr 19 |
nicklas |
256 |
} |
5359 |
12 Apr 19 |
nicklas |
257 |
finally |
5359 |
12 Apr 19 |
nicklas |
258 |
{ |
5359 |
12 Apr 19 |
nicklas |
259 |
if (dc != null) dc.close(); |
5359 |
12 Apr 19 |
nicklas |
260 |
} |
5359 |
12 Apr 19 |
nicklas |
261 |
%> |