Welcome [tc18.tableau.com] · Tableau Platform Integrations Enabling Integrations for Developers....

Post on 09-Aug-2020

8 views 0 download

transcript

Welcome

Introductions… (and cool pics)

Introductions… (and cool pics)

Flex the T-Rex

Automation

Extensions

Embedded Analytics

Data Connectivity

Data Science

Tableau Platform

Inte

gra

tion

s

Enabling Integrations for Developers

Developer Deep Dive:Dashboard Extensions

# T C 1 8

John Dance

Principal Software Engineer

Tableau

Ankit Patel

Senior Software Engineer

Tableau

Wait! Did they just say something like ‘code’ and ‘JavaScript’ in the same sentence!?

Someone in the audience

Am I in the right session?

That same someone in the audience

E X T E N S I O N S R E L AT E D S E S S I O N S

Extending Tableau Front and BackOct-23 | 14:15 – 15:15

(Hands on Training) Dashboard ExtensionsOct-23 | 14:15 – 16:45 Oct-24 | 13:45 – 16:15

Developer Deep Dive | Dashboard ExtensionsOct-24 | 10:15 – 11:15 Oct-25 | 14:15 – 15:15

Real-world Tableau Using Extensions and TabPyOct-24 | 15:30 – 16:30 Oct-25 | 10:45 – 11:45

E X T E N S I O N S R E L AT E D S E S S I O N S ( C O N T. )

Extensions FOMO Cure | Extensions to Use TodayOct-24 | 10:15 – 10:45 Oct-25 | 11:45 – 12:15

You Did What With the Extensions API!?Oct-23 | 16:00 – 17:00 Oct-24 | 15:30 – 16:30

Close the Loop & Light it Up with ExtensionsOct-23 | 14:15 – 15:15 Oct-25 | 10:45 – 11:45

Are you ready?

John & Ankit

What is a dashboard extension?

A few in the audience

Tableau Extensions Gallery

Setup & Manifest

Event API Interactive API

Settings API

Initialization API

Data API

Setup & Manifest

Event API Interactive API

Settings API

InitializationAPI

Data API

Setup & Manifest

Setup & Manifest

Setup & Manifest

https://tableau.github.io/extensions-api/#

CodeLoading the extension

Setup & Manifest

Event API Interactive API

Settings API

Initialization API

Data API

Initializing an Extension

Occurs at the beginning of every extension:

tableau.extensions.initializeAsync().then(function() {

// Once this promise has resolved, all extension

// APIs have been initialized and can be used.

});

Javascript Promise

requestTShirtAsync().then(function() { iamHappy() },function() { iamSad() });

requestTShirtAsync : is a function returning a Promise

then : is a method of Promise

iamHappy : is called if Promise is fulfilled

iamSad : is called if Promise is rejected

CodeLoading the extension

Initializing the extension

Setup & Manifest

Event API Interactive API

Settings API

InitializationAPI

Data API

CodeLoading the extension

Initializing the extension

Getting data from the dashboard

Setup & Manifest

Event API Interactive API

Settings API

InitializationAPI

Data API

Event Listening Pattern

worksheet.addEventListener(eventType, eventHandlerFunction);

// somewhere else in the .js file

function eventHandlerFunction(event) {

// do something interesting with the event …

}

// eventType can be: FilterChanged, MarkSelectionChanged, ParameterChanged, SettingsChanged

CodeLoading the extension

Initializing the extension

Getting data from the dashboard

Adding an event handler

Setup & Manifest

Event API Interactive API

Settings API

InitializationAPI

Data API

CodeLoading the extension

Initializing the extension

Getting data from the dashboard

Adding an event handler

Saving state with settings

Setup & Manifest

Event API Interactive API

Settings API

InitializationAPI

Data API

Example Actions

// add to, remove, or replace the selection

worksheet.selectMarksByValueAsync(selectionCriteria, updateType) : Promise<void>

// change the value of a parameter

Parameter.changeValueAsync(newValue) : Promise<DataValue>

// change a filter

worksheet.applyFilterAsync(fieldName, values, updateType): Promise<string>

CodeLoading the extension

Initializing the extension

Getting data from the dashboard

Adding an event handler

Saving state

Calling dashboard actions

If debugging is the process of removing software bugs, then programming must be the process of putting them in.

Edsger W. Dijkstra (not in the audience)

Debuggingtableau --remote-debugging-port=8696

Chromium (Chrome in 2019.1)

see: https://tableau.github.io/extensions-api/#

With great power comes great responsibility.

Uncle Ben, and someone from the IT department in the audience

Tableau Extensions Site Settings

Tableau Extensions Site Settings

Tableau Extensions Site Settings

Tableau Extensions Server Settings

Tableau Extensions Server Settings

Roads? Where we’re going, we don’t need roads.

Doc Brown

Back to the Future

Future Extensions Roadmap

Transparency

Show/Hide

Printing

Beyond Dashboard Extensions

Extensions are the most AMAZING, MIND–BLOWING thing I have ever seen! … How do I learn more?

Everyone in the audience

E X T E N S I O N S R E L AT E D S E S S I O N S

Extending Tableau Front and BackOct-23 | 14:15 – 15:15

(Hands on Training) Dashboard ExtensionsOct-23 | 14:15 – 16:45 Oct-24 | 13:45 – 16:15

Developer Deep Dive | Dashboard ExtensionsOct-24 | 10:15 – 11:15 Oct-25 | 14:15 – 15:15

Real-world Tableau Using Extensions and TabPyOct-24 | 15:30 – 16:30 Oct-25 | 10:45 – 11:45

E X T E N S I O N S R E L AT E D S E S S I O N S ( C O N T. )

Extensions FOMO Cure | Extensions to Use TodayOct-24 | 10:15 – 10:45 Oct-25 | 11:45 – 12:15

You Did What With the Extensions API!?Oct-23 | 16:00 – 17:00 Oct-24 | 15:30 – 16:30

Close the Loop & Light it Up with ExtensionsOct-23 | 14:15 – 15:15 Oct-25 | 10:45 – 11:45

#DataDev Resources

TC18 Developer Track Contenthttp://tabsoft.co/tcdevtrack

Tableau Developer Programhttp://tableau.com/developer

Free environment for development

Early access to info and APIs

Tableau on GitHubhttp://github.com/tableau

What amazing extensions will you invent and write?

Flex the T-Rex

Thank you!

#TC18

#DataDev Resources

TC18 Developer Track Contenthttp://tabsoft.co/tcdevtrack

Tableau Developer Programhttp://tableau.com/developer

Free environment for development

Early access to info and APIs

Tableau on GitHubhttp://github.com/tableau