Flexmonster Software License Agreement (“Agreement”) has been significantly revised and is effective as of September 30, 2024.
The following modifications were made:
The modified version of Flexmonster Software License Agreement is available here.
Downloading, installing, and/or continuing to use Flexmonster Software after September 30, 2024, constitutes Licensee’s acceptance of the terms and conditions of the modified version of Flexmonster Software License Agreement. If Licensee does not agree to any of these terms and conditions, they must cease using Flexmonster Software and must not download, install, use, access, or continue to access Flexmonster Software. By continuing to use Flexmonster Software or renewing the license under License Model or Maintenance after the effective date of any modifications to Agreement, Licensee accepts and agrees to be bound by the terms and conditions of the modified Agreement.
Flexmonster supports creating multilevel hierarchies from non-hierarchical data out of the box. To use this feature for the custom data source API, you need to handle certain request scenarios on your server.
This guide describes how to support multilevel hierarchies on your server and configure them in the component.
Hierarchies are composed on the client side while the server's task is to filter them. For this purpose, your back end has to implement advanced hierarchical filters.
Flexmonster sends filters in the /members request and the /select requests for the pivot table, the flat table, and the drill-through view. The filters' structure is described by the FilterGroupObject.
When the server implements hierarchical filters, it should inform the component about that.
For this purpose, set the advanced property to true
in the response to the /fields request. The component will ignore multilevel hierarchies if the advanced
property is set to false
.
The component sends the additional /select request when the levelName
property is defined in the slice. This request extracts members from the hierarchy level specified in levelName
.
If you need the levelName
property in your slice, handle the /select request for loading the required hierarchy levels.
There are two ways to compose multilevel hierarchies:
The MappingObject is responsible for grouping data into hierarchies. Specify hierarchy
and parent
properties to structure the data.
The example below illustrates how to compose multilevel hierarchies in the report. Here, we create the "Item"
hierarchy with the "Category"
field as a first level and the "Color"
field as a second level:
report: { dataSource: { type: "api", url: "your_url", index: "your_index", mapping: { "Category": { type: "string", hierarchy: "Item" }, "Color": { type: "string", hierarchy: "Item", parent: "Category" } } }, slice: { // Your slice } }
As an alternative to the MappingObject, you can configure hierarchies right in the response to the /fields request. To do so, specify hierarchy and parent properties for the necessary fields.
Here is an example of a /fields response where the "Category"
and "Color"
fields are grouped under the "Item"
hierarchy (with "Category"
as the top level of the hierarchy):
{ "fields":[ { "uniqueName": "Category", "type": "string", "hierarchy": "Item" }, { "uniqueName": "Color", "type": "string", "hierarchy": "Item", "parent": "Category" }, // ... ], "aggregations":{ // ... }, "filters":{ // ... } }
Now run your project and open the webpage with Flexmonster - multilevel hierarchies should appear in the component.
You may be interested in the following articles: