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