From 9bd76313780f225e8e432c5352364f3346649749 Mon Sep 17 00:00:00 2001 From: Dave Hagen Date: Wed, 5 Jun 2024 11:14:17 -0700 Subject: [PATCH 1/9] Update readme for v1.12 and viz extensions --- README.md | 30 +++++++++++++++++++++++------- assets/sm_sankey.png | Bin 0 -> 264376 bytes 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 assets/sm_sankey.png diff --git a/README.md b/README.md index 7f2d6ea0..b8c981b7 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,26 @@ ![Image of Flex the T-Rex](./assets/flex.png) + ## Why the Tableau Extensions API? -The Extensions API lets you do more without leaving Tableau. Build Tableau extensions that can interact and communicate with Tableau, and embed them directly in your workbooks. + +The Extensions API lets you do more without leaving Tableau. Build Tableau dashboard and viz extensions that can interact and communicate with Tableau, and embed them directly in your workbooks. + +* Build viz extensions to create new viz types that Tableau users can access through the worksheet Marks card. + + + + + +* Build dashboard extensions to add new features and functionality to Tableau that users can access through the dashboard. + + + ## Setup and Running Samples ### Prerequisites + * You must have Node.js and npm installed. You can get these from [https://nodejs.org](https://nodejs.org). ### Install Extensions API SDK Components and Start Server @@ -27,13 +41,14 @@ The Extensions API lets you do more without leaving Tableau. Build Tableau exten **npm start** -5. Launch Tableau and try the sample extensions in a dashboard. The samples are located in the `Samples` folder. +5. Launch Tableau and try a dashboard sample extension in a dashboard, or a viz extension in a worksheet. The dashboard and viz extension samples are located in the `Samples` folder. - >**Note** The local web server you start just serves to host the extension samples and extensions used in the 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. + >**Note** The local web server you start just serves to host the extension samples and dashboard extensions used in the tutorial. These extensions have URLs similar to the following: `http://localhost:8765/Samples/Dashboard/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). ### Typescript Development + Samples written in Typescript are located in the `Samples-Typescript` folder. If you want to use TypeScript to write your extensions, you can run a script that starts up the HTTP server and actively listens for changes to the `.ts` files located in the `Samples-Typescript` folder. You can then add your extension to the folder and use the script to transpile your extension to JavaScript. @@ -41,7 +56,7 @@ If you want to use TypeScript to write your extensions, you can run a script tha **npm run dev** -For more information, see [Use TypeScript with the Extensions API](https://tableau.github.io/extensions-api/docs/trex_typescript.html). +For more information, see [Use TypeScript with the Extensions API](https://tableau.github.io/extensions-api/docs/core/trex_typescript). ### Sandboxed Extension Development Environment @@ -51,11 +66,12 @@ Tableau is introducing development support for Sandboxed Extensions with Tableau **npm run start-sandbox** -2. Launch Tableau (Tableau 2019.3 and later) and try the sample Sandboxed Extension in a dashboard. You can find the `.trex` file and sample code in the `Samples\UINamespace-sandboxed` folder. +2. Launch Tableau (Tableau 2019.3 and later) and try the sample Sandboxed dashboard extension in a dashboard. You can find the `.trex` file and sample code in the `Samples\UINamespace-sandboxed` folder. -For more information, see [Create and Test Sandboxed Extensions](https://tableau.github.io/extensions-api/docs/trex_sandbox_test.html). +For more information, see [Create and Test Sandboxed Extensions](https://tableau.github.io/extensions-api/docs/security/trex_sandbox_test). ## Contributions + Contributions and improvements by the community are welcomed! See the LICENSE file for current open-source licensing and use information. diff --git a/assets/sm_sankey.png b/assets/sm_sankey.png new file mode 100644 index 0000000000000000000000000000000000000000..29f6bc1c5d5af133927f6aa3738a7e977461c8c0 GIT binary patch literal 264376 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 z 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 x1U3(CCmaaC|TJJ~{wX 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℞n=!rpjQT7u0K`)z_EV@7 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�IHUCEQ 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 Date: Thu, 6 Jun 2024 23:33:54 -0700 Subject: [PATCH 2/9] updated samples paths in code & docs --- README.md | 2 +- .../Annotation/Annotation.trex | 2 +- .../Annotation/annotation.html | 4 +-- .../{ => Dashboard}/Annotation/annotation.ts | 0 .../DashboardLayout/DashboardLayout.trex | 2 +- .../DashboardLayout/dashboardLayout.html | 4 +-- .../DashboardLayout/dashboardLayout.ts | 0 .../DashboardObjectVisibility.trex | 2 +- .../dashboardObjectVisibility.html | 4 +-- .../dashboardObjectVisibility.tsx | 0 .../DataSources/DataSources.trex | 2 +- .../DataSources/datasources.html | 4 +-- .../DataSources/datasources.ts | 0 .../{ => Dashboard}/Filtering/Filtering.trex | 2 +- .../{ => Dashboard}/Filtering/filtering.html | 4 +-- .../{ => Dashboard}/Filtering/filtering.ts | 0 .../Formatting/formatting.html | 4 +-- .../Dashboard}/Formatting/formatting.trex | 2 +- .../{ => Dashboard}/Formatting/formatting.tsx | 0 .../MoveAndResize/MoveAndResize.trex | 2 +- .../MoveAndResize/moveAndResize.tsx | 0 .../MoveAndResize/moveandresize.html | 4 +-- .../Parameters/Parameters.trex | 2 +- .../Parameters/parameters.html | 4 +-- .../{ => Dashboard}/Parameters/parameters.ts | 0 .../ReplayAnimation/ReplayAnimation.trex | 2 +- .../ReplayAnimation/replayAnimation.tsx | 0 .../ReplayAnimation/replayanimation.html | 4 +-- .../{ => Dashboard}/VizImage/VizImage.trex | 2 +- .../{ => Dashboard}/VizImage/vizImage.html | 4 +-- .../{ => Dashboard}/VizImage/vizImage.ts | 0 .../Annotation/Annotation.trex | 2 +- .../Annotation/annotation.html | 2 +- .../{ => Dashboard}/Annotation/annotation.js | 0 .../ClickThrough/ClickThrough.trex | 2 +- .../ClickThrough/clickThrough.html | 2 +- .../ClickThrough/clickThrough.js | 0 .../DashboardLayout/DashboardLayout.trex | 2 +- .../DashboardLayout/dashboardLayout.html | 2 +- .../DashboardLayout/dashboardLayout.js | 0 .../DashboardObjectVisibility.trex | 2 +- .../dashboardObjectVisibility.html | 2 +- .../dashboardObjectVisibility.js | 0 .../DataSources/DataSources.trex | 2 +- .../DataSources/datasources.html | 2 +- .../DataSources/datasources.js | 0 .../{ => Dashboard}/Filtering/Filtering.trex | 2 +- .../{ => Dashboard}/Filtering/filtering.html | 2 +- .../{ => Dashboard}/Filtering/filtering.js | 0 .../Formatting/formatting.html | 2 +- .../Dashboard}/Formatting/formatting.trex | 4 +-- .../MoveAndResize/MoveAndResize.trex | 2 +- .../MoveAndResize/moveAndResize.js | 0 .../MoveAndResize/moveandresize.html | 2 +- .../Parameters/Parameters.trex | 2 +- .../Parameters/parameters.html | 2 +- .../{ => Dashboard}/Parameters/parameters.js | 0 .../ReplayAnimation/ReplayAnimation.trex | 4 +-- .../ReplayAnimation/replayAnimation.js | 0 .../ReplayAnimation/replayanimation.html | 2 +- .../{ => Dashboard}/Settings/Settings.trex | 2 +- .../{ => Dashboard}/Settings/settings.html | 2 +- Samples/{ => Dashboard}/Settings/settings.js | 0 .../UINamespace-sandboxed/bootstrap.min.css | 0 .../UINamespace-sandboxed/bootstrap.min.js | 0 .../UINamespace-sandboxed/jquery-3.2.1.min.js | 0 .../UINamespace-sandboxed/uiNamespace.html | 0 .../UINamespace-sandboxed/uiNamespace.js | 0 .../UINamespace-sandboxed/uiNamespace.trex | 0 .../uiNamespaceDialog.html | 0 .../uiNamespaceDialog.js | 0 .../UINamespace/uiNamespace.html | 2 +- .../UINamespace/uiNamespace.js | 2 +- .../UINamespace/uiNamespace.trex | 2 +- .../UINamespace/uiNamespaceDialog.html | 2 +- .../UINamespace/uiNamespaceDialog.js | 0 .../{ => Dashboard}/VizImage/VizImage.trex | 2 +- .../{ => Dashboard}/VizImage/vizImage.html | 2 +- Samples/{ => Dashboard}/VizImage/vizImage.js | 0 .../{ => Dashboard}/VizImage2/VizImage2.trex | 2 +- .../{ => Dashboard}/VizImage2/vizImage2.html | 2 +- .../{ => Dashboard}/VizImage2/vizImage2.js | 0 .../{ => Dashboard}/.vscode/settings.json | 0 .../Manifests/Tutorial Complete.trex | 4 +-- .../Manifests/Tutorial_Part_0.trex | 4 +-- .../Manifests/Tutorial_Part_1.trex | 4 +-- .../Manifests/Tutorial_Part_2.trex | 4 +-- .../Manifests/Tutorial_Part_3.trex | 4 +-- .../Manifests/Tutorial_Part_4.trex | 4 +-- .../Manifests/Tutorial_Part_5.trex | 4 +-- .../Manifests/Tutorial_Part_6.trex | 4 +-- .../{ => Dashboard}/Part_0/MarksSelection.css | 0 .../Part_0/MarksSelection.html | 0 .../{ => Dashboard}/Part_0/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_0/readme.md | 2 +- .../{ => Dashboard}/Part_1/MarksSelection.css | 0 .../Part_1/MarksSelection.html | 0 .../{ => Dashboard}/Part_1/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_1/readme.md | 0 .../{ => Dashboard}/Part_2/MarksSelection.css | 0 .../Part_2/MarksSelection.html | 0 .../{ => Dashboard}/Part_2/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_2/readme.md | 0 .../{ => Dashboard}/Part_3/MarksSelection.css | 0 .../Part_3/MarksSelection.html | 0 .../{ => Dashboard}/Part_3/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_3/readme.md | 0 .../{ => Dashboard}/Part_4/MarksSelection.css | 0 .../Part_4/MarksSelection.html | 0 .../{ => Dashboard}/Part_4/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_4/readme.md | 0 .../{ => Dashboard}/Part_5/MarksSelection.css | 0 .../Part_5/MarksSelection.html | 0 .../{ => Dashboard}/Part_5/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_5/readme.md | 0 .../{ => Dashboard}/Part_6/MarksSelection.css | 0 .../Part_6/MarksSelection.html | 0 .../{ => Dashboard}/Part_6/MarksSelection.js | 0 Tutorial/{ => Dashboard}/Part_6/readme.md | 0 Tutorial/{ => Dashboard}/ReactVersion/.env | 0 .../{ => Dashboard}/ReactVersion/.gitignore | 0 .../{ => Dashboard}/ReactVersion/README.md | 0 .../ReactVersion/TutorialReact.trex | 0 .../{ => Dashboard}/ReactVersion/package.json | 4 +-- .../ReactVersion/public/favicon.ico | Bin .../ReactVersion/public/index.html | 0 .../ReactVersion/public/robots.txt | 0 .../ReactVersion/public/setting.svg | 0 .../ReactVersion/public/undo-arrow.svg | 0 .../ReactVersion/src/DataTableComponent.js | 0 .../src/LoadingIndicatorComponent.js | 0 .../{ => Dashboard}/ReactVersion/src/Main.js | 0 .../ReactVersion/src/SheetListComponent.js | 0 .../{ => Dashboard}/ReactVersion/src/index.js | 0 .../ReactVersion/src/styles/DataTable.css | 0 .../src/styles/LoadingIndicator.css | 0 .../ReactVersion/src/styles/Main.css | 0 .../ReactVersion/src/styles/SheetList.css | 0 Tutorial/{ => Dashboard}/assets/Completed.gif | Bin Tutorial/{ => Dashboard}/assets/Part_0.png | Bin Tutorial/{ => Dashboard}/assets/Part_1.png | Bin Tutorial/{ => Dashboard}/assets/Part_2.gif | Bin Tutorial/{ => Dashboard}/assets/Part_3.gif | Bin Tutorial/{ => Dashboard}/assets/Part_4.gif | Bin Tutorial/{ => Dashboard}/assets/Part_5.gif | Bin Tutorial/{ => Dashboard}/assets/Part_6.gif | Bin Tutorial/{ => Dashboard}/favicon.ico | Bin Tutorial/{ => Dashboard}/readme.md | 0 docs/trex_configure.md | 2 +- docs/trex_debug_server.md | 2 +- docs/trex_error_handling.md | 2 +- docs/trex_events.md | 2 +- docs/trex_examples.md | 24 +++++++++--------- docs/trex_format.md | 2 +- docs/trex_getstarted.md | 8 +++--- docs/trex_release-notes.md | 18 ++++++------- docs/trex_sandbox_test.md | 8 +++--- docs/trex_tableau_viz.md | 2 +- package.json | 4 +-- sandbox-config.json | 2 +- webpack.config.js | 20 +++++++-------- 161 files changed, 130 insertions(+), 130 deletions(-) rename Samples-Typescript/{ => Dashboard}/Annotation/Annotation.trex (97%) rename Samples-Typescript/{ => Dashboard}/Annotation/annotation.html (87%) rename Samples-Typescript/{ => Dashboard}/Annotation/annotation.ts (100%) rename Samples-Typescript/{ => Dashboard}/DashboardLayout/DashboardLayout.trex (96%) rename Samples-Typescript/{ => Dashboard}/DashboardLayout/dashboardLayout.html (86%) rename Samples-Typescript/{ => Dashboard}/DashboardLayout/dashboardLayout.ts (100%) rename Samples-Typescript/{ => Dashboard}/DashboardObjectVisibility/DashboardObjectVisibility.trex (96%) rename Samples-Typescript/{ => Dashboard}/DashboardObjectVisibility/dashboardObjectVisibility.html (82%) rename Samples-Typescript/{ => Dashboard}/DashboardObjectVisibility/dashboardObjectVisibility.tsx (100%) rename Samples-Typescript/{ => Dashboard}/DataSources/DataSources.trex (94%) rename Samples-Typescript/{ => Dashboard}/DataSources/datasources.html (96%) rename Samples-Typescript/{ => Dashboard}/DataSources/datasources.ts (100%) rename Samples-Typescript/{ => Dashboard}/Filtering/Filtering.trex (94%) rename Samples-Typescript/{ => Dashboard}/Filtering/filtering.html (93%) rename Samples-Typescript/{ => Dashboard}/Filtering/filtering.ts (100%) rename Samples-Typescript/{ => Dashboard}/Formatting/formatting.html (94%) rename {Samples => Samples-Typescript/Dashboard}/Formatting/formatting.trex (97%) rename Samples-Typescript/{ => Dashboard}/Formatting/formatting.tsx (100%) rename Samples-Typescript/{ => Dashboard}/MoveAndResize/MoveAndResize.trex (94%) rename Samples-Typescript/{ => Dashboard}/MoveAndResize/moveAndResize.tsx (100%) rename Samples-Typescript/{ => Dashboard}/MoveAndResize/moveandresize.html (85%) rename Samples-Typescript/{ => Dashboard}/Parameters/Parameters.trex (94%) rename Samples-Typescript/{ => Dashboard}/Parameters/parameters.html (92%) rename Samples-Typescript/{ => Dashboard}/Parameters/parameters.ts (100%) rename Samples-Typescript/{ => Dashboard}/ReplayAnimation/ReplayAnimation.trex (96%) rename Samples-Typescript/{ => Dashboard}/ReplayAnimation/replayAnimation.tsx (100%) rename Samples-Typescript/{ => Dashboard}/ReplayAnimation/replayanimation.html (83%) rename Samples-Typescript/{ => Dashboard}/VizImage/VizImage.trex (94%) rename Samples-Typescript/{ => Dashboard}/VizImage/vizImage.html (93%) rename Samples-Typescript/{ => Dashboard}/VizImage/vizImage.ts (100%) rename Samples/{ => Dashboard}/Annotation/Annotation.trex (97%) rename Samples/{ => Dashboard}/Annotation/annotation.html (92%) rename Samples/{ => Dashboard}/Annotation/annotation.js (100%) rename Samples/{ => Dashboard}/ClickThrough/ClickThrough.trex (97%) rename Samples/{ => Dashboard}/ClickThrough/clickThrough.html (90%) rename Samples/{ => Dashboard}/ClickThrough/clickThrough.js (100%) rename Samples/{ => Dashboard}/DashboardLayout/DashboardLayout.trex (97%) rename Samples/{ => Dashboard}/DashboardLayout/dashboardLayout.html (92%) rename Samples/{ => Dashboard}/DashboardLayout/dashboardLayout.js (100%) rename Samples/{ => Dashboard}/DashboardObjectVisibility/DashboardObjectVisibility.trex (96%) rename Samples/{ => Dashboard}/DashboardObjectVisibility/dashboardObjectVisibility.html (92%) rename Samples/{ => Dashboard}/DashboardObjectVisibility/dashboardObjectVisibility.js (100%) rename Samples/{ => Dashboard}/DataSources/DataSources.trex (95%) rename Samples/{ => Dashboard}/DataSources/datasources.html (97%) rename Samples/{ => Dashboard}/DataSources/datasources.js (100%) rename Samples/{ => Dashboard}/Filtering/Filtering.trex (95%) rename Samples/{ => Dashboard}/Filtering/filtering.html (96%) rename Samples/{ => Dashboard}/Filtering/filtering.js (100%) rename Samples/{ => Dashboard}/Formatting/formatting.html (98%) rename {Samples-Typescript => Samples/Dashboard}/Formatting/formatting.trex (93%) rename Samples/{ => Dashboard}/MoveAndResize/MoveAndResize.trex (94%) rename Samples/{ => Dashboard}/MoveAndResize/moveAndResize.js (100%) rename Samples/{ => Dashboard}/MoveAndResize/moveandresize.html (93%) rename Samples/{ => Dashboard}/Parameters/Parameters.trex (95%) rename Samples/{ => Dashboard}/Parameters/parameters.html (95%) rename Samples/{ => Dashboard}/Parameters/parameters.js (100%) rename Samples/{ => Dashboard}/ReplayAnimation/ReplayAnimation.trex (94%) rename Samples/{ => Dashboard}/ReplayAnimation/replayAnimation.js (100%) rename Samples/{ => Dashboard}/ReplayAnimation/replayanimation.html (92%) rename Samples/{ => Dashboard}/Settings/Settings.trex (95%) rename Samples/{ => Dashboard}/Settings/settings.html (96%) rename Samples/{ => Dashboard}/Settings/settings.js (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/bootstrap.min.css (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/bootstrap.min.js (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/jquery-3.2.1.min.js (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/uiNamespace.html (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/uiNamespace.js (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/uiNamespace.trex (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/uiNamespaceDialog.html (100%) rename Samples/{ => Dashboard}/UINamespace-sandboxed/uiNamespaceDialog.js (100%) rename Samples/{ => Dashboard}/UINamespace/uiNamespace.html (96%) rename Samples/{ => Dashboard}/UINamespace/uiNamespace.js (98%) rename Samples/{ => Dashboard}/UINamespace/uiNamespace.trex (95%) rename Samples/{ => Dashboard}/UINamespace/uiNamespaceDialog.html (94%) rename Samples/{ => Dashboard}/UINamespace/uiNamespaceDialog.js (100%) rename Samples/{ => Dashboard}/VizImage/VizImage.trex (95%) rename Samples/{ => Dashboard}/VizImage/vizImage.html (96%) rename Samples/{ => Dashboard}/VizImage/vizImage.js (100%) rename Samples/{ => Dashboard}/VizImage2/VizImage2.trex (95%) rename Samples/{ => Dashboard}/VizImage2/vizImage2.html (97%) rename Samples/{ => Dashboard}/VizImage2/vizImage2.js (100%) rename Tutorial/{ => Dashboard}/.vscode/settings.json (100%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial Complete.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_0.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_1.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_2.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_3.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_4.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_5.trex (98%) rename Tutorial/{ => Dashboard}/Manifests/Tutorial_Part_6.trex (98%) rename Tutorial/{ => Dashboard}/Part_0/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_0/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_0/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_0/readme.md (92%) rename Tutorial/{ => Dashboard}/Part_1/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_1/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_1/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_1/readme.md (100%) rename Tutorial/{ => Dashboard}/Part_2/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_2/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_2/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_2/readme.md (100%) rename Tutorial/{ => Dashboard}/Part_3/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_3/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_3/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_3/readme.md (100%) rename Tutorial/{ => Dashboard}/Part_4/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_4/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_4/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_4/readme.md (100%) rename Tutorial/{ => Dashboard}/Part_5/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_5/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_5/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_5/readme.md (100%) rename Tutorial/{ => Dashboard}/Part_6/MarksSelection.css (100%) rename Tutorial/{ => Dashboard}/Part_6/MarksSelection.html (100%) rename Tutorial/{ => Dashboard}/Part_6/MarksSelection.js (100%) rename Tutorial/{ => Dashboard}/Part_6/readme.md (100%) rename Tutorial/{ => Dashboard}/ReactVersion/.env (100%) rename Tutorial/{ => Dashboard}/ReactVersion/.gitignore (100%) rename Tutorial/{ => Dashboard}/ReactVersion/README.md (100%) rename Tutorial/{ => Dashboard}/ReactVersion/TutorialReact.trex (100%) rename Tutorial/{ => Dashboard}/ReactVersion/package.json (77%) rename Tutorial/{ => Dashboard}/ReactVersion/public/favicon.ico (100%) rename Tutorial/{ => Dashboard}/ReactVersion/public/index.html (100%) rename Tutorial/{ => Dashboard}/ReactVersion/public/robots.txt (100%) rename Tutorial/{ => Dashboard}/ReactVersion/public/setting.svg (100%) rename Tutorial/{ => Dashboard}/ReactVersion/public/undo-arrow.svg (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/DataTableComponent.js (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/LoadingIndicatorComponent.js (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/Main.js (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/SheetListComponent.js (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/index.js (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/styles/DataTable.css (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/styles/LoadingIndicator.css (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/styles/Main.css (100%) rename Tutorial/{ => Dashboard}/ReactVersion/src/styles/SheetList.css (100%) rename Tutorial/{ => Dashboard}/assets/Completed.gif (100%) rename Tutorial/{ => Dashboard}/assets/Part_0.png (100%) rename Tutorial/{ => Dashboard}/assets/Part_1.png (100%) rename Tutorial/{ => Dashboard}/assets/Part_2.gif (100%) rename Tutorial/{ => Dashboard}/assets/Part_3.gif (100%) rename Tutorial/{ => Dashboard}/assets/Part_4.gif (100%) rename Tutorial/{ => Dashboard}/assets/Part_5.gif (100%) rename Tutorial/{ => Dashboard}/assets/Part_6.gif (100%) rename Tutorial/{ => Dashboard}/favicon.ico (100%) rename Tutorial/{ => Dashboard}/readme.md (100%) diff --git a/README.md b/README.md index 7f2d6ea0..da74a6ed 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The Extensions API lets you do more without leaving Tableau. Build Tableau exten 5. Launch Tableau and try the sample extensions in a dashboard. The samples are located in the `Samples` folder. - >**Note** The local web server you start just serves to host the extension samples and extensions used in the tutorial, which have URLs similar to the following: `http://localhost:8765/Samples/DataSources/datasources.html` or `http://localhost:8765/Samples-Typescript/DataSources/datasources.html` + >**Note** The local web server you start just serves to host the extension samples and extensions used in the tutorial, which have URLs similar to the following: `http://localhost:8765/Samples/Dashboard/DataSources/datasources.html` or `http://localhost:8765/Samples-Typescript/Dashboard/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/Annotation/Annotation.trex b/Samples-Typescript/Dashboard/Annotation/Annotation.trex similarity index 97% rename from Samples-Typescript/Annotation/Annotation.trex rename to Samples-Typescript/Dashboard/Annotation/Annotation.trex index 1d1b4b78..ba39183a 100644 --- a/Samples-Typescript/Annotation/Annotation.trex +++ b/Samples-Typescript/Dashboard/Annotation/Annotation.trex @@ -7,7 +7,7 @@ 1.10 - http://localhost:8765/Samples-Typescript/Annotation/annotation.html + http://localhost:8765/Samples-Typescript/Dashboard/Annotation/annotation.html iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH4QgLDTYEcBRoeAAABp9JREFUeNrlm01sHEUWx//vVbs79gThjAd2iflIAkEcEARfEciBSYLEbbV8SJaDEpIAMQgkViuirA8IskKcdiEJX3G0C5dNpAVxQLIyiYw4YYIQBw4RBoMgBBIbCRtnOsx0vbcHd9sTZ3r8ge2p2bQ0B/+7unp+1dX/eX71ivL5TgAwAAQAxR/rsiYidvv2btq6ddcqVRwE8JCqgoigqgAAIvpKVbf29v51cHDwUxWRav2pWbdujcH04cUnPFc1EZGOjtv5hRdebv3tt9I+IupWVSaiGBxgJqhqlpnPj42NnchmsxpFUbX+mJORiE9E8eigorEzmohEHR23U1/fO63j47/+nYh2qqpJ4CcHgKEKMPOxIPBfef75PeUwDNPuoclozGxgXdMq4X/5ZWwfEe1Q1crZO/UKENGxIPCfKBbD4U2bNvo17qEeAHYJNA3+jjtuW2x4TgbAAmhyATRNy+XauK/vndaxsfEXFwk+0SIv/kNR/d2rOzwAc+TIu5ExnCeiR2vA9weB3zNXeM/zImutSUzQWfgYUpnNlapa6eCVP3slIjoShheGN2++Z1b4q6/+Q3T69Jng7Nlz0hAmODFxhq+4ol1S4AHAF5Fe3286u2PH1v5Dh9724nOX9Hf8+IfllpaWm8Mw3E2Eo4wGMMGVK1cLM6fBJ9q6cjna39W1c0tX14PW9/2q8JlMy01hGL4C4GlV/IsxHRnVHTRNi2G5BnyirbPWHty+vSe/YcOt5Pv+JfDFYrgfwBYAUNX1jGkTrDtoLU1E7CzwybEWwBsvvfSPe9evvxHGsKbAg4imwk1yBRTVTRCe5xlr7WzwibYGwOsHDry1O4qi/pnwAMDMEBEkL5YToGlaGP7E1tpaJlhNW2ut3e953rZiMfxnJXxlu4aIBJub/1gyxngiMlf4RLvRWnsQgF+tHRGp8yZYKAyUgiC4RVW75gmfaCtQ3UDLqnrUaRMsFAZKK1asuKVcLr+pqncuAD5NswAONzc3P+lsJDgD/q5Fhu/L5bJ/C8Nw1EkTXHr4tr3nzo2Obtx4NzlngssDPzKaz3d6xrBbJriM8E00mUayzvw7vEB4JaL3VfUDZjYARERgjGFrrY01FZGJtrZsoQI+ua9xIhJcKDwzHWU2T5dKpbP9/e/RNdes1h9++J7b26+TH388QwBw/fVrdGjoFJ869aXOgPcQJ0TQyPDd3Q+Pbtq0sQnTma0IF2e4Es2bCY965wQXA/67777nBX4XBlA/E6wzvEG8SFIXE3QAPtGWPyfoELyH+BXAZQq/vCboIPzymaCD8Mtngo7CJ9rSmqDj8Etrgg0Av3Qm2CDwS2OCDQK/NCbYQPCJtngm2IDwi2eCDQq/OCbYwPC/3wQbGD7dBEUkuuqqHHd0bLDbtj0iJ09+wu3t15XiFFM0mXY6zfff/+dSc3PDwieaoXy+M6mgrKzGWjU+Pp5nNq1xchEAWESsMcZYa4WZPVXtmseKjWvwF+cEK+vwkmosa22yNj8FlSxRz3Oh0kl4JCY4nyLEBWiuwk+a4PnzRXsZwk+ZIKlaam1dtSquvb1c4BONiJmzqvoiEe26zOA9ABER0X+I8CfVqcWE3wsPZnqf2ezq7n74Z5fhEQdCD4poNXgBcGEhAyKiH5TL5XOOwzMAZlWli+vtpwuPmflxAF/PdzYwM6dVajqkEQDLafBB4PdYa//d1OQ9parDc4WPD4n7dQG0lmbiJ6Uz4Z8oFsPhzZvv8ffs+Uu/MaYHwDdzhIeIYGLijFOFFymaXlQ9NbPeXkSijz/+xPT07DxGRI8T0bdzeRWMMbxy5WpxCDTdBIloSCR9s4G1loaGvsZzzz1zAsBjyUyoNRustXZGdUa9QWua4CPM/Krvp282KJVK3ueff6GHDx84bozZDWB4FhN0CbR2JLhly708PPytd+21qyNjTM2LiAiFwkDZ87xt1trXAATVZgMz77LWvpXPd85l20pdI0G21uratTfMCg8AhcJAOZNpucla+0AaPIBIRCYGB080hAl6ACAis15UreS8CrwFcLitLXu8UPgw2YvoAmjNSHDWJzUP+L5crm3vyMjoyMDAR67DT5ogZskJzhe+SilavUFrR4KYzglectGzzz4ZZTKZm4vF8NX/M/hEq7owwgCQybREvb37gmKxuBvAfcD0NpNKwwNwKJfLTpWfVoHnKl/CFU05fvoUN9D4ExWLIZ88+dkFIjoK4KsEXkSmBkBV/xsEwd6RkZ9H8/lOJiKN+7mkP1e1/wFtM6PWK/V/BwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNy0wOC0xMVQxMzo1NDowNC0wNDowMMrC9wEAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDgtMTFUMTM6NTQ6MDQtMDQ6MDC7n0+9AAAAAElFTkSuQmCC diff --git a/Samples-Typescript/Annotation/annotation.html b/Samples-Typescript/Dashboard/Annotation/annotation.html similarity index 87% rename from Samples-Typescript/Annotation/annotation.html rename to Samples-Typescript/Dashboard/Annotation/annotation.html index 6a014b0a..403f4efc 100644 --- a/Samples-Typescript/Annotation/annotation.html +++ b/Samples-Typescript/Dashboard/Annotation/annotation.html @@ -10,10 +10,10 @@ - + - +

diff --git a/Samples-Typescript/Annotation/annotation.ts b/Samples-Typescript/Dashboard/Annotation/annotation.ts similarity index 100% rename from Samples-Typescript/Annotation/annotation.ts rename to Samples-Typescript/Dashboard/Annotation/annotation.ts diff --git a/Samples-Typescript/DashboardLayout/DashboardLayout.trex b/Samples-Typescript/Dashboard/DashboardLayout/DashboardLayout.trex similarity index 96% rename from Samples-Typescript/DashboardLayout/DashboardLayout.trex rename to Samples-Typescript/Dashboard/DashboardLayout/DashboardLayout.trex index 39b11050..14085265 100644 --- a/Samples-Typescript/DashboardLayout/DashboardLayout.trex +++ b/Samples-Typescript/Dashboard/DashboardLayout/DashboardLayout.trex @@ -7,7 +7,7 @@ 1.7 - http://localhost:8765/Samples-Typescript/DashboardLayout/dashboardLayout.html + http://localhost:8765/Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.html 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 diff --git a/Samples-Typescript/DashboardLayout/dashboardLayout.html b/Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.html similarity index 86% rename from Samples-Typescript/DashboardLayout/dashboardLayout.html rename to Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.html index c2253baa..4e2b95c0 100644 --- a/Samples-Typescript/DashboardLayout/dashboardLayout.html +++ b/Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.html @@ -10,10 +10,10 @@ - + - +
diff --git a/Samples-Typescript/DashboardLayout/dashboardLayout.ts b/Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.ts similarity index 100% rename from Samples-Typescript/DashboardLayout/dashboardLayout.ts rename to Samples-Typescript/Dashboard/DashboardLayout/dashboardLayout.ts diff --git a/Samples-Typescript/DashboardObjectVisibility/DashboardObjectVisibility.trex b/Samples-Typescript/Dashboard/DashboardObjectVisibility/DashboardObjectVisibility.trex similarity index 96% rename from Samples-Typescript/DashboardObjectVisibility/DashboardObjectVisibility.trex rename to Samples-Typescript/Dashboard/DashboardObjectVisibility/DashboardObjectVisibility.trex index 14c8c3b8..d1b02e8c 100644 --- a/Samples-Typescript/DashboardObjectVisibility/DashboardObjectVisibility.trex +++ b/Samples-Typescript/Dashboard/DashboardObjectVisibility/DashboardObjectVisibility.trex @@ -7,7 +7,7 @@ 1.7 - http://localhost:8765/Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.html + http://localhost:8765/Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.html 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 diff --git a/Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.html b/Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.html similarity index 82% rename from Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.html rename to Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.html index 778d911e..0364caaa 100644 --- a/Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.html +++ b/Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.html @@ -9,10 +9,10 @@ - + - +
diff --git a/Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.tsx b/Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.tsx similarity index 100% rename from Samples-Typescript/DashboardObjectVisibility/dashboardObjectVisibility.tsx rename to Samples-Typescript/Dashboard/DashboardObjectVisibility/dashboardObjectVisibility.tsx diff --git a/Samples-Typescript/DataSources/DataSources.trex b/Samples-Typescript/Dashboard/DataSources/DataSources.trex similarity index 94% rename from Samples-Typescript/DataSources/DataSources.trex rename to Samples-Typescript/Dashboard/DataSources/DataSources.trex index 1bbdf172..18d89ee4 100644 --- a/Samples-Typescript/DataSources/DataSources.trex +++ b/Samples-Typescript/Dashboard/DataSources/DataSources.trex @@ -7,7 +7,7 @@ 0.8 - http://localhost:8765/Samples-Typescript/DataSources/datasources.html + http://localhost:8765/Samples-Typescript/Dashboard/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== diff --git a/Samples-Typescript/DataSources/datasources.html b/Samples-Typescript/Dashboard/DataSources/datasources.html similarity index 96% rename from Samples-Typescript/DataSources/datasources.html rename to Samples-Typescript/Dashboard/DataSources/datasources.html index 1179cafc..3a8a1126 100644 --- a/Samples-Typescript/DataSources/datasources.html +++ b/Samples-Typescript/Dashboard/DataSources/datasources.html @@ -15,10 +15,10 @@ - + - +
diff --git a/Samples-Typescript/DataSources/datasources.ts b/Samples-Typescript/Dashboard/DataSources/datasources.ts similarity index 100% rename from Samples-Typescript/DataSources/datasources.ts rename to Samples-Typescript/Dashboard/DataSources/datasources.ts diff --git a/Samples-Typescript/Filtering/Filtering.trex b/Samples-Typescript/Dashboard/Filtering/Filtering.trex similarity index 94% rename from Samples-Typescript/Filtering/Filtering.trex rename to Samples-Typescript/Dashboard/Filtering/Filtering.trex index e724c05e..a3286e95 100644 --- a/Samples-Typescript/Filtering/Filtering.trex +++ b/Samples-Typescript/Dashboard/Filtering/Filtering.trex @@ -7,7 +7,7 @@ 0.8 - http://localhost:8765/Samples-Typescript/Filtering/filtering.html + http://localhost:8765/Samples-Typescript/Dashboard/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== diff --git a/Samples-Typescript/Filtering/filtering.html b/Samples-Typescript/Dashboard/Filtering/filtering.html similarity index 93% rename from Samples-Typescript/Filtering/filtering.html rename to Samples-Typescript/Dashboard/Filtering/filtering.html index 6e7270b8..cf1571c0 100644 --- a/Samples-Typescript/Filtering/filtering.html +++ b/Samples-Typescript/Dashboard/Filtering/filtering.html @@ -15,10 +15,10 @@ - + - +
diff --git a/Samples-Typescript/Filtering/filtering.ts b/Samples-Typescript/Dashboard/Filtering/filtering.ts similarity index 100% rename from Samples-Typescript/Filtering/filtering.ts rename to Samples-Typescript/Dashboard/Filtering/filtering.ts diff --git a/Samples-Typescript/Formatting/formatting.html b/Samples-Typescript/Dashboard/Formatting/formatting.html similarity index 94% rename from Samples-Typescript/Formatting/formatting.html rename to Samples-Typescript/Dashboard/Formatting/formatting.html index 2bd43452..14ee412d 100644 --- a/Samples-Typescript/Formatting/formatting.html +++ b/Samples-Typescript/Dashboard/Formatting/formatting.html @@ -11,10 +11,10 @@ - + - + + + + +
+ + diff --git a/Samples/Viz/Sankey/sankey.js b/Samples/Viz/Sankey/sankey.js new file mode 100644 index 00000000..27762323 --- /dev/null +++ b/Samples/Viz/Sankey/sankey.js @@ -0,0 +1,728 @@ +/* global d3 */ +/* global tinycolor */ + +const backgroundColor = tinycolor('white'); + +async function Sankey (encodedData, encodingMap, width, height, selectedTupleIds, styles) { + const palette = ['#4e79a7', '#f28e2c', '#e15759', '#76b7b2', '#59a14f', '#edc949', '#af7aa1', '#ff9da7', '#9c755f', '#bab0ab']; + + const xPadding = 2; + const yPadding = 1; + const levelWidth = 100; + const top = 20; + + const layout = computeSankeyLayout( + d3.sankey, + encodedData, + top, + width, + height, + levelWidth + xPadding * 2, + yPadding, + palette + ); + + // Create an SVG container. + const svg = d3 + .create('svg') + .attr('class', tableau.ClassNameKey.Worksheet) + .attr('width', width) + .attr('height', height) + .attr('viewBox', [0, 0, width, height]) + .attr('style', 'max-width: 100%; height: auto; height: intrinsic;') + .attr('font-family', styles?.fontWeight) + .attr('font-weight', styles?.fontFamily) + .attr('font-size', styles?.fontSize) + .attr('font-style', styles?.fontStyle) + .attr('text-decoration', styles?.textDecoration); + + const selectedNodeIndexes = getSelectedNodes(layout.links, selectedTupleIds); + + // Create the rects that represent the nodes. + svg.append('g') + .selectAll() + .data(layout.nodes) + .join('rect') + .attr('x', d => d.x0 + xPadding) + .attr('y', d => d.y0) + .attr('height', d => d.y1 - d.y0) + .attr('width', d => d.x1 - d.x0 - xPadding * 2) + .attr('fill', (d, index) => getColor(d.color, selectedTupleIds, selectedNodeIndexes.has(index))); + + // Creates the paths that represent the links. + const links = svg.append('g') + .attr('fill-opacity', 0.5) + .style('cursor', 'pointer') + .selectAll() + .data(layout.links) + .join('path') + .attr('d', getLinkPath) + .attr('fill', d => getLinkColor(d, selectedTupleIds)); + + // Add labels on the nodes. + svg.append('g') + .selectAll() + .data(layout.nodes) + .join('text') + .attr('x', d => (d.x1 + d.x0) / 2) + .attr('y', d => (d.y1 + d.y0) / 2) + .attr('dy', '0.35em') + .attr('text-anchor', 'middle') + .text(d => d.name) + .attr('fill', (d, index) => getColor('black', selectedTupleIds, selectedNodeIndexes.has(index))); + + // Add top labels + if (encodingMap.level) { + // Pick one representetive node for each level + const levels = []; + for (const node of layout.nodes) { levels[node.layer] = node; } + + svg.append('g') + .selectAll() + .data(levels) + .join('text') + .attr('font-weight', 'bold') + .attr('x', d => (d.x1 + d.x0) / 2) + .attr('y', top / 2) + .attr('text-anchor', 'middle') + .text(d => encodingMap.level[d.layer].name) + .attr('fill', styles?.color); + } + + // Container for rendering selected elements (rendered last) + const selectionLayer = svg.append('g'); + const hoveringLayer = svg.append('g'); + + const linksPerTupleId = getLinksPerTupleId(links); + + renderSelection(selectedTupleIds, linksPerTupleId, selectionLayer, hoveringLayer); + + return { + hoveringLayer, + linksPerTupleId, + viz: svg.node() + }; +} + +function getLinksPerTupleId (links) { + const linksPerTupleId = new Map(); + links.each(function (d) { + let list = linksPerTupleId.get(d.tupleId); + if (!list) { + list = []; + linksPerTupleId.set(d.tupleId, list); + } + list.push(d3.select(this)); + }); + + return linksPerTupleId; +} + +function getSelectedNodes (links, selectedTupleIds) { + const selectedNodeIndexes = new Map(); + + for (const link of links) { + if (selectedTupleIds.has(link.tupleId)) { + selectedNodeIndexes.set(link.source.index); + selectedNodeIndexes.set(link.target.index); + } + } + + return selectedNodeIndexes; +} + +// Render selected elements on a separate top-level layer +function renderSelection (selectedTupleIds, linksPerTupleId, selectionLayer, highlightingLayer) { + selectionLayer.selectAll('*').remove(); + highlightingLayer.selectAll('*').remove(); + + const selectedLinks = []; + + for (const id of selectedTupleIds.keys()) { selectedLinks.push(...linksPerTupleId.get(id)); } + + let outline = selectionLayer.selectAll('g.selectionOutline'); + + // Render the outline first (to dissolve selected elemens borders) + if (outline.empty()) { + outline = selectionLayer + .append('g') + .attr('class', 'selectionOutline'); + } + + outline.selectAll() + .data(selectedLinks) + .join('path') + .attr('d', link => link.attr('d')) // Copy path geometry from the 'normal' element + .datum(link => link.datum()); // Bind data from the 'normal' elememt + + // Render filled elements without borders + let fill = selectionLayer.selectAll('g.selection'); + + if (fill.empty()) { + fill = selectionLayer + .append('g') + .attr('class', 'selection'); + } + + fill.selectAll() + .data(selectedLinks) + .join('path') + .attr('d', link => link.attr('d')) // Copy path geometry from the 'normal' element + .datum(link => link.datum()); // Bind data from the 'normal' elememt +} + +// Render hovered elements on a separate top-level layer +function renderHoveredElements (hoveredTupleIds, linksPerTupleId, hoveringLayer) { + if (!hoveringLayer) return; + + hoveringLayer.selectAll('*').remove(); + + const hoveredLinks = []; + for (const id of hoveredTupleIds.keys()) { hoveredLinks.push(...linksPerTupleId.get(id)); } + + hoveringLayer.selectAll() + .data(hoveredLinks) + .join('path') + .attr('d', (link) => link.attr('d')) + .attr('class', 'highlighting'); +} + +async function renderViz (rawData, encodingMap, selectedMarksIds, styles) { + const encodedData = getEncodedData(rawData, encodingMap); + + const content = document.getElementById('content'); + content.innerHTML = ''; + + const sankey = await Sankey( + encodedData, + encodingMap, + content.offsetWidth, + content.offsetHeight, + selectedMarksIds, + styles + ); + + content.appendChild(sankey.viz); + + return sankey; +} + +// Uses getVisualSpecificationAsync to build a map of encoding identifiers (specified in the .trex file) +// to fields that the user has placed on the encoding's shelf. +// Only encodings that have fields dropped on them will be part of the encodingMap. +async function getEncodingMap () { + const worksheet = tableau.extensions.worksheetContent.worksheet; + const visualSpec = await worksheet.getVisualSpecificationAsync(); + + const encodingMap = {}; + + if (visualSpec.activeMarksSpecificationIndex < 0) { return encodingMap; } + + const marksCard = visualSpec.marksSpecifications[visualSpec.activeMarksSpecificationIndex]; + for (const encoding of marksCard.encodings) { + if (!encodingMap[encoding.id]) { encodingMap[encoding.id] = []; } + + encodingMap[encoding.id].push(encoding.field); + } + + return encodingMap; +} + +window.onload = tableau.extensions.initializeAsync().then(async () => { + // Get the worksheet that the Viz Extension is running in + const worksheet = tableau.extensions.worksheetContent.worksheet; + + // Save these outside the scope below for handling resizing without refetching the data + let summaryData = {}; + let encodingMap = {}; + let selectedMarks = new Map(); + const hoveredMarks = new Map(); + let linksPerTupleId = new Map(); + let hoveringLayer; + + const styles = tableau.extensions.environment.workbookFormatting?.formattingSheets + ?.find(x => x.classNameKey === 'tableau-worksheet')?.cssProperties; + + // Use the extensions API to get the summary data and map of encodings to fields, + // and render the connected scatterplot. + const updateDataAndRender = async () => { + // Use extensions API to update the table of data and the map from encodings to fields + [summaryData, encodingMap] = await Promise.all([ + getSummaryDataTable(worksheet), + getEncodingMap(worksheet) + ]); + + // Selection can change on any data changes + selectedMarks = await getSelection(worksheet, summaryData); + ({ hoveringLayer, linksPerTupleId } = await renderViz(summaryData, encodingMap, selectedMarks, styles)); + }; + + // Handle re-rendering when the page is resized + onresize = async () => { + ({ hoveringLayer, linksPerTupleId } = await renderViz(summaryData, encodingMap, selectedMarks, styles)); + }; + + // Listen to event for when the summary data backing the worksheet has changed. + // This tells us that we should refresh the data and encoding map. + worksheet.addEventListener( + tableau.TableauEventType.SummaryDataChanged, updateDataAndRender); + + // Setup interactivity events + document.body.addEventListener('click', async (e) => { + onClick(e, selectedMarks, hoveredMarks); + ({ hoveringLayer, linksPerTupleId } = await renderViz(summaryData, encodingMap, selectedMarks, styles)); + }); + + document.body.addEventListener('mousemove', e => onMouseMove(e, hoveredMarks, linksPerTupleId, hoveringLayer)); + document.body.addEventListener('mouseout', e => onMouseMove(e, hoveredMarks, linksPerTupleId, hoveringLayer)); + + // Do the initial update and render + updateDataAndRender(); +}); + +function onClick (e, selectedTupleIds, hoveredTupleIds) { + const elem = d3.select(document.elementFromPoint(e.pageX, e.pageY)); + const data = elem?.datum(); + const tupleId = data === undefined ? null : data.tupleId; + + if (elem && tupleId !== null && tupleId !== undefined) { + if (selectedTupleIds.has(tupleId)) { + // User clicked on an already selected item + // Only one item is selected - deselect it + if (selectedTupleIds.size === 1) selectedTupleIds.clear(); + // Remove an item from selection + else if (e.ctrlKey) selectedTupleIds.delete(tupleId); + else { + selectedTupleIds.clear(); + selectedTupleIds.set(tupleId); + } + } else { + if (!e.ctrlKey) selectedTupleIds.clear(); + selectedTupleIds.set(tupleId); + } + } else if (!e.ctrlKey) { + // Clicking outside of any element will clear all element, unless CTRL is pressed + selectedTupleIds.clear(); + } + + selectTuples(e.pageX, e.pageY, selectedTupleIds, hoveredTupleIds); +} + +async function selectTuples (x, y, selectedTupleIds, hoveredTupleIds) { + clearHoveredMarks(hoveredTupleIds); + getWorksheet().selectTuplesAsync([...selectedTupleIds.keys()], tableau.SelectOptions.Simple, { tooltipAnchorPoint: { x, y } }); +} + +async function onMouseMove (e, hoveredTupleIds, linksPerTupleId, hoveringLayer) { + const elem = d3.select(document.elementFromPoint(e.pageX, e.pageY)); + const data = elem?.node() ? elem.datum() : undefined; + const tupleId = data === undefined ? null : data.tupleId; + + const hadHoveredTupleBefore = hoveredTupleIds.size !== 0; + + clearHoveredMarks(hoveredTupleIds); + + if (elem && tupleId !== null && tupleId !== undefined) { + hoveredTupleIds.set(tupleId); + getWorksheet().hoverTupleAsync(parseInt(tupleId), { tooltipAnchorPoint: { x: e.pageX, y: e.pageY } }); + } else if (hadHoveredTupleBefore) { getWorksheet().hoverTupleAsync(parseInt(tupleId), { tooltipAnchorPoint: { x: e.pageX, y: e.pageY } }); } + + renderHoveredElements(hoveredTupleIds, linksPerTupleId, hoveringLayer); +} + +function clearHoveredMarks (hoveredTupleIds) { + hoveredTupleIds.clear(); +} + +async function getSelection (worksheet, allMarks) { + const selectedMarks = await worksheet.getSelectedMarksAsync(); + + return findIdsOfSelectedMarks(allMarks, selectedMarks); +} + +// Go through all selected marks and find their exact match in the data table +// Use the index of the mark in the data table to compute tupleId +function findIdsOfSelectedMarks (allMarks, selectedMarks) { + const columns = selectedMarks.data[0].columns; + const selectedMarkMap = new Map(); + const selectedMarksIds = new Map(); + + for (const selectedMark of convertToListOfNamedRows(selectedMarks.data[0])) { + let key = ''; + for (const col of columns) { key += selectedMark[col.fieldName].value + '\x00'; } + + selectedMarkMap.set(key, selectedMark); + } + + let tupleId = 1; + for (const mark of allMarks) { + let key = ''; + for (const col of columns) { key += mark[col.fieldName].value + '\x00'; } + + if (selectedMarkMap.has(key)) { selectedMarksIds.set(tupleId); } + + tupleId++; + } + + return selectedMarksIds; +} + +// Takes a page of data, which has a list of DataValues (dataTablePage.data) +// and a list of columns and puts the data in a list where each entry is an +// object that maps from field names to DataValues +// (example of a row being: { SUM(Sales): ..., SUM(Profit): ..., Ship Mode: ..., }) +function convertToListOfNamedRows (dataTablePage) { + const rows = []; + const columns = dataTablePage.columns; + const data = dataTablePage.data; + for (let i = 0; i < data.length; ++i) { + const row = {}; + for (let j = 0; j < columns.length; ++j) { + row[columns[j].fieldName] = data[i][columns[j].index]; + } + row.tupleId = i + 1; + rows.push(row); + } + return rows; +} + +// Gets each page of data in the summary data and returns a list of rows of data +// associated with field names. +async function getSummaryDataTable (worksheet) { + let rows = []; + + // Fetch the summary data using the DataTableReader + const dataTableReader = await worksheet.getSummaryDataReaderAsync( + undefined, + { ignoreSelection: true } + ); + for ( + let currentPage = 0; + currentPage < dataTableReader.pageCount; + currentPage++ + ) { + const dataTablePage = await dataTableReader.getPageAsync(currentPage); + rows = rows.concat(convertToListOfNamedRows(dataTablePage)); + } + await dataTableReader.releaseAsync(); + + return rows; +} + +// Converts each data row from a object map to a object map +// For example, { SUM(Sales): 10.23, Ship Mode: 'Next Day', Category: 'Office Supplies' } will be converted to +// { edge: [10.23], levels: ['Next Day', 'Office Supplies'] } if SUM(Sales) is on the edge encoding and Ship Mode ad Category are on the level encoding +function getEncodedData (data, encodingMap) { + const encodedData = []; + + let tupleId = 1; + for (const row of data) { + const encodedRow = {}; + + for (const encName in encodingMap) { + const fields = encodingMap[encName]; + + encodedRow[encName] = []; + + for (const field of fields) { encodedRow[encName].push(row[field.name]); } + } + + encodedRow.tupleId = tupleId; + tupleId++; + + encodedData.push(encodedRow); + } + + return encodedData; +} + +//= ================= +// COLOR FUNCTIONS +//= ================= +function getLinkColor (link, selectedTupleIds) { + const color = link.color ?? 'lightgray'; + + return getColor(color, selectedTupleIds); +} + +function getColor (color, selectedTupleIds, doNotFog) { + return (selectedTupleIds.size > 0 && doNotFog !== true) ? calculateFogColor(color) : color; +} + +/* +function getLabelColor(color, selectedTupleIds) { + color = getAutoLabelColor(color ?? 'rgb(102, 102, 102)'); + return getColor(color, selectedTupleIds); +} + +// Takes two possible options for a color (a light and a dark color option) and returns the one with the ideal +// contrast to the background color. +function getAutoLabelColor (fgColorStr, bgColorStr) { + const Black = tinycolor('black'); + const White = tinycolor('white'); + + const fgColor = tinycolor(fgColorStr); + const bgColor = tinycolor(bgColorStr); + + const fgColorIsLight = isLuminanceAboveThreshold(fgColor); + const dark = fgColorIsLight ? Black : fgColor; + const light = fgColorIsLight ? fgColor : White; + + const autoColor = isLuminanceAboveThreshold(bgColor) ? dark : light; + + return autoColor.toHexString(); +} + +function isLuminanceAboveThreshold (color) { + return color.getLuminance() > 0.3149999976158142; +} +*/ + +const fogBlendFactor = getFogBlendFactor(backgroundColor); +const { foggedBackgroundRed, foggedBackgroundGreen, foggedBackgroundBlue } = computeFoggedBackgroundColor(backgroundColor, fogBlendFactor); + +// When one or more elements are selected, everything else is fogged out. +function computeFoggedBackgroundColor (color, fogBlendFactor) { + const CloseToWhite = 245; + + if (color.r >= CloseToWhite && color.g >= CloseToWhite && color.b >= CloseToWhite) { color = tinycolor({ r: CloseToWhite, g: CloseToWhite, b: CloseToWhite }); } + + color = color.toRgb(); + const foggedBackgroundRed = (1 - fogBlendFactor) * color.r >>> 0; + const foggedBackgroundGreen = (1 - fogBlendFactor) * color.g >>> 0; + const foggedBackgroundBlue = (1 - fogBlendFactor) * color.b >>> 0; + + return { foggedBackgroundRed, foggedBackgroundGreen, foggedBackgroundBlue }; +} + +function calculateFogColor (colorStr) { + const color = tinycolor(colorStr).toRgb(); + + const fogR = foggedBackgroundRed + color.r * fogBlendFactor >>> 0; + const fogG = foggedBackgroundGreen + color.g * fogBlendFactor >>> 0; + const fogB = foggedBackgroundBlue + color.b * fogBlendFactor >>> 0; + + return tinycolor({ r: fogR, g: fogG, b: fogB }).toHexString(); +} + +function getFogBlendFactor (color) { + color = color.toRgb(); + + const DefaultFogBlendFactor = 0.1850000023841858; + const DarkBgFogBlendFactor = 0.2750000059604645; + const DarkBgThreshold = 75; + const isDarkBackground = color.r <= DarkBgThreshold && color.g <= DarkBgThreshold && color.b <= DarkBgThreshold; + return (isDarkBackground ? DarkBgFogBlendFactor : DefaultFogBlendFactor); +} + +function getLinkPath (d) { + const midX = (d.source.x1 + d.target.x0) / 2; + let path = `M ${d.source.x1} ${d.y0 - d.width / 2}`; + path += ` C ${midX} ${d.y0 - d.width / 2} ${midX} ${d.y1 - d.width / 2} ${d.target.x0} ${d.y1 - d.width / 2}`; + path += ` L ${d.target.x0} ${d.y1 + d.width / 2}`; + path += ` C ${midX} ${d.y1 + d.width / 2} ${midX} ${d.y0 + d.width / 2} ${d.source.x1} ${d.y0 + d.width / 2}`; + path += ' Z'; // close the path + return path; +} + +function computeSankeyLayout ( + d3Sankey, + data, + top, + width, + height, + nodeWidth, + padding, + palette +) { + // `nodes` are `rectangles` in the UI + // `links` are what we call `edges` or `noodles` in the UI + if (data.length === 0) return { links: [], nodes: [] }; + + const firstRow = data[0]; + + const levelCount = Array.isArray(firstRow.level) ? firstRow.level.length : 0; + const hasLinks = firstRow.edge !== undefined; + + if (levelCount === 0) { + // Create a dummy link that follows the object schema returned by d3 + const link = { + y0: (height - top) / 2, + y1: (height - top) / 2, + source: { + x1: nodeWidth + }, + target: { + x0: width - nodeWidth + }, + width: 2, + color: null + }; + return { nodes: [], links: [link] }; + } + + let links = []; + let nodes = []; + + if (levelCount === 1) { + // Compute links for each pair of adjacent levels + for (const row of data) { + const link = { + source: { name: row.level[0].value }, + target: { name: row.level[0].value }, + value: getLinkValue(row, hasLinks), + tupleId: row.tupleId + }; + + links.push(link); + nodes.push(link.source); + nodes.push(link.target); + } + } else { + // Compute a map of nodes for each level + const nodesPerLevel = []; + + for (let i = 0; i < levelCount; i++) nodesPerLevel.push(new Map()); + + for (const row of data) { + for (let i = 0; i < levelCount; i++) nodesPerLevel[i].set(row.level[i].value, { name: row.level[i].value }); + } + nodes.push(...nodesPerLevel[0].values()); // initialize with the first level nodes + + // Compute links for each pair of adjacent levels + for (let i = 0; i < levelCount - 1; i++) { + for (const row of data) { + links.push({ + source: nodesPerLevel[i].get(row.level[i].value), + target: nodesPerLevel[i + 1].get(row.level[i + 1].value), + value: getLinkValue(row, hasLinks), + tupleId: row.tupleId + }); + } + + nodes.push(...nodesPerLevel[i + 1].values()); + } + + // We have two goals for our sorting of links. We want the links associated with a particular + // tuple to "meet up" at the nodes, so that they form a mostly continuous path end-to-end. We + // also don't want the links to be a complete webbed mess. We try to make sure that the links + // between the first two levels are pleasing, and then we let d3 do its best with the rest. + // To create a pleasing set of links between level 0 and 1, we sort the links so that all + // links between level-0/node-0 and level-1/node-0 are adjacent, followed by all links + // between level-0/node-0 and level-1/node-1, etc. This minimizes cross-over in the first + // set of links. We try to apply the same idea to the rest of the levels, but the sort on + // level-0 will almost always win in practice. The bands will leave level-1 at the same height + // as they entered, but who knows where they'll go after that! d3 will do its best by reordering + // nodes in later levels, which may also improve appearance. + + links.sort((lhs, rhs) => { + const isLevelNLink = (link, n) => link.source === nodesPerLevel[n].get(link.source.name); + for (let level = 0; level < nodesPerLevel.length; level++) { + const lhsLevelNLink = links.find((elem) => elem.tupleId === lhs.tupleId && isLevelNLink(elem, level)); + const rhsLevelNLink = links.find((elem) => elem.tupleId === rhs.tupleId && isLevelNLink(elem, level)); + + if (!lhsLevelNLink) { + return rhsLevelNLink ? -1 : 0; + } + if (!rhsLevelNLink) { + return 1; + } + + const lhsLevelNSourceNodeIndex = nodes.indexOf(lhsLevelNLink.source); + const rhsLevelNSourceNodeIndex = nodes.indexOf(rhsLevelNLink.source); + if (lhsLevelNSourceNodeIndex !== rhsLevelNSourceNodeIndex) { + return lhsLevelNSourceNodeIndex < rhsLevelNSourceNodeIndex ? -1 : 1; + } + + const lhsLevelNTargetNodeIndex = nodes.indexOf(lhsLevelNLink.target); + const rhsLevelNTargetNodeIndex = nodes.indexOf(rhsLevelNLink.target); + if (lhsLevelNTargetNodeIndex !== rhsLevelNTargetNodeIndex) { + return lhsLevelNTargetNodeIndex < rhsLevelNTargetNodeIndex ? -1 : 1; + } + } + + if (lhs.tupleId !== rhs.tupleId) { + return lhs.tupleId < rhs.tupleId ? -1 : 1; + } + + return 0; + }); + } + + // Set the sankey diagram properties + const sankey = d3Sankey() + .nodeWidth(nodeWidth) + .nodePadding(padding) + .linkSort(null) + .nodeSort(null) + .extent([ + [0, top], + [width, height] + ]) + .nodes(nodes) + .links(links); + + // Compute the layout + sankey({ nodes, links }); + + // If there are any NaN values in nodes or links, render will fail. + // Set both to [] so that we get an empty display instead. TFS 1481434. + if (elementOfArrayContainsNaNProperty(nodes) || elementOfArrayContainsNaNProperty(links)) { + nodes = []; + links = []; + return { nodes, links }; + } + + if (levelCount === 1) { + nodes = nodes.filter((node) => node.depth === 0); + } + + nodes = nodes.filter((node) => node.value); + links = links.filter((link) => nodes.includes(link.source) && nodes.includes(link.target)); + + // Add colors, this needs to be the very last thing done to ensure palette is applied correctly + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + node.color = palette[i % palette.length]; + for (const link of node.sourceLinks) { + link.color = node.color; + } + } + + return { nodes, links }; +} + +function elementOfArrayContainsNaNProperty (dataArray) { + // If any of these properties of a node or link element contain a NaN value, the viz will not render. + const propertiesToCheckForNaN = ['x', 'y', 'x0', 'y0', 'x1', 'y1', 'width', 'height']; + + for (const element of dataArray) { + if (!element) continue; + + for (const propertyName in element) { + if (!propertiesToCheckForNaN.includes(propertyName)) continue; + + if (Object.prototype.hasOwnProperty.call(element, propertyName)) { + const thisValue = element[propertyName]; + if (typeof thisValue === 'number' && isNaN(thisValue)) { + return true; + } + } + } + } + return false; +} + +function getLinkValue (row, hasLinks) { + if (!hasLinks) return 1; // If there's no field on edge, make all links the same weight + + const value = row.edge[0].value; + + return typeof value === 'number' && !isNaN(value) ? Math.max(0, value) : 0; +} + +function getWorksheet () { + return tableau.extensions.worksheetContent + ? tableau.extensions.worksheetContent.worksheet + : tableau.extensions.dashboardContent.dashboard.worksheets[0]; +} diff --git a/Samples/Viz/Sankey/sankey.trex b/Samples/Viz/Sankey/sankey.trex new file mode 100644 index 00000000..afbce1f3 --- /dev/null +++ b/Samples/Viz/Sankey/sankey.trex @@ -0,0 +1,35 @@ + + + + en_US + + Sankey + + 1.11 + + http://localhost:8765/Samples/Viz/Sankey/sankey.html + + + + Level + + discrete-dimension + discrete-measure + + + + + Edge + + continuous-measure + continuous-dimension + + + + + + + Sankey + + + diff --git a/Samples/Viz/Settings/Settings.trex b/Samples/Viz/Settings/Settings.trex new file mode 100644 index 00000000..12838d71 --- /dev/null +++ b/Samples/Viz/Settings/Settings.trex @@ -0,0 +1,19 @@ + + + + en_US + + Settings Sample + + 1.11 + + http://localhost:8765/Samples/Viz/Settings/settings.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== + + + + Settings Sample + + + diff --git a/Samples/Viz/Settings/settings.html b/Samples/Viz/Settings/settings.html new file mode 100644 index 00000000..20ea384b --- /dev/null +++ b/Samples/Viz/Settings/settings.html @@ -0,0 +1,61 @@ + + + + + + + Settings Sample + + + + + + + + + + + + + + + +
+ +
+

Current Settings

+
+ + + + + + + + + + + + + + +
+
+ + +
+
+
+
+ +
+
+ +
+ +
+
+ +
+ + diff --git a/Samples/Viz/Settings/settings.js b/Samples/Viz/Settings/settings.js new file mode 100644 index 00000000..2c68f093 --- /dev/null +++ b/Samples/Viz/Settings/settings.js @@ -0,0 +1,82 @@ +'use strict'; + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(function () { + $(document).ready(function () { + tableau.extensions.initializeAsync().then(function () { + // First, check for any saved settings and populate our UI based on them. + buildSettingsTable(tableau.extensions.settings.getAll()); + }, function (err) { + // Something went wrong in initialization + console.log('Error while Initializing: ' + err.toString()); + }); + + $('#save').click(saveSetting); + }); + + function eraseSetting (key, row) { + // This change won't be persisted until settings.saveAsync has been called. + tableau.extensions.settings.erase(key); + + // Remove the setting from the UI immediately. + row.remove(); + + // Save in the background, saveAsync results don't need to be handled immediately. + tableau.extensions.settings.saveAsync(); + + updateUIState(Object.keys(tableau.extensions.settings.getAll()).length > 0); + } + + function buildSettingsTable (settings) { + // Clear the table first. + $('#settingsTable > tbody tr').remove(); + const settingsTable = $('#settingsTable > tbody')[0]; + + // Add an entry to the settings table for each setting. + for (const settingKey in settings) { + const newRow = settingsTable.insertRow(settingsTable.rows.length); + const keyCell = newRow.insertCell(0); + const valueCell = newRow.insertCell(1); + const eraseCell = newRow.insertCell(2); + + const eraseSpan = document.createElement('span'); + eraseSpan.className = 'glyphicon glyphicon-trash'; + eraseSpan.addEventListener('click', function () { eraseSetting(settingKey, newRow); }); + + keyCell.innerHTML = settingKey; + valueCell.innerHTML = settings[settingKey]; + eraseCell.appendChild(eraseSpan); + } + + updateUIState(Object.keys(settings).length > 0); + } + + function saveSetting () { + const settingKey = $('#keyInput').val(); + const settingValue = $('#valueInput').val(); + + tableau.extensions.settings.set(settingKey, settingValue); + + // Save the newest settings via the settings API. + tableau.extensions.settings.saveAsync().then((currentSettings) => { + // This promise resolves to a list of the current settings. + // Rebuild the UI with that new list of settings. + buildSettingsTable(currentSettings); + + // Clears the settings of content. + $('#settingForm').get(0).reset(); + }); + } + + // This helper updates the UI depending on whether or not there are settings + // that exist in the worksheet. Accepts a boolean. + function updateUIState (settingsExist) { + if (settingsExist) { + $('#settingsTable').removeClass('hidden').addClass('show'); + $('#noSettingsWarning').removeClass('show').addClass('hidden'); + } else { + $('#noSettingsWarning').removeClass('hidden').addClass('show'); + $('#settingsTable').removeClass('show').addClass('hidden'); + } + } +})(); diff --git a/Samples/Viz/UINamespace/uiNamespace.html b/Samples/Viz/UINamespace/uiNamespace.html new file mode 100644 index 00000000..da1f9a05 --- /dev/null +++ b/Samples/Viz/UINamespace/uiNamespace.html @@ -0,0 +1,56 @@ + + + + + + + Settings Sample + + + + + + + + + + + + + + + +
+

+

+
+ Configure extension to proceed. +
+

+
+
Dialog Style
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + diff --git a/Samples/Viz/UINamespace/uiNamespace.js b/Samples/Viz/UINamespace/uiNamespace.js new file mode 100644 index 00000000..709fdc3a --- /dev/null +++ b/Samples/Viz/UINamespace/uiNamespace.js @@ -0,0 +1,111 @@ +'use strict'; + +/** + * 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 a worksheet + */ + +// Wrap everything in an anonymous function to avoid polluting the global namespace +(function () { + const defaultIntervalInMin = '5'; + let activeDatasourceIdList = []; + + $(document).ready(function () { + tableau.extensions.initializeAsync().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); + }); + + document.getElementById('configure').onclick = configure; + }); + }); + + 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/Viz/UINamespace/uiNamespaceDialog.html`; + + // This checks for the selected dialog style in the radio form. + let dialogStyle; + const dialogStyleOptions = document.getElementsByName('dialogStyleRadio'); + if (dialogStyleOptions[0].checked) { + dialogStyle = tableau.DialogStyle.Modal; + } else if (dialogStyleOptions[1].checked) { + dialogStyle = tableau.DialogStyle.Modeless; + } else { + dialogStyle = tableau.DialogStyle.Window; + } + + /** + * 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, + * 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 + * 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, dialogStyle }) + .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 top right 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) { + setInterval(function () { + const worksheet = tableau.extensions.worksheetContent.worksheet; + worksheet.getDataSourcesAsync().then(function (datasources) { + datasources.forEach(function (datasource) { + if (activeDatasourceIdList.indexOf(datasource.id) >= 0) { + datasource.refreshAsync(); + } + }); + }); + }, interval * 60 * 1000); + } + + /** + * 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/Viz/UINamespace/uiNamespace.trex b/Samples/Viz/UINamespace/uiNamespace.trex new file mode 100644 index 00000000..c5f0c059 --- /dev/null +++ b/Samples/Viz/UINamespace/uiNamespace.trex @@ -0,0 +1,19 @@ + + + + en_US + + UI Namespace Sample + + 1.11 + + http://localhost:8765/Samples/Viz/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/Viz/UINamespace/uiNamespaceDialog.html b/Samples/Viz/UINamespace/uiNamespaceDialog.html new file mode 100644 index 00000000..2b53b2ef --- /dev/null +++ b/Samples/Viz/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/Viz/UINamespace/uiNamespaceDialog.js b/Samples/Viz/UINamespace/uiNamespaceDialog.js new file mode 100644 index 00000000..c85635b1 --- /dev/null +++ b/Samples/Viz/UINamespace/uiNamespaceDialog.js @@ -0,0 +1,124 @@ +'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 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 + * 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 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 () { + /** + * 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 worksheet 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); + + const worksheet = tableau.extensions.worksheetContent.worksheet; + const 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. + worksheet.getDataSourcesAsync().then(function (datasources) { + datasources.forEach(function (datasource) { + const 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 = []; + const 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) { + const 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) { + const containerDiv = $('
'); + + $('', { + type: 'checkbox', + id: datasource.id, + value: datasource.name, + checked: isActive, + click: function () { + updateDatasourceList(datasource.id); + } + }).appendTo(containerDiv); + + $('