Advertisement
Katsushiro

functions.js

Nov 15th, 2014
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function createStoredFilesTable(){
  2.     var jsonObj;
  3.     $.getJSON('/storedFilesList.json').done(function( obj ){ // loading external JSON file with info about stored files
  4.         jsonObj = obj;
  5.         $('#storedItemsTableWrapper').empty();
  6.        
  7.         storedItemsContent='<table class="table table-striped">\
  8.                             <tr><th>File Name</th><th>Size (Bytes)</th><th>Expiration date</th><th colspan=\"2\"></th></tr>';
  9.        
  10.         $.each( obj, function(key, value){ // output: filename [object]
  11.             storedItemsContent += '<tr><td class=\"textLeft\">' + key + '</td>';
  12.            
  13.             $.each( value, function( attr, val ){ // parsing '[object]'
  14.                 switch(attr){
  15.                 case 'path':
  16.                     storedItemsContent += '<td><a href=\"/uploadedFiles/' + key + '\">Download</a></td>';
  17.                     break;
  18.                 case 'expDate':
  19.                     storedItemsContent += '<td><input class=\"inputDate\" type=\"date\"></input></td>';
  20.                     break;
  21.                 default:
  22.                     storedItemsContent += '<td>' + val + '</td>';
  23.                 }
  24.             });
  25.            
  26.             storedItemsContent += '<td><a class=\"deleteLink\">Delete</a></td></tr>';
  27.         });
  28.        
  29.         storedItemsContent += '</table>';
  30.         $('#storedItemsTableWrapper').append(storedItemsContent);
  31.     }).done(function(){
  32.        
  33.         $('.deleteLink').click(function(event){
  34.             var filename = event.target.parentNode.parentNode.children[0].innerHTML;
  35.            
  36.             alert(filename);
  37.             alert(jsonObj);
  38.             delete jsonObj[filename];
  39.            
  40.             var formData = new FormData();
  41.             formData.append('value','aaaa');
  42.            
  43.             var url = '/delete';
  44.            
  45.             var xhr = new XMLHttpRequest();
  46.            
  47.             xhr.onreadystatechange = function(){
  48.                 if(xhr.readyState == 4){
  49.                     if(xhr.status == 200){
  50.                         console.log('Delete OK.');
  51.                     } else {
  52.                         console.log('ERROR: ' + xhr.responseText + ' : ' + xhr.status);
  53.                     }
  54.                 }
  55.             };
  56.             xhr.open('POST', url, true);
  57.             xhr.send(formData);
  58.         })
  59.        
  60.         $('.inputDate').change(function(event){
  61.             alert('date changed');
  62.         });
  63.     });
  64. }
  65.  
  66. function updateProgressBar( event, bar, backBar) {
  67.     if ( event.lengthComputable ) {
  68.         var completed = (event.loaded / event.total) * 100;
  69.  
  70.         backBar.style.display = 'block';
  71.  
  72.         bar.style.width = completed + "%";
  73.         bar.innerHTML = parseInt(completed) + "%";
  74.  
  75.     } else {
  76.         alert('Progress bar error!');
  77.     }
  78. }
  79.  
  80. /**
  81.  * 1 interface 1 - drag&drop, 2 - upload by button
  82.  *
  83.  * Data below are all included in one parameter 'data'
  84.  * 2 queue Queue for uploaded data - this macro uses synchronous upload
  85.  * 3 formData Uploaded data - 'filepath', file, filename
  86.  * 4 url Where to upload files
  87.  * 5 $btn Upload button - only used by interface 2!
  88.  * 6 uploadSuccess Div with success notice
  89.  * 7 warning Div with warning notice
  90.  * 8 progressBarWrapperArray divs containing progressBarArray and progressTitleArray - only used by interface1!
  91.  * 9 progressBarArray Array containing progress bars
  92.  * 10 progressTitleArray Array containing titles above progress bars - only used by interface 1!
  93.  * 11 bar Colourful part of progress bar
  94.  * 12 backBar Background part of progress bar
  95.  * 13 progressTitle Title containing filename staying above progress bar
  96.  */
  97. function requestHandle( interface, data ) {
  98.  
  99.     //------------------------------------------//
  100.     //--- GETTING DATA FROM 'data' PARAMETER ---//
  101.     //------------------------------------------//
  102.     var queue = data[0];
  103.     var formData = data[1];
  104.     var url = data[2];
  105.     var $btn = data[3];
  106.     var uploadSuccess = data[4];
  107.     var warning = data[5];
  108.     var progressBarWrapperArray = data[6];
  109.     var progressBarArray = data[7];
  110.     var progressTitleArray = data[8];
  111.     var bar = data[9];
  112.     var backBar = data[10];
  113.     var progressTitle = data[11];    
  114.  
  115.     if (interface != 1 && interface != 2) {
  116.         alert('DEBUG: Unknown interface code!');
  117.     }
  118.  
  119.     //alert(url);
  120.    
  121.     var req = new XMLHttpRequest();
  122.  
  123.     //------------------------//
  124.     //--- WARNING MESSAGES ---//
  125.     //------------------------//
  126.     var noFileSelected = " You haven't selected any files to upload! ";
  127.     var resourceNotFound = "Resource couldn\'t be found!";
  128.     var internalServerError = "Internal server error!";
  129.  
  130.     //---------------------//
  131.     // --- BIND LOADBAR ---//
  132.     //---------------------//
  133.     req.upload.onprogress = function(event) {
  134.         updateProgressBar(event, bar, backBar)
  135.     }
  136.  
  137.     req.onreadystatechange = function() {
  138.         if (req.readyState == 4) {
  139.  
  140.             if (req.status == 200) {     // SUCCESS
  141.  
  142.                 if (queue.length == 0) {
  143.                     if (interface == 1) {      // drag drop interface
  144.                         removeWrapperArray( progressBarWrapperArray );
  145.                         document.getElementById("DragDropField").innerHTML = "Drag your attachments here";
  146.                     } else {
  147.                         $btn.button("reset");
  148.                     }
  149.                    
  150.                     hideProgressBarArray( progressBarArray );
  151.                     uploadSuccess.style.display = 'block';
  152.                 }
  153.  
  154.             } else if (req.status == 404) {
  155.                 warning.innerHTML = resourceNotFound;
  156.                 warning.style.display = 'block';
  157.             } else if (req.status == 500) {
  158.                 warning.innerHTML = internalServerError;
  159.                 warning.style.display = 'block';
  160.             } else {
  161.                 warning.innerHTML = req.status + ' : ' + req.statusText;
  162.                 warning.style.display = 'block';
  163.             }
  164.  
  165.            var newData = queue.shift();
  166.            if( newData ) {
  167.                requestHandle( interface, newData );
  168.            } else {
  169.                activeUploading = false;
  170.            }
  171.         }
  172.     }
  173.  
  174.     req.open('POST', url, true);
  175.     req.send(formData);
  176. }
  177.  
  178. function removeWrapperArray( wrapperArray ) {
  179.     var len = wrapperArray.length;
  180.     for( var i = 0; i < len ; i++ ) {
  181.         wrapperArray[0].remove();
  182.     }
  183. }
  184.  
  185. function switchInterface() {
  186.     document.getElementById("DragDrop").style.display = 'none';
  187.     document.getElementById("UploadButton").style.display = 'block';
  188. }
  189.  
  190. function hideProgressBarArray( progressBarArray ) {
  191.     var len = progressBarArray .length;
  192.     for( var i = 0; i < len ; i++ ) {
  193.         progressBarArray [i].style.display = 'none';
  194.     }
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement