actions.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { ThunkAction } from 'redux-thunk';
  2. import { DataSource, StoreState } from 'app/types';
  3. import { getBackendSrv } from '../../../core/services/backend_srv';
  4. import { LayoutMode } from '../../../core/components/LayoutSelector/LayoutSelector';
  5. export enum ActionTypes {
  6. LoadDataSources = 'LOAD_DATA_SOURCES',
  7. SetDataSourcesSearchQuery = 'SET_DATA_SOURCES_SEARCH_QUERY',
  8. SetDataSourcesLayoutMode = 'SET_DATA_SOURCES_LAYOUT_MODE',
  9. }
  10. export interface LoadDataSourcesAction {
  11. type: ActionTypes.LoadDataSources;
  12. payload: DataSource[];
  13. }
  14. export interface SetDataSourcesSearchQueryAction {
  15. type: ActionTypes.SetDataSourcesSearchQuery;
  16. payload: string;
  17. }
  18. export interface SetDataSourcesLayoutModeAction {
  19. type: ActionTypes.SetDataSourcesLayoutMode;
  20. payload: LayoutMode;
  21. }
  22. const dataSourcesLoaded = (dataSources: DataSource[]): LoadDataSourcesAction => ({
  23. type: ActionTypes.LoadDataSources,
  24. payload: dataSources,
  25. });
  26. export const setDataSourcesSearchQuery = (searchQuery: string): SetDataSourcesSearchQueryAction => ({
  27. type: ActionTypes.SetDataSourcesSearchQuery,
  28. payload: searchQuery,
  29. });
  30. export const setDataSourcesLayoutMode = (layoutMode: LayoutMode): SetDataSourcesLayoutModeAction => ({
  31. type: ActionTypes.SetDataSourcesLayoutMode,
  32. payload: layoutMode,
  33. });
  34. export type Action = LoadDataSourcesAction | SetDataSourcesSearchQueryAction | SetDataSourcesLayoutModeAction;
  35. type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
  36. export function loadDataSources(): ThunkResult<void> {
  37. return async dispatch => {
  38. const response = await getBackendSrv().get('/api/datasources');
  39. dispatch(dataSourcesLoaded(response));
  40. };
  41. }