Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions _includes/docs_menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,30 +24,34 @@
<li>
<a href="{{ site.baseurl }}/docs/trex_manifest.html">Tableau Extension Manifest File</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_reload.html">What Happens When you Reload an Extension</a>
</li>
<li class="nav-header">Basic How To</li>
<li>
<li>
<a href="{{ site.baseurl }}/docs/trex_getdata.html">Get Data from the Dashboard</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_configure.html">Add a Configuration Popup Dialog</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_reload.html">What Happens When you Reload an Extension</a>
<li>
<a href="{{ site.baseurl }}/docs/trex_show_hide.html">Show and Hide Objects in the Dashboard</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_events.html">Events and Event Handling</a>
</li>
<li class="nav-header">Security and Data Access</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_security.html">Security and Tableau Extensions</a>
<a href="{{ site.baseurl }}/docs/trex_security.html">HTTPS and Tableau Extensions</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_data_access.html">Accessing Underlying Data</a>
</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_xss_guidance.html">Cross-Site Scripting and Extension Security</a>
</li>

<li class="nav-header">Debugging and Troubleshooting</li>
</li>
<li class="nav-header">Debugging and Troubleshooting</li>
<li>
<a href="{{ site.baseurl }}/docs/trex_debugging.html">Debug Extensions in Tableau Desktop</a>
</li>
Expand Down
Binary file added assets/dashboard_layout_obj.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ext_visibility_err_console.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ext_visibility_error_dialog.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion docs/trex_debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ Debugging an extension involves starting Tableau with a command option to enable

---

## Download the Chromium Browser
## Download the Chromium Browser (Tableau 2018.2, 2018.3)

<div class="alert alert-info"><b>Note </b> If you are using Tableau 2019.1, you no longer need to use the Chromium browser. You can now debug extensions in Tableau Desktop using the latest versions of Chrome. If you are using Tableau 2018.2 or 2018.3, you still need the specific version of the Chromium browser for debugging.</div>

