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