Skip to content
Snippets Groups Projects

geo intergation

Merged Leonardo Christino requested to merge feat/get_intergation into main
25 files
+ 351
600
Compare changes
  • Side-by-side
  • Inline
Files
25
import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit';
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import type { RootState } from './store';
import { globalConfigTypes, VisualizationConfiguration } from '../../vis/types';
import { VisualizationConfiguration } from '../../vis/types';
import { isEqual } from 'lodash-es';
import { EncodingTypes } from '../../vis/configuration/encodings';
import { SettingTypes } from '../../vis/configuration/settings';
import { InteractionTypes } from '../../vis/configuration/interactions';
export type VisStateSettings = {
general: globalConfigTypes;
[id: string]: VisualizationConfiguration;
};
export type VisState = {
activeVisualization?: string;
settings: VisStateSettings;
active?: string;
visualizations: VisStateSettings;
};
export const initialState: VisState = {
activeVisualization: 'NodeLinkVis',
settings: {
general: {},
},
active: 'NodeLinkVis',
visualizations: {},
};
export const visualizationSlice = createSlice({
name: 'visualization',
initialState,
reducers: {
addVisualization: (
state,
action: PayloadAction<{
id: string;
settings: SettingTypes;
encodings: EncodingTypes;
interactions: InteractionTypes;
}>,
) => {
const { id, settings, encodings, interactions } = action.payload;
state.settings[id] = { settings, encodings, interactions };
},
removeVisualization: (state, action: PayloadAction<string>) => {
if (state.settings[action.payload]) {
delete state.settings[action.payload];
if (state.visualizations[action.payload]) {
delete state.visualizations[action.payload];
}
},
setActiveVisualization: (state, action: PayloadAction<string>) => {
state.activeVisualization = action.payload;
state.active = action.payload;
},
setVisualizationState: (state, action: PayloadAction<VisState>) => {
if (action.payload.activeVisualization && !isEqual(action.payload, state)) {
state.activeVisualization = action.payload.activeVisualization;
state.settings = action.payload.settings;
if (action.payload.active && !isEqual(action.payload, state)) {
state.active = action.payload.active;
state.visualizations = action.payload.visualizations;
}
},
updateConfiguration: (state, action: PayloadAction<any>) => {
const { general, visualization } = action.payload;
state.settings.general = general;
if (state.activeVisualization) state.settings[state.activeVisualization] = visualization;
updateVisualization: (state, action: PayloadAction<{ id: string; settings: any }>) => {
const { id, settings } = action.payload;
state.visualizations[id] = settings;
},
},
});
export const { addVisualization, removeVisualization, setActiveVisualization, setVisualizationState, updateConfiguration } =
visualizationSlice.actions;
export const { removeVisualization, setActiveVisualization, setVisualizationState, updateVisualization } = visualizationSlice.actions;
export const visualizationState = (state: RootState) => state.visualize;
export const visualizationAllSettings = (state: RootState) => state.visualize.settings;
export const visualizationAllSettings = (state: RootState) => state.visualize.visualizations;
export default visualizationSlice.reducer;
Loading