A scrollable, expandable filter panel for QV 11 - without extensions




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.

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:

SheetName,SheetID
Dashboard, Sheet1
Analysis, Sheet2
Reporting, Sheet3

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
SheetID: =SheetID
Action 2: Clear Field
Field: SheetName

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:

Dimension: SheetName
Expression: =1

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:

Alert example

or building hierarchial checkbox lists that users can set before applying filters to their data:

Checkbox example

-Speros

TAGS: Miscellany

Related News

"...Thirteen's just obnoxious."

Read More

d3vl I've uploaded a new extension to GitHub called the d3 visualization library, or d3vl...

Read More