import { FilterGroup, FilterOrigin } from '@luzmo/dashboard-contents-types'; import { DashboardDimensions, ScreenMode } from './common.model'; interface EventDataBase { dashboardId?: string; dashboardSlug?: string; integrationId?: string; language?: string; name?: string; screenMode?: ScreenMode; type?: string; } interface LoadEventData extends EventDataBase { type: 'load'; dimensions: DashboardDimensions; } interface ChangedFiltersEventData extends EventDataBase { type: 'changedFilters'; changed: FilterGroup[]; filters: FilterGroup[]; itemId: string; origin: FilterOrigin; } interface ItemsRenderedEventData extends EventDataBase { type: 'chartsRendered'; } interface CustomEventData extends EventDataBase { itemId: string; data: { event: string; language: string; [key: string]: unknown; }; } export interface LoadEvent { data: LoadEventData; } export interface ChangedFiltersEvent { data: ChangedFiltersEventData; } export interface CustomEvent { data: CustomEventData; } export interface ItemsRenderedEvent { data: ItemsRenderedEventData; } interface ExportedEventData extends EventDataBase { type: 'exported'; } export interface ExportedEvent { data: ExportedEventData; } type DashboardAction = 'addColumnToSlot' | 'addFormulaToSlot' | 'removeColumnFromSlot' | 'removeItem' | 'addItem' | 'cloneItem' | 'addItemFilter' | 'updateItemFilter' | 'removeItemFilter' | 'addDashboardFilter' | 'removeDashboardFilter' | 'updateDashboardFilter' | 'addParameter' | 'updateParameter' | 'removeParameter' | 'openDatasetDetail' | 'linkDatasets' | 'authorizationExpired'; interface DashboardActionEventData extends EventDataBase { type: 'dashboardAction'; action: DashboardAction; dropType?: 'add' | 'replace'; item?: { id: string; type: string; }; column?: { id: string; name: { [k: string]: string | void; }; type: string; datasetId: string; }; } export interface DashboardActionEvent { data: DashboardActionEventData; } export {};