Changeset 4989


Ignore:
Timestamp:
Sep 28, 2018, 1:44:07 PM (4 years ago)
Author:
Nicklas Nordborg
Message:

References #1054: Even more functionality in the Flagged alignment wizard

The "Start Hisat alignment" wizard now checks for items marked with DoNotUse. It will display a warning that must be confirmed before using such items.

Location:
extensions/net.sf.basedb.reggie/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.reggie/trunk/resources/analysis/hisat_start.js

    r4656 r4989  
    55  var subtypeMergedSequences = null;
    66  var clusterIsValid = false;
     7  var manuallySelected = [];
    78 
    89  // Page initialization
     
    1314    Buttons.addClickHandler('btnSelectMergedSequences', hisat.selectMergedSequences);
    1415    Events.addEventHandler('mergedSequences', 'base-selected', hisat.setMergedSequenceCallback);
     16    Events.addEventHandler('mergedSequences', 'change', hisat.mergedSequencesOnChange);
    1517    Events.addEventHandler('step-1', 'wizard-validate', hisat.validateStep1);
    1618
     
    4951      {
    5052        var ms = mergedSequences[msNo];
    51         var lib = ms.lib;
    52         var isYellow = lib.specimen && lib.specimen.YellowLabel != null;
    53         var libPlate = lib.bioWell ? lib.bioWell.bioPlate : null;
     53        var libPlate = ms.lib.bioWell ? ms.lib.bioWell.bioPlate : null;
    5454        if (firstPlate == null && libPlate != null) firstPlate = libPlate.name;
    55        
    56         var name = (msNo+1) + ': ';
    57         if (libPlate) name += libPlate.name + ' - ';
    58         name += ms.name;
    59         if (ms.AutoProcess == 'ReProcess')
    60         {
    61           name += ' [R]';
    62         }
    63        
    64         var option = new Option(name, ms.id, false, libPlate != null && libPlate.name==firstPlate);
    65         if (isYellow) option.className = 'yellow';
    66         option.mergedSequences = ms;
     55        var option = hisat.createListOption(msNo+1, ms, ms.DO_NOT_USE == null && libPlate != null && libPlate.name==firstPlate)
    6756        frm.mergedSequences.options[frm.mergedSequences.length] = option;
    6857      }
     
    10190    }
    10291   
     92    // Reset list
     93    manuallySelected = [];
    10394    var url = '&resetTemporary=1';
    10495    url += '&tmpfilter:INT:itemSubtype='+subtypeMergedSequences.id;
     
    109100  {
    110101    var ms = event.detail;
    111    
    112     var frm = document.forms['reggie'];
    113     var mergedSequences = frm.mergedSequences;
    114     for (var i = 0; i < mergedSequences.length; i++)
    115     {
    116       if (mergedSequences[i].value == ms.id)
    117       {
    118         mergedSequences[i].selected = true;
    119         Wizard.setInputStatus('mergedSequences');
    120         return;
    121       }
    122     }
    123 
    124     var ms = event.detail;
    125     var option = new Option(ms.name, ms.id);
    126     option.mergedSequences = ms;
    127     option.selected = true;
    128     mergedSequences[mergedSequences.length] = option;
    129     Wizard.setInputStatus('mergedSequences');
    130   }
    131 
     102    manuallySelected[manuallySelected.length] = ms.id;
     103   
     104    if (ms.remaining == 0)
     105    {
     106      var url = '../Hisat.servlet?ID='+App.getSessionId();
     107      url += '&cmd=GetMergedSequencesForHisat';
     108      url += '&items='+manuallySelected.join(',');
     109      Wizard.showLoadingAnimation('Loading bioassays...');
     110      Wizard.asyncJsonRequest(url, hisat.manuallySelected);
     111    }
     112  }
     113
     114  hisat.manuallySelected = function(response)
     115  {
     116    var mergedSequences = response.mergedSequences;
     117    var frm = document.forms['reggie'];
     118
     119    if (mergedSequences != null && mergedSequences.length > 0)
     120    {
     121      var offset = frm.mergedSequences.length+1;
     122      for (var msNo=0; msNo < mergedSequences.length; msNo++)
     123      {
     124        var ms = mergedSequences[msNo];
     125        var option = hisat.createListOption(msNo+offset, ms, ms.DO_NOT_USE == null);
     126        frm.mergedSequences.options[frm.mergedSequences.length] = option;
     127      }
     128    }
     129  }
     130 
     131  hisat.createListOption = function(index, mergedItem, selected)
     132  {
     133    var lib = mergedItem.lib;
     134    var isYellow = lib.specimen && lib.specimen.YellowLabel != null;
     135    var libPlate = lib.bioWell ? lib.bioWell.bioPlate : null;
     136   
     137    var tooltip = null;
     138    var name = (index) + ': ';
     139    if (libPlate) name += libPlate.name + ' - ';
     140    name += mergedItem.name;
     141   
     142    if (mergedItem.DO_NOT_USE)
     143    {
     144      name += ' [DoNotUse]';
     145      tooltip = 'DoNotUse-'+Strings.encodeTags(mergedItem.DO_NOT_USE+': '+mergedItem.DO_NOT_USE_COMMENT);
     146    }
     147    else if (mergedItem.AutoProcess == 'ReProcess')
     148    {
     149      name += ' [R]';
     150    }
     151   
     152    var option = new Option(name, mergedItem.id, false, selected);
     153    if (isYellow) option.className = 'yellow';
     154    if (tooltip) option.title = tooltip;
     155    option.mergedSequences = mergedItem;
     156    return option;
     157  }
     158 
     159  hisat.mergedSequencesOnChange = function()
     160  {
     161    var frm = document.forms['reggie'];
     162   
     163    var numDoNotUse = 0;
     164    for (var msNo = 0; msNo < frm.mergedSequences.length; msNo++)
     165    {
     166      if (frm.mergedSequences[msNo].selected)
     167      {
     168        var ms = frm.mergedSequences[msNo].mergedSequences;
     169        if (ms.DO_NOT_USE) numDoNotUse++;
     170      }
     171    }
     172   
     173    if (numDoNotUse > 0)
     174    {
     175      Wizard.setInputStatus('mergedSequences', 'warning', numDoNotUse + ' selected items marked as DoNotUse');
     176      Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse');
     177    }
     178    else
     179    {
     180      Wizard.setInputStatus('mergedSequences');
     181      Wizard.hideGoNextConfirmation();
     182    }
     183  }
    132184 
    133185  // --- Step 2 -----------------------------------
  • extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/servlet/HisatServlet.java

    r4686 r4989  
    8282      {
    8383        dc = sc.newDbControl();
    84         ItemList hisatPipeline = BiomaterialList.HISAT_PIPELINE.load(dc);
    85        
    86         ItemQuery<DerivedBioAssay> query = (ItemQuery<DerivedBioAssay>)hisatPipeline.getMembers();
    87         query.setIncludes(Reggie.INCLUDE_IN_CURRENT_PROJECT);
    88         Subtype.MERGED_SEQUENCES.addFilter(dc, query);
    89         // Join LibPlate for sorting
    90         query.join(Hql.innerJoin(null, "extract", "lib", true));
    91         query.join(Hql.innerJoin("lib", "bioWell", "bw", true));
    92         query.join(Hql.innerJoin("bw", "bioPlate", "libPlate", true));
    93         query.order(Orders.asc(Hql.property("libPlate", "id")));
    94         query.order(Orders.asc(Hql.property("name")));
    95         query.setMaxResults(250);
    96 
    97         List<MergedSequences> list = MergedSequences.toList(query.list(dc));
     84       
     85        List<MergedSequences> list = null;
     86        String items = Values.getStringOrNull(req.getParameter("items"));
     87        if (items == null)
     88        {
     89          // Load items from the pipeline list
     90          ItemList hisatPipeline = BiomaterialList.HISAT_PIPELINE.load(dc);
     91          ItemQuery<DerivedBioAssay> query = (ItemQuery<DerivedBioAssay>)hisatPipeline.getMembers();
     92          query.setIncludes(Reggie.INCLUDE_IN_CURRENT_PROJECT);
     93          Subtype.MERGED_SEQUENCES.addFilter(dc, query);
     94          // Join LibPlate for sorting
     95          query.join(Hql.innerJoin(null, "extract", "lib", true));
     96          query.join(Hql.innerJoin("lib", "bioWell", "bw", true));
     97          query.join(Hql.innerJoin("bw", "bioPlate", "libPlate", true));
     98          query.order(Orders.asc(Hql.property("libPlate", "id")));
     99          query.order(Orders.asc(Hql.property("name")));
     100          query.setMaxResults(250);
     101          list = MergedSequences.toList(query.list(dc));
     102        }
     103        else
     104        {
     105          Integer[] ids = Values.getInt(items.split(","));
     106          list = new ArrayList<MergedSequences>();
     107          for (Integer id : ids)
     108          {
     109            list.add(MergedSequences.getById(dc, id));
     110          }
     111        }
     112
    98113        SnapshotManager manager = new SnapshotManager();
    99114        JSONArray jsonMergedSequences = new JSONArray();
     
    106121          ms.setAnnotation("lib", lib.asJSONObject());
    107122          ms.loadAnnotations(dc, manager, "AutoProcess", Annotationtype.AUTO_PROCESSING, null);
     123          ms.loadDoNotUseAnnotations(dc, manager);
    108124          jsonMergedSequences.add(ms.asJSONObject());
    109125        }
Note: See TracChangeset for help on using the changeset viewer.