Ignore:
Timestamp:
Jun 22, 2009, 2:00:26 PM (12 years ago)
Author:
Nicklas Nordborg
Message:

References #234: Proof-of-concept: run a selected GenePattern? visualization module from BASE

The process is now a bit more generic. In theory it should be possible to run any visualizer module. Got rid of hard-coded urls to servers.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.genepattern/trunk/resources/run_visualizer.jsp

    r1132 r1134  
    2222  ------------------------------------------------------------------
    2323
    24   @author Jari, Nicklas
     24  @author Nicklas
    2525--%>
    2626<%@ page
     
    3131  import="net.sf.basedb.core.Presets.Preset"
    3232  import="net.sf.basedb.clients.web.Base"
     33  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
    3334  import="net.sf.basedb.clients.web.util.HTML"
    3435%>
     
    4142Presets presets = new Presets();
    4243if (presetsXml != null) presets.loadFrom(presetsXml);
    43 
     44final String homeUrl = ExtensionsControl.getHomeUrl("net.sf.basedb.genepattern.options");
    4445%>
    4546<base:page type="popup" title="">
    46 <base:head>
     47<base:head scripts="ajax.js">
    4748  <script language="JavaScript">
    48   function browseOnClick(callback)
    49   {
    50     var frm = document.forms['visualizer'];
    51     var url = getRoot() + 'filemanager/index.jsp?ID=<%=ID%>&cmd=SelectOne&title=Select+file&callback=' + callback;
    52     Main.openPopup(url, 'SelectFile', 1000, 700);
    53   }
    54   function setGctFileCallback(fileId, path)
    55   {
    56     var frm = document.forms['visualizer'];
    57     frm['dataset.filename'].value = path;
    58   }
    59   function setCmsFileCallback(fileId, path)
    60   {
    61     var frm = document.forms['visualizer'];
    62     frm['comparative.marker.selection.filename'].value = path;
    63   }
    6449  function doVisualize()
    6550  {
     
    6752    frm.submit();
    6853  }
     54  function getModuleList()
     55  {
     56    var frm = document.forms['visualizer'];
     57    var url = '<%=homeUrl%>/Ajax.servlet?ID=<%=ID%>&cmd=ListModules';
     58    url += '&server=' + encodeURIComponent(frm['server'].value);
     59    var request = Ajax.getXmlHttpRequest();
     60    request.open("GET", url, true);
     61    Ajax.setReadyStateHandler(request, getModulesListCallback);
     62    request.send(null);
     63    document.getElementById('ajaxStatus').innerHTML = 'Please wait. . .';
     64    setTimeout('showProgress()', 250);
     65  }
     66  function showProgress()
     67  {
     68    var progress = document.getElementById('ajaxStatus');
     69    if (progress.innerHTML.indexOf('Please wait') == 0)
     70    {
     71      progress.innerHTML += ' .';
     72      setTimeout('showProgress()', 250);
     73    }
     74  }
    6975
     76  function getModulesListCallback(request)
     77  {
     78    if (document.getElementById('ajaxStatus').innerHTML.indexOf('Please wait') != 0) return;
     79    var frm = document.forms['visualizer'];
     80    var responseText = request != null ?
     81      request.responseText :
     82      'status:error\nstacktrace:No response from server';
     83    var response = Ajax.parseResponse(responseText);
     84    if (response.isError())
     85    {
     86      var stacktrace = response.getElements()[0]['stacktrace'];
     87      document.getElementById('ajaxStatus').innerHTML =
     88        '<div class="error stacktrace" style="width: 420px; height: 15em; overflow: auto;">' + stacktrace + '</div>';
     89    }
     90    else
     91    {
     92      var modules = response.getElements();
     93      modules.sort(compareGpModules);
     94      var html = '<div style="width: 420px; height: 15em; overflow: auto;">';
     95      for (var i = 0; i < modules.length; i++)
     96      {
     97        var type = modules[i]['taskType'];
     98        if (type == 'Visualizer')
     99        {
     100          html += '<a id="module.' + i + '" href="javascript:setModule('+i+')" title="' + modules[i]['description'] + '">';
     101          html += modules[i]['name'] + '</a><br>';
     102        }
     103      }
     104      html += '</div>';
     105      document.getElementById('ajaxStatus').innerHTML = html;
     106    }
     107  }
     108  function compareGpModules(m1, m2)
     109  {
     110    var type1 = m1['taskType'];
     111    var type2 = m2['taskType'];
     112    if (type1 < type2) return -1;
     113    if (type1 > type2) return 1;
     114    var name1 = m1['name'];
     115    var name2 = m2['name'];
     116    if (name1 < name2) return -1;
     117    if (name1 > name2) return 1;
     118    return 0;
     119  }
     120  function setModule(index)
     121  {
     122    var frm = document.forms['visualizer'];
     123    frm['module'].value = document.getElementById('module.'+index).innerHTML;
     124  }
    70125  </script>
    71126</base:head>
     
    74129  <form action="Visualizer.servlet" method="post" name="visualizer">
    75130  <input type="hidden" name="ID" value="<%=ID%>">
     131  <input type="hidden" name="cmd" value="SelectServerModule">
    76132 
    77   <h3>Run visualizer</h3>
     133  <h3 class="docked">Run visualizer</h3>
     134  <div class="boxedbottom">
    78135    <table class="form" cellspacing=0>
    79136    <tr>
    80       <td class="prompt">GenePattern servers</td>
     137      <td></td>
     138      <td>Select a GenePattern visualizer module.</td>
     139    </tr>
     140    <tr>
     141      <td class="prompt">GenePattern server</td>
    81142      <td>
    82       <select name="server" style="width: 25em;">
     143      <select name="server" class="required">
    83144      <%
    84       String selected = "selected";
    85145      for (Presets.Preset server : presets)
    86146      {
    87147        %>
    88         <option <%=selected%>><%=HTML.encodeTags(server.getName())%>
     148        <option><%=HTML.encodeTags(server.getName())%>
    89149        <%
    90         selected = "";
    91150      }
    92151      %>
     
    94153      </td>
    95154    </tr>
    96 
    97155    <tr>
    98       <td class="prompt">Module name</td>
     156      <td class="prompt">Visualizer module</td>
    99157      <td>
    100         <input class="text required" type="text" name="module" size="40"
    101           value="ComparativeMarkerSelectionViewer">
     158        <input class="text required" type="text" name="module" size="40" value="">
    102159      </td>
    103160    </tr>
     161    <tr>
     162      <td class="prompt">Available modules</td>
     163      <td>
     164      <table border=0 cellspacing=0><tr><td><base:button
     165          title="Get list" onclick="getModuleList()"
     166          image="<%=homeUrl + "/images/genepattern.gif" %>"
     167          /></td>
     168        </tr></table>
     169      </td>
     170    </tr>
     171    <tr>
     172      <td class="prompt"></td>
     173      <td id="ajaxStatus"></td>
     174    </tr>
     175    </table>
     176    </div>
    104177
    105178
    106     <tr>
    107         <td class="prompt">CMS output file</td>
    108         <td>
    109           <table border="0" cellspacing="0" cellpadding="0">
    110           <tr>
    111           <td><input type="text" class="text required"
    112             name="comparative.marker.selection.filename" size="60"
    113             value="/gp-ComparativeMarkerSelection/2009-06-16/normalized.imputed.comp.marker.odf">&nbsp;</td>
    114           <td><base:button
    115               title="Browse&hellip;"
    116               onclick="browseOnClick('setCmsFileCallback')"
    117               />
    118           </td>
    119           </tr>
    120           </table>
    121         </td>
    122     </tr>
    123     <tr>
    124         <td class="prompt">GCT data file</td>
    125         <td>
    126           <table border="0" cellspacing="0" cellpadding="0">
    127           <tr>
    128           <td><input type="text" class="text required"
    129             name="dataset.filename" size="60"
    130             value="/gp-ImputeMissingValuesKNN/2009-06-15/normalized.imputed.gct">&nbsp;</td>
    131           <td><base:button
    132               title="Browse&hellip;"
    133               onclick="browseOnClick('setGctFileCallback')"
    134               />
    135           </td>
    136           </tr>
    137           </table>
    138         </td>
    139     </tr>
    140     </table>
    141179    </form>
    142180    <table align="center">
     
    149187</base:body>
    150188</base:page>
    151 <%
    152 
    153 %>
Note: See TracChangeset for help on using the changeset viewer.