2019-02-12 05:36:46 -06:00
|
|
|
import { createLodashMemoizedSelector } from 'app/core/utils/reselect';
|
|
|
|
import { ExploreItemState } from 'app/types';
|
|
|
|
import { filterLogLevels, dedupLogRows } from 'app/core/logs_model';
|
|
|
|
|
|
|
|
export const exploreItemUIStateSelector = (itemState: ExploreItemState) => {
|
2019-05-17 05:45:11 -05:00
|
|
|
const { showingGraph, showingTable, showingStartPage, dedupStrategy } = itemState;
|
2019-02-12 05:36:46 -06:00
|
|
|
return {
|
|
|
|
showingGraph,
|
|
|
|
showingTable,
|
|
|
|
showingStartPage,
|
|
|
|
dedupStrategy,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
const logsSelector = (state: ExploreItemState) => state.logsResult;
|
|
|
|
const hiddenLogLevelsSelector = (state: ExploreItemState) => state.hiddenLogLevels;
|
|
|
|
const dedupStrategySelector = (state: ExploreItemState) => state.dedupStrategy;
|
|
|
|
export const deduplicatedLogsSelector = createLodashMemoizedSelector(
|
|
|
|
logsSelector,
|
|
|
|
hiddenLogLevelsSelector,
|
|
|
|
dedupStrategySelector,
|
|
|
|
(logs, hiddenLogLevels, dedupStrategy) => {
|
|
|
|
if (!logs) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
const filteredData = filterLogLevels(logs, new Set(hiddenLogLevels));
|
|
|
|
return dedupLogRows(filteredData, dedupStrategy);
|
|
|
|
}
|
|
|
|
);
|