Changeset 4730


Ignore:
Timestamp:
Jan 15, 2009, 4:32:54 PM (13 years ago)
Author:
Martin Svensson
Message:

References #979 A labeledextract's or extract's bioplate/biowell are now available in the webclient. The pages has gone through some testings but can still have some bugs.

Location:
trunk/www/biomaterials
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/biomaterials/bioplates/wells/list_biowells.jsp

    r4729 r4730  
    7777final DbControl dc = sc.newDbControl();
    7878ItemResultIterator<BioWell> biowells = null;
    79 //ItemResultList<AnnotationType> annotationTypes = null;
    8079
    8180Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
  • trunk/www/biomaterials/extracts/edit_extract.jsp

    r4510 r4730  
    3535  import="net.sf.basedb.core.Extract"
    3636  import="net.sf.basedb.core.BioMaterialEvent"
     37  import="net.sf.basedb.core.BioPlate"
     38  import="net.sf.basedb.core.BioWell"
    3739  import="net.sf.basedb.core.Protocol"
    3840  import="net.sf.basedb.core.ProtocolType"
     
    8284  String name = null;
    8385  ItemQuery<Extract> extractsQuery = null;
     86  boolean readCurrentBioWell = true;
     87  BioWell currentBioWell = null; 
     88  boolean readCurrentBioPlate = true;
     89  BioPlate currentBioPlate = null;
    8490 
    8591  // Load recently used items
    8692  List<Protocol> recentProtocols = (List<Protocol>)cc.getRecent(dc, Item.PROTOCOL);
    8793  List<Sample> recentSamples = (List<Sample>)cc.getRecent(dc, Item.SAMPLE);
     94  List<BioPlate> recentBioPlates = (List<BioPlate>)cc.getRecent(dc, Item.BIOPLATE);
    8895
    8996  int activeProjectId = sc.getActiveProjectId();
     
    155162    {
    156163      readCurrentSample = false;
     164    }
     165    try
     166    {
     167      currentBioWell = extract.getBioWell();
     168      currentBioPlate = currentBioWell == null ? null : currentBioWell.getPlate();
     169    }
     170    catch (PermissionDeniedException ex)
     171    {
     172      readCurrentBioWell = false;
     173      readCurrentBioPlate = false;
    157174    }
    158175 
     
    188205        return false;
    189206      }
     207      if (Main.trimString(frm.bioplate_id.value) != 0 && Main.trimString(frm.biowell_id.value) == 0)
     208      {
     209        alert("You must choose a biowell from the bioplate");
     210        return false;
     211      }
    190212      return true;
    191213    }
     
    295317      protocolChanged = true;
    296318    }
     319    function selectBioPlateOnClick()
     320    {
     321      var frm = document.forms['extract'];
     322      var url = '../bioplates/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setBioPlateCallback';
     323      if (frm.bioplate_id.length > 1)
     324      {
     325        var id = Math.abs(parseInt(frm.bioplate_id[1].value));       
     326        url += '&item_id='+id;
     327      }
     328      Main.openPopup(url, 'SelectBioplate', 1000, 700);
     329    }
     330    function setBioPlateCallback(id, name)
     331    {
     332      var frm = document.forms['extract'];
     333      var list = frm.bioplate_id;
     334      if (list.length < 2 || list[1].value == '0') // >
     335      {
     336        Forms.addListOption(list, 1, new Option());
     337      }
     338      list[1].value = id;
     339      list[1].text = name;
     340      list.selectedIndex = 1;
     341      frm.biowell_id.remove(1);
     342      frm.biowell_id.disabled = false;
     343    }
     344    function bioPlateOnChange()
     345    {
     346      var frm = document.forms['extract'];
     347      var list = frm.bioplate_id;
     348      frm.biowell_id.selectedIndex=0;
     349      frm.biowell_id.remove(1);     
     350    }
     351
     352    function initBioWell()
     353    {
     354      var frm = document.forms['extract'];
     355      <%
     356      if (currentBioWell != null)
     357      {
     358        %>
     359        var list = frm.biowell_id;
     360        var wellId = <%=currentBioWell.getId()%>;
     361        Forms.addListOption(list, 1, new Option());
     362        list[1].value = '<%=currentBioWell.getId()*(extract == null ? 1 : -1)%>';
     363        list[1].text = '[<%=currentBioWell.getRow()%>,<%=currentBioWell.getColumn()%>]';
     364        list.selectedIndex = 1;
     365      <%
     366      }
     367      %>
     368    }         
     369    function selectBioWellOnClick()
     370    {
     371      var frm = document.forms['extract'];
     372      var bioplate_list = frm.bioplate_id;     
     373      var bioplateId = Math.abs(parseInt(bioplate_list[bioplate_list.selectedIndex].value))
     374      if (Main.trimString(frm.bioplate_id.value) == 0)
     375      {
     376        alert("You must first select the bioplate where the biowell is located");
     377        return;
     378      }     
     379       
     380      var url = '../bioplates/wells/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setBioWellCallback';
     381      if (frm.biowell_id.length > 1)
     382      {
     383        var id = Math.abs(parseInt(frm.biowell_id[1].value));       
     384        url += '&item_id='+id;
     385      }
     386      url += '&bioplate_id='+bioplateId;
     387      url += '&filter:STRING:bioMaterial.name='+escape('=');
     388      url += '&columns=row,column';
     389      Main.openPopup(url, 'SelectBiowell', 700, 700);
     390    }
     391    function setBioWellCallback(id, name)
     392    {
     393      var frm = document.forms['extract'];
     394      var list = frm.biowell_id;
     395      if (list.length < 2 || list[1].value == '0') // >
     396      {
     397        Forms.addListOption(list, 1, new Option());
     398      }
     399      list[1].value = id;
     400      list[1].text = name;
     401      list.selectedIndex = 1;
     402    }
    297403   
    298404    function pooledOnClick()
     
    419525      }
    420526      %>
     527      initBioWell();     
    421528      initExtracts();
    422529      pooledOnClick();
     
    520627            onselect="selectProtocolOnClick()"
    521628            onchange="protocolOnChange()"
     629          />
     630        </td>
     631      </tr>
     632      <tr>
     633        <td class="prompt">Bioplate</td>
     634        <td>
     635          <base:select
     636            id="bioplate_id"
     637            clazz="selectionlist"
     638            required="false"
     639            current="<%=currentBioPlate%>"
     640            denied="<%=!readCurrentBioPlate%>"
     641            recent="<%=recentBioPlates%>"
     642            newitem="<%=extract == null%>"
     643            onselect="selectBioPlateOnClick()"
     644            onchange="bioPlateOnChange()"
     645          />
     646        </td>
     647      </tr>
     648      <tr>
     649        <td class="prompt">Biowell</td>
     650        <td>
     651          <base:select
     652            id="biowell_id"
     653            clazz="selectionlist"
     654            required="false"           
     655            current="<%=null %>"
     656            denied="<%=!readCurrentBioWell%>"
     657            newitem="<%=extract == null%>"
     658            onselect="selectBioWellOnClick()"
     659            onchange="bioWellOnChange()"
    522660          />
    523661        </td>
  • trunk/www/biomaterials/extracts/index.jsp

    r4712 r4730  
    3232  import="net.sf.basedb.core.Extract"
    3333  import="net.sf.basedb.core.BioMaterialEvent"
     34  import="net.sf.basedb.core.BioWell"
    3435  import="net.sf.basedb.core.Protocol"
    3536  import="net.sf.basedb.core.ItemQuery"
     
    173174      if (pt != null) cc.setRecent(pt, maxRecent);
    174175    }
     176   
     177    int biowellId = Values.getInt(request.getParameter("biowell_id"), -1);
     178    if (biowellId >= 0) // < 0 = denied or unchanged
     179    {
     180      BioWell bw = biowellId == 0 ? null : BioWell.getById(dc, biowellId);
     181      if (bw != null && bw.getBioMaterial() != null)
     182      {
     183        throw new WebException("popup", "Biowell can not be used",
     184            "The biowell [{1}] on bioplate {2} is already connected to another biomaterial",
     185            HTML.encodeTags(bw.getRow()+"," + bw.getColumn()), HTML.encodeTags(bw.getPlate().getName()));
     186      }
     187      extract.setBioWell(bw);
     188      if (bw != null) cc.setRecent(bw.getPlate(), maxRecent);
     189    }
    175190
    176191    // Parents tab
  • trunk/www/biomaterials/extracts/list_extracts.jsp

    r4728 r4730  
    3131  import="net.sf.basedb.core.LabeledExtract"
    3232  import="net.sf.basedb.core.Sample"
     33  import="net.sf.basedb.core.BioPlate"
    3334  import="net.sf.basedb.core.BioMaterialEvent"
     35  import="net.sf.basedb.core.BioWell"
    3436  import="net.sf.basedb.core.AnnotationType"
    3537  import="net.sf.basedb.core.AnnotationSet"
     
    4446  import="net.sf.basedb.core.Nameable"
    4547  import="net.sf.basedb.core.Permission"
     48  import="net.sf.basedb.core.PermissionDeniedException"
    4649  import="net.sf.basedb.core.PluginDefinition"
    4750  import="net.sf.basedb.core.query.Hql"
     
    338341        filterable="true"
    339342      />
     343      <tbl:columndef
     344        id="bioPlate"
     345        property="bioWell.bioPlate.name"
     346        sortproperty="bioWell.bioPlate.name"
     347        filterproperty="bioWell.bioPlate.name"
     348        exportproperty="bioWell.bioPlate.name"
     349        datatype="string"
     350        title="Bioplate"
     351        sortable="true"
     352        filterable="true"
     353        exportable="true"
     354      />
     355      <tbl:columndef
     356        id="bioWell"
     357        property="bioWell.row"
     358        sortproperty="bioWell.row"
     359        filterproperty="bioWell.row"
     360        exportproperty="bioWell.row"
     361        datatype="string"
     362        title="Biowell" 
     363        filterable="true"
     364        exportable="true"
     365      /> 
    340366      <tbl:columndef
    341367        id="owner"
     
    667693                    visible="<%=mode.hasEditLink() && createLabeledExtractPermission && usePermission%>"
    668694                  /></tbl:cell>
     695                <tbl:cell column="bioPlate">
     696                  <base:propertyvalue
     697                    item="<%=item%>"
     698                    property="bioWell.bioPlate"
     699                    enableEditLink="<%=mode.hasEditLink()%>"
     700                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
     701                  />
     702                </tbl:cell>
     703                <tbl:cell column="bioWell">
     704                  <%
     705                  try
     706                  {
     707                    BioWell bw = item.getBioWell();
     708                    if (bw != null)
     709                    {
     710                      out.write("["+bw.getRow()+","+bw.getColumn()+"]");
     711                    }
     712                    else
     713                    {
     714                      out.write("<i>- none -</i>");
     715                    }
     716                  }
     717                  catch (PermissionDeniedException ex)
     718                  {
     719                    out.write("<i>- denied -</i>");
     720                  }
     721                  %>
     722                </tbl:cell>
    669723                <tbl:cell column="owner"
    670724                  ><base:propertyvalue
  • trunk/www/biomaterials/extracts/view_extract.jsp

    r4578 r4730  
    3838  import="net.sf.basedb.core.Sample"
    3939  import="net.sf.basedb.core.BioMaterialEvent"
     40  import="net.sf.basedb.core.BioWell"
    4041  import="net.sf.basedb.core.MultiPermissions"
    4142  import="net.sf.basedb.core.Protocol"
     
    320321        <td class="prompt">Remaining quantity</td>
    321322        <td><%=Values.formatNumber(extract.getRemainingQuantity(), 2, " µg")%></td>
     323      </tr>
     324      <tr>
     325        <td class="prompt">Bioplate</td>
     326        <td>
     327          <base:propertyvalue item="<%=extract%>" property="bioWell.bioPlate" />
     328          <%
     329          try
     330          {
     331            if (extract.getBioWell() != null)
     332            {
     333              BioWell bw = extract.getBioWell();
     334              %>
     335              [<%=bw.getRow()%>,<%=bw.getColumn()%>]
     336            <%
     337            }
     338          }
     339          catch (PermissionDeniedException ex)
     340          {}
     341          %>
     342        </td>
    322343      </tr>
    323344      <tr>
  • trunk/www/biomaterials/labeledextracts/edit_labeledextract.jsp

    r4510 r4730  
    3636  import="net.sf.basedb.core.Label"
    3737  import="net.sf.basedb.core.BioMaterialEvent"
     38  import="net.sf.basedb.core.BioPlate"
     39  import="net.sf.basedb.core.BioWell"
    3840  import="net.sf.basedb.core.Protocol"
    3941  import="net.sf.basedb.core.ProtocolType"
     
    7577  boolean isPooled = false;
    7678
     79
     80  boolean readCurrentBioWell = true;
     81  BioWell currentBioWell = null; 
     82  boolean readCurrentBioPlate = true;
     83  BioPlate currentBioPlate = null;
    7784  boolean readCurrentProtocol = true;
    7885  Protocol currentProtocol = null;
     
    8592  ItemQuery<LabeledExtract> extractsQuery = null;
    8693  String name = null;
    87  
     94   
    8895  // Load recently used items
    8996  List<Protocol> recentProtocols = (List<Protocol>)cc.getRecent(dc, Item.PROTOCOL);
    9097  List<Extract> recentExtracts = (List<Extract>)cc.getRecent(dc, Item.EXTRACT);
    9198  List<Label> recentLabels = (List<Label>)cc.getRecent(dc, Item.LABEL);
     99  List<BioPlate> recentBioPlates = (List<BioPlate>)cc.getRecent(dc, Item.BIOPLATE);
    92100
    93101  int activeProjectId = sc.getActiveProjectId();
     
    179187    {
    180188      readCurrentExtract = false;
     189    }
     190    try
     191    {
     192      currentBioWell = extract.getBioWell();
     193      currentBioPlate = currentBioWell == null ? null : currentBioWell.getPlate();
     194    }
     195    catch (PermissionDeniedException ex)
     196    {
     197      readCurrentBioWell = false;
     198      readCurrentBioPlate = false;
    181199    }
    182200 
     
    219237        return false;
    220238      }
     239      if (Main.trimString(frm.bioplate_id.value) != 0 && Main.trimString(frm.biowell_id.value) == 0)
     240      {
     241        alert("You must choose a biowell from the bioplate");
     242        return false;
     243      }
    221244      return true;
    222245    }
     
    326349      protocolChanged = true;
    327350    }
     351    function selectBioPlateOnClick()
     352    {
     353      var frm = document.forms['labeledextract'];
     354      var url = '../bioplates/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setBioPlateCallback';
     355      if (frm.bioplate_id.length > 1)
     356      {
     357        var id = Math.abs(parseInt(frm.bioplate_id[1].value));       
     358        url += '&item_id='+id;
     359      }
     360      Main.openPopup(url, 'SelectBioplate', 1000, 700);
     361    }
     362    function setBioPlateCallback(id, name)
     363    {
     364      var frm = document.forms['labeledextract'];
     365      var list = frm.bioplate_id;
     366      if (list.length < 2 || list[1].value == '0') // >
     367      {
     368        Forms.addListOption(list, 1, new Option());
     369      }
     370      list[1].value = id;
     371      list[1].text = name;
     372      list.selectedIndex = 1;
     373      frm.biowell_id.remove(1);
     374      frm.biowell_id.disabled = false;
     375    }
     376    function bioPlateOnChange()
     377    {
     378      var frm = document.forms['labeledextract'];
     379      var list = frm.bioplate_id;
     380      frm.biowell_id.selectedIndex=0;
     381      frm.biowell_id.remove(1);     
     382    }
     383
     384    function initBioWell()
     385    {
     386      var frm = document.forms['labeledextract'];
     387      <%
     388      if (currentBioWell != null)
     389      {
     390        %>
     391        var list = frm.biowell_id;
     392        var wellId = <%=currentBioWell.getId()%>;
     393        Forms.addListOption(list, 1, new Option());
     394        list[1].value = '<%=currentBioWell.getId()*(extract == null ? 1 : -1)%>';
     395        list[1].text = '[<%=currentBioWell.getRow()%>,<%=currentBioWell.getColumn()%>]';
     396        list.selectedIndex = 1;
     397      <%
     398      }
     399      %>
     400    }         
     401    function selectBioWellOnClick()
     402    {
     403      var frm = document.forms['labeledextract'];
     404      var bioplate_list = frm.bioplate_id;     
     405      var bioplateId = Math.abs(parseInt(bioplate_list[bioplate_list.selectedIndex].value))
     406      if (Main.trimString(frm.bioplate_id.value) == 0)
     407      {
     408        alert("You must first select the bioplate where the biowell is located");
     409        return;
     410      }     
     411       
     412      var url = '../bioplates/wells/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectone&callback=setBioWellCallback';
     413      if (frm.biowell_id.length > 1)
     414      {
     415        var id = Math.abs(parseInt(frm.biowell_id[1].value));       
     416        url += '&item_id='+id;
     417      }
     418      url += '&bioplate_id='+bioplateId;
     419      url += '&filter:STRING:bioMaterial.name='+escape('=');
     420      url += '&columns=row,column';
     421      Main.openPopup(url, 'SelectBiowell', 700, 700);
     422    }
     423    function setBioWellCallback(id, name)
     424    {
     425      var frm = document.forms['labeledextract'];
     426      var list = frm.biowell_id;
     427      if (list.length < 2 || list[1].value == '0') // >
     428      {
     429        Forms.addListOption(list, 1, new Option());
     430      }
     431      list[1].value = id;
     432      list[1].text = name;
     433      list.selectedIndex = 1;
     434    }
    328435   
    329436    function pooledOnClick()
     
    448555      %>
    449556      initLabeledExtracts();
     557      initBioWell();
    450558      pooledOnClick();
    451559    }
     
    577685            onselect="selectProtocolOnClick()"
    578686            onchange="protocolOnChange()"
     687          />
     688        </td>
     689      </tr>
     690      <tr>
     691        <td class="prompt">Bioplate</td>
     692        <td>
     693          <base:select
     694            id="bioplate_id"
     695            clazz="selectionlist"
     696            required="false"
     697            current="<%=currentBioPlate%>"
     698            denied="<%=!readCurrentBioPlate%>"
     699            recent="<%=recentBioPlates%>"
     700            newitem="<%=extract == null%>"
     701            onselect="selectBioPlateOnClick()"
     702            onchange="bioPlateOnChange()"
     703          />
     704        </td>
     705      </tr>
     706      <tr>
     707        <td class="prompt">Biowell</td>
     708        <td>
     709          <base:select
     710            id="biowell_id"
     711            clazz="selectionlist"
     712            required="false"           
     713            current="<%=null %>"
     714            denied="<%=!readCurrentBioWell%>"
     715            newitem="<%=extract == null%>"
     716            onselect="selectBioWellOnClick()"
     717            onchange="bioWellOnChange()"
    579718          />
    580719        </td>
  • trunk/www/biomaterials/labeledextracts/index.jsp

    r4712 r4730  
    3333  import="net.sf.basedb.core.Label"
    3434  import="net.sf.basedb.core.BioMaterialEvent"
     35  import="net.sf.basedb.core.BioWell"
    3536  import="net.sf.basedb.core.Protocol"
    3637  import="net.sf.basedb.core.ItemQuery"
     
    188189    }
    189190
     191    int biowellId = Values.getInt(request.getParameter("biowell_id"), -1);
     192    if (biowellId >= 0) // < 0 = denied or unchanged
     193    {
     194      BioWell bw = biowellId == 0 ? null : BioWell.getById(dc, biowellId);
     195      if (bw != null && bw.getBioMaterial() != null)
     196      {
     197        throw new WebException("popup", "Biowell can not be used",
     198            "The biowell [{1}] on bioplate {2} is already connected to another biomaterial",
     199            HTML.encodeTags(bw.getRow()+"," + bw.getColumn()), HTML.encodeTags(bw.getPlate().getName()));
     200      }
     201      extract.setBioWell(bw);
     202      if (bw != null) cc.setRecent(bw.getPlate(), maxRecent);
     203    }
     204
    190205    // Parents tab
    191206    extract.setPooled(Values.getBoolean(request.getParameter("pooled")));
  • trunk/www/biomaterials/labeledextracts/list_labeledextracts.jsp

    r4728 r4730  
    3030  import="net.sf.basedb.core.LabeledExtract"
    3131  import="net.sf.basedb.core.BioMaterialEvent"
     32  import="net.sf.basedb.core.BioPlate"
     33  import="net.sf.basedb.core.BioWell"
    3234  import="net.sf.basedb.core.Extract"
    3335  import="net.sf.basedb.core.AnnotationType"
     
    4446  import="net.sf.basedb.core.Nameable"
    4547  import="net.sf.basedb.core.Permission"
     48  import="net.sf.basedb.core.PermissionDeniedException"
    4649  import="net.sf.basedb.core.PluginDefinition"
    4750  import="net.sf.basedb.core.query.Hql"
     
    345348        datatype="string"
    346349        filterable="true"
     350      />
     351      <tbl:columndef
     352        id="bioPlate"
     353        property="bioWell.bioPlate.name"
     354        sortproperty="bioWell.bioPlate.name"
     355        filterproperty="bioWell.bioPlate.name"
     356        exportproperty="bioWell.bioPlate.name"
     357        datatype="string"
     358        title="Bioplate"
     359        sortable="true"
     360        filterable="true"
     361        exportable="true"
     362      />
     363      <tbl:columndef
     364        id="bioWell"
     365        property="bioWell.row"
     366        sortproperty="bioWell.row"
     367        filterproperty="bioWell.row"
     368        exportproperty="bioWell.row"
     369        datatype="string"
     370        title="Biowell"
     371        filterable="true"
     372        exportable="true"
    347373      />
    348374      <tbl:columndef
     
    679705                  %>
    680706                  </tbl:cell>
     707                <tbl:cell column="bioPlate">
     708                  <base:propertyvalue
     709                    item="<%=item%>"
     710                    property="bioWell.bioPlate"
     711                    enableEditLink="<%=mode.hasEditLink()%>"
     712                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
     713                  />
     714                </tbl:cell>
     715                <tbl:cell column="bioWell">
     716                  <%
     717                  try
     718                  {
     719                    BioWell bw = item.getBioWell();
     720                    if (bw != null)
     721                    {
     722                      out.write("["+bw.getRow()+","+bw.getColumn()+"]");
     723                    }
     724                    else
     725                    {
     726                      out.write("<i>- none -</i>");
     727                    }
     728                  }
     729                  catch (PermissionDeniedException ex)
     730                  {
     731                    out.write("<i>- denied -</i>");
     732                  }
     733                  %>
     734                </tbl:cell>
    681735                <tbl:cell column="owner"
    682736                  ><base:propertyvalue
  • trunk/www/biomaterials/labeledextracts/view_labeledextract.jsp

    r4578 r4730  
    3737  import="net.sf.basedb.core.Label"
    3838  import="net.sf.basedb.core.BioMaterialEvent"
     39  import="net.sf.basedb.core.BioWell"
    3940  import="net.sf.basedb.core.Protocol"
    4041  import="net.sf.basedb.core.User"
     
    314315      <tr>
    315316        <td class="prompt">Protocol</td>
    316         <td><base:propertyvalue item="<%=creationEvent%>" property="protocol"/>
     317        <td><base:propertyvalue item="<%=creationEvent%>" property="protocol"/></td>
    317318      </tr>
    318319      <tr>
     
    323324        <td class="prompt">Remaining quantity</td>
    324325        <td><%=Values.formatNumber(extract.getRemainingQuantity(), 2, " µg")%></td>
     326      </tr>
     327      <tr>
     328        <td class="prompt">Bioplate</td>
     329        <td>
     330          <base:propertyvalue item="<%=extract%>" property="bioWell.bioPlate" />
     331          <%
     332          try
     333          {
     334            if (extract.getBioWell() != null)
     335            {
     336              BioWell bw = extract.getBioWell();
     337              %>
     338              [<%=bw.getRow()%>,<%=bw.getColumn()%>]
     339            <%
     340            }
     341          }
     342          catch (PermissionDeniedException ex)
     343          {}
     344          %>
     345        </td>
    325346      </tr>
    326347      <tr>
  • trunk/www/biomaterials/samples/edit_sample.jsp

    r4729 r4730  
    8282  boolean readCurrentBioSource = true;
    8383  BioSource currentBioSource = null;
    84   ItemQuery<Sample> samplesQuery = null;
    85  
     84  ItemQuery<Sample> samplesQuery = null; 
    8685  boolean readCurrentBioWell = true;
    87   BioWell currentBioWell = null;
    88  
     86  BioWell currentBioWell = null; 
    8987  boolean readCurrentBioPlate = true;
    9088  BioPlate currentBioPlate = null;
     
    9391  List<Protocol> recentProtocols = (List<Protocol>)cc.getRecent(dc, Item.PROTOCOL);
    9492  List<BioSource> recentBioSources = (List<BioSource>)cc.getRecent(dc, Item.BIOSOURCE);
    95   //List<BioWell> recentBioWells = (List<BioWell>)cc.getRecent(dc, Item.BIOWELL);
    9693  List<BioPlate> recentBioPlates = (List<BioPlate>)cc.getRecent(dc, Item.BIOPLATE);
    9794 
     
    322319    }
    323320
    324 
    325321    function selectBioPlateOnClick()
    326322    {
     
    366362        var wellId = <%=currentBioWell.getId()%>;
    367363        Forms.addListOption(list, 1, new Option());
    368         list[1].value = '<%=currentBioWell.getId()%>';
     364        list[1].value = '<%=currentBioWell.getId()*(sample == null ? 1 : -1)%>';
    369365        list[1].text = '[<%=currentBioWell.getRow()%>,<%=currentBioWell.getColumn()%>]';
    370366        list.selectedIndex = 1;
     
    390386        url += '&item_id='+id;
    391387      }
    392       url += '&bioplate_id='+bioplateId * (<%=sample != null%> ? 1 : -1);
     388      url += '&bioplate_id='+bioplateId;
    393389      url += '&filter:STRING:bioMaterial.name='+escape('=');
    394390      url += '&columns=row,column';
    395       Main.openPopup(url, 'SelectBiowell', 600, 700);
     391      Main.openPopup(url, 'SelectBiowell', 700, 700);
    396392    }
    397393    function setBioWellCallback(id, name)
     
    406402      list[1].text = name;
    407403      list.selectedIndex = 1;
    408     }
    409     function bioWellOnChange()
    410     {
    411      
    412404    }
    413405   
  • trunk/www/biomaterials/samples/index.jsp

    r4729 r4730  
    179179    {
    180180      BioWell bw = biowellId == 0 ? null : BioWell.getById(dc, biowellId);
     181      if (bw != null && bw.getBioMaterial() != null)
     182      {
     183        throw new WebException("popup", "Biowell can not be used",
     184            "The biowell [{1}] on bioplate {2} is already connected to another biomaterial",
     185            HTML.encodeTags(bw.getRow()+"," + bw.getColumn()), HTML.encodeTags(bw.getPlate().getName()));
     186      }
    181187      sample.setBioWell(bw);
    182188      if (bw != null) cc.setRecent(bw.getPlate(), maxRecent);
  • trunk/www/biomaterials/samples/list_samples.jsp

    r4729 r4730  
    299299      />
    300300      <tbl:columndef
     301        id="eventDate"
     302        property="creationEvent.eventDate"
     303        datatype="date"
     304        title="Created"
     305        sortable="true"
     306        filterable="true"
     307        exportable="true"
     308        formatter="<%=dateFormatter%>"
     309      />
     310      <tbl:columndef
     311        id="entryDate"
     312        property="creationEvent.entryDate"
     313        datatype="date"
     314        title="Registered"
     315        sortable="true"
     316        filterable="true"
     317        exportable="true"
     318        formatter="<%=dateFormatter%>"
     319      />
     320      <tbl:columndef
     321        id="pooled"
     322        property="pooled"
     323        datatype="boolean"
     324        title="Pooled"
     325        sortable="true"
     326        filterable="true"
     327        exportable="true"
     328      />
     329      <tbl:columndef
     330        id="bioSource"
     331        title="Biosource"
     332        property="parent.name"
     333        datatype="string"
     334        sortable="true"
     335        filterable="true"
     336        exportable="true"
     337      />
     338      <tbl:columndef
     339        id="parents"
     340        title="Parents"
     341        property="&creationEvent.sourceBioMaterials(name)"
     342        datatype="string"
     343        filterable="true"
     344      />
     345      <tbl:columndef
     346        id="extracts"
     347        title="Extracts"
     348        property="&children(name)"
     349        datatype="string"
     350        filterable="true"
     351      />
     352      <tbl:columndef
    301353        id="bioPlate"
    302354        property="bioWell.bioPlate.name"
     
    317369        exportproperty="bioWell.row"
    318370        datatype="string"
    319         title="Biowell"
    320         sortable="true"
    321         filterable="true"
    322         exportable="true"
    323       />
    324      
    325       <tbl:columndef
    326         id="eventDate"
    327         property="creationEvent.eventDate"
    328         datatype="date"
    329         title="Created"
    330         sortable="true"
    331         filterable="true"
    332         exportable="true"
    333         formatter="<%=dateFormatter%>"
    334       />
    335       <tbl:columndef
    336         id="entryDate"
    337         property="creationEvent.entryDate"
    338         datatype="date"
    339         title="Registered"
    340         sortable="true"
    341         filterable="true"
    342         exportable="true"
    343         formatter="<%=dateFormatter%>"
    344       />
    345       <tbl:columndef
    346         id="pooled"
    347         property="pooled"
    348         datatype="boolean"
    349         title="Pooled"
    350         sortable="true"
    351         filterable="true"
    352         exportable="true"
    353       />
    354       <tbl:columndef
    355         id="bioSource"
    356         title="Biosource"
    357         property="parent.name"
    358         datatype="string"
    359         sortable="true"
    360         filterable="true"
    361         exportable="true"
    362       />
    363       <tbl:columndef
    364         id="parents"
    365         title="Parents"
    366         property="&creationEvent.sourceBioMaterials(name)"
    367         datatype="string"
    368         filterable="true"
    369       />
    370       <tbl:columndef
    371         id="extracts"
    372         title="Extracts"
    373         property="&children(name)"
    374         datatype="string"
    375         filterable="true"
     371        title="Biowell" 
     372        filterable="true"
     373        exportable="true"
    376374      />     
    377375      <tbl:columndef
     
    632630                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
    633631                  /></tbl:cell>
    634                 <%
    635                 BioWell well = item.getBioWell();
    636                 if (well != null)
    637                 {
    638                   BioPlate plate = well.getPlate();
     632                <tbl:cell column="bioPlate">
     633                  <base:propertyvalue
     634                    item="<%=item%>"
     635                    property="bioWell.bioPlate"
     636                    enableEditLink="<%=mode.hasEditLink()%>"
     637                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
     638                  />
     639                </tbl:cell>
     640                <tbl:cell column="bioWell">
     641                  <%
     642                  try
     643                  {
     644                    BioWell bw = item.getBioWell();
     645                    if (bw != null)
     646                    {
     647                      out.write("["+bw.getRow()+","+bw.getColumn()+"]");
     648                    }
     649                    else
     650                    {
     651                      out.write("<i>- none -</i>");
     652                    }
     653                  }
     654                  catch (PermissionDeniedException ex)
     655                  {
     656                    out.write("<i>- denied -</i>");
     657                  }
    639658                  %>
    640                   <tbl:cell column="bioPlate">
    641                     <%=Base.getLink(ID, plate.getName(), plate.getType(), plate.getId(), true)%>                   
    642                   </tbl:cell>
    643                   <tbl:cell column="bioWell">
    644                     [<%=well.getRow()%>,<%=well.getColumn()%>]
    645                   </tbl:cell>
    646                   <%
    647                 }
    648                 else
    649                 {
    650                   %>
    651                   <tbl:cell column="bioPlate"><i>- none -</i></tbl:cell>
    652                   <tbl:cell column="bioWell"><i>- none -</i></tbl:cell>
    653                   <%
    654                 }
    655                 %>
     659                </tbl:cell>
    656660                <tbl:cell column="eventDate" value="<%=creationEvent.getEventDate()%>" />
    657661                <tbl:cell column="entryDate" value="<%=creationEvent.getEntryDate()%>" />
  • trunk/www/biomaterials/samples/view_sample.jsp

    r4729 r4730  
    308308      </tr>
    309309      <tr>
    310         <td class="prompt">Owner</td>
    311         <td><base:propertyvalue item="<%=sample%>" property="owner" /></td>
    312       </tr>
    313       <tr>
    314310        <td class="prompt">Bioplate</td>
    315311        <td>
    316312          <base:propertyvalue item="<%=sample%>" property="bioWell.bioPlate" />
    317313          <%
    318           if (sample.getBioWell() != null)
     314          try
    319315          {
    320             BioWell bw = sample.getBioWell();
    321             %>
    322             [<%=bw.getRow()%>,<%=bw.getColumn()%>]
    323           <%
     316            if (sample.getBioWell() != null)
     317            {
     318              BioWell bw = sample.getBioWell();
     319              %>
     320              [<%=bw.getRow()%>,<%=bw.getColumn()%>]
     321            <%
     322            }
    324323          }
     324          catch (PermissionDeniedException ex)
     325          {}
    325326          %>
    326 
    327327        </td>
     328      </tr>
     329      <tr>
     330        <td class="prompt">Owner</td>
     331        <td><base:propertyvalue item="<%=sample%>" property="owner" /></td>
    328332      </tr>
    329333      <tr valign="baseline">
Note: See TracChangeset for help on using the changeset viewer.