Flexicious
Ultimate supports hierarchical data display that is similar to the traditional
Halo AdvancedDataGrid. We refer to this has
"Homogenous Hierarchical Data", because you are primarily looking at
a single set of columns that describe a single entity, just grouped by different
attributes of that entity.
The
Flexicious Ultimate supports this by utilizing a flag that marks the levels to
indicate that they reuse the previous levels columns.
From the
docs:
reusePreviousLevelColumns: Setting
this flag to true will resuse the columns from the
previous level. Set this flag to true if you want the grid to behave like the
advanced datagrid, where there is one set of columns
for hierarchical data.
Now, this
example brings up a few interesting issues: In this case we're still using a
set of parent child entities to display a homogenous hierarchical grid. So, in essence,
we are displaying a set of discrete entities using a same set of columns. For
example, the Amount column could display either the
Org Amount, the Deal Amount, Invoice Amount or the Line Item Amount. So what
should be the dataField here? How do we sort? This is
why we use a custom sort function amountSortCompareFunction, as well as a custom label
function getInvoiceAmount.
Each of these basically checks to see
what it is that we are trying to display and implements custom logic on basis
of the entity type.
Another
point of interest is that many times in scenarios like this, you only want a
specific level of depth to be selectable. For example, if this screen was a
"Print Invoice" screen, where you have them listed by Org and then
deal, you only want the user to be able to select "Invoices". This is
why we have the rowSelectableFunction. Basically, what we're saying is that,
at the first two levels, the rows are not selectable, but they are selectable
at the Invoice level.