selectors.ts 1.0 KB

123456789101112131415161718192021222324252627282930
  1. import { createLodashMemoizedSelector } from 'app/core/utils/reselect';
  2. import { ExploreItemState } from 'app/types';
  3. import { filterLogLevels, dedupLogRows } from 'app/core/logs_model';
  4. export const exploreItemUIStateSelector = (itemState: ExploreItemState) => {
  5. const { showingGraph, showingLogs, showingTable, showingStartPage, dedupStrategy } = itemState;
  6. return {
  7. showingGraph,
  8. showingLogs,
  9. showingTable,
  10. showingStartPage,
  11. dedupStrategy,
  12. };
  13. };
  14. const logsSelector = (state: ExploreItemState) => state.logsResult;
  15. const hiddenLogLevelsSelector = (state: ExploreItemState) => state.hiddenLogLevels;
  16. const dedupStrategySelector = (state: ExploreItemState) => state.dedupStrategy;
  17. export const deduplicatedLogsSelector = createLodashMemoizedSelector(
  18. logsSelector,
  19. hiddenLogLevelsSelector,
  20. dedupStrategySelector,
  21. (logs, hiddenLogLevels, dedupStrategy) => {
  22. if (!logs) {
  23. return null;
  24. }
  25. const filteredData = filterLogLevels(logs, new Set(hiddenLogLevels));
  26. return dedupLogRows(filteredData, dedupStrategy);
  27. }
  28. );