mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* Refactor: Replaces initLock with state machine * Refactor: removes some states for now * Refactor: adds loading state in OptionsPicker * Refactor: major refactor of load state * Refactor: fixes updating graph in parallell * Refactor: moves error handling to updateOptions * Refactor: fixes the last cases * Tests: disables variable e2e again * Chore: removes nova config * Refactor: small changes when going through the code again * Refactor: fixes typings * Refactor: changes after PR comments * Refactor: split up onTimeRangeUpdated and fixed some error handling * Tests: removes unused func * Tests: fixes typing
51 lines
2.1 KiB
TypeScript
51 lines
2.1 KiB
TypeScript
import { AdHocVariableFilter, AdHocVariableModel, initialVariableModelState } from 'app/features/variables/types';
|
|
import { getInstanceState, VariablePayload } from '../state/types';
|
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
import { initialVariablesState, VariablesState } from '../state/variablesReducer';
|
|
|
|
export interface AdHocVariabelFilterUpdate {
|
|
index: number;
|
|
filter: AdHocVariableFilter;
|
|
}
|
|
export interface AdHocVariableEditorState {
|
|
infoText: string;
|
|
dataSources: Array<{ text: string; value: string }>;
|
|
}
|
|
|
|
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;
|