Changeset 2172


Ignore:
Timestamp:
Dec 11, 2013, 1:52:44 PM (7 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #544: Re-design lab protocol and registration wizards for histology

A new protocol design has been implemented. Uses a left/right design with place for dates (embedding, sectioning and staining) and box placement to the left and glass overview to the right. 3 blocks per page as before.

The registration wizards have been updated with named date fields.

The work list creation wizard added a field for comments. The default comment is similar to the old auto-generated comment about a temporary work list.

Location:
extensions/net.sf.basedb.reggie/trunk
Files:
6 added
5 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.reggie/trunk/resources/sampleproc/histology_block.jsp

    r1915 r2172  
    7575    }
    7676    workListIsValid = true;
    77     moveDateOnChange();
     77    frm.moveDate.focus();
    7878    Main.show('gonext');
    7979  }
     
    414414      </tr>
    415415      <tr valign="top">
    416         <td class="prompt">Date</td>
     416        <td class="prompt">Embedding date</td>
    417417        <td class="input">
    418           <input type="text" name="moveDate" value="<%=today%>" size="12" maxlength="10"
     418          <input type="text" name="moveDate" value="" size="12" maxlength="10"
    419419            onblur="moveDateOnChange()">
    420420        </td>
  • extensions/net.sf.basedb.reggie/trunk/resources/sampleproc/histology_glass.jsp

    r1915 r2172  
    270270  }
    271271 
    272   stainDateOnChange();
    273   frm['numberOfHEGlass'].focus();
     272  frm.stainDate.focus();
    274273}
    275274
     
    783782        <table width="100%">
    784783        <tr valign="top">
    785           <td class="prompt">Date</td>
     784          <td class="prompt">Stain date</td>
    786785          <td class="input">
    787             <input type="text" name="stainDate" value="<%=today%>" size="12" maxlength="10"
     786            <input type="text" name="stainDate" value="" size="12" maxlength="10"
    788787              onblur="stainDateOnChange()">
    789788          </td>
  • extensions/net.sf.basedb.reggie/trunk/resources/sampleproc/histology_protocol2.jsp

    r1915 r2172  
    3838      {
    3939        BioPlate plate = well.getPlate();
    40         name += " [" + plate.getName() + " " + well.getCoordinate() + "]";
     40        name += "<br>" + plate.getName() + " " + well.getCoordinate();
    4141      }
    4242    }
     
    8383<html>
    8484<head>
    85   <title>Lab tracking protocol for FFPE/HE</title>
     85  <title>Lab protocol for FFPE/HE</title>
    8686  <link rel="SHORTCUT ICON" href="<%=home%>/images/microscope.png">
    8787  <link rel="stylesheet" type="text/css" href="<%=home %>/css/printable.css">
     
    9393  {
    9494    width: 100%;
    95   }
    96  
     95    border: 1px solid #000000;
     96    margin-bottom: 1em;
     97    border-collapse: collapse;
     98  }
     99
    97100  table.protocolheader > tbody > tr
    98101  {
    99     height: 2em;
    100   }
    101 
    102   table.protocolheader > tbody > tr > th, table.protocolheader > tbody > tr > td b
     102    vertical-align: top;
     103    height: 1.25em;
     104  }
     105
     106  table.protocolheader > tbody > tr > th
    103107  {
    104108    text-align: left;
    105109    font-size: 1.25em;
    106   }
     110    background-color: #F0F0F0;
     111    padding: 2px;
     112  }
     113 
     114  table.protocolheader > tbody > tr > td
     115  {
     116    text-align: left;
     117    font-size: 1.25em;
     118    padding: 2px;
     119  }
     120 
    107121 
    108122  div.paraffinblock
     
    110124    margin-top: 1em;
    111125    margin-bottom: 2em;
    112     height: 6.5cm;
    113   }
    114  
    115   div.paraffinblock .title
    116   {
    117     font-size: 1.2em;
    118     margin-bottom: 0.5em;
    119   }
    120  
    121   div.paraffinblock > table
    122   {
     126    height: 7cm;
     127  }
     128 
     129  div.paraffinblock .header
     130  {
     131    border: 1px solid #000000;
    123132    width: 100%;
    124     height: 5.5cm;
     133    border-collapse: collapse;
     134    height: 7cm;
     135  }
     136 
     137  div.paraffinblock .header th
     138  {
     139    text-align: left;
     140    font-size: 1em;
     141    background-color: #F0F0F0;
     142    padding: 2px;
     143  }
     144 
     145  div.paraffinblock .header td
     146  {
     147 
     148    text-align: left;
     149    font-size: 1em;
     150    padding: 2px;
     151  }
     152 
     153  div.paraffinblock .header .big
     154  {
     155    font-size: 1.25em;
     156  }
     157 
     158  div.paraffinblock .block
     159  {
     160    width: 100%;
     161    height: 7cm;
    125162    border-collapse: collapse;
    126163    border: 1px solid #000000;
    127164  }
    128165 
    129   div.paraffinblock > table > tbody > tr > td
     166  div.paraffinblock .block td
    130167  {
    131168    vertical-align: top;
    132169    border: 1px solid #000000;
    133     padding: 2px;
     170    padding: 4px;
    134171    width: 50%;
    135   }
    136  
    137   div.entryform
    138   {
    139     margin-left: 0.5em;
    140     margin-right: 1em;
    141     border: 1px solid #000000;
    142     height: 2em;
     172    text-align: center;
     173  }
     174 
     175  div.paraffinblock .block td img
     176  {
     177    float: left;
     178    margin-right: -16px;
    143179  }
    144180  </style>
     
    188224      %>
    189225      <div class="<%=blockNo > 0 ? "pagebreak" : ""%>"></div>
    190       <h1>Lab tracking protocol for FFPE/HE v.1.0</h1>
     226      <h1>Lab protocol for FFPE/HE v.1.0 <span class="reggie">Reggie <%=reggie.getAbout().getVersion() %>; Page <%=pageNo %> of <%=totalPages %></span></h1>
     227     
    191228      <table class="protocolheader">
    192       <tr>
    193         <td colspan="2">Reggie <%=reggie.getAbout().getVersion() %>; Page <%=pageNo %> of <%=totalPages %></td>
     229      <tr style="border-bottom: 1px solid #000000;">
     230        <th style="width: 15%;">Work list</th>
     231        <td style="width: 30%; border-right: 1px solid #000000;"><%=HTML.encodeTags(workList.getName())%></td>
    194232      </tr>
    195233      <tr>
    196         <td colspan="2"><b>Work list:</b> <%=HTML.encodeTags(workList.getName()) %> (<%=workList.getSize() %> samples)</td>
    197       </tr>
    198       <tr>
    199         <th style="width: 50%;">Start date:</th>
    200         <th style="width: 50%;">Operator:</th>
     234        <td rowspan="1" colspan="2" style="width: 50%; border-right: 1px solid #000000;"><%=HTML.niceFormat(workList.getDescription()) %></td>
    201235      </tr>
    202236      </table>
     
    205239    %>
    206240    <div class="paraffinblock">
    207       <div class="title">
    208         <table style="width: 100%;">
    209         <tr>
    210           <td style="width: 50%;">
    211             <table style="width: 100%;">
    212             <tr>
    213               <td style="width: 25%; white-space: nowrap;"><b>Block:</b> <%=block.getName() %></td>
    214               <td style="width: 75%;"><div class="entryform">&nbsp;</div></td>
    215             </tr>
    216             </table>
    217           </td>
    218          
    219           <td style="width: 50%;">
    220             <table style="width: 100%;">
    221             <tr>
    222               <td style="width: 25%; white-space: nowrap;"><b>Slides: </b><%=block.getName().replace("PB", "HE") %>.#</td>
    223               <td style="width: 75%;"><div class="entryform" style="margin-right: 0em;">&nbsp;</div></td>
    224             </tr>
    225             </table>
    226           </td>
    227         </tr>
     241      <table style="width: 100%; border: 1px solid #000000;" cellspacing="0" cellpadding="0">
     242      <tr>
     243        <td style="width: 50%;">
     244
     245          <table class="header">
     246          <tr class="big">
     247            <th style="width: 35%;">Block</th>
     248            <td colspan="2" style="width: 65%;"><%=block.getName() %></td>
     249          </tr>
     250         
     251          <tr style="border-top: 1px solid #000000;">
     252            <th>Storage box</th>
     253            <td colspan="2" style="border-right: 1px solid #000000;"></td>
     254          </tr>
     255         
     256          <tr style="border-top: 1px solid #cccccc;">
     257            <th>Embedding</th>
     258            <td style="width: 32%; border-right: 1px solid #cccccc;"></td>
     259            <td style="width: 33%;"></td>
     260          </tr>
     261         
     262          <tr class="big" style="border-top: 1px solid #000000;">
     263            <th>Slides</th>
     264            <td colspan="2"><%=block.getName().replace("PB", "HE") %>.#</td>
     265          </tr>
     266         
     267          <tr style="border-top: 1px solid #000000;">
     268            <th>Storage box/pos</th>
     269            <td style="border-right: 1px solid #cccccc;"></td>
     270            <td></td>
     271          </tr>
     272         
     273          <tr style="border-top: 1px solid #cccccc;">
     274            <th>Sectioning</th>
     275            <td style="border-right: 1px solid #cccccc;"></td>
     276            <td></td>
     277          </tr>
     278
     279          <tr style="border-top: 1px solid #cccccc;">
     280            <th>Staining</th>
     281            <td style="border-right: 1px solid #cccccc;"></td>
     282            <td></td>
     283          </tr>
     284       
     285          <tr style="border-top: 1px solid #000000;">
     286            <td colspan="3" style="height: 5em;">&nbsp;</td>
     287          </tr>
     288          </table>
     289        </td>
     290       
     291        <td style="width: 50%;">
     292          <table class="block">
     293          <tr>
     294          <td>
     295            <img src="../images/3.png"><%=getSampleForLocation(histology, offset, 3) %>
     296          </td>
     297          <td>
     298            <img src="../images/6.png"><i>Not used</i>
     299          </td>
     300          </tr>
     301         
     302          <tr>
     303          <td>
     304            <img src="../images/2.png"><%=getSampleForLocation(histology, offset, 2) %>
     305          </td>
     306          <td>
     307            <img src="../images/5.png"><%=getSampleForLocation(histology, offset, 5) %>
     308          </td>
     309          </tr>
     310         
     311          <tr>
     312          <td>
     313            <img src="../images/1.png"><%=getSampleForLocation(histology, offset, 1) %>
     314          </td>
     315          <td>
     316            <img src="../images/4.png"><%=getSampleForLocation(histology, offset, 4) %>
     317          </td>
     318          </tr>
    228319        </table>
    229       </div>
    230       <table>
    231         <tr>
    232         <td>
    233           <b>3</b>: <%=getSampleForLocation(histology, offset, 3) %>
     320       
    234321        </td>
    235         <td>
    236           <b>6</b>: <i>not used</i>
    237         </td>
    238         </tr>
    239        
    240         <tr>
    241         <td>
    242           <b>2</b>: <%=getSampleForLocation(histology, offset, 2) %>
    243         </td>
    244         <td>
    245           <b>5</b>: <%=getSampleForLocation(histology, offset, 5) %>
    246         </td>
    247         </tr>
    248        
    249         <tr>
    250         <td>
    251           <b>1</b>: <%=getSampleForLocation(histology, offset, 1) %>
    252         </td>
    253         <td>
    254           <b>4</b>: <%=getSampleForLocation(histology, offset, 4) %>
    255         </td>
    256         </tr>
     322      </tr>
    257323      </table>
     324
    258325    </div>
    259326    <%
  • extensions/net.sf.basedb.reggie/trunk/resources/sampleproc/histology_work_list.jsp

    r1915 r2172  
    216216  var submitInfo = new Object();
    217217  submitInfo.name = frm.name.value;
     218  submitInfo.comments = frm.comments.value;
    218219 
    219220  var histology = new Array();
     
    339340          Give the list a name.
    340341        </td>
     342      </tr>
     343      <tr valign="top">
     344        <td class="prompt">Comments</td>
     345        <td class="input"><textarea name="comments" rows="2" style="width: 95%;">Temporary work list for keeping track of a batch of samples to be embedded in paraffin blocks.</textarea></td>
     346        <td class="status" id="comments.status"></td>
     347        <td class="help"></td>
    341348      </tr>
    342349      <tr valign="top">
  • extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/servlet/HistologyServlet.java

    r2161 r2172  
    492492        workList.setExternalId(Histology.WORK_LIST_ID_PREFIX);
    493493        workList.setName((String)jsonReq.get("name"));
    494         workList.setDescription(
    495           "Temporary work list used for keeping track of a single batch of histology items " +
    496           "to be embedded in paraffing blocks. Do not modify.");
     494        workList.setDescription((String)jsonReq.get("comments"));
    497495        dc.saveItem(workList);
    498496        jsonMessages.add("Created '" + workList.getName() + "' with " + jsonHistology.size() + " samples");
Note: See TracChangeset for help on using the changeset viewer.