Changeset 6942


Ignore:
Timestamp:
Aug 31, 2015, 12:50:45 PM (6 years ago)
Author:
Nicklas Nordborg
Message:

References #1941: Store experimental factor values as part experiments

Updated lists that display experimental factors so that they are able to handle inherited/cloned annotations correctly.

Location:
trunk/www
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/common/annotations/annotate.js

    r6938 r6942  
    652652  annotate.unitOnChange = function(event)
    653653  {
    654     annotate.setUnit(selectedAnnotation, event.currentTarget.value);
     654    annotate.setUnit(selectedAnnotation, parseInt(event.currentTarget.value));
    655655  }
    656656
     
    791791    }
    792792   
    793     alert(JSON.stringify(modified));
    794    
    795793    if (frm.modifiedAnnotations)
    796794    {
  • trunk/www/views/experiments/bioassays/bioassays.js

    r6389 r6942  
    136136    url += '&item_id='+Data.get(event.currentTarget, 'item-id');
    137137    url += '&annotationtype_id='+Data.get(event.currentTarget, 'annotation-type');
     138    url += '&annotation_id='+Data.get(event.currentTarget, 'annotation');
    138139    url += '&standalone=1';
    139140    Dialogs.openPopup(url, 'EditAnnotation', 750, 500);
  • trunk/www/views/experiments/bioassays/list_bioassays.jsp

    r6834 r6942  
    3636  import="net.sf.basedb.core.AnnotationType"
    3737  import="net.sf.basedb.core.Annotation"
     38  import="net.sf.basedb.core.Unit"
    3839  import="net.sf.basedb.core.ItemQuery"
    3940  import="net.sf.basedb.core.ItemResultIterator"
     
    573574                for (AnnotationType at : experimentalFactors)
    574575                {
     576                  Unit unit = at.getDefaultUnit();
     577                  String symbol = unit == null ? null : unit.getDisplaySymbol();
    575578                  %>
    576579                  <tbl:cell column="<%="ef"+at.getId()%>"
    577580                    ><tbl:cellvalue
    578581                    list="<%=BioAssaySetUtil.getAnnotationValues(dc, manager, item, at)%>"
     582                    suffix="<%=symbol%>"
    579583                  /></tbl:cell>
    580584                  <%
  • trunk/www/views/experiments/bioassays/view_bioassay.jsp

    r6909 r6942  
    3535  import="net.sf.basedb.core.RawBioAssay"
    3636  import="net.sf.basedb.core.RootRawBioAssay"
     37  import="net.sf.basedb.core.Unit"
    3738  import="net.sf.basedb.core.Annotatable"
    3839  import="net.sf.basedb.core.AnnotationSet"
     
    4849  import="net.sf.basedb.core.query.Orders"
    4950  import="net.sf.basedb.core.query.Hql"
     51  import="net.sf.basedb.core.snapshot.SnapshotManager"
     52  import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
     53  import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
     54  import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
    5055  import="net.sf.basedb.util.formatter.Formatter"
    5156  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
     
    202207      <base:section
    203208        id="rawBioAssaySection"
    204         title="<%="Raw bioassays (" + rawBioAssays.size() + ")"%>"
     209        title="<%="Root raw bioassays (" + rawBioAssays.size() + ")"%>"
    205210        context="<%=cc%>"
    206211        >
     
    259264              <tbl:rows>
    260265              <%
     266              SnapshotManager manager = new SnapshotManager();
     267              AnnotationTypeFilter annotationTypeFilter = new AnnotationTypeFilter();
    261268              for (RootRawBioAssay item : rawBioAssays)
    262269              {
    263270                RawBioAssay rba = item.getRawBioAssay();
     271                AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
     272                AnnotationSetSnapshot snapshot = as == null ? null : manager.getSnapshot(dc, as.getId());
    264273                %>
    265274                <tbl:row>
    266                   <tbl:cell column="name"><%=Base.getLinkedName(ID, rba, false, true)%></tbl:cell>
     275                  <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
    267276                  <tbl:cell column="spots"><%=rba.getSpots()%></tbl:cell>
    268                   <tbl:cell column="description"><%=HTML.encodeTags(rba.getDescription())%></tbl:cell>
     277                  <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
    269278                  <%
    270                   AnnotationSet as = item.isAnnotated() ? item.getAnnotationSet() : null;
    271279                  for (AnnotationType at : experimentalFactors)
    272280                  {
    273                     String value = "<i>- none -</i>";
    274                     List<Annotation> all = as == null ? null : as.findAnnotations(dc, at, true);
    275                     Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
    276                     if (all != null && all.size() > 0)
    277                     {
    278                       for (Annotation a : all)
     281                    Unit unit = at.getDefaultUnit();
     282                    String unitSymbol = unit == null ? "" : "&nbsp;" + unit.getDisplaySymbol();
     283                   
     284                    annotationTypeFilter.setAnnotationType(at);
     285                    List<AnnotationSnapshot> all = snapshot == null ?
     286                        null : manager.findAnnotations(dc, snapshot, annotationTypeFilter, true);
     287                    %>
     288                    <tbl:cell column="<%="at"+at.getId()%>">
     289                      <%
     290                      if (all != null && all.size() > 0)
    279291                      {
    280                         List values = a.getValues();
    281                         Annotatable aItem = null;
    282                         try
     292                        for (AnnotationSnapshot a : all)
    283293                        {
    284                           aItem = a.getAnnotationSet().getItem();
    285                         }
    286                         catch (Throwable t)
    287                         {}
    288                         List toAdd = factorValues.get(aItem);
    289                         if (toAdd == null)
    290                         {
    291                           toAdd = new LinkedList();
    292                           factorValues.put(aItem, toAdd);
    293                         }
    294                         toAdd.addAll(values);
    295                       }
    296                     }
    297                     %>
    298                     <tbl:cell column="<%="at"+at.getId()%>"
    299                       >
    300                       <%
    301                       for (Map.Entry<Annotatable, List> entry : factorValues.entrySet())
    302                       {
    303                         Annotatable aItem = entry.getKey();
    304                         List values = entry.getValue();
    305                         %>
    306                         <tbl:cellvalue list="<%=values%>" />
    307                         <%
    308                         if (aItem != null && aItem.hasPermission(Permission.WRITE))
    309                         {
    310                           %>: <base:icon
    311                               subclass="link auto-init"
    312                               data-auto-init="edit-experimental-factor"
    313                               data-item-type="<%=aItem.getType().name()%>"
    314                               data-item-id="<%=aItem.getId()%>"
    315                               data-annotation-type="<%=at.getId()%>"
    316                               image="edit.png"
    317                               tooltip="Modify the values of this experimental factor"
    318                             />
     294                          List values = a.getActualValues();
     295                          %>
     296                          <tbl:cellvalue list="<%=values%>" suffix="<%=unitSymbol%>"/>
     297                          <base:icon
     298                            subclass="link auto-init"
     299                            data-auto-init="edit-experimental-factor"
     300                            data-item-type="<%=a.getThisItemType().name()%>"
     301                            data-item-id="<%=a.getThisItemId() %>"
     302                            data-annotation-type="<%=at.getId() %>"
     303                            data-annotation="<%=a.getThisAnnotationId()%>"
     304                            visible="<%=writePermission%>"
     305                            image="edit.png"
     306                            tooltip="Modify the values of this experimental factor"
     307                          />
    319308                          <%
    320309                        }
  • trunk/www/views/experiments/experiments.js

    r6834 r6942  
    145145    url += '&item_id='+Data.get(event.currentTarget, 'item-id');
    146146    url += '&annotationtype_id='+Data.get(event.currentTarget, 'annotation-type');
     147    url += '&annotation_id='+Data.get(event.currentTarget, 'annotation');
    147148    url += '&standalone=1';
    148149    Dialogs.openPopup(url, 'EditAnnotation', 750, 500);
  • trunk/www/views/experiments/rootrawbioassays/bioassays.js

    r6916 r6942  
    7272    url += '&item_type='+Data.get(event.currentTarget, 'item-type');
    7373    url += '&item_id='+Data.get(event.currentTarget, 'item-id');
    74     url += '&annotationtype_id='+Data.get(event.currentTarget, 'annotation-type');
     74    url += '&annotationtype_id='+Data.get(event.currentTarget, 'annotation-type-id');
     75    url += '&annotation_id='+Data.get(event.currentTarget, 'annotation-id');
    7576    url += '&standalone=1';
    7677    Dialogs.openPopup(url, 'EditAnnotation', 750, 500);
  • trunk/www/views/experiments/rootrawbioassays/view_bioassay.jsp

    r6916 r6942  
    3434  import="net.sf.basedb.core.RootRawBioAssay"
    3535  import="net.sf.basedb.core.Type"
     36  import="net.sf.basedb.core.Unit"
    3637  import="net.sf.basedb.core.Annotatable"
    3738  import="net.sf.basedb.core.AnnotationSet"
     
    5657  import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
    5758  import="net.sf.basedb.util.formatter.Formatter"
     59  import="net.sf.basedb.util.units.UnitConverter"
    5860  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
    5961  import="net.sf.basedb.clients.web.Base"
     
    7072  import="java.util.HashMap"
    7173  import="java.util.LinkedList"
     74  import="java.util.Date"
    7275%>
    7376<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
     
    111114    <ext:scripts context="<%=jspContext%>" />
    112115    <ext:stylesheets context="<%=jspContext%>" />
     116    <style>
     117    .edit-experimental-factor
     118    {
     119      float: right;
     120    }
     121    </style>
    113122  </base:head>
    114123  <base:body>
     
    230239            <tbl:columndef
    231240              id="item"
    232               title="From item"
     241              title="Parent item"
     242            />
     243            <tbl:columndef
     244              id="note"
     245              title="Note"
    233246            />
    234247            <tbl:columndef
    235248              id="description"
    236249              title="Description"
    237             />
    238             <tbl:columndef
    239               id="status"
    240               title="Status"
    241250            />
    242251            <tbl:data>
     
    255264                List<AnnotationSnapshot> all = snapshot == null ?
    256265                    null : manager.findAnnotations(dc, snapshot, annotationTypeFilter, true);
     266               
     267                List<?> values = null;
     268                Formatter formatter = FormatterFactory.getTypeFormatter(sc, valueType);
     269                Nameable parentItem = null;
     270                String parentType = "";
    257271                if (all != null && all.size() > 0)
    258272                {
    259273                  for (AnnotationSnapshot a : all)
    260274                  {
    261                     Annotation ann = a.getAnnotation(dc);
    262                     List<?> values = a.getValues(ann.getUnitConverter(null), ann.getValueType());
    263                     Formatter formatter = FormatterFactory.getAnnotationFormatter(sc, ann, null);
    264                     Nameable aItem = null;
    265                     boolean writeInherited = false;
    266                     String fromType = a.getItemType().toString();
    267                     try
     275                    Unit unit = a.getActualUnit(dc);
     276                    UnitConverter converter = null;
     277                    if (unit != null)
    268278                    {
    269                       aItem = (Nameable)a.getItem(dc);
    270                       writeInherited = aItem.hasPermission(Permission.WRITE);
     279                      converter = unit.getUnitConverter(at.getDefaultUnit());
     280                      formatter = unit.getFormatter(formatter);
    271281                    }
    272                     catch (PermissionDeniedException ex)
    273                     {}
    274                     if (aItem instanceof Subtypable)
     282                    values = a.getActualValues(converter, valueType);
     283
     284                    Date lastModified = a.getThisLastUpdate();
     285                    boolean isUpToDate = true;
     286                    AnnotationSnapshot inherited = a.getInheritedFrom();
     287                    if (inherited != null)
    275288                    {
     289                      parentType = inherited.getItemType().toString();
     290                      if (lastModified == null)
     291                      {
     292                        lastModified = inherited.getThisLastUpdate();
     293                      }
     294                      else
     295                      {
     296                        isUpToDate = !lastModified.before(inherited.getThisLastUpdate());
     297                      }
    276298                      try
    277299                      {
    278                         ItemSubtype subtype = ((Subtypable)aItem).getItemSubtype();
    279                         if (subtype != null) fromType = subtype.getName();
     300                        parentItem = (Nameable)inherited.getThisItem(dc);
     301                        if (parentItem instanceof Subtypable)
     302                        {
     303                          ItemSubtype subtype = ((Subtypable)parentItem).getItemSubtype();
     304                          if (subtype != null) parentType = subtype.getName();
     305                        }
    280306                      }
    281307                      catch (PermissionDeniedException ex)
     
    285311                    <tbl:row>
    286312                      <tbl:cell column="name"><base:icon
    287                           image="deleted.png"
    288                           tooltip="This item has been scheduled for deletion"
    289                           visible="<%=at.isRemoved()%>"
     313                        image="deleted.png"
     314                        tooltip="This item has been scheduled for deletion"
     315                        visible="<%=at.isRemoved()%>"
    290316                        /><%=Base.getLinkedName(ID, at, false, true)%></tbl:cell>
    291317                      <tbl:cell column="description"><%=HTML.encodeTags(at.getDescription())%></tbl:cell>
     
    295321                      </tbl:cell>
    296322                      <tbl:cell column="values">
    297                         <%=values == null || values.size() == 0 ?
    298                           "<i>- no values -</i>" : Values.getString(values, ", ", true, formatter)%>
     323                        <%=Values.getString(values, ", ", true, formatter)%>
     324                        <base:icon id="<%=Integer.toString(a.getThisAnnotationId())%>"
     325                          image="edit.png" subclass="edit-experimental-factor auto-init" data-auto-init="edit-experimental-factor"
     326                          data-item-type="ROOTRAWBIOASSAY"
     327                          data-item-id="<%=itemId%>"
     328                          data-annotation-type-id="<%=at.getId()%>"
     329                          data-annotation-id="<%=a.getThisAnnotationId()%>"
     330                          tooltip="Edit this annotation" visible="<%=writePermission %>"/>
    299331                      </tbl:cell>
    300                       <tbl:cell column="item"><%=Base.getLinkedName(ID, aItem, aItem == null, true)%><%=aItem != null ? " <span class=\"itemsubtype\">("+fromType+")</span>" : ""%></tbl:cell>
    301                       <tbl:cell column="status" id="<%="status." + at.getId()%>">
     332                      <tbl:cell column="item">
     333                        <%
     334                        if (parentItem != null)
     335                        {
     336                          %>
     337                          <%=Base.getLinkedName(ID, parentItem, false, true)%>
     338                          <span class="itemsubtype">(<%=parentType%>)</span>
     339                          <%
     340                        }
     341                        else if (a.getSource() == Annotation.Source.CLONED)
     342                        {
     343                          %>
     344                          <i>- missing -</i>
     345                          <%
     346                        }
     347                        %>
    302348                      </tbl:cell>
     349                      <tbl:cell column="note"><%=a.getSource() == Annotation.Source.CLONED ? "Cloned" + (isUpToDate ? "; up-to-date" : "; modified") : "" %></tbl:cell>
    303350                    </tbl:row>
    304351                    <%
     
    310357                  <tbl:row>
    311358                    <tbl:cell column="name"><base:icon
    312                         image="deleted.png"
    313                         tooltip="This item has been scheduled for deletion"
    314                         visible="<%=at.isRemoved()%>"
     359                      image="deleted.png"
     360                      tooltip="This item has been scheduled for deletion"
     361                      visible="<%=at.isRemoved()%>"
    315362                      /><%=Base.getLinkedName(ID, at, false, true)%></tbl:cell>
    316363                    <tbl:cell column="description"><%=HTML.encodeTags(at.getDescription())%></tbl:cell>
     
    318365                      <%=valueType%>
    319366                      <%=at.isEnumeration() ? "(enumeration)" : ""%>
    320                     </tbl:cell>
    321                     <tbl:cell column="values">
    322                       <i>- no values -</i>
    323367                    </tbl:cell>
    324368                  </tbl:row>
  • trunk/www/views/experiments/view_experiment.jsp

    r6916 r6942  
    544544                  String unitSymbol = unit == null ? "" : "&nbsp;" + unit.getDisplaySymbol();
    545545                 
    546                   String value = "<i>- none -</i>";
    547546                  annotationTypeFilter.setAnnotationType(at);
    548547                  List<AnnotationSnapshot> all = snapshot == null ?
    549548                      null : manager.findAnnotations(dc, snapshot, annotationTypeFilter, true);
    550                   Map<Annotatable, List> factorValues = new HashMap<Annotatable, List>();
    551                   if (all != null && all.size() > 0)
    552                   {
    553                     for (AnnotationSnapshot a : all)
    554                     {
    555                       List values = a.getValues();
    556                       usedFactorValues.get(at).addAll(values);
    557                       factorValuesCount.put(at, factorValuesCount.get(at)+1);
    558                       Annotatable aItem = null;
    559                       try
    560                       {
    561                         aItem = a.getItem(dc);
    562                       }
    563                       catch (Throwable t)
    564                       {}
    565                       List toAdd = factorValues.get(aItem);
    566                       if (toAdd == null)
    567                       {
    568                         toAdd = new LinkedList();
    569                         factorValues.put(aItem, toAdd);
    570                       }
    571                       toAdd.addAll(values);
    572                     }
    573                   }
    574549                  %>
    575550                  <tbl:cell column="<%="at"+at.getId()%>">
    576551                    <%
    577                     for (Map.Entry<Annotatable, List> entry : factorValues.entrySet())
     552                    if (all != null && all.size() > 0)
    578553                    {
    579                       Annotatable aItem = entry.getKey();
    580                       List values = entry.getValue();
    581                       %>
    582                       <tbl:cellvalue list="<%=values%>" suffix="<%=unitSymbol%>"/>
    583                       <%
    584                       if (aItem != null && aItem.hasPermission(Permission.WRITE))
     554                      for (AnnotationSnapshot a : all)
    585555                      {
    586                         %>: <base:icon
    587                             subclass="link auto-init"
    588                             data-auto-init="edit-experimental-factor"
    589                             data-item-type="<%=aItem.getType().name()%>"
    590                             data-item-id="<%=aItem.getId() %>"
    591                             data-annotation-type="<%=at.getId() %>"
    592                             image="edit.png"
    593                             tooltip="Modify the values of this experimental factor"
    594                           />
     556                        factorValuesCount.put(at, factorValuesCount.get(at)+1);
     557                        List values = a.getActualValues();
     558                        usedFactorValues.get(at).addAll(values);
     559                        %>
     560                        <tbl:cellvalue list="<%=values%>" suffix="<%=unitSymbol%>"/>
     561                        <base:icon
     562                          subclass="link auto-init"
     563                          data-auto-init="edit-experimental-factor"
     564                          data-item-type="<%=a.getThisItemType().name()%>"
     565                          data-item-id="<%=a.getThisItemId() %>"
     566                          data-annotation-type="<%=at.getId() %>"
     567                          data-annotation="<%=a.getThisAnnotationId()%>"
     568                          visible="<%=writePermission%>"
     569                          image="edit.png"
     570                          tooltip="Modify the values of this experimental factor"
     571                        />
    595572                        <%
    596573                      }
Note: See TracChangeset for help on using the changeset viewer.