DataObjects/pman.links.ini
[Pman.Core] / Pman.Download.js
index d135280..3057f14 100644 (file)
@@ -21,11 +21,23 @@ var t = new Pman.Download({
 * @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 {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..)
+* 
 */
+
 Pman.Download = function(cfg)
 {
+    
+    this.params = {};
+    
+    Roo.apply(this, cfg);
+     
+    if (this.grid) {
+        
+        this.buildFromGrid();
+        Roo.log(this);
+    }
     
     
     if (cfg.newWindow) {
@@ -34,38 +46,39 @@ Pman.Download = function(cfg)
         return ; 
         
     }
-    Roo.apply(this, cfg);
+   
+    
     
     var submit = false;
     this.createCsvFrame();
     
     var requested = 0;
+     
+    Roo.EventManager.on( this.csvFrame, 'load', this.onLoad, this);
     
-   
-    
-    
-    Roo.EventManager.on( this.csvFrame, 'load', cb, this);
     
-    cfg.method = cfg.method || 'GET';
+    //--- simple method..
+    this.method = this.method || 'GET';
     
-    if (cfg.method == 'GET') {
+    if (this.method == 'GET' && !this.params) {
         (function() {
             submit = true;
             this.csvFrame.src = cfg.url;
-            this.cleanup.defer(30000,this);
+            this.cleanup.defer(cfg.timeout || 30000,this);
         }).defer(100, this);
         
        
         return;
     }
     
+    
     Roo.log("creating form?");
     
     var b = Roo.get(document.body);
     this.form = b.createChild({
         tag: 'form',
-        method : 'POST',
-        action : cfg.url,
+        method : this.method,
+        action : this.url,
         target : this.csvFrame.id,
         enctype : 'multipart/form-data'
 
@@ -73,7 +86,7 @@ Pman.Download = function(cfg)
         
     });
  
-    for(var i in cfg.params) {
+    for(var i in this.params) {
         
         var el = this.form.createChild( {
             ns : 'html',
@@ -81,7 +94,7 @@ Pman.Download = function(cfg)
             
             type: 'hidden',
             name : i,
-            value : cfg.params[i]
+            value : this.params[i]
         });
         
         
@@ -90,7 +103,7 @@ Pman.Download = function(cfg)
     (function() {
         submit = true;
         this.form.dom.submit();
-        this.cleanup.defer(30000,this);
+        this.cleanup.defer(this.timeout || 30000,this);
     }).defer(100, this);
     
      
@@ -172,14 +185,14 @@ Roo.apply(Pman.Download.prototype, {
         
         // this will never fire.. see 
         // http://www.atalasoft.com/cs/blogs/jake/archive/2009/08/18/events-to-expect-when-dynamically-loading-iframes-in-javascript-take-2-thanks-firefox-3-5.aspx
-        if (cfg.success && success) {
+        if (this.success && success) {
             
-            cfg.success();
+            this.success();
         }
        
         
 
-    }
+    },
     
     // private - clean up download elements.
     cleanup :function()
@@ -196,7 +209,36 @@ Roo.apply(Pman.Download.prototype, {
             this.csvFrame= false;
         }
          
+    },
+    
+    buildFromGrid : function()
+    {
+        // get the params from beforeLoad
+        this.grid.ds.fireEvent('beforeload', this.grid.ds, {
+            params : this.params
+            
+        });
+        this.url = this.grid.ds.proxy.conn.url;
+        this.method = this.grid.ds.proxy.conn.method ;
+        var t = this;
+        // work out the cols
+        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 = 9999;
+        
+        
     }
+    
+    
+    
+    
+    
      
      
-});
\ No newline at end of file
+});