@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
128 lines (127 loc) • 4.63 kB
JavaScript
import { EMPTY_ARRAY } from '../../Utilities/Constants/GeneralConstants';
export const DASHBOARD_SET_MODULE_BUTTONS = 'DASHBOARD_SET_MODULE_BUTTONS';
export const DASHBOARD_ACTIVE_TAB_INDEX_CHANGE = 'DASHBOARD_ACTIVE_TAB_INDEX_CHANGE';
export const DASHBOARD_SET_IS_COLLAPSED = 'DASHBOARD_SET_IS_COLLAPSED';
export const DASHBOARD_SET_IS_FLOATING = 'DASHBOARD_SET_IS_FLOATING';
export const DASHBOARD_SET_IS_HIDDEN = 'DASHBOARD_SET_IS_HIDDEN';
export const DASHBOARD_SET_FLOATING_POSITION = 'DASHBOARD_SET_FLOATING_POSITION';
export const DASHBOARD_SET_TABS = 'DASHBOARD_SET_TABS';
export const DASHBOARD_SET_PINNED_TOOLBARS = 'DASHBOARD_SET_PINNED_TOOLBARS';
export const DASHBOARD_CLOSE_TOOLBAR = 'DASHBOARD_CLOSE_TOOLBAR';
export const DASHBOARD_SET_TITLE = 'DASHBOARD_SET_TITLE';
export const DASHBOARD_READY = 'DASHBOARD_READY';
export const DashboardSetModuleButtons = (moduleButtons) => ({
type: DASHBOARD_SET_MODULE_BUTTONS,
moduleButtons: moduleButtons,
});
export const DashboardSetActiveTabIndex = (ActiveTabIndex) => ({
type: DASHBOARD_ACTIVE_TAB_INDEX_CHANGE,
ActiveTabIndex,
});
export const DashboardSetIsCollapsed = (IsCollapsed) => ({
type: DASHBOARD_SET_IS_COLLAPSED,
IsCollapsed,
});
export const DashboardSetIsFloating = (IsFloating) => ({
type: DASHBOARD_SET_IS_FLOATING,
IsFloating,
});
export const DashboardSetIsHidden = (IsHidden) => ({
type: DASHBOARD_SET_IS_HIDDEN,
IsHidden,
});
export const DashboardSetFloatingPosition = (FloatingPosition) => ({
type: DASHBOARD_SET_FLOATING_POSITION,
FloatingPosition,
});
export const DashboardSetTabs = (Tabs) => ({
type: DASHBOARD_SET_TABS,
Tabs,
});
export const DashboardCloseToolbar = (toolbar) => ({
toolbar,
type: DASHBOARD_CLOSE_TOOLBAR,
});
export const DashboardSetTitle = (title) => ({
type: DASHBOARD_SET_TITLE,
title,
});
export const DashboardReady = (dashboardState) => ({
type: DASHBOARD_READY,
dashboardState,
});
export const DashboardSetPinnedToolbars = (pinnedToolbars) => ({
type: DASHBOARD_SET_PINNED_TOOLBARS,
pinnedToolbars,
});
const initialState = {
Tabs: EMPTY_ARRAY,
ActiveTabIndex: 0,
IsCollapsed: false,
IsFloating: false,
IsHidden: false,
FloatingPosition: { x: 100, y: 100 },
ModuleButtons: ['SettingsPanel'],
DashboardTitle: '',
};
export const DashboardReducer = (state = initialState, action) => {
switch (action.type) {
case DASHBOARD_SET_MODULE_BUTTONS: {
const actionTyped = action;
const dashboardModuleButtons = actionTyped.moduleButtons;
return Object.assign({}, state, {
ModuleButtons: dashboardModuleButtons,
VisibleButtons: undefined,
});
}
case DASHBOARD_ACTIVE_TAB_INDEX_CHANGE: {
const { ActiveTabIndex } = action;
return { ...state, ActiveTabIndex };
}
case DASHBOARD_SET_IS_COLLAPSED: {
const { IsCollapsed } = action;
return { ...state, IsCollapsed };
}
case DASHBOARD_SET_IS_FLOATING: {
const { IsFloating } = action;
return { ...state, IsFloating };
}
case DASHBOARD_SET_IS_HIDDEN: {
const { IsHidden } = action;
return { ...state, IsHidden };
}
case DASHBOARD_SET_FLOATING_POSITION: {
const { FloatingPosition } = action;
return { ...state, FloatingPosition };
}
case DASHBOARD_SET_TABS: {
const { Tabs } = action;
return { ...state, Tabs };
}
case DASHBOARD_CLOSE_TOOLBAR: {
const actionTyped = action;
const tabs = [].concat(state.Tabs);
const currentTab = tabs[state.ActiveTabIndex];
if (currentTab) {
const toolbars = [].concat(currentTab.Toolbars);
const index = toolbars.findIndex((t) => t == actionTyped.toolbar);
toolbars.splice(index, 1);
currentTab.Toolbars = toolbars;
return { ...state, Tabs: tabs };
}
else {
return { ...state };
}
}
case DASHBOARD_SET_TITLE: {
const actionTyped = action;
return Object.assign({}, state, { DashboardTitle: actionTyped.title });
}
case DASHBOARD_SET_PINNED_TOOLBARS: {
const actionTyped = action;
return Object.assign({}, state, { PinnedToolbars: actionTyped.pinnedToolbars });
}
default:
return state;
}
};