Ignore:
Timestamp:
Sep 30, 2009, 12:56:51 PM (13 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #1380 and #1381: Customize visible reporter fields in experiment explorer

This was implemented by extending the 'table' taglib with a 'form'-like layout. This means that we can use the existing 'Configure columns' dialog box with almost no modifications. As a side-effect ticket #1381 is also fixed because the string "truncation" is built into the table taglib.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/views/experiments/explorer/view/view.jsp

    r5107 r5111  
    8888<%!
    8989  private static final Item itemType = Item.SPOTDATA;
     90  private static final String defaultReporterColumns = "name,externalId,symbol,description";
    9091%>
    91 
    9292<%
    9393final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
     
    187187  %>
    188188  <base:page title="<%=title%>">
    189   <base:head scripts="table.js,tabcontrol.js" styles="table.css,headertabcontrol.css,path.css,explorer.css">
     189  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css,explorer.css">
    190190  <script language="JavaScript">
    191191    var submitPage = 'index.jsp';
     
    195195      Table.configureColumns('<%=ID%>', formId, '<%=itemType.name()%>', '<%=(String)cc.getObject("defaultColumns")%>', '<%=subContext%>');
    196196    }
     197    function configureReporterColumns()
     198    {
     199      var frm = document.forms['reporter'];
     200      frm.cmd.value = 'SetReporterColumns';
     201      Table.configureColumns('<%=ID%>', 'reporter', '<%=itemType.name()%>', '<%=defaultReporterColumns%>', '<%=subContext%>', 'reporter-columns');
     202    }
    197203    function presetOnChange()
    198204    {
     
    201207    function validateReporterIndex()
    202208    {
    203       var frm = document.forms['explorer'];
     209      var frm = document.forms['reporterIndex'];
    204210      var reporterIndex = parseInt(frm.newReporterIndex.value);
    205211      var maxIndex = <%=matchingReporters%>;
     
    215221    function validateSpotIndex()
    216222    {
    217       var frm = document.forms['explorer'];
     223      var frm = document.forms['spotIndex'];
    218224      var spotIndex = parseInt(frm.newSpotIndex.value);
    219225      var maxIndex = <%=matchingPositions%>;
     
    267273    <div class="boxed">
    268274   
    269     <form name="explorer" action="index.jsp" method="POST" onsubmit="return false;">
    270     <input type="hidden" name="ID" value="<%=ID%>">
    271     <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
    272     <input type="hidden" name="cmd" value="SetAnnotationType">
    273 
    274275    <%
    275276    Collection<PropertyFilter> filters = reporterContext.getPropertyFilters();
     
    286287    </table>
    287288   
    288       <h4>Current reporter
    289       <input name="newReporterIndex" type="text" class="text" value="<%=reporterIndex+1%>"
     289   
     290    <%
     291    if (reporter != null)
     292    {
     293      %>
     294      <form name="reporterIndex" action="index.jsp" method="post">
     295      <input type="hidden" name="ID" value="<%=ID%>">
     296      <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
     297      <input type="hidden" name="cmd" value="SetReporterIndex">
     298      <h4 class="docked">Current reporter
     299            <input name="newReporterIndex" type="text" class="text" value="<%=reporterIndex+1%>"
    290300        onkeypress="return Numbers.integerOnly(event, true, validateReporterIndex)"
    291301        size="6" maxlength="8" title="Enter a number between 1 and <%=matchingReporters%>">
     
    329339      %>
    330340      </h4>
     341      </form>
    331342     
    332       <%
    333       if (reporter != null)
    334       {
    335         %>
    336         <table class="form" cellspacing=0 width="100%">
    337         <tr>
    338           <td class="prompt" >Name</td>
    339           <td colspan="7"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true)%></td>
    340         </tr>
    341         <tr>
    342           <td class="prompt">External ID</td>
    343           <td><%=HTML.encodeTags(reporter.getExternalId())%></td>
    344           <td>&nbsp;&nbsp;</td>
    345           <td class="prompt">Type</td>
    346           <td><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></td>
    347         </tr>
    348         <tr valign="top">
    349           <td class="prompt">Gene symbol</td>
    350           <td><%=HTML.encodeTags(reporter.getSymbol())%></td>
    351           <td>&nbsp;&nbsp;</td>
    352           <td class="prompt">Description</td>
    353           <td><%=HTML.niceFormat(reporter.getDescription())%></td>
    354         </tr>
    355         <tr valign="top">
    356           <td class="prompt">Last update</td>
    357           <td><%=dateFormatter.format(reporter.getLastUpdate())%></td>
    358           <td>&nbsp;&nbsp;</td>
    359           <%
    360           int column = 1;
    361           List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
    362           if (reporterProperties != null)
     343      <tbl:toolbar>
     344        <tbl:button
     345          image="columns.gif"
     346          onclick="configureReporterColumns()"
     347          title="Columns&hellip;"
     348          tooltip="Show, hide and re-order reporter columns"
     349        />
     350      </tbl:toolbar>
     351   
     352    <div class="boxedbottom">
     353    <tbl:table
     354      id="reporter"
     355      clazz="form"
     356      columns="<%=Values.getString(cc.getSetting("reporter-columns"), defaultReporterColumns)%>"
     357      action="index.jsp"
     358      sc="<%=sc%>"
     359      item="<%=itemType%>"
     360      subcontext="<%=subContext%>"
     361      >
     362      <tbl:hidden
     363        name="bioassayset_id"
     364        value="<%=String.valueOf(bioAssaySetId)%>"
     365      />
     366      <tbl:columndef id="name" title="Name" show="always" clazz="prompt"/>
     367      <tbl:columndef id="externalId" title="External ID" clazz="prompt"/>
     368      <tbl:columndef id="symbol" title="Gene symbol" clazz="prompt"/>
     369      <tbl:columndef id="lastUpdate" title="Last update" clazz="prompt"/>
     370      <tbl:columndef id="type" title="Type" clazz="prompt"/>
     371      <tbl:columndef id="description" title="Description" clazz="prompt"/>
     372      <%
     373      List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
     374      if (reporterProperties != null)
     375      {
     376        for (ExtendedProperty ep : reporterProperties)
     377        {
     378          String name = ep.getName();
     379          Formatter formatter = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
     380          %>
     381          <tbl:columndef
     382            id="<%=ep.getName()%>"
     383            title="<%=HTML.encodeTags(ep.getTitle())%>"
     384            clazz="prompt"
     385            formatter="<%=formatter%>"
     386          />
     387          <%
     388        }
     389      }
     390      %>
     391      <tbl:form width="2">
     392        <tbl:cell column="name"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true)%></tbl:cell>
     393        <tbl:cell column="externalId"><%=HTML.encodeTags(reporter.getExternalId())%></tbl:cell>
     394        <tbl:cell column="symbol"><%=HTML.encodeTags(reporter.getSymbol())%></tbl:cell>
     395        <tbl:cell column="lastUpdate"><%=dateFormatter.format(reporter.getLastUpdate())%></tbl:cell>
     396        <tbl:cell column="type"><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></tbl:cell>
     397        <tbl:cell column="description"><%=HTML.niceFormat(reporter.getDescription())%></tbl:cell>
     398        <%
     399        if (reporterProperties != null)
     400        {
     401          for (ExtendedProperty ep : reporterProperties)
    363402          {
    364             for (ExtendedProperty ep : reporterProperties)
    365             {
    366               String name = ep.getName();
    367               Formatter formatter = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
    368               %>
    369                 <%=column == 0 ? "<tr valign=\"top\">" : "" %>
    370                 <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
    371                 <td><%=formatter.format(reporter.getExtended(name))%></td>
    372                 <td>&nbsp;&nbsp;</td>
    373                 <%=column == 1 ? "</tr>" : ""%>
    374               <%
    375               column++;
    376               if (column > 1) column = 0;
    377             }
     403            String name = ep.getName();
     404            Formatter formatter = FormatterFactory.getExtendedPropertyFormatter(sc, ep);
    378405            %>
    379             <%=column < 1 ? "</tr>" : ""%>
     406            <tbl:cell column="<%=ep.getName()%>"><tbl:cellvalue value="<%=reporter.getExtended(name)%>" /></tbl:cell>
    380407            <%
    381408          }
    382           %>
    383         </table>
    384         <%
    385       }
    386       else
    387       {
    388         %>
    389         No reporters found.
    390         <%
    391       }
    392       %>
     409        }
     410        %>
     411      </tbl:form>
     412    </tbl:table>
     413    </div>
     414    <%
     415    }
     416    else
     417    {
     418      %>
     419      No reporters found.
     420      <%
     421    }
     422    %>
    393423   
    394424    <base:section
     
    397427      context="<%=cc%>"
    398428      >
     429      <form name="annotationSummary" action="index.jsp" method="POST" onsubmit="return false;">
     430      <input type="hidden" name="ID" value="<%=ID%>">
     431      <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
     432      <input type="hidden" name="cmd" value="SetAnnotationType">
     433
    399434        <table><tr><td>
    400435        <div class="multiselect">
     
    486521        }
    487522        %>
     523        </form>
    488524    </base:section>
    489525
     526    <form name="spotIndex" action="index.jsp" method="post">
     527    <input type="hidden" name="ID" value="<%=ID%>">
     528    <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
     529    <input type="hidden" name="cmd" value="SetSpotIndex">
     530   
    490531      <h4 class="docked">Current spot
    491532      <input name="newSpotIndex" type="text" class="text" value="<%=positionIndex == -1 ? "all" : positionIndex == -2 ? "avg" : String.valueOf(positionIndex+1)%>"
     
    791832      }
    792833      %>
    793       MultiOptions.enableForField('explorer', 'display:annotationTypes', 'annotationtype_id', 1, options);
     834      MultiOptions.enableForField('annotationSummary', 'display:annotationTypes', 'annotationtype_id', 1, options);
    794835      </script>
    795836     
Note: See TracChangeset for help on using the changeset viewer.