123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import { createSlice, PayloadAction } from '@reduxjs/toolkit';
- import { AdHocVariableFilter, AdHocVariableModel, initialVariableModelState } from 'app/features/variables/types';
- import { getInstanceState } from '../state/selectors';
- import { initialVariablesState, VariablePayload, VariablesState } from '../state/types';
- export interface AdHocVariabelFilterUpdate {
- index: number;
- filter: AdHocVariableFilter;
- }
- export const initialAdHocVariableModelState: AdHocVariableModel = {
- ...initialVariableModelState,
- type: 'adhoc',
- datasource: null,
- filters: [],
- };
- export const adHocVariableSlice = createSlice({
- name: 'templating/adhoc',
- initialState: initialVariablesState,
- reducers: {
- filterAdded: (state: VariablesState, action: PayloadAction<VariablePayload<AdHocVariableFilter>>) => {
- const instanceState = getInstanceState<AdHocVariableModel>(state, action.payload.id);
- instanceState.filters.push(action.payload.data);
- },
- filterRemoved: (state: VariablesState, action: PayloadAction<VariablePayload<number>>) => {
- const instanceState = getInstanceState<AdHocVariableModel>(state, action.payload.id);
- const index = action.payload.data;
- instanceState.filters.splice(index, 1);
- },
- filterUpdated: (state: VariablesState, action: PayloadAction<VariablePayload<AdHocVariabelFilterUpdate>>) => {
- const instanceState = getInstanceState<AdHocVariableModel>(state, action.payload.id);
- const { filter, index } = action.payload.data;
- instanceState.filters[index] = filter;
- },
- filtersRestored: (state: VariablesState, action: PayloadAction<VariablePayload<AdHocVariableFilter[]>>) => {
- const instanceState = getInstanceState<AdHocVariableModel>(state, action.payload.id);
- instanceState.filters = action.payload.data;
- },
- },
- });
- export const { filterAdded, filterRemoved, filterUpdated, filtersRestored } = adHocVariableSlice.actions;
- export const adHocVariableReducer = adHocVariableSlice.reducer;
|