mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-06 01:08:03 +00:00
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { createSelector } from 'reselect';
|
|
import { createMapSelector } from 'reselect-map';
|
|
import { Map as makeMap } from 'immutable';
|
|
|
|
import { parseQuery, searchTopology, getSearchableFields } from '../utils/search-utils';
|
|
|
|
|
|
const allNodesSelector = state => state.get('nodes');
|
|
const nodesByTopologySelector = state => state.get('nodesByTopology');
|
|
const currentTopologyIdSelector = state => state.get('currentTopologyId');
|
|
const searchQuerySelector = state => state.get('searchQuery');
|
|
|
|
const parsedSearchQuerySelector = createSelector(
|
|
[
|
|
searchQuerySelector
|
|
],
|
|
searchQuery => parseQuery(searchQuery)
|
|
);
|
|
|
|
export const searchNodeMatchesSelector = createMapSelector(
|
|
[
|
|
nodesByTopologySelector,
|
|
parsedSearchQuerySelector,
|
|
],
|
|
(nodes, parsed) => (parsed ? searchTopology(nodes, parsed) : makeMap())
|
|
);
|
|
|
|
export const currentTopologySearchNodeMatchesSelector = createSelector(
|
|
[
|
|
searchNodeMatchesSelector,
|
|
currentTopologyIdSelector,
|
|
],
|
|
(nodesByTopology, currentTopologyId) => nodesByTopology.get(currentTopologyId) || makeMap()
|
|
);
|
|
|
|
export const searchableFieldsSelector = createSelector(
|
|
[
|
|
allNodesSelector,
|
|
],
|
|
getSearchableFields
|
|
);
|