amazon-quicksight-embedding-sdk
Version:
JS SDK for embedding Amazon QuickSight
196 lines (155 loc) • 7.18 kB
Markdown
# Amazon QuickSight Embedding SDK
Thank you for using the Amazon QuickSight JavaScript SDK. You can use this SDK to embed Amazon QuickSight dashboards on HTML pages within your web applications.
## Usage
Before you can embed an Amazon QuickSight dashboard, you need to publish it and ensure that users are granted necessary permissions. For more information, see [Embedding Amazon QuickSight Dashboards](https://docs.aws.amazon.com/en_us/quicksight/latest/user/embedding.html) in the Amazon QuickSight User Guide..
After a dashboard is ready to be embedded, follow the steps below to embed an Amazon QuickSight dashboard in this [example](#example):
### Step 1: Download and include QuickSight Embedding SDK
Do one of the following:
- Option 1: Use the Amazon QuickSight Embedding SDK in the browser:
```
<script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.2/dist/quicksight-embedding-js-sdk.min.js" />
```
- Option 2: Install and use the QuickSight Embedding SDK in Node.js:
```
npm install quicksight-embedding-sdk
```
```
var QuickSightEmbedding = require("quicksight-embedding-sdk");
```
### Step 2: Configure the dashboard to embed
Set up the dashboard so you can embed it.
```
var options = {
url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
container: document.getElementById("dashboardContainer"),
parameters: {
country: "United States"
states: [
"California",
"Washington"
]
},
scrolling: "no",
height: "700px",
width: "1000px"
};
```
####Url element (required)
I you haven't done it yet, follow [Embedding Amazon QuickSight Dashboards](https://docs.aws.amazon.com/en_us/quicksight/latest/user/embedding.html) in the Amazon QuickSight User Guide to generate the url.
####Container element (required)
The `container` element is the parent HTMLElement where we're going to embed the dashboard. You can make it one of the following:
- Option 1: It can be an HTMLElement:
```
container: document.getElementById("dashboardContainer"),
```
- Option 2: Or, it can be a query selector string:
```
container: "#dashboardContainer",
```
#### Parameters element (optional)
The `parameters` element is an object that contains key:value pairs for parameters names:values.
It allows you to set initial parameter values for your dashboard. Pass an array as value for multi-value parameters.
For more information about parameters in Amazon QuickSight, see https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html
####Scrolling element (optional)
The `scrolling` element lets you set up a specific scrolling experience for your dashboard. Available values are `auto`, `yes`,
and `no`. The default value is `no`.
####Width element and height element (optional)
You can set `width` and `height` for the dashboard. Both of these default to 100%. You can set them to be fixed values:
```
height: "700px",
width: "1000px"
```
Or, relative values:
```
height: "80%",
width: "60%"
```
To make your embedded dashboard responsive, don't set `width` or `height` (leave them at the default: `100%`). Then make the container HTMLElement responsive to screen size change.
### Step 3: Embed the dashboard
Embed the dashboard by calling:
```
var dashboard = QuickSightEmbedding.embedDashboard(options);
```
This returns a dashboard object for further action.
### Step 4: Setup load callback (optional)
If you want your application to get notified and respond when the Amazon QuickSight dashboard is fully loaded, use a load callback. Choose one of the following:
- Use options:
```
loadCallback: yourLoadCallback,
```
- Or, register the "load" event on the returned dashboard object:
```
dashboard.on("load", yourLoadCallback);
```
### Step 5: Setup error callback (optional)
If you want your application get notified and respond when QuickSight dashboard fails to load, use a error callback. Choose one of the following:
- Use options:
```
errorCallback: yourErrorCallback,
```
- Or, register the "error" event on the returned dashboard object:
```
dashboard.on("error", yourErrorCallback);
```
We pass a payload object to your callback function with a specific `payload.errorCode`. Currently, the error codes are:
- `Forbidden` -- the URL's authentication code expired
- `Unauthorized` -- the session obtained from the authentication code expired
If you follow the instructions to generate the correct URL, but you still receive these error codes, you need to generate a new URL.
### Step 6: Update parameter values (optional)
Use `dashboard.setParameters()` to update parameter values. Pass an array as value for multi-value parameters.
You can build your own UI to trigger this, so that viewers of the embedded dashboard can control the dashboard from your app page.
```
dashboard.setParameters({country: "China", states: ["Zhejiang", "Jiangsu"]});
```
### Example
```html
<!DOCTYPE html>
<html>
<head>
<title>Basic Embed</title>
<script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.2/dist/quicksight-embedding-js-sdk.min.js" />
<script type="text/javascript">
var dashboard
function onDashboardLoad(payload) {
console.log("Do something when the dashboard is fully loaded.");
}
function onError(payload) {
console.log("Do something when the dashboard fails loading");
}
function embedDashboard() {
var containerDiv = document.getElementById("dashboardContainer");
var options = {
url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode",
container: containerDiv,
parameters: {
country: "United States"
},
scrolling: "no",
height: "700px",
width: "1000px"
};
dashboard = QuickSightEmbedding.embedDashboard(options);
dashboard.on("error", onDashboardLoad);
dashboard.on("load", onError);
}
function onCountryChange(obj) {
dashboard.setParameters({country: obj.value});
}
</script>
</head>
<body onload="embedDashboard()">
<span>
<label for="country">Country</label>
<select id="country" name="country" onchange="onCountryChange(this)">
<option value="United States">United States</option>
<option value="Mexico">Mexico</option>
<option value="Canada">Canada</option>
</select>
</span>
<div id="dashboardContainer"></div>
</body>
</html>
```
## License
Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0