Changeset 5940


Ignore:
Timestamp:
Jan 31, 2012, 1:29:11 PM (10 years ago)
Author:
Nicklas Nordborg
Message:

References #1655: GUI improvements

  • Transformations
  • Extra values
  • Bioassays
  • Experiment explorer
Location:
trunk
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/ColumnDef.java

    r5929 r5940  
    4545import javax.servlet.jsp.JspException;
    4646import javax.servlet.jsp.JspTagException;
    47 import javax.servlet.jsp.tagext.TagSupport;
    4847
    4948
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Form.java

    r5892 r5940  
    2727import javax.servlet.jsp.JspException;
    2828import javax.servlet.jsp.JspTagException;
    29 import javax.servlet.jsp.tagext.TagSupport;
     29
     30import net.sf.basedb.clients.web.taglib.StylableTag;
     31
    3032
    3133
     
    7779*/
    7880public class Form
    79   extends TagSupport
     81  extends StylableTag
    8082{
    8183
     
    8587 
    8688  private int width = 1;
     89 
     90  public Form()
     91  {
     92    super(null);
     93  }
    8794 
    8895  public void setWidth(int width)
     
    111118    Map<String, String> contents = table.getColumnContent();
    112119    StringBuilder sb = new StringBuilder();
     120    sb.append("<table ");
     121    addIdAndStyles(sb);
     122    sb.append(">\n");
    113123    int colNum = 0;
    114124    for (String col : table.getVisibleColumns())
    115125    {
    116126      String header = headers.get(col);
    117       if (header == null) header = "<td>&nbsp;</td>";
     127      if (header == null) header = "<th></th>";
    118128      String content = contents.get(col);
    119       if (content == null) content = "<td>&nbsp;</td>";
     129      if (content == null) content = "<td></td>";
    120130      if (colNum % width == 0) sb.append("<tr>");
    121131      sb.append(header);
     
    124134      if (colNum % width == 0) sb.append("</tr>");
    125135    }
    126     if (colNum % width != 0) sb.append("</tr>");
     136    while (colNum % width != 0)
     137    {
     138      sb.append("<th></th><td></td>");
     139      colNum++;
     140      if (colNum % width == 0) sb.append("</tr>");
     141    }
    127142    contents.clear();
     143   
     144    sb.append("</table>");
    128145    try
    129146    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Header.java

    r4889 r5940  
    2626import javax.servlet.jsp.JspTagException;
    2727import javax.servlet.jsp.tagext.Tag;
    28 import javax.servlet.jsp.tagext.TagSupport;
     28
     29import net.sf.basedb.clients.web.taglib.StylableTag;
    2930
    3031/**
     
    8687*/
    8788public class Header
    88   extends TagSupport
     89  extends StylableTag
    8990{
    9091
     
    9495  private static final long serialVersionUID = -7541520513764712983L;
    9596
     97  public Header()
     98  {
     99    super(null);
     100  }
     101 
    96102  /**
    97103    The parent &lt;tbl:table&gt; tag.
    98104  */
    99105  private Table table;
    100  
    101   /**
    102     Optional <code>class</code> attribute
    103   */
    104   private String clazz = "header";
    105  
    106   /**
    107     Optional <code>style</code> attribute
    108   */
    109   private String style = null;
    110  
     106   
    111107  /**
    112108    If the header should be visible or not.
     
    117113    Taglib initialization methods
    118114  */
    119   public void setClazz(String clazz)
    120   {
    121     this.clazz = clazz;
    122   }
    123   public String getClazz()
    124   {
    125     return clazz;
    126   }
    127115
    128   public void setStyle(String style)
    129   {
    130     this.style = style;
    131   }
    132   public String getStyle()
    133   {
    134     return style;
    135   }
    136  
    137116  public void setVisible(boolean visible)
    138117  {
     
    169148    StringBuilder sb = new StringBuilder();
    170149    sb.append("<th");
    171     if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\"");
    172     if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\"");
     150    addIdAndStyles(sb);
    173151    sb.append(">");
    174152    try
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Label.java

    r5918 r5940  
    2323
    2424import net.sf.basedb.clients.web.taglib.Page;
     25import net.sf.basedb.clients.web.taglib.StylableTag;
    2526
    2627import javax.servlet.jsp.JspException;
    2728import javax.servlet.jsp.JspTagException;
    28 import javax.servlet.jsp.tagext.TagSupport;
    2929
    3030/**
     
    131131*/
    132132public class Label
    133   extends TagSupport
     133  extends StylableTag
    134134{
    135135
     
    139139  private static final long serialVersionUID = 5326481772609709567L;
    140140
     141  public Label()
     142  {
     143    super("label");
     144  }
     145 
     146 
    141147  /**
    142148    The parent &lt;tbl:table&gt; tag.
     
    149155  private Toolbar toolbar;
    150156
    151   /**
    152     Optional <code>class</code> attribute
    153   */
    154   private String clazz = "label";
    155  
    156   /**
    157     Optional <code>style</code> attribute
    158   */
    159   private String style = null;
    160  
    161157  /**
    162158    An optional image to show in the button.
     
    182178    Taglib initialization methods
    183179  */
    184   public void setClazz(String clazz)
    185   {
    186     this.clazz = clazz;
    187   }
    188   public String getClazz()
    189   {
    190     return clazz;
    191   }
    192 
    193   public void setStyle(String style)
    194   {
    195     this.style = style;
    196   }
    197   public String getStyle()
    198   {
    199     return style;
    200   }
    201 
    202180  public void setImage(String image)
    203181  {
     
    252230    StringBuilder sb = new StringBuilder();
    253231    sb.append("<td");
    254     if (getId() != null) sb.append(" id=\"").append(getId()).append("\"");
    255     if (getClazz() != null)
    256     {
    257       sb.append(" class=\"").append(getClazz()).append("\"");
    258     }
    259     if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\"");
     232    addIdAndStyles(sb);
    260233    String tooltip = getTooltip();
    261234    if (!displayText && tooltip == null) tooltip = getTitle();
     
    264237    if (displayImage)
    265238    {
    266       sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td>");
     239      sb.append("<table><tr><td>");
    267240      sb.append("<img src=\"").append(page.getRoot()).append("images/").append(getImage()).append("\"");
    268       sb.append(" border=\"0\"></td><td>");
    269     }
    270     if (displayText && getTitle() != null) sb.append("&nbsp;").append(getTitle()).append("&nbsp;");
     241      sb.append("></td><td>");
     242    }
     243    if (displayText && getTitle() != null)
     244    {
     245      sb.append("<span style=\"padding: 0px 2px 0px 2px;\"");
     246      if (getId() != null) sb.append(" id=\"").append(getId()).append(".text").append("\"");
     247      sb.append(">").append(getTitle());
     248    }
     249    try
     250    {
     251      pageContext.getOut().print(sb.toString());
     252    }
     253    catch (Exception ex)
     254    {
     255      throw new JspTagException(ex.getMessage());
     256    }
     257    return EVAL_BODY_INCLUDE;
     258  }
     259
     260  public int doEndTag()
     261      throws JspException
     262  {
     263    boolean displayImage = getImage() != null && toolbar.hasImages();
     264    boolean displayText = toolbar.hasText() || !displayImage;
     265   
     266    StringBuilder sb = new StringBuilder();
     267    if (displayText && getTitle() != null)
     268    {
     269      sb.append("</span>");
     270    }
    271271    if (displayImage)
    272272    {
     
    282282      throw new JspTagException(ex.getMessage());
    283283    }
    284     return SKIP_BODY;
     284    return EVAL_BODY_INCLUDE;
    285285  }
    286286
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Panel.java

    r5384 r5940  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2829
    2930/**
     
    101102*/
    102103public class Panel
    103   extends TagSupport
     104  extends StylableTag
    104105{
    105106
     
    109110  private static final long serialVersionUID = 8435173953529878997L;
    110111
    111   /**
    112     Optional <code>class</code> attribute
    113   */
    114   private String clazz = "panel";
     112  public Panel()
     113  {
     114    super("panel");
     115  }
    115116 
    116   /**
    117     Optional <code>style</code> attribute
    118   */
    119   private String style = null;
    120 
    121117  /**
    122118    If the panel should be visible or not.
     
    127123    Taglib initialization methods
    128124  */
    129   public void setClazz(String clazz)
    130   {
    131     this.clazz = clazz;
    132   }
    133   public String getClazz()
    134   {
    135     return clazz;
    136   }
    137 
    138   public void setStyle(String style)
    139   {
    140     this.style = style;
    141   }
    142   public String getStyle()
    143   {
    144     return style;
    145   }
    146125
    147126  public void setVisible(boolean visible)
     
    163142
    164143    StringBuilder sb = new StringBuilder();
    165     sb.append("<tr><td");
    166     if (getId() != null) sb.append(" id=\"").append(getId()).append("\"");
    167     if (getClazz() != null) sb.append(" class=\"").append(getClazz()).append("\"");
    168     if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\"");
     144    sb.append("<div");
     145    addIdAndStyles(sb);
    169146    sb.append(">\n");
    170147    try
     
    184161    if (!isVisible()) return EVAL_PAGE;
    185162    StringBuilder sb = new StringBuilder();
    186     sb.append("</td></tr>\n");
     163    sb.append("</div>\n");
    187164    try
    188165    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Row.java

    r5929 r5940  
    2525import javax.servlet.jsp.JspException;
    2626import javax.servlet.jsp.JspTagException;
    27 import javax.servlet.jsp.tagext.TagSupport;
     27
     28import net.sf.basedb.clients.web.taglib.StylableTag;
    2829
    2930/**
     
    111112*/
    112113public class Row
    113   extends TagSupport
     114  extends StylableTag
    114115{
    115116
     
    119120  private static final long serialVersionUID = 1975591924471893645L;
    120121
     122  public Row()
     123  {
     124    super(null);
     125  }
     126 
    121127  /**
    122128    The parent &lt;tbl:table&gt; tag.
     
    129135  private Data data;
    130136
    131   /**
    132     Optional <code>class</code> attribute
    133   */
    134   private String clazz = null;
    135  
    136   /**
    137     Optional <code>style</code> attribute
    138   */
    139   private String style = null;
    140  
    141137  /**
    142138    Optional <code>class</code> attribute that is applied when the mouse is over the current row.
     
    152148    Taglib initialization methods
    153149  */
    154   public void setClazz(String clazz)
    155   {
    156     this.clazz = clazz;
    157   }
    158   public String getClazz()
    159   {
    160     return clazz;
    161   }
    162 
    163   public void setStyle(String style)
    164   {
    165     this.style = style;
    166   }
    167   public String getStyle()
    168   {
    169     return style;
    170   }
    171 
    172150  public void setHightligh(String highlight)
    173151  {
     
    178156    return highlight;
    179157  }
    180  
    181158 
    182159  public void setVisible(boolean visible)
     
    206183    if (!isVisible()) return SKIP_BODY;
    207184
    208     String clazz = getClazz() == null ? table.getNextRowClass() : getClazz();
    209     if (getHighlight() != null) clazz += " " + getHighlight();
    210185    StringBuilder sb = new StringBuilder();
    211186    sb.append("<tr");
    212     if (getId() != null) sb.append(" id=\"").append(getId()).append("\"");
    213     sb.append(" class=\"").append(clazz).append("\"");
    214     if (getStyle() != null) sb.append(" style=\"").append(getStyle()).append("\"");
     187    addIdAndStyles(sb, table.getNextRowClass(), getHighlight());
    215188    sb.append(">\n");
    216 
    217189    try
    218190    {
  • trunk/src/clients/web/net/sf/basedb/clients/web/taglib/table/Table.java

    r5929 r5940  
    4343import javax.servlet.jsp.JspException;
    4444import javax.servlet.jsp.JspTagException;
    45 import javax.servlet.jsp.tagext.TagSupport;
    4645import javax.servlet.http.HttpServletRequest;
    4746
  • trunk/www/WEB-INF/table.tld

    r5929 r5940  
    123123    </attribute>
    124124    <attribute>
     125      <name>subclass</name>
     126      <required>false</required>
     127      <rtexprvalue>true</rtexprvalue>
     128    </attribute>
     129    <attribute>
    125130      <name>style</name>
    126131      <required>false</required>
     
    429434    </attribute>
    430435    <attribute>
     436      <name>subclass</name>
     437      <required>false</required>
     438      <rtexprvalue>true</rtexprvalue>
     439    </attribute>
     440    <attribute>
    431441      <name>style</name>
    432442      <required>false</required>
     
    514524    </attribute>
    515525    <attribute>
     526      <name>subclass</name>
     527      <required>false</required>
     528      <rtexprvalue>true</rtexprvalue>
     529    </attribute>
     530    <attribute>
    516531      <name>style</name>
    517532      <required>false</required>
     
    553568    </attribute>
    554569    <attribute>
     570      <name>subclass</name>
     571      <required>false</required>
     572      <rtexprvalue>true</rtexprvalue>
     573    </attribute>
     574    <attribute>
    555575      <name>style</name>
    556576      <required>false</required>
     
    568588    <tagclass>net.sf.basedb.clients.web.taglib.table.Header</tagclass>
    569589    <attribute>
    570       <name>clazz</name>
     590      <name>id</name>
     591      <required>false</required>
     592      <rtexprvalue>true</rtexprvalue>
     593    </attribute>
     594    <attribute>
     595      <name>clazz</name>
     596      <required>false</required>
     597      <rtexprvalue>true</rtexprvalue>
     598    </attribute>
     599    <attribute>
     600      <name>subclass</name>
    571601      <required>false</required>
    572602      <rtexprvalue>true</rtexprvalue>
     
    603633    </attribute>
    604634    <attribute>
     635      <name>subclass</name>
     636      <required>false</required>
     637      <rtexprvalue>true</rtexprvalue>
     638    </attribute>
     639    <attribute>
    605640      <name>style</name>
    606641      <required>false</required>
     
    732767    <tagclass>net.sf.basedb.clients.web.taglib.table.Form</tagclass>
    733768    <attribute>
     769      <name>id</name>
     770      <required>false</required>
     771      <rtexprvalue>true</rtexprvalue>
     772    </attribute>
     773    <attribute>
     774      <name>clazz</name>
     775      <required>false</required>
     776      <rtexprvalue>true</rtexprvalue>
     777    </attribute>
     778    <attribute>
     779      <name>subclass</name>
     780      <required>false</required>
     781      <rtexprvalue>true</rtexprvalue>
     782    </attribute>
     783    <attribute>
     784      <name>style</name>
     785      <required>false</required>
     786      <rtexprvalue>true</rtexprvalue>
     787    </attribute>
     788    <attribute>
    734789      <name>width</name>
    735790      <required>false</required>
  • trunk/www/exception/exception.jsp

    r5900 r5940  
    110110%>
    111111<base:page type="default" menu="exception" title="Unexpected error">
    112 <base:head scripts="exception.js" />
     112<base:head scripts="exception.js" styles="popup.css" />
    113113<base:body onload="Exception.fixWindow(true)">
    114   <base:note type="error" title="<%=exceptionClassName + " on page "+request.getAttribute("javax.servlet.error.request_uri")%>"
    115     style="width:90%;" messagestyle="height: 450px;">
    116     <table border="0" cellpadding="0" cellspacing="0" class="form">
    117     <tr>
    118       <td class="prompt">Version</td>
    119       <td class="info"><%=Application.getVersionString()%></td>
    120     </tr>
    121     <tr>
    122       <td class="prompt">Web server</td>
    123       <td class="info"><%=application.getServerInfo()%></td>
    124     </tr>
    125     <tr>
    126       <td class="prompt">Database Server</td>
    127       <td class="info"><%=Application.getDatabaseVersionString()%></td>
    128     </tr>
    129     <tr>
    130       <td class="prompt">Database Dialect</td>
    131       <td class="info"><%=Config.getString("db.dialect")%></td>
    132     </tr>
    133     <tr>
    134       <td class="prompt">JDBC Driver</td>
    135       <td class="info"><%=jdbcDriver%> <%=driverVersion%></td>
    136     </tr>
    137     <tr>
    138       <td class="prompt">Java runtime</td>
    139       <td class="info"><%=properties.getProperty("java.runtime.name")%>
    140         (<%=properties.getProperty("java.runtime.version")%>),
    141         <a href="<%=properties.getProperty("java.vendor.url")%>" target="_new"><%=properties.getProperty("java.vendor")%></a></td>
    142     </tr>
    143     <tr>
    144       <td class="prompt">Operating system</td>
    145       <td class="info"><%=properties.getProperty("os.name")%>
     114  <h1><%=exceptionClassName + " on page "+request.getAttribute("javax.servlet.error.request_uri")%></h1>
     115  <div class="content bottomborder" style="bottom: 3em;">
     116    <table class="fullform outlined topborder">
     117    <tr>
     118      <th>BASE Version</th>
     119      <td><%=Application.getVersionString()%></td>
     120    </tr>
     121    <tr>
     122      <th>Web server</th>
     123      <td><%=application.getServerInfo()%></td>
     124    </tr>
     125    <tr>
     126      <th>Database Server</th>
     127      <td><%=Application.getDatabaseVersionString()%></td>
     128    </tr>
     129    <tr>
     130      <th>Database Dialect</th>
     131      <td><%=Config.getString("db.dialect")%></td>
     132    </tr>
     133    <tr>
     134      <th>JDBC Driver</th>
     135      <td><%=jdbcDriver%> <%=driverVersion%></td>
     136    </tr>
     137    <tr>
     138      <th>Operating system</th>
     139      <td><%=properties.getProperty("os.name")%>
    146140        <%=properties.getProperty("os.arch")%>
    147141        <%=properties.getProperty("os.version")%>
     
    149143    </tr>
    150144    <tr>
    151       <td class="prompt">Memory</td>
    152       <td class="info">Total: <%=Values.formatBytes(runtime.totalMemory())%><br>
     145      <th>Java runtime</th>
     146      <td><%=properties.getProperty("java.runtime.name")%>
     147        (<%=properties.getProperty("java.runtime.version")%>),
     148        <a href="<%=properties.getProperty("java.vendor.url")%>" target="_new"><%=properties.getProperty("java.vendor")%></a></td>
     149    </tr>
     150    <tr>
     151      <th class="subprompt">Memory</th>
     152      <td>Total: <%=Values.formatBytes(runtime.totalMemory())%><br>
    153153        Free: <%=Values.formatBytes(runtime.freeMemory()) %><br>
    154154        Max: <%=Values.formatBytes(runtime.maxMemory()) %></td>
    155155    </tr>
    156156    <tr>
    157       <td class="prompt">Browser</td>
    158       <td class="info"><%=HTML.encodeTags(request.getHeader("User-Agent"))%></td>
    159     </tr>
    160     <tr>
    161       <td class="prompt">Error message</td>
    162       <td class="info"><%=HTML.formatLineBreaks(HTML.encodeTags(ex.getMessage(), ""))%></td>
    163     </tr>
    164     <tr>
    165       <td class="prompt">Stack trace</td>
    166       <td class="info"></td>
    167     </tr>
    168     </table>
    169    
    170     <%
    171     StackTraceElement[] st = ex.getStackTrace();
    172     out.println("<pre>");
    173     out.println(exceptionClassName);
    174     int i = 0;
    175     for (i=0; i < st.length && i < 8; i++)
    176     {
    177       out.print("...at ");
    178       out.println(HTML.encodeTags(st[i].toString().replaceAll("net.sf.basedb.core.", "")));
    179     }
    180     out.println("</pre>");
    181     if ((i < st.length) || (ex.getCause() != null))
    182     {
    183       out.println("<pre id=\"error_detail\" style=\"display:none;\">");
    184       while (ex != null)
    185       {
    186         for (int j=i; j < st.length; j++)
     157      <th>Browser</th>
     158      <td><%=HTML.encodeTags(request.getHeader("User-Agent"))%></td>
     159    </tr>
     160    <tr>
     161      <th>Error message</th>
     162      <td><%=HTML.formatLineBreaks(HTML.encodeTags(ex.getMessage(), ""))%></td>
     163    </tr>
     164    <tr class="dynamic">
     165      <th>Stacktrace</th>
     166      <td>
     167        <%
     168        StackTraceElement[] st = ex.getStackTrace();
     169        out.println("<pre>");
     170        out.println(exceptionClassName);
     171        int i = 0;
     172        for (i=0; i < st.length && i < 8; i++)
    187173        {
    188174          out.print("...at ");
    189           out.println(HTML.encodeTags(st[j].toString().replaceAll("net.sf.basedb.core.", "")));
     175          out.println(HTML.encodeTags(st[i].toString().replaceAll("net.sf.basedb.core.", "")));
    190176        }
    191         ex = ex.getCause();
    192         if (ex != null)
     177        out.println("</pre>");
     178        if ((i < st.length) || (ex.getCause() != null))
    193179        {
    194           st = ex.getStackTrace();
    195           i = 0;
    196           out.print("\nCaused by: "+ex.getClass().getName()+": " + ex.getMessage() + "\n");
     180          out.println("<pre id=\"error_detail\" style=\"display:none;\">");
     181          while (ex != null)
     182          {
     183            for (int j=i; j < st.length; j++)
     184            {
     185              out.print("...at ");
     186              out.println(HTML.encodeTags(st[j].toString().replaceAll("net.sf.basedb.core.", "")));
     187            }
     188            ex = ex.getCause();
     189            if (ex != null)
     190            {
     191              st = ex.getStackTrace();
     192              i = 0;
     193              out.print("\nCaused by: "+ex.getClass().getName()+": " + ex.getMessage() + "\n");
     194            }
     195          }
     196          out.println("</pre>");
    197197        }
    198       }
    199       out.println("</pre>");
    200     }
    201     %>
    202     &nbsp;<span id="more_detail">
    203       <base:icon image="bullet.gif" clazz="" />
    204       <a href="javascript:Main.show('error_detail');Main.hide('more_detail');"><%=st.length-i%> more...</a>
    205     </span>
    206   </base:note>
    207   <base:buttongroup>
     198        %>
     199        <span id="more_detail">
     200          <base:icon image="gonext.png" />
     201          <a href="javascript:Main.show('error_detail');Main.hide('more_detail');"><%=st.length-i%> more...</a>
     202        </span>
     203     
     204      </td>
     205    </table>
     206  </div>
     207 
     208  <base:buttongroup subclass="dialogbuttons">
    208209    <base:button id="goback" onclick="<%="history.go(-1)"%>" title="Back"/>
    209210    <base:button id="close" onclick="<%="window.top.close()"%>" title="Close"/>
  • trunk/www/include/scripts/exception.js

    r5747 r5940  
    4949      // popup window --> Hide menubar
    5050      Main.hide('menubar');
     51      document.body.className = 'popup';
    5152      if (resizeIfPopup)
    5253      {
  • trunk/www/include/scripts/main.js

    r5929 r5940  
    26832683    var imgRoot = getRoot() + 'images/';
    26842684    var text = '<div class="multioptioncontrol">';
    2685     text += '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>';
     2685    text += '<table><tr>';
    26862686    if (multiple)
    26872687    {
     
    26982698    text += '<td class="link" style="text-align: right;"';
    26992699    text += ' title="Perform search" onclick="MultiOptions.activeField.form.submit();">';
    2700     text += '<img src="' + imgRoot + 'ok.gif"></td>';
     2700    text += '<img src="' + imgRoot + 'ok.png"></td>';
    27012701    text += '</tr></table>';
    27022702    text += '</div>';
  • trunk/www/include/styles/explorer.css

    r5426 r5940  
    2727*/
    2828
    29 .annotationsummary {
    30   border: 1px solid #999999;
     29.annotationsummary
     30{
     31  border: 1px solid #A0A0A0;
    3132  margin-top: 5px;
    3233}
    3334
    34 .annotationsummary .summaryheader {
     35.annotationsummary td
     36{
     37  padding: 1px 2px 1px 2px;
     38}
     39.annotationsummary .summaryheader
     40{
    3541  font-weight: bold;
    36   background: #E0E0E0;
    37   border-bottom: 1px solid #999999;
     42  width: 10em;
     43  background: #E8E8E8;
     44  border-bottom: 1px solid #A0A0A0;
     45}
     46.annotationsummary .plotheader
     47{
     48  background: #E8E8E8;
     49  border-bottom: 1px solid #A0A0A0;
    3850}
    3951
    40 .annotationsummary .groupheader {
     52.annotationsummary .groupheader
     53{
    4154  font-weight: bold;
     55  width: 10em;
    4256  text-align: right;
    43   border-bottom: 1px solid #999999;
    44   border-left: 1px solid #999999;
     57  border-bottom: 1px solid #A0A0A0;
     58  border-left: 1px solid #A0A0A0;
    4559}
    4660
    47 .annotationsummary .value {
     61.annotationsummary .value
     62{
    4863  text-align: right;
    49   border-left: 1px solid #999999;
     64  border-left: 1px solid #A0A0A0;
    5065}
    5166
  • trunk/www/include/styles/main.css

    r5939 r5940  
    972972}
    973973
     974.multioptioncontrol table
     975{
     976  width: 100%;
     977}
     978
    974979.multioptionoptions {
    975980  height: 200px;
  • trunk/www/include/styles/table.css

    r5938 r5940  
    3838}
    3939
     40/* A panel is a full-width area above the table */
     41.itemlist div.panel
     42{
     43  width: 100%;
     44  padding: 1px 4px 2px 6px;
     45  height: 1.6em;
     46  max-height: 1.75em;
     47}
     48
    4049/* The actual table containing data */
    4150.itemlist table.data
     
    120129
    121130/*
    122 .itemlist .panel {
    123   xborder-top: 1px solid #FFFFFF;
    124   xborder-left: 1px solid #FFFFFF;
    125   xborder-right: 1px solid #999999;
    126   border-bottom: 1px solid #A0A0A0;
    127   padding: 3px;
    128 }
    129131
    130132.itemlist .currentpage {
  • trunk/www/include/styles/toolbar.css

    r5938 r5940  
    4848}
    4949
    50 .toolbar .button 
     50.toolbar .button
    5151{
    52   padding: 3px;
     52  padding: 2px;
    5353  cursor: pointer;
    5454  white-space: nowrap;
     
    5858{
    5959  border: 2px solid #2288AA;
    60   padding: 1px;
     60  padding: 0px;
    6161  border-radius: 4px;
    6262}
     
    7878}
    7979
    80 .toolbar .label {
     80.toolbar .label
     81{
    8182  font-weight: bold;
    82   border-top: 1px solid #FFFFFF;
    83   border-left: 1px solid #FFFFFF;
    84   border-bottom: 0px solid #999999;
    85   border-right: 2px solid #999999;
    86   padding: 3px;
     83  padding: 2px;
     84  white-space: nowrap;
    8785}
    8886
  • trunk/www/views/experiments/bioassays/view_bioassay.jsp

    r5937 r5940  
    124124  </base:head>
    125125  <base:body>
    126     <p>
    127     <p:path>
    128       <p:pathelement title="Experiments" href="<%="../index.jsp?ID="+ID%>" />
    129       <p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
    130         href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experiment.getId()%>" />
    131       <p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
    132         href="<%="index.jsp?ID="+ID+"&bioassayset_id="+bioAssaySet.getId()%>" />
    133       <p:pathelement title="<%=HTML.encodeTags(bioAssay.getName())%>" />
    134     </p:path>
    135 
    136     <t:tabcontrol id="main" active="<%=tabId%>" switch="switchTab">
     126    <p:path><p:pathelement
     127      title="Experiments" href="<%="../index.jsp?ID="+ID%>"
     128      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
     129        href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experiment.getId()%>"
     130      /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
     131        href="<%="index.jsp?ID="+ID+"&bioassayset_id="+bioAssaySet.getId()%>"
     132      /><p:pathelement title="<%=HTML.encodeTags(bioAssay.getName())%>"
     133      /></p:path>
     134
     135    <t:tabcontrol
     136      id="main"
     137      subclass="content mastertabcontrol"
     138      active="<%=tabId%>" switch="switchTab">
    137139    <t:tab id="properties" title="Properties">
    138     <tbl:toolbar
    139       >
    140       <tbl:button
    141         disabled="<%=writePermission ? false : true%>"
    142         image="edit.gif"
    143         onclick="editItem()"
    144         title="Edit&hellip;"
    145         tooltip="<%=writePermission ? "Edit this bioassay" : "You do not have permission to edit this bioassay"%>"
    146       />
    147       <tbl:button
    148         image="import.gif"
    149         onclick="runPlugin('ImportItem')"
    150         title="Import&hellip;"
    151         tooltip="Import data"
    152         visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
    153       />
    154       <tbl:button
    155         image="export.gif"
    156         onclick="runPlugin('ExportItem')"
    157         title="Export&hellip;"
    158         tooltip="Export data"
    159         visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
    160       />
    161       <tbl:button
    162         image="runplugin.gif"
    163         onclick="runPlugin('RunPlugin')"
    164         title="Run plugin&hellip;"
    165         tooltip="Run a plugin"
    166         visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
    167       />
    168       <tbl:button
    169         image="plotter.gif"
    170         onclick="openPlotTool()"
    171         title="Plot tool&hellip;"
    172         tooltip="A simple tool for generating plots"
    173         visible="<%=hasDbSpots%>"
    174       />
    175       <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
    176         wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
    177       <tbl:button
    178         image="help.png"
    179         onclick="<%="Main.openHelp('" + ID +"', 'bioassay.view.properties')"%>"
    180         title="Help&hellip;"
    181         tooltip="Get help about this page"
    182       />
    183       </tbl:toolbar>
    184      
    185     <div class="boxedbottom">
    186       <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(bioAssay)%></i></div>
    187       <table class="form" cellspacing=0>
     140      <div>
     141      <table class="fullform bottomborder">
    188142      <tr>
    189         <td class="prompt">Name</td>
     143        <th class="itemstatus">
     144        </th>
     145        <td style="padding: 0px;">
     146          <tbl:toolbar subclass="bottomborder">
     147            <tbl:button
     148              disabled="<%=writePermission ? false : true%>"
     149              image="edit.gif"
     150              onclick="editItem()"
     151              title="Edit&hellip;"
     152              tooltip="<%=writePermission ? "Edit this bioassay" : "You do not have permission to edit this bioassay"%>"
     153            />
     154            <tbl:button
     155              image="import.gif"
     156              onclick="runPlugin('ImportItem')"
     157              title="Import&hellip;"
     158              tooltip="Import data"
     159              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
     160            />
     161            <tbl:button
     162              image="export.gif"
     163              onclick="runPlugin('ExportItem')"
     164              title="Export&hellip;"
     165              tooltip="Export data"
     166              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
     167            />
     168            <tbl:button
     169              image="runplugin.gif"
     170              onclick="runPlugin('RunPlugin')"
     171              title="Run plugin&hellip;"
     172              tooltip="Run a plugin"
     173              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
     174            />
     175            <tbl:button
     176              image="plotter.gif"
     177              onclick="openPlotTool()"
     178              title="Plot tool&hellip;"
     179              tooltip="A simple tool for generating plots"
     180              visible="<%=hasDbSpots%>"
     181            />
     182            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
     183              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
     184            <tbl:button
     185              image="help.png"
     186              onclick="<%="Main.openHelp('" + ID +"', 'bioassay.view.properties')"%>"
     187              title="Help&hellip;"
     188              tooltip="Get help about this page"
     189            />
     190          </tbl:toolbar>
     191        </td>
     192      </tr>
     193      <tr>
     194        <th>Name</th>
    190195        <td><%=HTML.encodeTags(bioAssay.getName())%></td>
    191196      </tr>
    192197      <tr>
    193         <td class="prompt">Spots</td>
     198        <th>Spots</th>
    194199        <td>db: <%=bioAssay.getNumSpots()%>; file: <%=bioAssay.getNumFileSpots()%></td>
    195200      </tr>
    196201      <tr >
    197         <td class="prompt">Description</td>
     202        <th>Description</th>
    198203        <td><%=HTML.encodeTags(bioAssay.getDescription())%></td>
    199204      </tr>
    200205      </table>
     206      </div>
    201207
    202208      <jsp:include page="../../../common/datafiles/list_files.jsp">
     
    211217      rawQuery.order(Orders.asc(Hql.property("name")));
    212218      ItemResultList<RawBioAssay> rawBioAssays = rawQuery.list(dc);
    213       if (rawBioAssays.size() == 0)
    214       {
    215         %>
    216         <h4>Raw bioassays</h4>
    217         No raw bioassays are linked to this bioassay
    218         (or, you don't have permission to view them).
     219      %>
     220      <base:section
     221        id="rawBioAssaySection"
     222        title="<%="Raw bioassays (" + rawBioAssays.size() + ")"%>"
     223        context="<%=cc%>"
     224        >
    219225        <%
    220       }
    221       else
    222       {
    223         %>
    224         <base:section
    225           id="rawBioAssaySection"
    226           title="<%="Raw bioassays (" + rawBioAssays.size() + ")"%>"
    227           context="<%=cc%>"
    228           >
     226        if (rawBioAssays.size() == 0)
     227        {
     228          %>
     229          <div class="messagecontainer note">
     230          No raw bioassays are linked to this bioassay
     231          (or, you don't have permission to view them).
     232          </div>
     233          <%
     234        }
     235        else
     236        {
     237          %>
    229238          <tbl:table
    230239            id="rawBioAssays"
    231            
    232240            columns="all"
    233241            >
    234           <tbl:columndef
    235             id="name"
    236             title="Name"
    237           />
    238           <tbl:columndef
    239             id="spots"
    240             title="Spots"
    241           />
    242           <tbl:columndef
    243             id="description"
    244             title="Description"
    245           />
    246           <%
    247           ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
    248           efQuery.include(Include.ALL);
    249           efQuery.order(Orders.asc(Hql.property("name")));
    250           ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
    251           for (AnnotationType at : experimentalFactors)
    252           {
    253             Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
     242            <tbl:columndef
     243              id="name"
     244              title="Name"
     245            />
     246            <tbl:columndef
     247              id="spots"
     248              title="Spots"
     249            />
     250            <tbl:columndef
     251              id="description"
     252              title="Description"
     253            />
     254            <%
     255            ItemQuery<AnnotationType> efQuery = experiment.getExperimentalFactors();
     256            efQuery.include(Include.ALL);
     257            efQuery.order(Orders.asc(Hql.property("name")));
     258            ItemResultList<AnnotationType> experimentalFactors = efQuery.list(dc);
     259            for (AnnotationType at : experimentalFactors)
     260            {
     261              Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
     262              %>
     263              <tbl:columndef
     264                id="<%="at"+at.getId()%>"
     265                title="<%=HTML.encodeTags(at.getName())%>"
     266                formatter="<%=formatter%>"
     267              />
     268              <%
     269            }
    254270            %>
    255             <tbl:columndef
    256               id="<%="at"+at.getId()%>"
    257               title="<%=HTML.encodeTags(at.getName())%>"
    258               formatter="<%=formatter%>"
    259             />
    260             <%
    261           }
    262           %>
    263           <tbl:data>
    264             <tbl:columns>
    265             </tbl:columns>
    266             <tbl:rows>
    267             <%
    268             for (RawBioAssay item : rawBioAssays)
    269             {
    270               %>
    271               <tbl:row>
    272                 <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
    273                 <tbl:cell column="spots"><%=item.getSpots()%></tbl:cell>
    274                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
    275                 <%
    276                 AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
    277                 for (AnnotationType at : experimentalFactors)
    278                 {
    279                   String value = "<i>- none -</i>";
    280                   List<Annotation> all = as == null ? null : as.findAnnotations(dc, at, true);
    281                   Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
    282                   if (all != null && all.size() > 0)
     271            <tbl:data>
     272              <tbl:headers>
     273                <tbl:headerrow>
     274                  <tbl:columnheaders />
     275                </tbl:headerrow>
     276              </tbl:headers>
     277              <tbl:rows>
     278              <%
     279              for (RawBioAssay item : rawBioAssays)
     280              {
     281                %>
     282                <tbl:row>
     283                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
     284                  <tbl:cell column="spots"><%=item.getSpots()%></tbl:cell>
     285                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
     286                  <%
     287                  AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
     288                  for (AnnotationType at : experimentalFactors)
    283289                  {
    284                     for (Annotation a : all)
     290                    String value = "<i>- none -</i>";
     291                    List<Annotation> all = as == null ? null : as.findAnnotations(dc, at, true);
     292                    Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
     293                    if (all != null && all.size() > 0)
    285294                    {
    286                       List values = a.getValues();
    287                       Annotatable aItem = null;
    288                       try
     295                      for (Annotation a : all)
    289296                      {
    290                         aItem = a.getAnnotationSet().getItem();
    291                       }
    292                       catch (Throwable t)
    293                       {}
    294                       List toAdd = factorValues.get(aItem);
    295                       if (toAdd == null)
    296                       {
    297                         toAdd = new LinkedList();
    298                         factorValues.put(aItem, toAdd);
    299                       }
    300                       toAdd.addAll(values);
    301                     }
    302                   }
    303                   %>
    304                   <tbl:cell column="<%="at"+at.getId()%>"
    305                     >
    306                     <%
    307                     for (Map.Entry<Annotatable, List> entry : factorValues.entrySet())
    308                     {
    309                       Annotatable aItem = entry.getKey();
    310                       List values = entry.getValue();
    311                       %>
    312                       <tbl:cellvalue list="<%=values%>" />
    313                       <%
    314                       if (aItem != null && aItem.hasPermission(Permission.WRITE))
    315                       {
    316                         %>: <base:icon image="edit.gif"
    317                           onclick="<%="editInheritedAnnotation('"+aItem.getType().name()+"',"+aItem.getId()+","+at.getId()+")"%>"
    318                           tooltip="Modify the values of this experimental factor" />
    319                         <%
     297                        List values = a.getValues();
     298                        Annotatable aItem = null;
     299                        try
     300                        {
     301                          aItem = a.getAnnotationSet().getItem();
     302                        }
     303                        catch (Throwable t)
     304                        {}
     305                        List toAdd = factorValues.get(aItem);
     306                        if (toAdd == null)
     307                        {
     308                          toAdd = new LinkedList();
     309                          factorValues.put(aItem, toAdd);
     310                        }
     311                        toAdd.addAll(values);
    320312                      }
    321313                    }
    322314                    %>
    323                   </tbl:cell>
    324                   <%
    325                 }
    326                 %>
    327               </tbl:row>
    328               <%
    329             }
    330             %>
    331             </tbl:rows>
    332           </tbl:data>
     315                    <tbl:cell column="<%="at"+at.getId()%>"
     316                      >
     317                      <%
     318                      for (Map.Entry<Annotatable, List> entry : factorValues.entrySet())
     319                      {
     320                        Annotatable aItem = entry.getKey();
     321                        List values = entry.getValue();
     322                        %>
     323                        <tbl:cellvalue list="<%=values%>" />
     324                        <%
     325                        if (aItem != null && aItem.hasPermission(Permission.WRITE))
     326                        {
     327                          %>: <base:icon image="edit.gif"
     328                            onclick="<%="editInheritedAnnotation('"+aItem.getType().name()+"',"+aItem.getId()+","+at.getId()+")"%>"
     329                            tooltip="Modify the values of this experimental factor" />
     330                          <%
     331                        }
     332                      }
     333                      %>
     334                    </tbl:cell>
     335                    <%
     336                  }
     337                  %>
     338                </tbl:row>
     339                <%
     340              }
     341              %>
     342              </tbl:rows>
     343            </tbl:data>
    333344          </tbl:table>
    334         </base:section>
    335         <%
    336       }
    337       %>
     345          <%
     346        }
     347        %>
     348      </base:section>
    338349      <jsp:include page="../../../common/anytoany/list_anytoany.jsp">
    339350        <jsp:param name="ID" value="<%=ID%>" />
     
    342353        <jsp:param name="title" value="Other items related to this bioassay" />
    343354      </jsp:include>
    344     </div>
    345355    </t:tab>
    346356   
    347357    <t:tab id="annotations" title="Annotations"
    348       tooltip="View annotation values" class="white">
     358      tooltip="View annotation values" clazz="white">
    349359      <jsp:include page="../../../common/annotations/list_annotations.jsp">
    350360        <jsp:param name="item_type" value="<%=itemType.name()%>" />
  • trunk/www/views/experiments/bioassaysets/view_bioassayset.jsp

    r5939 r5940  
    282282          />
    283283        </th>
    284         <td style="padding: 0px;" colspan="2">
     284        <td style="padding: 0px;">
    285285          <tbl:toolbar subclass="bottomborder">
    286286            <tbl:button
     
    373373      </tr>
    374374    </table>
    375     <table style="width: 100%; height: 16em;" class="bottomborder">
     375    <table style="width: 100%; height: 22em;" class="bottomborder">
    376376    <tr valign="top">
    377377      <td style="width: 50%; height: 100%;">
     
    406406        <td><%=HTML.niceFormat(bioAssaySet.getDescription())%></td>
    407407      </tr>
    408       <tbody class="sectionheader">
    409         <tr>
    410           <th colspan="2">Transformation &amp; job</th>
    411         </tr>
    412       </tbody>
    413408      <tr>
    414409        <th>Transformation</th>
     
    421416      </tr>
    422417      <tr >
    423         <th>Started</th>
     418        <th class="subprompt">- started</th>
    424419        <td>
    425420          <%=job == null ? "" : dateTimeFormatter.format(job.getStarted())%>
     
    427422      </tr>
    428423      <tr>
    429         <th>Ended</th>
     424        <th class="subprompt">- ended</th>
    430425        <td>
    431426          <%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%>
     
    433428      </tr>
    434429      <tr>
    435         <th>Server</th>
     430        <th class="subprompt">- server</th>
    436431        <td>
    437432          <%=job == null ? "" : HTML.encodeTags(job.getServer())%>
    438433        </td>
    439434      </tr>
    440       <tr>
    441         <th>Description</th>
     435      <tr class="dynamic">
     436        <th class="subprompt">- description</th>
    442437        <td><%=HTML.niceFormat(transformation.getDescription())%></td>
    443438      </tr>
    444439      </table>
    445440    </td>
    446     <td style="width: 50%;" class="leftborder">
     441    <td style="width: 50%; height: 100%;" class="leftborder">
    447442      <table class="fullform" >
    448       <tbody class="sectionheader">
    449         <tr>
    450           <th colspan="2">Plugin &amp; parameters</th>
    451         </tr>
    452       </tbody>
    453443      <tr>
    454444        <th>Plugin</th>
     
    461451          configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
    462452      </tr>
     453      <tbody class="sectionheader">
     454        <tr>
     455          <th colspan="2">Plugin parameters</th>
     456        </tr>
     457      </tbody>
    463458        <%
    464459        if (job != null)
     
    519514            %>
    520515            <tr>
    521             <th><span title="<%=description%>"><%=name%></span></th>
     516            <th class="subprompt"><span title="<%=description%>">- <%=name%></span></th>
    522517              <td>
    523518                <%=displayValue%>
  • trunk/www/views/experiments/explorer/view/view.jsp

    r5935 r5940  
    8888<%!
    8989  private static final Item itemType = Item.SPOTDATA;
    90   private static final String defaultReporterColumns = "externalId,symbol";
     90  private static final String defaultReporterColumns = "filter,externalId,symbol";
    9191%>
    9292<%
     
    101101try
    102102{
    103   Formatter<Date> dateFormatter = FormatterFactory.getDateTimeFormatter(sc);
     103  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
     104  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
    104105  String title = null;
    105106  final BioAssaySet bioAssaySet = BioAssaySet.getById(dc, bioAssaySetId);
     
    276277    }
    277278  </script>
     279  <style>
     280    .special td.cell:first-of-type
     281    {
     282      border-right: 1px solid #A0A0A0;
     283    }
     284  </style>
    278285  </base:head>
    279286  <base:body>
    280     <p>
    281     <p:path>
    282       <p:pathelement title="Experiments" href="<%="../../index.jsp?ID="+ID%>" />
    283       <p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
    284         href="<%="../../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experiment.getId()%>" />
    285       <p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
    286         href="<%="../../bioassaysets/index.jsp?ID="+ID+"&cmd=ViewItem&item_id="+bioAssaySetId%>" />
    287       <p:pathelement title="Explorer" />
    288     </p:path>
     287    <p:path><p:pathelement title="Experiments" href="<%="../../index.jsp?ID="+ID%>"
     288      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
     289        href="<%="../../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experiment.getId()%>"
     290      /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
     291        href="<%="../../bioassaysets/index.jsp?ID="+ID+"&cmd=ViewItem&item_id="+bioAssaySetId%>"
     292      /><p:pathelement title="Explorer" /></p:path>
    289293   
    290     <t:tabcontrol id="explorer" switch="switchTab" remember="false" active="view">
     294    <t:tabcontrol
     295      id="explorer"
     296      subclass="content mastertabcontrol"
     297      switch="switchTab"
     298      remember="false" active="view">
    291299    <t:tab id="search" title="Reporter search" />
    292300   
    293301    <t:tab id="view" title="Reporter view">
    294     <div class="boxed">
    295    
    296302    <%
    297303    Collection<PropertyFilter> filters = reporterContext.getPropertyFilters();
    298304    String filter = filters != null && filters.size() > 0 ?
    299       "(" + Values.getString(filters, ") AND (", true).replaceAll("@|�", "") + ")" : "- none -";
    300     %>
    301     <table class="form">
    302     <tr>
    303       <td class="prompt">Filter</td>
    304       <td>
    305       <%=HTML.encodeTags(filter)%>
    306       </td>
    307     </tr>
    308     </table>
    309    
    310    
    311     <%
    312     if (reporter != null)
     305      Values.getString(filters, " AND ", true).replaceAll("@|�", "") : "- none -";
     306    if (reporter == null)
     307    {
     308      %>
     309      <table class="fullform bottomborder">
     310      <tr>
     311        <th>Filter</th>
     312        <td><%=HTML.encodeTags(filter)%></td>
     313      </tr>
     314      <tr>
     315        <th class="subprompt"></th>
     316        <td>
     317          <div class="messagecontainer note">
     318          No reporters found.
     319          </div>
     320        </td>
     321      </table>
     322      <%
     323    }
     324    else
    313325    {
    314326      %>
     
    317329      <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
    318330      <input type="hidden" name="cmd" value="SetReporterIndex">
    319       <h4 class="docked">Current reporter
     331     
     332      <tbl:toolbar subclass="bottomborder">
     333        <tbl:label style="padding: 0px 2px 0px 6px;">
     334          Current reporter
    320335            <input name="newReporterIndex" type="text" class="text" value="<%=reporterIndex+1%>"
    321         onkeypress="return Numbers.integerOnly(event, true, validateReporterIndex)"
    322         size="6" maxlength="8" title="Enter a number between 1 and <%=matchingReporters%>">
    323       of <%=matchingReporters %>
    324       <%
    325       if (reporterIndex == 0 || matchingReporters == 0)
    326       {
    327         %>
    328         <base:icon image="first_gray.gif" />
    329         <base:icon image="previous_gray.gif" />
    330         <%
    331       }
    332       else
    333       {
    334         %>
    335         <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=0"
    336           title="Go the first reporter"><base:icon image="first.gif" /></a>
    337         <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=reporterIndex-1%>"
    338           title="Go the previous reporter"><base:icon image="previous.gif" /></a>
    339         <%
    340       }
    341       %>
    342       &nbsp;&nbsp;
    343       <%
    344       if (reporterIndex == matchingReporters - 1 || matchingReporters == 0)
    345       {
    346         %>
    347         <base:icon image="next_gray.gif" />
    348         <base:icon image="last_gray.gif" />
    349         <%
    350       }
    351       else
    352       {
    353         %>
    354         <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=reporterIndex+1%>"
    355           title="Go the next reporter"><base:icon image="next.gif" /></a>
    356         <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=matchingReporters-1%>"
    357           title="Go the last reporter"><base:icon image="last.gif" /></a>
    358         <%
    359       }
    360       %>
    361       </h4>
    362       </form>
    363      
    364       <tbl:toolbar>
     336            onkeypress="return Numbers.integerOnly(event, true, validateReporterIndex)"
     337            size="6" maxlength="8" title="Enter a number between 1 and <%=matchingReporters%>">
     338          of <%=matchingReporters %>
     339          <%
     340          if (reporterIndex == 0 || matchingReporters == 0)
     341          {
     342            %>
     343            <base:icon image="first_gray.gif" />
     344            <base:icon image="previous_gray.gif" />
     345            <%
     346          }
     347          else
     348          {
     349            %>
     350            <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=0"
     351              title="Go the first reporter"><base:icon image="first.gif" /></a>
     352            <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=reporterIndex-1%>"
     353              title="Go the previous reporter"><base:icon image="previous.gif" /></a>
     354            <%
     355          }
     356          %>
     357          &nbsp;&nbsp;
     358          <%
     359          if (reporterIndex == matchingReporters - 1 || matchingReporters == 0)
     360          {
     361            %>
     362            <base:icon image="next_gray.gif" />
     363            <base:icon image="last_gray.gif" />
     364            <%
     365          }
     366          else
     367          {
     368            %>
     369            <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=reporterIndex+1%>"
     370              title="Go the next reporter"><base:icon image="next.gif" /></a>
     371            <a href="index.jsp?ID=<%=ID%>&cmd=SetReporterIndex&bioassayset_id=<%=bioAssaySetId%>&reporterIndex=<%=matchingReporters-1%>"
     372              title="Go the last reporter"><base:icon image="last.gif" /></a>
     373            <%
     374          }
     375          %>
     376        </tbl:label>
    365377        <tbl:button
    366378          image="columns.gif"
     
    370382        />
    371383      </tbl:toolbar>
     384      </form>
    372385   
    373     <div class="boxedbottom">
    374     <tbl:table
    375       id="reporter"
    376       clazz="form"
    377       columns="<%=Values.getString(cc.getSetting("reporter-columns"), defaultReporterColumns)%>"
    378       action="index.jsp"
    379       sc="<%=sc%>"
    380       item="<%=itemType%>"
    381       subcontext="<%=subContext%>"
    382       >
    383       <tbl:hidden
    384         name="bioassayset_id"
    385         value="<%=String.valueOf(bioAssaySetId)%>"
    386       />
    387       <%
    388       for (TableColumn tc : reporterColumns)
    389       {
    390         %>
    391         <tbl:columndef
    392           id="<%=tc.getId()%>"
    393           clazz="prompt"
    394           title="<%=HTML.encodeTags(tc.getTitle())%>"
    395           formatter="<%=tc.getFormatter()%>"
     386      <tbl:table
     387        id="reporter"
     388        columns="<%="filter,"+Values.getString(cc.getSetting("reporter-columns"), defaultReporterColumns)%>"
     389        action="index.jsp"
     390        sc="<%=sc%>"
     391        item="<%=itemType%>"
     392        subcontext="<%=subContext%>"
     393        subclass="bottomborder"
     394        >
     395        <tbl:hidden
     396          name="bioassayset_id"
     397          value="<%=String.valueOf(bioAssaySetId)%>"
     398        />
     399        <tbl:columndef
     400          id="filter"
     401          title="Filter"
     402          show="always"
     403          subclass="leftborder"
    396404        />
    397405        <%
    398       }
    399       List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
    400       %>
    401       <tbl:form width="2">
    402         <tbl:cell column="id"><%=reporter.getId()%></tbl:cell>
    403         <tbl:cell column="version"><%=reporter.getVersion()%></tbl:cell>
    404         <tbl:cell column="name"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true)%></tbl:cell>
    405         <tbl:cell column="externalId"><%=Base.getLink(ID, reporter.getExternalId(), Item.REPORTER, reporter.getId(), true)%></tbl:cell>
    406         <tbl:cell column="symbol"><%=HTML.encodeTags(reporter.getSymbol())%></tbl:cell>
    407         <tbl:cell column="lastUpdate"><%=dateFormatter.format(reporter.getLastUpdate())%></tbl:cell>
    408         <tbl:cell column="type"><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></tbl:cell>
    409         <tbl:cell column="description"><%=HTML.niceFormat(reporter.getDescription())%></tbl:cell>
    410         <%
    411         if (reporterProperties != null)
     406        for (TableColumn tc : reporterColumns)
    412407        {
    413           for (ExtendedProperty ep : reporterProperties)
    414           {
    415             String name = ep.getName();
    416             %>
    417             <tbl:cell column="<%=ep.getName()%>"><tbl:cellvalue value="<%=reporter.getExtended(name)%>" /></tbl:cell>
    418             <%
    419           }
     408          %>
     409          <tbl:columndef
     410            id="<%=tc.getId()%>"
     411            title="<%=HTML.encodeTags(tc.getTitle())%>"
     412            formatter="<%=tc.getFormatter()%>"
     413            show="<%=reporter == null ? "never" : "auto" %>"
     414          />
     415          <%
    420416        }
     417        List<ExtendedProperty> reporterProperties = ExtendedProperties.getProperties("ReporterData");
    421418        %>
    422       </tbl:form>
    423     </tbl:table>
    424     </div>
    425     <%
    426     }
    427     else
    428     {
    429       %>
    430       No reporters found.
    431       <%
    432     }
    433     %>
    434    
     419        <tbl:form width="2" clazz="fullform special">
     420          <tbl:cell column="filter"><%=HTML.encodeTags(filter)%></tbl:cell>
     421          <tbl:cell column="id"><%=reporter.getId()%></tbl:cell>
     422          <tbl:cell column="version"><%=reporter.getVersion()%></tbl:cell>
     423          <tbl:cell column="name"><%=Base.getLink(ID, reporter.getName(), Item.REPORTER, reporter.getId(), true)%></tbl:cell>
     424          <tbl:cell column="externalId"><%=Base.getLink(ID, reporter.getExternalId(), Item.REPORTER, reporter.getId(), true)%></tbl:cell>
     425          <tbl:cell column="symbol"><%=HTML.encodeTags(reporter.getSymbol())%></tbl:cell>
     426          <tbl:cell column="lastUpdate"><%=dateTimeFormatter.format(reporter.getLastUpdate())%></tbl:cell>
     427          <tbl:cell column="lastSource"><%=HTML.encodeTags(reporter.getLastSource())%></tbl:cell>
     428          <tbl:cell column="entryDate"><%=dateFormatter.format(reporter.getEntryDate()) %></tbl:cell>
     429          <tbl:cell column="type"><base:propertyvalue dbcontrol="<%=dc%>" item="<%=reporter%>" property="reporterType" /></tbl:cell>
     430          <tbl:cell column="description"><%=HTML.niceFormat(reporter.getDescription())%></tbl:cell>
     431          <%
     432          if (reporterProperties != null)
     433          {
     434            for (ExtendedProperty ep : reporterProperties)
     435            {
     436              String name = ep.getName();
     437              %>
     438              <tbl:cell column="<%=ep.getName()%>"><tbl:cellvalue value="<%=reporter.getExtended(name)%>" /></tbl:cell>
     439              <%
     440            }
     441          }
     442          %>
     443        </tbl:form>
     444      </tbl:table>
     445 
    435446    <base:section
    436447      id="annotation"
    437448      title="<%="Annotation summary (" + selectedAnnotationTypes.size() + " selected)"%>"
    438449      context="<%=cc%>"
     450      style="border-bottom: 0px;"
    439451      >
    440452      <form name="annotationSummary" action="index.jsp" method="POST" onsubmit="return false;">
     
    450462          <input type="hidden" name="annotationtype_id" value="">
    451463          </td></tr></table>
    452         <%
    453         if (selectedAnnotationTypes.size() > 0)
    454         {
     464          <%
    455465          for (Map.Entry<AnnotationType, AnnotationSummary> entry : selectedAnnotationTypes.entrySet())
    456466          {
     
    458468            AnnotationSummary summary = entry.getValue();
    459469            %>
    460             <table border="0" cellspacing="0" cellpadding="2" class="annotationsummary">
     470            <table class="annotationsummary">
    461471            <tr>
    462472              <td class="summaryheader"><%=Base.getLinkedName(ID, at, false, true)%></td>
    463               <td class="summaryheader"><base:icon
     473              <td class="plotheader"><base:icon
    464474                image="plotter.gif"
    465475                onclick="<%="annotationPlot(" + at.getId() + ")"%>"
     
    470480              {
    471481                %>
    472                 <td class="groupheader" style="background: <%=ag.getColor()%>;" width="50px">
     482                <td class="groupheader" style="background: <%=ag.getColor()%>;">
    473483                <%=ag.getTitle()%>
    474484                </td>
     
    538548              </tr>
    539549            </table>
    540             <%
    541           }
    542         }
     550          <%
     551          }
    543552        %>
    544         </form>
     553      </form>
    545554    </base:section>
    546555
    547     <form name="spotIndex" action="index.jsp" method="post">
    548     <input type="hidden" name="ID" value="<%=ID%>">
    549     <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
    550     <input type="hidden" name="cmd" value="SetSpotIndex">
    551    
    552       <h4 class="docked">Current spot
    553       <input name="newSpotIndex" type="text" class="text" value="<%=positionIndex == -1 ? "all" : positionIndex == -2 ? "avg" : String.valueOf(positionIndex+1)%>"
    554         onkeypress="return Numbers.integerOnly(event, true, validateSpotIndex)"
    555         size="6" maxlength="8" title="Enter a number between 1 and <%=matchingPositions%>">
    556         of <%=matchingPositions%>
    557      
    558         <%
    559         if (positionIndex == 0)
    560         {
    561           %>
    562           <base:icon image="first_gray.gif" />
    563           <%
    564         }
    565         else
    566         {
    567           %>
    568           <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=0"
    569             title="Go the first position"><base:icon image="first.gif" /></a>
    570           <%
    571         }
    572         if (positionIndex <= 0)
    573         {
    574           %>
    575           <base:icon image="previous_gray.gif" />
    576           <%
    577         }
    578         else
    579         {
    580           %>
    581           <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=positionIndex-1%>"
    582             title="Go the previous position"><base:icon image="previous.gif" /></a>
    583           <%
    584         }
    585         %>
    586         &nbsp;&nbsp;
    587         <%
    588         if (positionIndex == matchingPositions - 1 || positionIndex < 0)
    589         {
    590           %>
    591           <base:icon image="next_gray.gif" />
    592           <%
    593         }
    594         else
    595         {
    596           %>
    597           <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=positionIndex+1%>"
    598             title="Go the next position"><base:icon image="next.gif" /></a>
    599           <%
    600         }
    601         if (positionIndex == matchingPositions - 1)
    602         {
    603           %>
    604           <base:icon image="last_gray.gif" />
    605           <%
    606         }
    607         else
    608         {
    609           %>
    610           <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=matchingPositions-1%>"
    611             title="Go the last position"><base:icon image="last.gif" /></a>
    612           <%
    613         }
    614         %>
    615         [ <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=-1"
    616           title="Show all positions">all</a>
    617         | <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=-2"
    618           title="Calculate average values for each bioassay">avg</a>
    619         ]
    620         </h4>
    621      
    622       </form>
    623556    <%
    624557    if (cc.getMessage() != null)
    625558    {
    626559      %>
    627       <div class="error"><%=cc.getMessage()%></div>
     560      <div class="messagecontainer error"><%=HTML.encodeTags(cc.getMessage())%></div>
    628561      <%
    629562      cc.setMessage(null);
     
    636569      Formatter<Number> numberFormatter = FormatterFactory.getNumberFormatter(sc);
    637570      %>
    638 
    639     <tbl:table
    640       id="spotdata"
    641        
    642       columns="<%=cc.getSetting("columns")%>"
    643       sortby="<%=cc.getSortProperty()%>"
    644       direction="<%=cc.getSortDirection()%>"
    645       title="<%=title%>"
    646       action="index.jsp"
    647       sc="<%=sc%>"
    648       item="<%=itemType%>"
    649       subcontext="<%=subContext%>"
    650       >
    651       <tbl:hidden
    652         name="bioassayset_id"
    653         value="<%=String.valueOf(bioAssaySetId)%>"
    654       />
    655       <%
    656       for (AnnotationType at : selectedAnnotationTypes.keySet())
    657       {
    658         %>
    659         <tbl:columndef
    660           id="<%="annotation." + at.getId()%>"
    661           title="<%=HTML.encodeTags(at.getName()) %>"
    662           show="always"
    663         />
    664         <%
    665       }
    666       %>
    667       <tbl:columndef
    668         id="bioassay"
    669         property="COLUMN"
    670         title="Bioassay"
    671         show="always"
    672         sortable="true"
    673       />
    674       <tbl:columndef
    675         id="position"
    676         property="POSITION"
    677         title="Position"
    678         show="<%=isAveraging ? "never" : "always" %>"
    679         sortable="true"
    680       />
    681       <tbl:columndef
    682         id="count"
    683         title="Count"
    684         show="<%=isAveraging ? "always" : "never" %>"
    685       />
    686       <%
    687       for (int ch = 1; ch <= channels; ++ch)
    688       {
    689         %>
    690         <tbl:columndef
    691           id="<%="ch"+ch%>"
    692           property="<%="%"+ch%>"
    693           datatype="float"
    694           title="<%="Ch " + ch%>"
    695           tooltip="<%=transform.isTransformed() ? transform.toString() : null %>"
    696           sortable="true"
    697           filterable="true"
    698           exportable="true"
    699           formatter="<%=numberFormatter%>"
    700         />
    701         <%
    702       }
    703       %>
    704       <%
    705       for (TableColumn tc : spotColumns)
    706       {
    707         %>
    708         <tbl:columndef
    709           id="<%=tc.getId()%>"
    710           property="<%=tc.getProperty()%>"
    711           datatype="<%=tc.getDatatype().getStringValue()%>"
    712           title="<%=HTML.encodeTags(tc.getTitle())%>"
    713           sortable="<%=tc.getSortable()%>"
    714           filterable="<%=tc.getFilterable()%>"
    715           exportable="<%=tc.getExportable()%>"
    716           show="<%=!isAveraging || tc.isAveragable() ? tc.getShow() : "never"%>"
    717           formatter="<%=tc.getFormatter()%>"
    718         />
    719         <%
    720       }
    721       %>
     571      <form name="spotIndex" action="index.jsp" method="post">
     572      <input type="hidden" name="ID" value="<%=ID%>">
     573      <input type="hidden" name="bioassayset_id" value="<%=bioAssaySetId%>">
     574      <input type="hidden" name="cmd" value="SetSpotIndex">
     575      <tbl:toolbar subclass="topborder">
     576        <tbl:label style="padding: 0px 2px 0px 6px;">
     577        Current spot
     578        <input name="newSpotIndex" type="text" class="text" value="<%=positionIndex == -1 ? "all" : positionIndex == -2 ? "avg" : String.valueOf(positionIndex+1)%>"
     579          onkeypress="return Numbers.integerOnly(event, true, validateSpotIndex)"
     580          size="6" maxlength="8" title="Enter a number between 1 and <%=matchingPositions%>">
     581          of <%=matchingPositions%>
    722582       
    723       <tbl:toolbar>
     583          <%
     584          if (positionIndex == 0)
     585          {
     586            %>
     587            <base:icon image="first_gray.gif" />
     588            <%
     589          }
     590          else
     591          {
     592            %>
     593            <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=0"
     594              title="Go the first position"><base:icon image="first.gif" /></a>
     595            <%
     596          }
     597          if (positionIndex <= 0)
     598          {
     599            %>
     600            <base:icon image="previous_gray.gif" />
     601            <%
     602          }
     603          else
     604          {
     605            %>
     606            <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=positionIndex-1%>"
     607              title="Go the previous position"><base:icon image="previous.gif" /></a>
     608            <%
     609          }
     610          %>
     611          &nbsp;&nbsp;
     612          <%
     613          if (positionIndex == matchingPositions - 1 || positionIndex < 0)
     614          {
     615            %>
     616            <base:icon image="next_gray.gif" />
     617            <%
     618          }
     619          else
     620          {
     621            %>
     622            <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=positionIndex+1%>"
     623              title="Go the next position"><base:icon image="next.gif" /></a>
     624            <%
     625          }
     626          if (positionIndex == matchingPositions - 1)
     627          {
     628            %>
     629            <base:icon image="last_gray.gif" />
     630            <%
     631          }
     632          else
     633          {
     634            %>
     635            <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=<%=matchingPositions-1%>"
     636              title="Go the last position"><base:icon image="last.gif" /></a>
     637            <%
     638          }
     639          %>
     640          [ <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=-1"
     641            title="Show all positions">all</a>
     642          | <a href="index.jsp?ID=<%=ID%>&cmd=SetSpotIndex&bioassayset_id=<%=bioAssaySetId%>&spotIndex=-2"
     643            title="Calculate average values for each bioassay">avg</a>
     644          ]
     645        </tbl:label>
    724646        <tbl:button
    725647          image="columns.gif"
     
    735657        />
    736658      </tbl:toolbar>
    737       <tbl:data>
    738         <tbl:columns />
    739         <tbl:rows>
     659      </form>
     660     
     661      <tbl:table
     662        id="spotdata"
     663        columns="<%=cc.getSetting("columns")%>"
     664        sortby="<%=cc.getSortProperty()%>"
     665        direction="<%=cc.getSortDirection()%>"
     666        title="<%=title%>"
     667        action="index.jsp"
     668        sc="<%=sc%>"
     669        item="<%=itemType%>"
     670        subcontext="<%=subContext%>"
     671        >
     672        <tbl:hidden
     673          name="bioassayset_id"
     674          value="<%=String.valueOf(bioAssaySetId)%>"
     675        />
    740676        <%
    741         int index = 0;
    742         float[] intensity = new float[channels+1];
    743         while (spotData.hasNext())
     677        for (AnnotationType at : selectedAnnotationTypes.keySet())
    744678        {
    745           SqlResult item = spotData.next();
    746           index++;
    747           BioAssay bioAssay = explorer.getBioAssay(dc, item.getShort(1));
    748           for (int ch = 1; ch <= channels; ++ch)
    749           {
    750             intensity[ch] = item.getFloat(2+ch);
    751           }
    752679          %>
    753           <tbl:row>
    754             <%
    755             for (Map.Entry<AnnotationType, AnnotationSummary> entry : selectedAnnotationTypes.entrySet())
     680          <tbl:columndef
     681            id="<%="annotation." + at.getId()%>"
     682            title="<%=HTML.encodeTags(at.getName()) %>"
     683            show="always"
     684          />
     685          <%
     686        }
     687        %>
     688        <tbl:columndef
     689          id="bioassay"
     690          property="COLUMN"
     691          title="Bioassay"
     692          show="always"
     693          sortable="true"
     694        />
     695        <tbl:columndef
     696          id="position"
     697          property="POSITION"
     698          title="Position"
     699          show="<%=isAveraging ? "never" : "always" %>"
     700          sortable="true"
     701        />
     702        <tbl:columndef
     703          id="count"
     704          title="Count"
     705          show="<%=isAveraging ? "always" : "never" %>"
     706        />
     707        <%
     708        for (int ch = 1; ch <= channels; ++ch)
     709        {
     710          %>
     711          <tbl:columndef
     712            id="<%="ch"+ch%>"
     713            property="<%="%"+ch%>"
     714            datatype="float"
     715            title="<%="Ch " + ch%>"
     716            tooltip="<%=transform.isTransformed() ? transform.toString() : null %>"
     717            sortable="true"
     718            filterable="true"
     719            exportable="true"
     720            formatter="<%=numberFormatter%>"
     721          />
     722          <%
     723        }
     724        %>
     725        <%
     726        for (TableColumn tc : spotColumns)
     727        {
     728          %>
     729          <tbl:columndef
     730            id="<%=tc.getId()%>"
     731            property="<%=tc.getProperty()%>"
     732            datatype="<%=tc.getDatatype().getStringValue()%>"
     733            title="<%=HTML.encodeTags(tc.getTitle())%>"
     734            sortable="<%=tc.getSortable()%>"
     735            filterable="<%=tc.getFilterable()%>"
     736            exportable="<%=tc.getExportable()%>"
     737            show="<%=!isAveraging || tc.isAveragable() ? tc.getShow() : "never"%>"
     738            formatter="<%=tc.getFormatter()%>"
     739          />
     740          <%
     741        }
     742        %>
     743        <tbl:data style="border-left: 0px; border-right: 0px;">
     744          <tbl:headers>
     745            <tbl:headers>
     746              <tbl:columnheaders />
     747            </tbl:headers>
     748          </tbl:headers>
     749          <tbl:rows>
     750          <%
     751          int index = 0;
     752          float[] intensity = new float[channels+1];
     753          while (spotData.hasNext())
     754          {
     755            SqlResult item = spotData.next();
     756            index++;
     757            BioAssay bioAssay = explorer.getBioAssay(dc, item.getShort(1));
     758            for (int ch = 1; ch <= channels; ++ch)
    756759            {
    757               AnnotationType at = entry.getKey();
    758               AnnotationGroup annotationGroup = entry.getValue().getAnnotationGroup(bioAssay.getDataCubeColumnNo());
    759               String allValues = annotationGroup.getTitle();
    760               if (hasRatio)
     760              intensity[ch] = item.getFloat(2+ch);
     761            }
     762            %>
     763            <tbl:row>
     764              <%
     765              for (Map.Entry<AnnotationType, AnnotationSummary> entry : selectedAnnotationTypes.entrySet())
    761766              {
    762                 float logRatio = (float)(Math.log(transform.unTransform(intensity[1]) / transform.unTransform(intensity[2])));
    763                 annotationGroup.addStatistics("logratio", logRatio);
    764                 annotationGroup.addStatistics("logratio2", logRatio * logRatio);
     767                AnnotationType at = entry.getKey();
     768                AnnotationGroup annotationGroup = entry.getValue().getAnnotationGroup(bioAssay.getDataCubeColumnNo());
     769                String allValues = annotationGroup.getTitle();
     770                if (hasRatio)
     771                {
     772                  float logRatio = (float)(Math.log(transform.unTransform(intensity[1]) / transform.unTransform(intensity[2])));
     773                  annotationGroup.addStatistics("logratio", logRatio);
     774                  annotationGroup.addStatistics("logratio2", logRatio * logRatio);
     775                }
     776                for (int ch = 1; ch <= channels; ++ch)
     777                {
     778                  annotationGroup.addValue(ch, (float)transform.unTransform(intensity[ch]));
     779                }
     780                %>
     781                <tbl:cell column="<%="annotation."+at.getId()%>" style="<%="background: "+annotationGroup.getColor()+";"%>">
     782                <%=allValues%>
     783                </tbl:cell>
     784                <%
    765785              }
     786              %>
     787              <tbl:cell column="bioassay"><%=Base.getLinkedName(ID, bioAssay, false, true)%></tbl:cell>
     788              <tbl:cell column="position"><%=item.getInt(2)%></tbl:cell>
     789              <tbl:cell column="count"><%=item.getInt(2)%></tbl:cell>
     790              <%
    766791              for (int ch = 1; ch <= channels; ++ch)
    767792              {
    768                 annotationGroup.addValue(ch, (float)transform.unTransform(intensity[ch]));
     793                %>
     794                <tbl:cell column="<%="ch" + ch%>" value="<%=intensity[ch]%>" />
     795                <%
    769796              }
    770797              %>
    771               <tbl:cell column="<%="annotation."+at.getId()%>" style="<%="background: "+annotationGroup.getColor()+";"%>">
    772               <%=allValues%>
    773               </tbl:cell>
    774798              <%
    775             }
    776             %>
    777             <tbl:cell column="bioassay"><%=Base.getLinkedName(ID, bioAssay, false, true)%></tbl:cell>
    778             <tbl:cell column="position"><%=item.getInt(2)%></tbl:cell>
    779             <tbl:cell column="count"><%=item.getInt(2)%></tbl:cell>
    780             <%
    781             for (int ch = 1; ch <= channels; ++ch)
    782             {
     799              int colIndex = 3 + channels;
     800              for (String columnId : selected.selectedIds)
     801              {
     802                %>
     803                <tbl:cell column="<%=columnId%>" value="<%=item.getObject(colIndex++)%>" />
     804                <%
     805              }
    783806              %>
    784               <tbl:cell column="<%="ch" + ch%>" value="<%=intensity[ch]%>" />
    785               <%
    786             }
    787             %>
    788             <%
    789             int colIndex = 3 + channels;
    790             for (String columnId : selected.selectedIds)
    791             {
    792               %>
    793               <tbl:cell column="<%=columnId%>" value="<%=item.getObject(colIndex++)%>" />
    794               <%
    795             }
    796             %>
    797           </tbl:row>
    798           <%
    799         }
    800       %>
    801       </tbl:rows>
    802       </tbl:data>
     807            </tbl:row>
     808            <%
     809          }
     810        %>
     811        </tbl:rows>
     812        </tbl:data>
    803813      </tbl:table>
    804       </div>
    805814      <%
    806815      }
     
    814823          AnnotationType at = entry.getKey();
    815824          AnnotationSummary summary = entry.getValue();
    816           %>
    817           <%
    818           for (AnnotationGroup ag : summary.getAnnotationGroups())
    819           {
    820             for (int ch = 1; ch <= channels; ++ch)
     825          if (summary != null)
     826          {
     827            for (AnnotationGroup ag : summary.getAnnotationGroups())
    821828            {
     829              for (int ch = 1; ch <= channels; ++ch)
     830              {
     831                %>
     832                var div = document.getElementById('mean.<%=at.getId()%>.<%=ag.getId()%>.ch<%=ch%>');
     833                div.innerHTML = '<%=Values.formatNumber(ag.getMean(ch), 2)%>';
     834                <%
     835              }
    822836              %>
    823               var div = document.getElementById('mean.<%=at.getId()%>.<%=ag.getId()%>.ch<%=ch%>');
    824               div.innerHTML = '<%=Values.formatNumber(ag.getMean(ch), 2)%>';
     837              var div = document.getElementById('count.<%=at.getId()%>.<%=ag.getId()%>');
     838              div.innerHTML = '<%=ag.getCount(1)%>';
    825839              <%
    826             }
    827             %>
    828             var div = document.getElementById('count.<%=at.getId()%>.<%=ag.getId()%>');
    829             div.innerHTML = '<%=ag.getCount(1)%>';
    830             <%
    831             if (hasRatio)
    832             {
    833               float r = ag.getStatistics("logratio");
    834               int count = ag.getCount(1);
    835               float gMean = count > 0 ? (float)Math.exp(r / count) : Float.NaN;
    836               float sd = count > 1 ?
    837                 (float)Math.sqrt((ag.getStatistics("logratio2") - r * (r / count))/(count-1))
    838                 : Float.NaN;
    839               %>
    840               var div = document.getElementById('gmean.<%=at.getId()%>.<%=ag.getId()%>');
    841               div.innerHTML = '<%=Values.formatNumber(gMean, 2)%>';
    842               var div = document.getElementById('sd.<%=at.getId()%>.<%=ag.getId()%>');
    843               div.innerHTML = '<%=Values.formatNumber(sd, 2)%>';
    844               <%
     840              if (hasRatio)
     841              {
     842                float r = ag.getStatistics("logratio");
     843                int count = ag.getCount(1);
     844                float gMean = count > 0 ? (float)Math.exp(r / count) : Float.NaN;
     845                float sd = count > 1 ?
     846                  (float)Math.sqrt((ag.getStatistics("logratio2") - r * (r / count))/(count-1))
     847                  : Float.NaN;
     848                %>
     849                var div = document.getElementById('gmean.<%=at.getId()%>.<%=ag.getId()%>');
     850                div.innerHTML = '<%=Values.formatNumber(gMean, 2)%>';
     851                var div = document.getElementById('sd.<%=at.getId()%>.<%=ag.getId()%>');
     852                div.innerHTML = '<%=Values.formatNumber(sd, 2)%>';
     853                <%
     854              }
    845855            }
    846856          }
     
    865875      Main.onLoad(init);
    866876      </script>
    867      
    868       </t:tab>
    869       </t:tabcontrol>
     877      <%
     878    }
     879    %>
     880    </t:tab>
     881    </t:tabcontrol>
    870882
    871883  </base:body>
  • trunk/www/views/experiments/extravalues/view_extravalue.jsp

    r5937 r5940  
    175175  </base:head>
    176176  <base:body>
    177     <p>
    178     <p:path>
    179       <p:pathelement title="Experiments" href="<%="../index.jsp?ID="+ID%>" />
    180       <p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
    181         href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experimentId%>" />
    182       <p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
    183         href="<%="../bioassaysets/index.jsp?ID="+ID+"&cmd=ViewItem&experiement_id="+experimentId+"&item_id="+bioAssaySet.getId()%>" />
    184       <p:pathelement title="<%=HTML.encodeTags(extraValueType == null ? extraValue.getValueType().toString() : extraValueType.getName()) %>" />
    185     </p:path>
     177    <p:path><p:pathelement
     178      title="Experiments" href="<%="../index.jsp?ID="+ID%>"
     179      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
     180        href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experimentId%>"
     181      /><p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>"
     182        href="<%="../bioassaysets/index.jsp?ID="+ID+"&cmd=ViewItem&experiement_id="+experimentId+"&item_id="+bioAssaySet.getId()%>"
     183      /><p:pathelement title="<%=HTML.encodeTags(extraValueType == null ? extraValue.getValueType().toString() : extraValueType.getName()) %>"
     184      /></p:path>
    186185   
    187     <t:tabcontrol id="view" remember="false">
     186    <t:tabcontrol
     187      id="view"
     188      subclass="content mastertabcontrol"
     189      remember="false">
    188190    <t:tab id="properties" title="Properties">
    189    
    190     <tbl:toolbar
    191       >
    192       <tbl:button
    193         disabled="<%=deletePermission ? false : true%>"
    194         image="delete.gif"
    195         onclick="deleteItem()"
    196         title="Delete"
    197         tooltip="<%=deletePermission ? "Delete this extra value" : "You do not have permission to delete this extra value"%>"
    198       />
    199       <tbl:button
    200         disabled="<%=writePermission ? false : true%>"
    201         image="<%=writePermission ? "copy.gif" : "copy_disabled.gif"%>"
    202         onclick="<%=job == null ? "" : "copyJob('" + job.getId() + "')"%>"
    203         title="Copy&hellip;"
    204         visible="<%=job != null && plugin != null && plugin.isInteractive() %>"
    205         tooltip="<%=writePermission ? "Copy this transformation" : "You do not have permission to copy this transformation"%>"
    206       />
    207       <tbl:button
    208         image="import.gif"
    209         onclick="<%="runPlugin(" + itemId + ", 'ImportItem')"%>"
    210         title="Import&hellip;"
    211         tooltip="Import data"
    212         visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
    213       />
    214       <tbl:button
    215         image="export.gif"
    216         onclick="<%="runPlugin(" + itemId + ", 'ExportItem')"%>"
    217         title="Export&hellip;"
    218         tooltip="Export data"
    219         visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
    220       />
    221       <tbl:button
    222         image="runplugin.gif"
    223         onclick="<%="runPlugin(" + itemId + ", 'RunPlugin')"%>"
    224         title="Run plugin&hellip;"
    225         tooltip="Run a plugin"
    226         visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
    227       />
    228       <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
    229         wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
    230       <tbl:button
    231         image="help.png"
    232         onclick="<%="Main.openHelp('" + ID +"', 'extravalue.view.properties')"%>"
    233         title="Help&hellip;"
    234         tooltip="Get help about this page"
    235       />
    236       </tbl:toolbar>
    237      
    238     <div class="boxedbottom">
    239       <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(extraValue)%></i></div>
    240      
    241       <table width="100%">
    242       <tr >
    243       <td width="50%">
    244         <h4>Extra value</h4>
    245         <table class="form" cellspacing=0>
     191      <div>
     192      <table class="fullform">
     193      <tr>
     194        <th class="itemstatus">
     195        </th>
     196        <td style="padding: 0px;">
     197          <tbl:toolbar subclass="bottomborder">
     198            <tbl:button
     199              disabled="<%=deletePermission ? false : true%>"
     200              image="delete.gif"
     201              onclick="deleteItem()"
     202              title="Delete"
     203              tooltip="<%=deletePermission ? "Delete this extra value" : "You do not have permission to delete this extra value"%>"
     204            />
     205            <tbl:button
     206              disabled="<%=writePermission ? false : true%>"
     207              image="copy.gif"
     208              onclick="<%=job == null ? "" : "copyJob('" + job.getId() + "')"%>"
     209              title="Copy&hellip;"
     210              visible="<%=job != null && plugin != null && plugin.isInteractive() %>"
     211              tooltip="<%=writePermission ? "Copy this transformation" : "You do not have permission to copy this transformation"%>"
     212            />
     213            <tbl:button
     214              image="import.gif"
     215              onclick="<%="runPlugin(" + itemId + ", 'ImportItem')"%>"
     216              title="Import&hellip;"
     217              tooltip="Import data"
     218              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
     219            />
     220            <tbl:button
     221              image="export.gif"
     222              onclick="<%="runPlugin(" + itemId + ", 'ExportItem')"%>"
     223              title="Export&hellip;"
     224              tooltip="Export data"
     225              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
     226            />
     227            <tbl:button
     228              image="runplugin.gif"
     229              onclick="<%="runPlugin(" + itemId + ", 'RunPlugin')"%>"
     230              title="Run plugin&hellip;"
     231              tooltip="Run a plugin"
     232              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
     233            />
     234            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
     235              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
     236            <tbl:button
     237              image="help.png"
     238              onclick="<%="Main.openHelp('" + ID +"', 'extravalue.view.properties')"%>"
     239              title="Help&hellip;"
     240              tooltip="Get help about this page"
     241            />
     242          </tbl:toolbar>
     243        </td>
     244      </tr>
     245    </table>
     246    <table style="width: 100%; height: 16em;" class="bottomborder">
     247    <tr valign="top">
     248      <td style="width: 50%; height: 100%;">
     249      <table class="fullform" >
    246250        <%
    247251        if (extraValueType == null)
     
    249253          %>
    250254          <tr>
    251             <td class="prompt">Type</td>
     255            <th>Type</th>
    252256            <td><%=extraValue.getValueType()%></td>
    253257          </tr>
     
    258262          %>
    259263          <tr>
    260             <td class="prompt">Name</td>
     264            <th>Name</th>
    261265            <td><%=Base.getLinkedName(ID, extraValueType, !readExtraValueType, writePermission)%></td>
    262266          </tr>
     
    265269        %>
    266270        <tr>
    267           <td class="prompt">Bioassay set</td>
     271          <th>Bioassay set</th>
    268272          <td><%=Base.getLinkedName(ID, bioAssaySet, false, writePermission)%></td>
    269273        </tr>
    270274        <tr>
    271           <td class="prompt">Experiment</td>
     275          <th>Experiment</th>
    272276          <td><%=Base.getLinkedName(ID, experiment, false, writePermission)%>
    273277          (<%=experiment.getRawDataType()%>)</td>
    274278        </tr>
    275279        <tr>
    276           <td class="prompt">Values</td>
     280          <th>Values</th>
    277281          <td>db: <%=extraValue.getNumValues()%>; file: <%=extraValue.getNumFileValues()%></td>
    278282        </tr>
    279283        <tr>
    280           <td class="prompt">Description</td>
     284          <th>Description</th>
    281285          <td><%=HTML.niceFormat(extraValueType != null ? extraValueType.getDescription() : "")%></td>
    282286        </tr>
    283         </table>
    284        
    285         <h4>Job</h4>
    286         <table class="form" cellspacing=0>
    287         <tr>
    288           <td class="prompt">Job</td>
     287        <tr>
     288          <th>Job</th>
    289289          <td><%=Base.getLinkedName(ID, job, !readJob, false)%></td>
    290290        </tr>
    291291        <tr >
    292           <td class="prompt">Started</td>
     292          <th class="subprompt">- started</td>
    293293          <td>
    294294            <%=job == null ? "" : dateTimeFormatter.format(job.getStarted())%>
     
    296296        </tr>
    297297        <tr >
    298           <td class="prompt">Ended</td>
     298          <th class="subprompt">- ended</td>
    299299          <td>
    300300            <%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%>
    301301          </td>
    302302        </tr>
    303         <tr >
    304           <td class="prompt">Server</td>
     303        <tr class="dynamic">
     304          <th class="subprompt">- server</td>
    305305          <td>
    306306            <%=job == null ? "" : HTML.encodeTags(job.getServer())%>
     
    309309        </table>
    310310      </td>
    311       <td width="50%">
    312         <h4>Plugin &amp; parameters</h4>
    313         <table class="form" cellspacing=0>
    314         <tr>
    315           <td class="prompt">Plugin</td>
     311      <td style="width: 50%; height: 100%;" class="leftborder">
     312        <table class="fullform" >
     313        <tr>
     314          <th>Plugin</th>
    316315          <td><%=Base.getLinkedName(ID, plugin,
    317316              !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
    318317        </tr>
    319318        <tr>
    320           <td class="prompt">Plugin configuration</td>
     319          <th>Plugin configuration</th>
    321320          <td><%=Base.getLinkedName(ID, configuration, !readConfiguration,
    322321            configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
    323322        </tr>
     323        <tbody class="sectionheader">
     324          <tr>
     325            <th colspan="2">Plugin parameters</th>
     326          </tr>
     327        </tbody>
    324328        <%
    325329        if (job != null)
     
    380384            %>
    381385            <tr>
    382             <td class="prompt"><span title="<%=description%>"><%=name%></span></td>
    383               <td>
    384                 <%=displayValue%>
    385               </td>
     386            <th class="subprompt">- <span title="<%=description%>"><%=name%></span></td>
     387              <td><%=displayValue%></td>
    386388            </tr>
    387389            <%
     
    389391        }
    390392        %>
     393        <tr class="dynamic">
     394          <th></th>
     395          <td></td>
     396        </tr>
    391397        </table>
    392398
     
    394400      </tr>
    395401      </table>
    396      
    397402      </div>
    398403    </t:tab>
  • trunk/www/views/experiments/transformations/view_transformation.jsp

    r5937 r5940  
    164164  </base:head>
    165165  <base:body>
    166     <p>
    167     <p:path>
    168       <p:pathelement title="Experiments" href="<%="../index.jsp?ID="+ID%>" />
    169       <p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
    170         href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experimentId%>" />
    171       <p:pathelement title="<%=HTML.encodeTags(transformation.getName())%>" />
    172     </p:path>
     166    <p:path><p:pathelement
     167      title="Experiments" href="<%="../index.jsp?ID="+ID%>"
     168      /><p:pathelement title="<%=HTML.encodeTags(experiment.getName())%>"
     169        href="<%="../bioassaysets/index.jsp?ID="+ID+"&experiment_id="+experimentId%>"
     170      /><p:pathelement title="<%=HTML.encodeTags(transformation.getName())%>"
     171      /></p:path>
    173172   
    174     <t:tabcontrol id="main" active="<%=tabId%>" switch="switchTab">
     173    <t:tabcontrol
     174      id="main"
     175      subclass="content mastertabcontrol"
     176      active="<%=tabId%>" switch="switchTab">
    175177    <t:tab id="properties" title="Properties">
    176    
    177     <tbl:toolbar
    178       >
    179       <tbl:button
    180         disabled="<%=writePermission ? false : true%>"
    181         image="edit.gif"
    182         onclick="editItem()"
    183         title="Edit&hellip;"
    184         tooltip="<%=writePermission ? "Edit this transformation" : "You do not have permission to edit this transformation"%>"
    185       />
    186       <tbl:button
    187         disabled="<%=deletePermission ? false : true%>"
    188         image="delete.gif"
    189         onclick="deleteItem()"
    190         title="Delete"
    191         visible="<%=!transformation.isRemoved()%>"
    192         tooltip="<%=deletePermission ? "Delete this transformation" : "You do not have permission to delete this transformation"%>"
    193       />
    194       <tbl:button
    195         disabled="<%=writePermission ? false : true%>"
    196         image="restore.gif"
    197         onclick="restoreItem()"
    198         title="Restore"
    199         visible="<%=transformation.isRemoved()%>"
    200         tooltip="<%=writePermission ? "Restore this transformation" : "You do not have permission to restore this transformation"%>"
    201       />
    202       <tbl:button
    203         disabled="<%=writePermission ? false : true%>"
    204         image="<%=writePermission ? "copy.gif" : "copy_disabled.gif"%>"
    205         onclick="<%=job == null ? "" : "copyJob('" + job.getId() + "')"%>"
    206         title="Copy&hellip;"
    207         visible="<%=job != null && plugin != null && plugin.isInteractive() %>"
    208         tooltip="<%=writePermission ? "Copy this transformation" : "You do not have permission to copy this transformation"%>"
    209       />
    210       <tbl:button
    211         image="import.gif"
    212         onclick="runItemPlugin('ImportItem')"
    213         title="Import&hellip;"
    214         tooltip="Import data"
    215         visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
    216       />
    217       <tbl:button
    218         image="export.gif"
    219         onclick="runItemPlugin('ExportItem')"
    220         title="Export&hellip;"
    221         tooltip="Export data"
    222         visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
    223       />
    224       <tbl:button
    225         image="runplugin.gif"
    226         onclick="runItemPlugin('RunPlugin')"
    227         title="Run plugin&hellip;"
    228         tooltip="Run a plugin"
    229         visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
    230       />
    231       <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
    232         wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
    233       <tbl:button
    234         image="help.png"
    235         onclick="<%="Main.openHelp('" + ID +"', 'transformation.view.properties')"%>"
    236         title="Help&hellip;"
    237         tooltip="Get help about this page"
    238       />
    239       </tbl:toolbar>
    240     <div class="boxedbottom">
    241       <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(transformation)%></i></div>
    242       <%
    243       if (transformation.isRemoved())
    244       {
    245         %>
    246         <div class="itemstatus">
    247           <base:icon image="deleted.gif"
    248             visible="<%=transformation.isRemoved()%>"> This item has been flagged for deletion<br></base:icon>
    249         </div>
    250         <%
    251       }
    252       %>
    253      
    254       <table width="100%">
    255       <tr >
    256       <td width="50%">
    257         <h4>Transformation</h4>
    258         <table class="form" cellspacing=0>
    259         <tr>
    260           <td class="prompt">Name</td>
     178      <div>
     179      <table class="fullform">
     180      <tr>
     181        <th class="itemstatus">
     182          <base:icon
     183            image="deleted.gif"
     184            onclick="deleteItemPermanently()"
     185            tooltip="This item has been flagged for deletion. Click to delete it now."
     186            enabled="<%=deletePermission %>"
     187            visible="<%=transformation.isRemoved()%>"
     188          />
     189        </th>
     190        <td style="padding: 0px;">
     191          <tbl:toolbar subclass="bottomborder">
     192            <tbl:button
     193              disabled="<%=writePermission ? false : true%>"
     194              image="edit.gif"
     195              onclick="editItem()"
     196              title="Edit&hellip;"
     197              tooltip="<%=writePermission ? "Edit this transformation" : "You do not have permission to edit this transformation"%>"
     198            />
     199            <tbl:button
     200              disabled="<%=deletePermission ? false : true%>"
     201              image="delete.gif"
     202              onclick="deleteItem()"
     203              title="Delete"
     204              visible="<%=!transformation.isRemoved()%>"
     205              tooltip="<%=deletePermission ? "Delete this transformation" : "You do not have permission to delete this transformation"%>"
     206            />
     207            <tbl:button
     208              disabled="<%=writePermission ? false : true%>"
     209              image="restore.gif"
     210              onclick="restoreItem()"
     211              title="Restore"
     212              visible="<%=transformation.isRemoved()%>"
     213              tooltip="<%=writePermission ? "Restore this transformation" : "You do not have permission to restore this transformation"%>"
     214            />
     215            <tbl:button
     216              disabled="<%=writePermission ? false : true%>"
     217              image="<%=writePermission ? "copy.gif" : "copy_disabled.gif"%>"
     218              onclick="<%=job == null ? "" : "copyJob('" + job.getId() + "')"%>"
     219              title="Copy&hellip;"
     220              visible="<%=job != null && plugin != null && plugin.isInteractive() %>"
     221              tooltip="<%=writePermission ? "Copy this transformation" : "You do not have permission to copy this transformation"%>"
     222            />
     223            <tbl:button
     224              image="import.gif"
     225              onclick="runItemPlugin('ImportItem')"
     226              title="Import&hellip;"
     227              tooltip="Import data"
     228              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
     229            />
     230            <tbl:button
     231              image="export.gif"
     232              onclick="runItemPlugin('ExportItem')"
     233              title="Export&hellip;"
     234              tooltip="Export data"
     235              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
     236            />
     237            <tbl:button
     238              image="runplugin.gif"
     239              onclick="runItemPlugin('RunPlugin')"
     240              title="Run plugin&hellip;"
     241              tooltip="Run a plugin"
     242              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
     243            />
     244            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>"
     245              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
     246            <tbl:button
     247              image="help.png"
     248              onclick="<%="Main.openHelp('" + ID +"', 'transformation.view.properties')"%>"
     249              title="Help&hellip;"
     250              tooltip="Get help about this page"
     251            />
     252          </tbl:toolbar>
     253        </td>
     254      </tr>
     255      </table>
     256      <table style="width: 100%; height: 15em;" class="bottomborder">
     257      <tr valign="top">
     258        <td style="width: 50%; height: 100%;">
     259        <table class="fullform" >
     260        <tr>
     261          <th>Name</th>
    261262          <td><%=HTML.encodeTags(transformation.getName())%></td>
    262263        </tr>
    263264        <tr>
    264           <td class="prompt">Experiment</td>
     265          <th>Experiment</th>
    265266          <td><%=Base.getLinkedName(ID, experiment, false, writePermission)%></td>
    266267        </tr>
    267268        <tr>
    268           <td class="prompt">Description</td>
     269          <th>Description</th>
    269270          <td><%=HTML.niceFormat(transformation.getDescription())%></td>
    270271        </tr>
    271         </table>
    272        
    273         <h4>Job</h4>
    274         <table class="form" cellspacing=0>
    275         <tr>
    276           <td class="prompt">Job</td>
     272        <tr>
     273          <th>Job</th>
    277274          <td><%=Base.getLinkedName(ID, job, !readJob, false)%></td>
    278275        </tr>
    279         <tr >
    280           <td class="prompt">Started</td>
     276        <tr>
     277          <th class="subprompt">- started</th>
    281278          <td>
    282279            <%=job == null ? "" : dateTimeFormatter.format(job.getStarted())%>
     
    284281        </tr>
    285282        <tr >
    286           <td class="prompt">Ended</td>
     283          <th class="subprompt">- ended</th>
    287284          <td>
    288285            <%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%>
    289286          </td>
    290287        </tr>
    291         <tr >
    292           <td class="prompt">Server</td>
     288        <tr class="dynamic">
     289          <th class="subprompt">- server</th>
    293290          <td>
    294291            <%=job == null ? "" : HTML.encodeTags(job.getServer())%>
     
    297294        </table>
    298295      </td>
    299       <td width="50%">
    300         <h4>Plugin &amp; parameters</h4>
    301         <table class="form" cellspacing=0>
    302         <tr>
    303           <td class="prompt">Plugin</td>
     296      <td style="width: 50%; height: 100%;" class="leftborder">
     297        <table class="fullform" >
     298        <tr>
     299          <th>Plugin</th>
    304300          <td><%=Base.getLinkedName(ID, plugin,
    305301              !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
    306302        </tr>
    307303        <tr>
    308           <td class="prompt">Plugin configuration</td>
     304          <th>Plugin configuration</th>
    309305          <td><%=Base.getLinkedName(ID, configuration, !readConfiguration,
    310306            configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
    311307        </tr>
     308        <tbody class="sectionheader">
     309          <tr>
     310            <th colspan="2">Plugin parameters</th>
     311          </tr>
     312        </tbody>
    312313        <%
    313314        if (job != null)
     
    368369            %>
    369370            <tr>
    370               <td class="prompt"><span title="<%=description%>"><%=name%></span></td>
     371              <th class="subprompt"><span title="<%=description%>">- <%=name%></span></th>
    371372              <td>
    372373                <%=displayValue%>
     
    377378        }
    378379        %>
     380        <tr class="dynamic">
     381          <th></th>
     382          <td></td>
     383        </tr>
    379384        </table>
    380385      </td>
     
    389394      </jsp:include>
    390395     
    391       <h4 class="docked">Analysis subtree</h4>
    392       <jsp:include page="../bioassaysets/analysis_tree.jsp">
    393         <jsp:param name="ID" value="<%=ID%>" />
    394         <jsp:param name="experiment_id" value="<%=experimentId%>" />
    395         <jsp:param name="transformation_id" value="<%=itemId%>" />
    396       </jsp:include>
    397       </div>
     396      <base:section id="anaysis" title="Analysis subtree" context="<%=cc%>">
     397        <jsp:include page="../bioassaysets/analysis_tree.jsp">
     398          <jsp:param name="ID" value="<%=ID%>" />
     399          <jsp:param name="experiment_id" value="<%=experimentId%>" />
     400          <jsp:param name="transformation_id" value="<%=itemId%>" />
     401        </jsp:include>
     402      </base:section>
    398403      </t:tab>
    399404      </t:tabcontrol>
Note: See TracChangeset for help on using the changeset viewer.