diff --git a/.gitignore b/.gitignore index 3f0403f5..8c5a3a00 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ node_modules/ npm-debug.log package-lock.json Gemfile.lock +yarn.lock + +# Ignore webpack generated files +dist/ \ No newline at end of file diff --git a/README.md b/README.md index c494128c..6eba4e92 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,14 @@ The Extensions API lets you do more without leaving Tableau. Build Tableau exten 1. Copy the `.trex` files of the sample you wish to run to `~\Documents\My Tableau Repository (Beta)\Extensions` so they are available to Tableau. 2. Open a command prompt window to the location where you cloned this repo. 3. Run `npm install`. -4. Run `npm start`. -5. Launch Tableau and use the sample in a dashboard. +4. Run `npm run build`. +5. Run `npm start`. +6. Launch Tableau and use the sample in a dashboard. - >**Note** The web server just serves the extension samples and tutorial, which have URLs similar to the following: `http://localhost:8765/Samples/DataSources/datasources.html` +### Typescript Development +Samples written in Typescript are located in the Samples-Typescript folder. To support local typescript development, `npm run dev` command starts up the http server and actively listens for changes to the .ts files located in the Sample-Typescript folder. + + >**Note** The web server just serves the extension samples and tutorial, which have URLs similar to the following: `http://localhost:8765/Samples/DataSources/datasources.html` or `http://localhost:8765/Samples-Typescript/DataSources/datasources.html` > This local web server is not intended to serve the Extensions API Help pages. > View the Help on GitHub at [https://tableau.github.io/extensions-api](https://tableau.github.io/extensions-api). diff --git a/Samples-Typescript/DataSources/DataSources.trex b/Samples-Typescript/DataSources/DataSources.trex new file mode 100644 index 00000000..1bbdf172 --- /dev/null +++ b/Samples-Typescript/DataSources/DataSources.trex @@ -0,0 +1,22 @@ + + + + en_US + + DataSources Sample + + 0.8 + + http://localhost:8765/Samples-Typescript/DataSources/datasources.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== + + full data + + + + + DataSources Sample + + + diff --git a/Samples-Typescript/DataSources/datasources.html b/Samples-Typescript/DataSources/datasources.html new file mode 100644 index 00000000..1179cafc --- /dev/null +++ b/Samples-Typescript/DataSources/datasources.html @@ -0,0 +1,97 @@ + + + + + + + + Datasources Sample + + + + + + + + + + + + + + + +
+ +
+

All DataSources

+
+ + +
Loading...
+ + + + + + + + + + + +
+
+ + + +
+ + + diff --git a/Samples-Typescript/DataSources/datasources.ts b/Samples-Typescript/DataSources/datasources.ts new file mode 100644 index 00000000..c64b045c --- /dev/null +++ b/Samples-Typescript/DataSources/datasources.ts @@ -0,0 +1,141 @@ +import { DataSource } from '@tableau/extensions-api-types'; + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(async () => { + class DataSources { + // Avoid globals. + constructor(private _$: JQueryStatic) { } + + /** + * Refreshes the given dataSource + * @param dataSource + */ + private static async refreshDataSource(dataSource: DataSource) { + await dataSource.refreshAsync(); + console.log(dataSource.name + ': Refreshed Successfully'); + } + + /** + * Initializes the extension + */ + public async initialize() { + console.log('Waiting for DOM ready'); + await this._$.ready; + console.log('Initializing extension API'); + await tableau.extensions.initializeAsync(); + + // Since dataSource info is attached to the worksheet, we will perform + // one async call per worksheet to get every dataSource used in this + // dashboard. This demonstrates the use of Promise.all to combine + // promises together and wait for each of them to resolve. + const dataSourceFetchPromises: Array> = []; + + // To get dataSource info, first get the dashboard. + const dashboard = tableau.extensions.dashboardContent.dashboard; + // Then loop through each worksheet and get its dataSources, save promise for later. + dashboard.worksheets.forEach(worksheet => dataSourceFetchPromises.push(worksheet.getDataSourcesAsync())); + const fetchResults = await Promise.all(dataSourceFetchPromises); + + // Maps dataSource id to dataSource so we can keep track of unique dataSources. + const dataSourcesCheck = {}; + const dashboardDataSources: DataSource[] = []; + + fetchResults.forEach(dss => { + dss.forEach(ds => { + if (!dataSourcesCheck[ds.id]) { + // We've already seen it, skip it. + dataSourcesCheck[ds.id] = true; + dashboardDataSources.push(ds); + } + }); + }); + + this.buildDataSourcesTable(dashboardDataSources); + + // This just modifies the UI by removing the loading banner and showing the dataSources table. + this._$('#loading').addClass('hidden'); + this._$('#dataSourcesTable') + .removeClass('hidden') + .addClass('show'); + } + + /** + * Displays a modal dialog with more details about the given dataSource. + * @param dataSource + */ + private async showModal(dataSource: DataSource) { + const modal = this._$('#infoModal'); + + this._$('#nameDetail').text(dataSource.name); + this._$('#idDetail').text(dataSource.id); + this._$('#typeDetail').text((dataSource.isExtract) ? 'Extract' : 'Live'); + + // Loop through every field in the dataSource and concat it to a string. + let fieldNamesStr = ''; + dataSource.fields.forEach(function(field) { + fieldNamesStr += field.name + ', '; + }); + // Slice off the last ", " for formatting. + this._$('#fieldsDetail').text(fieldNamesStr.slice(0, -2)); + + // Loop through each connection summary and list the connection's + // name and type in the info field + const connectionSummaries = await dataSource.getConnectionSummariesAsync(); + let connectionsStr = ''; + connectionSummaries.forEach(function(summary) { + connectionsStr += summary.name + ': ' + summary.type + ', '; + }); + // Slice of the last ", " for formatting. + this._$('#connectionsDetail').text(connectionsStr.slice(0, -2)); + + // Loop through each table that was used in creating this datasource + const activeTables = await dataSource.getActiveTablesAsync(); + let tableStr = ''; + activeTables.forEach(function(table) { + tableStr += table.name + ', '; + }); + // Slice of the last ", " for formatting. + this._$('#activeTablesDetail').text(tableStr.slice(0, -2)); + + // @ts-ignore + modal.modal('show'); + } + + /** + * Constructs UI that displays all the dataSources in this dashboard + * given a mapping from dataSourceId to dataSource objects. + * @param dataSources + */ + private buildDataSourcesTable(dataSources: DataSource[]) { + // Clear the table first. + this._$('#dataSourcesTable > tbody tr').remove(); + const dataSourcesTable = this._$('#dataSourcesTable > tbody')[0]; + + // Add an entry to the dataSources table for each dataSource. + for (const dataSource of dataSources) { + // @ts-ignore + const newRow = dataSourcesTable.insertRow(dataSourcesTable.rows.length); + const nameCell = newRow.insertCell(0); + const refreshCell = newRow.insertCell(1); + const infoCell = newRow.insertCell(2); + + const refreshButton = document.createElement('button'); + refreshButton.innerHTML = 'Refresh Now'; + refreshButton.type = 'button'; + refreshButton.className = 'btn btn-primary'; + refreshButton.addEventListener('click', () => DataSources.refreshDataSource(dataSource)); + + const infoSpan = document.createElement('span'); + infoSpan.className = 'glyphicon glyphicon-info-sign'; + infoSpan.addEventListener('click', () => this.showModal(dataSource)); + + nameCell.innerHTML = dataSource.name; + refreshCell.appendChild(refreshButton); + infoCell.appendChild(infoSpan); + } + } + } + + console.log('Initializing DataSources extension.'); + await new DataSources($).initialize(); +})(); diff --git a/Samples-Typescript/Filtering/Filtering.trex b/Samples-Typescript/Filtering/Filtering.trex new file mode 100644 index 00000000..e724c05e --- /dev/null +++ b/Samples-Typescript/Filtering/Filtering.trex @@ -0,0 +1,19 @@ + + + + en_US + + Filtering Sample + + 0.8 + + http://localhost:8765/Samples-Typescript/Filtering/filtering.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== + + + + Filtering Sample + + + diff --git a/Samples-Typescript/Filtering/filtering.html b/Samples-Typescript/Filtering/filtering.html new file mode 100644 index 00000000..6e7270b8 --- /dev/null +++ b/Samples-Typescript/Filtering/filtering.html @@ -0,0 +1,56 @@ + + + + + + + + Filtering Sample + + + + + + + + + + + + + + + +
+ +
+

Current Filters

+
+ + +
Loading...
+ + + + + + + + + + + + + + + +
+
+ + +
+ +
+
+ + diff --git a/Samples-Typescript/Filtering/filtering.ts b/Samples-Typescript/Filtering/filtering.ts new file mode 100644 index 00000000..58d397d6 --- /dev/null +++ b/Samples-Typescript/Filtering/filtering.ts @@ -0,0 +1,189 @@ +import { + CategoricalFilter, + Filter, + RangeFilter, + RelativeDateFilter, + TableauEvent +} from '@tableau/extensions-api-types'; + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(async () => { + class Filtering { + + private unregisterHandlerFunctions = []; + + // Avoid globals + constructor(private _$: JQueryStatic) { } + + public async initialize() { + console.log('Waiting for DOM ready'); + await this._$.ready; + + console.log('Initializing extension API'); + await tableau.extensions.initializeAsync(); + + // Fetch Filters + this.fetchFilters(); + + // Add button handlers for clearing filters. + this._$('#clear').click(() => this.clearAllFilters()); + } + + private async fetchFilters() { + // While performing async task, show loading message to user. + this._$('#loading').addClass('show'); + + // Since filter info is attached to the worksheet, we will perform + // one async call per worksheet to get every filter used in this + // dashboard. This demonstrates the use of Promise.all to combine + // promises together and wait for each of them to resolve. + const filterFetchPromises: Array> = []; + + // List of all filters in a dashboard. + const dashboardfilters: Filter[] = []; + + // To get filter info, first get the dashboard. + const dashboard = tableau.extensions.dashboardContent.dashboard; + + // Whenever we restore the filters table, remove all save handling functions, + // since we add them back later in fetchFilters() + this.unregisterHandlerFunctions.forEach(function(unregisterHandlerFunction) { + unregisterHandlerFunction(); + }); + + this.unregisterHandlerFunctions = []; + // Then loop through each worksheet and get its filters, save promise for later. + dashboard.worksheets.forEach(function(worksheet) { + filterFetchPromises.push(worksheet.getFiltersAsync()); + + // Add filter event to each worksheet. AddEventListener returns a function that will + // remove the event listener when called. + const unregisterHandlerFunction = + worksheet.addEventListener( + tableau.TableauEventType.FilterChanged, (event) => this.filterChangedHandler(event)); + this.unregisterHandlerFunctions.push(unregisterHandlerFunction); + }, this); + + // Now, we call every filter fetch promise, and wait for all the results + // to finish before displaying the results to the user. + const fetchResults = await Promise.all(filterFetchPromises); + fetchResults.forEach(function(filtersForWorksheet) { + filtersForWorksheet.forEach(function(filter) { + dashboardfilters.push(filter); + }); + }); + + this.buildFiltersTable(dashboardfilters); + } + + // This is a handling function that is called anytime a filter is changed in Tableau. + private filterChangedHandler(filterEvent: TableauEvent) { + // Just reconstruct the filters table whenever a filter changes. + // This could be optimized to add/remove only the different filters. + this.fetchFilters(); + } + + // Constructs UI that displays all the dataSources in this dashboard + // given a mapping from dataSourceId to dataSource objects. + private buildFiltersTable(filters: Filter[]) { + // Clear the table first. + this._$('#filtersTable > tbody tr').remove(); + const filtersTable = this._$('#filtersTable > tbody')[0]; + + filters.forEach(function(filter) { + // @ts-ignore + const newRow = filtersTable.insertRow(filtersTable.rows.length); + const nameCell = newRow.insertCell(0); + const worksheetCell = newRow.insertCell(1); + const typeCell = newRow.insertCell(2); + const valuesCell = newRow.insertCell(3); + + const valueStr = this.getFilterValues(filter); + + nameCell.innerHTML = filter.fieldName; + worksheetCell.innerHTML = filter.worksheetName; + typeCell.innerHTML = filter.filterType; + valuesCell.innerHTML = valueStr; + }, this); + + this.updateUIState(Object.keys(filters).length > 0); + } + + // This returns a string representation of the values a filter is set to. + // Depending on the type of filter, this string will take a different form. + private getFilterValues(filter: Filter) { + let filterValues = ''; + + switch (filter.filterType) { + case tableau.FilterType.Categorical: + const categoricalFilter = filter as CategoricalFilter; + categoricalFilter.appliedValues.forEach(function(value) { + filterValues += value.formattedValue + ', '; + }); + break; + case tableau.FilterType.Range: + // A range filter can have a min and/or a max. + const rangeFilter = filter as RangeFilter; + if (rangeFilter.minValue) { + filterValues += 'min: ' + rangeFilter.minValue.formattedValue + ', '; + } + + if (rangeFilter.maxValue) { + filterValues += 'min: ' + rangeFilter.maxValue.formattedValue + ', '; + } + break; + case tableau.FilterType.RelativeDate: + const relDateFilter = filter as RelativeDateFilter; + filterValues += 'Period: ' + relDateFilter.periodType + ', '; + filterValues += 'RangeN: ' + relDateFilter.rangeN + ', '; + filterValues += 'Range Type: ' + relDateFilter.rangeType + ', '; + break; + default: + } + + // Cut off the trailing ", " + return filterValues.slice(0, -2); + } + + // This function removes all filters from a dashboard. + private clearAllFilters() { + // While performing async task, show loading message to user. + this._$('#loading').removeClass('hidden').addClass('show'); + this._$('#filtersTable').removeClass('show').addClass('hidden'); + + const dashboard = tableau.extensions.dashboardContent.dashboard; + + dashboard.worksheets.forEach(function(worksheet) { + worksheet.getFiltersAsync().then(async (filtersForWorksheet) => { + const filterClearPromises = []; + + filtersForWorksheet.forEach(function(filter) { + filterClearPromises.push(worksheet.clearFilterAsync(filter.fieldName)); + }); + + // Same pattern as in fetchFilters, wait until all promises have finished + // before updating the UI state. + await Promise.all(filterClearPromises); + this.updateUIState(false); + }); + }, this); + } + + // This helper updates the UI depending on whether or not there are filters + // that exist in the dashboard. Accepts a boolean. + private updateUIState(filtersExist: boolean) { + this._$('#loading').addClass('hidden'); + if (filtersExist) { + this._$('#filtersTable').removeClass('hidden').addClass('show'); + this._$('#noFiltersWarning').removeClass('show').addClass('hidden'); + } else { + this._$('#noFiltersWarning').removeClass('hidden').addClass('show'); + this._$('#filtersTable').removeClass('show').addClass('hidden'); + } + } + + } + + console.log('Initializing Filtering extension.'); + await new Filtering($).initialize(); +})(); diff --git a/Samples-Typescript/Parameters/Parameters.trex b/Samples-Typescript/Parameters/Parameters.trex new file mode 100644 index 00000000..afec11a7 --- /dev/null +++ b/Samples-Typescript/Parameters/Parameters.trex @@ -0,0 +1,19 @@ + + + + en_US + + Parameters Sample + + 0.8 + + http://localhost:8765/Samples-Typescript/Parameters/parameters.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== + + + + Parameters Sample + + + diff --git a/Samples-Typescript/Parameters/parameters.html b/Samples-Typescript/Parameters/parameters.html new file mode 100644 index 00000000..7861fe0b --- /dev/null +++ b/Samples-Typescript/Parameters/parameters.html @@ -0,0 +1,49 @@ + + + + + + + + Parameters Sample + + + + + + + + + + + + + + + +
+
+

Parameters

+
+ + +
Loading...
+ + + + + + + + + + + + + + +
+
+
+ + diff --git a/Samples-Typescript/Parameters/parameters.ts b/Samples-Typescript/Parameters/parameters.ts new file mode 100644 index 00000000..427f2f72 --- /dev/null +++ b/Samples-Typescript/Parameters/parameters.ts @@ -0,0 +1,132 @@ +import { + Parameter, + ParameterChangedEvent, + ParameterDomainRestriction +} from '@tableau/extensions-api-types'; + +import { DataType } from '@tableau/extensions-api-types/ExternalContract/Namespaces/Tableau'; + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(async () => { + + class Parameters { + // Avoid globals + constructor(private _$: JQueryStatic) { } + + // This is the entry point into the extension. It initializes the Tableau Extensions Api, and then + // grabs all of the parameters in the workbook, processing each one individually. + public async initialize() { + console.log('Waiting for DOM ready'); + await this._$.ready; + + console.log('Initializing extension API'); + await tableau.extensions.initializeAsync(); + + const table = this._$('#parameterTable'); + const tableBody = table.children('tbody'); + + const parameters = await tableau.extensions.dashboardContent.dashboard.getParametersAsync(); + parameters.forEach(function(p) { + p.addEventListener(tableau.TableauEventType.ParameterChanged, (event) => this.onParameterChange(event)); + this.parameterRow(p).appendTo(tableBody); + }, this); + + // This is used to manipulate what part of the UI is visible. If there are no parameters + // found, we want to give you a message to tell you that you need to add one, otherwise, we + // show the table we created. + this._$('#loading').addClass('hidden'); + if (parameters.length === 0) { + this._$('#addParameterWarning').removeClass('hidden').addClass('show'); + } else { + this._$('#parameterTable').removeClass('hidden').addClass('show'); + } + + } + + // When the parameter is changed, we recreate the row with the updated values. This keeps the code + // clean, and emulates the approach that something like React does where it "rerenders" the UI with + // the updated data. + // + // To avoid multiple layout processing in the browser, we build the new row unattached to the DOM, + // and then attach it at the very end. This helps avoid jank. + private onParameterChange(parameterChangeEvent: ParameterChangedEvent) { + parameterChangeEvent.getParameterAsync().then(function(param) { + const newRow = this.parameterRow(param); + // tslint:disable-next-line:quotemark + const oldRow = this._$("tr[data-fieldname='" + param.id + "'"); + oldRow.replaceWith(newRow); + }); + } + + // + // DOM creation methods + // + + // A cell in the table + private cell(value: JQuery) { + const row = this._$(''); + row.append(value); + return row; + } + + // A simple cell that contains a text value + private textCell(value: string | DataType) { + const cellElement = this._$(''); + cellElement.text(value); + return cellElement; + } + + // The allowable values column has a complex structure, so to make things easier/cleaner, + // this function creates the subtree for the value of the allowable values column. + private allowableValues(value: ParameterDomainRestriction) { + function termKey(key: string) { + return $('
').attr('id', key).text(key); + } + + function termValue(termVal: string | number, termDefault: string) { + return $('
').text(termVal || termDefault); + } + + const allowable = this._$('
'); + + switch (value.type) { + case tableau.ParameterValueType.All: + allowable.append(termKey('Restrictions')); + allowable.append(termValue('None', '')); + break; + case tableau.ParameterValueType.List: + value.allowableValues.forEach(function(allowableValue) { + allowable.append(termKey('List Value')); + allowable.append(termValue(allowableValue.formattedValue, '')); + }); + break; + case tableau.ParameterValueType.Range: + allowable.append(termKey('Min Value')); + allowable.append(termValue(value.minValue.formattedValue, 'No Min')); + allowable.append(termKey('Max Value')); + allowable.append(termValue(value.maxValue.formattedValue, 'No Max')); + allowable.append(termKey('Step Size')); + allowable.append(termValue(value.stepSize, 'default')); + break; + default: + console.error('Unknown Parameter value type: ' + value.type); + } + + return allowable; + } + + // This function creates a subtree of a row for a specific parameter. + private parameterRow(p: Parameter) { + const row = this._$('').attr('data-fieldname', p.id); + row.append(this.textCell(p.name)); + row.append(this.textCell(p.dataType)); + row.append(this.textCell(p.currentValue.formattedValue)); + row.append(this.cell(this.allowableValues(p.allowableValues))); + + return row; + } + } + + console.log('Initializing Parameters extension.'); + await new Parameters($).initialize(); +})(); diff --git a/Samples/DataSources/datasources.js b/Samples/DataSources/datasources.js index 33c92939..838532ac 100644 --- a/Samples/DataSources/datasources.js +++ b/Samples/DataSources/datasources.js @@ -67,7 +67,7 @@ $('#fieldsDetail').text(fieldNamesStr.slice(0, -2)); dataSource.getConnectionSummariesAsync().then(function (connectionSummaries) { - // Loop through each connection summary and list the connection's + // Loop through each connection summary and list the connection's // name and type in the info field let connectionsStr = ''; connectionSummaries.forEach(function (summary) { diff --git a/Samples/UINamespace/uiNamespace.js b/Samples/UINamespace/uiNamespace.js index 656a1fcf..dc7b27dc 100644 --- a/Samples/UINamespace/uiNamespace.js +++ b/Samples/UINamespace/uiNamespace.js @@ -2,13 +2,13 @@ /** * UINamespace Sample Extension - * + * * This sample extension 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 + * 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 much dashboard space, except * when the user needs to adjust settings, so the UI namespace is used for that. */ @@ -16,7 +16,6 @@ // Wrap everything in an anonymous function to avoid polluting the global namespace (function () { const defaultIntervalInMin = '5'; - let refreshInterval; let activeDatasourceIdList = []; $(document).ready(function () { @@ -25,30 +24,30 @@ // item to the manifest, will add a new "Configure..." context menu item to the zone of extension // inside a dashboard. When that context menu item is clicked by the user, the function passed // here will be executed. - tableau.extensions.initializeAsync({'configure': configure}).then(function() { + tableau.extensions.initializeAsync({'configure': configure}).then(function () { // 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) + updateExtensionBasedOnSettings(settingsEvent.newSettings); }); }); }); - function configure() { - // This uses the window.location.origin property to retrieve the scheme, hostname, and + function configure () { + // This uses the window.location.origin property to retrieve the scheme, hostname, and // port where the parent extension is currently running, so this string doesn't have // to be updated if the extension is deployed to a new location. const popupUrl = `${window.location.origin}/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, + * popup is always a modal dialog. The only required parameter is the URL of the popup, * which must be the same domain, port, and scheme as the parent extension. - * - * The developer can optionally control the initial size of the extension by passing in + * + * 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 + * '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. */ @@ -64,9 +63,9 @@ }).catch((error) => { // One expected error condition is when the popup is closed by the user (meaning the user // clicks the 'X' in the top right of the dialog). This can be checked for like so: - switch(error.errorCode) { + switch (error.errorCode) { case tableau.ErrorCodes.DialogClosedByUser: - console.log("Dialog was closed by user"); + console.log('Dialog was closed by user'); break; default: console.error(error.message); @@ -78,25 +77,25 @@ * 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() { + function setupRefreshInterval (interval) { + 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(); - } + if (activeDatasourceIdList.indexOf(datasource.id) >= 0) { + datasource.refreshAsync(); + } }); }); }); - }, interval*60*1000); + }, interval * 60 * 1000); } /** * Helper that is called to set state anytime the settings are changed. */ - function updateExtensionBasedOnSettings(settings) { + function updateExtensionBasedOnSettings (settings) { if (settings.selectedDatasources) { activeDatasourceIdList = JSON.parse(settings.selectedDatasources); $('#datasourceCount').text(activeDatasourceIdList.length); diff --git a/Samples/UINamespace/uiNamespaceDialog.js b/Samples/UINamespace/uiNamespaceDialog.js index 9e9a313f..a983bfa0 100644 --- a/Samples/UINamespace/uiNamespaceDialog.js +++ b/Samples/UINamespace/uiNamespaceDialog.js @@ -2,22 +2,21 @@ /** * 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 + * uiNamespace.js in addition to this for context. This extension is * responsible for collecting configuration settings from the user and communicating * that info back to the parent extension. - * + * * This sample demonstrates two ways to do that: - * 1) The suggested and most common method is to store the information + * 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 + * 2) The popup extension can receive and send a string payload via the open * and close payloads of initializeDialogAsync and closeDialog methods. 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 () { /** @@ -28,12 +27,12 @@ let selectedDatasources = []; $(document).ready(function () { - // The only difference between an extension in a dashboard and an extension + // 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 + // 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); @@ -43,8 +42,8 @@ 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 + // 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) { @@ -62,11 +61,11 @@ }); /** - * Helper that parses the settings from the settings namesapce and + * 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() { + function parseSettingsForActiveDataSources () { let activeDatasourceIdList = []; let settings = tableau.extensions.settings.getAll(); if (settings.selectedDatasources) { @@ -80,7 +79,7 @@ * Helper that updates the internal storage of datasource IDs * any time a datasource checkbox item is toggled. */ - function updateDatasourceList(id) { + function updateDatasourceList (id) { let idIndex = selectedDatasources.indexOf(id); if (idIndex < 0) { selectedDatasources.push(id); @@ -92,7 +91,7 @@ /** * UI helper that adds a checkbox item to the UI for a datasource. */ - function addDataSourceItemToUI(datasource, isActive) { + function addDataSourceItemToUI (datasource, isActive) { let containerDiv = $('
'); $('', { @@ -100,12 +99,12 @@ id: datasource.id, value: datasource.name, checked: isActive, - click: function() { updateDatasourceList(datasource.id) } + click: function () { updateDatasourceList(datasource.id); } }).appendTo(containerDiv); $('
+ + Menu @@ -52,7 +54,10 @@ Globals
  • - AnalyticsObjectType + Tableau +
  • +
  • + AnalyticsObjectType
  • Enumeration AnalyticsObjectType

    @@ -69,9 +74,9 @@

    Index

    Enumeration members

    @@ -85,7 +90,7 @@

    Cluster

    Cluster: = "cluster"
    @@ -95,7 +100,7 @@

    Forecast

    Forecast: = "forecast"
    @@ -105,7 +110,7 @@

    TrendLine

    TrendLine: = "trend-line"
    @@ -117,28 +122,106 @@

    TrendLine

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/columntype.html b/docs/enums/tableau.columntype.html similarity index 64% rename from docs/enums/columntype.html rename to docs/enums/tableau.columntype.html index 4ff9f540..03f29efc 100644 --- a/docs/enums/columntype.html +++ b/docs/enums/tableau.columntype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - ColumnType + Tableau +
  • +
  • + ColumnType
  • Enumeration ColumnType

    @@ -69,8 +74,8 @@

    Index

    Enumeration members

    @@ -84,7 +89,7 @@

    Continuous

    Continuous: = "continuous"
    @@ -94,7 +99,7 @@

    Discrete

    Discrete: = "discrete"
    @@ -106,25 +111,103 @@

    Discrete

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/dashboardobjecttype.html b/docs/enums/tableau.dashboardobjecttype.html similarity index 66% rename from docs/enums/dashboardobjecttype.html rename to docs/enums/tableau.dashboardobjecttype.html index f816f47b..0721aabb 100644 --- a/docs/enums/dashboardobjecttype.html +++ b/docs/enums/tableau.dashboardobjecttype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - DashboardObjectType + Tableau +
  • +
  • + DashboardObjectType
  • Enumeration DashboardObjectType

    @@ -76,17 +81,17 @@

    Index

    Enumeration members

    @@ -100,7 +105,7 @@

    Blank

    Blank: = "blank"
    @@ -110,7 +115,7 @@

    Extension

    Extension: = "extension"
    @@ -120,7 +125,7 @@

    Image

    Image: = "image"
    @@ -130,7 +135,7 @@

    Legend

    Legend: = "legend"
    @@ -140,7 +145,7 @@

    PageFilter

    PageFilter: = "page-filter"
    @@ -150,7 +155,7 @@

    ParameterControl

    ParameterControl: = "parameter-control"
    @@ -160,7 +165,7 @@

    QuickFilter

    QuickFilter: = "quick-filter"
    @@ -170,7 +175,7 @@

    Text

    Text: = "text"
    @@ -180,7 +185,7 @@

    Title

    Title: = "title"
    @@ -190,7 +195,7 @@

    WebPage

    WebPage: = "web-page"
    @@ -200,7 +205,7 @@

    Worksheet

    Worksheet: = "worksheet"
    @@ -212,52 +217,130 @@

    Worksheet

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/datatype.html b/docs/enums/tableau.datatype.html similarity index 66% rename from docs/enums/datatype.html rename to docs/enums/tableau.datatype.html index 7530ed4e..0162514e 100644 --- a/docs/enums/datatype.html +++ b/docs/enums/tableau.datatype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - DataType + Tableau +
  • +
  • + DataType
  • Enumeration DataType

    @@ -76,13 +81,13 @@

    Index

    Enumeration members

    @@ -96,7 +101,7 @@

    Bool

    Bool: = "bool"
    @@ -106,7 +111,7 @@

    Date

    Date: = "date"
    @@ -116,7 +121,7 @@

    DateTime

    DateTime: = "date-time"
    @@ -126,7 +131,7 @@

    Float

    Float: = "float"
    @@ -136,7 +141,7 @@

    Int

    Int: = "int"
    @@ -146,7 +151,7 @@

    Spatial

    Spatial: = "spatial"
    @@ -156,7 +161,7 @@

    String

    String: = "string"
    @@ -168,40 +173,118 @@

    String

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/daterangetype.html b/docs/enums/tableau.daterangetype.html similarity index 66% rename from docs/enums/daterangetype.html rename to docs/enums/tableau.daterangetype.html index 733e914a..4e45536f 100644 --- a/docs/enums/daterangetype.html +++ b/docs/enums/tableau.daterangetype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - DateRangeType + Tableau +
  • +
  • + DateRangeType
  • Enumeration DateRangeType

    @@ -76,12 +81,12 @@

    Index

    Enumeration members

    @@ -95,7 +100,7 @@

    Current

    Current: = "current"
    @@ -105,7 +110,7 @@

    Last

    Last: = "last"
    @@ -115,7 +120,7 @@

    LastN

    LastN: = "last-n"
    @@ -125,7 +130,7 @@

    Next

    Next: = "next"
    @@ -135,7 +140,7 @@

    NextN

    NextN: = "next-n"
    @@ -145,7 +150,7 @@

    ToDate

    ToDate: = "to-date"
    @@ -157,37 +162,115 @@

    ToDate

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/encodingtype.html b/docs/enums/tableau.encodingtype.html similarity index 67% rename from docs/enums/encodingtype.html rename to docs/enums/tableau.encodingtype.html index f5949e45..c99856fb 100644 --- a/docs/enums/encodingtype.html +++ b/docs/enums/tableau.encodingtype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - EncodingType + Tableau +
  • +
  • + EncodingType
  • Enumeration EncodingType

    @@ -69,20 +74,20 @@

    Index

    Enumeration members

    @@ -96,7 +101,7 @@

    Angle

    Angle: = "angle"
    @@ -106,7 +111,7 @@

    Color

    Color: = "color"
    @@ -116,7 +121,7 @@

    Column

    Column: = "column"
    @@ -126,7 +131,7 @@

    Detail

    Detail: = "detail"
    @@ -136,7 +141,7 @@

    Filter

    Filter: = "filter"
    @@ -146,7 +151,7 @@

    Label

    Label: = "label"
    @@ -156,7 +161,7 @@

    MarksType

    MarksType: = "marks-type"
    @@ -166,7 +171,7 @@

    MeasureValues

    MeasureValues: = "measure-values"
    @@ -176,7 +181,7 @@

    Page

    Page: = "page"
    @@ -186,7 +191,7 @@

    Path

    Path: = "path"
    @@ -196,7 +201,7 @@

    Row

    Row: = "row"
    @@ -206,7 +211,7 @@

    Shape

    Shape: = "shape"
    @@ -216,7 +221,7 @@

    Size

    Size: = "size"
    @@ -226,7 +231,7 @@

    Tooltip

    Tooltip: = "tooltip"
    @@ -238,61 +243,139 @@

    Tooltip

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/errorcodes.html b/docs/enums/tableau.errorcodes.html similarity index 68% rename from docs/enums/errorcodes.html rename to docs/enums/tableau.errorcodes.html index 1cdf22b5..2d77003f 100644 --- a/docs/enums/errorcodes.html +++ b/docs/enums/tableau.errorcodes.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - ErrorCodes + Tableau +
  • +
  • + ErrorCodes
  • Enumeration ErrorCodes

    @@ -76,19 +81,19 @@

    Index

    Enumeration members

    @@ -102,7 +107,7 @@

    APINotInitialized

    APINotInitialized: = "api-not-initialized"
    @@ -117,7 +122,7 @@

    DialogAlreadyOpen

    DialogAlreadyOpen: = "dialog-already-open"
    @@ -132,7 +137,7 @@

    DialogClosedByUser

    DialogClosedByUser: = "dialog-closed-by-user"
    @@ -147,7 +152,7 @@

    InternalError

    InternalError: = "internal-error"
    @@ -162,7 +167,7 @@

    InvalidDomainDialog

    InvalidDomainDialog: = "invalid-dialog-domain"
    @@ -177,7 +182,7 @@

    InvalidParameter

    InvalidParameter: = "invalid-parameter"
    @@ -192,7 +197,7 @@

    MissingFilter

    MissingFilter: = "missing-filter"
    @@ -207,7 +212,7 @@

    MissingParameter

    MissingParameter: = "missing-parameter"
    @@ -222,7 +227,7 @@

    ServerError

    ServerError: = "server-error"
    @@ -237,7 +242,7 @@

    SettingSaveInProgress

    SettingSaveInProgress: = "setting-save-in-progress"
    @@ -252,12 +257,12 @@

    UnsupportedEventName

    UnsupportedEventName: = "unsupported-event-name"
    -

    An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener.

    +

    An unknown event name was specified in the call to addEventListener or removeEventListener.

    @@ -267,12 +272,12 @@

    UnsupportedMethodForDataSourceType

    UnsupportedMethodForDataSourceType: = "unsupported-method-for-data-source-type"
    -

    A method was used for a type of datasource that doesn't support that method (see getActiveTablesAsync for an example)

    +

    A method was used for a type of data source that doesn't support that method (see getActiveTablesAsync for an example)

    @@ -282,7 +287,7 @@

    VisibilityError

    VisibilityError: = "visibility-error"
    diff --git a/docs/enums/extensioncontext.html b/docs/enums/tableau.extensioncontext.html similarity index 65% rename from docs/enums/extensioncontext.html rename to docs/enums/tableau.extensioncontext.html index 3888ee90..fe9bfd2b 100644 --- a/docs/enums/extensioncontext.html +++ b/docs/enums/tableau.extensioncontext.html @@ -38,6 +38,8 @@
    + +
    Menu @@ -52,7 +54,10 @@ Globals
  • - ExtensionContext + Tableau +
  • +
  • + ExtensionContext
  • Enumeration ExtensionContext

    @@ -76,8 +81,8 @@

    Index

    Enumeration members

    @@ -91,7 +96,7 @@

    Desktop

    Desktop: = "desktop"
    @@ -101,7 +106,7 @@

    Server

    Server: = "server"
    @@ -113,25 +118,103 @@

    Server

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/extensionmode.html b/docs/enums/tableau.extensionmode.html similarity index 65% rename from docs/enums/extensionmode.html rename to docs/enums/tableau.extensionmode.html index 4877f9bf..dc481dd4 100644 --- a/docs/enums/extensionmode.html +++ b/docs/enums/tableau.extensionmode.html @@ -38,6 +38,8 @@
    + +
    Menu @@ -52,7 +54,10 @@ Globals
  • - ExtensionMode + Tableau +
  • +
  • + ExtensionMode
  • Enumeration ExtensionMode

    @@ -76,8 +81,8 @@

    Index

    Enumeration members

    @@ -91,7 +96,7 @@

    Authoring

    Authoring: = "authoring"
    @@ -101,7 +106,7 @@

    Viewing

    Viewing: = "viewing"
    @@ -113,25 +118,103 @@

    Viewing

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/fieldaggregationtype.html b/docs/enums/tableau.fieldaggregationtype.html similarity index 68% rename from docs/enums/fieldaggregationtype.html rename to docs/enums/tableau.fieldaggregationtype.html index 595dbc46..5eb62381 100644 --- a/docs/enums/fieldaggregationtype.html +++ b/docs/enums/tableau.fieldaggregationtype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - FieldAggregationType + Tableau +
  • +
  • + FieldAggregationType
  • Enumeration FieldAggregationType

    @@ -76,45 +81,45 @@

    Index

    Enumeration members

    @@ -128,7 +133,7 @@

    Attr

    Attr: = "attr"
    @@ -138,7 +143,7 @@

    Avg

    Avg: = "avg"
    @@ -148,7 +153,7 @@

    Count

    Count: = "count"
    @@ -158,7 +163,7 @@

    Countd

    Countd: = "countd"
    @@ -168,7 +173,7 @@

    Day

    Day: = "day"
    @@ -178,7 +183,7 @@

    End

    End: = "end"
    @@ -188,7 +193,7 @@

    Hour

    Hour: = "hour"
    @@ -198,7 +203,7 @@

    InOut

    InOut: = "in-out"
    @@ -208,7 +213,7 @@

    Kurtosis

    Kurtosis: = "kurtosis"
    @@ -218,7 +223,7 @@

    Max

    Max: = "max"
    @@ -228,7 +233,7 @@

    Mdy

    Mdy: = "mdy"
    @@ -238,7 +243,7 @@

    Median

    Median: = "median"
    @@ -248,7 +253,7 @@

    Min

    Min: = "min"
    @@ -258,7 +263,7 @@

    Minute

    Minute: = "minute"
    @@ -268,7 +273,7 @@

    Month

    Month: = "month"
    @@ -278,7 +283,7 @@

    MonthYear

    MonthYear: = "month-year"
    @@ -288,7 +293,7 @@

    None

    None: = "none"
    @@ -298,7 +303,7 @@

    Qtr

    Qtr: = "qtr"
    @@ -308,7 +313,7 @@

    Quart1

    Quart1: = "quart1"
    @@ -318,7 +323,7 @@

    Quart3

    Quart3: = "quart3"
    @@ -328,7 +333,7 @@

    Second

    Second: = "second"
    @@ -338,7 +343,7 @@

    Skewness

    Skewness: = "skewness"
    @@ -348,7 +353,7 @@

    Stdev

    Stdev: = "stdev"
    @@ -358,7 +363,7 @@

    Stdevp

    Stdevp: = "stdevp"
    @@ -368,7 +373,7 @@

    Sum

    Sum: = "sum"
    @@ -378,7 +383,7 @@

    TruncDay

    TruncDay: = "trunc-day"
    @@ -388,7 +393,7 @@

    TruncHour

    TruncHour: = "trunc-hour"
    @@ -398,7 +403,7 @@

    TruncMinute

    TruncMinute: = "trunc-minute"
    @@ -408,7 +413,7 @@

    TruncMonth

    TruncMonth: = "trunc-month"
    @@ -418,7 +423,7 @@

    TruncQtr

    TruncQtr: = "trunc-qtr"
    @@ -428,7 +433,7 @@

    TruncSecond

    TruncSecond: = "trunc-second"
    @@ -438,7 +443,7 @@

    TruncWeek

    TruncWeek: = "trunc-week"
    @@ -448,7 +453,7 @@

    TruncYear

    TruncYear: = "trunc-year"
    @@ -458,7 +463,7 @@

    User

    User: = "user"
    @@ -468,7 +473,7 @@

    Var

    Var: = "var"
    @@ -478,7 +483,7 @@

    Varp

    Varp: = "varp"
    @@ -488,7 +493,7 @@

    Week

    Week: = "week"
    @@ -498,7 +503,7 @@

    Weekday

    Weekday: = "weekday"
    @@ -508,7 +513,7 @@

    Year

    Year: = "year"
    @@ -520,136 +525,214 @@

    Year

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/fieldroletype.html b/docs/enums/tableau.fieldroletype.html similarity index 65% rename from docs/enums/fieldroletype.html rename to docs/enums/tableau.fieldroletype.html index 1aa635ff..602eee5c 100644 --- a/docs/enums/fieldroletype.html +++ b/docs/enums/tableau.fieldroletype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - FieldRoleType + Tableau +
  • +
  • + FieldRoleType
  • Enumeration FieldRoleType

    @@ -76,9 +81,9 @@

    Index

    Enumeration members

    @@ -92,7 +97,7 @@

    Dimension

    Dimension: = "dimension"
    @@ -102,7 +107,7 @@

    Measure

    Measure: = "measure"
    @@ -112,7 +117,7 @@

    Unknown

    Unknown: = "unknown"
    @@ -124,28 +129,106 @@

    Unknown

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/filterdomaintype.html b/docs/enums/tableau.filterdomaintype.html similarity index 66% rename from docs/enums/filterdomaintype.html rename to docs/enums/tableau.filterdomaintype.html index 90ae02aa..89ac09c5 100644 --- a/docs/enums/filterdomaintype.html +++ b/docs/enums/tableau.filterdomaintype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - FilterDomainType + Tableau +
  • +
  • + FilterDomainType
  • Enumeration FilterDomainType

    @@ -76,8 +81,8 @@

    Index

    Enumeration members

    @@ -91,7 +96,7 @@

    Database

    Database: = "database"
    @@ -106,7 +111,7 @@

    Relevant

    Relevant: = "relevant"
    diff --git a/docs/enums/filternulloption.html b/docs/enums/tableau.filternulloption.html similarity index 65% rename from docs/enums/filternulloption.html rename to docs/enums/tableau.filternulloption.html index ba7e927d..c634d219 100644 --- a/docs/enums/filternulloption.html +++ b/docs/enums/tableau.filternulloption.html @@ -38,6 +38,8 @@
    + + Menu @@ -52,7 +54,10 @@ Globals
  • - FilterNullOption + Tableau +
  • +
  • + FilterNullOption
  • Enumeration FilterNullOption

    @@ -77,9 +82,9 @@

    Index

    Enumeration members

    @@ -93,7 +98,7 @@

    AllValues

    AllValues: = "all-values"
    @@ -103,7 +108,7 @@

    NonNullValues

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

    NullValues

    NullValues: = "null-values"
    @@ -125,28 +130,106 @@

    NullValues

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/filtertype.html b/docs/enums/tableau.filtertype.html similarity index 65% rename from docs/enums/filtertype.html rename to docs/enums/tableau.filtertype.html index 8456632e..0ed55db5 100644 --- a/docs/enums/filtertype.html +++ b/docs/enums/tableau.filtertype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - FilterType + Tableau +
  • +
  • + FilterType
  • Enumeration FilterType

    @@ -76,10 +81,10 @@

    Index

    Enumeration members

    @@ -93,7 +98,7 @@

    Categorical

    Categorical: = "categorical"
    @@ -103,7 +108,7 @@

    Hierarchical

    Hierarchical: = "hierarchical"
    @@ -113,7 +118,7 @@

    Range

    Range: = "range"
    @@ -123,7 +128,7 @@

    RelativeDate

    RelativeDate: = "relative-date"
    @@ -135,31 +140,109 @@

    RelativeDate

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/filterupdatetype.html b/docs/enums/tableau.filterupdatetype.html similarity index 65% rename from docs/enums/filterupdatetype.html rename to docs/enums/tableau.filterupdatetype.html index b982cb62..5f6c9863 100644 --- a/docs/enums/filterupdatetype.html +++ b/docs/enums/tableau.filterupdatetype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - FilterUpdateType + Tableau +
  • +
  • + FilterUpdateType
  • Enumeration FilterUpdateType

    @@ -76,10 +81,10 @@

    Index

    Enumeration members

    @@ -93,7 +98,7 @@

    Add

    Add: = "add"
    @@ -103,7 +108,7 @@

    All

    All: = "all"
    @@ -113,7 +118,7 @@

    Remove

    Remove: = "remove"
    @@ -123,7 +128,7 @@

    Replace

    Replace: = "replace"
    @@ -135,31 +140,109 @@

    Replace

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/marktype.html b/docs/enums/tableau.marktype.html similarity index 67% rename from docs/enums/marktype.html rename to docs/enums/tableau.marktype.html index 1378a50f..b8f55029 100644 --- a/docs/enums/marktype.html +++ b/docs/enums/tableau.marktype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - MarkType + Tableau +
  • +
  • + MarkType
  • Enumeration MarkType

    @@ -76,17 +81,17 @@

    Index

    Enumeration members

    @@ -100,7 +105,7 @@

    Area

    Area: = "area"
    @@ -110,7 +115,7 @@

    Bar

    Bar: = "bar"
    @@ -120,7 +125,7 @@

    Circle

    Circle: = "circle"
    @@ -130,7 +135,7 @@

    GanttBar

    GanttBar: = "gantt-bar"
    @@ -140,7 +145,7 @@

    Line

    Line: = "line"
    @@ -150,7 +155,7 @@

    Map

    Map: = "map"
    @@ -160,7 +165,7 @@

    Pie

    Pie: = "pie"
    @@ -170,7 +175,7 @@

    Polygon

    Polygon: = "polygon"
    @@ -180,7 +185,7 @@

    Shape

    Shape: = "shape"
    @@ -190,7 +195,7 @@

    Square

    Square: = "square"
    @@ -200,7 +205,7 @@

    Text

    Text: = "text"
    @@ -212,52 +217,130 @@

    Text

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/parametervaluetype.html b/docs/enums/tableau.parametervaluetype.html similarity index 65% rename from docs/enums/parametervaluetype.html rename to docs/enums/tableau.parametervaluetype.html index a12ebc55..a52e0a2e 100644 --- a/docs/enums/parametervaluetype.html +++ b/docs/enums/tableau.parametervaluetype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - ParameterValueType + Tableau +
  • +
  • + ParameterValueType
  • Enumeration ParameterValueType

    @@ -77,9 +82,9 @@

    Index

    Enumeration members

    @@ -93,7 +98,7 @@

    All

    All: = "all"
    @@ -103,7 +108,7 @@

    List

    List: = "list"
    @@ -113,7 +118,7 @@

    Range

    Range: = "range"
    @@ -125,28 +130,106 @@

    Range

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/periodtype.html b/docs/enums/tableau.periodtype.html similarity index 67% rename from docs/enums/periodtype.html rename to docs/enums/tableau.periodtype.html index 62f38d1b..8194478f 100644 --- a/docs/enums/periodtype.html +++ b/docs/enums/tableau.periodtype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - PeriodType + Tableau +
  • +
  • + PeriodType
  • Enumeration PeriodType

    @@ -76,14 +81,14 @@

    Index

    Enumeration members

    @@ -97,7 +102,7 @@

    Days

    Days: = "days"
    @@ -107,7 +112,7 @@

    Hours

    Hours: = "hours"
    @@ -117,7 +122,7 @@

    Minutes

    Minutes: = "minutes"
    @@ -127,7 +132,7 @@

    Months

    Months: = "months"
    @@ -137,7 +142,7 @@

    Quarters

    Quarters: = "quarters"
    @@ -147,7 +152,7 @@

    Seconds

    Seconds: = "seconds"
    @@ -157,7 +162,7 @@

    Weeks

    Weeks: = "weeks"
    @@ -167,7 +172,7 @@

    Years

    Years: = "years"
    @@ -179,43 +184,121 @@

    Years

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/quicktablecalctype.html b/docs/enums/tableau.quicktablecalctype.html similarity index 66% rename from docs/enums/quicktablecalctype.html rename to docs/enums/tableau.quicktablecalctype.html index bc61b6e7..94153e0b 100644 --- a/docs/enums/quicktablecalctype.html +++ b/docs/enums/tableau.quicktablecalctype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - QuickTableCalcType + Tableau +
  • +
  • + QuickTableCalcType
  • Enumeration QuickTableCalcType

    @@ -69,18 +74,18 @@

    Index

    Enumeration members

    @@ -94,7 +99,7 @@

    CompoundGrowthRate

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

    Difference

    Difference: = "difference"
    @@ -114,7 +119,7 @@

    MovingAverage

    MovingAverage: = "moving-average"
    @@ -124,7 +129,7 @@

    PercentDifference

    PercentDifference: = "percent-difference"
    @@ -134,7 +139,7 @@

    PercentOfTotal

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

    Percentile

    Percentile: = "percentile"
    @@ -154,7 +159,7 @@

    Rank

    Rank: = "rank"
    @@ -164,7 +169,7 @@

    RunningTotal

    RunningTotal: = "running-total"
    @@ -174,7 +179,7 @@

    Undefined

    Undefined: = "undefined"
    @@ -184,7 +189,7 @@

    YTDGrowth

    YTDGrowth: = "ytd-growth"
    @@ -194,7 +199,7 @@

    YTDTotal

    YTDTotal: = "ytd-total"
    @@ -204,7 +209,7 @@

    YearOverYearGrowth

    YearOverYearGrowth: = "year-over-year-growth"
    @@ -216,55 +221,133 @@

    YearOverYearGrowth

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/selectionupdatetype.html b/docs/enums/tableau.selectionupdatetype.html similarity index 65% rename from docs/enums/selectionupdatetype.html rename to docs/enums/tableau.selectionupdatetype.html index 63019f20..f41c85ac 100644 --- a/docs/enums/selectionupdatetype.html +++ b/docs/enums/tableau.selectionupdatetype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - SelectionUpdateType + Tableau +
  • +
  • + SelectionUpdateType
  • Enumeration SelectionUpdateType

    @@ -76,9 +81,9 @@

    Index

    Enumeration members

    @@ -92,7 +97,7 @@

    Add

    Add: = "select-add"
    @@ -102,7 +107,7 @@

    Remove

    Remove: = "select-remove"
    @@ -112,7 +117,7 @@

    Replace

    Replace: = "select-replace"
    @@ -124,28 +129,106 @@

    Replace

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/sheettype.html b/docs/enums/tableau.sheettype.html similarity index 65% rename from docs/enums/sheettype.html rename to docs/enums/tableau.sheettype.html index 1cfe20e2..7141e797 100644 --- a/docs/enums/sheettype.html +++ b/docs/enums/tableau.sheettype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - SheetType + Tableau +
  • +
  • + SheetType
  • Enumeration SheetType

    @@ -65,7 +70,7 @@

    Enumeration SheetType

    -

    The type of sheet a Sheet object represents

    +

    The type of sheet a Sheet object represents

    @@ -76,9 +81,9 @@

    Index

    Enumeration members

    @@ -92,7 +97,7 @@

    Dashboard

    Dashboard: = "dashboard"
    @@ -102,7 +107,7 @@

    Story

    Story: = "story"
    @@ -112,7 +117,7 @@

    Worksheet

    Worksheet: = "worksheet"
    @@ -124,28 +129,106 @@

    Worksheet

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/sortdirection.html b/docs/enums/tableau.sortdirection.html similarity index 64% rename from docs/enums/sortdirection.html rename to docs/enums/tableau.sortdirection.html index f7ab8429..b2fb06fa 100644 --- a/docs/enums/sortdirection.html +++ b/docs/enums/tableau.sortdirection.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - SortDirection + Tableau +
  • +
  • + SortDirection
  • Enumeration SortDirection

    @@ -69,8 +74,8 @@

    Index

    Enumeration members

    @@ -84,7 +89,7 @@

    Decreasing

    Decreasing: = "decreasing"
    @@ -94,7 +99,7 @@

    Increasing

    Increasing: = "increasing"
    @@ -106,25 +111,103 @@

    Increasing

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/tableaueventtype.html b/docs/enums/tableau.tableaueventtype.html similarity index 63% rename from docs/enums/tableaueventtype.html rename to docs/enums/tableau.tableaueventtype.html index b8d8296d..7283a154 100644 --- a/docs/enums/tableaueventtype.html +++ b/docs/enums/tableau.tableaueventtype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - TableauEventType + Tableau +
  • +
  • + TableauEventType
  • Enumeration TableauEventType

    @@ -65,7 +70,7 @@

    Enumeration TableauEventType

    -

    Represents a certain type of event which can be listened for

    +

    Represents the type of event that can be listened for.

    @@ -76,10 +81,10 @@

    Index

    Enumeration members

    @@ -93,12 +98,12 @@

    FilterChanged

    FilterChanged: = "filter-changed"
    -

    Raised when any filter has changed state.

    +

    Raised when any filter has changed state. You can use this event type with Worksheet objects.

    @@ -108,12 +113,12 @@

    MarkSelectionChanged

    MarkSelectionChanged: = "mark-selection-changed"
    -

    The selected marks on a visualization has changed

    +

    The selected marks on a visualization has changed. You can use this event type with Worksheet objects.

    @@ -123,12 +128,12 @@

    ParameterChanged

    ParameterChanged: = "parameter-changed"
    -

    A parameter has had its value modified

    +

    A parameter has had its value modified. You can use this event type with Parameter objects.

    @@ -138,12 +143,12 @@

    SettingsChanged

    SettingsChanged: = "settings-changed"
    -

    Settings have been changed for this extension.

    +

    Settings have been changed for this extension. You can use this event type with Settings objects.

    @@ -155,31 +160,109 @@

    SettingsChanged

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/trendlinemodeltype.html b/docs/enums/tableau.trendlinemodeltype.html similarity index 65% rename from docs/enums/trendlinemodeltype.html rename to docs/enums/tableau.trendlinemodeltype.html index d88feae1..35ae6375 100644 --- a/docs/enums/trendlinemodeltype.html +++ b/docs/enums/tableau.trendlinemodeltype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - TrendLineModelType + Tableau +
  • +
  • + TrendLineModelType
  • Enumeration TrendLineModelType

    @@ -69,10 +74,10 @@

    Index

    Enumeration members

    @@ -86,7 +91,7 @@

    Exponential

    Exponential: = "exponential"
    @@ -96,7 +101,7 @@

    Linear

    Linear: = "linear"
    @@ -106,7 +111,7 @@

    Logarithmic

    Logarithmic: = "logarithmic"
    @@ -116,7 +121,7 @@

    Polynomial

    Polynomial: = "polynomial"
    @@ -128,31 +133,109 @@

    Polynomial

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/enums/zonevisibilitytype.html b/docs/enums/tableau.zonevisibilitytype.html similarity index 64% rename from docs/enums/zonevisibilitytype.html rename to docs/enums/tableau.zonevisibilitytype.html index 67dec6b2..a40e5176 100644 --- a/docs/enums/zonevisibilitytype.html +++ b/docs/enums/tableau.zonevisibilitytype.html @@ -38,6 +38,8 @@ + + Menu @@ -52,7 +54,10 @@ Globals
  • - ZoneVisibilityType + Tableau +
  • +
  • + ZoneVisibilityType
  • Enumeration ZoneVisibilityType

    @@ -65,7 +70,7 @@

    Enumeration ZoneVisibilityType

    -

    Enum that represents the visibility state of a zone

    +

    Enum that represents the visibility state of a zone.

    since
    @@ -81,8 +86,8 @@

    Index

    Enumeration members

    @@ -96,12 +101,12 @@

    Hide

    Hide: = "hide"
    -

    Used for turning off the visibity of a zone in the dashboard.

    +

    Used for turning off the visibility of a zone in the dashboard.

    @@ -111,12 +116,12 @@

    Show

    Show: = "show"
    -

    Used for turning on the visibity of a zone in the dashboard.

    +

    Used for turning on the visibility of a zone in the dashboard.

    @@ -128,25 +133,103 @@

    Show

  • Globals
  • +
  • + Tableau +
  • diff --git a/docs/globals.html b/docs/globals.html index ef05bb75..66984ab4 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -38,6 +38,8 @@ + + Menu @@ -64,33 +66,9 @@

    Index

    -

    Enumerations

    +

    Modules

    @@ -148,6 +126,7 @@

    Interfaces

    Type aliases

    @@ -157,6 +136,21 @@

    Type aliases

    Type aliases

    +
    + +

    CategoricalValue

    +
    CategoricalValue: string | Array<string>
    + +
    +
    +

    Categorical values for selection.

    +
    +
    +

    TableauEventHandlerFn

    @@ -242,85 +236,13 @@

    Returns boolean Globals +
  • + Tableau +
  • + + Menu @@ -61,9 +63,10 @@

    Dashboard Extensions

    Tableau Dashboard Extensions API

    -

    The Tableau Extensions API is a JavaScript library that is organized into namespaces that contain the classes and methods for communicating with Tableau components. For an overview of how the API is organized, see Tableau Extensions API Basics. - -

    +

    The Tableau Extensions API is a JavaScript library that is organized into namespaces that contain the classes and methods for communicating with Tableau components. For an overview of how the API is organized, see Tableau Extensions API Basics.

    +
    + Note: To see all the methods and properties for the Extensions API interfaces, select the Inherited option in the upper-right corner of your browser window. This option shows any methods and properties inherited from base classes. +
    @@ -73,7 +76,7 @@

    Tableau Dashboard Extensions API

    - + @@ -108,85 +111,13 @@

    Tableau Dashboard Extensions API

  • Globals
  • +
  • + Tableau +
  • TableauTableau The top-level or global namespace is the tableau namespace, which has no constructs, but contains the extensions namespace. You use the tableau namespace to access the extensions. For example, you call tableau.extensions.initializeAsync() to initialize the API.
    + + + + + + + + + + + + + + + + + + + + + + + + +
    objecteventType
    WorksheetFilterChanged , MarkSelectionChanged
    ParameterParameterChanged
    SettingsSettingsChanged
    DashboardNone available

    Parameters

    • -
      eventType: TableauEventType
      +
      eventType: TableauEventType
      -

      The type of event to register for. The types of events are TableauEventTypes.

      +

      The type of event to register for. The type of event is a TableauEventType enumeration.

    • @@ -284,7 +312,7 @@

      findParameterAsync

      @@ -317,13 +345,13 @@

      getParametersAsync

      Returns Promise<Array<Parameter>>

      -

      A collection of all the Tableau Parameters which are used on this dashboard.

      +

      A collection of all the Tableau parameters that are used in this workbook.

    @@ -331,14 +359,14 @@

    Returns Promise

    removeEventListener

    • @@ -352,7 +380,7 @@

      removeEventListener

      Parameters

      • -
        eventType: TableauEventType
        +
        eventType: TableauEventType
      • handler: TableauEventHandlerFn
        @@ -367,13 +395,13 @@

        Returns boolean

        setZoneVisibilityAsync

          -
        • setZoneVisibilityAsync(zoneVisibilityMap: Map<number, ZoneVisibilityType>): Promise<void>
        • +
        • setZoneVisibilityAsync(zoneVisibilityMap: Map<number, ZoneVisibilityType>): Promise<void>
        • @@ -399,7 +427,7 @@

          setZoneVisibilityAsync

          Parameters

          • -
            zoneVisibilityMap: Map<number, ZoneVisibilityType>
            +
            zoneVisibilityMap: Map<number, ZoneVisibilityType>

            A map of zone ids to the desired state of visibilty for that zone.

            diff --git a/docs/interfaces/dashboardcontent.html b/docs/interfaces/dashboardcontent.html index 5de16d30..5aee1eac 100644 --- a/docs/interfaces/dashboardcontent.html +++ b/docs/interfaces/dashboardcontent.html @@ -38,6 +38,8 @@
          + +

      Menu diff --git a/docs/interfaces/dashboardobject.html b/docs/interfaces/dashboardobject.html index 00811987..1e2b3b48 100644 --- a/docs/interfaces/dashboardobject.html +++ b/docs/interfaces/dashboardobject.html @@ -38,6 +38,8 @@ + + Menu @@ -106,7 +108,7 @@

      dashboard

      dashboard: Dashboard
      @@ -123,7 +125,7 @@

      id

      id: number
      @@ -143,7 +145,7 @@

      isFloating

      isFloating: boolean
      @@ -163,7 +165,7 @@

      isVisible

      isVisible: boolean
      @@ -183,7 +185,7 @@

      name

      name: string
      @@ -203,7 +205,7 @@

      position

      position: Point
      @@ -220,7 +222,7 @@

      size

      size: Size
      @@ -234,10 +236,10 @@

      size

      type

      - +
      @@ -254,7 +256,7 @@

      worksheet

      worksheet: Worksheet | undefined
      diff --git a/docs/interfaces/datasource.html b/docs/interfaces/datasource.html index db6d38a8..9ff3f6a0 100644 --- a/docs/interfaces/datasource.html +++ b/docs/interfaces/datasource.html @@ -38,6 +38,8 @@
      + +
      Menu diff --git a/docs/interfaces/datasourceunderlyingdataoptions.html b/docs/interfaces/datasourceunderlyingdataoptions.html index dd88cce6..7fb19ab0 100644 --- a/docs/interfaces/datasourceunderlyingdataoptions.html +++ b/docs/interfaces/datasourceunderlyingdataoptions.html @@ -38,6 +38,8 @@
      + +
      Menu diff --git a/docs/interfaces/datatable.html b/docs/interfaces/datatable.html index ae9a214a..c55570d9 100644 --- a/docs/interfaces/datatable.html +++ b/docs/interfaces/datatable.html @@ -38,6 +38,8 @@
      + +
      Menu diff --git a/docs/interfaces/datavalue.html b/docs/interfaces/datavalue.html index bd2ffb35..bccd3272 100644 --- a/docs/interfaces/datavalue.html +++ b/docs/interfaces/datavalue.html @@ -38,6 +38,8 @@ + + Menu diff --git a/docs/interfaces/dialogoptions.html b/docs/interfaces/dialogoptions.html index c8b9c09d..502be9c3 100644 --- a/docs/interfaces/dialogoptions.html +++ b/docs/interfaces/dialogoptions.html @@ -38,6 +38,8 @@ + + Menu @@ -92,7 +94,7 @@

      Optional height

      height: undefined | number
      @@ -107,7 +109,7 @@

      Optional width

      width: undefined | number
      diff --git a/docs/interfaces/dualaxispair.html b/docs/interfaces/dualaxispair.html deleted file mode 100644 index 651434ea..00000000 --- a/docs/interfaces/dualaxispair.html +++ /dev/null @@ -1,1071 +0,0 @@ - - - - - - DualAxisPair | Frelard - - - - - -
      -
      -
      -
      -
      - Frelard -
      -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - - - -
      -
      - Menu -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      notimplemented
      -

      A dual axis pair represents a pair of fields used to create a dual axis chart. - This construct only contains the names of the fields used in the pair. The actual - field objects can be cross referenced in AxisEncoding.fields.

      -
      -
      -
      -
      -
      -

      Hierarchy

      -
        -
      • - DualAxisPair -
      • -
      -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      - -
      -
      -
      -
      -
      -

      Properties

      -
      - -

      firstFieldName

      -
      firstFieldName: string
      - -
      -
      -
      notimplemented
      -
      -
      returns
      -

      The name of the first field in the pair.

      -
      -
      -
      -
      -
      - -

      secondFieldName

      -
      secondFieldName: string
      - -
      -
      -
      notimplemented
      -
      -
      returns
      -

      The name of the second field in the pair.

      -
      -
      -
      -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Module
      • -
      • Object literal
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Index signature
      • -
      • Type alias
      • -
      -
        -
      • Enumeration
      • -
      • Enumeration member
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      • Index signature
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      • Accessor
      • -
      • Index signature
      • -
      -
        -
      • Inherited constructor
      • -
      • Inherited property
      • -
      • Inherited method
      • -
      • Inherited accessor
      • -
      -
        -
      • Protected property
      • -
      • Protected method
      • -
      • Protected accessor
      • -
      -
        -
      • Private property
      • -
      • Private method
      • -
      • Private accessor
      • -
      -
        -
      • Static property
      • -
      • Static method
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      -
      - - - \ No newline at end of file diff --git a/docs/interfaces/encoding.html b/docs/interfaces/encoding.html deleted file mode 100644 index e1fdfd08..00000000 --- a/docs/interfaces/encoding.html +++ /dev/null @@ -1,1079 +0,0 @@ - - - - - - Encoding | Frelard - - - - - -
      -
      -
      -
      -
      - Frelard -
      -
      -
      - Options -
      -
      - All -
        -
      • Public
      • -
      • Public/Protected
      • -
      • All
      • -
      -
      - - - - -
      -
      - Menu -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      notimplemented
      -

      An encoding describes the makeup of a visualization. The collection - of all encodings in a worksheet determins how the visuzlation looks.

      -
      -
      -
      -
      -
      -

      Hierarchy

      - -
      -
      -

      Index

      -
      -
      -
      -

      Properties

      - -
      -
      -
      -
      -
      -

      Properties

      -
      - -

      encodingType

      -
      encodingType: "column" | "row" | "page" | "filter" | "marks-type" | "measure-values" | "color" | "size" | "label" | "detail" | "tooltip" | "shape" | "path" | "angle"
      - -
      -
      -
      notimplemented
      -
      -
      returns
      -

      The type of encoding this is.

      -
      -
      -
      -
      -
      - -

      fields

      -
      fields: Array<Field>
      - -
      -
      -
      notimplemented
      -
      -
      returns
      -

      The fields used in this encoding. Can be one or more fields. - For example. A row encoding will contain all the fields on the row shelf.

      -
      -
      -
      -
      -
      -
      -
      -

      Legend

      -
      -
        -
      • Module
      • -
      • Object literal
      • -
      • Variable
      • -
      • Function
      • -
      • Function with type parameter
      • -
      • Index signature
      • -
      • Type alias
      • -
      -
        -
      • Enumeration
      • -
      • Enumeration member
      • -
      • Property
      • -
      • Method
      • -
      -
        -
      • Interface
      • -
      • Interface with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      • Index signature
      • -
      -
        -
      • Class
      • -
      • Class with type parameter
      • -
      • Constructor
      • -
      • Property
      • -
      • Method
      • -
      • Accessor
      • -
      • Index signature
      • -
      -
        -
      • Inherited constructor
      • -
      • Inherited property
      • -
      • Inherited method
      • -
      • Inherited accessor
      • -
      -
        -
      • Protected property
      • -
      • Protected method
      • -
      • Protected accessor
      • -
      -
        -
      • Private property
      • -
      • Private method
      • -
      • Private accessor
      • -
      -
        -
      • Static property
      • -
      • Static method
      • -
      -
      -
      -
      -
      -

      Generated using TypeDoc

      -
      -
      -
      - - - \ No newline at end of file diff --git a/docs/interfaces/environment.html b/docs/interfaces/environment.html index c459f952..e10ca137 100644 --- a/docs/interfaces/environment.html +++ b/docs/interfaces/environment.html @@ -38,6 +38,8 @@
      + +
      Menu @@ -119,7 +121,7 @@

      apiVersion

      context

      - +