A common problem when building QlikView dashboards is where to place listboxes. Often, users want to be able to filter many fields, but there isn’t enough room on the dashboard for all of the listboxes. Some common solutions to this problem are using multiboxes, dynamic listboxes, or creating entire sheets dedicated to housing just filters. I’d like to introduce another out-of-the-box solution to this problem: the filter tree.
The filter tree is a scrollable, expandable/collapsable, and selectable list of dimensions and their values. These properties allow it to be used in place of many listboxes. Since it is scrollable, it can contain many dimensions and their values. The expanding and collapsing of dimensions allows the user to navigate the list with ease. This mechanism has been developed with a mobile-first approach; it uses a pivot table and the “toggle select” mode of QlikView selections for their single tap selection capabilities on mobile devices.
I’ve uploaded a filter tree QVW to GitHub and Branch. The QVW includes a subroutine that can be called to generate all of the necessary data and variables. There are also instructions on how to implement, since the solution requires 2 field triggers.
Under the Hood
The concept that drives this functionality is using selections in table to perform specific actions. This is accomplished by creating an island table with the fields the user will click. These clickable fields are then given triggers to clear everytime they are selected. This is done so that each time the user clicks the field, a single selection is made in that field. Before the Clear action is run, the table is filtered, so we can determine what value they clicked. Then, we can run actions based on that value before the field is cleared again. I will illustrate with an example:
Let’s say you load a table into QlikView like the following:
On the front end, you can create actions on the field “SheetName” for the “onselect” trigger that first activates the current SheetID, and then clears the SheetName field:
Action 1: Activate Sheet
Action 2: Clear Field
Now you just have to display SheetName in a manner that allows the user to only select one value at a time. Pivot tables work very well for this. If you create a pivot table with:
you will now have a way for the user to select a single SheetName at a time. If they click on “Dashboard” for example, the actions will run to:
1) Activate Sheet with Sheet ID “Sheet1”
2) Clear the SheetName field, which resets the pivot table
The filter tree above takes this concept and implements it with actions allowing specific rows to be shown and hidden, as well as triggering selections in the actual data of the application.
The concept can be taken further to build all kind of custom functionality when clicking table cells, such as showing/hiding alerts in a KPI table:
or building hierarchial checkbox lists that users can set before applying filters to their data: