Skip to content
Snippets Groups Projects
Unverified Commit 615b86c0 authored by Anton Kulyk's avatar Anton Kulyk Committed by GitHub
Browse files

Add dashboard state to metabase-types/store (#26621)

* Add `DashboardState` to `metabase-types/store`

* Add `createMockDashboardState`

* Use no dashboard state by default
parent 64178eb5
No related merge requests found
import type {
Dashboard,
DashboardId,
DashboardOrderedCard,
DashCardId,
DashCardDataMap,
ParameterId,
} from "metabase-types/api";
import { ParameterValueOrArray } from "metabase-types/types/Parameter";
export type DashboardSidebarName =
| "addQuestion"
| "addActionButton"
| "addActionForm"
| "clickBehavior"
| "editParameter"
| "sharing"
| "info";
type ParameterValueCacheKey = string;
export interface DashboardState {
dashboardId: DashboardId | null;
dashboards: Record<DashboardId, Dashboard>;
dashcards: Record<DashCardId, DashboardOrderedCard>;
dashcardData: DashCardDataMap;
parameterValues: Record<ParameterId, ParameterValueOrArray>;
parameterValuesSearchCache: Record<
ParameterValueCacheKey,
{
has_more_values: boolean;
results: ParameterValueOrArray[];
}
>;
loadingDashCards: {
dashcardIds: DashCardId[];
loadingIds: DashCardId[];
loadingStatus: "idle" | "running" | "complete";
startTime: number | null;
};
loadingControls: {
documentTitle?: string;
showLoadCompleteFavicon?: boolean;
};
isEditing: Dashboard | null;
isAddParameterPopoverOpen: boolean;
slowCards: Record<DashCardId, unknown>;
sidebar: {
name?: DashboardSidebarName;
props: Record<string, unknown>;
};
titleTemplateChange: string | null;
}
export * from "./admin";
export * from "./app";
export * from "./dashboard";
export * from "./embed";
export * from "./entities";
export * from "./forms";
......
import { createMockDashboard } from "metabase-types/api/mocks";
import type { DashboardState } from "metabase-types/store";
export const createMockDashboardState = (
opts: Partial<DashboardState> = {},
): DashboardState => ({
dashboardId: null,
dashboards: {},
dashcards: {},
dashcardData: {},
parameterValues: {},
parameterValuesSearchCache: {},
loadingDashCards: {
dashcardIds: [],
loadingIds: [],
loadingStatus: "idle",
startTime: null,
},
loadingControls: {},
isEditing: null,
isAddParameterPopoverOpen: false,
slowCards: {},
sidebar: {
props: {},
},
titleTemplateChange: null,
...opts,
});
export * from "./admin";
export * from "./app";
export * from "./dashboard";
export * from "./embed";
export * from "./entities";
export * from "./forms";
......
......@@ -3,6 +3,7 @@ import { createMockUser } from "metabase-types/api/mocks";
import {
createMockAdminState,
createMockAppState,
createMockDashboardState,
createMockEmbedState,
createMockEntitiesState,
createMockFormState,
......@@ -15,6 +16,7 @@ export const createMockState = (opts?: Partial<State>): State => ({
admin: createMockAdminState(),
app: createMockAppState(),
currentUser: createMockUser(),
dashboard: createMockDashboardState(),
embed: createMockEmbedState(),
entities: createMockEntitiesState(),
form: createMockFormState(),
......
import { User } from "metabase-types/api";
import { AdminState } from "./admin";
import { AppState } from "./app";
import { DashboardState } from "./dashboard";
import { EmbedState } from "./embed";
import { EntitiesState } from "./entities";
import { FormState } from "./forms";
......@@ -12,6 +13,7 @@ export interface State {
admin: AdminState;
app: AppState;
currentUser: User | null;
dashboard: DashboardState;
embed: EmbedState;
entities: EntitiesState;
form: FormState;
......
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