tableau / extensions-api

Extensions API sample code and developer docs.
http://tableau.github.io/extensions-api
MIT License
268 stars 251 forks source link

API Behaviour different between Desktop and Server #235

Closed merlijnbuit closed 1 year ago

merlijnbuit commented 5 years ago

Hi devTeam!

I notice unexpected behaviour in Tableau Desktop compared to Tableau Server. Our customer is using Dashboard Usage Extensions to monitor filter actions in dashboards. There is a action filter from Dashboard A to Dashboard B. This is working on Desktop which is unexpected but really handy because this action is really important to register.

On Tableau Server though this is not working. When switching to dashboard B no actions are registered. I also tried to add a parameter action and highlight action on the same sheet in Dashboard A besides the filter action (which switches between dashboards). But those events are also not working.

Best workaround for now is to use a filter action in Dashboard A which filters a hidden sheet to register the click. And a menu action to switch to Dashboard B.

Do you have ideas? Is this actually a 'bug' in Tableau Desktops Engine?

johnDance commented 5 years ago

The good news is that this is related to https://github.com/tableau/extensions-api/issues/143. We have fixed several event notification issues that will be part of 2019.3. In general events will be more reliable for multiple extensions, and also be sent on undo/redo.

Let me see if I understand the setup for this issue. I have a workbook where I have: Dashboard A, contains extension 1 listening to filter events for worksheet 1 Dashboard B, contains extension 2 listening to filter events for worksheet 1

Also on Dashboard A, there is a filter action on select that applies to Dashboard B (and navigates to Dashboard B).

On desktop, you (sometimes) get a filter changed notification on Dashboard B. On server, you do not get a filter changed notification on Dashboard B.

The reason I say sometimes, is that if you have never visited Dashboard B, then the listener is not set up, so when the action takes you to Dashboard B, the extension 2 is initialized. Once you have visited Dashboard B, then any future filter action will trigger the filter changed in Dashboard B also.

In server, the extension is initialized every time you visit Dashboard B, so you never get the notification. However, you should get the updated value when you query the filter after initialization.

Does this represent your setup, and answer you question? There is no filter notification for changed events that happen before initializeAsync.

Let me know if I missed your setup. Thanks, John

merlijnbuit commented 5 years ago

Thanks for your reply!

This is the use case: dashboard_usage_multiple_dashboards

In this example: we want to track the click on a State with Dashboard Usage. But we can't capture the event because we leave Dashboard A and go to Dashboard B. The extension on Dashboard B is not initialized yet and Dashboard A is not capturing anymore because we left it.

We tried several things such as a hidden sheet, hover action + click action and a extra button. Not working or a bad user experience.

Hope this helps!

SiebeG commented 4 years ago

Hi @johnDance

You may have to re-open this ticket/issue since Tableau Server (Tableau Online) does not register the dashboard action when you use the GoTo Dashboard action before it redirects to the new dashboard/sheet. We store the event of the dashboard action but it never gets stored because the GoTo action will have the user leave the dashboard and the extension does not get the important event of the dashboard action.

I can confirm it works in Tableau Desktop (2019.3 and higher) but on tableau Server the registration of the selection doe snot take place. I tested in all versions up to 2020.2 (Tableau Online) and i cannot get the dashboard action to be registered before the GoTo sheet/dashboard action will redirect to the new dashboard/sheet.

This is an urgent issue for us since one of our clients has indicated not to continue their subscription on the extension if this will not be fixed.

johnDance commented 4 years ago

Copied from: https://github.com/tableau/extensions-api/issues/335 We will use this thread for discussion and follow-up.

Hi @SiebeG Sorry for the delay. I was out of the office. Just to confirm... you register for selection events. You have a selection action that is a GoTo Sheet action. When you make the selection, the GoTo Sheet action fires before the extension gets notified of the selection. Do I have your scenario correct? What type of work is the extension doing as part of the selection notification?

Please confirm, and we will look into the issue.

Thank you, John

SiebeG commented 4 years ago

Hi @johnDance

That is a correct interpretation of the issue. It malfunctions on Tableau Server / Tableau Online. When I use the GoTo action in Tableau Desktop the registration of the selection is registered before the goto action is executed.

The extension monitors user interactions (with filters, parameters, mark selections and dashboard actions) in the dashboard. It is important to know what selection a user clicks to trigger the GoTo action. With the selection we can set a filter on the target dashboard but without the registration of the selection we never know what selection the user made in the originating dashboard.

PS in Tableau Desktop 2019.3 and higher it does register the selection before executing the GoTo action.

johnDance commented 4 years ago

Hello @SiebeG I just wanted to give you an update. We have determined the root cause of this problem. It is in the server command handling outside of extensions. Our team is in communication with the server team and we are discussing how to fix this. We will update you again as we get more information. Thanks, John

SiebeG commented 4 years ago

Hi @johnDance

Thank you very much for investigating this issue and exposing the cause of the issue. Is there any time schedule to expect a solution?

Regards Siebe

SiebeG commented 4 years ago

Hi @johnDance and @benlower is this fix already scheduled to be part of a release? Thanx in advance!

regards Siebe

SiebeG commented 4 years ago

Hi @johnDance thank you for fixing the 10K bug it appears to be working in desktop/server 2020.2.4 and online 2020.3. Ddi you also address this issue with the listening to events on Tableau Server?

_

Hello @SiebeG I just wanted to give you an update. We have determined the root cause of this problem. It is in the server command handling outside of extensions. Our team is in communication with the server team and we are discussing how to fix this. We will update you again as we get more information. Thanks, John

_

johnDance commented 4 years ago

@SiebeG - Sorry for the slow reply. I thought another team member had replied to you. We have hit a roadblock on handling the event in server. The architecture of how the page navigation works doesn't allow us to catch this event in a reliable manner before the current page is torn down. We don't have any great ideas on how to fix it. My best idea would be for the extension API to have a GoToSheet command (which has been a previous request), and then it could register the current selection and then fire the actual go to sheet command. John

SiebeG commented 4 years ago

@johnDance I am very sorry to hear that. The strange thing is that you do manage the event in Tableau Desktop but not on Server/Online.

Can you already provide a planning/roadmap for expanding the Extensions API with a "GotToSheet" command?

johnDance commented 3 years ago

@SiebeG - Sorry this got buried in my inbox, and I am just digging out. We are doing a lot of work with our integration with Salesforce and Einstein Discovery that was just demonstrated at TC20. I'm pushing to get GoToSheet in the 2021 plan. John

SiebeG commented 3 years ago

Thank you for following up. I noticed the Einstein integration, this helps boost the use of extensions! Please let me know the expected date for integrating the GoTo sheet event in the Extensions API. This would really help a lot in navigating the dashboards.