extensions/net.sf.basedb.reggie/trunk/resources/batch/import-transport-boxes.jsp

Code
Comments
Other
Rev Date Author Line
7139 27 Apr 23 nicklas 1 <%@ page
7139 27 Apr 23 nicklas 2   pageEncoding="UTF-8"
7139 27 Apr 23 nicklas 3   session="false"
7139 27 Apr 23 nicklas 4   import="net.sf.basedb.core.Application"
7139 27 Apr 23 nicklas 5   import="net.sf.basedb.core.User"
7139 27 Apr 23 nicklas 6   import="net.sf.basedb.core.DbControl"
7139 27 Apr 23 nicklas 7   import="net.sf.basedb.core.SessionControl"
7139 27 Apr 23 nicklas 8   import="net.sf.basedb.clients.web.Base"
7139 27 Apr 23 nicklas 9   import="net.sf.basedb.clients.web.util.HTML"
7139 27 Apr 23 nicklas 10   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
7139 27 Apr 23 nicklas 11   import="net.sf.basedb.util.Values"
7139 27 Apr 23 nicklas 12   import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
7139 27 Apr 23 nicklas 13   import="java.util.regex.Pattern"
7139 27 Apr 23 nicklas 14   import="java.util.regex.Matcher"
7139 27 Apr 23 nicklas 15 %>
7139 27 Apr 23 nicklas 16 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
7139 27 Apr 23 nicklas 17 <%@ taglib prefix="m" uri="/WEB-INF/menu.tld" %>
7139 27 Apr 23 nicklas 18 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
7139 27 Apr 23 nicklas 19 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
7139 27 Apr 23 nicklas 20 <%
7139 27 Apr 23 nicklas 21 final SessionControl sc = Base.getExistingSessionControl(request, "net.sf.basedb.reggie", true);
7139 27 Apr 23 nicklas 22 final String ID = sc.getId();
7139 27 Apr 23 nicklas 23 final float scale = Base.getScale(sc);
7139 27 Apr 23 nicklas 24 final String home = ExtensionsControl.getHomeUrl("net.sf.basedb.reggie");
7139 27 Apr 23 nicklas 25 DbControl dc = null;
7139 27 Apr 23 nicklas 26 try
7139 27 Apr 23 nicklas 27 {
7139 27 Apr 23 nicklas 28   dc = sc.newDbControl();
7139 27 Apr 23 nicklas 29   final User user = User.getById(dc, sc.getLoggedInUserId());
7139 27 Apr 23 nicklas 30 %>
7139 27 Apr 23 nicklas 31 <base:page type="default">
7139 27 Apr 23 nicklas 32 <base:head 
7139 27 Apr 23 nicklas 33   scripts="~../reggie-2.js,~import-transport-boxes.js" 
7139 27 Apr 23 nicklas 34   styles="path.css,~../css/reggie-2.css"
7139 27 Apr 23 nicklas 35   >
7139 27 Apr 23 nicklas 36 <style>
7139 27 Apr 23 nicklas 37 tr.highlight
7139 27 Apr 23 nicklas 38 {
7139 27 Apr 23 nicklas 39   border-top-width: 1px;
7139 27 Apr 23 nicklas 40   border-top-style: dotted;
7139 27 Apr 23 nicklas 41 }
7139 27 Apr 23 nicklas 42
7139 27 Apr 23 nicklas 43 #fileSummary
7139 27 Apr 23 nicklas 44 {
7139 27 Apr 23 nicklas 45   margin: 0.5em;
7139 27 Apr 23 nicklas 46   border-width: 1px;
7139 27 Apr 23 nicklas 47 }
7191 23 May 23 nicklas 48 #fileSummary b:first-child
7191 23 May 23 nicklas 49 {
7191 23 May 23 nicklas 50   width: 15em;
7191 23 May 23 nicklas 51 }
7191 23 May 23 nicklas 52
7139 27 Apr 23 nicklas 53 #fileSummary b
7139 27 Apr 23 nicklas 54 {
7139 27 Apr 23 nicklas 55   display: inline-block;
7139 27 Apr 23 nicklas 56   background: #F0F0F0;
7139 27 Apr 23 nicklas 57   padding: 0.3em 0.6em;
7139 27 Apr 23 nicklas 58   margin-right: 0.25em;
7139 27 Apr 23 nicklas 59 }
7139 27 Apr 23 nicklas 60 #fileSummary span
7139 27 Apr 23 nicklas 61 {
7139 27 Apr 23 nicklas 62   margin-right: 1em;
7139 27 Apr 23 nicklas 63 }
7147 08 May 23 nicklas 64
7191 23 May 23 nicklas 65 #fileSummary input[type="checkbox"]
7147 08 May 23 nicklas 66 {
7147 08 May 23 nicklas 67   margin-left: -0.75em;
7147 08 May 23 nicklas 68   margin-right: 1em;
7147 08 May 23 nicklas 69 }
7147 08 May 23 nicklas 70
7139 27 Apr 23 nicklas 71 #fileSummary div + div
7139 27 Apr 23 nicklas 72 {
7139 27 Apr 23 nicklas 73   border-top-width: 1px;
7139 27 Apr 23 nicklas 74   border-top-style: dotted;
7139 27 Apr 23 nicklas 75 }
7139 27 Apr 23 nicklas 76 #importPossible
7139 27 Apr 23 nicklas 77 {
7139 27 Apr 23 nicklas 78   font-weight: bold;
7139 27 Apr 23 nicklas 79 }
7139 27 Apr 23 nicklas 80 #importPossible img
7139 27 Apr 23 nicklas 81 {
7139 27 Apr 23 nicklas 82   margin-right: 0.25em;
7139 27 Apr 23 nicklas 83 }
7139 27 Apr 23 nicklas 84
7139 27 Apr 23 nicklas 85 #specimenTable
7139 27 Apr 23 nicklas 86 {
7139 27 Apr 23 nicklas 87   width: 100%; 
7139 27 Apr 23 nicklas 88   border-collapse: collapse;
7139 27 Apr 23 nicklas 89   border-top-width: 1px;
7139 27 Apr 23 nicklas 90 }
7139 27 Apr 23 nicklas 91
7139 27 Apr 23 nicklas 92 #specimenTable thead
7139 27 Apr 23 nicklas 93 {
7139 27 Apr 23 nicklas 94   border-bottom-width: 1px;
7139 27 Apr 23 nicklas 95 }
7139 27 Apr 23 nicklas 96
7139 27 Apr 23 nicklas 97 #specimenTable td, #specimenTable th
7139 27 Apr 23 nicklas 98 {
7139 27 Apr 23 nicklas 99   padding: 1px 0.5em 1px 0.5em;
7139 27 Apr 23 nicklas 100   text-align: left;
7139 27 Apr 23 nicklas 101 }
7139 27 Apr 23 nicklas 102
7176 17 May 23 nicklas 103 #specimenTable .header1 th
7176 17 May 23 nicklas 104 {
7176 17 May 23 nicklas 105   text-align: center;
7176 17 May 23 nicklas 106   font-style: italic;
7176 17 May 23 nicklas 107   padding: 0.25em;
7176 17 May 23 nicklas 108 }
7176 17 May 23 nicklas 109
7176 17 May 23 nicklas 110 #specimenTable .shaded
7176 17 May 23 nicklas 111 {
7176 17 May 23 nicklas 112   background-color: #F0F0F0;
7176 17 May 23 nicklas 113 }
7176 17 May 23 nicklas 114
7139 27 Apr 23 nicklas 115 #specimenTable .lineNo
7139 27 Apr 23 nicklas 116 {
7139 27 Apr 23 nicklas 117   width: 5em;
7139 27 Apr 23 nicklas 118   text-align: right;
7176 17 May 23 nicklas 119   font-weight: bold;
7139 27 Apr 23 nicklas 120 }
7139 27 Apr 23 nicklas 121
7176 17 May 23 nicklas 122
7143 05 May 23 nicklas 123 #specimenTable td.icon
7143 05 May 23 nicklas 124 {
7143 05 May 23 nicklas 125   width: 20px;
7143 05 May 23 nicklas 126   min-width: 20px;
7143 05 May 23 nicklas 127 }
7139 27 Apr 23 nicklas 128
7139 27 Apr 23 nicklas 129 #specimenTable .comment input
7139 27 Apr 23 nicklas 130 {
7139 27 Apr 23 nicklas 131   width: 95%;
7139 27 Apr 23 nicklas 132   min-width: 20em;
7139 27 Apr 23 nicklas 133 }
7139 27 Apr 23 nicklas 134
7191 23 May 23 nicklas 135 #specimenTable .storage-box
7191 23 May 23 nicklas 136 {
7193 23 May 23 nicklas 137   text-align: center;
7191 23 May 23 nicklas 138 }
7191 23 May 23 nicklas 139
7140 28 Apr 23 nicklas 140 #specimenTable .new-box
7140 28 Apr 23 nicklas 141 {
7140 28 Apr 23 nicklas 142   border-top-width: 2px;
7140 28 Apr 23 nicklas 143   border-top-style: solid;
7140 28 Apr 23 nicklas 144 }
7140 28 Apr 23 nicklas 145
7158 10 May 23 nicklas 146 #specimenTable .action
7158 10 May 23 nicklas 147 {
7158 10 May 23 nicklas 148   margin-bottom: 0.25em;
7158 10 May 23 nicklas 149 }
7158 10 May 23 nicklas 150
7147 08 May 23 nicklas 151 img.case-summary
7147 08 May 23 nicklas 152 {
7176 17 May 23 nicklas 153   margin-left: 0.25em;
7176 17 May 23 nicklas 154 }
7176 17 May 23 nicklas 155
7176 17 May 23 nicklas 156 img.line-info
7176 17 May 23 nicklas 157 {
7147 08 May 23 nicklas 158   float: right;
7147 08 May 23 nicklas 159 }
7147 08 May 23 nicklas 160
7147 08 May 23 nicklas 161 #fileData.hide-specimen tr.Specimen,
7147 08 May 23 nicklas 162 #fileData.hide-nospecimen tr.NoSpecimen,
7147 08 May 23 nicklas 163 #fileData.hide-case tr.Case,
7147 08 May 23 nicklas 164 #fileData.hide-blood tr.Blood,
7147 08 May 23 nicklas 165 #fileData.hide-nothing tr.Nothing
7147 08 May 23 nicklas 166 {
7147 08 May 23 nicklas 167   display: none;
7147 08 May 23 nicklas 168 }
7147 08 May 23 nicklas 169
7147 08 May 23 nicklas 170 #fileData.only-noconsent tr.HasConsent,
7147 08 May 23 nicklas 171 #fileData.only-errors tr.NoError,
7147 08 May 23 nicklas 172 #fileData.only-warnings tr.NoWarning
7147 08 May 23 nicklas 173 {
7147 08 May 23 nicklas 174   display: none;
7147 08 May 23 nicklas 175 }
7147 08 May 23 nicklas 176
7147 08 May 23 nicklas 177 #fileData.only-noconsent tr.NoConsent,
7147 08 May 23 nicklas 178 #fileData.only-errors tr.HasError,
7147 08 May 23 nicklas 179 #fileData.only-warnings tr.HasWarning
7147 08 May 23 nicklas 180 {
7147 08 May 23 nicklas 181   display: table-row;
7147 08 May 23 nicklas 182 }
7147 08 May 23 nicklas 183
7147 08 May 23 nicklas 184
7139 27 Apr 23 nicklas 185 </style>
7139 27 Apr 23 nicklas 186 </base:head>
7139 27 Apr 23 nicklas 187 <base:body>
7139 27 Apr 23 nicklas 188   <p:path><p:pathelement 
7139 27 Apr 23 nicklas 189     title="Reggie" href="<%="../index.jsp?ID="+ID%>" 
7139 27 Apr 23 nicklas 190     /><p:pathelement title="Import specimen from transport boxes" 
7139 27 Apr 23 nicklas 191     /></p:path>
7139 27 Apr 23 nicklas 192   
7139 27 Apr 23 nicklas 193   <div class="content">
7139 27 Apr 23 nicklas 194
7139 27 Apr 23 nicklas 195   <form name="reggie" id="wizard" class="wizard">
7139 27 Apr 23 nicklas 196   
7142 04 May 23 nicklas 197   <div class="step auto-hide" id="step-1">
7139 27 Apr 23 nicklas 198     <div class="step-no">1</div>
7139 27 Apr 23 nicklas 199     <div class="step-title">File</div>
7139 27 Apr 23 nicklas 200     <div class="step-content">
7139 27 Apr 23 nicklas 201
7139 27 Apr 23 nicklas 202       <table class="step-form">
7139 27 Apr 23 nicklas 203       <tr class="align-top">
7139 27 Apr 23 nicklas 204         <td class="prompt">Select file</td>
7139 27 Apr 23 nicklas 205         <td class="input">
7139 27 Apr 23 nicklas 206           <table style="width: 100%;">
7139 27 Apr 23 nicklas 207           <tr>
7139 27 Apr 23 nicklas 208           <td>
7139 27 Apr 23 nicklas 209             <input class="text required" type="text" name="importfile" id="importfile" 
7139 27 Apr 23 nicklas 210               data-name-filter="%.csv|%.xlsx"
7139 27 Apr 23 nicklas 211               data-directory="/home/SCANB/BiomaterialPathology"
7139 27 Apr 23 nicklas 212             >
7139 27 Apr 23 nicklas 213           </td>
7139 27 Apr 23 nicklas 214           <td style="padding-left: 4px; width: 7em;">
7139 27 Apr 23 nicklas 215             <base:button 
7139 27 Apr 23 nicklas 216               title="Browse&hellip;"
7139 27 Apr 23 nicklas 217               id="importfile.btn"
7139 27 Apr 23 nicklas 218             />
7139 27 Apr 23 nicklas 219           </td>
7139 27 Apr 23 nicklas 220           </tr>
7139 27 Apr 23 nicklas 221           </table>
7139 27 Apr 23 nicklas 222         </td>
7139 27 Apr 23 nicklas 223         <td class="status" id="importfile.status"></td>
7139 27 Apr 23 nicklas 224         <td class="help" rowspan="2">
7139 27 Apr 23 nicklas 225           <span id="importfile.message" class="message"></span>
7139 27 Apr 23 nicklas 226           Select the <b>CSV</b> or <b>Excel</b> file that contains information about specimen.
7139 27 Apr 23 nicklas 227           The following columns are required: <b>Clarity ID</b>, <b>SCAN-B nummer</b> and
7139 27 Apr 23 nicklas 228           <b>Förvaring</b>. 
7139 27 Apr 23 nicklas 229           Optional columns are: <b>PADRemiss</b>. All other columns are ignored.
7139 27 Apr 23 nicklas 230           <div id="worksheetSection.help" style="display:none;">
7139 27 Apr 23 nicklas 231             Note that it is only possible to import from one worksheet at a time.
7139 27 Apr 23 nicklas 232           </div>
7139 27 Apr 23 nicklas 233         </td>
7139 27 Apr 23 nicklas 234       </tr>
7139 27 Apr 23 nicklas 235       <tr id="worksheetSection" style="display: none;">
7139 27 Apr 23 nicklas 236         <td class="subprompt">- worksheet</td>
7139 27 Apr 23 nicklas 237         <td class="input">
7139 27 Apr 23 nicklas 238           <select name="sheet" id="sheet" class="required" style="width: auto; min-width: 10em;"></select>
7139 27 Apr 23 nicklas 239         </td>
7139 27 Apr 23 nicklas 240         <td class="status" id="sheet.status"></td>
7139 27 Apr 23 nicklas 241       </tr>
7139 27 Apr 23 nicklas 242       </table>
7139 27 Apr 23 nicklas 243       
7139 27 Apr 23 nicklas 244       <div id="filePreview" class="topborder" style="display: none;">
7139 27 Apr 23 nicklas 245         <div id="fileSummary">
7139 27 Apr 23 nicklas 246           <div>
7191 23 May 23 nicklas 247             <b>Summary of file</b><span id="filename"></span><span 
7160 11 May 23 nicklas 248               id="downloadfile" class="link" title="Download the file"><img src="../images/download.png"></span>
7139 27 Apr 23 nicklas 249             <b>Boxes</b><span id="numBoxes"></span>
7143 05 May 23 nicklas 250             <b>Total items</b><span id="numSamples"></span>
7149 08 May 23 nicklas 251             <b>Errors</b><span id="numErrors"></span><input type="checkbox" id="showErrors" data-toggle="only-errors" title="Only show entries that have an error">
7149 08 May 23 nicklas 252             <b>Warnings</b><span id="numWarnings"></span><input type="checkbox" id="showWarnings" data-toggle="only-warnings" title="Only show entries that have a warnings">
7149 08 May 23 nicklas 253             <b>Consent=No/NotAsked</b><span id="numNoConsent"></span><input type="checkbox" id="showNoConsent" data-toggle="only-noconsent" title="Only show entries that is missing consent">
7139 27 Apr 23 nicklas 254           </div>
7139 27 Apr 23 nicklas 255           <div>
7191 23 May 23 nicklas 256             <b>&nbsp;</b>
7139 27 Apr 23 nicklas 257             <span id="importPossible"></span>
7147 08 May 23 nicklas 258             <b>Mapped to</b><i>Specimen</i>: <span id="numMappedToSpecimen"></span><input type="checkbox" id="showSpecimen" checked data-toggle="hide-specimen" title="Show/hide entries that was mapped to a Specimen">
7147 08 May 23 nicklas 259             <i>NoSpecimen</i>: <span id="numMappedToNoSpecimen"></span><input type="checkbox" id="showNoSpecimen" checked data-toggle="hide-nospecimen" title="Show/hide entries that was mapped to a NoSpecimen">
7147 08 May 23 nicklas 260             <i>Case</i>: <span id="numMappedToCase"></span><input type="checkbox" id="showCase" checked data-toggle="hide-case" title="Show/hide entries that was mapped to a Case">
7147 08 May 23 nicklas 261             <i>Blood</i>: <span id="numMappedToBlood"></span><input type="checkbox" id="showBlood" checked data-toggle="hide-blood" title="Show/hide entries that was mapped to a Blood">
7147 08 May 23 nicklas 262             <i>Nothing</i>: <span id="numMappedToNothing"></span><input type="checkbox" id="showNothing" checked data-toggle="hide-nothing" title="Show/hide entries that was not mapped to anything">
7139 27 Apr 23 nicklas 263           </div>
7191 23 May 23 nicklas 264           <div id="boxComments" style="display: none;"></div>
7139 27 Apr 23 nicklas 265         </div>
7139 27 Apr 23 nicklas 266         <div id="fileData"></div>
7139 27 Apr 23 nicklas 267       </div>
7139 27 Apr 23 nicklas 268
7139 27 Apr 23 nicklas 269     </div>
7139 27 Apr 23 nicklas 270   </div>
7139 27 Apr 23 nicklas 271
7139 27 Apr 23 nicklas 272   <div id="wizard-status"></div>
7162 12 May 23 nicklas 273   <div id="wizard-progress"></div>
7139 27 Apr 23 nicklas 274   
7139 27 Apr 23 nicklas 275   <table class="navigation" id="navigation">
7139 27 Apr 23 nicklas 276   <tr>
7139 27 Apr 23 nicklas 277     <td><base:button id="gocancel" title="Cancel" /></td>
7139 27 Apr 23 nicklas 278     <td><base:button id="gonext" title="Next" image="<%=home+"/images/gonext.png"%>" /></td>
7139 27 Apr 23 nicklas 279     <td><base:button id="goregister" title="Register" image="<%=home+"/images/import.png"%>"  /></td>
7139 27 Apr 23 nicklas 280     <td><base:button id="gorestart" title="Restart" image="<%=home+"/images/goback.png"%>" /></td>
7139 27 Apr 23 nicklas 281     <td id="gonext-message" class="message"></td>
7139 27 Apr 23 nicklas 282   </tr>
7139 27 Apr 23 nicklas 283   </table>
7139 27 Apr 23 nicklas 284   
7139 27 Apr 23 nicklas 285   </form>
7139 27 Apr 23 nicklas 286   </div>
7139 27 Apr 23 nicklas 287   </div>
7139 27 Apr 23 nicklas 288 </base:body>
7139 27 Apr 23 nicklas 289 </base:page>
7139 27 Apr 23 nicklas 290 <%
7139 27 Apr 23 nicklas 291 }
7139 27 Apr 23 nicklas 292 finally
7139 27 Apr 23 nicklas 293 {
7139 27 Apr 23 nicklas 294   if (dc != null) dc.close();
7139 27 Apr 23 nicklas 295 }
7139 27 Apr 23 nicklas 296 %>