Vinny B
Posts: 0
Joined: Fri Aug 22, 2014 2:22 pm

file download javascript help define location converts a json response to a csv file

hello:

Code: Select all

I have the following code, that converts a json response to a csv file and downloads it. It works GREAT and looks great in excel. 

The problem is that it only works from a computer. I think this is because I am not specifying a file save location.

The problem is that I cannot test my ideas unless I install it on a device and its taking a long time. I make a change convert to apk test , make a change convert to apk test.

I was wondering if you have any ideas on how to adjust the following code to work on device.

I appreciate your help.

$(document).ready(function(){

Code: Select all

     //var data = Appery('json').text(); 
 var data = localStorage.getItem('dcsv'); 
     if(data == '') 
         return; 

     JSONToCSVConvertor(data, "Nixtamal", true); 

});
function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {
//If JSONData is not an object then JSON.parse will parse the JSON string in an Object
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;

Code: Select all

 var CSV = '';     
 //Set Report title in first row or line 

 CSV += ReportTitle + '\r\n\n'; 

 //This condition will generate the Label/Header 
 if (ShowLabel) { 
     var row = ""; 

     //This loop will extract the label from 1st index of on array 
     for (var index in arrData[0]) { 

         //Now convert each value to string and comma-seprated 
         row += index + ','; 
     } 

     row = row.slice(0, -1); 

     //append Label row with line break 
     CSV += row + '\r\n'; 
 } 

 //1st loop is to extract each row 
 for (var i = 0; i < arrData.length; i++) { 
     var row = ""; 

     //2nd loop will extract each column and convert it in string comma-seprated 
     for (var index in arrData[i]) { 
         row += '"' + arrData[i][index] + '",'; 
     } 

     row.slice(0, row.length - 1); 

     //add a line break after each row 
     CSV += row + '\r\n'; 
 } 

 if (CSV == '') {         
     alert("Invalid data"); 
     return; 
 }    

 //Generate a file name 
 var fileName = "Report_"; 
 //this will remove the blank-spaces from the title and replace it with an underscore 
 fileName += ReportTitle.replace(/ /g,"_");    

 //Initialize file format you want csv or xls 
 var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); 

 // Now the little tricky part. 
 // you can use either window.open(uri); 
 // but this will not work in some browsers 
 // or you will not get the correct file extension     

 //this trick will generate a temp a rel="nofollow" tag 
 var link = document.createElement("a");     
 link.href = uri; 

 //set the visibility hidden so it will not effect on your web-layout 
 link.style = "visibility:hidden"; 
 link.download = fileName + ".csv"; 

 //this part will append the anchor tag and remove it after automatic click 
 document.body.appendChild(link); 
 link.click(); 
 document.body.removeChild(link); 

}/a

Egor Kotov6832188
Posts: 0
Joined: Wed Nov 19, 2014 5:15 pm

file download javascript help define location converts a json response to a csv file

Hello Vinny,

Last time we were doing something similar it was made by FileAPI, which allows to save file to File system of current device.
Unfortunately, debugging css and custom js is outside of support's scope.

Return to “Issues”