mirror of https://github.com/apache/superset.git
Co-authored-by: 이재익 [jileeon] <jileeon@nexon.co.kr>
This commit is contained in:
parent
ad34f9d740
commit
eb805682e2
|
@ -40,7 +40,12 @@ embedDashboard({
|
||||||
supersetDomain: "https://superset.example.com",
|
supersetDomain: "https://superset.example.com",
|
||||||
mountPoint: document.getElementById("my-superset-container"), // any html element that can contain an iframe
|
mountPoint: document.getElementById("my-superset-container"), // any html element that can contain an iframe
|
||||||
fetchGuestToken: () => fetchGuestTokenFromBackend(),
|
fetchGuestToken: () => fetchGuestTokenFromBackend(),
|
||||||
dashboardUiConfig: { hideTitle: true }, // dashboard UI config: hideTitle, hideTab, hideChartControls (optional)
|
dashboardUiConfig: { // dashboard UI config: hideTitle, hideTab, hideChartControls, filters.visible, filters.expanded (optional)
|
||||||
|
hideTitle: true,
|
||||||
|
filters: {
|
||||||
|
expanded: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -18,3 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const IFRAME_COMMS_MESSAGE_TYPE = "__embedded_comms__";
|
export const IFRAME_COMMS_MESSAGE_TYPE = "__embedded_comms__";
|
||||||
|
export const DASHBOARD_UI_FILTER_CONFIG_URL_PARAM_KEY: { [index: string]: any } = {
|
||||||
|
visible: "show_filters",
|
||||||
|
expanded: "expand_filters",
|
||||||
|
}
|
||||||
|
|
|
@ -17,7 +17,10 @@
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { IFRAME_COMMS_MESSAGE_TYPE } from './const';
|
import {
|
||||||
|
DASHBOARD_UI_FILTER_CONFIG_URL_PARAM_KEY,
|
||||||
|
IFRAME_COMMS_MESSAGE_TYPE
|
||||||
|
} from './const';
|
||||||
|
|
||||||
// We can swap this out for the actual switchboard package once it gets published
|
// We can swap this out for the actual switchboard package once it gets published
|
||||||
import { Switchboard } from '@superset-ui/switchboard';
|
import { Switchboard } from '@superset-ui/switchboard';
|
||||||
|
@ -34,6 +37,11 @@ export type UiConfigType = {
|
||||||
hideTitle?: boolean
|
hideTitle?: boolean
|
||||||
hideTab?: boolean
|
hideTab?: boolean
|
||||||
hideChartControls?: boolean
|
hideChartControls?: boolean
|
||||||
|
filters?: {
|
||||||
|
[key: string]: boolean | undefined
|
||||||
|
visible?: boolean
|
||||||
|
expanded?: boolean
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type EmbedDashboardParams = {
|
export type EmbedDashboardParams = {
|
||||||
|
@ -45,7 +53,7 @@ export type EmbedDashboardParams = {
|
||||||
mountPoint: HTMLElement
|
mountPoint: HTMLElement
|
||||||
/** A function to fetch a guest token from the Host App's backend server */
|
/** A function to fetch a guest token from the Host App's backend server */
|
||||||
fetchGuestToken: GuestTokenFetchFn
|
fetchGuestToken: GuestTokenFetchFn
|
||||||
/** The dashboard UI config: hideTitle, hideTab, hideChartControls **/
|
/** The dashboard UI config: hideTitle, hideTab, hideChartControls, filters.visible, filters.expanded **/
|
||||||
dashboardUiConfig?: UiConfigType
|
dashboardUiConfig?: UiConfigType
|
||||||
/** Are we in debug mode? */
|
/** Are we in debug mode? */
|
||||||
debug?: boolean
|
debug?: boolean
|
||||||
|
@ -99,6 +107,13 @@ export async function embedDashboard({
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const iframe = document.createElement('iframe');
|
const iframe = document.createElement('iframe');
|
||||||
const dashboardConfig = dashboardUiConfig ? `?uiConfig=${calculateConfig()}` : ""
|
const dashboardConfig = dashboardUiConfig ? `?uiConfig=${calculateConfig()}` : ""
|
||||||
|
const filterConfig = dashboardUiConfig?.filters || {}
|
||||||
|
const filterConfigKeys = Object.keys(filterConfig)
|
||||||
|
const filterConfigUrlParams = filterConfigKeys.length > 0
|
||||||
|
? "&"
|
||||||
|
+ filterConfigKeys
|
||||||
|
.map(key => DASHBOARD_UI_FILTER_CONFIG_URL_PARAM_KEY[key] + '=' + filterConfig[key]).join('&')
|
||||||
|
: ""
|
||||||
|
|
||||||
// setup the iframe's sandbox configuration
|
// setup the iframe's sandbox configuration
|
||||||
iframe.sandbox.add("allow-same-origin"); // needed for postMessage to work
|
iframe.sandbox.add("allow-same-origin"); // needed for postMessage to work
|
||||||
|
@ -132,7 +147,7 @@ export async function embedDashboard({
|
||||||
resolve(new Switchboard({ port: ourPort, name: 'superset-embedded-sdk', debug }));
|
resolve(new Switchboard({ port: ourPort, name: 'superset-embedded-sdk', debug }));
|
||||||
});
|
});
|
||||||
|
|
||||||
iframe.src = `${supersetDomain}/embedded/${id}${dashboardConfig}`;
|
iframe.src = `${supersetDomain}/embedded/${id}${dashboardConfig}${filterConfigUrlParams}`;
|
||||||
mountPoint.replaceChildren(iframe);
|
mountPoint.replaceChildren(iframe);
|
||||||
log('placed the iframe')
|
log('placed the iframe')
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue