extensions/net.sf.basedb.varsearch/trunk/resources/admin/manager.js

Code
Comments
Other
Rev Date Author Line
6163 05 Mar 21 nicklas 1 var Manager = function()
6163 05 Mar 21 nicklas 2 {
6163 05 Mar 21 nicklas 3   var manager = {};
6163 05 Mar 21 nicklas 4   
6163 05 Mar 21 nicklas 5   var debug = 0;
6163 05 Mar 21 nicklas 6   
6163 05 Mar 21 nicklas 7   manager.initPage = function()
6163 05 Mar 21 nicklas 8   {
6163 05 Mar 21 nicklas 9     var url = '../Admin.servlet?ID=' + App.getSessionId();
6163 05 Mar 21 nicklas 10     url += '&cmd=GetIndexInfo';
6163 05 Mar 21 nicklas 11     Wizard.showLoadingAnimation('Loading index information...');
6163 05 Mar 21 nicklas 12     Wizard.asyncJsonRequest(url, manager.indexInfoLoaded);
6163 05 Mar 21 nicklas 13   }
6167 09 Mar 21 nicklas 14
6167 09 Mar 21 nicklas 15   manager.refreshPage = function()
6167 09 Mar 21 nicklas 16   {
6167 09 Mar 21 nicklas 17     var url = '../Admin.servlet?ID=' + App.getSessionId();
6167 09 Mar 21 nicklas 18     url += '&cmd=GetIndexInfo';
6167 09 Mar 21 nicklas 19     Wizard.asyncJsonRequest(url, manager.indexInfoLoaded);
6167 09 Mar 21 nicklas 20   }
6163 05 Mar 21 nicklas 21   
6163 05 Mar 21 nicklas 22   manager.indexInfoLoaded = function(response)
6163 05 Mar 21 nicklas 23   {
6163 05 Mar 21 nicklas 24     var html = '';
6163 05 Mar 21 nicklas 25     var indexes = response.indexes;
6163 05 Mar 21 nicklas 26     
6167 09 Mar 21 nicklas 27     var autoRefresh = false;
6167 09 Mar 21 nicklas 28     
6163 05 Mar 21 nicklas 29     for (var idxNo = 0; idxNo < indexes.length; idxNo++)
6163 05 Mar 21 nicklas 30     {
6163 05 Mar 21 nicklas 31       var idx = indexes[idxNo];
6556 28 Jan 22 nicklas 32       var error = idx.error;
6163 05 Mar 21 nicklas 33       var queryCache = idx.queryCache;
6163 05 Mar 21 nicklas 34       var itemList = idx.itemList;
6164 05 Mar 21 nicklas 35       var progress = idx.progress;
6558 31 Jan 22 nicklas 36       
6169 15 Mar 21 nicklas 37       var allowActions = (idx.status == 'IDLE' || idx.status == 'DISABLED') && idx.nextAction == 'DEFAULT';
6167 09 Mar 21 nicklas 38       if (!allowActions) autoRefresh = true;
6163 05 Mar 21 nicklas 39       
6558 31 Jan 22 nicklas 40       html += '<div class="index-div'+(idx.collapsed?' collapsed':'')+'">';
6558 31 Jan 22 nicklas 41       html += '<div class="index-name bg-filled-100" data-index-id="'+idx.id+'">'+Strings.encodeTags(idx.name) + '</div>';
6169 15 Mar 21 nicklas 42       html += '<div>Path</div><div>'+Strings.encodeTags(idx.path)+'</div>';
6169 15 Mar 21 nicklas 43       html += '<div>';
6169 15 Mar 21 nicklas 44       if (allowActions)
6169 15 Mar 21 nicklas 45       {
6169 15 Mar 21 nicklas 46         html += '<span class="link index-action" data-cmd="auto-update" data-auto-update="DELETE" data-confirm="Are you sure? This will remove everything from the index!" data-index-id="'+idx.id+'" title="Delete this index and create a new empty index">Delete...</span>';
6169 15 Mar 21 nicklas 47       }
6169 15 Mar 21 nicklas 48       else if (idx.status == 'IDLE' && idx.nextAction == 'DELETE')
6169 15 Mar 21 nicklas 49       {
6169 15 Mar 21 nicklas 50         html += '<span class="next-action">Delete (waiting)</span>';
6169 15 Mar 21 nicklas 51       }
6169 15 Mar 21 nicklas 52       html += '</div>';
6163 05 Mar 21 nicklas 53       html += '<div>Size on disk</div><div>'+idx.sizeOnDiskFormatted+'</div><div></div>';
6163 05 Mar 21 nicklas 54       html += '<div>Total variants</div><div>'+VarSearch.niceCount(idx.numVariants)+'</div><div></div>';
6544 19 Jan 22 nicklas 55       if (idx.id=='oncoarray-500K')
6544 19 Jan 22 nicklas 56       {
6544 19 Jan 22 nicklas 57         html += '<div>Indexed SNP:s</div><div>'+VarSearch.niceCount(idx.numSNPs)+'</div>';
6544 19 Jan 22 nicklas 58         html += '<div>';
6544 19 Jan 22 nicklas 59         if (allowActions)
6544 19 Jan 22 nicklas 60         {
6544 19 Jan 22 nicklas 61           html += '<span class="link index-action" data-cmd="auto-update" data-auto-update="CUSTOM" data-custom-action="INDEX_SNP" data-index-id="'+idx.id+'">Build SNP index</span>'
6544 19 Jan 22 nicklas 62         }
6544 19 Jan 22 nicklas 63         else if (idx.status == 'IDLE' && idx.nextCustomAction == 'INDEX_SNP')
6544 19 Jan 22 nicklas 64         {
6544 19 Jan 22 nicklas 65           html += '<span class="next-action">Build SNP index (waiting)</span>';
6544 19 Jan 22 nicklas 66         }
6544 19 Jan 22 nicklas 67         html += '</div>';
6544 19 Jan 22 nicklas 68       }
6168 12 Mar 21 nicklas 69       html += '<div>Indexed raw bioassays</div><div>'+VarSearch.niceCount(idx.numRawBioAssays)+'</div>';
6168 12 Mar 21 nicklas 70       html += '<div>';
6168 12 Mar 21 nicklas 71       if (allowActions && idx.numRawBioAssays > 0)
6168 12 Mar 21 nicklas 72       {
6168 12 Mar 21 nicklas 73         html += '<span class="link index-action" data-cmd="auto-update" data-auto-update="FULL_REBUILD" data-index-id="'+idx.id+'" title="Re-index all rawbioassays">Rebuild index</span>';
6168 12 Mar 21 nicklas 74       }
6169 15 Mar 21 nicklas 75       else if (idx.status == 'IDLE' && idx.nextAction == 'FULL_REBUILD')
6169 15 Mar 21 nicklas 76       {
6169 15 Mar 21 nicklas 77         html += '<span class="next-action">Rebuild index (waiting)</span>';
6169 15 Mar 21 nicklas 78       }
6168 12 Mar 21 nicklas 79       html += '</div>';
6165 08 Mar 21 nicklas 80       
6165 08 Mar 21 nicklas 81       html += '<div>Deleted raw bioassays</div>';
6165 08 Mar 21 nicklas 82       html += '<div>'+VarSearch.niceCount(idx.nonExistingRawBioAssays)+'</div>';
6165 08 Mar 21 nicklas 83       html += '<div>';
6165 08 Mar 21 nicklas 84       if (allowActions && idx.nonExistingRawBioAssays > 0)
6165 08 Mar 21 nicklas 85       {
6167 09 Mar 21 nicklas 86         html += '<span class="link index-action" data-cmd="auto-update" data-auto-update="REMOVE_NON_EXISTING" data-index-id="'+idx.id+'" title="Remove all non-existing raw bioassays from the index">Remove from index</span>';
6165 08 Mar 21 nicklas 87       }
6169 15 Mar 21 nicklas 88       else if (idx.status == 'IDLE' && idx.nextAction == 'REMOVE_NON_EXISTING')
6169 15 Mar 21 nicklas 89       {
6169 15 Mar 21 nicklas 90         html += '<span class="next-action">Remove from index (waiting)</span>';
6169 15 Mar 21 nicklas 91       }
6165 08 Mar 21 nicklas 92       html += '</div>';
6165 08 Mar 21 nicklas 93       
6164 05 Mar 21 nicklas 94       if (queryCache)
6164 05 Mar 21 nicklas 95       {
6165 08 Mar 21 nicklas 96         html += '<div>Cached query results</div>';
6165 08 Mar 21 nicklas 97         html += '<div>'+VarSearch.niceCount(queryCache.size)+'</div>';
6165 08 Mar 21 nicklas 98         html += '<div>';
6165 08 Mar 21 nicklas 99         if (queryCache.size > 0)
6165 08 Mar 21 nicklas 100         {
6165 08 Mar 21 nicklas 101           html += '<span class="link index-action" data-cmd="clean-cache" data-index-id="'+idx.id+'" title="Clean all results from the query cache">Clean cache</span>';
6165 08 Mar 21 nicklas 102         }
6165 08 Mar 21 nicklas 103         html += '</div>';
6164 05 Mar 21 nicklas 104       }
6163 05 Mar 21 nicklas 105       
6163 05 Mar 21 nicklas 106       if (itemList)
6163 05 Mar 21 nicklas 107       {
6165 08 Mar 21 nicklas 108         // Item list
6165 08 Mar 21 nicklas 109         html += '<div>Item list</div>';
6165 08 Mar 21 nicklas 110         html += '<div><span class="link linked-item" data-item-type="ITEMLIST" data-item-id="'+itemList.id+'">'+Strings.encodeTags(itemList.name)+'</span></div>';
6165 08 Mar 21 nicklas 111         html += '<div></div>';
6165 08 Mar 21 nicklas 112         
6165 08 Mar 21 nicklas 113         // AutoProcessing
6165 08 Mar 21 nicklas 114         html += '<div>Auto-processing</div>';
6165 08 Mar 21 nicklas 115         if (itemList.autoProcessing == 'Disable')
6165 08 Mar 21 nicklas 116         {
6408 20 Sep 21 nicklas 117           html += '<div>Disabled</div>';
6165 08 Mar 21 nicklas 118           html += '<div><span class="link index-action" data-cmd="change-ap" data-list-id="'+itemList.id+'" data-auto-processing="" title="Enable auto-processing">Enable</span></div>';
6165 08 Mar 21 nicklas 119         }
6165 08 Mar 21 nicklas 120         else
6165 08 Mar 21 nicklas 121         {
6408 20 Sep 21 nicklas 122           html += '<div>Enabled</div>';
6165 08 Mar 21 nicklas 123           html += '<div><span class="link index-action" data-cmd="change-ap" data-list-id="'+itemList.id+'" data-auto-processing="Disable" title="Disable auto-processing">Disable</span></div>';
6165 08 Mar 21 nicklas 124         }
6165 08 Mar 21 nicklas 125         
6165 08 Mar 21 nicklas 126         // Items in queue
6165 08 Mar 21 nicklas 127         html += '<div>Items in queue</div>';
6165 08 Mar 21 nicklas 128         html += '<div>'+VarSearch.niceCount(itemList.size)+'</div>';
6165 08 Mar 21 nicklas 129         html += '<div>';
6165 08 Mar 21 nicklas 130         if (allowActions && itemList.size > 0)
6165 08 Mar 21 nicklas 131         {
6167 09 Mar 21 nicklas 132           html += '<span class="link index-action" data-cmd="auto-update" data-auto-update="ADD_TO_INDEX" data-index-id="'+idx.id+'" title="Add all items to the index">Add to index</span>';
6165 08 Mar 21 nicklas 133         }
6169 15 Mar 21 nicklas 134         else if (idx.status == 'IDLE' && idx.nextAction == 'ADD_TO_INDEX')
6169 15 Mar 21 nicklas 135         {
6169 15 Mar 21 nicklas 136           html += '<span class="next-action">Add to index (waiting)</span>';
6169 15 Mar 21 nicklas 137         }
6165 08 Mar 21 nicklas 138         html += '</div>';
6163 05 Mar 21 nicklas 139       }
6163 05 Mar 21 nicklas 140       
6558 31 Jan 22 nicklas 141       html += '<div class="no-hide">Status</div>';
6558 31 Jan 22 nicklas 142       html += '<div class="no-hide">'+Strings.encodeTags(idx.queryStatus)+' / '+Strings.encodeTags(idx.status);
6167 09 Mar 21 nicklas 143       if (idx.status == 'IDLE' && idx.nextAction != 'DEFAULT') 
6167 09 Mar 21 nicklas 144       {
6167 09 Mar 21 nicklas 145         autoRefresh = true;
6544 19 Jan 22 nicklas 146         html += '<span class="next-action">' + Strings.encodeTags(idx.nextCustomAction || idx.nextAction) + '</span>';
6167 09 Mar 21 nicklas 147       }
6558 31 Jan 22 nicklas 148       html += '</div><div class="no-hide"></div>';
6164 05 Mar 21 nicklas 149       
6164 05 Mar 21 nicklas 150       if (progress)
6164 05 Mar 21 nicklas 151       {
6167 09 Mar 21 nicklas 152         autoRefresh = true;
6558 31 Jan 22 nicklas 153         html += '<div class="no-hide">'+Strings.encodeTags(progress.message)+'</div>';
6558 31 Jan 22 nicklas 154         html += '<div class="no-hide"><div class="wizard-progress progress-bar" value="'+progress.percent+'%"><span class="progress-bar-done bg-filled-100 topborder bottomborder leftborder" style="width: '+progress.percent+'%;"></span><span class="progress-bar-remain topborder bottomborder rightborder"style="width: '+(100-progress.percent)+'%;"></span></div></div>';
6558 31 Jan 22 nicklas 155         html += '<div class="no-hide"></div>';
6164 05 Mar 21 nicklas 156       }
6556 28 Jan 22 nicklas 157       if (error)
6556 28 Jan 22 nicklas 158       {
6558 31 Jan 22 nicklas 159         html += '<div style="grid-column: span 3;" class="no-hide messagecontainer error">'+Strings.encodeTags(error.msg)+'</div>';
6556 28 Jan 22 nicklas 160       }
6164 05 Mar 21 nicklas 161       
6163 05 Mar 21 nicklas 162       html += '</div>'
6163 05 Mar 21 nicklas 163     }
6163 05 Mar 21 nicklas 164     
6163 05 Mar 21 nicklas 165     Doc.element('indexList').innerHTML = html;
6163 05 Mar 21 nicklas 166     
6558 31 Jan 22 nicklas 167     var indexSections = document.getElementsByClassName('index-name');
6558 31 Jan 22 nicklas 168     for (var idxNo = 0; idxNo < indexSections.length; idxNo++)
6558 31 Jan 22 nicklas 169     {
6558 31 Jan 22 nicklas 170       Events.addEventHandler(indexSections[idxNo], 'click', manager.toggleSection);
6558 31 Jan 22 nicklas 171     }
6165 08 Mar 21 nicklas 172     
6165 08 Mar 21 nicklas 173     var linkedItems = document.getElementsByClassName('linked-item');
6165 08 Mar 21 nicklas 174     for (var itemNo = 0; itemNo < linkedItems.length; itemNo++)
6165 08 Mar 21 nicklas 175     {
6165 08 Mar 21 nicklas 176       Events.addEventHandler(linkedItems[itemNo], 'click', Items.itemOnClick);
6165 08 Mar 21 nicklas 177     }
6165 08 Mar 21 nicklas 178     
6165 08 Mar 21 nicklas 179     var indexAction = document.getElementsByClassName('index-action');
6165 08 Mar 21 nicklas 180     for (var itemNo = 0; itemNo < indexAction.length; itemNo++)
6165 08 Mar 21 nicklas 181     {
6165 08 Mar 21 nicklas 182       var action = indexAction[itemNo];
6165 08 Mar 21 nicklas 183       if (!Doc.isDisabled(action))
6165 08 Mar 21 nicklas 184       {
6165 08 Mar 21 nicklas 185         Events.addEventHandler(action, 'click', manager.indexAction);
6165 08 Mar 21 nicklas 186       }
6165 08 Mar 21 nicklas 187     }
6167 09 Mar 21 nicklas 188     
6167 09 Mar 21 nicklas 189     if (autoRefresh) setTimeout(manager.refreshPage, 1500);
6163 05 Mar 21 nicklas 190   }
6163 05 Mar 21 nicklas 191
6558 31 Jan 22 nicklas 192   manager.toggleSection = function(event)
6558 31 Jan 22 nicklas 193   {
6558 31 Jan 22 nicklas 194     Doc.addOrRemoveClass(event.currentTarget.parentNode, 'collapsed');
6558 31 Jan 22 nicklas 195     var url = '../Admin.servlet?ID=' + App.getSessionId();
6558 31 Jan 22 nicklas 196     url += '&cmd=SetSectionCollapsed';
6558 31 Jan 22 nicklas 197     url += '&indexId='+Data.get(event.currentTarget, 'index-id');
6558 31 Jan 22 nicklas 198     url += '&collapsed='+(Doc.element(event.currentTarget.parentNode).classList.contains('collapsed')?1:0);
6558 31 Jan 22 nicklas 199     Wizard.asyncJsonRequest(url, null, 'POST');
6558 31 Jan 22 nicklas 200   }
6558 31 Jan 22 nicklas 201
6165 08 Mar 21 nicklas 202   manager.indexAction = function(event)
6165 08 Mar 21 nicklas 203   {
6165 08 Mar 21 nicklas 204     var cmd = Data.get(event.currentTarget, 'cmd');
6169 15 Mar 21 nicklas 205     var msg = Data.get(event.currentTarget, 'confirm');
6169 15 Mar 21 nicklas 206     if (msg && !confirm(msg)) return;
6169 15 Mar 21 nicklas 207     
6165 08 Mar 21 nicklas 208     if (cmd == 'change-ap') manager.changeAutoProcessing(event);
6165 08 Mar 21 nicklas 209     if (cmd == 'clean-cache') manager.cleanCache(event);
6167 09 Mar 21 nicklas 210     if (cmd == 'auto-update') manager.autoUpdate(event);
6165 08 Mar 21 nicklas 211   }
6165 08 Mar 21 nicklas 212
6165 08 Mar 21 nicklas 213   manager.changeAutoProcessing = function(event)
6165 08 Mar 21 nicklas 214   {
6165 08 Mar 21 nicklas 215     var element = event.currentTarget;
6165 08 Mar 21 nicklas 216
6165 08 Mar 21 nicklas 217     var submitInfo = {};
6165 08 Mar 21 nicklas 218     submitInfo.listId = Data.int(element, 'list-id');
6165 08 Mar 21 nicklas 219     submitInfo.autoProcessing = Data.get(element, 'auto-processing');
6165 08 Mar 21 nicklas 220
6165 08 Mar 21 nicklas 221     var url = '../Admin.servlet?ID=' + App.getSessionId();
6165 08 Mar 21 nicklas 222     url += '&cmd=ChangeAutoProcessing';
6165 08 Mar 21 nicklas 223     Wizard.asyncJsonRequest(url, manager.initPage, 'POST', JSON.stringify(submitInfo));
6165 08 Mar 21 nicklas 224     Doc.element('indexList').innerHTML = '';
6165 08 Mar 21 nicklas 225   }
6165 08 Mar 21 nicklas 226   
6167 09 Mar 21 nicklas 227   manager.cleanCache = function(event)
6165 08 Mar 21 nicklas 228   {
6165 08 Mar 21 nicklas 229     var element = event.currentTarget;
6165 08 Mar 21 nicklas 230
6165 08 Mar 21 nicklas 231     var submitInfo = {};
6165 08 Mar 21 nicklas 232     submitInfo.indexId = Data.get(element, 'index-id');
6165 08 Mar 21 nicklas 233
6165 08 Mar 21 nicklas 234     var url = '../Admin.servlet?ID=' + App.getSessionId();
6167 09 Mar 21 nicklas 235     url += '&cmd=CleanCache';
6165 08 Mar 21 nicklas 236     Wizard.asyncJsonRequest(url, manager.initPage, 'POST', JSON.stringify(submitInfo));
6165 08 Mar 21 nicklas 237     Doc.element('indexList').innerHTML = '';
6165 08 Mar 21 nicklas 238   }
6165 08 Mar 21 nicklas 239
6167 09 Mar 21 nicklas 240   manager.autoUpdate = function(event)
6165 08 Mar 21 nicklas 241   {
6165 08 Mar 21 nicklas 242     var element = event.currentTarget;
6165 08 Mar 21 nicklas 243
6165 08 Mar 21 nicklas 244     var submitInfo = {};
6165 08 Mar 21 nicklas 245     submitInfo.indexId = Data.get(element, 'index-id');
6167 09 Mar 21 nicklas 246     submitInfo.autoUpdate = Data.get(element, 'auto-update');
6544 19 Jan 22 nicklas 247     submitInfo.customAction = Data.get(element, 'custom-action');
6165 08 Mar 21 nicklas 248
6165 08 Mar 21 nicklas 249     var url = '../Admin.servlet?ID=' + App.getSessionId();
6167 09 Mar 21 nicklas 250     url += '&cmd=SetNextAutoUpdate';
6165 08 Mar 21 nicklas 251     Wizard.asyncJsonRequest(url, manager.initPage, 'POST', JSON.stringify(submitInfo));
6165 08 Mar 21 nicklas 252     Doc.element('indexList').innerHTML = '';
6165 08 Mar 21 nicklas 253   }
6165 08 Mar 21 nicklas 254
6163 05 Mar 21 nicklas 255   return manager;
6163 05 Mar 21 nicklas 256 }();
6163 05 Mar 21 nicklas 257
6163 05 Mar 21 nicklas 258 Doc.onLoad(Manager.initPage);