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