Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

How to conditionally hide tabs in a container when chart is hidden?

I have a container with a set of charts in it. I have some buttons that set a variable to show or hide some of these charts. When a chart is hidden via the show condition, the tab for that chart is still visible in the container. How can I resolve this?

9 Replies
Gysbert_Wassenaar

Afaik it is not possible to hide the tabs of a container. Why are you using a container anyway if you're already showing/hiding charts with the show condition?


talk is cheap, supply exceeds demand
maxgro
MVP
MVP

Use button (to replace the container tab) + chart instead of container

the graphic result is similar and you can hide/show button and chart at the same time

Not applicable
Author

So it's a little bit tricky to explain. I need to use two variables to determine whether a chart is visible. So on the left I have a row of buttons that control one variable, called MetricsCategory, and along the top there's another row of buttons that controls a varaible MetricsAudience.

So let's say MetricsCategory is Sales. We have a number of sales related charts that we want to show, but if MetricsAudience is Management, we want to show a different set of sales charts than if it were say SalesRep. So I have a set of say 5 Sales charts, and SalesRep may want to see 1-3, but Management just wants to see 2-5. So my idea was to use a container with the show condition of MetricsCategory = Sales, and then have each chart show condition be visible based on the audience.

The problem is managing the real estate. If I have a set of 5 Sales charts that are visible or hidden depending on the audience, how do I know where they should be placed? If they're all next to each other, there will be gaps. I won't know how to dynamically control the layout. I was hoping that a container would just collapse everything into tabs. Does that make sense?

sifatnabil
Specialist
Specialist

The container object is primitive - there is very little customization available on it. You can still achieve this with show conditional in each chart. You can put all 5 charts on top of each other, and set variables accordingly. Remember that when you want to, for example, activate chart 1, you have to deactivate charts 2, 3, 4, and 5 by way of Action->Set Variable. So each chart will have 5 Set Variable actions.

Not applicable
Author

The problem with that is I need multiple charts visible at the same time. So one audience may see 1,2,3 and another 3,4,5, and another 1,3,5

Eric

sifatnabil
Specialist
Specialist

Then you need to note down the Windows login names of each person viewing your document, then show conditional based on their windows login names using the function OSuser().

For example, for your Sales people charts, show conditional on

=match(OSUser(),'domain\Salesperson1','domain\Salesperson2','domain\Salesperson3')

OSUser() returns the windows login name in the form of domain\username.

Not applicable
Author

Either way, having all 5 charts on top of each other doesn't make sense if I need to display multiple at a time. The problem is how do I dynamically lay out charts depending on the variable. Or do I just have to make copies of the same chart and make different layouts for each audience?

Eric

sifatnabil
Specialist
Specialist

Yes you can alternatively create 2 sheets, one with show conditional to all Sales people using OSuser(), the other with Management. The management won't see the Sales sheet, and vice versa.

Gysbert_Wassenaar

You could create a different sheet for each layout. You don't have to make 'hard' copies of the charts. Keep the ctrl+shift keys pressed down and drag the chart to another location or another sheet. That way you created a 'linked' copy of the object. Any change in any one of the linked objects will be reflected in all of them as they're 'views' of the same object.


talk is cheap, supply exceeds demand