Skip to content
Snippets Groups Projects
Unverified Commit 1fa5a933 authored by Mahatthana (Kelvin) Nomsawadi's avatar Mahatthana (Kelvin) Nomsawadi Committed by GitHub
Browse files

refactor(sdk): Make sense of dashboard and embed code (#44636)

* Make the code makes more sense

* Fix type error
parent f43a1507
No related branches found
No related tags found
No related merge requests found
import type { Query } from "history";
import { pick } from "underscore";
import { DEFAULT_EMBED_DISPLAY_OPTIONS } from "metabase/dashboard/constants";
import { DEFAULT_DASHBOARD_DISPLAY_OPTIONS } from "metabase/dashboard/constants";
import {
useDashboardFullscreen,
useDashboardRefreshPeriod,
......@@ -31,7 +31,7 @@ export const useSdkDashboardParams = ({
const hideDownloadButton = !withDownloads;
const displayOptions: EmbedDisplayParams = {
...DEFAULT_EMBED_DISPLAY_OPTIONS,
...DEFAULT_DASHBOARD_DISPLAY_OPTIONS,
...pick(
{
titled: withTitle,
......
......@@ -49,7 +49,7 @@ export const DASHBOARD_SLOW_TIMEOUT = 15 * 1000;
export const DASHBOARD_PDF_EXPORT_ROOT_ID =
"Dashboard-Parameters-And-Cards-Container";
export const DEFAULT_EMBED_DISPLAY_OPTIONS: EmbedDisplayParams = {
export const DEFAULT_DASHBOARD_DISPLAY_OPTIONS: EmbedDisplayParams = {
bordered: false,
titled: true,
cardTitled: true,
......
......@@ -4,28 +4,28 @@ import { replace } from "react-router-redux";
import { usePrevious } from "react-use";
import { omit } from "underscore";
import { DEFAULT_EMBED_DISPLAY_OPTIONS } from "metabase/dashboard/constants";
import { DEFAULT_DASHBOARD_DISPLAY_OPTIONS } from "metabase/dashboard/constants";
import { parseHashOptions, stringifyHashOptions } from "metabase/lib/browser";
import { useDispatch } from "metabase/lib/redux";
import { isNullOrUndefined } from "metabase/lib/types";
type SYNCED_KEY = "refresh" | "fullscreen" | "theme";
const DEFAULT_DASHBOARD_EMBED_DISPLAY_OPTIONS = {
theme: DEFAULT_EMBED_DISPLAY_OPTIONS.theme,
const DEFAULT_SYNCED_DASHBOARD_OPTIONS = {
theme: DEFAULT_DASHBOARD_DISPLAY_OPTIONS.theme,
fullscreen: false,
refresh: null,
} as const;
const getDefaultDisplayOption = <
Value extends typeof DEFAULT_DASHBOARD_EMBED_DISPLAY_OPTIONS[Key],
Value extends typeof DEFAULT_SYNCED_DASHBOARD_OPTIONS[Key],
Key extends SYNCED_KEY,
>(
key: Key,
): Value => DEFAULT_DASHBOARD_EMBED_DISPLAY_OPTIONS[key] as Value;
): Value => DEFAULT_SYNCED_DASHBOARD_OPTIONS[key] as Value;
const isEmptyOrDefault = <
Value extends typeof DEFAULT_DASHBOARD_EMBED_DISPLAY_OPTIONS[Key],
Value extends typeof DEFAULT_SYNCED_DASHBOARD_OPTIONS[Key],
Key extends SYNCED_KEY,
>(
value: Value,
......@@ -33,7 +33,7 @@ const isEmptyOrDefault = <
) => isNullOrUndefined(value) || value === getDefaultDisplayOption(key);
export const useLocationSync = <
Value extends typeof DEFAULT_DASHBOARD_EMBED_DISPLAY_OPTIONS[Key],
Value extends typeof DEFAULT_SYNCED_DASHBOARD_OPTIONS[Key],
Key extends SYNCED_KEY = any,
>({
key,
......
import { DEFAULT_DASHBOARD_DISPLAY_OPTIONS } from "metabase/dashboard/constants";
export const DEFAULT_EMBED_DISPLAY_PARAMS = {
titled: DEFAULT_DASHBOARD_DISPLAY_OPTIONS.titled,
theme: undefined,
hideParameters: DEFAULT_DASHBOARD_DISPLAY_OPTIONS.hideParameters,
hideDownloadButton: DEFAULT_DASHBOARD_DISPLAY_OPTIONS.hideDownloadButton,
} as const;
......@@ -4,13 +4,15 @@ import type { DashboardUrlHashOptions } from "metabase/dashboard/types";
import { parseHashOptions } from "metabase/lib/browser";
import { isWithinIframe } from "metabase/lib/dom";
import { DEFAULT_EMBED_DISPLAY_PARAMS } from "../constants";
export const useEmbedFrameOptions = ({ location }: { location: Location }) => {
const {
bordered = isWithinIframe(),
titled = true,
theme,
hide_parameters = null,
hide_download_button = null,
titled = DEFAULT_EMBED_DISPLAY_PARAMS.titled,
theme = DEFAULT_EMBED_DISPLAY_PARAMS.theme,
hide_parameters = DEFAULT_EMBED_DISPLAY_PARAMS.hideParameters,
hide_download_button = DEFAULT_EMBED_DISPLAY_PARAMS.hideDownloadButton,
} = parseHashOptions(location.hash) as DashboardUrlHashOptions;
return {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment