You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/03/08 00:57:58 UTC

[royale-asjs] branch develop updated: jewel-datagrid: removed default height. If height is not provided component measures to the num rows * rowHeight.

This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new de3e8ed  jewel-datagrid: removed default height. If height is not provided component measures to the num rows * rowHeight.
de3e8ed is described below

commit de3e8edd45445e94b3a838edda46f6b7ac0ebc37
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sun Mar 8 01:57:46 2020 +0100

    jewel-datagrid: removed default height. If height is not provided component measures to the num rows * rowHeight.
---
 .../projects/Jewel/src/main/resources/defaults.css |  3 +-
 .../royale/org/apache/royale/jewel/DataGrid.as     |  4 +--
 .../royale/jewel/beads/layouts/DataGridLayout.as   | 38 ++++++++++++++--------
 .../royale/jewel/beads/views/DataGridView.as       |  4 +--
 .../Jewel/src/main/sass/components/_datagrid.sass  |  3 +-
 5 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 75433bf..f443e42 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -515,7 +515,7 @@ j|VirtualComboBoxPopUp {
 }
 .jewel.datagrid .listarea {
   width: 100%;
-  height: 100%;
+  flex: 1 1 0%;
 }
 .jewel.datagrid .jewel.list.column .jewel.item.datagrid {
   width: 100%;
@@ -543,6 +543,7 @@ j|DataGridColumnList {
   IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.DataGridItemRenderer");
   ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead");
+  IViewport: ClassReference("org.apache.royale.jewel.supportClasses.Viewport");
 }
 
 .jewel.datechooser .jewel.table {
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
index 4782833..ac9e6f4 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as
@@ -63,11 +63,9 @@ package org.apache.royale.jewel
 			super();
 			typeNames = "jewel datagrid";
 
-			// set default width and height
+			// set default width (no height, to allow be indicated by content rows)
             if(isWidthSizedToContent())
             	width = 220; // if width not set make it default to 220px
-            if(isHeightSizedToContent())
-            	height = 240; // if height not set make it default to 240px
 		}
 		
 		[Bindable("columnsChanged")]
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
index 4ecaf31..9fe4c93 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/layouts/DataGridLayout.as
@@ -21,7 +21,6 @@ package org.apache.royale.jewel.beads.layouts
     import org.apache.royale.collections.ArrayList;
     import org.apache.royale.core.IBeadLayout;
     import org.apache.royale.core.IDataGridModel;
-    import org.apache.royale.core.IScrollingViewport;
     import org.apache.royale.core.IStrand;
     import org.apache.royale.core.IUIBase;
     import org.apache.royale.core.UIBase;
@@ -31,7 +30,6 @@ package org.apache.royale.jewel.beads.layouts
     import org.apache.royale.html.beads.models.ButtonBarModel;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
     import org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
-    import org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport;
 	
 	/**
 	 * DataGridLayout is a class that handles the size and positioning of the
@@ -86,6 +84,11 @@ package org.apache.royale.jewel.beads.layouts
 		{
 			layout();
 		}
+
+		/**
+		 *  Used at begining of layout for % height
+		 */
+		private var initLayout:Boolean = true;
 		
 		/**
 		 * @copy org.apache.royale.core.IBeadLayout#layout
@@ -99,6 +102,21 @@ package org.apache.royale.jewel.beads.layouts
 		 */
 		public function layout():Boolean
 		{
+			var model:IDataGridModel = datagrid.model as IDataGridModel;
+
+			// required when using percentage height (%) since at this point still don't have component measure
+			// so we call requestAnimationFrame until get right values
+			COMPILE::JS
+			{
+			if(initLayout && model.dataProvider){
+				if(datagrid.height == 0 && !isNaN(datagrid.percentHeight)) {
+					requestAnimationFrame(layout);
+					return true;
+				} else
+					initLayout = false;
+			}
+			}
+
 			var view:IDataGridView = datagrid.view as IDataGridView
 			var presentationModel:IDataGridPresentationModel = datagrid.getBeadByType(IDataGridPresentationModel) as IDataGridPresentationModel;
 			var header:IUIBase = view.header;
@@ -109,10 +127,9 @@ package org.apache.royale.jewel.beads.layouts
             var bblayout:ButtonBarLayout = header.getBeadByType(ButtonBarLayout) as ButtonBarLayout;
 			// (header as ButtonBar).widthType = ButtonBarModel.PROPORTIONAL_WIDTHS;
 			var listArea:IUIBase = view.listArea;
-			var scrollbead:ScrollingViewport = listArea.getBeadByType(IScrollingViewport) as ScrollingViewport;
 			
 			var displayedColumns:Array = view.columnLists;
-			var model:IDataGridModel = datagrid.model as IDataGridModel;
+			
 			
 			// Width
 			var defaultColumnWidth:Number;
@@ -129,16 +146,14 @@ package org.apache.royale.jewel.beads.layouts
 			{
 				var columnDef:IDataGridColumn = (bbmodel.dataProvider as ArrayList).getItemAt(i) as IDataGridColumn;
 				var columnList:UIBase = displayedColumns[i] as UIBase;
-
+				
 				//remove columns height if rows not surround datagrid height (and this one is set to pixels)
 				if(model.dataProvider && (model.dataProvider.length * presentationModel.rowHeight) > (datagrid.height - header.height))
 				{
 					columnList.height = NaN;
-					scrollbead.scroll = true;
 				} else 
 				{
 					columnList.percentHeight = 100;
-					scrollbead.scroll = false;
 				}
 
 				//temporal- if only one isNaN(columnDef.columnWidth) make it true so widthType = ButtonBarModel.PIXEL_WIDTHS
@@ -161,16 +176,13 @@ package org.apache.royale.jewel.beads.layouts
 			if(pixelflag)
 			{
 				bblayout.widthType = ButtonBarModel.PIXEL_WIDTHS;
-				COMPILE::JS
-				{
-					datagrid.width = NaN;
-					listArea.width = NaN;
-				}
+				datagrid.width = NaN;
+				listArea.width = NaN;
 			}
 			
 			header.dispatchEvent(new Event("layoutNeeded"));
 			listArea.dispatchEvent(new Event("layoutNeeded"));
-			
+
 			return true;
 		}
 	}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
index ec7ddd5..d3e9904 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
@@ -162,7 +162,7 @@ package org.apache.royale.jewel.beads.views
                 
                 // by default make columns get the 1/n of the maximun space available
                 (list as ILayoutChild).percentWidth = 100 / _sharedModel.columns.length;
-                (list as ILayoutChild).percentHeight = 100;
+                // (list as ILayoutChild).percentHeight = 100;
                 list.itemRenderer = dataGridColumn.itemRenderer;
                 list.labelField = dataGridColumn.dataField;
                 list.addEventListener('rollOverIndexChanged', handleColumnListRollOverChange);
@@ -250,7 +250,7 @@ package org.apache.royale.jewel.beads.views
             if(!layout) {
                 // Load the layout bead if it hasn't already been loaded (init time)
 			    layout = loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", _strand) as IBeadLayout;
-            } 
+            }
             host.dispatchEvent(new Event("layoutNeeded"));
         }
 
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
index 2b42549..3f29691 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
@@ -31,7 +31,7 @@
 
     .listarea
         width: 100%
-        height: 100%
+        flex: 1 1 0%
 
     .jewel.list.column
 
@@ -64,6 +64,7 @@ j|DataGridColumnList
     IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.DataGridItemRenderer")
     ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead")
+    IViewport: ClassReference("org.apache.royale.jewel.supportClasses.Viewport")
 
 //Nothing to change from j|ButtonBar
 j|DataGridButtonBar