reducers.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { DataSourcesState, Plugin } from 'app/types';
  2. import { DataSourceSettings } from '@grafana/ui/src/types';
  3. import { Action, ActionTypes } from './actions';
  4. import { LayoutModes } from 'app/core/components/LayoutSelector/LayoutSelector';
  5. const initialState: DataSourcesState = {
  6. dataSources: [] as DataSourceSettings[],
  7. dataSource: {} as DataSourceSettings,
  8. layoutMode: LayoutModes.List,
  9. searchQuery: '',
  10. dataSourcesCount: 0,
  11. dataSourceTypes: [] as Plugin[],
  12. dataSourceTypeSearchQuery: '',
  13. hasFetched: false,
  14. dataSourceMeta: {} as Plugin,
  15. };
  16. export const dataSourcesReducer = (state = initialState, action: Action): DataSourcesState => {
  17. switch (action.type) {
  18. case ActionTypes.LoadDataSources:
  19. return { ...state, hasFetched: true, dataSources: action.payload, dataSourcesCount: action.payload.length };
  20. case ActionTypes.LoadDataSource:
  21. return { ...state, dataSource: action.payload };
  22. case ActionTypes.SetDataSourcesSearchQuery:
  23. return { ...state, searchQuery: action.payload };
  24. case ActionTypes.SetDataSourcesLayoutMode:
  25. return { ...state, layoutMode: action.payload };
  26. case ActionTypes.LoadDataSourceTypes:
  27. return { ...state, dataSourceTypes: action.payload };
  28. case ActionTypes.SetDataSourceTypeSearchQuery:
  29. return { ...state, dataSourceTypeSearchQuery: action.payload };
  30. case ActionTypes.LoadDataSourceMeta:
  31. return { ...state, dataSourceMeta: action.payload };
  32. case ActionTypes.SetDataSourceName:
  33. return { ...state, dataSource: { ...state.dataSource, name: action.payload } };
  34. case ActionTypes.SetIsDefault:
  35. return { ...state, dataSource: { ...state.dataSource, isDefault: action.payload } };
  36. }
  37. return state;
  38. };
  39. export default {
  40. dataSources: dataSourcesReducer,
  41. };