extensions/net.sf.basedb.meludi/trunk/resources/admin/create_start_list_from_start_plate.js

Code
Comments
Other
Rev Date Author Line
3441 21 Jul 15 olle 1 var CreateStartList = function()
3441 21 Jul 15 olle 2 {
3441 21 Jul 15 olle 3   var createstartlist = {};
3441 21 Jul 15 olle 4   
3441 21 Jul 15 olle 5   var debug = 0;
3441 21 Jul 15 olle 6   
3441 21 Jul 15 olle 7   // Page initialization
3441 21 Jul 15 olle 8   createstartlist.initPage = function()
3441 21 Jul 15 olle 9   {
3441 21 Jul 15 olle 10     // Step 1
3441 21 Jul 15 olle 11     Events.addEventHandler('step-1', 'wizard-validate', createstartlist.validateStep1);
3441 21 Jul 15 olle 12
3441 21 Jul 15 olle 13     // Navigation
3441 21 Jul 15 olle 14     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
3441 21 Jul 15 olle 15     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
3441 21 Jul 15 olle 16     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
3441 21 Jul 15 olle 17     Buttons.addClickHandler('goregister', Wizard.goRegister);
3441 21 Jul 15 olle 18     
3441 21 Jul 15 olle 19     // Final registration
3441 21 Jul 15 olle 20     Events.addEventHandler('wizard', 'wizard-submit', createstartlist.submit);
3441 21 Jul 15 olle 21
3441 21 Jul 15 olle 22     var url = '../Extraction.servlet?ID='+App.getSessionId();
3441 21 Jul 15 olle 23     url += '&cmd=GetStartPlates';
3441 21 Jul 15 olle 24     url += '&orderDesc=true';    
3441 21 Jul 15 olle 25     Wizard.showLoadingAnimation('Loading items...');
3441 21 Jul 15 olle 26     Wizard.asyncJsonRequest(url, createstartlist.initializeStep1);
3441 21 Jul 15 olle 27   }
3441 21 Jul 15 olle 28
3441 21 Jul 15 olle 29   createstartlist.initializeStep1 = function(response)
3441 21 Jul 15 olle 30   {
3441 21 Jul 15 olle 31     var frm = document.forms['meludi'];
3441 21 Jul 15 olle 32     var plates = response.plates;
3441 21 Jul 15 olle 33     
3441 21 Jul 15 olle 34     var startPlate = frm.startPlate;
3441 21 Jul 15 olle 35     if (plates.length > 0)
3441 21 Jul 15 olle 36     {
3441 21 Jul 15 olle 37       for (var i=0; i < plates.length; i++)
3441 21 Jul 15 olle 38       {
3441 21 Jul 15 olle 39         var plate = plates[i];
3441 21 Jul 15 olle 40         var name = (i+1) + ': ' + Strings.encodeTags(plate.name);
3441 21 Jul 15 olle 41         if (plate.sourceItemNames)
3441 21 Jul 15 olle 42         {
3441 21 Jul 15 olle 43           name += ' -- (';
3441 21 Jul 15 olle 44           name += plate.sourceItemNames.length;
3441 21 Jul 15 olle 45           if (plate.numberExtraQiacubeItems)
3441 21 Jul 15 olle 46           {
3441 21 Jul 15 olle 47             name += ' + ' + plate.numberExtraQiacubeItems;
3441 21 Jul 15 olle 48           }
3441 21 Jul 15 olle 49           name += ')';
3441 21 Jul 15 olle 50         }
3441 21 Jul 15 olle 51         if (plate.extractionDate)
3441 21 Jul 15 olle 52         {
3441 21 Jul 15 olle 53           name += ' -- [' + createstartlist.asDate(plate.extractionDate) + ']';
3441 21 Jul 15 olle 54         }
3441 21 Jul 15 olle 55         //var selected = i == (plates.length - 1);
3441 21 Jul 15 olle 56         var selected = true;
3441 21 Jul 15 olle 57         // Only include start DNA plate with item names in annotations
3441 21 Jul 15 olle 58         if (plate.sourceItemNames.length > 0 || (plate.numberExtraQiacubeItems != null && plate.numberExtraQiacubeItems > 0))
3441 21 Jul 15 olle 59         {
3441 21 Jul 15 olle 60           var option = new Option(name, plate.id, selected, selected);
3441 21 Jul 15 olle 61           option.plate = plate;
3441 21 Jul 15 olle 62           option.selected = true
3441 21 Jul 15 olle 63           startPlate.options[startPlate.length] = option;
3441 21 Jul 15 olle 64         }
3441 21 Jul 15 olle 65       }
3441 21 Jul 15 olle 66       //startPlate.options[0].selected = true;
3441 21 Jul 15 olle 67     }
3441 21 Jul 15 olle 68     else
3441 21 Jul 15 olle 69     {
3441 21 Jul 15 olle 70       Wizard.setFatalError('No start DNA plates available.');
3441 21 Jul 15 olle 71       return;
3441 21 Jul 15 olle 72     }
3441 21 Jul 15 olle 73     Doc.show('step-1');
3441 21 Jul 15 olle 74     Doc.show('gocancel');
3441 21 Jul 15 olle 75     Doc.hide('gonext');
3441 21 Jul 15 olle 76     Doc.show('goregister');
3441 21 Jul 15 olle 77     Doc.hide('extractSourceItems');
3441 21 Jul 15 olle 78   }
3441 21 Jul 15 olle 79
3441 21 Jul 15 olle 80   createstartlist.validateStep1 = function(event)
3441 21 Jul 15 olle 81   {
3441 21 Jul 15 olle 82     var frm = document.forms['meludi'];
3441 21 Jul 15 olle 83     var startItemList = null;
3441 21 Jul 15 olle 84     var jsonStartPlateIds = [];
3441 21 Jul 15 olle 85     var numSelected = 0;
3441 21 Jul 15 olle 86     for (var i = 0; i < frm.startPlate.length; i++)
3441 21 Jul 15 olle 87     {
3441 21 Jul 15 olle 88       if (frm.startPlate[i].selected)
3441 21 Jul 15 olle 89       {
3441 21 Jul 15 olle 90         var jsonStartPlate = {};
3441 21 Jul 15 olle 91         jsonStartPlate.id = frm.startPlate[i].value;
3441 21 Jul 15 olle 92         jsonStartPlateIds[numSelected] = jsonStartPlate;
3441 21 Jul 15 olle 93         numSelected++;
3441 21 Jul 15 olle 94       }
3441 21 Jul 15 olle 95     }
3441 21 Jul 15 olle 96     if (numSelected == 0)
3441 21 Jul 15 olle 97     {
3441 21 Jul 15 olle 98       event.preventDefault();
3441 21 Jul 15 olle 99     }
3441 21 Jul 15 olle 100   }
3441 21 Jul 15 olle 101   
3441 21 Jul 15 olle 102   createstartlist.submit = function()
3441 21 Jul 15 olle 103   {
3441 21 Jul 15 olle 104     var frm = document.forms['meludi'];
3441 21 Jul 15 olle 105     var startItemList = null;
3441 21 Jul 15 olle 106     var jsonStartPlateIds = [];
3441 21 Jul 15 olle 107     var numSelected = 0;
3441 21 Jul 15 olle 108     for (var i = 0; i < frm.startPlate.length; i++)
3441 21 Jul 15 olle 109     {
3441 21 Jul 15 olle 110       if (frm.startPlate[i].selected)
3441 21 Jul 15 olle 111       {
3441 21 Jul 15 olle 112         var jsonStartPlate = {};
3441 21 Jul 15 olle 113         jsonStartPlate.id = frm.startPlate[i].value;
3441 21 Jul 15 olle 114         jsonStartPlateIds[numSelected] = jsonStartPlate;
3441 21 Jul 15 olle 115         numSelected++;
3441 21 Jul 15 olle 116       }
3441 21 Jul 15 olle 117     }
3441 21 Jul 15 olle 118     if (numSelected == 0)
3441 21 Jul 15 olle 119     {
3441 21 Jul 15 olle 120       event.preventDefault();
3441 21 Jul 15 olle 121     }
3441 21 Jul 15 olle 122
3441 21 Jul 15 olle 123     frm.startPlate.disabled = true;
3441 21 Jul 15 olle 124
3441 21 Jul 15 olle 125     var submitInfo = {};
3441 21 Jul 15 olle 126     
3441 21 Jul 15 olle 127     submitInfo.startplates = jsonStartPlateIds;
3441 21 Jul 15 olle 128
3441 21 Jul 15 olle 129     var url = '../Extraction.servlet?ID='+App.getSessionId();
3441 21 Jul 15 olle 130     url += '&cmd=CreateStartListsFromStartPlates';
3441 21 Jul 15 olle 131     Wizard.showLoadingAnimation('Performing registration...');
3441 21 Jul 15 olle 132     Wizard.asyncJsonRequest(url, createstartlist.submissionResults, 'POST', JSON.stringify(submitInfo));
3441 21 Jul 15 olle 133   }
3441 21 Jul 15 olle 134   
3441 21 Jul 15 olle 135   createstartlist.submissionResults = function(response)
3441 21 Jul 15 olle 136   {
3441 21 Jul 15 olle 137     Wizard.showFinalMessage(response.messages);
3441 21 Jul 15 olle 138     Doc.show('gorestart');
3441 21 Jul 15 olle 139   }
3441 21 Jul 15 olle 140
3441 21 Jul 15 olle 141
3441 21 Jul 15 olle 142   // Format value as a date in format yyyy-mm-dd
3441 21 Jul 15 olle 143   createstartlist.asDate = function(value)
3441 21 Jul 15 olle 144   {
3441 21 Jul 15 olle 145     if (!value) return '';
3441 21 Jul 15 olle 146     if (value.length == 8)
3441 21 Jul 15 olle 147     {
3441 21 Jul 15 olle 148       value = value.substr(0, 4) + '-' + value.substr(4, 2) + '-' + value.substr(6, 2);
3441 21 Jul 15 olle 149     }
3441 21 Jul 15 olle 150     return value;
3441 21 Jul 15 olle 151   }
3441 21 Jul 15 olle 152
3441 21 Jul 15 olle 153   return createstartlist;
3441 21 Jul 15 olle 154 }();
3441 21 Jul 15 olle 155
3441 21 Jul 15 olle 156 Doc.onLoad(CreateStartList.initPage);