extensions/net.sf.basedb.reggie/trunk/resources/analysis/vcall_build.js

Code
Comments
Other
Rev Date Author Line
5763 29 Nov 19 nicklas 1 var VCall = function()
5763 29 Nov 19 nicklas 2 {
5763 29 Nov 19 nicklas 3   var vcall = {};
5763 29 Nov 19 nicklas 4   var debug = 0;
5763 29 Nov 19 nicklas 5   var selectionIsValid = false;
5763 29 Nov 19 nicklas 6   var subtypeAlignedSequences = null;
5763 29 Nov 19 nicklas 7   
5763 29 Nov 19 nicklas 8   var clusterIsValid = false;
5763 29 Nov 19 nicklas 9   
5763 29 Nov 19 nicklas 10   // Page initialization
5763 29 Nov 19 nicklas 11   vcall.initPage = function()
5763 29 Nov 19 nicklas 12   {
5763 29 Nov 19 nicklas 13     
5763 29 Nov 19 nicklas 14     // Step 1
5763 29 Nov 19 nicklas 15     Buttons.addClickHandler('btnSelectList', vcall.selectList);
5763 29 Nov 19 nicklas 16     Events.addEventHandler('itemList', 'base-selected', Items.onItemSelected);
5763 29 Nov 19 nicklas 17     Events.addEventHandler('itemList', 'change', vcall.itemListOnChange);
5763 29 Nov 19 nicklas 18     Events.doOnEnter('itemList', vcall.selectList);
5763 29 Nov 19 nicklas 19     Events.addEventHandler('step-1', 'wizard-validate', vcall.validateStep1);
5763 29 Nov 19 nicklas 20
5763 29 Nov 19 nicklas 21     // Step 2
5763 29 Nov 19 nicklas 22     Events.addEventHandler('step-2', 'wizard-initialize', vcall.initializeStep2);
5763 29 Nov 19 nicklas 23     Events.addEventHandler('step-2', 'wizard-validate', vcall.validateStep2);
5763 29 Nov 19 nicklas 24     Events.addEventHandler('clusters', 'change', vcall.clusterOnChange);
5763 29 Nov 19 nicklas 25
5763 29 Nov 19 nicklas 26     // Navigation
5763 29 Nov 19 nicklas 27     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
5763 29 Nov 19 nicklas 28     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
5763 29 Nov 19 nicklas 29     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
5763 29 Nov 19 nicklas 30     Buttons.addClickHandler('goregister', Wizard.goRegister);
5763 29 Nov 19 nicklas 31     
5763 29 Nov 19 nicklas 32     // Final registration
5763 29 Nov 19 nicklas 33     Events.addEventHandler('wizard', 'wizard-submit', vcall.submit);
5763 29 Nov 19 nicklas 34
5763 29 Nov 19 nicklas 35     Doc.show('step-1');
5763 29 Nov 19 nicklas 36     Doc.show('gonext');
5763 29 Nov 19 nicklas 37     
5763 29 Nov 19 nicklas 38     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 39     frm.itemList.focus();
5763 29 Nov 19 nicklas 40   }
5763 29 Nov 19 nicklas 41   
5763 29 Nov 19 nicklas 42   // --- Step 1 -----------------------------------
5763 29 Nov 19 nicklas 43   
5763 29 Nov 19 nicklas 44   vcall.validateStep1 = function(event)
5763 29 Nov 19 nicklas 45   {
5763 29 Nov 19 nicklas 46     if (!selectionIsValid) 
5763 29 Nov 19 nicklas 47     {
5763 29 Nov 19 nicklas 48       Wizard.setInputStatus('itemList', 'invalid', 'A list must be selected');
5763 29 Nov 19 nicklas 49       event.preventDefault();
5763 29 Nov 19 nicklas 50     }
5763 29 Nov 19 nicklas 51   }
5763 29 Nov 19 nicklas 52   
5763 29 Nov 19 nicklas 53   vcall.selectList = function()
5763 29 Nov 19 nicklas 54   {
5763 29 Nov 19 nicklas 55     if (subtypeAlignedSequences == null)
5763 29 Nov 19 nicklas 56     {
5763 29 Nov 19 nicklas 57       subtypeAlignedSequences = Reggie.getSubtypeInfo('ALIGNED_SEQUENCES');
5763 29 Nov 19 nicklas 58     }
5763 29 Nov 19 nicklas 59     
5763 29 Nov 19 nicklas 60     // Reset list
5763 29 Nov 19 nicklas 61     var url = '&resetTemporary=1';
5763 29 Nov 19 nicklas 62     url += '&tmpfilter:INT:memberType=268'; // 268=DERIVEDBIOASSAY
5763 29 Nov 19 nicklas 63     url += '&tmpfilter:INT:itemSubtype='+subtypeAlignedSequences.id;
5763 29 Nov 19 nicklas 64     Dialogs.selectItem('ITEMLIST', 'itemList', 0, url);
5763 29 Nov 19 nicklas 65   }
5763 29 Nov 19 nicklas 66
5763 29 Nov 19 nicklas 67   vcall.itemListOnChange = function()
5763 29 Nov 19 nicklas 68   {
5763 29 Nov 19 nicklas 69     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 70     selectionIsValid = false;
5763 29 Nov 19 nicklas 71
5763 29 Nov 19 nicklas 72     if (!frm.itemList.value)
5763 29 Nov 19 nicklas 73     {
5763 29 Nov 19 nicklas 74       Wizard.setInputStatus('itemList', 'invalid', 'A list must be selected');
5763 29 Nov 19 nicklas 75       return;
5763 29 Nov 19 nicklas 76     }
5764 29 Nov 19 nicklas 77
5764 29 Nov 19 nicklas 78     // Make some minor and quick checks on the selected list
5764 29 Nov 19 nicklas 79     Wizard.setInputStatus('itemList', 'checking', 'Checking...');
5764 29 Nov 19 nicklas 80     var url = '../VariantCalling.servlet?ID='+App.getSessionId();
5764 29 Nov 19 nicklas 81     url += '&cmd=PreValidateItemListForStatistics';
5764 29 Nov 19 nicklas 82     url += '&listId='+frm.itemList.value;
5764 29 Nov 19 nicklas 83     Wizard.asyncJsonRequest(url, vcall.itemListValidated);
5764 29 Nov 19 nicklas 84   }
5764 29 Nov 19 nicklas 85
5764 29 Nov 19 nicklas 86   vcall.itemListValidated = function(response)
5764 29 Nov 19 nicklas 87   {
5764 29 Nov 19 nicklas 88     if (response.message)
5764 29 Nov 19 nicklas 89     {
5764 29 Nov 19 nicklas 90       selectionIsValid = false;
5764 29 Nov 19 nicklas 91       Wizard.setInputStatus('itemList', 'invalid', response.message);
5764 29 Nov 19 nicklas 92     }
5764 29 Nov 19 nicklas 93     else
5764 29 Nov 19 nicklas 94     {
5764 29 Nov 19 nicklas 95       selectionIsValid = true;
5764 29 Nov 19 nicklas 96       Wizard.setInputStatus('itemList', 'valid');
5764 29 Nov 19 nicklas 97     }
5763 29 Nov 19 nicklas 98     
5763 29 Nov 19 nicklas 99   }
5763 29 Nov 19 nicklas 100
5763 29 Nov 19 nicklas 101   // --- Step 2 -----------------------------------
5763 29 Nov 19 nicklas 102   vcall.initializeStep2 = function()
5763 29 Nov 19 nicklas 103   {
5763 29 Nov 19 nicklas 104     Wizard.setCurrentStep(2);
5763 29 Nov 19 nicklas 105     
5763 29 Nov 19 nicklas 106     // Check debug by default if debug is set or not on a secure server (=production server)
5763 29 Nov 19 nicklas 107     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 108     frm.debug.checked = debug || location.protocol != 'https:';
5763 29 Nov 19 nicklas 109
6735 09 May 22 nicklas 110     // Load clusters
5763 29 Nov 19 nicklas 111     var url = '../OpenGrid.servlet?ID='+App.getSessionId() + '&cmd=GetHostInfo';
5763 29 Nov 19 nicklas 112     Doc.addClass('clusters', 'list-loading');
5763 29 Nov 19 nicklas 113     frm.clusters[0] = new Option('loading...');
5763 29 Nov 19 nicklas 114     Wizard.asyncJsonRequest(url, vcall.clustersLoaded);
5763 29 Nov 19 nicklas 115
5763 29 Nov 19 nicklas 116     Doc.show('goregister');
5763 29 Nov 19 nicklas 117     Doc.show('gocancel');
5763 29 Nov 19 nicklas 118   }
5763 29 Nov 19 nicklas 119   
5763 29 Nov 19 nicklas 120   vcall.validateStep2 = function(event)
5763 29 Nov 19 nicklas 121   {
5763 29 Nov 19 nicklas 122     if (!clusterIsValid) event.preventDefault();
5763 29 Nov 19 nicklas 123   }
5763 29 Nov 19 nicklas 124   
5763 29 Nov 19 nicklas 125   vcall.clustersLoaded = function(response)
5763 29 Nov 19 nicklas 126   {
5763 29 Nov 19 nicklas 127     Doc.removeClass('clusters', 'list-loading');
5763 29 Nov 19 nicklas 128     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 129     var clusters = response.hosts;
5763 29 Nov 19 nicklas 130     frm.clusters.length = 0;
5763 29 Nov 19 nicklas 131     for (var i = 0; i < clusters.length; i++)
5763 29 Nov 19 nicklas 132     {
5763 29 Nov 19 nicklas 133       var cl = clusters[i];
5763 29 Nov 19 nicklas 134       var option = new Option(cl.connection.name, cl.id);
5763 29 Nov 19 nicklas 135       option.cluster = cl;
5763 29 Nov 19 nicklas 136       frm.clusters[frm.clusters.length] = option;
5763 29 Nov 19 nicklas 137       Wizard.setInputStatus('clusters', 'valid');
5763 29 Nov 19 nicklas 138       clusterIsValid = true;
5763 29 Nov 19 nicklas 139     }
5763 29 Nov 19 nicklas 140     if (frm.clusters.length == 0)
5763 29 Nov 19 nicklas 141     {
6735 09 May 22 nicklas 142       Wizard.setInputStatus('clusters', 'invalid', 'No available clusters');
5763 29 Nov 19 nicklas 143       clusterIsValid = false;
5763 29 Nov 19 nicklas 144     }
5763 29 Nov 19 nicklas 145     else
5763 29 Nov 19 nicklas 146     {
5763 29 Nov 19 nicklas 147       vcall.clusterOnChange();
5763 29 Nov 19 nicklas 148     }
5763 29 Nov 19 nicklas 149   }
5763 29 Nov 19 nicklas 150   
5763 29 Nov 19 nicklas 151   vcall.clusterOnChange = function()
5763 29 Nov 19 nicklas 152   {
5763 29 Nov 19 nicklas 153     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 154     var cluster = frm.clusters[frm.clusters.selectedIndex].cluster;
5763 29 Nov 19 nicklas 155     if (cluster.priorities && cluster.priorities.length > 0)
5763 29 Nov 19 nicklas 156     {
5763 29 Nov 19 nicklas 157       frm.priority.length = 0;
5763 29 Nov 19 nicklas 158       for (var pNo = 0; pNo < cluster.priorities.length; pNo++)
5763 29 Nov 19 nicklas 159       {
5763 29 Nov 19 nicklas 160         var p = cluster.priorities[pNo];
5763 29 Nov 19 nicklas 161         frm.priority[frm.priority.length] = new Option(p.name + ' ('+p.value+')', p.value, p['default'], p['default']);
5763 29 Nov 19 nicklas 162       }
5763 29 Nov 19 nicklas 163       Doc.show('job-priority');
5763 29 Nov 19 nicklas 164     }
5763 29 Nov 19 nicklas 165     else
5763 29 Nov 19 nicklas 166     {
5763 29 Nov 19 nicklas 167       Doc.hide('job-priority');
5763 29 Nov 19 nicklas 168     }
6980 17 Jan 23 nicklas 169     if (cluster.partitions && cluster.partitions.length > 0)
6980 17 Jan 23 nicklas 170     {
6980 17 Jan 23 nicklas 171       frm.partition.length = 0;
6980 17 Jan 23 nicklas 172       for (var pNo = 0; pNo < cluster.partitions.length; pNo++)
6980 17 Jan 23 nicklas 173       {
6980 17 Jan 23 nicklas 174         var p = cluster.partitions[pNo];
6980 17 Jan 23 nicklas 175         var title = p.name;
6980 17 Jan 23 nicklas 176         if (p.description) title += ' ('+p.description+')';
6980 17 Jan 23 nicklas 177         frm.partition[frm.partition.length] = new Option(title, p.value, p['default'], p['default']);
6980 17 Jan 23 nicklas 178       }
6980 17 Jan 23 nicklas 179       Doc.show('job-partition');
6980 17 Jan 23 nicklas 180     }
6980 17 Jan 23 nicklas 181     else
6980 17 Jan 23 nicklas 182     {
6980 17 Jan 23 nicklas 183       Doc.hide('job-partition');
6980 17 Jan 23 nicklas 184     }
5763 29 Nov 19 nicklas 185   }
5763 29 Nov 19 nicklas 186
5763 29 Nov 19 nicklas 187   vcall.submit = function()
5763 29 Nov 19 nicklas 188   {
5763 29 Nov 19 nicklas 189     var frm = document.forms['reggie'];
5763 29 Nov 19 nicklas 190       
5763 29 Nov 19 nicklas 191     var submitInfo = {};
5765 29 Nov 19 nicklas 192     submitInfo.itemList = parseInt(frm.itemList.value);
5763 29 Nov 19 nicklas 193     submitInfo.cluster = frm.clusters.value;
5815 24 Jan 20 nicklas 194     submitInfo.sampleType = frm.sampleType.value;
5763 29 Nov 19 nicklas 195     if (frm.priority.selectedIndex >= 0)
5763 29 Nov 19 nicklas 196     {
5763 29 Nov 19 nicklas 197       submitInfo.priority = parseInt(frm.priority.value);
5763 29 Nov 19 nicklas 198     }
6980 17 Jan 23 nicklas 199     if (frm.partition.selectedIndex >= 0)
6980 17 Jan 23 nicklas 200     {
6980 17 Jan 23 nicklas 201       submitInfo.partition = frm.partition.value;
6980 17 Jan 23 nicklas 202     }
5763 29 Nov 19 nicklas 203     submitInfo.debug = frm.debug.checked;
5763 29 Nov 19 nicklas 204
5763 29 Nov 19 nicklas 205     var url = '../VariantCalling.servlet?ID='+App.getSessionId();
5763 29 Nov 19 nicklas 206     url += '&cmd=BuildVariantStatistics';
5763 29 Nov 19 nicklas 207
5766 02 Dec 19 nicklas 208     Wizard.showLoadingAnimation('Performing registration...', 'variant-statistics-progress');
5763 29 Nov 19 nicklas 209     Wizard.asyncJsonRequest(url, vcall.submissionResults, 'POST', JSON.stringify(submitInfo));
5763 29 Nov 19 nicklas 210   }
5763 29 Nov 19 nicklas 211   
5763 29 Nov 19 nicklas 212   vcall.submissionResults = function(response)
5763 29 Nov 19 nicklas 213   {
5763 29 Nov 19 nicklas 214     Wizard.showFinalMessage(response.messages);
5763 29 Nov 19 nicklas 215     Doc.show('gorestart');
5763 29 Nov 19 nicklas 216   }
5763 29 Nov 19 nicklas 217
5763 29 Nov 19 nicklas 218   return vcall;
5763 29 Nov 19 nicklas 219 }();
5763 29 Nov 19 nicklas 220
5763 29 Nov 19 nicklas 221 Doc.onLoad(VCall.initPage);
5763 29 Nov 19 nicklas 222