nsinject.js
[app.wkmirror] / nsinject.js
1 NS = {
2     
3     rungrab : function(id)
4     {
5         this.id = id;
6         var frameload = function()
7         {
8             var ifd = ifr.contentWindow.document;
9             var chk = ifd.getElementById('lines');
10             
11             
12             console.log('report ready?');
13             
14             if (chk.value !='T') {
15                 chk.value= 'T';
16                 ifd.getElementById('date1').value = '1/1/2008';
17                 ifd.getElementById('date2').value = '1/1/2013';
18                 
19                 ifd.getElementById('footerform').submit();
20                 
21                 return;
22             }
23             
24             if (!ifd.getElementById('rptdataarea') || !ifr.contentWindow.reportTable
25                 || ifr.contentWindow.reportTable.oContentProvider.bRequestPending
26                 || !ifr.contentWindow.reportTable.isInLoadedState()) {
27                 console.log('report not ready?');
28                 window.setTimeout(frameload,1000);
29                 return;
30                 
31             }
32             
33             
34             
35             console.log("TRY downloading!");
36             
37             var ar = ifd.getElementById('footerform').elements;
38             var data= {};
39             for(var i =0; i < ar.length; i++) {
40                 var e = ar[i];
41                 data[e.name] = e.value;
42             }
43             console.log(data);
44             console.log(ifr.contentWindow.reportTable.getTotalRowCount());
45              NS.downloaddata(
46                 'https://system.netsuite.com/app/reporting/reportrunner.nl',
47                 {
48                     id: data.id,
49                     reportaction: 'exportcsv',
50                     apptype: 'html',
51                     visibleranges: '0,' +  ifr.contentWindow.reportTable.getTotalRowCount()
52                 }
53                 
54             );
55             
56         }
57         
58         // do stuff..
59         // we really just want to send a series of download requests..
60         //https://system.netsuite.com/app/reporting/reportrunner.nl?reporttype=REGISTER&acctid=403
61         
62         var ifr = document.createElement('iframe');
63         
64         ifr.setAttribute('src','https://system.netsuite.com/app/reporting/reportrunner.nl?reporttype=REGISTER&acctid=' + id);
65         ifr.setAttribute('width','900');
66         ifr.setAttribute('height','700');
67         ifr.addEventListener('load', frameload);
68         document.body.innerHTML = '';
69         
70         document.body.appendChild(ifr);
71         
72         /*
73         var ifd = ifr.contentWindow.document;
74         ifd.getElementById('lines_chkbox').
75         
76         var ar = ifd.getElementById('footerform').elements;
77         for(var i =0; i < ar.length; i++) {
78             var e = ar[i];
79             data[e.name] = e.value;
80         }
81         console.log(data);
82         
83         data.lines_chkbox = 'T';
84         data.reportaction = 'exportcsv'
85         //data.visibleranges =
86         data.apptype = 'html';
87         this.downloaddata(
88             'https://system.netsuite.com/app/reporting/reportrunner.nl?reporttype=REGISTER&acctid=403',
89             data
90         )
91         */
92         
93         
94     },
95     downloaddata : function (url,data) {
96         
97        
98         var xmlhttp = new XMLHttpRequest();
99                     
100         xmlhttp.open("POST", url,true);
101         xmlhttp.responseType = 'arraybuffer';
102         xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
103         var kv = [];
104         for(var i in data) {
105             kv.push(i +'=' + encodeURIComponent(  data[i]));
106         }
107         
108
109         xmlhttp.onload=function() {
110            
111             var ar= [];
112              
113             var r = new Uint8Array(xmlhttp.response);
114             for (i=0;i<r.byteLength;i++) {
115                 ar.push(r[i]);
116             }
117             
118             console.log(
119                 JSON.stringify ({
120                     requesturl : url,
121                     method: 'nsdownloadpage',
122                     filename : NS.id + '.csv',
123                     headers : xmlhttp.getAllResponseHeaders(),
124                     contentType:xmlhttp.getResponseHeader("Content-Type"),
125                     data: ar
126                 }));
127            
128         }
129         
130         xmlhttp.send(kv.join('&'));
131            
132     }
133     
134 }