mirror of
https://github.com/grafana/grafana.git
synced 2025-02-09 06:56:07 -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
87 lines
2.2 KiB
TypeScript
87 lines
2.2 KiB
TypeScript
import { combineReducers } from '@reduxjs/toolkit';
|
|
import { LoadingState } from '@grafana/data';
|
|
|
|
import { NEW_VARIABLE_ID } from './types';
|
|
import { VariableHide, VariableModel } from '../types';
|
|
import { VariablesState } from './variablesReducer';
|
|
import { locationReducer } from '../../../core/reducers/location';
|
|
import { VariableAdapter } from '../adapters';
|
|
import { dashboardReducer } from 'app/features/dashboard/state/reducers';
|
|
import { templatingReducers } from './reducers';
|
|
|
|
export const getVariableState = (
|
|
noOfVariables: number,
|
|
inEditorIndex = -1,
|
|
includeEmpty = false
|
|
): Record<string, VariableModel> => {
|
|
const variables: Record<string, VariableModel> = {};
|
|
|
|
for (let index = 0; index < noOfVariables; index++) {
|
|
variables[index] = {
|
|
id: index.toString(),
|
|
type: 'query',
|
|
name: `Name-${index}`,
|
|
hide: VariableHide.dontHide,
|
|
index,
|
|
label: `Label-${index}`,
|
|
skipUrlSync: false,
|
|
global: false,
|
|
state: LoadingState.NotStarted,
|
|
error: null,
|
|
};
|
|
}
|
|
|
|
if (includeEmpty) {
|
|
variables[NEW_VARIABLE_ID] = {
|
|
id: NEW_VARIABLE_ID,
|
|
type: 'query',
|
|
name: `Name-${NEW_VARIABLE_ID}`,
|
|
hide: VariableHide.dontHide,
|
|
index: noOfVariables,
|
|
label: `Label-${NEW_VARIABLE_ID}`,
|
|
skipUrlSync: false,
|
|
global: false,
|
|
state: LoadingState.NotStarted,
|
|
error: null,
|
|
};
|
|
}
|
|
|
|
return variables;
|
|
};
|
|
|
|
export const getVariableTestContext = <Model extends VariableModel>(
|
|
adapter: VariableAdapter<Model>,
|
|
variableOverrides: Partial<Model> = {}
|
|
) => {
|
|
const defaultVariable = {
|
|
...adapter.initialState,
|
|
id: '0',
|
|
index: 0,
|
|
name: '0',
|
|
};
|
|
|
|
const initialState: VariablesState = {
|
|
'0': { ...defaultVariable, ...variableOverrides },
|
|
};
|
|
|
|
return { initialState };
|
|
};
|
|
|
|
export const getRootReducer = () =>
|
|
combineReducers({
|
|
location: locationReducer,
|
|
dashboard: dashboardReducer,
|
|
templating: templatingReducers,
|
|
});
|
|
|
|
export const getTemplatingRootReducer = () =>
|
|
combineReducers({
|
|
templating: templatingReducers,
|
|
});
|
|
|
|
export const getTemplatingAndLocationRootReducer = () =>
|
|
combineReducers({
|
|
templating: templatingReducers,
|
|
location: locationReducer,
|
|
});
|