Ticket #1310: patch-4934.diff

File patch-4934.diff, 9.2 KB (added by base, 15 years ago)

patch for making protocols annotatable

  • www/include/scripts/main.js

     
    456456    this.controllers['PLUGINDEFINITION'] = { url:'admin/plugindefinitions/index.jsp', width:800, height:500 };
    457457    this.controllers['PLUGINTYPE'] = { url:'admin/plugintypes/index.jsp', width:700, height:400 };
    458458    this.controllers['JOBAGENT'] = { url:'admin/jobagents/index.jsp', width:700, height:400 };
    459     this.controllers['PROTOCOL'] = { url:'admin/protocols/index.jsp', width:500, height:340 };
     459    this.controllers['PROTOCOL'] = { url:'admin/protocols/index.jsp', width:800, height:500 };
    460460    this.controllers['PROTOCOLTYPE'] = { url:'admin/protocoltypes/index.jsp', width:500, height:340 };
    461461    this.controllers['QUOTA'] = { url:'admin/quota/index.jsp', width:600, height:440 };
    462462    this.controllers['QUOTATYPE'] = { url:'admin/quotatypes/index.jsp', width:500, height:340 };
  • www/admin/protocols/edit_protocol.jsp

     
    121121  %>
    122122
    123123  <base:page type="popup" title="<%=title%>">
    124   <base:head scripts="tabcontrol.js,linkitems.js" styles="tabcontrol.css">
     124  <base:head scripts="tabcontrol.js,annotations.js,linkitems.js" styles="tabcontrol.css">
    125125    <script language="JavaScript">
    126126    // Validate the "Protocol" tab
    127127    function validateProtocol()
     
    147147      var frm = document.forms['protocol'];
    148148      if (TabControl.validateActiveTab('settings'))
    149149      {
     150        if (annotationsLoaded)
     151        {
     152          Annotations.addModifiedAnnotationsToForm(frames.annotations, frm);
     153        }
    150154        frm.addedAnnotationTypes.value = Link.getActionIds(1, 'A').join(',');
    151155        frm.removedAnnotationTypes.value = Link.getActionIds(-1, 'A').join(',');
    152156        frm.submit();
    153157      }
    154158    }
    155159   
     160    var annotationsLoaded = false;
     161    function switchTab(tabControlId, tabId)
     162    {
     163      if (TabControl.setActiveTab(tabControlId, tabId))
     164      {
     165        if (tabId == 'annotations' && !annotationsLoaded)
     166        {
     167          Annotations.loadAnnotateFrame(frames.annotations, '<%=ID%>', '<%=itemType.name()%>', <%=itemId%>);
     168          annotationsLoaded = true;
     169        }
     170      }
     171    }
     172   
    156173    function browseOnClick()
    157174    {
    158175      var frm = document.forms['protocol'];
     
    234251    <input type="hidden" name="cmd" value="UpdateItem">
    235252
    236253    <h3 class="docked"><%=title%> <base:help tabcontrol="settings" /></h3>
    237     <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*220)+"px;"%>"
    238       position="bottom"  remember="<%=protocol != null%>">
     254    <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*370)+"px;"%>"
     255      position="bottom"  remember="<%=protocol != null%>" switch="switchTab">
    239256    <t:tab id="info" title="Protocol" validate="validateProtocol()" helpid="protocol.edit">
    240257      <table class="form" cellspacing=0>
    241258      <tr>
     
    305322    <t:tab id="parameters" title="Parameters"
    306323      validate="validateParameters()" helpid="protocol.edit.parameters">
    307324    <table class="form" cellspacing=0>
    308 
     325   
    309326    <tr valign="top">
    310327      <td><b>Annotation types</b>
    311328        <table border="0" cellspacing="0" cellpadding="0">
     
    336353    </tr>
    337354    </table>
    338355    </t:tab>
     356   
     357    <t:tab id="annotations" title="Annotations"
     358      helpid="annotations.edit" tooltip="Enter values for annotations">
     359      <iframe name="annotations" id="idAnnotations" src="../../common/annotations/wait.jsp"
     360        width="100%"  height="<%=(int)(scale*370)%>" frameborder=0 vspace=0 hspace=0
     361        marginwidth=0 marginheight=0 scrolling="auto" style="overflow: visible"></iframe>
     362    </t:tab>
     363   
    339364    </t:tabcontrol>
    340365
    341366    <table align="center">
  • www/admin/protocols/index.jsp

     
    172172      if (annotationTypeId != -1) protocol.addParameter(AnnotationType.getById(dc, annotationTypeId));
    173173    }
    174174   
     175    // Annotations tab
     176    Base.updateAnnotations(dc, protocol, protocol, request);
     177   
    175178    dc.commit();
    176179    cc.removeObject("item");
    177180  }
  • www/admin/protocols/view_protocol.jsp

     
    436436      }
    437437      %> 
    438438    </div>
    439       </t:tab>
    440       </t:tabcontrol>
     439    </t:tab>
     440     
     441    <t:tab id="annotations" title="Annotations"
     442      tooltip="View annotation values">
     443      <div class="boxed">
     444      <jsp:include page="../../common/annotations/list_annotations.jsp">
     445        <jsp:param name="item_type" value="<%=itemType.name()%>" />
     446        <jsp:param name="item_id" value="<%=itemId%>" />
     447        <jsp:param name="ID" value="<%=ID%>" />
     448      </jsp:include>
     449      </div>
     450    </t:tab>
     451     
     452    </t:tabcontrol>
    441453
    442454  </base:body>
    443455  </base:page>
  • www/admin/protocols/list_protocol.jsp

     
    2929  import="net.sf.basedb.core.Item"
    3030  import="net.sf.basedb.core.Protocol"
    3131  import="net.sf.basedb.core.ProtocolType"
     32  import="net.sf.basedb.core.Annotation"
     33  import="net.sf.basedb.core.AnnotationType"
     34  import="net.sf.basedb.core.AnnotationSet"
    3235  import="net.sf.basedb.core.ItemQuery"
    3336  import="net.sf.basedb.core.Include"
    3437  import="net.sf.basedb.core.ItemResultIterator"
     
    7881final String title = mode.generateTitle("protocol", "protocols");
    7982final DbControl dc = sc.newDbControl();
    8083ItemResultIterator<Protocol> protocols = null;
     84ItemResultList<AnnotationType> annotationTypes = null;
    8185try
    8286{
     87  final ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
     88  annotationTypes = annotationTypeQuery.list(dc);
     89 
    8390  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
    8491  final ItemQuery<Protocol> query = Base.getConfiguredQuery(cc, true, Protocol.getQuery(), mode);
    8592
     
    289296        filterable="true"
    290297        exportable="true"
    291298      />
     299      <%
     300      for (AnnotationType at : annotationTypes)
     301      {
     302        Enumeration<String, String> annotationEnum = null;
     303        Formatter formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
     304        if (at.isEnumeration())
     305        {
     306          annotationEnum = new Enumeration<String, String>();
     307          List<?> values = at.getValues();
     308          for (Object value : values)
     309          {
     310            String encoded = formatter.format(value);
     311            annotationEnum.add(encoded, encoded);
     312          }
     313        }
     314        %>
     315        <tbl:columndef
     316          id="<%="at"+at.getId()%>"
     317          title="<%=HTML.encodeTags(at.getName())+" [A]"%>"
     318          property="<%="#"+at.getId()%>"
     319          annotation="true"
     320          datatype="<%=at.getValueType().getStringValue()%>"
     321          enumeration="<%=annotationEnum%>"
     322          sortable="false"
     323          filterable="true"
     324          exportable="true"
     325          formatter="<%=formatter%>"
     326          unit="<%=at.getDefaultUnit()%>"
     327        />
     328        <%
     329      }
     330      %> 
    292331      <tbl:columndef
    293332        id="permission"
    294333        title="Permission"
     
    485524                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
    486525                  /></tbl:cell>
    487526                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
     527                <%
     528                AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
     529                if (as != null)
     530                {
     531                  for (AnnotationType at : annotationTypes)
     532                  {
     533                    if (as.hasAnnotation(at))
     534                    {
     535                      Annotation a = as.getAnnotation(at);
     536                      String suffix = a.getUnitSymbol(null);
     537                      if (suffix != null) suffix = "&nbsp;" + suffix;
     538                      %>
     539                      <tbl:cell
     540                        column="<%="at"+at.getId()%>"
     541                        ><tbl:cellvalue
     542                          list="<%=a.getValues(null)%>"
     543                          suffix="<%=suffix%>"
     544                      /></tbl:cell>
     545                      <%
     546                    }
     547                  }
     548                }
     549                %>
     550   
     551               
     552               
    488553                <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
    489554                <tbl:cell column="sharedTo">
    490555                  <%
  • src/core/net/sf/basedb/core/Protocol.java

     
    3737  @version 2.0
    3838*/
    3939public class Protocol
    40   extends CommonItem<ProtocolData>
     40  extends AnnotatedItem<ProtocolData>
    4141  implements FileAttachable, Registered
    4242{
    4343  /**
     
    433433    );
    434434    return query;
    435435  }
     436
     437  /**
     438  @return Always null
     439  @since
     440   */
     441  public Set<Annotatable> getAnnotatableParents()
     442  {
     443    return null;
     444  }
    436445}
  • src/core/net/sf/basedb/core/data/ProtocolData.java

     
    3434  @hibernate.class table="`Protocols`" lazy="true"
    3535*/
    3636public class ProtocolData
    37   extends CommonData
     37  extends AnnotatedData
    3838  implements FileAttachableData, RegisteredData
    3939{
    4040