Pman.Gnumeric.js
[Pman.Core] / Pman.Download.js
index 9a17844..7037f74 100644 (file)
@@ -8,6 +8,7 @@ var t = new Pman.Download({
     url: baseURL + '/Images/Download/0/myfile.jpg',
     newWindow : false,
     params: { .... },
+    doctype: 'pdf' 
     success : function() {
         Roo.MessageBox.alert("File has downloaded");
     }
@@ -20,6 +21,14 @@ var t = new Pman.Download({
 * @cfg {String} url     Location to download from.
 * @cfg {String} method     GET or POST (default GET), POST will create a form, and post that into the hidden frame.
 * @cfg {Boolean} newWindow (optional) download to new window
+* @cfg {String} doctype (optional) download PDF to new window
+* @cfg {Boolean} limit (optional) limit for grid downloads.
+ * @cfg {String} csvCols  - use '*' to override grid coluns
+ * @cfg {String} csvTitles - use '*' to override grid coluns
+
 * @cfg {Function} success (optional) MAY fire on download completed (fails on attachments)..
 * @cfg {Number} timeout (optional) in milliseconds before it gives up (default 30000 = 30s)
 * @cfg {Roo.grid.Grid} grid (optional) if you want to just download a grid, (without renderers..)
@@ -28,10 +37,11 @@ var t = new Pman.Download({
 
 Pman.Download = function(cfg)
 {
-    Roo.apply(this, cfg);
-    cfg = this;
     
+    this.params = {};
+    
+    Roo.apply(this, cfg);
+     
     if (this.grid) {
         
         this.buildFromGrid();
@@ -39,16 +49,16 @@ Pman.Download = function(cfg)
     }
     
     
-    if (cfg.newWindow) {
-            // as ie seems buggy...
-        window.open( cfg.url + '?' + Roo.urlEncode(cfg.params || {}), '_blank');
+    if (this.newWindow && this.method == 'GET') {
+        // as ie seems buggy...
+        window.open( this.url + '?' + Roo.urlEncode(this.params || {}), '_blank');
         return ; 
         
     }
    
     
     
-    var submit = false;
+    this.submit = false;
     this.createCsvFrame();
     
     var requested = 0;
@@ -61,9 +71,9 @@ Pman.Download = function(cfg)
     
     if (this.method == 'GET' && !this.params) {
         (function() {
-            submit = true;
-            this.csvFrame.src = this.url;
-            this.cleanup.defer(cfg.timeout || 30000,this);
+            this.submit = true;
+            this.csvFrame.src = cfg.url;
+            //this.cleanup.defer(cfg.timeout || 30000,this);
         }).defer(100, this);
         
        
@@ -78,13 +88,20 @@ Pman.Download = function(cfg)
         tag: 'form',
         method : this.method,
         action : this.url,
-        target : this.csvFrame.id,
+        target : this.newWindow ? '_new' : this.csvFrame.id,
         enctype : 'multipart/form-data'
-
-
-        
     });
+//    
+//    if(this.doctype == 'pdf'){
+//        this.pdfEmbed = b.createChild({
+//            tag: 'embed',
+//            src : this.url,
+//            pluginspage : 'http://www.adobe.com/products/acrobat/readstep2.html',
+//            alt: this.doctype
+//        });
+//    }
  
+    Roo.log(this.params);
     for(var i in this.params) {
         
         var el = this.form.createChild( {
@@ -100,7 +117,7 @@ Pman.Download = function(cfg)
     }
     
     (function() {
-        submit = true;
+        this.submit = true;
         this.form.dom.submit();
         this.cleanup.defer(this.timeout || 30000,this);
     }).defer(100, this);
@@ -120,10 +137,15 @@ Roo.apply(Pman.Download.prototype, {
     // private
     form : false,
     
+    limit : 9999,
+    
+    newWindow : false,
+    
+    method : 'GET',
+    
     // private..
     createCsvFrame: function()
     {
-        
         if (this.csvFrame) {
             document.body.removeChild(this.csvFrame);
         }
@@ -150,10 +172,11 @@ Roo.apply(Pman.Download.prototype, {
        // if (requested < 2) {
        //     return;
         //} // n
+        Roo.log('onload?');
         if (!this.submit) {
-            return;
+            return false;
         }
-        
+        return false;
       
         var frame = this.csvFrame;
         var success  = true; 
@@ -179,7 +202,9 @@ Roo.apply(Pman.Download.prototype, {
             Roo.log(e.toString());
             Roo.log(e);
         }
-        
+        // we can not actually do anything with the frame... as it may actually still be downloading..
+        return true;
+    
         this.cleanup();
         
         // this will never fire.. see 
@@ -188,7 +213,7 @@ Roo.apply(Pman.Download.prototype, {
             
             this.success();
         }
-       
+        return false;
         
 
     },
@@ -196,6 +221,7 @@ Roo.apply(Pman.Download.prototype, {
     // private - clean up download elements.
     cleanup :function()
     {
+        Roo.log('cleanup?');
         if (this.form) {
             this.form.remove();
             this.form= false;
@@ -213,29 +239,51 @@ Roo.apply(Pman.Download.prototype, {
     buildFromGrid : function()
     {
         // get the params from beforeLoad
-        this.grid.ds.fireEvent('beforeload', {
+        var ds = this.grid.ds;
+        ds.fireEvent('beforeload', ds, {
             params : this.params
             
         });
-        this.url = this.grid.ds.proxy.conn.url;
-        this.method = this.grid.ds.proxy.conn.method ;
         
-        // work out the cols
-        Roo.each(this.grid.cm.config, function(c,i) {
-            params['csvCols['+i+']'] = c.dataIndex;
-            params['csvTitles['+i+']'] = c.header;
-            
-        });
+         if(ds.sortInfo && ds.remoteSort){
+            var pn = ds.paramNames;
+            this.params[pn["sort"]] = ds.sortInfo.field;
+            this.params[pn["dir"]] = ds.sortInfo.direction;
+        }
+        if (ds.multiSort) {
+            var pn = ds.paramNames;
+            this.params[pn["multisort"]] = Roo.encode( { sort : ds.sortToggle, order: ds.sortOrder });
+        }
         
         
         
+        this.url = this.grid.ds.proxy.conn.url;
+        this.method = this.method || this.grid.ds.proxy.conn.method ;
+        var t = this;
+        // work out the cols
         
+        if (this.csvCols) {
+            t.params.csvCols = this.csvCols;
+            t.params.csvTitles = this.csvTitles;
+        } else {
+            
+            Roo.each(this.grid.cm.config, function(c,i) {
+                t.params['csvCols['+i+']'] = c.dataIndex;
+                t.params['csvTitles['+i+']'] = c.header;
+                
+            });
+        }
+        if (this.grid.loadMask) {
+            this.grid.loadMask.onLoad();
+        }
+        this.params.limit = this.limit;
+        
+        // do it as a post, as args can get long..
+        
+        this.method = this.method || 'POST';
+        if (this.method  == 'POST') {
+            this.params._get = 1;
+        }
     }
-    
-    
-    
-    
-    
-     
      
 });