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