Not all check boxes are created equal
This post continues an examination of the methods to achieve dynamic update of Xcelsius Check Box component’s statuses that started in the previous parts of this series: Part 1, Part 2, and Part 3.
One of the interfaces that require this functionality is similar to the Row Selectability section on the Common tab of the Behavior ribbon in the Spreadsheet Table component properties. It is also used in Excel filters (“(Select All)” option) and in Tableau (“(All)” option), and in many other displays that include grouped check boxes.
This design consists of the multiple dependent check boxes that can be checked/unchecked selectively by a user, but also are governed by the so-called “master” check box. The status change of the master check box correspondingly affects the statuses of all of the other check boxes in the group.
To reproduce it in Xcelsius, I’ll use the model similar to the one used in the Part 3 with a line chart of traffic trends by geographic region and the check boxes representing these regions. Display status of each chart series depends on the checked/unchecked status of the corresponding check box. What the user sees as a check box is a push button component placed on top of two check box components. The push button has a transparent background. One of the checkboxes is set to be checked and the other one is unchecked. Their dynamic visibility is based on the status of selection (see details in Part 1 and Part 2). The challenging design difference in this model is that the component responsible for the Select All/None functionality (master control) is not a button as in Part 3, but a check box itself, at least in a visual capacity, and its functionality should create a corresponding user experience.
If the user unchecks any dependent check box, the master check box should be unchecked as well. If all of the check boxes are checked, the master check box should also become checked. We can’t get such functionality in Xcelsius models out of the box. But there is a workaround that I’m going to share with you.
On the figure below you can see the components included in the model.
To show what happens behind the screen at a run time I added a Spreadsheet Table component. It is based on the range C1:E6, which consists of the calculated statuses of selection and visibility. The next two figures show how the spreadsheet is set up.
Chart series are linked to the Calculated Data range (H2:K6). Formulae in that range use the REPT worksheet function that returns values from the Raw Data range (H8:K12) if corresponding display status in the range (D3:D6) is 1 and an empty string if it is 0.
Each click on any dependent checkbox (which is in fact on a transparent push button), copies the values (1 or 0) from the corresponding row in the range C3:C6 into the cell in the range D3:D6. Then, the formula in C3:C6 recalculates the inverted value in the preparation for the next click.
The Dynamic Visibility Status properties of the stacked check boxes representing the master check box are linked to the cell E2 (shaded in green on a spreadsheet).
The formula in the cell E2 ( =MIN($D$3:$D$6) ) calculates the lowest out of all dependent check boxes’ statuses.
When a user clicks on what is shown as the master check box and labeled as (All), he triggers an overlaid push button. It results in an insertion of values from the source range E3:E6 into the destination range D3:D6.
Formulae in E3:E6 range (1-$E$2) return inverted E2 value facilitating 1 and 0 toggling of dynamic visibility statuses of the all dependent check boxes and then, closing the loop, affects checked/unchecked status of the master check box.
This post concludes the series about dynamic status update of Check Box components in SAP BusinessObjects Dashboard (Xcelsius). With one of the next releases of the product, we might get the Check Box component’s behavior changed (at least as an option) to be similar to Excel’s Check Box control, and this series of posts will become obsolete. Until then, we can use the methods explained here to achieve the functionality, as of today, not supported in Xcelsius out of the box.
Leonid Koyfman is a BI professional with over 10 years of experience in a database design and development and in delivering reporting solutions using enterprise reporting technologies. He is a big Xcelsius enthusiast passionate about dashboard design and other kinds of data visualization. In his leisure time Leonid enjoys solving mental puzzles and hiking in the Bay Area with his family.
P.S. The BI Dashboard Formula is officially LIVE NOW! Read our Members’ Testimonials and see why we received a 98% approval rating! Register before November 7th and take 10% off with coupon code: MicoBuddy10.