blob: 86fa4bf00f5de18cb7a04bf8582c1719cd022c53 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { ChartProps } from '@superset-ui/core';
import { chart } from 'src/chart/chartReducer';
import componentTypes from 'src/dashboard/util/componentTypes';
export type ChartReducerInitialState = typeof chart;
// chart query built from initialState
// Ref: https://github.com/apache/superset/blob/dcac860f3e5528ecbc39e58f045c7388adb5c3d0/superset-frontend/src/dashboard/reducers/getInitialState.js#L120
export interface ChartQueryPayload extends Partial<ChartReducerInitialState> {
id: number;
formData: ChartProps['formData'];
form_data?: ChartProps['rawFormData'];
[key: string]: unknown;
}
/** Chart state of redux */
export type Chart = {
id: number;
formData: {
viz_type: string;
};
};
/** Root state of redux */
export type RootState = {
charts: { [key: string]: Chart };
dashboardLayout: { present: { [key: string]: LayoutItem } };
dashboardFilters: {};
};
/** State of dashboardLayout in redux */
export type Layout = { [key: string]: LayoutItem };
/** State of charts in redux */
export type Charts = { [key: number]: Chart };
type ComponentTypesKeys = keyof typeof componentTypes;
export type ComponentType = typeof componentTypes[ComponentTypesKeys];
/** State of dashboardLayout item in redux */
export type LayoutItem = {
children: string[];
parents: string[];
type: ComponentType;
id: string;
meta: {
chartId: number;
height: number;
sliceName?: string;
text?: string;
uuid: string;
width: number;
};
};
type ActiveFilter = {
scope: number[];
values: any[];
};
export type ActiveFilters = {
[key: string]: ActiveFilter;
};