From add9e3f2eded920072f33f8d30658810b832919d Mon Sep 17 00:00:00 2001 From: Brendan Lee Date: Mon, 12 Feb 2018 14:37:01 -0800 Subject: [PATCH 1/7] New sample and doc updates for 0.9.0 release --- Samples/DataSources/DataSources.trex | 2 +- Samples/DataSources/datasources.html | 2 +- Samples/DataSources/datasources.js | 8 +- Samples/Filtering/Filtering.trex | 2 +- Samples/Filtering/filtering.html | 2 +- Samples/Parameters/Parameters.trex | 2 +- Samples/Parameters/parameters.html | 2 +- Samples/Settings/Settings.trex | 2 +- Samples/Settings/settings.html | 2 +- Samples/Settings/settings.js | 4 +- Samples/UINamespace/uiNamespace.html | 40 + Samples/UINamespace/uiNamespace.js | 109 + Samples/UINamespace/uiNamespace.trex | 19 + Samples/UINamespace/uiNamespaceDialog.html | 40 + Samples/UINamespace/uiNamespaceDialog.js | 126 + Tutorial/Part_1/MarksSelection.html | 2 +- Tutorial/Part_2/MarksSelection.html | 2 +- Tutorial/Part_3/MarksSelection.html | 2 +- Tutorial/Part_4/MarksSelection.html | 2 +- Tutorial/Part_6/MarksSelection.html | 2 +- Tutorial/ReactVersion/src/index.html | 2 +- docs/assets/js/search.js | 2 +- docs/enums/errorcodes.html | 174 +- docs/enums/fieldaggregationtype.html | 78 +- docs/enums/fieldroletype.html | 6 +- docs/enums/filterdomaintype.html | 4 +- docs/enums/filternulloption.html | 6 +- docs/enums/filtertype.html | 8 +- docs/enums/filterupdatetype.html | 8 +- docs/enums/marktype.html | 22 +- docs/enums/parametervaluetype.html | 6 +- docs/enums/periodtype.html | 16 +- docs/enums/quicktablecalctype.html | 24 +- docs/enums/selectionupdatetype.html | 6 +- docs/enums/sheettype.html | 6 +- docs/enums/sortdirection.html | 4 +- docs/enums/tableaueventtype.html | 25 +- docs/enums/trendlinemodeltype.html | 8 +- docs/globals.html | 12 +- docs/index.html | 12 +- docs/interfaces/analyticsobject.html | 4 +- docs/interfaces/dashboard.html | 12 +- docs/interfaces/dialogoptions.html | 1052 + docs/interfaces/eventlistenermanager.html | 12 +- docs/interfaces/extensions.html | 18 +- docs/interfaces/filterchangedevent.html | 6 +- docs/interfaces/marksselectedevent.html | 2 +- docs/interfaces/parameter.html | 12 +- docs/interfaces/parameterchangedevent.html | 2 +- docs/interfaces/settingschangedevent.html | 1078 + docs/interfaces/sheet.html | 12 +- docs/interfaces/tableauerror.html | 1107 + docs/interfaces/tableauevent.html | 5 +- docs/interfaces/tableausheetevent.html | 2 +- docs/interfaces/tableauworksheetevent.html | 2 +- docs/interfaces/worksheet.html | 12 +- .../tableau-extensions-0.8.0.js | 0 lib/tableau-extensions-0.7.0.js | 24229 --------------- lib/tableau-extensions-0.9.0.js | 25175 ++++++++++++++++ 59 files changed, 29012 insertions(+), 24531 deletions(-) create mode 100644 Samples/UINamespace/uiNamespace.html create mode 100644 Samples/UINamespace/uiNamespace.js create mode 100644 Samples/UINamespace/uiNamespace.trex create mode 100644 Samples/UINamespace/uiNamespaceDialog.html create mode 100644 Samples/UINamespace/uiNamespaceDialog.js create mode 100644 docs/interfaces/dialogoptions.html create mode 100644 docs/interfaces/settingschangedevent.html create mode 100644 docs/interfaces/tableauerror.html rename lib/{ => previous}/tableau-extensions-0.8.0.js (100%) delete mode 100644 lib/tableau-extensions-0.7.0.js create mode 100644 lib/tableau-extensions-0.9.0.js diff --git a/Samples/DataSources/DataSources.trex b/Samples/DataSources/DataSources.trex index 26c18314..04edff9c 100644 --- a/Samples/DataSources/DataSources.trex +++ b/Samples/DataSources/DataSources.trex @@ -5,7 +5,7 @@ DataSources Sample - 1.1 + 0.8 http://localhost:8765/Samples/DataSources/datasources.html diff --git a/Samples/DataSources/datasources.html b/Samples/DataSources/datasources.html index 44455e0f..75592594 100644 --- a/Samples/DataSources/datasources.html +++ b/Samples/DataSources/datasources.html @@ -15,7 +15,7 @@ - + diff --git a/Samples/DataSources/datasources.js b/Samples/DataSources/datasources.js index 525d21f9..33c92939 100644 --- a/Samples/DataSources/datasources.js +++ b/Samples/DataSources/datasources.js @@ -51,14 +51,14 @@ // Displays a modal dialog with more details about the given dataSource. function showModal (dataSource) { - var modal = $('#infoModal'); + let modal = $('#infoModal'); $('#nameDetail').text(dataSource.name); $('#idDetail').text(dataSource.id); $('#typeDetail').text((dataSource.isExtract) ? 'Extract' : 'Live'); // Loop through every field in the dataSource and concat it to a string. - var fieldNamesStr = ''; + let fieldNamesStr = ''; dataSource.fields.forEach(function (field) { fieldNamesStr += field.name + ', '; }); @@ -69,7 +69,7 @@ dataSource.getConnectionSummariesAsync().then(function (connectionSummaries) { // Loop through each connection summary and list the connection's // name and type in the info field - var connectionsStr = ''; + let connectionsStr = ''; connectionSummaries.forEach(function (summary) { connectionsStr += summary.name + ': ' + summary.type + ', '; }); @@ -80,7 +80,7 @@ dataSource.getActiveTablesAsync().then(function (activeTables) { // Loop through each table that was used in creating this datasource - var tableStr = ''; + let tableStr = ''; activeTables.forEach(function (table) { tableStr += table.name + ', '; }); diff --git a/Samples/Filtering/Filtering.trex b/Samples/Filtering/Filtering.trex index 82bbaaf5..12729388 100644 --- a/Samples/Filtering/Filtering.trex +++ b/Samples/Filtering/Filtering.trex @@ -5,7 +5,7 @@ Filtering Sample - 1.1 + 0.8 http://localhost:8765/Samples/Filtering/filtering.html diff --git a/Samples/Filtering/filtering.html b/Samples/Filtering/filtering.html index f51628bf..acecec3b 100644 --- a/Samples/Filtering/filtering.html +++ b/Samples/Filtering/filtering.html @@ -15,7 +15,7 @@ - + diff --git a/Samples/Parameters/Parameters.trex b/Samples/Parameters/Parameters.trex index 597f9e90..bb9e79e1 100644 --- a/Samples/Parameters/Parameters.trex +++ b/Samples/Parameters/Parameters.trex @@ -5,7 +5,7 @@ Parameters Sample - 1.1 + 0.8 http://localhost:8765/Samples/Parameters/parameters.html diff --git a/Samples/Parameters/parameters.html b/Samples/Parameters/parameters.html index 781db8f9..0a326303 100644 --- a/Samples/Parameters/parameters.html +++ b/Samples/Parameters/parameters.html @@ -15,7 +15,7 @@ - + diff --git a/Samples/Settings/Settings.trex b/Samples/Settings/Settings.trex index db13cebc..42777c64 100644 --- a/Samples/Settings/Settings.trex +++ b/Samples/Settings/Settings.trex @@ -5,7 +5,7 @@ Settings Sample - 1.1 + 0.8 http://localhost:8765/Samples/Settings/settings.html diff --git a/Samples/Settings/settings.html b/Samples/Settings/settings.html index f14f0a7a..b6b776bd 100644 --- a/Samples/Settings/settings.html +++ b/Samples/Settings/settings.html @@ -14,7 +14,7 @@ - + diff --git a/Samples/Settings/settings.js b/Samples/Settings/settings.js index 892bf9d0..43ad33f8 100644 --- a/Samples/Settings/settings.js +++ b/Samples/Settings/settings.js @@ -52,8 +52,8 @@ } function saveSetting () { - var settingKey = $('#keyInput').val(); - var settingValue = $('#valueInput').val(); + let settingKey = $('#keyInput').val(); + let settingValue = $('#valueInput').val(); tableau.extensions.settings.set(settingKey, settingValue); diff --git a/Samples/UINamespace/uiNamespace.html b/Samples/UINamespace/uiNamespace.html new file mode 100644 index 00000000..cf1e00cb --- /dev/null +++ b/Samples/UINamespace/uiNamespace.html @@ -0,0 +1,40 @@ + + + + + + + Settings Sample + + + + + + + + + + + + + + + +
+

+

+
+ No refreshes currently running, hit play. + +
+

+
+ + diff --git a/Samples/UINamespace/uiNamespace.js b/Samples/UINamespace/uiNamespace.js new file mode 100644 index 00000000..758a73c1 --- /dev/null +++ b/Samples/UINamespace/uiNamespace.js @@ -0,0 +1,109 @@ +'use strict'; + +/** + * UINamespace Sample Extension + * + * This sample extensions demonstrates how to use the UI namespace + * to create a popup dialog with additional UI that the user can interact with. + * The content in this dialog is actually an extension as well (see the + * uiNamespaceDialog.js for details). + * + * This sample is an extension that auto refreshes datasources in the background of + * a dashboard. The extension has little need to take up any dashboard space, except + * when the user needs to adjust settings, so the UI namespace is used for that. + */ + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(function () { + const defaultIntervalInMin = '5'; + let refreshInterval; + let activeDatasourceIdList = []; + + $(document).ready(function () { + tableau.extensions.initializeAsync().then(function() { + $('#play').click(configure); + $('#pause').click(pause); + + // This event allows for the parent extension and popup extension to keep their + // settings in sync. This event will be triggered any time a setting is + // changed for this extension, in the parent or popup (i.e. when settings.saveAsync is called). + tableau.extensions.settings.addEventListener(tableau.TableauEventType.SettingsChanged, (settingsEvent) => { + updateExtensionBasedOnSettings(settingsEvent.newSettings) + }); + }); + }); + + function configure() { + const popupUrl = 'http://localhost:8765/Samples/UINamespace/uiNamespaceDialog.html'; + + /** + * This is the API call that actually displays the popup extension to the user. The + * popup is always a modal dialog. The only required parameter is the URL of the popup. + * This must be the same domain and scheme as the parent extension. + * + * The developer can optionally control the initial size of the extension by passing in + * an object with height and width properties. The developer can also pass a string as the + * 'initial' payload to the popup extension. This payload is made available immediately to + * the popup extension. In this example, the value '5' is passed, which will serve as the + * default interval of refresh. + */ + tableau.extensions.ui.displayDialogAsync(popupUrl, defaultIntervalInMin, { height: 500, width: 500 }).then((closePayload) => { + // The promise is resolved when the dialog has been expectedly closed, meaning that + // the popup extension has called tableau.extensions.ui.closeDialog. + $('#inactive').hide(); + $('#active').show(); + + // The close payload is returned from the popup extension via the closeDialog method. + $('#interval').text(closePayload); + setupRefreshInterval(closePayload); + }).catch((error) => { + // One expected error condition is when the popup is closed by the user (meaning the user + // clicks the 'X' in the to pright of the dialog). This can be checked for like so: + switch(error.errorCode) { + case tableau.ErrorCodes.DialogClosedByUser: + console.log("Dialog was closed by user"); + break; + default: + console.error(error.message); + } + }); + } + + /** + * This function sets up a JavaScript interval based on the time interval selected + * by the user. This interval will refresh all selected datasources. + */ + function setupRefreshInterval(interval) { + refreshInterval = setInterval(function() { + let dashboard = tableau.extensions.dashboardContent.dashboard; + dashboard.worksheets.forEach(function (worksheet) { + worksheet.getDataSourcesAsync().then(function (datasources) { + datasources.forEach(function (datasource) { + if (activeDatasourceIdList.indexOf(datasource.id) >= 0) { + datasource.refreshAsync(); + } + }); + }); + }); + }, interval*60*1000); + } + + /** + * Called when the use clicks the pause button to terminate auto refreshes. + */ + function pause() { + clearInterval(refreshInterval); + $('#active').hide(); + $('#inactive').show(); + } + + /** + * Helper that is called to set state anytime the settings are changed. + */ + function updateExtensionBasedOnSettings(settings) { + if (settings.selectedDatasources) { + activeDatasourceIdList = JSON.parse(settings.selectedDatasources); + $('#datasourceCount').text(activeDatasourceIdList.length); + } + } +})(); diff --git a/Samples/UINamespace/uiNamespace.trex b/Samples/UINamespace/uiNamespace.trex new file mode 100644 index 00000000..1e715305 --- /dev/null +++ b/Samples/UINamespace/uiNamespace.trex @@ -0,0 +1,19 @@ + + + + en_US + + UI Namespace Sample + + 0.9 + + http://localhost:8765/Samples/UINamespace/uinamespace.html + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== + + + + UI Namespace Sample + + + diff --git a/Samples/UINamespace/uiNamespaceDialog.html b/Samples/UINamespace/uiNamespaceDialog.html new file mode 100644 index 00000000..a5c19b28 --- /dev/null +++ b/Samples/UINamespace/uiNamespaceDialog.html @@ -0,0 +1,40 @@ + + + + + + + Settings Sample + + + + + + + + + + + + + + + +
+

Auto Data Source Refresh Extension

+

+ This Extension refreshes the selected datasources at the selected interval. +

+
+ +
Apply to these datasources:
+
+
+
Refresh interval in minutes:
+ + +
+ +
+ + diff --git a/Samples/UINamespace/uiNamespaceDialog.js b/Samples/UINamespace/uiNamespaceDialog.js new file mode 100644 index 00000000..477b9e60 --- /dev/null +++ b/Samples/UINamespace/uiNamespaceDialog.js @@ -0,0 +1,126 @@ +'use strict'; + +/** + * UINamespace Sample Extension + * + * This is the popup extension portion of the UINamespace sample, please see + * uiNamespace.js in addition to this for context. This extension is + * responsible for collecting configurating settings from the user and communicating + * that info with the parent extension. + * + * This sample demonstrates two ways to do that: + * 1) The suggested and most common method is to store the information + * via the settings namespace. The parent can subscribe to notifications when + * the settings are updated, and collect the new info accordingly. + * 2) The popup extension can receive and send a string payload via the open + * and close payloads of initializeDialogAsync and closeDialog. This is useful + * for information that does not need to be persisted into settings. + */ + + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(function () { + /** + * This extension collects the IDs of each datasource the user is interested in + * and stores this information in settings when the popup is closed. + */ + const datasourcesSettingsKey = 'selectedDatasources'; + let selectedDatasources = []; + + $(document).ready(function () { + // The only difference between an extension in a dashboard and an extension + // running in a popup is that the popup extension must use the method + // initializeDialogAsync instead of initializeAsync for initialization. + // This has no affect on the development of the extension but is used internally. + tableau.extensions.initializeDialogAsync().then(function (openPayload) { + // The openPayload sent from the parent extension in this sample is the + // default time interval for the refreshes. This could alternatively be stored + // in settings, but is used in this sample to demonstrate open and close payloads. + $('#interval').val(openPayload); + $('#closeButton').click(closeDialog); + + let dashboard = tableau.extensions.dashboardContent.dashboard; + let visibleDatasources = []; + selectedDatasources = parseSettingsForActiveDataSources(); + + // Loop through datasources in this sheet and create a checkbox UI + // element for each one. The existing settings are used to + // determine whether a datasource is checked by default or not. + dashboard.worksheets.forEach(function (worksheet) { + worksheet.getDataSourcesAsync().then(function (datasources) { + datasources.forEach(function (datasource) { + let isActive = (selectedDatasources.indexOf(datasource.id) >= 0); + + if (visibleDatasources.indexOf(datasource.id) < 0) { + addDataSourceItemToUI(datasource, isActive); + visibleDatasources.push(datasource.id); + } + }); + }); + }); + }); + }); + + /** + * Helper that parses the settings from the settings namesapce and + * returns a list of IDs of the datasources that were previously + * selected by the user. + */ + function parseSettingsForActiveDataSources() { + let activeDatasourceIdList = []; + let settings = tableau.extensions.settings.getAll(); + if (settings.selectedDatasources) { + activeDatasourceIdList = JSON.parse(settings.selectedDatasources); + } + + return activeDatasourceIdList; + } + + /** + * Helper that updates the internal storage of datasource IDs + * any time a datasource checkbox item is toggled. + */ + function updateDatasourceList(id) { + let idIndex = selectedDatasources.indexOf(id); + if (idIndex < 0) { + selectedDatasources.push(id); + } else { + selectedDatasources.splice(idIndex, 1); + } + } + + /** + * UI helper that adds a checkbox item to the UI for a datasource. + */ + function addDataSourceItemToUI(datasource, isActive) { + let containerDiv = $('
'); + + $('', { + type: 'checkbox', + id: datasource.id, + value: datasource.name, + checked: isActive, + click: function() { updateDatasourceList(datasource.id) } + }).appendTo(containerDiv); + + $('
-
- -

InvalidAggregationFieldName

-
InvalidAggregationFieldName: = "invalid-aggregation-field-name"
- -
-
-

An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales".

-
-
-
-
- -

InvalidDateParameter

-
InvalidDateParameter: = "invalid-date-parameter"
- -
-
-

An invalid date was specified in a method that required a date parameter.

-
-
-

InvalidDomainDialog

InvalidDomainDialog: = "invalid-dialog-domain"
-
-
-

A dialog must first launch to, and send messages from, the same domain as the parent Extensions.

-
-
-
-
- -

InvalidFilterFieldName

-
InvalidFilterFieldName: = "invalid-filter-field-name"
- -
-
-

A filter operation was attempted on a field that does not exist in the data source.

-
-
-
-
- -

InvalidFilterFieldValue

-
InvalidFilterFieldValue: = "invalid-filter-field-value"
-
-

A filter operation was attempted using a value that is the wrong data type or format.

+

A dialog must start on the same domain as the parent extenion.

@@ -1142,7 +1066,7 @@

InvalidParameter

InvalidParameter: = "invalid-parameter"
@@ -1152,62 +1076,62 @@

InvalidParameter

- -

InvalidSelectionDate

-
InvalidSelectionDate: = "invalid-selection-date"
+ +

MissingFilter

+
MissingFilter: = "missing-filter"
-

An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field.

+

Can occur if the extension interacts with a filter that has been removed from the worksheet.

- -

InvalidSelectionFieldName

-
InvalidSelectionFieldName: = "invalid-selection-field-name"
+ +

MissingParameter

+
MissingParameter: = "missing-parameter"
-

A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source.

+

Can occur if the extension interacts with a parameter that has been removed from the worksheet.

- -

InvalidSelectionValue

-
InvalidSelectionValue: = "invalid-selection-value"
+ +

ServerError

+
ServerError: = "server-error"
-

An invalid value was specified in a Sheet.selectMarksAsync() call.

+

Internal Server Error

- -

NullOrEmptyParameter

-
NullOrEmptyParameter: = "null-or-empty-parameter"
+ +

SettingSaveInProgress

+
SettingSaveInProgress: = "setting-save-in-progress"
-

A required parameter was not specified, null, or an empty string/array.

+

Developer cannot save settings while another save is still in progress.

@@ -1217,7 +1141,7 @@

UnsupportedEventName

UnsupportedEventName: = "unsupported-event-name"
@@ -1232,7 +1156,7 @@

UnsupportedMethodForDataSourceType

UnsupportedMethodForDataSourceType: = "unsupported-method-for-data-source-type"
diff --git a/docs/enums/fieldaggregationtype.html b/docs/enums/fieldaggregationtype.html index 75a898ac..b29b5cf3 100644 --- a/docs/enums/fieldaggregationtype.html +++ b/docs/enums/fieldaggregationtype.html @@ -1099,7 +1099,7 @@

Attr

Attr: = "attr"
@@ -1109,7 +1109,7 @@

Avg

Avg: = "avg"
@@ -1119,7 +1119,7 @@

Count

Count: = "count"
@@ -1129,7 +1129,7 @@

Countd

Countd: = "countd"
@@ -1139,7 +1139,7 @@

Day

Day: = "day"
@@ -1149,7 +1149,7 @@

End

End: = "end"
@@ -1159,7 +1159,7 @@

Hour

Hour: = "hour"
@@ -1169,7 +1169,7 @@

InOut

InOut: = "in-out"
@@ -1179,7 +1179,7 @@

Kurtosis

Kurtosis: = "kurtosis"
@@ -1189,7 +1189,7 @@

Max

Max: = "max"
@@ -1199,7 +1199,7 @@

Mdy

Mdy: = "mdy"
@@ -1209,7 +1209,7 @@

Median

Median: = "median"
@@ -1219,7 +1219,7 @@

Min

Min: = "min"
@@ -1229,7 +1229,7 @@

Minute

Minute: = "minute"
@@ -1239,7 +1239,7 @@

Month

Month: = "month"
@@ -1249,7 +1249,7 @@

MonthYear

MonthYear: = "month-year"
@@ -1259,7 +1259,7 @@

None

None: = "none"
@@ -1269,7 +1269,7 @@

Qtr

Qtr: = "qtr"
@@ -1279,7 +1279,7 @@

Quart1

Quart1: = "quart1"
@@ -1289,7 +1289,7 @@

Quart3

Quart3: = "quart3"
@@ -1299,7 +1299,7 @@

Second

Second: = "second"
@@ -1309,7 +1309,7 @@

Skewness

Skewness: = "skewness"
@@ -1319,7 +1319,7 @@

Stdev

Stdev: = "stdev"
@@ -1329,7 +1329,7 @@

Stdevp

Stdevp: = "stdevp"
@@ -1339,7 +1339,7 @@

Sum

Sum: = "sum"
@@ -1349,7 +1349,7 @@

TruncDay

TruncDay: = "trunc-day"
@@ -1359,7 +1359,7 @@

TruncHour

TruncHour: = "trunc-hour"
@@ -1369,7 +1369,7 @@

TruncMinute

TruncMinute: = "trunc-minute"
@@ -1379,7 +1379,7 @@

TruncMonth

TruncMonth: = "trunc-month"
@@ -1389,7 +1389,7 @@

TruncQtr

TruncQtr: = "trunc-qtr"
@@ -1399,7 +1399,7 @@

TruncSecond

TruncSecond: = "trunc-second"
@@ -1409,7 +1409,7 @@

TruncWeek

TruncWeek: = "trunc-week"
@@ -1419,7 +1419,7 @@

TruncYear

TruncYear: = "trunc-year"
@@ -1429,7 +1429,7 @@

User

User: = "user"
@@ -1439,7 +1439,7 @@

Var

Var: = "var"
@@ -1449,7 +1449,7 @@

Varp

Varp: = "varp"
@@ -1459,7 +1459,7 @@

Week

Week: = "week"
@@ -1469,7 +1469,7 @@

Weekday

Weekday: = "weekday"
@@ -1479,7 +1479,7 @@

Year

Year: = "year"
diff --git a/docs/enums/fieldroletype.html b/docs/enums/fieldroletype.html index bd628667..c7b99816 100644 --- a/docs/enums/fieldroletype.html +++ b/docs/enums/fieldroletype.html @@ -955,7 +955,7 @@

Dimension

Dimension: = "dimension"
@@ -965,7 +965,7 @@

Measure

Measure: = "measure"
@@ -975,7 +975,7 @@

Unknown

Unknown: = "unknown"
diff --git a/docs/enums/filterdomaintype.html b/docs/enums/filterdomaintype.html index 22587bd7..4f24764e 100644 --- a/docs/enums/filterdomaintype.html +++ b/docs/enums/filterdomaintype.html @@ -951,7 +951,7 @@

Database

Database: = "database"
@@ -966,7 +966,7 @@

Relevant

Relevant: = "relevant"
diff --git a/docs/enums/filternulloption.html b/docs/enums/filternulloption.html index d307217f..9dddddb2 100644 --- a/docs/enums/filternulloption.html +++ b/docs/enums/filternulloption.html @@ -956,7 +956,7 @@

AllValues

AllValues: = "all-values"
@@ -966,7 +966,7 @@

NonNullValues

NonNullValues: = "non-null-values"
@@ -976,7 +976,7 @@

NullValues

NullValues: = "null-values"
diff --git a/docs/enums/filtertype.html b/docs/enums/filtertype.html index f013bc3c..b699b2d8 100644 --- a/docs/enums/filtertype.html +++ b/docs/enums/filtertype.html @@ -959,7 +959,7 @@

Categorical

Categorical: = "categorical"
@@ -969,7 +969,7 @@

Hierarchical

Hierarchical: = "hierarchical"
@@ -979,7 +979,7 @@

Range

Range: = "range"
@@ -989,7 +989,7 @@

RelativeDate

RelativeDate: = "relative-date"
diff --git a/docs/enums/filterupdatetype.html b/docs/enums/filterupdatetype.html index 7f21a6aa..bf8a45ef 100644 --- a/docs/enums/filterupdatetype.html +++ b/docs/enums/filterupdatetype.html @@ -959,7 +959,7 @@

Add

Add: = "add"
@@ -969,7 +969,7 @@

All

All: = "all"
@@ -979,7 +979,7 @@

Remove

Remove: = "remove"
@@ -989,7 +989,7 @@

Replace

Replace: = "replace"
diff --git a/docs/enums/marktype.html b/docs/enums/marktype.html index 6365aa2c..d7d23e92 100644 --- a/docs/enums/marktype.html +++ b/docs/enums/marktype.html @@ -987,7 +987,7 @@

Area

Area: = "area"
@@ -997,7 +997,7 @@

Bar

Bar: = "bar"
@@ -1007,7 +1007,7 @@

Circle

Circle: = "circle"
@@ -1017,7 +1017,7 @@

GanttBar

GanttBar: = "gantt-bar"
@@ -1027,7 +1027,7 @@

Line

Line: = "line"
@@ -1037,7 +1037,7 @@

Map

Map: = "map"
@@ -1047,7 +1047,7 @@

Pie

Pie: = "pie"
@@ -1057,7 +1057,7 @@

Polygon

Polygon: = "polygon"
@@ -1067,7 +1067,7 @@

Shape

Shape: = "shape"
@@ -1077,7 +1077,7 @@

Square

Square: = "square"
@@ -1087,7 +1087,7 @@

Text

Text: = "text"
diff --git a/docs/enums/parametervaluetype.html b/docs/enums/parametervaluetype.html index dccbce4d..85eb99f4 100644 --- a/docs/enums/parametervaluetype.html +++ b/docs/enums/parametervaluetype.html @@ -956,7 +956,7 @@

All

All: = "all"
@@ -966,7 +966,7 @@

List

List: = "list"
@@ -976,7 +976,7 @@

Range

Range: = "range"
diff --git a/docs/enums/periodtype.html b/docs/enums/periodtype.html index 078e24a8..56dedeb2 100644 --- a/docs/enums/periodtype.html +++ b/docs/enums/periodtype.html @@ -975,7 +975,7 @@

Days

Days: = "days"
@@ -985,7 +985,7 @@

Hours

Hours: = "hours"
@@ -995,7 +995,7 @@

Minutes

Minutes: = "minutes"
@@ -1005,7 +1005,7 @@

Months

Months: = "months"
@@ -1015,7 +1015,7 @@

Quarters

Quarters: = "quarters"
@@ -1025,7 +1025,7 @@

Seconds

Seconds: = "seconds"
@@ -1035,7 +1035,7 @@

Weeks

Weeks: = "weeks"
@@ -1045,7 +1045,7 @@

Years

Years: = "years"
diff --git a/docs/enums/quicktablecalctype.html b/docs/enums/quicktablecalctype.html index 0c532209..33b484ec 100644 --- a/docs/enums/quicktablecalctype.html +++ b/docs/enums/quicktablecalctype.html @@ -984,7 +984,7 @@

CompoundGrowthRate

CompoundGrowthRate: = "compound-growth-rate"
@@ -994,7 +994,7 @@

Difference

Difference: = "difference"
@@ -1004,7 +1004,7 @@

MovingAverage

MovingAverage: = "moving-average"
@@ -1014,7 +1014,7 @@

PercentDifference

PercentDifference: = "percent-difference"
@@ -1024,7 +1024,7 @@

PercentOfTotal

PercentOfTotal: = "percent-of-total"
@@ -1034,7 +1034,7 @@

Percentile

Percentile: = "percentile"
@@ -1044,7 +1044,7 @@

Rank

Rank: = "rank"
@@ -1054,7 +1054,7 @@

RunningTotal

RunningTotal: = "running-total"
@@ -1064,7 +1064,7 @@

Undefined

Undefined: = "undefined"
@@ -1074,7 +1074,7 @@

YTDGrowth

YTDGrowth: = "ytd-growth"
@@ -1084,7 +1084,7 @@

YTDTotal

YTDTotal: = "ytd-total"
@@ -1094,7 +1094,7 @@

YearOverYearGrowth

YearOverYearGrowth: = "year-over-year-growth"
diff --git a/docs/enums/selectionupdatetype.html b/docs/enums/selectionupdatetype.html index d0b327d4..67aebbe5 100644 --- a/docs/enums/selectionupdatetype.html +++ b/docs/enums/selectionupdatetype.html @@ -955,7 +955,7 @@

Add

Add: = "select-add"
@@ -965,7 +965,7 @@

Remove

Remove: = "select-remove"
@@ -975,7 +975,7 @@

Replace

Replace: = "select-replace"
diff --git a/docs/enums/sheettype.html b/docs/enums/sheettype.html index 7951ac29..1c7178eb 100644 --- a/docs/enums/sheettype.html +++ b/docs/enums/sheettype.html @@ -955,7 +955,7 @@

Dashboard

Dashboard: = "dashboard"
@@ -965,7 +965,7 @@

Story

Story: = "story"
@@ -975,7 +975,7 @@

Worksheet

Worksheet: = "worksheet"
diff --git a/docs/enums/sortdirection.html b/docs/enums/sortdirection.html index fb15519c..f1b8e2fa 100644 --- a/docs/enums/sortdirection.html +++ b/docs/enums/sortdirection.html @@ -944,7 +944,7 @@

Decreasing

Decreasing: = "decreasing"
@@ -954,7 +954,7 @@

Increasing

Increasing: = "increasing"
diff --git a/docs/enums/tableaueventtype.html b/docs/enums/tableaueventtype.html index e3cc74a1..162d7f88 100644 --- a/docs/enums/tableaueventtype.html +++ b/docs/enums/tableaueventtype.html @@ -919,6 +919,9 @@
  • ParameterChanged
  • +
  • + SettingsChanged +
  • @@ -942,6 +945,7 @@

    Enumeration members

  • FilterChanged
  • MarkSelectionChanged
  • ParameterChanged
  • +
  • SettingsChanged
  • @@ -955,7 +959,7 @@

    FilterChanged

    FilterChanged: = "filter-changed"
    @@ -970,7 +974,7 @@

    MarkSelectionChanged

    MarkSelectionChanged: = "mark-selection-changed"
    @@ -985,7 +989,7 @@

    ParameterChanged

    ParameterChanged: = "parameter-changed"
    @@ -994,6 +998,21 @@

    ParameterChanged

    +
    + +

    SettingsChanged

    +
    SettingsChanged: = "settings-changed"
    + +
    +
    +

    Settings have been changed for this extension.

    +
    +
    +