Changeset 7447


Ignore:
Timestamp:
Feb 22, 2018, 8:52:16 AM (4 years ago)
Author:
Nicklas Nordborg
Message:

Merged patch release BASE 3.11.3 to the trunk.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/core/net/sf/basedb/core/RawBioAssay.java

    r7381 r7447  
    603603 
    604604  /**
    605     Get the job that imported data to this raw bioassay.
     605    Set the job on this raw bioassay that was used to create or import
     606    data for it.
     607
     608    @param job The job or null to clear the existing job
     609    @throws PermissionDeniedException If the logged in user doesn't have
     610      write permission
     611    @since 3.11.3
     612  */
     613  public void setJob(Job job)
     614    throws PermissionDeniedException
     615  {
     616    checkPermission(Permission.WRITE);
     617    if (job != null) job.checkPermission(Permission.USE);
     618    getData().setJob(job == null ? null : job.getData());
     619  }
     620 
     621  /**
     622    Get the job that created or imported data to this raw bioassay.
    606623    @return A <code>Job</code> object, ot null if this information is
    607624      not available
     
    10581075    {
    10591076      rawDataBatcher = RawDataBatcher.getNew(getDbControl(), this, fiMethod);
    1060       getData().setJob(job == null ? null : job.getData());
     1077      if (job != null) getData().setJob(job.getData());
    10611078    }
    10621079    return rawDataBatcher;
  • trunk/www/include/scripts/main-2.js

    r7428 r7447  
    38503850    // Position the dropdown
    38513851    var pos = select.getFixedDropDownPosition(element);
    3852     dropdownDiv.style.width = (pos.width)+'px';
    3853     dropdownDiv.style.left = (pos.left)+'px';
    3854  
     3852    dropdownDiv.style.left = pos.left;
     3853    dropdownDiv.style.right = pos.right;
     3854    dropdownDiv.style.width = pos.width;
     3855    dropdownDiv.style.minWidth = pos.minWidth;
     3856    dropdownDiv.style.maxWidth = pos.maxWidth;
     3857
    38553858    // Show it
    38563859    Doc.addClass(element, 'active');
     
    38703873    // Position the dropdown div relative the  main element
    38713874    var fpos = Doc.getElementPosition(element);
    3872    
    3873     // Assume the same as the main element
     3875
    38743876    var dpos = {};
    3875     dpos.left = fpos.left+1;
    3876     dpos.width = fpos.width;
    3877    
    3878     if (dpos.width < 150)
    3879     {
    3880       // The dropdown should be at least 150px wide.
    3881       dpos.width = 150;
    3882      
     3877
     3878    // The default is to make the drop-down the same size as the filter
     3879    dpos.left = (fpos.left+1)+'px';
     3880    dpos.width = (fpos.width)+'px';
     3881    dpos.right = 'auto';
     3882    dpos.minWidth = (Math.max(fpos.width, 150))+'px';
     3883    dpos.maxWidth = 'auto';
     3884   
     3885    if (fpos.width < 300)
     3886    {
     3887      // If the width is smaller than 300 we should open up either
     3888      // to the left or to the right, we need to check how close we are to
     3889      // the right side
    38833890      try
    38843891      {
     
    38923899        }
    38933900        if (p==null) p = document.body;
    3894        
     3901
    38953902        // Get position data for the parent
    3896         // +30 should be safe to account for a scrollbar
     3903        // +16 should be safe to account for a scrollbar
    38973904        var ppos = Doc.getElementPosition(p);
    3898         var scrollbar = p.scrollHeight > p.clientHeight ? 30 : 0;
     3905        var scrollbar = p.scrollHeight > p.clientHeight ? 16 : 0;
    38993906        var maxRight = ppos.width + p.scrollLeft - scrollbar;
    3900        
    3901         // Right-align the dropdown if it overflows
    3902         if (dpos.left + dpos.width > maxRight)
     3907
     3908        dpos.width = 'auto';
     3909        dpos.maxWidth = '300px';
     3910        if (fpos.left + 300 > maxRight)
    39033911        {
    3904           dpos.left = fpos.right - 148;
     3912          // Align to right
     3913          dpos.left = 'auto';
     3914          dpos.right = (ppos.right-fpos.right-scrollbar)+'px';
    39053915          if (fpos.right > maxRight)
    39063916          {
     
    39203930      }
    39213931    }
    3922    
    39233932    return dpos;
    39243933  }
     
    40794088      optionDiv.innerHTML = options[i].value;
    40804089      options[i].div = optionDiv;
     4090      optionDiv.title = options[i].value;
    40814091      allOptionsDiv.appendChild(optionDiv);
    40824092      Events.addEventHandler(optionDiv, 'click', internal.optionOnClick);
     
    42694279    // Position the dropdown
    42704280    var pos = select.getFixedDropDownPosition(activeSelect);
    4271     dropdownDiv.style.width = (pos.width)+'px';
    4272     dropdownDiv.style.left = (pos.left)+'px';
     4281    dropdownDiv.style.left = pos.left;
     4282    dropdownDiv.style.right = pos.right;
     4283    dropdownDiv.style.width = pos.width;
     4284    dropdownDiv.style.minWidth = pos.minWidth;
     4285    dropdownDiv.style.maxWidth = pos.maxWidth;
    42734286  }
    42744287 
     
    43144327    // Position the dropdown
    43154328    var pos = MultiSelect.getFixedDropDownPosition(element);
    4316     dropdownDiv.style.width = (pos.width)+'px';
    4317     dropdownDiv.style.left = (pos.left)+'px';
     4329    dropdownDiv.style.left = pos.left;
     4330    dropdownDiv.style.right = pos.right;
     4331    dropdownDiv.style.width = pos.width;
     4332    dropdownDiv.style.minWidth = pos.minWidth;
     4333    dropdownDiv.style.maxWidth = pos.maxWidth;
    43184334   
    43194335    // Show it
     
    46654681    // Position the dropdown
    46664682    var pos = MultiSelect.getFixedDropDownPosition(activeEnum);
    4667     dropdownDiv.style.width = (pos.width)+'px';
    4668     dropdownDiv.style.left = (pos.left)+'px';
     4683    dropdownDiv.style.left = pos.left;
     4684    dropdownDiv.style.right = pos.right;
     4685    dropdownDiv.style.width = pos.width;
     4686    dropdownDiv.style.minWidth = pos.minWidth;
     4687    dropdownDiv.style.maxWidth = pos.maxWidth;
    46694688  }
    46704689 
  • trunk/www/include/styles/main.css

    r7335 r7447  
    977977  margin-left: -2px;
    978978  margin-top: 2px;
     979  min-width: 150px;
    979980}
    980981
    981982div.smartenum
    982983{
    983   height: 20em;
     984  min-height: 15em;
     985  max-height: 30em;
    984986}
    985987
     
    10451047.multioptionoptions
    10461048{
    1047   height: 20em;
     1049  min-height: 15em;
     1050  max-height: 30em;
    10481051  overflow: auto;
    10491052}
  • trunk/www/views/derivedbioassays/list_bioassays.jsp

    r7337 r7447  
    117117 
    118118  final ItemQuery<ItemSubtype> subtypesQuery = Base.getSubtypesQuery(itemType);
     119  final ItemQuery<ItemSubtype> jobSubtypesQuery = Base.getSubtypesQuery(Item.JOB);
    119120
    120121  // Query for parent physical bioassays to the current bioassay
     
    262263        property="&rawBioAssays(name)"
    263264        datatype="string"
     265        filterable="true"
     266        exportable="true"
     267      />
     268      <tbl:columndef
     269        id="jobType"
     270        property="job.itemSubtype"
     271        sortproperty="job.itemSubtype.name"
     272        exportproperty="job.itemSubtype.name:string"
     273        datatype="int"
     274        enumeration="<%=Enumeration.fromItems(jobSubtypesQuery.list(dc), "-none-")%>"
     275        title="Job type"
     276        sortable="true"
    264277        filterable="true"
    265278        exportable="true"
     
    790803                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
    791804                  /></tbl:cell>
     805                <tbl:cell column="jobType"><base:propertyvalue
     806                    item="<%=item%>"
     807                    property="job.itemSubtype"
     808                    enableEditLink="<%=mode.hasEditLink()%>"
     809                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
     810                  /></tbl:cell>
    792811                <tbl:cell column="plugin"
    793812                  ><base:propertyvalue
  • trunk/www/views/derivedbioassays/view_bioassay.jsp

    r7265 r7447  
    332332      <td style="width: 50%; height: 100%;" class="leftborder">
    333333        <table class="fullform">
    334         <tbody class="sectionheader">
    335           <tr>
    336             <th colspan="2">Job &amp; plug-in parameters</th>
    337           </tr>
    338         </tbody>
    339334        <tr>
    340335          <th>Job</th>
     
    343338        <tr>
    344339          <th>Plugin</th>
    345           <td><%=Base.getLinkedName(ID, plugin,
    346               !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
    347         </tr>
    348         <tr>
    349           <th>Plugin configuration</th>
    350           <td><%=Base.getLinkedName(ID, configuration, !readConfiguration,
    351             configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
     340          <td>
     341            <base:propertyvalue item="<%=bioAssay%>" property="job.pluginDefinition" nulltext="<i>External</i>" />
     342            <%=job != null && job.getPluginVersion() != null ? "(" + HTML.encodeTags(job.getPluginVersion()) + ")" : ""%>
     343          </td>
    352344        </tr>
    353345        <%
     346        if (configuration != null)
     347        {
     348          %>
     349          <tr>
     350            <th>Plugin configuration</th>
     351            <td><%=Base.getLinkedName(ID, configuration, !readConfiguration, true)%></td>
     352          </tr>
     353          <%
     354        }
    354355        if (job != null)
    355356        {
    356357          %>
     358          <tr>
     359            <th>Type</th>
     360            <td><base:propertyvalue item="<%=job%>" property="itemSubtype" /></td>
     361          </tr>
    357362          <tr>
    358363            <th>Started</th>
     
    367372            </td>
    368373          </tr>
    369           <tr>
    370             <th>Server</th>
    371             <td>
    372               <%=HTML.encodeTags(job.getServerAndNode())%>
    373             </td>
    374           </tr>
    375           <%
     374          <%
     375          if (job.getServer() != null)
     376          {
     377            %>
     378            <tr>
     379              <th>Server</th>
     380              <td>
     381                <%=HTML.encodeTags(job.getServerAndNode())%>
     382              </td>
     383            </tr>
     384            <%
     385          }
    376386          for (String name : job.getParameterNames())
    377387          {
  • trunk/www/views/rawbioassays/list_rawbioassays.jsp

    r7337 r7447  
    4040  import="net.sf.basedb.core.FileSet"
    4141  import="net.sf.basedb.core.DataFileType"
     42  import="net.sf.basedb.core.ItemSubtype"
    4243  import="net.sf.basedb.core.ItemQuery"
    4344  import="net.sf.basedb.core.Include"
     
    126127  List<DataFileType> fileTypeColumns = new ArrayList<DataFileType>(Base.getDataFileColumns(itemType, null).list(dc));
    127128
     129  final ItemQuery<ItemSubtype> jobSubtypesQuery = Base.getSubtypesQuery(Item.JOB);
     130 
    128131  // Query for experiments relatated to the current raw bioassay
    129132  final ItemQuery<Experiment> experimentQuery = Experiment.getQuery();
     
    345348      />
    346349      <tbl:columndef
     350        id="jobType"
     351        property="job.itemSubtype"
     352        sortproperty="job.itemSubtype.name"
     353        exportproperty="job.itemSubtype.name:string"
     354        datatype="int"
     355        enumeration="<%=Enumeration.fromItems(jobSubtypesQuery.list(dc), "-none-")%>"
     356        title="Job type"
     357        sortable="true"
     358        filterable="true"
     359        exportable="true"
     360      />
     361      <tbl:columndef
    347362        id="plugin"
    348363        property="job.pluginDefinition.name"
     
    352367        filterable="true"
    353368        exportable="true"
    354         tooltip="The plug-in that was used to import raw data"
     369        tooltip="The plug-in that was used to create data for the raw bioassay"
    355370      />
    356371      <tbl:columndef
     
    362377        filterable="true"
    363378        exportable="true"
    364         tooltip="The configuration/file format that was used to import raw data"
     379        tooltip="The configuration/file format that was used to create data for the raw bioassay"
    365380      />
    366381      <tbl:columndef
     
    769784                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
    770785                  /></tbl:cell>
     786                <tbl:cell column="jobType"><base:propertyvalue
     787                    item="<%=item%>"
     788                    property="job.itemSubtype"
     789                    enableEditLink="<%=mode.hasEditLink()%>"
     790                    enablePropertyLink="<%=mode.hasPropertyLink()%>"
     791                  /></tbl:cell>
    771792                <tbl:cell column="plugin">
    772793                  <base:propertyvalue
  • trunk/www/views/rawbioassays/view_rawbioassay.jsp

    r7166 r7447  
    5353  import="net.sf.basedb.core.MultiPermissions"
    5454  import="net.sf.basedb.core.PermissionDeniedException"
     55  import="net.sf.basedb.core.ParameterInfo"
     56  import="net.sf.basedb.core.BasicItem"
     57  import="net.sf.basedb.core.Nameable"
    5558  import="net.sf.basedb.core.PluginDefinition"
     59  import="net.sf.basedb.core.PluginConfiguration"
    5660  import="net.sf.basedb.core.plugin.GuiContext"
    5761  import="net.sf.basedb.core.plugin.Plugin"
     
    113117  Job job = null;
    114118  boolean readJob = true;
     119  PluginDefinition plugin = null;
     120  boolean readPlugin = true;
     121  PluginConfiguration configuration = null;
     122  boolean readConfiguration = true;
     123
    115124  try
    116125  {
     
    120129  {
    121130    readJob = false;
     131    readPlugin = false;
     132    readConfiguration = false;
    122133  }
     134  if (job != null)
     135  {
     136    try
     137    {
     138      plugin = job.getPluginDefinition();
     139    }
     140    catch (PermissionDeniedException ex)
     141    {
     142      readPlugin = false;
     143    }
     144    try
     145    {
     146      configuration = job.getPluginConfiguration();
     147    }
     148    catch (PermissionDeniedException ex)
     149    {
     150      readConfiguration = false;
     151    }
     152  }
     153
     154 
    123155  final Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
    124156  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
     
    317349      <td style="width: 50%; height: 100%;" class="leftborder">
    318350        <table class="fullform">
    319         <tbody class="sectionheader">
    320           <tr>
    321             <th colspan="4">Raw data import</th>
    322           </tr>
    323         </tbody>
    324351        <tr>
    325352          <th>Job</th>
     
    327354        </tr>
    328355        <tr>
    329           <th>Date / time</th>
    330           <td colspan="3"><%=job == null ? "" : dateTimeFormatter.format(job.getEnded())%></td>
    331         </tr>
    332         <tr>
    333356          <th>Plugin</th>
    334           <td colspan="3"><base:propertyvalue item="<%=rawBioAssay%>" property="job.pluginDefinition" /></td>
    335         </tr>
    336         <tr>
    337           <th>Configuration / file format</th>
    338           <td colspan="3"><base:propertyvalue item="<%=rawBioAssay%>" property="job.pluginConfiguration" /></td>
    339         </tr>
    340         <tbody class="sectionheader">
    341           <tr>
    342             <th colspan="4">Spot images</th>
    343           </tr>
    344         </tbody>
     357          <td colspan="3">
     358            <base:propertyvalue item="<%=rawBioAssay%>" property="job.pluginDefinition" nulltext="<i>External</i>" />
     359            <%=job != null && job.getPluginVersion() != null ? "(" + HTML.encodeTags(job.getPluginVersion()) + ")" : ""%>
     360          </td>
     361        </tr>
    345362        <%
    346         if (!rawBioAssay.hasSpotImages())
     363        if (configuration != null)
    347364        {
    348365          %>
    349           <tr class="dynamic">
    350             <td colspan="4">
    351               <div class="messagecontainer note">
    352               No spot images has been created for this raw bioassay.
    353               </div>
     366          <tr>
     367            <th>Configuration / file format</th>
     368            <td colspan="3"><%=Base.getLinkedName(ID, configuration, !readConfiguration, true)%></td>
     369          </tr>
     370          <%
     371        }
     372        if (job != null)
     373        {
     374          %>
     375          <tr>
     376            <th>Type</th>
     377            <td><base:propertyvalue item="<%=job%>" property="itemSubtype" /></td>
     378          </tr>
     379          <tr>
     380            <th>Started</th>
     381            <td>
     382              <%=dateTimeFormatter.format(job.getStarted())%>
    354383            </td>
    355384          </tr>
    356           <%
     385          <tr>
     386            <th>Ended</th>
     387            <td>
     388              <%=dateTimeFormatter.format(job.getEnded())%>
     389            </td>
     390          </tr>
     391          <%
     392          if (job.getServer() != null)
     393          {
     394            %>
     395            <tr>
     396              <th>Server</th>
     397              <td>
     398                <%=HTML.encodeTags(job.getServerAndNode())%>
     399              </td>
     400            </tr>
     401            <%
     402          }
     403          for (String name : job.getParameterNames())
     404          {
     405            StringBuilder sb = new StringBuilder();
     406            String displayValue = "";
     407            String description = "";
     408            try
     409            {
     410              ParameterInfo pi = job.getParameterInfo(name);
     411              if (pi.getLabel() != null) name = HTML.encodeTags(pi.getLabel());
     412              description = HTML.encodeTags(pi.getDescription());
     413              List<?> values = pi.getValuesOrMask();
     414              int i = 0;
     415              for (Object value : values)
     416              {
     417                if (value != null)
     418                {
     419                  if (i > 0) sb.append(", ");
     420                  i++;
     421                  if (value instanceof BasicItem)
     422                  {
     423                    BasicItem item = (BasicItem)value;
     424                    String itemName = "";
     425                    if (item instanceof File)
     426                    {
     427                      itemName = ((File)item).getPath().toString();
     428                    }
     429                    else if (item instanceof Nameable)
     430                    {
     431                      itemName = ((Nameable)item).getName();
     432                    }
     433                    else
     434                    {
     435                      itemName = item.toString();
     436                    }
     437                    sb.append(Base.getLink(ID, HTML.encodeTags(itemName),
     438                      item.getType(), item.getId(), item.hasPermission(Permission.WRITE)));
     439                  }
     440                  else if (value instanceof Date)
     441                  {
     442                    sb.append(dateFormatter.format((Date)value));
     443                  }
     444                  else
     445                  {
     446                    sb.append(HTML.encodeTags(value.toString()));
     447                  }
     448                }
     449              }
     450              displayValue = sb.toString();
     451            }
     452            catch (Throwable ex)
     453            {
     454              displayValue = "<i>ERROR: "+ex.getMessage()+"</i>";
     455            }
     456            %>
     457            <tr>
     458              <th><span title="<%=description%>"><%=name%></span></th>
     459              <td>
     460                <%=displayValue%>
     461              </td>
     462            </tr>
     463            <%
     464          }
    357465        }
    358         else
     466        if (rawBioAssay.hasSpotImages())
    359467        {
    360468          SpotImages spi = rawBioAssay.getSpotImages();
    361469          %>
     470          <tbody class="sectionheader">
     471            <tr>
     472              <th colspan="4">Spot images</th>
     473            </tr>
     474          </tbody>
    362475          <tr>
    363476            <th>X scale</th>
     
    403516        }
    404517        %>
     518        <tr class="dynamic">
     519          <th></th>
     520          <td colspan="3"></td>
     521        </tr>
    405522        </table>
    406523      </td>
Note: See TracChangeset for help on using the changeset viewer.