Some dashboards have a lot going on and maybe a simple loading spinner doesn’t cut it. One solution would be to use a loading bar. If you have several queries, you could count the number of them that have returned data to update the overall progress. Or, if you know roughly the speed to update the dashboard, you can just ballpark the loading progress using the SAP Dashboards / Xcelsius history component. Want to know more?
– Push button to start/stop the loading simulation
– Rectangle for loading message background
– Text box for the loading title
– Horizontal Progress Bar (with ticks turned off, and all text hidden) – I used a light blue for the color
– Finally, a smaller text box below the progress bar to display dynamic messages
The history component moves the value from cell C6 to B6. The formula for cell C6 [=IF(B4>0, B6+1, 0)] means that as long as the loading is active, it increments the current value in cell B6. If the loading isn’t active, the history component continues to push a 0 to cell B6. I currently have the history component set to update on a 0.3 second interval.
The progress bar uses cell B6 as the data and cell E6 as the max value. E6 is a hard-coded value and could be changed to represent the approximate load time of your dashboard. Remember, this represents about 33 seconds because the history component is changing every 0.3 seconds.
Finally, I have created a reference table off to the right that has some dynamic loading messages that are triggered at specific intervals. To read those messages, cell C8 matches the current loading increment from cell B4 against that table on the right (cells G6:G15 …extra room to grow). The match doesn’t have a zero at the end, so it finds the closest match and not an exact match. Then the Offset formula looks at cell H5 and references down the number of rows returned by the Match. Since I don’t have any messages starting at zero, it starts with an error. While there are a number of ways to handle this (and many more efficiently), I put an ISERROR test around the match to take care of this. This also helps catch any other unforeseen problems because I would rather have no message than an error displayed.