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

Code
Comments
Other
Rev Date Author Line
2406 07 May 14 nicklas 1 var Remote = function()
2406 07 May 14 nicklas 2 {
2406 07 May 14 nicklas 3   var remote = {};
2407 08 May 14 nicklas 4   var files;
2593 19 Aug 14 nicklas 5   var debug = 0;
2406 07 May 14 nicklas 6   
2406 07 May 14 nicklas 7   remote.initPage = function()
2406 07 May 14 nicklas 8   {
2406 07 May 14 nicklas 9     Buttons.addClickHandler('close', App.closeWindow);
6824 30 Aug 22 nicklas 10     //Buttons.addClickHandler('btnSaveToBase', remote.saveToBase);
2406 07 May 14 nicklas 11     
2406 07 May 14 nicklas 12     var url = '../OpenGrid.servlet?ID='+App.getSessionId();
2406 07 May 14 nicklas 13     url += '&cmd=ListProjectFiles';
3837 12 Apr 16 nicklas 14     url += '&clusterId='+Data.get('page-data', 'cluster-id', '');
2406 07 May 14 nicklas 15     url += '&path='+encodeURIComponent(Data.get('page-data', 'path'));
3605 16 Nov 15 nicklas 16     url += '&archive='+encodeURIComponent(Data.get('page-data', 'archive', ''));
3837 12 Apr 16 nicklas 17     url += '&itemType='+Data.get('page-data', 'item-type', '');
3837 12 Apr 16 nicklas 18     url += '&itemId='+Data.int('page-data', 'item-id');
3837 12 Apr 16 nicklas 19     url += '&fileserver='+Data.int('page-data', 'fileserver-id', 0);
2644 09 Sep 14 nicklas 20     
2644 09 Sep 14 nicklas 21     Wizard.showLoadingAnimation('Loading files...');
2644 09 Sep 14 nicklas 22     Wizard.asyncJsonRequest(url, remote.onFilesLoaded);
2406 07 May 14 nicklas 23   }
2406 07 May 14 nicklas 24   
2644 09 Sep 14 nicklas 25   remote.onFilesLoaded = function(response)
2406 07 May 14 nicklas 26   {
2644 09 Sep 14 nicklas 27     files = response.files;
2644 09 Sep 14 nicklas 28     if (files.length == 0)
2406 07 May 14 nicklas 29     {
2644 09 Sep 14 nicklas 30       Wizard.setFatalError('Could not find any files in folder ' + response.projectArchive + Data.get('page-data', 'path'));
2406 07 May 14 nicklas 31       return;
2406 07 May 14 nicklas 32     }
2406 07 May 14 nicklas 33
2406 07 May 14 nicklas 34     var html = '<table id="file-list">';
2406 07 May 14 nicklas 35     html += '<tr>';
2407 08 May 14 nicklas 36     html += '<th></th>';
2406 07 May 14 nicklas 37     html += '<th>Folder / file</th>';
2406 07 May 14 nicklas 38     html += '<th class="file-size">Size</th>';
3839 13 Apr 16 nicklas 39     html += '<th class="last-modified">Last modified</th>';
3839 13 Apr 16 nicklas 40     html += '<th class="owner">Owner</th>';
2578 15 Aug 14 nicklas 41     html += '<th>Download</th>';
2406 07 May 14 nicklas 42     html += '</tr>';
2407 08 May 14 nicklas 43     var currentFolder = '-';
2406 07 May 14 nicklas 44     for (var fileNo = 0; fileNo < files.length; fileNo++)
2406 07 May 14 nicklas 45     {
2406 07 May 14 nicklas 46       var file = files[fileNo];
2406 07 May 14 nicklas 47       var path = file.path;
2406 07 May 14 nicklas 48       var i = path.lastIndexOf('/');
2406 07 May 14 nicklas 49       
2407 08 May 14 nicklas 50       var folder = (i > 0) ? path.substring(0, i) : '.';
2407 08 May 14 nicklas 51       var filename = path.substring(i+1);
2407 08 May 14 nicklas 52       file.folder = folder;
2407 08 May 14 nicklas 53       file.name = filename;
7341 11 Sep 23 nicklas 54       var lastDot = file.name.lastIndexOf('.');
7116 17 Apr 23 nicklas 55       file.ext = lastDot >= 0 ? file.name.substr(lastDot+1) : null;
2407 08 May 14 nicklas 56       
2407 08 May 14 nicklas 57       if (folder != currentFolder)
2406 07 May 14 nicklas 58       {
2406 07 May 14 nicklas 59         html += '<tr class="folder">';
2578 15 Aug 14 nicklas 60         html += '<td><img src="../images/remote_folder.png"></td>';
3839 13 Apr 16 nicklas 61         html += '<td colspan="5">'+Strings.encodeTags(folder)+'</td>';
2406 07 May 14 nicklas 62         html += '</tr>';
2407 08 May 14 nicklas 63         currentFolder = folder;
2406 07 May 14 nicklas 64       }
2406 07 May 14 nicklas 65       
2406 07 May 14 nicklas 66       html += '<tr class="file highlight">';
2578 15 Aug 14 nicklas 67       html += '<td></td>';
2407 08 May 14 nicklas 68       html += '<td class="file-name">'+Strings.encodeTags(file.name)+'</td>';
2406 07 May 14 nicklas 69       html += '<td class="file-size">'+Numbers.formatBytes(file.size)+'</td>';
3839 13 Apr 16 nicklas 70       html += '<td class="last-modified">'+Reggie.reformatDate(file.lastModified)+'</td>';
3839 13 Apr 16 nicklas 71       html += '<td class="owner">'+Strings.encodeTags(file.owner)+'</td>';
2406 07 May 14 nicklas 72       html += '<td>';
2407 08 May 14 nicklas 73       html += '<span class="link download-file" data-file-no="'+fileNo+'" title="Download this file to your local computer"><img src="../images/download.png"></span>';
7118 18 Apr 23 nicklas 74       if (file.ext == 'txt' || file.ext == 'out' || file.ext == 'vcf' || file.ext == 'tsv' || file.ext == 'csv' || file.ext == 'bed')
7116 17 Apr 23 nicklas 75       {
7116 17 Apr 23 nicklas 76         html += '<span class="link view-tabular-file" data-file-no="'+fileNo+'" title="View this file as a data table"><img src="../images/report.png"></span>';
7116 17 Apr 23 nicklas 77       }
7312 29 Aug 23 nicklas 78       else if (file.ext == 'png' || file.ext == 'pdf')
7312 29 Aug 23 nicklas 79       {
7312 29 Aug 23 nicklas 80         html += '<span class="link view-file" data-file-no="'+fileNo+'" title="View this file in a popup window"><img src="../../../images/zoom.png"></span>';
7312 29 Aug 23 nicklas 81       }
2406 07 May 14 nicklas 82       html += '</td>';
2406 07 May 14 nicklas 83       html += '</tr>';
2406 07 May 14 nicklas 84     }
2406 07 May 14 nicklas 85     html += '</table>';
2644 09 Sep 14 nicklas 86     Doc.element('files').innerHTML = html;
2406 07 May 14 nicklas 87
2406 07 May 14 nicklas 88     var downloadable = document.getElementsByClassName('download-file');
2407 08 May 14 nicklas 89     for (var fileNo = 0; fileNo < downloadable.length; fileNo++)
2406 07 May 14 nicklas 90     {
2406 07 May 14 nicklas 91       Events.addEventHandler(downloadable[fileNo], 'click', remote.downloadFile);
2406 07 May 14 nicklas 92     }
7312 29 Aug 23 nicklas 93     
7312 29 Aug 23 nicklas 94     var viewable = document.getElementsByClassName('view-file');
7312 29 Aug 23 nicklas 95     for (var fileNo = 0; fileNo < viewable.length; fileNo++)
7312 29 Aug 23 nicklas 96     {
7312 29 Aug 23 nicklas 97       Events.addEventHandler(viewable[fileNo], 'click', remote.viewFile);
7312 29 Aug 23 nicklas 98     }
7116 17 Apr 23 nicklas 99
7116 17 Apr 23 nicklas 100     var tabular = document.getElementsByClassName('view-tabular-file');
7116 17 Apr 23 nicklas 101     for (var fileNo = 0; fileNo < tabular.length; fileNo++)
7116 17 Apr 23 nicklas 102     {
7116 17 Apr 23 nicklas 103       Events.addEventHandler(tabular[fileNo], 'click', remote.viewTabularFile);
7116 17 Apr 23 nicklas 104     }
2406 07 May 14 nicklas 105   }
2406 07 May 14 nicklas 106   
2406 07 May 14 nicklas 107   remote.downloadFile = function(event)
2406 07 May 14 nicklas 108   {
2407 08 May 14 nicklas 109     var fileNo = Data.get(event.currentTarget, 'file-no');
2407 08 May 14 nicklas 110     var file = files[fileNo];
2407 08 May 14 nicklas 111     var path = Data.get('page-data', 'path')+'/'+file.path;
3837 12 Apr 16 nicklas 112
2406 07 May 14 nicklas 113     var url = '../OpenGrid.servlet?ID='+App.getSessionId();
2406 07 May 14 nicklas 114     url += '&cmd=DownloadProjectFile';
3837 12 Apr 16 nicklas 115     url += '&clusterId='+encodeURIComponent(Data.get('page-data', 'cluster-id', ''));
2406 07 May 14 nicklas 116     url += '&path='+encodeURIComponent(path);
3837 12 Apr 16 nicklas 117     url += '&fileserver='+Data.int('page-data', 'fileserver-id', 0);
3605 16 Nov 15 nicklas 118     url += '&archive='+encodeURIComponent(file.archive || '');
2407 08 May 14 nicklas 119     url += '&size='+file.size;
2406 07 May 14 nicklas 120     
2406 07 May 14 nicklas 121     location.href = url;
2406 07 May 14 nicklas 122   }
2406 07 May 14 nicklas 123   
7312 29 Aug 23 nicklas 124   remote.viewFile = function(event)
7312 29 Aug 23 nicklas 125   {
7312 29 Aug 23 nicklas 126     var fileNo = Data.get(event.currentTarget, 'file-no');
7312 29 Aug 23 nicklas 127     var file = files[fileNo];
7312 29 Aug 23 nicklas 128     var path = Data.get('page-data', 'path')+'/'+file.path;
7312 29 Aug 23 nicklas 129
7312 29 Aug 23 nicklas 130     var url = '../OpenGrid.servlet?ID='+App.getSessionId();
7312 29 Aug 23 nicklas 131     url += '&cmd=ViewProjectFile';
7312 29 Aug 23 nicklas 132     url += '&clusterId='+encodeURIComponent(Data.get('page-data', 'cluster-id', ''));
7312 29 Aug 23 nicklas 133     url += '&path='+encodeURIComponent(path);
7312 29 Aug 23 nicklas 134     url += '&fileserver='+Data.int('page-data', 'fileserver-id', 0);
7312 29 Aug 23 nicklas 135     url += '&archive='+encodeURIComponent(file.archive || '');
7312 29 Aug 23 nicklas 136     url += '&size='+file.size;
7312 29 Aug 23 nicklas 137     
7312 29 Aug 23 nicklas 138     Dialogs.openPopup(url, 'ViewFile'+fileNo, 900, 600);
7312 29 Aug 23 nicklas 139   }
7312 29 Aug 23 nicklas 140
7312 29 Aug 23 nicklas 141   
7116 17 Apr 23 nicklas 142   remote.viewTabularFile = function(event)
7116 17 Apr 23 nicklas 143   {
7116 17 Apr 23 nicklas 144     var fileNo = Data.get(event.currentTarget, 'file-no');
7116 17 Apr 23 nicklas 145     var file = files[fileNo];
7116 17 Apr 23 nicklas 146     var path = Data.get('page-data', 'path')+'/'+file.path;
7116 17 Apr 23 nicklas 147
7116 17 Apr 23 nicklas 148     var url = '../OpenGrid.servlet?ID='+App.getSessionId();
7116 17 Apr 23 nicklas 149     url += '&cmd=ViewTabularFile';
7116 17 Apr 23 nicklas 150     url += '&clusterId='+encodeURIComponent(Data.get('page-data', 'cluster-id', ''));
7116 17 Apr 23 nicklas 151     url += '&path='+encodeURIComponent(path);
7116 17 Apr 23 nicklas 152     url += '&fileserver='+Data.int('page-data', 'fileserver-id', 0);
7116 17 Apr 23 nicklas 153     url += '&archive='+encodeURIComponent(file.archive || '');
7116 17 Apr 23 nicklas 154     url += '&size='+file.size;
7116 17 Apr 23 nicklas 155     
7116 17 Apr 23 nicklas 156     Dialogs.openPopup(url, 'ViewTabularFile'+fileNo, 1200, 800);
7116 17 Apr 23 nicklas 157   }
7116 17 Apr 23 nicklas 158
2406 07 May 14 nicklas 159   return remote;
2406 07 May 14 nicklas 160 }();
2406 07 May 14 nicklas 161
2406 07 May 14 nicklas 162 Doc.onLoad(Remote.initPage);