Auto resizing for grids based on collapsing and resizing of other components
authorBrandon King <kingb@caltech.edu>
Tue, 30 Jun 2009 22:43:48 +0000 (22:43 +0000)
committerBrandon King <kingb@caltech.edu>
Tue, 30 Jun 2009 22:43:48 +0000 (22:43 +0000)
htsworkflow/frontend/static/js/htsw-inventory.js
htsworkflow/frontend/static/js/htsw.js

index 419a80fa44422d91d200c04e8d3cbc3944301a13..6f44e5026a4f7765509e2d7a1c775fa544b5c35a 100644 (file)
@@ -67,7 +67,7 @@ var getInventoryDataGrid = function(){
         frame: true,
         width: 'auto',
         //height: 500,
-        autoHeight: true,
+        //autoHeight: true,
         collapsible: false,
         title: "Inventory Index",
         iconCls: 'icon-grid',
index 72bead1dde34278b0451c05d6053b28df8a604d4..40ddf09eff33020158bc3939fa360b519bb265c8 100644 (file)
@@ -21,6 +21,20 @@ var goto_url = function(www_url)
     window.location = www_url; 
 }
 
+var RESIZEME_ARRAY = new Array();
+
+var resize_registered_panel = function(pnl){
+  Ext.each(RESIZEME_ARRAY, function(fnc){
+    fnc();
+  });
+}
+
+var resize_registered = function(cmp, adj_w, adj_h, raw_w, raw_h){
+  Ext.each(RESIZEME_ARRAY, function(fnc){
+    fnc();
+  });
+}
+
 $(document).ready(function(){
     //----------------------------------------
     // Django Library Page CSS Fix
@@ -146,8 +160,10 @@ $(document).ready(function(){
     // Main Viewport Setup
     //-------------------------------
     var mainBorderPanel = new Ext.Viewport({
+       //id: 'main_viewport',
        layout: 'border',
        items: [{
+           id: 'north_border_panel',
             region: 'north',
             layout: 'vBox',
             layoutConfig: {
@@ -181,11 +197,13 @@ $(document).ready(function(){
            split: true
        },menuPanel,{
             //title: 'Body',
+           id: 'body_content_panel',
             region: 'center',
             xtype: 'panel',
            //autoScroll: true,
             layout: 'fit',
             margins: '2 0 2 0',
+           monitorResize: true,
             items: [{
                 //title: 'Inner Panel',
                 contentEl: 'body_content',
@@ -195,6 +213,15 @@ $(document).ready(function(){
            },eastPanel]
     });
     
+    // Using a little trick to resize registered components:
+    // i.e. just use RESIZEME_ARRAY.push(function() { <code> }); to register a function
+    // to be called during these events.
+    mainBorderPanel.on('resize', resize_registered);
+    var northBorderPanel = Ext.getCmp('north_border_panel');
+    northBorderPanel.on('collapse', resize_registered_panel);
+    northBorderPanel.on('expand', resize_registered_panel);
+    
+    
     //-------------------------------
     // Menu Bar Setup
     //-------------------------------
@@ -284,5 +311,11 @@ $(document).ready(function(){
     if (grid_target != null){
       var grid = getInventoryDataGrid();
       grid.render(grid_target);
+      RESIZEME_ARRAY.push(function() {
+       Ext.getCmp('inventory_item_panel').setHeight(Ext.getCmp('body_content_panel').getHeight()-4);
+      });
+      grid.setHeight(Ext.get('body_content_panel').getHeight()-4);
     }
+    
+    
 });
\ No newline at end of file