extensions/net.sf.basedb.reggie/trunk/resources/sampleproc/dna_normalization.jsp

Code
Comments
Other
Rev Date Author Line
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 84   <!-- 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&hellip;" />
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&hellip;" 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 %>