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