selectors.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { createSelector } from 'reselect';
  2. import { RootState, FetchStatus, BrokersState } from 'types';
  3. import { createFetchingSelector } from 'redux/reducers/loader/selectors';
  4. const brokersState = ({ brokers }: RootState): BrokersState => brokers;
  5. const getBrokerListFetchingStatus = createFetchingSelector('GET_BROKERS');
  6. export const getIsBrokerListFetched = createSelector(
  7. getBrokerListFetchingStatus,
  8. (status) => status === FetchStatus.fetched,
  9. );
  10. const getBrokerList = createSelector(brokersState, ({ items }) => items);
  11. export const getBrokerCount = createSelector(brokersState, ({ brokerCount }) => brokerCount);
  12. export const getZooKeeperStatus = createSelector(brokersState, ({ zooKeeperStatus }) => zooKeeperStatus);
  13. export const getActiveControllers = createSelector(brokersState, ({ activeControllers }) => activeControllers);
  14. export const getNetworkPoolUsage = createSelector(brokersState, ({ networkPoolUsage }) => networkPoolUsage);
  15. export const getRequestPoolUsage = createSelector(brokersState, ({ requestPoolUsage }) => requestPoolUsage);
  16. export const getOnlinePartitionCount = createSelector(brokersState, ({ onlinePartitionCount }) => onlinePartitionCount);
  17. export const getOfflinePartitionCount = createSelector(brokersState, ({ offlinePartitionCount }) => offlinePartitionCount);
  18. export const getDiskUsageDistribution = createSelector(brokersState, ({ diskUsageDistribution }) => diskUsageDistribution);
  19. export const getUnderReplicatedPartitionCount = createSelector(brokersState, ({ underReplicatedPartitionCount }) => underReplicatedPartitionCount);
  20. export const getMinDiskUsage = createSelector(
  21. getBrokerList,
  22. (brokers) => {
  23. if (brokers.length === 0) {
  24. return 0;
  25. }
  26. return Math.min(...brokers.map(({ segmentSize }) => segmentSize));
  27. },
  28. );
  29. export const getMaxDiskUsage = createSelector(
  30. getBrokerList,
  31. (brokers) => {
  32. if (brokers.length === 0) {
  33. return 0;
  34. }
  35. return Math.max(...brokers.map(({ segmentSize }) => segmentSize));
  36. },
  37. );