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