In order to actually do any debugging, you'll need to use a Chromium-based browser (Chromium is the open-source version of Chrome). You can use Chrome, but because of some version incompatibilities in the debugging protocol, we recommend using build 47.0.2526.0 of Chromium, which matches the version of the browser running inside Tableau (just download and unzip the file).
* [Chromium for Windows (47.0.2526.0)](https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win%2F352221%2Fchrome-win32.zip?generation=1443839123039000&alt=media)
Expand Down
48 changes: 48 additions & 0 deletions docs/trex_error_handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,51 @@ tableau.extensions.ui.displayDialogAsync(args... ).then((args... ) => {

```

## Handle Extensions API errors when the dashboard is not visible

In Tableau Server or Tableau Online version 2018.3 and later, when the browser window is not visible (that is, when the browser window Tableau is running in is minimized or in the background), the Extensions API method calls are blocked and an error object is returned. If you have code that might run when the dashboard is not visible, you should add code to check if the window is visible so that you can handle the error. If you are using `tableau-extensions-1.1.0.js` or later, the error code returned in this case is `VISIBILITY_ERROR`.

### What happens when the error occurs

This error can occur if an Extensions API method is called while Tableau is not in the foreground. For example, this could happen if the user switches tabs or minimizes the browser window and there is a timer that triggers the API call. When the user subsequently returns to the dashboard view, an error dialog box will appear.

![]({{site.baseurl}}/assets/ext_visibility_error_dialog.png)


### Identifying the error as a visibility-error

To find out the cause, you can use the debugging tools in the browser. If you check the Console window, in Chrome for example, you might see an error message similar to the following.

![]({{site.baseurl}}/assets/ext_visibility_err_console.png)


### Add a check for visibility and add an event listener

The Extensions API methods are intended to be used in scenarios where some manual interaction is required. However, there might be cases where a method is called on an interval, or there is a delay in execution, and the browser window that contains the extension is no longer visible when the method call is made. In these cases, you could use the [Page Visibility API](https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API) and an event handler to avoid having your users encounter the `visibility-error`.


The following example shows how this error could be handled using an event listener for `visibilitychange`. You can create your own `visibilityhandlermethod` method if you need to wrap your Extensions API calls when the browser window is visible.


```javascript


document.addEventListener('visibilitychange', visibilityhandlermethod, false);


//
function visibilityhandlermethod() {
if (document.hidden) {
// do something while you pause the extension execution
} else {
// do stuff
// call the Extensions API
}
}






```
4 changes: 2 additions & 2 deletions docs/trex_events.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ title: Events and Event Handling
layout: docs
---

In Tableau dashboard extensions, event handling operates at the sheet level. In the Extensions API, the `sheet` is an abstract class that both `dashboard` and `worksheet` inherit from. You can add event listeners on individual sheets in a dashboard or on the entire dashboard itself. If you have an event listener, when the specified event is raised, the callback method you provide is called to handle the event. You can use event listeners to trigger specific actions based upon dashboard interactions.
In Tableau dashboard extensions, event handling operates at the sheet level. In the Extensions API, the `sheet` is an abstract class that both `dashboard` and `worksheet` inherit from. You can add event listeners on individual sheets in a dashboard. However, you can't add an event listener on the entire dashboard itself. If you have an event listener, when the specified event is raised, the callback method you provide is called to handle the event. You can use event listeners to trigger specific actions based upon worksheet interactions.

The Tableau Extension API supports a range of events and provides methods for adding and removing event listeners. To manage the event listener, each sheet has an *event listener manager*. The manager provides a way to add or remove multiple events on sheets independently.
The Tableau Extension API supports a range of events and provides methods for adding and removing event listeners. To manage the event listener, each sheet has an *event listener manager*. The manager provides a way to add or remove multiple events on sheets independently.

For example, a marks selection event can be raised for a particular sheet in a dashboard. Because a dashboard is also a sheet, a marks selection event could be raised on any marks selection in the entire dashboard. Each event contains an anonymous object with information pertaining to that event, such as the type or name of event and sheet the event occurred on.
Listening to an event is done by calling the `addEventListener(type, callback)` method and passing in a callback function to handle the event.
Expand Down
3 changes: 2 additions & 1 deletion docs/trex_getstarted.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ The Tableau Extensions API allows developers to create extensions for Tableau. T

This section will take you through the process of setting up your environment to use one of the sample dashboard extensions. Using one of the sample extensions is a great way to learn and great way to get started developing your own extensions. In this section, you will start a simple web server on your computer to host the sample. You can use the same process for hosting the extension when you start developing your own.

| If you are looking for information about how to add an extension to a dashboard in Tableau, see [Use Dashboard Extensions](https://onlinehelp.tableau.com/current/pro/desktop/en-us/dashboard_extensions.htm){:target="_blank"}. If you are looking for extensions that you can use, see the [Tableau Extension Gallery](https://extensiongallery.tableau.com/){:target="_blank"}.
<div class="alert alert-info"><b>Note</b> If you are looking for information about how to add an extension to a dashboard in Tableau, see <a href="https://onlinehelp.tableau.com/current/pro/desktop/en-us/dashboard_extensions.htm" target="_blank">Use Dashboard Extensions</a>. If you are looking for extensions that you can use, see the <a href="https://extensiongallery.tableau.com/" target="_blank">Tableau Extension Gallery</a>.
</div>



Expand Down
13 changes: 12 additions & 1 deletion docs/trex_known_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ For information about what is new or has changed in each release, see the [Relea

### HTML drop-down menus in popup dialog windows

- HTML drop-down menus in popup dialog windows do not work as expected on MacOS. Users will not be able to select menu items using the mouse. They can select items with the cursor keys. To avoid issues on MacOS, use radio buttons or another method for user selection in the popup dialog.
- **Fixed in Tableau 2019.1** HTML drop-down menus in popup dialog windows do not work as expected on MacOS. Users will not be able to select menu items using the mouse. They can select items with the cursor keys. To avoid issues on MacOS, use radio buttons or another method for user selection in the popup dialog.

### Decimal separators in parameters

Expand All @@ -29,3 +29,14 @@ For information about what is new or has changed in each release, see the [Relea

When an extension needs full data access and the user does not have full data permission on the workbook, Tableau currently allows the extension to run. However, Tableau will throw a console error when the extension calls `getUnderlyingData()` method. See [Handle full data access and permission errors]({{ site.baseurl }}/docs/trex_getdata.html#handle-full-data-access-and-permission-errors).


### Tableau Extensions API library version 1.0.0

If you are debugging your extension, you might see this message in the Debugging Tools console window if you are using the released version of the 1.0.0 library (for example, `tableau-extensions-1.0.0.js`) with a version of Tableau that is newer than Tableau 2018.2.

```
This is an alpha version of the Extensions API. Please upgrade to an official release.

```

You can safely ignore this warning. However, if you are using the 1.0.0 library, be sure to upgrade to the latest version, or use or `tableau-extensions-1.latest.js`, so that you always pick up the most recent update of that version of the library when it becomes available.
45 changes: 42 additions & 3 deletions docs/trex_release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,49 @@ See also: [Known Issues]({{site.baseurl}}/docs/trex_known_issues.html)

----

### Tableau 2019.1
*February 2019*

* Tableau Extensions API library: `tableau-extensions-1.1.0.js` <br>(download or clone the Extensions API repository on [GitHub](https://github.com/tableau/extensions-api){:target="_blank"}) <br/>

* Download [Tableau Desktop 2019.1](https://www.tableau.com/support/releases){:target="_blank"} or [Tableau Server 2019.1](https://www.tableau.com/support/releases/server){:target="_blank"}

Changes in this release:

* Upgrade to the Chromium browser, which allows modern web technologies to be used with dashboard extensions (HTML 5, CSS, native ES6 support). Tableau 2019.1 now uses Qt 5.10, The Qt WebEngine is based upon Chromium 61.0.3163.99, with additional security fixes from newer versions. With this update, you no longer need to download and use a specific version of Chromium (47.0.2526.0) to debug dashboard extensions on Tableau Desktop. You can now debug extensions in Tableau Desktop using Chrome.

* Show and hide capabilities for extensions (now you see it, now you don't). For more information, see [Show and Hide Objects in the Dashboard]({{site.baseurl}}/docs/trex_show_hide.html).

* Starting in Tableau Server and Tableau Online 2019.1, when the dashboard is not visible (minimized or in the background), Extensions API method calls are blocked. If you have code that might run when the browser window is not visible, you should add code to check the state of the window Tableau is running in and then handle that condition appropriately. If you don't check the state, and your extension makes an API call, a `"visibility-error"` could be thrown because of the blocked state. Be sure to use the latest version of the library (`tableau-extensions-1.1.0.js`). For more information, see [Handle Extensions API errors when the dashboard is not visible]({{site.baseurl}}/docs/trex_error_handling.html#handle-extensions-api-errors-when-the-dashboard-is-not-visible).



Bugs fixed in this release:

* Select dropdown fixed on Macintosh. (TFSID 758234)
* The `applyRangeFilterAsync` method allows full range of options, and doesn't break when a user selects "all". (TFSID 766488)
* Fixed “Access is denied” error encountered when switching from a sheet containing an extension to any other sheet on a tabbed workbook on server (fixed in Tableau 2019.1, 2018.3.2, 2018.2.5).

* Full support for IE11 now starts in 2018.2.3, 2018.2.3.

* Fixed in Tableau Desktop 2019.1: Extension API synchronization issue.<br/>
In previous version of Tableau Desktop (2018.2, 2018.3), the execution of extension API calls was not properly synchronized with longer running actions. These issues would most often occur with a worksheet that took multiple seconds to refresh. This could manifest itself in various ways:
* The `intializeAsync` method could return the promise before the dashboard was properly loaded in Tableau.
* A `FilterChanged` event could be triggered before the data was actually refreshed. As a result, calls to `getSummaryDataAsync` could return the data before the filter was changed.
* If an extension API was called from a `setInterval` or similar function, while other actions were going on, Tableau could occasionally crash.

Customers who upgrade to Tableau Desktop 2019.1 will not have these synchronization issues with extensions.







---

### Tableau 2018.3
*November, 2018*
*November 2018*

- Tableau Extensions API library: `tableau-extensions-1.0.0.js` *No change for this release*<br>(download or clone the Extensions API repository on [GitHub](https://github.com/tableau/extensions-api){:target="_blank"})

Expand All @@ -33,7 +72,7 @@ New in this release:


### TC18
*October, 2018*
*October 2018*

- Tableau Extensions API library: `tableau-extensions-1.0.0.js` *No change for this release*<br>

Expand All @@ -55,7 +94,7 @@ Bugs fixed in this release:
---

### Tableau 2018.2
*July, 2018*
*July 2018*

Release of the Tableau Extensions API

Expand Down
8 changes: 4 additions & 4 deletions docs/trex_security.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
title: Security and Tableau Extensions
title: HTTPS and Tableau Extensions
layout: docs
---

A Tableau extension is essentially a web application that runs inside a Tableau dashboard. The extension can interact with other components in the dashboard and potentially has access to the visible and underlying data in the workbook (through a well-defined API). In addition, the web application can be running code on a server that sits outside of the domain where Tableau Server or Tableau Desktop are located. For security, Tableau requires the following:

- All extensions must use the HTTP Secure (HTTPS) protocol.
* All extensions must use the HTTP Secure (HTTPS) protocol.

- To run on Tableau Server, the URL of the extension must be added to a safe list. The Tableau Server site administrator manages this list.
* To run on Tableau Server, the URL of the extension must be added to a safe list. The Tableau Server site administrator manages this list.

- By default, anyone using the extension will be prompted and asked to allow or deny the extension access. The Tableau Server site administrator can control whether the prompt appears for each extension.
* By default, anyone using the extension will be prompted and asked to allow or deny the extension access. The Tableau Server site administrator can control whether the prompt appears for each extension.


This section covers options for setting up your extension to use HTTPS. For information about adding an extension to the safe list on Tableau Server or Tableau Online, or how to configure the prompts to allow or deny access, see [Manage Dashboard Extensions on Tableau Server](https://onlinehelp.tableau.com/current/server/en-us/dashboard_extensions_server.htm) or [Manage Dashboard Extensions on Tableau Online](https://onlinehelp.tableau.com/current/online/en-us/dashboard_extensions_server.htm) for more information.
Expand Down
Loading