@ytsaurus/ui 3.3.1 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/public/build/assets-manifest.json +34 -34
  2. package/dist/public/build/css/3132.43311d48.chunk.css +2 -0
  3. package/dist/public/build/css/3132.43311d48.chunk.css.map +1 -0
  4. package/dist/public/build/css/590.6f40b178.chunk.css +2 -0
  5. package/dist/public/build/css/590.6f40b178.chunk.css.map +1 -0
  6. package/dist/public/build/css/scheduling.8b8a192b.chunk.css +2 -0
  7. package/dist/public/build/css/scheduling.8b8a192b.chunk.css.map +1 -0
  8. package/dist/public/build/js/2563.bbb74274.chunk.js +2 -0
  9. package/dist/public/build/js/2563.bbb74274.chunk.js.map +1 -0
  10. package/dist/public/build/js/4237.57c56e6b.chunk.js +3 -0
  11. package/dist/public/build/js/4237.57c56e6b.chunk.js.map +1 -0
  12. package/dist/public/build/js/887.d8e107dc.chunk.js +2 -0
  13. package/dist/public/build/js/887.d8e107dc.chunk.js.map +1 -0
  14. package/dist/public/build/js/{app-navigation-page-layout.27364587.chunk.js → app-navigation-page-layout.afb1c1ba.chunk.js} +2 -2
  15. package/dist/public/build/js/app-navigation-page-layout.afb1c1ba.chunk.js.map +1 -0
  16. package/dist/public/build/js/{app-navigation.b86557c0.chunk.js → app-navigation.38835895.chunk.js} +2 -2
  17. package/dist/public/build/js/{app-navigation.b86557c0.chunk.js.map → app-navigation.38835895.chunk.js.map} +1 -1
  18. package/dist/public/build/js/{cluster-page-wrapper.98d8905c.chunk.js → cluster-page-wrapper.84f72ceb.chunk.js} +2 -2
  19. package/dist/public/build/js/{cluster-page-wrapper.98d8905c.chunk.js.map → cluster-page-wrapper.84f72ceb.chunk.js.map} +1 -1
  20. package/dist/public/build/js/{code-assistant-chat.4275144c.chunk.js → code-assistant-chat.a7927638.chunk.js} +2 -2
  21. package/dist/public/build/js/{code-assistant-chat.4275144c.chunk.js.map → code-assistant-chat.a7927638.chunk.js.map} +1 -1
  22. package/dist/public/build/js/main.d91d7090.js +3 -0
  23. package/dist/public/build/js/main.d91d7090.js.map +1 -0
  24. package/dist/public/build/js/{navigation.c35bb543.chunk.js → navigation.9b4e0429.chunk.js} +2 -2
  25. package/dist/public/build/js/navigation.9b4e0429.chunk.js.map +1 -0
  26. package/dist/public/build/js/{query-tracker.17cb6d4e.chunk.js → query-tracker.1b6d537a.chunk.js} +2 -2
  27. package/dist/public/build/js/{query-tracker.17cb6d4e.chunk.js.map → query-tracker.1b6d537a.chunk.js.map} +1 -1
  28. package/dist/public/build/js/{runtime.6000b37f.js → runtime.93a1fc00.js} +2 -2
  29. package/dist/public/build/js/{runtime.6000b37f.js.map → runtime.93a1fc00.js.map} +1 -1
  30. package/dist/public/build/js/scheduling.943b1602.chunk.js +2 -0
  31. package/dist/public/build/js/scheduling.943b1602.chunk.js.map +1 -0
  32. package/dist/public/build/manifest.json +30 -30
  33. package/dist/server/controllers/ai-chat.js +2 -1
  34. package/dist/server/types/ai-chat.d.ts +3 -0
  35. package/package.json +5 -5
  36. package/dist/public/build/css/3132.62cd9c06.chunk.css +0 -2
  37. package/dist/public/build/css/3132.62cd9c06.chunk.css.map +0 -1
  38. package/dist/public/build/css/590.1d7b27ca.chunk.css +0 -2
  39. package/dist/public/build/css/590.1d7b27ca.chunk.css.map +0 -1
  40. package/dist/public/build/css/scheduling.f5b832cf.chunk.css +0 -2
  41. package/dist/public/build/css/scheduling.f5b832cf.chunk.css.map +0 -1
  42. package/dist/public/build/js/3205.87c8575d.chunk.js +0 -2
  43. package/dist/public/build/js/3205.87c8575d.chunk.js.map +0 -1
  44. package/dist/public/build/js/4237.a6d263f6.chunk.js +0 -3
  45. package/dist/public/build/js/4237.a6d263f6.chunk.js.map +0 -1
  46. package/dist/public/build/js/887.7bbb21d6.chunk.js +0 -2
  47. package/dist/public/build/js/887.7bbb21d6.chunk.js.map +0 -1
  48. package/dist/public/build/js/app-navigation-page-layout.27364587.chunk.js.map +0 -1
  49. package/dist/public/build/js/main.39129d1a.js +0 -3
  50. package/dist/public/build/js/main.39129d1a.js.map +0 -1
  51. package/dist/public/build/js/navigation.c35bb543.chunk.js.map +0 -1
  52. package/dist/public/build/js/scheduling.3fff0b4f.chunk.js +0 -2
  53. package/dist/public/build/js/scheduling.3fff0b4f.chunk.js.map +0 -1
  54. /package/dist/public/build/js/{4237.a6d263f6.chunk.js.LICENSE.txt → 4237.57c56e6b.chunk.js.LICENSE.txt} +0 -0
  55. /package/dist/public/build/js/{main.39129d1a.js.LICENSE.txt → main.d91d7090.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/887.d8e107dc.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/ClickableAttributesButton.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bars-descending-align-left.svg","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/containers/Host/Host.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/reducers/components/proxies/proxies/proxy.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/utils/cypress-attributes.ts","webpack://@ytsaurus/ui/./src/ui/pages/system/Nodes/NodeTypeSelector.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/system/nodes-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/nodes/nodes.ts","webpack://@ytsaurus/ui/./src/ui/components/PageCounter/PageCounter.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnHeader/ColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/NodeColumns.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/components/ChartLink/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/ChartLink/ChartLink.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Version.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeActions/NodeActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/NodesColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/tables.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/predicates.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/data.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/system/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/MemoryProgress/MemoryProgress.tsx","webpack://@ytsaurus/ui/./src/ui/components/RadioButton/RadioButton.tsx","webpack://@ytsaurus/ui/./src/ui/utils/tablet_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/setup.ts","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js"],"sourcesContent":["import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import {addI18Keysets} from '../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:attributes-button', {en, ru});\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport {openAttributesModal} from '../../store/actions/modals/attributes-modal';\nimport {ButtonProps} from '../../components/Button/Button';\n\nimport AttributesButton, {AttributesButtonProps} from './AttributesButton';\n\nimport i18n from './i18n';\n\ninterface Props extends Omit<AttributesButtonProps, 'onClick' | 'title'> {\n title: React.ReactNode;\n\n // The function is called inside click handler, and overrides path and exactPath\n getPathProps?: () => Pick<Partial<Props>, 'path' | 'exactPath'>;\n path?: string;\n exactPath?: string;\n\n attribute?: string;\n attributes?: object;\n\n size?: ButtonProps['size'];\n view?: ButtonProps['view'];\n}\n\nfunction ClickableAttributesButton({\n title,\n getPathProps = () => {\n return {};\n },\n path,\n exactPath,\n attribute,\n attributes,\n openAttributesModal,\n withTooltip = true,\n tooltipProps = {placement: 'bottom-end', content: i18n('tooltip-content')},\n // Extract potentially problematic props\n ...rest\n}: Props & ConnectedProps<typeof connector>) {\n return (\n <AttributesButton\n {...rest}\n tooltipProps={tooltipProps}\n withTooltip={withTooltip}\n onClick={() => {\n const pathProps = {\n path,\n exactPath,\n ...getPathProps(),\n };\n\n openAttributesModal({\n title,\n ...pathProps,\n attribute,\n attributes,\n });\n }}\n />\n );\n}\n\nconst connector = connect(null, {openAttributesModal});\n\nexport default connector(ClickableAttributesButton);\n","const SvgBarsDescendingAlignLeft = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1 3.25a.75.75 0 0 1 .75-.75h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 3.25M1 8a.75.75 0 0 1 .75-.75h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 1 8m.75 4a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgBarsDescendingAlignLeft;","import reduce_ from 'lodash/reduce';\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\nimport {getClusterUiConfig} from '../global';\nimport {NodeResourceLimits} from '../../../store/reducers/components/node-maintenance-modal';\n\nexport const getNodeMaintenanceModalState = (state: RootState) =>\n state.components.nodeMaintenanceModal;\n\nexport const getNodeMaintenanceModalInitialValues = createSelector(\n [getNodeMaintenanceModalState],\n ({maintenance, resourceLimitsOverrides, role}) => {\n return {\n ...maintenance,\n role: {role},\n limits: reduce_(\n resourceLimitsOverrides,\n (acc, value, k) => {\n const key = k as keyof typeof acc;\n acc[key] = {value};\n return acc;\n },\n {} as Partial<Record<keyof NodeResourceLimits, {value?: number}>>,\n ),\n };\n },\n);\n\nexport const isAllowedMaintenanceApiNodes = (state: RootState) =>\n getClusterUiConfig(state).enable_maintenance_api_nodes;\n\nexport const isAllowedMaintenanceApiProxies = (state: RootState) =>\n getClusterUiConfig(state).enable_maintenance_api_proxies;\n","import React from 'react';\nimport {useSelector} from '../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport {getCluster} from '../../store/selectors/global';\nimport Link from '../../components/Link/Link';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../config/ui-settings';\nimport {makeRegexpFromSettings} from '../../../shared/utils';\n\nimport './Host.scss';\n\nconst reShortName = makeRegexpFromSettings(uiSettings.reShortNameFromAddress);\nconst reTabletNodeShortName = makeRegexpFromSettings(uiSettings.reShortNameFromTabletNodeAddress);\n\nexport function calcShortNameByRegExp(address: string, asTabletNode?: boolean) {\n const re = asTabletNode ? reTabletNodeShortName : reShortName;\n if (re) {\n const res = re?.exec(address);\n if (res?.groups?.shortname) {\n return [res.groups.shortname, res.groups.suffix].filter(Boolean).join('');\n }\n }\n return undefined;\n}\n\nconst block = cn('yt-host');\n\ninterface Props {\n address: string;\n className?: string;\n copyBtnClassName?: string;\n onClick?: () => void;\n useText?: boolean;\n prefix?: React.ReactNode;\n asTabletNode?: boolean;\n inlineMargins?: boolean;\n}\n\nexport function Host({\n address = '',\n prefix,\n className,\n copyBtnClassName,\n onClick,\n useText,\n asTabletNode,\n inlineMargins,\n}: Props) {\n const host = React.useMemo(() => {\n return calcShortNameByRegExp(address, asTabletNode) || address;\n }, [address, asTabletNode]);\n\n const cluster = useSelector(getCluster);\n\n return (\n <span\n className={block(\n {hidden: !host, 'inline-margins': inlineMargins},\n ['elements-monospace', className].filter(Boolean).join(' '),\n )}\n onClick={onClick}\n >\n {prefix}\n <Tooltip className={block('tooltip')} content={address}>\n {useText ? (\n host\n ) : (\n <Link url={`/${cluster}/components/nodes/${address}`} routed>\n {host}\n </Link>\n )}\n </Tooltip>\n <span className={block('copy-btn', copyBtnClassName)}>\n <ClipboardButton view={'flat-secondary'} text={address} />\n </span>\n </span>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport {YTErrorBlock} from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <YTErrorBlock {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import ypath from '../../../../../common/thor/ypath';\nimport format from '../../../../../common/hammer/format';\n\nexport default class Proxy {\n constructor(data) {\n // data comes in format like in /hosts/all, not like //sys/http_proxies\n this.name = data.name;\n this.host = data.name;\n\n let state = format.NO_VALUE;\n if (data?.state) {\n state = data.state;\n } else if (data.dead) {\n state = 'offline';\n } else {\n state = 'online';\n }\n\n this.state = state;\n this.effectiveState = this.banned ? 'banned' : this.state;\n\n this.banned = ypath.getBoolean(data, '/banned') || false;\n this.banMessage = ypath.getValue(data, '/ban_message') || '';\n this.role = ypath.getValue(data, '/role');\n this.version = ypath.getValue(data, '/version') || data?.version;\n this.physicalHost = ypath.getValue(data, '/annotations/physical_host');\n this.liveness = ypath.getValue(data, '/liveness');\n\n this.loadAverage = ypath.getValue(this.liveness, '/load_average');\n this.updatedAt = ypath.getValue(this.liveness, '/updated_at');\n this.networkLoad = ypath.getValue(this.liveness, '/network_coef');\n\n this.maintenanceRequests = ypath.getValue(data, '/maintenance_requests');\n }\n\n static ATTRIBUTES = [\n 'ban_message',\n 'banned',\n 'liveness',\n 'role',\n 'version',\n 'annotations',\n 'maintenance_requests',\n ];\n}\n","import map_ from 'lodash/map';\n\nimport axios from 'axios';\nimport ypath from '../../../../common/thor/ypath';\nimport format from '../../../../common/hammer/format';\n\nimport Proxy from '../../../../store/reducers/components/proxies/proxies/proxy';\nimport {\n GET_PROXIES,\n PROXIES_CHANGE_FILTERS,\n PROXY_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {YTErrors} from '../../../../rum/constants';\n\nfunction getRpcProxies() {\n return (dispatch) => {\n return Promise.all([\n ytApiV3Id.list(YTApiId.componentsRpcProxies, {\n path: '//sys/rpc_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ytApiV3Id.get(YTApiId.componentGetRpcProxies, {path: '//sys/rpc_proxies'}),\n ])\n .then(([data, proxiesMap]) => {\n const proxies = map_(data, (proxyData) => {\n const name = ypath.getValue(proxyData);\n const role = ypath.getValue(proxyData, '/role') || 'default';\n const alive = Boolean(ypath.getValue(proxiesMap, `/${name}`).alive);\n const attributes = ypath.getAttributes(proxyData);\n const meta = {name, role, dead: !alive};\n\n return new Proxy({...meta, ...attributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nfunction getHttpProxies() {\n return (dispatch, getState) => {\n const cluster = getCluster(getState());\n return Promise.all([\n axios.get(`/api/yt-proxy/${cluster}/hosts-all`),\n ytApiV3Id.get(YTApiId.systemProxies, {\n path: '//sys/http_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ])\n .then(([{data}, cypressData]) => {\n const proxies = map_(data, (proxyData) => {\n const cypressAttributes = ypath.getAttributes(\n ypath.getValue(cypressData)[proxyData.name],\n );\n\n return new Proxy({...proxyData, ...cypressAttributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nfunction getCypressProxies() {\n return async (dispatch) => {\n try {\n const cypressData = await ytApiV3Id.list(YTApiId.componentGetCypressProxies, {\n path: '//sys/cypress_proxies',\n attributes: ['state', 'version'],\n });\n\n const proxies = map_(cypressData, (proxyData) => {\n const name = ypath.getValue(proxyData);\n const state = ypath.getAttributes(proxyData)?.state || format.NO_VALUE;\n const version = ypath.getAttributes(proxyData)?.version || format.NO_VALUE;\n\n return new Proxy({...proxyData, ...{name, state, version}});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n } catch (error) {\n if (error?.code === YTErrors.NODE_DOES_NOT_EXIST) {\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies: []},\n });\n return;\n }\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n }\n };\n}\n\n/**\n *\n * @param {'http' | 'rpc' | 'cypress'} type\n * @returns\n */\nexport function getProxies(type) {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.REQUEST});\n\n switch (type) {\n case PROXY_TYPE.HTTP:\n return dispatch(getHttpProxies());\n case PROXY_TYPE.RPC:\n return dispatch(getRpcProxies());\n case PROXY_TYPE.CYPRESS:\n return dispatch(getCypressProxies());\n }\n };\n}\n\nexport function changeHostFilter(hostFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {hostFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {stateFilter},\n };\n}\n\nexport function changeRoleFilter(roleFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {roleFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter) {\n return {type: PROXIES_CHANGE_FILTERS, data: {bannedFilter}};\n}\n\nexport function resetProxyState() {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.CANCELLED});\n };\n}\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport forEach_ from 'lodash/forEach';\nimport isEqual_ from 'lodash/isEqual';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {SELECT_EMPTY_VALUE} from '../constants/navigation/modals/create-table';\nimport {SelectWithSubItemsProps} from '../components/Dialog/controls/SelectWithSubItems/SelectWithSubItems';\nimport {wrapBatchPromise} from './utils';\nimport {YTApiId, ytApiV3Id} from '../rum/rum-wrap-api';\nimport {BatchSubRequest, GetParams} from '../../shared/yt-types';\nimport {ValueOf} from '../../@types/types';\n\nexport interface WithAttrs<T> {\n $attributes: T;\n}\n\nexport const compressionExtras: Pick<SelectWithSubItemsProps, 'labels' | 'items' | 'subItemsMap'> =\n {\n labels: ['codec:', 'level:'],\n items: [\n ...[\n 'none',\n 'snappy',\n 'zlib_',\n 'lz4',\n 'lz4_high_compression',\n 'quick_lz',\n 'zstd_',\n 'brotli_',\n 'lzma_',\n 'bzip2_',\n ].map((value) => ({value, content: value})),\n ],\n subItemsMap: {\n zlib_: genComperessionLevelItems(1, 9),\n zstd_: genComperessionLevelItems(1, 21),\n brotli_: genComperessionLevelItems(1, 11),\n lzma_: genComperessionLevelItems(0, 9),\n bzip2_: genComperessionLevelItems(1, 9),\n },\n };\n\nfunction genComperessionLevelItems(from: number, to: number) {\n const res = [];\n for (let i = from; i <= to; ++i) {\n res.push({value: String(i), content: String(i)});\n }\n return res;\n}\n\nexport function compressionCodecValueFromString(value: string) {\n if (!value) {\n return [SELECT_EMPTY_VALUE];\n }\n\n for (const k in compressionExtras.subItemsMap) {\n if (value.startsWith(k)) {\n return [k, value.substr(k.length)];\n }\n }\n return [value];\n}\n\nexport function compressionCodecValueToString(value: Array<string>) {\n if (isEqual_(value, [SELECT_EMPTY_VALUE])) {\n return '';\n }\n return value?.join('');\n}\n\ntype StorageOptionsType = 'replication' | 'erasure';\n\nexport const StorageOptions = {\n REPLICATION: 'replication' as StorageOptionsType,\n ERASURE: 'erasure' as StorageOptionsType,\n};\n\nexport const ERASURE_CODECS = [\n {value: 'lrc_12_2_2', title: 'lrc_12_2_2 (recommended)'},\n {value: 'reed_solomon_6_3', title: 'reed_solomon_6_3'},\n];\n\nexport function storageOptionFromErasureCodec(codec: string) {\n return !codec || codec === 'none' ? StorageOptions.REPLICATION : StorageOptions.ERASURE;\n}\n\nexport function normalizeErasureCodec(erasureCodec: string) {\n return !erasureCodec || erasureCodec === 'none' ? ERASURE_CODECS[0].value : erasureCodec;\n}\n\nexport function erasureCodecFromStorageOption(type?: StorageOptionsType, erasureCodec?: string) {\n if (type === StorageOptions.REPLICATION) {\n return 'none';\n }\n return erasureCodec || ERASURE_CODECS[0].value;\n}\n\nexport type InMemoryModeType = ValueOf<typeof InMemoryMode>;\n\nexport const InMemoryMode = {\n NONE: 'none',\n COMPRESSED: 'compressed',\n UNCOMPRESSED: 'uncompressed',\n} as const;\n\nexport function makeUiMarker(ui_marker: string) {\n return {ui_marker};\n}\n\nexport function prepareSetCommandForBatch(path: string, value: any, additionalParameters?: object) {\n if (value === undefined || value === null) {\n return {\n command: 'remove' as const,\n parameters: {\n path,\n ...additionalParameters,\n },\n };\n }\n\n return {\n command: 'set' as const,\n parameters: {\n path,\n ...additionalParameters,\n force: true,\n },\n input: value,\n };\n}\n\nexport const CypressNodeTypes = {\n REPLICATED_TABLE: 'replicated_table',\n REPLICATION_LOG_TABLE: 'replication_log_table',\n CHAOS_REPLICATED_TABLE: 'chaos_replicated_table',\n MAP_NODE: 'map_node',\n TABLE: 'table',\n // TODO: add more types\n};\n\nexport async function createParentsBeforeSet(nodePath: string, attributesToSet: Array<string>) {\n if (!attributesToSet.length) {\n return Promise.resolve();\n }\n\n const parentPaths: Record<string, boolean> = {};\n forEach_(attributesToSet, (attr) => {\n const parents = attr.split('/');\n for (let i = 1; i < parents.length; ++i) {\n const key = parents.slice(0, i).join('/');\n if (key) {\n parentPaths[key] = true;\n }\n }\n });\n const toCreate = Object.keys(parentPaths).sort();\n\n for (const attr of toCreate) {\n const path = nodePath + '/@' + attr;\n await yt.v3.exists({path}).then((isCreated: boolean) => {\n if (!isCreated) {\n return yt.v3.set({path}, {});\n }\n });\n }\n}\n\nexport function updateNodeAttributes(\n nodePath: string,\n changes: Array<{attr: string; value: any}>,\n): Promise<unknown> {\n if (isEmpty_(changes)) {\n return Promise.resolve();\n }\n\n const requests: Array<BatchSubRequest> = [];\n\n const oneLevelDiffsParents: Array<string> = [];\n const oneLevelDiffs: Record<string, Record<string, unknown>> = {};\n forEach_(changes, ({attr, value}) => {\n const attrPath = attr.split('/');\n if (attrPath.length === 1) {\n const path = nodePath + '/@' + attrPath.join('/');\n requests.push(prepareSetCommandForBatch(path, value));\n } else {\n const [last] = attrPath.splice(attrPath.length - 1, 1);\n const parentPath = attrPath.join('/');\n oneLevelDiffsParents.push(parentPath);\n const path = nodePath + '/@' + parentPath;\n const diff = (oneLevelDiffs[path] = oneLevelDiffs[path] || {});\n diff[last] = value;\n }\n });\n\n return Promise.all([\n ...(requests.length\n ? [\n wrapBatchPromise(\n ytApiV3Id.executeBatch(YTApiId.updateNodeAttributes, {requests}),\n 'Failed to update node attributes',\n ),\n ]\n : []),\n createParentsBeforeSet(nodePath, oneLevelDiffsParents).then(() => {\n if (isEmpty_(oneLevelDiffs)) {\n return Promise.resolve([]);\n }\n\n const promises: Array<Promise<unknown>> = map_(oneLevelDiffs, async (diff, path) => {\n const p = updateAttributes(path, diff);\n await p;\n return p;\n });\n\n return Promise.all(promises);\n }),\n ]);\n}\n\nfunction updateAttributes(path: string, oneLevelDiff: Record<'string', unknown>) {\n if (isEmpty_(oneLevelDiff)) {\n return Promise.resolve();\n }\n\n const modifyGuarantee = (data: any = {}) => {\n const res = cloneDeep_(data);\n forEach_(oneLevelDiff, (value, key) => {\n if (value === undefined) {\n delete res[key];\n } else {\n res[key] = value;\n }\n });\n if (isEqual_(data, res)) {\n return Promise.resolve();\n }\n return yt.v3.set({path}, res);\n };\n\n return yt.v3.exists({path}).then((isExists: boolean) => {\n if (isExists) {\n return ytApiV3Id.get(YTApiId.updateAttributes, {path}).then(modifyGuarantee);\n }\n return modifyGuarantee({});\n });\n}\n\nexport function makeBatchSubRequest<T extends BatchSubRequest>(\n command: T['command'],\n parameters: T['parameters'],\n setup?: T['setup'],\n) {\n return {\n command,\n parameters,\n setup,\n } as BatchSubRequest;\n}\n\nexport function prepareAttributes(attributes: readonly string[]): GetParams['attributes'] {\n const [keys, paths] = partition_(attributes, (k) => -1 === k.indexOf('/'));\n\n if (!paths.length) {\n return keys;\n }\n\n return {keys, paths};\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../store/redux-hooks';\n\nimport {Select} from '@gravity-ui/uikit';\n\nimport {NODE_TYPE_ITEMS} from '../../../constants/components/nodes/nodes';\nimport {getSystemNodesNodeTypesToLoad} from '../../../store/selectors/system/nodes';\nimport {setSysmetNodesNodeType} from '../../../store/actions/system/nodes-ts';\nimport {NODE_TYPE, NodeType} from '../../../../shared/constants/system';\nimport {getComponentsNodesNodeTypes} from '../../../store/selectors/components/nodes/nodes';\nimport {componentsNodesSetNodeTypes} from '../../../store/actions/components/nodes/nodes';\nimport {updateListWithAll} from '../../../utils';\n\ntype NodeTypeSelectorProps = {\n className?: string;\n value: Array<NodeType>;\n onUpdate: (value: NodeTypeSelectorProps['value']) => void;\n};\n\nexport function NodeTypeSelector(props: NodeTypeSelectorProps) {\n const {className, value, onUpdate} = props;\n return (\n <Select\n className={className}\n value={value}\n multiple\n options={NODE_TYPE_ITEMS}\n onUpdate={(newVal) => {\n const newValue = updateListWithAll(\n {value, newValue: newVal as NodeType[]},\n NODE_TYPE.ALL_NODES,\n );\n onUpdate(newValue);\n }}\n label={'Node type:'}\n />\n );\n}\n\nexport function SystemNodeTypeSelector() {\n const dispatch = useDispatch();\n const value = useSelector(getSystemNodesNodeTypesToLoad);\n return (\n <NodeTypeSelector\n value={value}\n onUpdate={(newValue) => {\n dispatch(setSysmetNodesNodeType(newValue));\n }}\n />\n );\n}\n\nexport function ComponentsNodeTypeSelector({className}: {className?: string}) {\n const dispatch = useDispatch();\n\n const value = useSelector(getComponentsNodesNodeTypes);\n return (\n <NodeTypeSelector\n className={className}\n value={value}\n onUpdate={(newValue) => dispatch(componentsNodesSetNodeTypes(newValue))}\n />\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {NodeType} from '../../../../shared/constants/system';\nimport {setSettingSystemNodesNodeType} from '../settings/settings';\nimport {RootState} from '../../../store/reducers';\n\nexport function setSysmetNodesNodeType(\n value: Array<NodeType>,\n): ThunkAction<void, RootState, unknown, any> {\n return (dispatch) => {\n dispatch(setSettingSystemNodesNodeType(value));\n };\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport omit_ from 'lodash/omit';\nimport forEach_ from 'lodash/forEach';\nimport compact_ from 'lodash/compact';\nimport type {ThunkAction} from 'redux-thunk';\n\nimport ypath from '../../../../common/thor/ypath';\n\nimport {setSetting} from '../../../../store/actions/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {\n getRequiredAttributes,\n useRacksFromAttributes,\n useTagsFromAttributes,\n} from '../../../../store/selectors/components/nodes/nodes';\nimport {getTemplates} from '../../../../store/selectors/settings';\nimport type {RootState} from '../../../../store/reducers';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodesAction,\n NodesState,\n} from '../../../../store/reducers/components/nodes/nodes/nodes';\nimport type {NodesSetupState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {\n APPLY_SETUP,\n CHANGE_CONTENT_MODE,\n CHANGE_HOST_FILTER,\n CHANGE_NODE_TYPE,\n COMPONENTS_NODES_UPDATE_NODE,\n GET_NODES,\n GET_NODES_FILTER_OPTIONS,\n} from '../../../../constants/components/nodes/nodes';\nimport {USE_CACHE, USE_MAX_SIZE} from '../../../../../shared/constants/yt-api';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {ActionD, FIX_MY_TYPE, PartialDeep} from '../../../../types';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\nimport {splitBatchResults, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {NodeType} from '../../../../../shared/constants/system';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\nconst {COMPONENTS} = NAMESPACES;\nconst {TEMPLATES} = SettingName.COMPONENTS;\n\nexport type NodesThunkAction = ThunkAction<void, RootState, unknown, NodesAction>;\n\nexport function changeContentMode(\n contentMode: NodesState['contentMode'],\n): ActionD<typeof CHANGE_CONTENT_MODE, Pick<NodesState, 'contentMode'>> {\n return {\n type: CHANGE_CONTENT_MODE,\n data: {contentMode},\n };\n}\n\nconst updateNodeCanceler = new CancelHelper();\n\nexport function getNodes({\n attributes,\n nodeTypes,\n}: {\n attributes: ReturnType<typeof getRequiredAttributes>;\n nodeTypes: Array<NodeType>;\n}): NodesThunkAction {\n return (dispatch) => {\n dispatch({type: GET_NODES.REQUEST});\n\n const preparedAttrs = prepareAttributes(attributes);\n const requests: Array<BatchSubRequest> = nodeTypes.map((type) => {\n return {\n command: 'list',\n parameters: {\n path: `//sys/${type}`,\n attributes: preparedAttrs,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.componentsClusterNodes, {\n parameters: {requests},\n cancellation: updateNodeCanceler.removeAllAndSave,\n })\n .then((data) => {\n const {results, error} = splitBatchResults(data, 'Failed to get nodes');\n\n const outputs = results.map((output) => {\n return ypath.getValue(output) || [];\n });\n\n const nodes = [];\n\n const collectedItems = new Set<string>();\n\n for (const output of outputs) {\n for (const item of output) {\n const name = ypath.getValue(item);\n if (!collectedItems.has(name)) {\n nodes.push(item);\n collectedItems.add(name);\n }\n }\n }\n\n dispatch({type: GET_NODES.SUCCESS, data: {nodes}});\n\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_NODES.CANCELLED});\n return;\n }\n dispatch({\n type: GET_NODES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function updateComponentsNode(host: string): NodesThunkAction {\n return (dispatch) => {\n return ytApiV3Id\n .get(YTApiId.componentsUpdateNodeData, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: COMPONENTS_NODES_UPDATE_NODE,\n data: {node: {...node, $value: host}},\n });\n });\n };\n}\n\nexport function changeHostFilter(\n hostFilter: string,\n): ActionD<typeof CHANGE_HOST_FILTER, Pick<NodesState, 'hostFilter'>> {\n return {\n type: CHANGE_HOST_FILTER,\n data: {hostFilter: hostFilter.trim()},\n };\n}\n\nexport function componentsNodesSetNodeTypes(nodeTypes: Array<NodeType>): NodesThunkAction {\n return (dispatch) => {\n dispatch({\n type: CHANGE_NODE_TYPE,\n data: {nodeTypes},\n });\n };\n}\n\nexport function applyPreset(\n setup: PartialDeep<NodesSetupState>,\n): ActionD<typeof APPLY_SETUP, PartialDeep<NodesSetupState>> {\n return {\n type: APPLY_SETUP,\n data: setup,\n };\n}\n\nexport function savePreset(name: string, data: FIX_MY_TYPE): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const prevTemplates = getTemplates(state) || {};\n const templates = {\n ...prevTemplates,\n [name]: data,\n };\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function removePreset(name: string): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const templates = omit_(getTemplates(state), name);\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function handleColumnsChange(selectedColumns: string[]): NodesThunkAction {\n return async (dispatch) => {\n await dispatch(\n setSetting(\n SettingName.COMPONENTS.SELECTED_COLUMNS,\n NAMESPACES.COMPONENTS,\n selectedColumns,\n ),\n );\n };\n}\n\nexport function getComponentsNodesFilterOptions(): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = compact_([\n !useTagsFromAttributes(state) && 'tags',\n !useRacksFromAttributes(state) && 'rack',\n ]);\n\n if (0 === attributes.length) {\n return;\n }\n\n dispatch({type: GET_NODES_FILTER_OPTIONS.REQUEST});\n\n wrapApiPromiseByToaster(\n ytApiV3Id.list(YTApiId.componentsClusterNodes, {\n path: '//sys/cluster_nodes',\n attributes,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n }),\n {\n toasterName: 'node filter options',\n errorTitle: `Failed to load node ${attributes.join(',')}`,\n skipSuccessToast: true,\n },\n )\n .then((nodes) => {\n const tags = new Set<string>();\n const racks = new Set<string>();\n forEach_(nodes, (item) => {\n const node = new Node(item);\n forEach_(node.tags, (tag) => {\n if (tag) {\n tags.add(tag);\n }\n });\n if (node.rack) {\n racks.add(node.rack);\n }\n });\n\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.SUCCESS,\n data: {\n filterOptionsTags: [...tags].sort(),\n filterOptionsRacks: [...racks].sort(),\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.FAILURE,\n data: {error},\n });\n });\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('yt-page-counter');\n\nexport interface PageCounterProps {\n className?: string;\n pageIndex?: number;\n pageCount?: number;\n}\n\nfunction PageCounter({pageIndex, pageCount, className}: PageCounterProps) {\n if (pageIndex === undefined || pageCount === undefined) {\n return null;\n }\n\n return pageCount! > 1 ? (\n <span className={block(null, className)}>\n Page: {(pageIndex || 0) + 1} / {pageCount}\n </span>\n ) : null;\n}\n\nexport default React.memo(PageCounter);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport barsDescendingSvg from '@gravity-ui/icons/svgs/bars-descending-align-left.svg';\nimport {Button, DropdownMenu, Icon, Text} from '@gravity-ui/uikit';\n\nimport format from '../../common/hammer/format';\n\nimport SortIcon from '../../components/SortIcon/SortIcon';\n\nimport {OrderType, calculateNextOrderValue, nextSortOrderValue} from '../../utils/sort-helpers';\nimport PageCounter, {PageCounterProps} from '../../components/PageCounter/PageCounter';\nimport Loader from '../../components/Loader/Loader';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport './ColumnHeader.scss';\n\nconst block = cn('column-header');\n\nexport type ColumnInfo<T> = {\n column: T;\n title?: string;\n shortTitle?: string;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n allowUnordered?: boolean;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n withUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n};\n\nexport type HasSortColumn<T> =\n | (ColumnInfo<T> & {options?: undefined})\n | ({\n title: string;\n shortTitle?: string;\n column: T;\n options: Array<ColumnInfo<T>>;\n } & Partial<Record<keyof Omit<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>, undefined>>);\n\nexport type ColumnHeaderProps<T extends string = string> = PageCounterProps &\n HasSortColumn<T> & {\n className?: string;\n order?: OrderType;\n multisortIndex?: number;\n onSort?: (\n column: T,\n nextOrder: OrderType,\n options: {currentOrder?: OrderType; multisort?: boolean},\n ) => void;\n\n loading?: boolean;\n\n align?: 'center' | 'left' | 'right';\n };\n\ntype NameTitleContent = {\n nameContent: string;\n titleContent: string;\n};\n\nfunction getNameTitle<T extends string>({\n column,\n title,\n shortTitle,\n}: Pick<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>): NameTitleContent {\n const t = title ?? format.ReadableField(column);\n const nameContent = !shortTitle ? t : shortTitle;\n return {nameContent, titleContent: t};\n}\n\nfunction useColumnInfo<T extends string = string>(\n props: ColumnHeaderProps<T>,\n): ColumnInfo<T> & NameTitleContent & {subColumn?: NameTitleContent} {\n if (props.options === undefined) {\n const {column, allowUnordered, withUndefined, title, shortTitle, allowedOrderTypes} = props;\n return {\n column,\n allowUnordered,\n withUndefined,\n allowedOrderTypes,\n ...getNameTitle({column, title, shortTitle}),\n };\n }\n\n const {column: value, options, title, shortTitle} = props;\n const columnData = options.find(({column}) => value === column)!;\n if (!columnData) {\n rumLogError({\n message: 'Unexpected behavior: missing value in ColumnHeader.props.options',\n additional: props,\n });\n }\n return {\n subColumn: getNameTitle({...columnData}),\n ...columnData,\n ...getNameTitle({column: '', title, shortTitle}),\n };\n}\n\nexport default function ColumnHeader<T extends string = string>(props: ColumnHeaderProps<T>) {\n const {className, align, order, onSort, multisortIndex, loading, pageIndex, pageCount} = props;\n const {\n column,\n allowUnordered,\n withUndefined,\n nameContent,\n titleContent,\n allowedOrderTypes,\n subColumn,\n } = useColumnInfo(props);\n\n const changeHandler = React.useCallback(\n (e: React.MouseEvent) => {\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort?.(column, nextOrder, {\n currentOrder: order,\n multisort: e.ctrlKey || e.metaKey,\n });\n },\n [column, order, onSort, allowUnordered, allowedOrderTypes, withUndefined],\n );\n\n const sortable = Boolean(onSort);\n\n return (\n <div className={block(null, className)}>\n <div\n className={block('label-icon', {sortable, align})}\n onClick={sortable ? changeHandler : undefined}\n >\n <span className={block('label')} title={titleContent}>\n {nameContent}\n </span>\n {sortable && (\n <span className={block('icon')}>\n <SortIcon order={order} />\n </span>\n )}\n {multisortIndex !== undefined && (\n <span className={block('multisort')}>\n &nbsp;<sup>{multisortIndex}</sup>\n </span>\n )}\n {Boolean(order) && Boolean(subColumn) && (\n <Text\n className={block('label', {'sub-column': true})}\n variant=\"caption-2\"\n title={subColumn?.titleContent}\n color=\"dark-secondary\"\n >\n {subColumn?.nameContent}\n </Text>\n )}\n </div>\n <SubColumnSelector options={props.options} order={order} onSort={onSort} />\n {loading !== undefined && (\n <div className={block('loader')}>\n <Loader visible={loading} />\n </div>\n )}\n {Boolean(pageCount) && (\n <PageCounter\n className={block('page-counter')}\n pageIndex={pageIndex}\n pageCount={pageCount}\n />\n )}\n </div>\n );\n}\n\nfunction SubColumnSelector<T extends string>({\n order,\n options,\n onSort,\n}: Pick<ColumnHeaderProps<T>, 'onSort'> & {\n order?: ColumnHeaderProps<T>['order'];\n options?: Array<ColumnInfo<T>>;\n}) {\n return !options ? null : (\n <DropdownMenu\n items={options.map((x) => {\n const {titleContent} = getNameTitle(x);\n return {\n text: titleContent,\n action() {\n if (!onSort) {\n return;\n }\n const {column, allowUnordered, withUndefined, allowedOrderTypes} = x;\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort(column, nextOrder, {\n currentOrder: order,\n });\n },\n };\n })}\n renderSwitcher={({onClick}) => (\n <Button onClick={onClick} view=\"flat\" size=\"xs\">\n <Icon size={12} data={barsDescendingSvg} />\n </Button>\n )}\n />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../common/hammer/format';\nimport Label, {LabelTheme} from '../../../components/Label/Label';\nimport StatusBlock from '../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\nimport './NodeColumns.scss';\n\nconst block = cn('yt-node-columns');\n\nconst ROLE_THEME = {\n default: 'default',\n control: 'default',\n data: 'default',\n} as const;\n\nconst STATE_THEME: Record<string, LabelTheme> = {\n online: 'success',\n offline: 'danger',\n} as const;\n\nexport function NodeColumnState({state}: {state: 'online' | 'offline' | string}) {\n const text = format.FirstUppercase(state);\n const theme = STATE_THEME[state] ?? 'default';\n\n return <Label theme={theme} className={block('state')} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnBanned({banned}: {banned: boolean}) {\n return banned ? <StatusBlock text=\"B\" theme=\"banned\" /> : format.NO_VALUE;\n}\n\nexport function NodeColumnRole({role}: {role: 'default' | 'control' | 'data'}) {\n const theme = ROLE_THEME[role] || 'info';\n const text = format.Address(role);\n\n return <Label theme={theme} className={block('role')} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnText({text}: {text: string}) {\n return (\n <div className={block('text', 'elements-column_with-hover-button')}>\n <div className={block('text-content')} title={text}>\n {text}\n </div>\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n\nexport function ClickableId({\n text,\n onClick,\n allowTooltip,\n format = (v) => v,\n}: {\n text: string;\n onClick?: () => void;\n allowTooltip?: boolean;\n format?: (v: string) => string;\n}) {\n return (\n <div className=\"elements-column_type_id elements-column_with-hover-button\">\n <ClickableText\n color=\"primary\"\n onClick={() => onClick?.()}\n className={'elements-monospace elements-ellipsis'}\n >\n <Tooltip\n className={block('clickable-column-tooltip')}\n content={allowTooltip ? format(text) : null}\n >\n {format(text)}\n </Tooltip>\n </ClickableText>\n &nbsp;\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n","import {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../constants/components/nodes/nodes';\n\ninterface Node {\n cell_id: string;\n peer_id: string;\n state: string;\n}\n\nexport const nodeTableProps = {\n size: 's',\n virtual: false,\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_NODE_TABLE_ID,\n columns: {\n items: {\n cell_id: {\n get(node: Node) {\n return node.cell_id;\n },\n sort: true,\n align: 'left',\n caption: 'Cell ID',\n },\n peer_id: {\n sort: true,\n get(node: Node) {\n return node.peer_id;\n },\n align: 'right',\n caption: 'Peer ID',\n },\n state: {\n sort: true,\n get(node: Node) {\n return node.state;\n },\n align: 'right',\n },\n },\n sets: {\n default: {\n items: ['cell_id', 'peer_id', 'state'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'components/nodes/node',\n },\n};\n\nexport type ComponentsNodesLinkParams = {\n cluster?: string;\n rackFilter?: string;\n rackSelected?: Array<string>;\n banned?: 'enabled';\n decommissioned?: 'enabled';\n alerts?: 'enabled';\n full?: 'enabled';\n state?: 'online' | 'offline' | string;\n nodeTypes?: Array<string>;\n};\n\nexport function makeComponentsNodesLink({\n cluster,\n state,\n rackFilter,\n rackSelected,\n banned,\n decommissioned,\n full,\n alerts,\n nodeTypes,\n}: ComponentsNodesLinkParams) {\n if (!cluster) {\n return '';\n }\n let search = '';\n if (rackFilter) {\n search += `rack=filter-${rackFilter}&`;\n } else if (rackSelected?.length) {\n search += `rack=mode-union,selected-${rackSelected.join('|')}&`;\n }\n if (banned) {\n search += `banned=${banned}&`;\n }\n if (state) {\n search += `state=${state}&`;\n }\n if (decommissioned) {\n search += `decommissioned=${decommissioned}&`;\n }\n if (alerts) {\n search += `alerts=${alerts}&`;\n }\n if (full) {\n search += `full=${full}&`;\n }\n if (nodeTypes?.length) {\n search += `nodeType=${nodeTypes?.join(',')}&`;\n }\n return `/${cluster}/components/nodes?${search}`;\n}\n","import {addI18Keysets} from '../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:chart-link', {en, ru});\n","import React from 'react';\nimport Link, {LinkProps} from '../../components/Link/Link';\n\nimport Icon, {IconProps} from '../Icon/Icon';\n\nimport i18n from './i18n';\n\ninterface Props {\n className?: string;\n theme?: LinkProps['theme'];\n face?: IconProps['face'];\n url?: string;\n title?: string;\n children?: React.ReactNode;\n hideIcon?: boolean;\n wrapContent?: (node: React.ReactNode) => React.ReactNode;\n}\n\nfunction ChartLink(props: Props) {\n const {className, url, title, theme, children, hideIcon, face, wrapContent} = props;\n\n if (!url) {\n return null;\n }\n\n const icon = hideIcon ? null : <Icon awesome=\"chart-bar\" face={face} />;\n const content = children ? (\n <React.Fragment>\n {icon}\n {children}\n </React.Fragment>\n ) : (\n icon\n );\n\n return (\n <Link\n className={className}\n target=\"_blank\"\n theme={theme}\n url={url}\n title={title ?? i18n('View')}\n >\n {wrapContent ? wrapContent(content) : content}\n </Link>\n );\n}\n\nexport default React.memo(ChartLink);\n","import {addI18Keysets} from '../../../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:dialog-role-list', {en, ru});\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted, Subject} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nimport i18n from './i18n';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: i18n('title_current'), data: currentArr.concat(otherArr)},\n toAdd: {\n title: i18n('title_will-be-added'),\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: i18n('title_will-be-removed'),\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: i18n('title_unrecognized'),\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}): {\n added: Subject[];\n removed: Subject[];\n} {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value!} : {group: value!};\n }),\n };\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport SimpleModal from '../../../../components/Modal/SimpleModal';\nimport {YTErrorBlock} from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport withVisible from '../../../../hocs/withVisible';\n\nconst block = cn('elements-column');\n\nclass Version extends Component {\n static propTypes = {\n // from parent component\n version: PropTypes.string.isRequired,\n error: PropTypes.object,\n\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n };\n\n renderVersion() {\n const {version} = this.props;\n\n return (\n <div className={block({type: 'id', 'with-hover-button': true})} title={version}>\n <span className=\"elements-monospace elements-ellipsis\">{version}</span>\n &nbsp;\n <ClipboardButton\n text={version}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + version}\n />\n </div>\n );\n }\n\n renderErrorVersion() {\n const {handleShow, error, handleClose, visible} = this.props;\n\n return (\n <div className=\"elements-monospace elements-ellipsis\">\n <Icon awesome=\"exclamation-triangle\" /> Error &emsp;\n <Link theme=\"ghost\" onClick={handleShow}>\n View\n </Link>\n <SimpleModal visible={visible} onCancel={handleClose} onOutsideClick={handleClose}>\n <YTErrorBlock error={error} />\n </SimpleModal>\n </div>\n );\n }\n\n render() {\n const {error} = this.props;\n\n return error ? this.renderErrorVersion() : this.renderVersion();\n }\n}\n\nexport default withVisible(Version);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\nimport ChartLink from '../../../../../components/ChartLink/ChartLink';\n\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\nimport UIFactory from '../../../../../UIFactory';\nimport {RootState} from '../../../../../store/reducers';\n\nexport type NodeActionsProps = {node: {host: string}} & ConnectedProps<typeof connector>;\n\nclass NodeActions extends React.Component<NodeActionsProps> {\n handleEditClick = () => {\n const {node, showNodeMaintenance} = this.props;\n\n showNodeMaintenance({\n address: node.host,\n component: 'cluster_node',\n });\n };\n\n render() {\n const {node, cluster} = this.props;\n const {url, title} = UIFactory.getComponentsNodeDashboardUrl({cluster, host: node.host});\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={node.host}\n path={`//sys/cluster_nodes/${node.host}`}\n withTooltip\n />\n\n <ChartLink\n url={url}\n wrapContent={(node) => (\n <Button\n tooltipProps={{\n placement: 'bottom',\n content: title,\n }}\n target=\"_blank\"\n view=\"flat-secondary\"\n size=\"m\"\n withTooltip\n >\n {node}\n </Button>\n )}\n />\n <Button onClick={this.handleEditClick} view=\"flat-secondary\" size=\"m\" withTooltip>\n <Icon face=\"regular\" awesome=\"pencil\" />\n </Button>\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(NodeActions);\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport ColumnHeader, {\n ColumnHeaderProps,\n HasSortColumn,\n} from '../../../../../components/ColumnHeader/ColumnHeader';\nimport {toggleColumnSortOrder} from '../../../../../store/actions/tables';\nimport {getTables} from '../../../../../store/selectors/tables';\nimport {NodesTableColumnNames} from '../../../../../pages/components/tabs/nodes/tables';\nimport {oldSortStateToOrderType} from '../../../../../utils/sort-helpers';\n\nexport function NodesColumnHeader(\n props: HasSortColumn<NodesTableColumnNames> & Pick<ColumnHeaderProps, 'align'>,\n) {\n const dispatch = useDispatch();\n const sortState = useSelector(getTables)[COMPONENTS_NODES_TABLE_ID];\n const order = oldSortStateToOrderType(sortState);\n\n const column = props.options?.find(({column}) => sortState.field === column);\n\n return (\n <ColumnHeader\n {...props}\n column={props.options ? (column?.column ?? props.column) : props.column}\n order={column ? order : undefined}\n onSort={(columnName) => {\n const colInfo = props.options?.find(({column}) => columnName === column);\n dispatch(\n toggleColumnSortOrder({\n columnName,\n withUndefined: colInfo?.withUndefined,\n allowUnordered: colInfo?.allowUnordered,\n tableId: COMPONENTS_NODES_TABLE_ID,\n }),\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport merge_ from 'lodash/merge';\nimport reduce_ from 'lodash/reduce';\nimport sortBy_ from 'lodash/sortBy';\n\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport {DESC_ASC_UNORDERED, compareArraysBySizeThenByItems} from '../../../../utils/sort-helpers';\n\nimport Version from '../../../../pages/components/tabs/nodes/Version';\nimport StatusBlock, {StatusBlockTheme} from '../../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport NodeActions from '../../../../pages/components/tabs/nodes/NodeActions/NodeActions';\nimport MemoryProgress from '../../../../pages/components/tabs/nodes/MemoryProgress/MemoryProgress';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport hammer from '../../../../common/hammer';\nimport {TABLET_SLOTS, renderLabel} from '../../../../components/templates/components/nodes/nodes';\nimport type {Node, TabletSlotState} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {FIX_MY_TYPE} from '../../../../types';\nimport {NodeColumnBanned, NodeColumnState} from '../../../../pages/components/tabs/NodeColumns';\nimport {NodesColumnHeader} from '../../../../pages/components/tabs/nodes/Nodes/NodesColumnHeader';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport {progressText} from '../../../../utils/progress';\n\nimport './tables.scss';\n\nconst block = cn('components-nodes-templates');\n\nexport const PropertiesByColumn = {\n __default__: ['IOWeight'],\n actions: ['host'],\n alert_count: ['alertCount'],\n banned: ['banned'],\n chunks: ['chunks'],\n cpu: ['cpuProgress', 'cpuText'],\n cpu_limit: ['cpu'],\n cpu_usage: ['cpu'],\n data_center: ['dataCenter'],\n decommissioned: ['decommissioned'],\n elections: ['tabletSlots'],\n elections_chaos: ['chaosSlots'],\n follower_recovery: ['tabletSlots'],\n follower_recovery_chaos: ['chaosSlots'],\n following: ['tabletSlots'],\n following_chaos: ['chaosSlots'],\n full: ['full'],\n gpu: ['gpu'],\n gpu_usage: ['gpu'],\n gpu_limit: ['gpu'],\n host: ['cluster', 'host'],\n io_weight: ['IOWeight'],\n last_seen: ['lastSeenTime'],\n leader_recovery: ['tabletSlots'],\n leader_recovery_chaos: ['chaosSlots'],\n leading: ['tabletSlots'],\n leading_chaos: ['chaosSlots'],\n locations: ['locations', 'enabledLocations'],\n memory_total: ['memoryProgress', 'memoryTotalText'],\n memory: ['memoryData', 'memoryProgress', 'memoryText'],\n memory_limit: ['memoryTotal'],\n memory_usage: ['memoryTotal'],\n network: ['networkProgress', 'networkText'],\n network_usage: ['network'],\n network_limit: ['network'],\n none: ['tabletSlots'],\n none_chaos: ['chaosSlots'],\n physical_host: ['physicalHost'],\n flavors: ['flavors'],\n rack: ['rack'],\n removal_slots: ['removalSlots', 'removalSlotsProgress'],\n removal_slots_usage: ['removalSlots'],\n removal_slots_limit: ['removalSlots'],\n repair_slots: ['repairSlots', 'repairSlotsProgress'],\n repair_slots_usage: ['repairSlots'],\n repair_slots_limit: ['repairSlots'],\n replication_slots: ['replicationSlots', 'replicationSlotsProgress'],\n replication_slots_usage: ['replicationSlots'],\n replication_slots_limit: ['replicationSlots'],\n scheduler_jobs: ['disableJobs'],\n seal_slots: ['sealSlots', 'sealSlotsProgress'],\n seal_slots_usage: ['sealSlots'],\n seal_slots_limit: ['sealSlots'],\n sessions: ['sessions'],\n space_limit: ['spaceTotal'],\n space_usage: ['spaceUsed'],\n space: ['spaceProgress', 'spaceText'],\n state: ['state'],\n stopped: ['tabletSlots'],\n stopped_chaos: ['chaosSlots'],\n system_tags: ['systemTags'],\n tablet_cells: ['disableTabletCells'],\n tablet_memory_dynamic: ['tabletDynamicMemory'],\n tablet_memory_dynamic_usage: ['tabletDynamicMemory'],\n tablet_memory_dynamic_limit: ['tabletDynamicMemory'],\n tablet_memory_static: ['tabletStaticMemory'],\n tablet_memory_static_usage: ['tabletStaticMemory'],\n tablet_memory_static_limit: ['tabletStaticMemory'],\n tablet_memory: ['tabletStaticMemory', 'tabletDynamicMemory'],\n tablet_slots: ['tabletSlots'],\n user_slots: ['userSlots', 'userSlotsProgress'],\n user_slots_usage: ['userSlots'],\n user_slots_limit: ['userSlots'],\n user_tags: ['userTags'],\n version: ['version'],\n write_sessions: ['disableWriteSession'],\n} as const;\n\nexport type NodesTableColumnNames = keyof typeof PropertiesByColumn;\n\nexport type NodeWithProps<T extends keyof typeof PropertiesByColumn> = Pick<\n Node & {cluster: string},\n (typeof PropertiesByColumn)[T][number]\n>;\n\ntype ItemDef<P extends keyof typeof PropertiesByColumn> = {\n align?: 'left' | 'center' | 'right';\n get?: (node: NodeWithProps<P>) => void;\n sort?: ((node: NodeWithProps<P>) => void) | boolean;\n};\n\ntype Items = {\n [P in keyof typeof PropertiesByColumn]?: ItemDef<P> & {\n group?: boolean;\n items?: Record<string, ItemDef<P>>;\n set?: string[];\n };\n};\n\nconst ioWeight: NonNullable<Items['io_weight']> = {\n group: true,\n items: {\n default: {\n get(node) {\n return node.IOWeight.default;\n },\n sort: true,\n align: 'center',\n },\n cache: {\n get(node) {\n return node.IOWeight.cache;\n },\n sort: true,\n align: 'center',\n },\n ssd_blobs: {\n get(node) {\n return node.IOWeight.ssd_blobs;\n },\n sort: true,\n align: 'center',\n },\n ssd_journals: {\n get(node) {\n return node.IOWeight.ssd_journals;\n },\n sort: true,\n align: 'center',\n },\n },\n set: ['default', 'ssd_blobs', 'ssd_journals'],\n};\n\nconst nodesTableProps = {\n size: 's',\n virtual: true,\n virtualType: 'simple',\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_TABLE_ID,\n computeKey(node: NodeWithProps<'host'>) {\n return node.host;\n },\n columns: {\n items: {\n host: {\n get(node) {\n return node.host;\n },\n sort: true,\n align: 'left',\n },\n physical_host: {\n get(node) {\n return node.physicalHost;\n },\n sort: true,\n align: 'left',\n },\n flavors: {\n get(node) {\n return node.flavors;\n },\n sort: true,\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n state: {\n get(node) {\n return node.state;\n },\n sort: true,\n align: 'center',\n },\n data_center: {\n get(node) {\n return node.dataCenter;\n },\n sort: true,\n caption: 'DC',\n align: 'left',\n tooltipProps: {placement: 'bottom', content: 'Data Center'},\n },\n rack: {\n get(node) {\n return hammer.format['RackToVector'](node.rack);\n },\n sort: true,\n align: 'left',\n },\n user_tags: {\n get(node) {\n return node.userTags || -1;\n },\n sort(node) {\n return !node.userTags?.length ? undefined : node.userTags;\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n system_tags: {\n get(node) {\n return node.systemTags || -1;\n },\n sort(node) {\n return node.systemTags || [];\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n banned: {\n get(item) {\n return item.banned;\n },\n align: 'center',\n sort: true,\n caption: 'B',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n decommissioned: {\n get(item) {\n return item.decommissioned;\n },\n align: 'center',\n sort: true,\n caption: 'D',\n tooltipProps: {\n placement: 'bottom',\n content: 'Decommissioned',\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n full: {\n get(item) {\n return item.full;\n },\n align: 'center',\n sort: true,\n caption: 'F',\n tooltipProps: {placement: 'bottom', content: 'Full'},\n },\n alert_count: {\n get(item) {\n return item.alertCount;\n },\n sort(item) {\n return item.alertCount;\n },\n align: 'center',\n caption: 'A',\n tooltipProps: {placement: 'bottom', content: 'Alerts'},\n },\n scheduler_jobs: {\n get(node) {\n return node.disableJobs;\n },\n sort: true,\n align: 'left',\n },\n write_sessions: {\n get(node) {\n return node.disableWriteSession;\n },\n sort: true,\n align: 'left',\n },\n tablet_cells: {\n get(node) {\n return node.disableTabletCells;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(node) {\n return node.version;\n },\n sort: true,\n align: 'left',\n },\n last_seen: {\n get(node) {\n return node.lastSeenTime;\n },\n sort: true,\n align: 'left',\n },\n space: {\n get(node) {\n return node.spaceProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"space\"\n title=\"Space\"\n options={[\n {\n column: 'space',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n space_limit: {\n get(node) {\n return node.spaceTotal;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n space_usage: {\n get(node) {\n return node.spaceUsed;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n locations: {\n get(node) {\n return [\n node.locations && node.locations.length,\n node.locations && node.enabledLocations.length,\n ];\n },\n sort: true,\n align: 'center',\n },\n chunks: {\n get(node) {\n return node.chunks;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n sessions: {\n get(node) {\n return node.sessions;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n cpu: {\n get(node) {\n return node.cpuProgress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"cpu\"\n options={[\n {\n column: 'cpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"CPU\"\n />\n );\n },\n },\n cpu_limit: {\n get(node) {\n return node.cpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n cpu_usage: {\n get(node) {\n return node.cpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu: {\n get(node) {\n return node.gpu?.progress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"gpu\"\n options={[\n {\n column: 'gpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"GPU\"\n />\n );\n },\n },\n gpu_limit: {\n get(node) {\n return node.gpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu_usage: {\n get(node) {\n return node.gpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory: {\n get(node) {\n return node.memoryProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"memory\"\n title=\"Memory\"\n options={[\n {\n column: 'memory',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n memory_usage: {\n get(node) {\n return node.memoryTotal.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_limit: {\n get(node) {\n return node.memoryTotal.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_total: {\n get(node) {\n return node.memoryProgress;\n },\n sort: true,\n align: 'center',\n },\n network: {\n get(node) {\n return node.networkProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"network\"\n title=\"Network\"\n options={[\n {\n column: 'network',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n network_usage: {\n get(node) {\n return node.network.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n network_limit: {\n get(node) {\n return node.network.limit;\n },\n sortWithUndefined: true,\n hiddne: true,\n },\n repair_slots: {\n get(node) {\n return node.repairSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"repair_slots\"\n title=\"Repair slots\"\n options={[\n {\n column: 'repair_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n repair_slots_usage: {\n get(node) {\n return node.repairSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n repair_slots_limit: {\n get(node) {\n return node.repairSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots: {\n get(node) {\n return node.removalSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"removal_slots\"\n title=\"Removal slots\"\n options={[\n {\n column: 'removal_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'removal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'removal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n removal_slots_usage: {\n get(node) {\n return node.removalSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots_limit: {\n get(node) {\n return node.removalSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots: {\n get(node) {\n return node.replicationSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"replication_slots\"\n title=\"Replication slots\"\n options={[\n {\n column: 'replication_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'replication_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'replication_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n replication_slots_usage: {\n get(node) {\n return node.replicationSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots_limit: {\n get(node) {\n return node.replicationSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots: {\n get(node) {\n return node.sealSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"seal_slots\"\n title=\"Seal slots\"\n options={[\n {\n column: 'seal_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'seal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'seal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n seal_slots_usage: {\n get(node) {\n return node.sealSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots_limit: {\n get(node) {\n return node.sealSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots: {\n get(node) {\n return node.userSlotsProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"user_slots\"\n title=\"User slots\"\n options={[\n {\n column: 'user_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'user_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'user_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n user_slots_usage: {\n get(node) {\n return node.userSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots_limit: {\n get(node) {\n return node.userSlots.limits;\n },\n align: 'center',\n sortWithUndefined: true,\n hidden: true,\n },\n tablet_slots: {\n get(node) {\n if (node.tabletSlots && node.tabletSlots.raw && node.tabletSlots.raw.length) {\n return reduce_(\n node.tabletSlots.raw,\n (sum, slot) => (slot.state === 'none' ? sum : sum + 1),\n 0,\n );\n }\n\n return -1;\n },\n sort: true,\n align: 'left',\n },\n none: {\n get(node) {\n return node.tabletSlots?.byState.none;\n },\n sort(node) {\n return node.tabletSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('TS None', 'Tablet Slots None'),\n },\n none_chaos: {\n get(node) {\n return node.chaosSlots?.byState.none;\n },\n sort(node) {\n return node.chaosSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('CS None', 'Chaos Slots None'),\n },\n leading: {\n get(node) {\n return node.tabletSlots?.byState.leading;\n },\n sort(node) {\n return node.tabletSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Leading', 'Tablet Slots Leading'),\n },\n leading_chaos: {\n get(node) {\n return node.chaosSlots?.byState.leading;\n },\n sort(node) {\n return node.chaosSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Leading', 'Chaos Slots Leading'),\n },\n following: {\n get(node) {\n return node.tabletSlots?.byState.following;\n },\n sort(node) {\n return node.tabletSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Following', 'Tablet Slots Following'),\n },\n following_chaos: {\n get(node) {\n return node.chaosSlots?.byState.following;\n },\n sort(node) {\n return node.chaosSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Following', 'Chaos Slots Following'),\n },\n follower_recovery: {\n get(node) {\n return node.tabletSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.tabletSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS FR', 'Tablet Slots Follower Recovery'),\n },\n follower_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.chaosSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS FR', 'Chaos Slots Follower Recovery'),\n },\n leader_recovery: {\n get(node) {\n return node.tabletSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('TS LR', 'Tablet Slots Leader Recovery'),\n },\n leader_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('CS LR', 'Chaos Slots Leader Recovery'),\n },\n stopped: {\n get(node) {\n return node.tabletSlots?.byState.stopped;\n },\n sort(node) {\n return node.tabletSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Stopped', 'Tablet Slots Stopped'),\n },\n stopped_chaos: {\n get(node) {\n return node.chaosSlots?.byState.stopped;\n },\n sort(node) {\n return node.chaosSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Stopped', 'Chaos Slots Stopped'),\n },\n elections: {\n get(node) {\n return node.tabletSlots?.byState.elections;\n },\n sort(node) {\n return node.tabletSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Elections', 'Tablet Slots Elections'),\n },\n elections_chaos: {\n get(node) {\n return node.chaosSlots?.byState.elections;\n },\n sort(node) {\n return node.chaosSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Elections', 'Chaos Slots Elections'),\n },\n tablet_memory: {\n group: true,\n items: {\n static: {\n get(node) {\n return node.tabletStaticMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_static\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_static',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n static_usage: {\n get(node) {\n return node.tabletStaticMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n static_limit: {\n get(node) {\n return node.tabletStaticMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic: {\n get(node) {\n return node.tabletDynamicMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_dynamic\"\n align={column.align}\n title=\"Dynamic memory\"\n options={[\n {\n column: 'tablet_memory_dynamic',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n dynamic_usage: {\n get(node) {\n return node.tabletDynamicMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic_limit: {\n get(node) {\n return node.tabletDynamicMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n },\n set: ['static', 'dynamic'],\n },\n io_weight: ioWeight,\n actions: {\n get(node) {\n return node.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n } as Items,\n sets: {\n default: {\n items: [\n 'host',\n 'physical_host',\n 'user_tags',\n 'system_tags',\n 'state',\n 'data_center',\n 'rack',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'version',\n 'last_seen',\n 'actions',\n ],\n },\n storage: {\n items: ['host', 'space', 'sessions', 'chunks', 'io_weight', 'actions'],\n },\n cpu_and_memory: {\n items: ['host', 'cpu', 'memory', 'network', 'actions'],\n },\n resources: {\n items: [\n 'host',\n 'user_slots',\n 'seal_slots',\n 'repair_slots',\n 'removal_slots',\n 'replication_slots',\n 'actions',\n ],\n },\n tablets: {\n items: ['host', 'tablet_slots', 'tablet_memory', 'actions'],\n },\n tablet_slots: {\n items: [\n 'host',\n 'none',\n 'leading',\n 'following',\n 'follower_recovery',\n 'leader_recovery',\n 'stopped',\n 'elections',\n ],\n },\n chaos_slots: {\n items: [\n 'host',\n 'none_chaos',\n 'leading_chaos',\n 'following_chaos',\n 'follower_recovery_chaos',\n 'leader_recovery_chaos',\n 'stopped_chaos',\n 'elections_chaos',\n ],\n },\n custom: {\n items: [\n 'host',\n 'user_tags',\n 'state',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'last_seen',\n 'actions',\n ],\n },\n },\n },\n templates: {\n data: {\n onMemoryProgressMouseEnter() {},\n onMemoryProgressMouseLeave() {},\n },\n },\n};\n\nexport const defaultColumns = nodesTableProps.columns.sets.custom.items;\n\nfunction renderTags(tags?: Array<string | number>, themes?: StatusBlockTheme[], flexType?: 'flex') {\n return tags?.length ? (\n <TagsContainer flexType={flexType}>\n {map_(tags, (tag, index) => (\n <StatusBlock key={tag} theme={themes?.[index]} text={tag} />\n ))}\n </TagsContainer>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\nfunction TagsContainer({\n children,\n flexType = 'inline-flex',\n}: {\n children: React.ReactNode;\n flexType?: 'flex' | 'inline-flex';\n}) {\n return (\n <div className={block('tags-container', {inline: 'inline-flex' === flexType})}>\n {children}\n </div>\n );\n}\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntype Templates = {\n [P in keyof typeof PropertiesByColumn]?: (\n item: NodeWithProps<P>,\n columnName: string,\n ) => React.ReactNode;\n};\n\nexport const NODES_TABLE_TEMPLATES: Templates = {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.startsWith(IO_WEIGHT_PREFIX)) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n host(item) {\n return <Host address={item.host} />;\n },\n state(item) {\n return <NodeColumnState state={item.state} />;\n },\n banned(item) {\n return (\n <TagsContainer>\n <NodeColumnBanned banned={item.banned} />\n </TagsContainer>\n );\n },\n decommissioned(item) {\n return item.decommissioned ? renderTags(['D'], ['decommissioned']) : hammer.format.NO_VALUE;\n },\n flavors(item) {\n return renderTags(item.flavors);\n },\n full(item) {\n return item.full ? renderTags(['F'], ['full']) : hammer.format.NO_VALUE;\n },\n\n alert_count(item) {\n return item.alertCount! > 0\n ? renderTags([String(item.alertCount)], ['alerts'])\n : hammer.format.NO_VALUE;\n },\n\n physical_host(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.physicalHost}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.physicalHost)}\n </span>\n &nbsp;\n <ClipboardButton\n text={item.physicalHost}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n },\n\n user_tags(item) {\n return renderTags(item.userTags, [], 'flex');\n },\n\n system_tags(item) {\n return renderTags(item.systemTags, [], 'flex');\n },\n\n scheduler_jobs(item) {\n return renderLabel(item.disableJobs);\n },\n write_sessions(item) {\n return renderLabel(item.disableWriteSession);\n },\n tablet_cells(item) {\n return renderLabel(item.disableTabletCells);\n },\n\n data_center(item) {\n return item.dataCenter?.toUpperCase() || hammer.format.NO_VALUE;\n },\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n version(item) {\n const {version} = item;\n\n return <Version version={version} />;\n },\n\n last_seen(item) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](item.lastSeenTime, {\n format: 'full',\n })}\n </span>\n );\n },\n\n actions(item) {\n return <NodeActions node={item} />;\n },\n\n space(item) {\n return <Progress value={item.spaceProgress || 0} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceTotal);\n },\n\n locations(item) {\n return item.locations\n ? progressText(item.enabledLocations.length, item.locations.length)\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress || 0} text={item.cpuText} theme=\"success\" />;\n },\n\n gpu(item) {\n return (\n <Progress\n value={item.gpu?.progress || 0}\n text={item.gpu?.progressText}\n theme=\"success\"\n />\n );\n },\n\n memory(item) {\n return <MemoryProgress memoryData={item.memoryData} memoryText={item.memoryText} />;\n },\n\n memory_total(item) {\n return (\n <Progress\n value={item.memoryProgress || 0}\n text={item.memoryTotalText}\n theme=\"success\"\n />\n );\n },\n\n network(item) {\n return (\n <Progress value={item.networkProgress || 0} text={item.networkText} theme=\"success\" />\n );\n },\n\n repair_slots(item) {\n const text = progressText(item.repairSlots.usage, item.repairSlots.limits);\n\n return <Progress value={item.repairSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n removal_slots(item) {\n const text = progressText(item.removalSlots.usage, item.removalSlots.limits);\n\n return <Progress value={item.removalSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n replication_slots(item) {\n const text = progressText(item.replicationSlots.usage, item.replicationSlots.limits);\n\n return <Progress value={item.replicationSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n seal_slots(item) {\n const text = progressText(item.sealSlots.usage, item.sealSlots.limits);\n\n return <Progress value={item.sealSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n user_slots(item) {\n const text = progressText(item.userSlots.usage, item.userSlots.limits);\n\n return <Progress value={item.userSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n const statuses = sortBy_(keys_(item.tabletSlots.byState));\n\n return (\n <TagsContainer>\n {map_(statuses, (state: TabletSlotState) => {\n const tabletSlots = item.tabletSlots.byState[state]!;\n const {text, theme} = TABLET_SLOTS[state];\n const label = `${text}: ${tabletSlots.length}`;\n\n return <StatusBlock theme={theme} text={label} key={state} />;\n })}\n </TagsContainer>\n );\n }\n\n return null;\n },\n\n none(item) {\n const data = item.tabletSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n none_chaos(item) {\n const data = item.chaosSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n leading(item) {\n const data = item.tabletSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n leading_chaos(item) {\n const data = item.chaosSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n following(item) {\n const data = item.tabletSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n following_chaos(item) {\n const data = item.chaosSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery(item) {\n const data = item.tabletSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery(item) {\n const data = item.tabletSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n stopped(item) {\n const data = item.tabletSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n stopped_chaos(item) {\n const data = item.chaosSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n elections(item) {\n const data = item.tabletSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n elections_chaos(item) {\n const data = item.chaosSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n tablet_memory_static(item) {\n const text = progressText(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletStaticMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n\n tablet_memory_dynamic(item) {\n const text = progressText(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletDynamicMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n};\n\nexport function getNodeTablesProps(mediumList: string[] = []) {\n if (!mediumList?.length) {\n return nodesTableProps;\n }\n const actions = nodesTableProps.columns.items.actions;\n const allMediums = reduce_(\n mediumList,\n (acc, key) => {\n acc[key] = {\n get(node: Node) {\n return node.IOWeight[key];\n },\n sort: true,\n align: 'center',\n };\n return acc;\n },\n {actions} as {actions: typeof actions} & Record<string, FIX_MY_TYPE>,\n );\n const res = merge_({}, nodesTableProps, {\n columns: {\n items: {\n io_weight: {\n items: {\n ...allMediums,\n },\n groupHeaderStyle: mediumList.length\n ? {width: 100 * mediumList.length}\n : undefined,\n },\n },\n },\n templates: NODES_TABLE_TEMPLATES,\n });\n res.columns!.items!.io_weight!.set = mediumList;\n return res;\n}\n\nfunction makeCaptionProps(columnName: string, title: string) {\n return {\n caption: columnName,\n tooltipProps: {\n placement: 'bottom',\n content: title,\n },\n };\n}\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport merge_ from 'lodash/merge';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\nimport union_ from 'lodash/union';\n\nimport {createSelector} from 'reselect';\n\nimport {UNAWARE} from '../../../../../constants';\nimport {\n FlagState,\n NodeRange,\n TagFilter,\n groupFilterInitialState,\n} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {Node} from '../../../../reducers/components/nodes/nodes/node';\nimport {isRangeFilterDefined} from '../../../../../utils/components/nodes/setup';\nimport {toaster} from '../../../../../utils/toaster';\nimport {RootState} from '../../../../reducers';\n\nexport const getSetupFiltersRaw = (state: RootState) => state.components.nodes.setup;\n\nexport const getNodes = (state: RootState): Array<Node> => state.components.nodes.nodes.nodes;\n\nexport const getComponentNodesFilterStatePredicate = createSelector(\n [getSetupFiltersRaw],\n ({default: {state}}) => {\n if (!state.length || (state.length === 1 && state[0] === 'all')) {\n return undefined;\n }\n const excludes = reduce_(\n state,\n (acc, item) => {\n if (item[0] === '!') {\n acc.add(item.substring(1));\n }\n return acc;\n },\n new Set<string>(),\n );\n\n if (excludes.size) {\n if (excludes.size !== state.length) {\n toaster.add({\n name: 'component-nodes-excludes',\n theme: 'danger',\n autoHiding: false,\n title: 'Unexpected behavior',\n content:\n 'Components/Nodes: It is not allowed to have excludes and includes for \"state\" filter at the same time',\n });\n }\n\n excludes.add('all');\n\n return (node: {state: string}) => {\n return !excludes.has(node.state);\n };\n } else {\n const includes = new Set(state);\n return (node: {state: string}) => {\n return includes.has(node.state);\n };\n }\n },\n);\n\nexport const getComponentNodesFiltersSetup = createSelector(\n [getSetupFiltersRaw, getMediumListNoCache],\n (setup, mediumList) => {\n const mediumDefaults = reduce_(\n mediumList,\n (acc, medium) => {\n acc[MEDIUM_COLS_PREFIX + medium] = cloneDeep_(groupFilterInitialState);\n return acc;\n },\n {} as Record<string, NodeRange>,\n );\n return merge_({}, {storage: mediumDefaults}, setup);\n },\n);\n\nexport const getComponentNodesIndexByTag = createSelector([getNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, node) => {\n const {tags} = node;\n forEach_(tags, (tag) => {\n if (acc.has(tag)) {\n acc.get(tag)?.add(node);\n } else {\n acc.set(tag, new Set([node]));\n }\n });\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n return res;\n});\n\nexport const getComponentNodesIndexByRack = createSelector([getNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, node) => {\n const rack = node.rack ?? UNAWARE;\n if (!acc.has(rack)) {\n acc.set(rack, new Set([node]));\n } else {\n acc.get(rack)?.add(node);\n }\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n});\n\nconst PropertiesByPredicate = {\n physicalHost: ['physicalHost'],\n tags: ['tags'],\n state: ['state'],\n rack: ['rack'],\n banned: ['banned'],\n decommissioned: ['decommissioned'],\n full: ['full'],\n alertCount: ['alertCount'],\n disableJobs: ['disableJobs'],\n disableWriteSession: ['disableWriteSession'],\n disableTabletCells: ['disableTabletCells'],\n sessions: ['sessions'],\n chunks: ['chunks'],\n spaceUsed: ['spaceUsed'],\n spaceTotal: ['spaceTotal'],\n blobSession: ['memory'],\n blockCache: ['memory'],\n chunkBlockMeta: ['memory'],\n chunkMeta: ['memory'],\n footprint: ['memory'],\n query: ['memory'],\n systemJobs: ['memory'],\n versionedChunkMeta: ['memory'],\n tabletDynamicUsed: ['memory'],\n tabletDynamicTotal: ['memory'],\n tabletStaticUsed: ['memory'],\n tabletStaticTotal: ['memory'],\n userJobsUsed: ['memory'],\n userJobsTotal: ['memory'],\n userSlotsUsed: ['userSlots'],\n userSlotsTotal: ['userSlots'],\n sealSlotsUsed: ['sealSlots'],\n sealSlotsTotal: ['sealSlots'],\n repairSlotsUsed: ['repairSlots'],\n repairSlotsTotal: ['repairSlots'],\n removalSlotsUsed: ['removalSlots'],\n removalSlotsTotal: ['removalSlots'],\n replicationSlotsUsed: ['replicationSlots'],\n replicationSlotsTotal: ['replicationSlots'],\n all: ['tabletSlots'],\n none: ['tabletSlots'],\n leading: ['tabletSlots'],\n following: ['tabletSlots'],\n followerRecovery: ['tabletSlots'],\n leaderRecovery: ['tabletSlots'],\n stopped: ['tabletSlots'],\n elections: ['tabletSlots'],\n staticUsed: ['tabletStaticMemory'],\n staticTotal: ['tabletStaticMemory'],\n dynamicUsed: ['tabletDynamicMemory'],\n dynamicTotal: ['tabletDynamicMemory'],\n} as const;\n\ntype NodeWithProps<T extends keyof typeof PropertiesByPredicate> = Pick<\n Node,\n (typeof PropertiesByPredicate)[T][number]\n>;\n\ntype Predicates = {\n [P in keyof typeof PropertiesByPredicate]:\n | false\n | undefined\n | ((node: NodeWithProps<P>) => boolean);\n};\n\nconst getRackPredicate = createSelector(\n [getSetupFiltersRaw, getComponentNodesIndexByRack],\n (setupFilters, nodesByRack) => {\n const {rack} = setupFilters.default;\n if ('string' !== typeof rack && rack.selected?.[0] === UNAWARE) {\n return ({rack}: {rack?: string}) => rack === undefined;\n }\n return createNodeTagPredicate<'rack'>(setupFilters.default.rack, nodesByRack, (node) => [\n node.rack,\n ]);\n },\n);\n\nconst getFilterPredicatesObject = createSelector(\n [\n getSetupFiltersRaw,\n getComponentNodesIndexByTag,\n getRackPredicate,\n getComponentNodesFilterStatePredicate,\n ],\n (setupFilters, nodesByTags, rackPredicate, statePredicate) => {\n const predicates: Predicates = {\n // filter by default\n physicalHost:\n Boolean(setupFilters.default.physicalHost) &&\n ((node) => {\n return -1 !== node.physicalHost?.indexOf(setupFilters.default.physicalHost);\n }),\n tags: createNodeTagPredicate<'tags'>(\n setupFilters.default.tag,\n nodesByTags,\n (node) => node.tags,\n ),\n state: statePredicate,\n rack: rackPredicate,\n\n banned: createFlagPredicate('banned', setupFilters.default.banned),\n decommissioned: createFlagPredicate(\n 'decommissioned',\n setupFilters.default.decommissioned,\n ),\n full: createFlagPredicate('full', setupFilters.default.full),\n alertCount: createAlertsFlagPredicate(setupFilters.default.alertCount),\n\n disableJobs: createAttributeStatePredicate(\n 'disableJobs',\n setupFilters.default.schedulerJobs,\n ),\n disableWriteSession: createAttributeStatePredicate(\n 'disableWriteSession',\n setupFilters.default.writeSessions,\n ),\n disableTabletCells: createAttributeStatePredicate(\n 'disableTabletCells',\n setupFilters.default.tabletCells,\n ),\n\n // filter by storage\n sessions: createRangePredicate(\n setupFilters.storage.sessions,\n 'sessions',\n (node) => node,\n ),\n chunks: createRangePredicate(setupFilters.storage.chunks, 'chunks', (node) => node),\n spaceUsed: createRangePredicate(\n setupFilters.storage.spaceUsed,\n 'spaceUsed',\n (node) => node,\n ),\n spaceTotal: createRangePredicate(\n setupFilters.storage.spaceTotal,\n 'spaceTotal',\n (node) => node,\n ),\n\n // filter by cpu\n blobSession: createRangePredicate(\n setupFilters.cpu.blobSession,\n 'used',\n (node) => node.memory.blob_session,\n ),\n blockCache: createRangePredicate(\n setupFilters.cpu.blockCache,\n 'used',\n (node) => node.memory.block_cache,\n ),\n chunkBlockMeta: createRangePredicate(\n setupFilters.cpu.chunkBlockMeta,\n 'used',\n (node) => node.memory.chunk_block_meta,\n ),\n chunkMeta: createRangePredicate(\n setupFilters.cpu.chunkMeta,\n 'used',\n (node) => node.memory.chunk_meta,\n ),\n footprint: createRangePredicate(\n setupFilters.cpu.footprint,\n 'used',\n (node) => node.memory.footprint,\n ),\n query: createRangePredicate(\n setupFilters.cpu.query,\n 'used',\n (node) => node.memory.query,\n ),\n systemJobs: createRangePredicate(\n setupFilters.cpu.systemJobs,\n 'used',\n (node) => node.memory.system_jobs,\n ),\n versionedChunkMeta: createRangePredicate(\n setupFilters.cpu.versionedChunkMeta,\n 'used',\n (node) => node.memory.versioned_chunk_meta,\n ),\n\n tabletDynamicUsed: createRangePredicate(\n setupFilters.cpu.tabletDynamicUsed,\n 'used',\n (node) => node.memory.tablet_dynamic,\n ),\n tabletDynamicTotal: createRangePredicate(\n setupFilters.cpu.tabletDynamicTotal,\n 'limit',\n (node) => node.memory.tablet_dynamic,\n ),\n\n tabletStaticUsed: createRangePredicate(\n setupFilters.cpu.tabletStaticUsed,\n 'used',\n (node) => node.memory.tablet_static,\n ),\n tabletStaticTotal: createRangePredicate(\n setupFilters.cpu.tabletStaticTotal,\n 'limit',\n (node) => node.memory.tablet_static,\n ),\n\n userJobsUsed: createRangePredicate(\n setupFilters.cpu.userJobsUsed,\n 'used',\n (node) => node.memory.user_jobs,\n ),\n userJobsTotal: createRangePredicate(\n setupFilters.cpu.userJobsTotal,\n 'limit',\n (node) => node.memory.user_jobs,\n ),\n\n // filter by resources\n userSlotsUsed: createRangePredicate(\n setupFilters.resources.userSlotsUsed,\n 'usage',\n (node) => node.userSlots,\n ),\n userSlotsTotal: createRangePredicate(\n setupFilters.resources.userSlotsTotal,\n 'limits',\n (node) => node.userSlots,\n ),\n sealSlotsUsed: createRangePredicate(\n setupFilters.resources.sealSlotsUsed,\n 'usage',\n (node) => node.sealSlots,\n ),\n sealSlotsTotal: createRangePredicate(\n setupFilters.resources.sealSlotsTotal,\n 'limits',\n (node) => node.sealSlots,\n ),\n repairSlotsUsed: createRangePredicate(\n setupFilters.resources.repairSlotsUsed,\n 'usage',\n (node) => node.repairSlots,\n ),\n repairSlotsTotal: createRangePredicate(\n setupFilters.resources.repairSlotsTotal,\n 'limits',\n (node) => node.repairSlots,\n ),\n removalSlotsUsed: createRangePredicate(\n setupFilters.resources.removalSlotsUsed,\n 'usage',\n (node) => node.removalSlots,\n ),\n removalSlotsTotal: createRangePredicate(\n setupFilters.resources.removalSlotsTotal,\n 'limits',\n (node) => node.removalSlots,\n ),\n replicationSlotsUsed: createRangePredicate(\n setupFilters.resources.replicationSlotsUsed,\n 'usage',\n (node) => node.replicationSlots,\n ),\n replicationSlotsTotal: createRangePredicate(\n setupFilters.resources.replicationSlotsTotal,\n 'limits',\n (node) => node.replicationSlots,\n ),\n\n // filter by tablets\n all: createRangePredicate(\n setupFilters.tablets.all,\n 'all',\n (node) => node.tabletSlots,\n true,\n ),\n none: createRangePredicate(\n setupFilters.tablets.none,\n 'none',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leading: createRangePredicate(\n setupFilters.tablets.leading,\n 'leading',\n (node) => node.tabletSlots.byState,\n true,\n ),\n following: createRangePredicate(\n setupFilters.tablets.following,\n 'following',\n (node) => node.tabletSlots.byState,\n true,\n ),\n followerRecovery: createRangePredicate(\n setupFilters.tablets.followerRecovery,\n 'follower_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leaderRecovery: createRangePredicate(\n setupFilters.tablets.leaderRecovery,\n 'leader_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n stopped: createRangePredicate(\n setupFilters.tablets.stopped,\n 'stopped',\n (node) => node.tabletSlots.byState,\n true,\n ),\n elections: createRangePredicate(\n setupFilters.tablets.elections,\n 'elections',\n (node) => node.tabletSlots.byState,\n true,\n ),\n\n staticUsed: createRangePredicate(\n setupFilters.tablets.staticUsed,\n 'used',\n (node) => node.tabletStaticMemory,\n ),\n staticTotal: createRangePredicate(\n setupFilters.tablets.staticTotal,\n 'limit',\n (node) => node.tabletStaticMemory,\n ),\n dynamicUsed: createRangePredicate(\n setupFilters.tablets.dynamicUsed,\n 'used',\n (node) => node.tabletDynamicMemory,\n ),\n dynamicTotal: createRangePredicate(\n setupFilters.tablets.dynamicTotal,\n 'limit',\n (node) => node.tabletDynamicMemory,\n ),\n };\n return predicates;\n },\n);\n\nexport const getComponentNodesFiltersCount = createSelector(\n [getFilterPredicatesObject],\n (filters) => {\n return reduce_(\n filters,\n (acc, predicate) => {\n return predicate ? acc + 1 : acc;\n },\n 0,\n );\n },\n);\n\nexport const getComponentNodesFilterPredicates = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n return filter_(filterPredicatesObject, (p) => p) as Array<(node: Node) => boolean>;\n },\n);\n\nexport const getPropertiesRequiredForFilters = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n const picked = values_(\n pickBy_(\n PropertiesByPredicate,\n (_value, key) => filterPredicatesObject[key as keyof typeof PropertiesByPredicate],\n ),\n ) as any;\n\n return union_(...picked) as Array<ValueOf<typeof PropertiesByPredicate>[number]>;\n },\n);\n\nfunction createNodeTagPredicate<K extends keyof typeof PropertiesByPredicate>(\n tagFilter: string | TagFilter,\n nodesByTags: Map<string, Set<NodeWithProps<K>>>,\n getTags: (node: NodeWithProps<K>) => Array<string>,\n): undefined | ((node: NodeWithProps<K>) => boolean) {\n if (!tagFilter) {\n return undefined;\n }\n\n if (typeof tagFilter === 'string') {\n return (node) => {\n return some_(\n getTags(node),\n (item) => -1 !== item?.toLowerCase().indexOf(tagFilter.toLowerCase()),\n );\n };\n }\n\n const {mode, useRegexp, filter, selected} = tagFilter;\n\n const selectedItems = selected || [];\n\n switch (mode) {\n case 'union': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return some_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n case 'intersection': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return every_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n default: {\n if (!filter) {\n return undefined;\n }\n if (!useRegexp) {\n return createNodeTagPredicate(filter, new Map(), getTags);\n }\n try {\n const re = new RegExp(filter);\n return (node) => {\n return some_(getTags(node), (tag) => re.test(tag));\n };\n } catch (e) {\n return () => false;\n }\n }\n }\n}\n\nfunction createFlagPredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n flag: FlagState,\n) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return flag === 'disabled' ? !node[key] : Boolean(node[key]);\n };\n}\n\nfunction createAttributeStatePredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n value: FlagState,\n) {\n if (value === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return value === 'disabled' ? Boolean(node[key]) : !node[key];\n };\n}\n\nfunction createAlertsFlagPredicate(flag: FlagState) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: Pick<Node, 'alertCount'>) => {\n if (flag === 'disabled') {\n return node.alertCount === 0;\n }\n\n return node.alertCount! > 0;\n };\n}\n\nfunction createRangePredicate<T extends keyof typeof PropertiesByPredicate, U>(\n range: NodeRange,\n key: keyof U,\n get: (node: NodeWithProps<T>) => U,\n asArray?: boolean,\n) {\n if (!isRangeFilterDefined(range)) {\n return undefined;\n }\n\n const {from, to} = range;\n\n return (node: NodeWithProps<T>) => {\n const value: any = get(node)[key];\n\n const nodeValue = asArray ? value.length : value;\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n };\n}\n","import filter_ from 'lodash/filter';\nimport some_ from 'lodash/some';\nimport union_ from 'lodash/union';\n\nimport hammer from '../../../../../common/hammer';\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../../../common/hammer/predicate';\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\nimport {AttributesByProperty} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {createMediumsPredicates} from '../../../../../utils/components/nodes/setup';\nimport {\n PropertiesByColumn,\n defaultColumns,\n getNodeTablesProps,\n} from '../../../../../pages/components/tabs/nodes/tables';\nimport {\n getComponentNodesFilterPredicates,\n getComponentNodesFilterStatePredicate,\n getComponentNodesFiltersSetup,\n getComponentNodesIndexByRack,\n getComponentNodesIndexByTag,\n getNodes,\n getPropertiesRequiredForFilters,\n} from './predicates';\nimport {NODE_TYPE, NodeType} from '../../../../../../shared/constants/system';\n\nconst getContentMode = (state: RootState) => state.components.nodes.nodes.contentMode;\nconst getHostFilter = (state: RootState) => state.components.nodes.nodes.hostFilter.toLowerCase();\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_TABLE_ID];\nconst getComponentsNodesNodeTypeRaw = (state: RootState) => state.components.nodes.nodes.nodeTypes;\n\nconst getCustomColumns = (state: RootState) => getSelectedColumns(state) || defaultColumns;\n\nconst getMediumsPredicates = createSelector(\n [getComponentNodesFiltersSetup, getMediumListNoCache],\n createMediumsPredicates,\n);\n\nconst getPropertiesRequiredForMediums = createSelector(\n [getMediumsPredicates],\n (mediumsPredicates) => (mediumsPredicates.length > 0 ? (['IOWeight'] as const) : []),\n);\n\nconst getFilteredByHost = createSelector([getNodes, getHostFilter], (nodes, hostFilter) => {\n const hostFilters = hostFilter.split(/\\s+/);\n return filter_(nodes, (node) => {\n return some_(hostFilters, (hostFilter) => node?.host?.toLowerCase().includes(hostFilter));\n });\n});\n\nconst getFilteredNodes = createSelector(\n [getFilteredByHost, getComponentNodesFilterPredicates, getMediumsPredicates],\n (nodes, predicates, mediumsPredicates) => {\n const predicatesArray = predicates.concat(mediumsPredicates);\n if (!predicatesArray.length) {\n return nodes;\n }\n\n const predicate = concatByAnd(...predicatesArray);\n return filter_(nodes, (node) => {\n return predicate(node);\n });\n },\n);\n\nexport const getVisibleNodes = createSelector(\n [getFilteredNodes, getSortState, getMediumListNoCache, getCluster],\n (nodes, sortState, mediumList, cluster) => {\n return hammer.utils.sort(\n nodes.map((n) => ({...n, cluster})),\n sortState,\n getNodeTablesProps(mediumList).columns.items,\n ) as typeof nodes;\n },\n);\n\nexport const getComponentNodesTableProps = createSelector(\n [getMediumListNoCache],\n getNodeTablesProps,\n);\n\nconst getVisibleColumns = createSelector(\n [getComponentNodesTableProps, getContentMode, getCustomColumns],\n (nodesTableProps, contentMode, customColumns) =>\n contentMode === 'custom' ? customColumns : nodesTableProps.columns.sets[contentMode].items,\n);\n\nconst getPropertiesRequiredForRender = createSelector(\n [getVisibleColumns],\n (visibleColumns /* : Array<keyof typeof PropertiesByColumn> */) => {\n const requiredProperties = union_(\n ...visibleColumns.map(\n (x) => (PropertiesByColumn as any)[x] as ValueOf<typeof PropertiesByColumn>,\n ),\n );\n\n return requiredProperties;\n },\n);\n\nexport const getRequiredAttributes = createSelector(\n [\n getPropertiesRequiredForRender,\n getPropertiesRequiredForFilters,\n getPropertiesRequiredForMediums,\n ],\n (propertiesRequiredForRender, propertiesRequiredForFilters, propertiesRequiredForMediums) => {\n const allRequiredProperties = [\n ...propertiesRequiredForRender,\n ...propertiesRequiredForFilters,\n ...propertiesRequiredForMediums,\n ];\n\n const requiredAttributes = union_(\n ...allRequiredProperties.map(\n (x) => (AttributesByProperty as any)[x] as ValueOf<typeof AttributesByProperty>,\n ),\n );\n\n return requiredAttributes;\n },\n);\n\nexport const useTagsFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('tags') >= 0;\n});\n\nexport const useRacksFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('rack') >= 0;\n});\n\nconst getFetchedTags = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsTags;\nconst getFetchedRacks = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsRacks;\n\nexport const getComponentNodesTags = createSelector(\n [useTagsFromAttributes, getFetchedTags, getComponentNodesIndexByTag],\n (useFromAttrs, fetchedTags, nodesByTag) => {\n if (!useFromAttrs) {\n return fetchedTags;\n }\n\n return [...nodesByTag.keys()].sort();\n },\n);\n\nexport const getComponentNodesRacks = createSelector(\n [useRacksFromAttributes, getFetchedRacks, getComponentNodesIndexByRack],\n (useFromAttrs, fetchedRacks, nodesByRack) => {\n if (!useFromAttrs) {\n return fetchedRacks;\n }\n\n return [...nodesByRack.keys()].sort();\n },\n);\n\nexport const getComponentsNodesNodeTypes = createSelector(\n [getComponentsNodesNodeTypeRaw],\n (types) => {\n const res: Array<NodeType> = [...types];\n if (res.length === 0) {\n return [NODE_TYPE.ALL_NODES];\n }\n return res;\n },\n);\n\nexport const COMPONENTS_AVAILABLE_STATES = [\n 'all',\n 'being_disposed',\n 'online',\n 'offline',\n 'mixed',\n 'registered',\n 'unregistered',\n 'unknown',\n];\n\nexport const getComponentNodesFilterSetupStateValue = createSelector(\n [getComponentNodesFilterStatePredicate],\n (predicate) => {\n if (!predicate) {\n return ['all'];\n }\n\n return COMPONENTS_AVAILABLE_STATES.map((state) => ({state}))\n .filter(predicate)\n .map(({state}) => state);\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {getSettingSystemNodesNodeType} from '../../../store/selectors/settings/settings-ts';\nimport {NODE_TYPE} from '../../../../shared/constants/system';\n\nexport const getSystemNodesNodeTypesToLoad = createSelector(\n [getSettingSystemNodesNodeType],\n (nodeTypes) => {\n const valueSet = new Set(nodeTypes);\n if (valueSet.has(NODE_TYPE.ALL_NODES)) {\n return [NODE_TYPE.ALL_NODES];\n }\n\n return [...valueSet.values()];\n },\n);\n","import type {ThunkAction} from 'redux-thunk';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n NODE_MAINTENANCE_PARTIAL,\n NODE_MAINTENANCE_RESET,\n} from '../../../constants/components/node-maintenance-modal';\nimport {\n NodeMaintenanceAction,\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n isAllowedMaintenanceApiNodes,\n isAllowedMaintenanceApiProxies,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTApiId, ytApiV3Id, ytApiV4Id} from '../../../rum/rum-wrap-api';\nimport {AddMaintenanceParams, BatchSubRequest} from '../../../../shared/yt-types';\nimport {updateComponentsNode} from './nodes/nodes';\nimport {getCurrentUserName} from '../../../store/selectors/global';\nimport {prepareSetCommandForBatch} from '../../../utils/cypress-attributes';\nimport {getProxies} from './proxies/proxies';\n\ntype NodeMaintenanceThunkAction<T = Promise<unknown>> = ThunkAction<\n T,\n RootState,\n unknown,\n NodeMaintenanceAction\n>;\n\nfunction makeNodePath(address: string, component: AddMaintenanceParams['component']) {\n switch (component) {\n case 'cluster_node':\n return `//sys/cluster_nodes/${address}`;\n case 'http_proxy':\n return `//sys/http_proxies/${address}`;\n case 'rpc_proxy':\n return `//sys/rpc_proxies/${address}`;\n default:\n throw new Error(`Unexpected component type: ${component}`);\n }\n}\n\nfunction makeObsoleteMaintenanceRequests(\n command: 'add_maintenance' | 'remove_maintenance',\n {\n address,\n type,\n comment: c,\n component,\n }: Pick<AddMaintenanceParams, 'address' | 'type' | 'comment' | 'component'>,\n): Array<BatchSubRequest> {\n const path = makeNodePath(address, component);\n const isAdd = command === 'add_maintenance';\n const comment = isAdd ? c : '';\n switch (type) {\n case 'ban': {\n const banned = command === 'add_maintenance';\n return [\n {command: 'set', parameters: {path: `${path}/@banned`}, input: banned},\n {command: 'set', parameters: {path: `${path}/@ban_message`}, input: comment},\n ];\n }\n case 'disable_scheduler_jobs':\n case 'disable_tablet_cells':\n case 'disable_write_sessions':\n return [{command: 'set', parameters: {path: `${path}/@${type}`}, input: isAdd}];\n case 'decommission':\n return [\n {command: 'set', parameters: {path: `${path}/@decommissioned`}, input: isAdd},\n {\n command: 'set',\n parameters: {path: `${path}/@decommission_message`},\n input: isAdd ? comment : '',\n },\n ];\n default:\n return [];\n }\n}\n\nexport function applyMaintenance(\n address: string,\n component: NodeMaintenanceState['component'],\n data: NodeMaintenanceState['maintenance'],\n resourceLimitsOverrides?: Partial<NodeResourceLimits>,\n role?: string,\n): NodeMaintenanceThunkAction {\n return (dispatch, getState) => {\n const requests: Array<BatchSubRequest> = [];\n\n const path = makeNodePath(address, component);\n\n if (role && (component === 'http_proxy' || component === 'rpc_proxy')) {\n requests.push(prepareSetCommandForBatch(`${path}/@role`, role));\n }\n\n forEach_(resourceLimitsOverrides, (value, key) => {\n requests.push(\n prepareSetCommandForBatch(\n `${path}/@resource_limits_overrides/${key}`,\n isNaN(value!)\n ? undefined\n : {$value: value, $type: key === 'cpu' ? 'double' : 'int64'},\n {\n input_format: {\n $value: 'json',\n $attributes: {annotate_with_types: true},\n },\n },\n ),\n );\n });\n\n forEach_(data, (item, t) => {\n const type = t as AddMaintenanceParams['type'];\n const command = item?.state ? 'add_maintenance' : 'remove_maintenance';\n const comment = item?.comment;\n\n if (!isMaintenanceApiAllowedForComponent(component, getState())) {\n requests.push(\n ...makeObsoleteMaintenanceRequests(command, {\n address,\n component,\n comment,\n type,\n }),\n );\n } else {\n const parameters = {\n component,\n address,\n type,\n comment,\n };\n requests.push(\n command === 'add_maintenance'\n ? {command, parameters}\n : {\n command,\n parameters: {...parameters, mine: true},\n },\n );\n }\n });\n\n const reloadNodeData = () => {\n switch (component) {\n case 'cluster_node':\n return dispatch(updateComponentsNode(address));\n case 'http_proxy':\n return dispatch(getProxies('http'));\n case 'rpc_proxy':\n return dispatch(getProxies('rpc'));\n }\n };\n\n return wrapApiPromiseByToaster(ytApiV4Id.executeBatch(YTApiId.addMaintenance, {requests}), {\n toasterName: 'edit_node_' + address,\n batchType: 'v4',\n skipSuccessToast: true,\n errorTitle: `Failed to modify ${address}`,\n })\n .then(reloadNodeData)\n .catch(reloadNodeData);\n };\n}\n\nexport function showNodeMaintenance(\n params: Pick<NodeMaintenanceState, 'address' | 'component'>,\n): NodeMaintenanceThunkAction {\n return async (dispatch) => {\n const data = await dispatch(loadNodeMaintenanceData(params));\n\n return dispatch({\n type: NODE_MAINTENANCE_PARTIAL,\n data: {...params, ...data},\n });\n };\n}\n\nexport type MaintenanceRequestInfo = {\n user: string;\n comment: string;\n timestamp: string;\n type: AddMaintenanceParams['type'];\n};\n\ntype MaintenanceDataResponse = {\n banned?: boolean;\n ban?: boolean;\n ban_message?: string;\n decommissioned?: boolean;\n decommission_message?: string;\n disable_scheduler_jobs?: boolean;\n disable_tablet_cells?: boolean;\n disable_write_sessions?: boolean;\n\n resource_limits?: NodeResourceLimits;\n resource_limits_overrides?: Partial<NodeResourceLimits>;\n\n maintenance_requests?: Record<string, MaintenanceRequestInfo>;\n\n role?: string;\n};\n\nexport function loadNodeMaintenanceData({\n address,\n component,\n}: Pick<NodeMaintenanceState, 'address' | 'component'>): NodeMaintenanceThunkAction<\n Promise<{\n maintenance: NodeMaintenanceState['maintenance'];\n resourceLimits?: NodeResourceLimits;\n resourceLimitsOverrides?: Partial<NodeResourceLimits>;\n }>\n> {\n return (_dispatch, getState) => {\n const state = getState();\n const user = getCurrentUserName(state);\n const path = makeNodePath(address, component) + '/@';\n\n const allowMaintenanceRequests = isMaintenanceApiAllowedForComponent(component, state);\n\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.maintenanceRequests, {\n path,\n attributes: [\n 'resource_limits',\n 'resource_limits_overrides',\n ...(allowMaintenanceRequests\n ? ['maintenance_requests']\n : [\n 'ban_message',\n 'decommissioned',\n 'decommission_message',\n 'disable_scheduler_jobs',\n 'disable_tablet_cells',\n 'disable_write_sessions',\n ]),\n ...(component === 'http_proxy' || component === 'rpc_proxy'\n ? ['banned', 'role']\n : ['banned']),\n ],\n }),\n {\n toasterName: 'maintenance_attributes_request_' + path,\n skipSuccessToast: true,\n errorContent: `Cannot load node attributes for ${path}`,\n },\n ).then((data: MaintenanceDataResponse) => {\n const maintenance: NodeMaintenanceState['maintenance'] = {};\n if (allowMaintenanceRequests) {\n forEach_(data.maintenance_requests, (item) => {\n const dst =\n maintenance[item.type] ??\n (maintenance[item.type] = {comment: '', otherComments: '', state: ''});\n\n if (item.user === user) {\n dst.state = 'maintenance';\n if (dst.comment?.length) {\n dst.comment += '\\n';\n }\n dst.comment += item.comment;\n } else {\n dst.otherComments += `${item.timestamp} ${item.user}\\t${item.comment}`;\n }\n });\n } else {\n Object.assign(maintenance, {\n ban: {\n state: data.banned ? 'maintenance' : '',\n comment: data.ban_message,\n },\n decommission: {\n state: data.decommissioned ? 'maintenance' : '',\n comment: data.decommission_message,\n },\n disable_scheduler_jobs: {\n state: data.disable_scheduler_jobs ? 'maintenance' : '',\n },\n disable_tablet_cells: {state: data.disable_tablet_cells ? 'maintenance' : ''},\n disable_write_sessions: {\n state: data.disable_write_sessions ? 'maintenance' : '',\n },\n } as typeof maintenance);\n }\n return {\n maintenance,\n resourceLimits: data.resource_limits,\n resourceLimitsOverrides: data.resource_limits_overrides,\n role: data.role,\n };\n });\n };\n}\n\nexport function closeNodeMaintenanceModal(): NodeMaintenanceAction {\n return {type: NODE_MAINTENANCE_RESET};\n}\n\nfunction isMaintenanceApiAllowedForComponent(\n component: AddMaintenanceParams['component'],\n state: RootState,\n) {\n switch (component) {\n case 'cluster_node':\n return isAllowedMaintenanceApiNodes(state);\n case 'http_proxy':\n case 'rpc_proxy':\n return isAllowedMaintenanceApiProxies(state);\n default:\n return false;\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {getSettingsData} from '../../../../../store/selectors/settings/settings-base';\nimport {RootState} from '../../../../../store/reducers';\n\nimport './MemoryProgress.scss';\n\nconst block = cn('nodes-memory');\n\ntype MemoryProgressProps = {\n // from parent\n memoryText: string;\n memoryData?: Array<MemoryData>;\n};\n\ntype MemoryData = {\n color: string;\n name: string;\n value: number;\n rawData?: {used?: number; limit?: number};\n};\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass MemoryProgress extends React.Component<MemoryProgressProps & ReduxProps> {\n progress = React.createRef();\n\n renderProgress() {\n const {memoryText, memoryData = []} = this.props;\n\n return <Progress stack={memoryData} text={memoryText} />;\n }\n\n renderItem(item: MemoryData) {\n const {showAll} = this.props;\n const rawDataUsed = item.rawData?.used;\n const rawDataLimit = item.rawData?.limit;\n const rawDataLimitIsNumber = typeof rawDataLimit === 'number';\n\n return !showAll && !rawDataUsed ? null : (\n <li key={item.name} className={block('category')}>\n <div className={block('category-legend')}>\n <div\n className={block('category-legend-color')}\n style={{backgroundColor: item.color}}\n />\n <strong className={block('category-legend-title')}>\n {hammer.format['ReadableField'](item.name)}\n </strong>\n </div>\n <div className={block('category-data')}>\n <span>{hammer.format['Bytes'](rawDataUsed)}</span>\n {rawDataLimitIsNumber && ' / '}\n {rawDataLimitIsNumber && <span>{hammer.format['Bytes'](rawDataLimit)}</span>}\n </div>\n </li>\n );\n }\n\n renderPopupContent() {\n const {memoryData} = this.props;\n\n return (\n memoryData?.length! > 0 && (\n <div className={block('popup', 'tooltip-content')}>\n <ul className={block('content')}>\n {map_(memoryData, (item) => this.renderItem(item))}\n </ul>\n </div>\n )\n );\n }\n\n render() {\n return (\n <Tooltip className={block()} content={this.renderPopupContent()} placement={'auto'}>\n <div>{this.renderProgress()}</div>\n </Tooltip>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n showAll: getSettingsData(state)['global::components::memoryPopupShowAll'],\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport default connector(MemoryProgress);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\n\nimport hammer from '../../common/hammer';\nimport {Icon, IconData, SegmentedRadioGroup, SegmentedRadioGroupProps} from '@gravity-ui/uikit';\n\ninterface Props<T extends string = string> extends SegmentedRadioGroupProps<T> {\n items: Array<ItemType<T>>;\n}\n\nexport interface ItemType<T extends string = string> {\n icon?: IconData;\n text: string;\n value: T;\n}\n\nconst block = cn('elements-radiobutton');\n\nexport default class CustomRadioButton<T extends string = string> extends React.Component<\n Props<T>\n> {\n static propTypes = {\n value: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({value: PropTypes.string})),\n };\n\n static prepareSimpleValue(value: Props['value']) {\n if (value === undefined || value === null) {\n throw new Error('CustomRadioButton: unexpected value');\n }\n return {\n value: value,\n text: hammer.format['ReadableField'](value),\n };\n }\n\n render() {\n const {items, className, ...props} = this.props;\n\n const options = items.map((item) => ({\n value: item.value,\n content: (\n <>\n {item.icon && <Icon data={item.icon} size={13} />}\n {item.text || ' '} {/* XXX whitespace helps render single icon correctly */}\n </>\n ),\n }));\n\n return (\n <SegmentedRadioGroup {...props} className={block(null, className)} options={options} />\n );\n }\n}\n","import UIFactory from '../../UIFactory';\nimport {Page} from '../../constants';\nimport {TabletsTab} from '../../constants/tablets';\nimport {OrderType, multiSortWithUndefined, orderTypeToOrderK} from '../sort-helpers';\n\nexport function tabletCellBundleDashboardUrl(cluster: string, bundle: string) {\n return UIFactory.makeUrlForTabletCellBundleDashboard(cluster, bundle);\n}\n\nexport function genTabletCellBundlesCellUrl(cellId: string, cluster?: string) {\n const prefix = cluster ? `/${cluster}/` : '';\n return `${prefix}${Page.TABLET_CELL_BUNDLES}/${TabletsTab.TABLET_CELLS}?id=${cellId}`;\n}\n\nfunction compareBundlesByAccount<T extends Record<string, any>>(left: T, right: T) {\n if (\n left.changelog_account === right.changelog_account &&\n left.snapshot_account === right.snapshot_account\n ) {\n return 0;\n }\n\n return left.changelog_account < right.changelog_account\n ? -1\n : left.snapshot_account < right.snapshot_account\n ? -1\n : 1;\n}\n\nexport const sortTableBundles = <T extends Record<string, any>>({\n bundles,\n column,\n columnsSortable,\n order,\n}: {\n bundles: T[];\n column: keyof T;\n columnsSortable: Set<string>;\n order: OrderType;\n}) => {\n let sorted: T[] = [];\n\n const {orderK, undefinedOrderK} = orderTypeToOrderK(order);\n\n if (column === 'changelog_account') {\n sorted = [...bundles].sort(compareBundlesByAccount);\n } else if (column === 'nodes') {\n sorted = [...bundles].sort(({nodes: l = []}, {nodes: r = []}) => l.length - r.length);\n } else if (columnsSortable.has(column as string)) {\n return multiSortWithUndefined(bundles, [{key: column, orderK, undefinedOrderK}]);\n }\n\n return (order as string).includes('asc') ? sorted : sorted.reverse();\n};\n","import {MEDIUM_COLS_PREFIX} from '../../../constants/components/nodes/nodes';\n\nimport forEach_ from 'lodash/forEach';\n\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodeRange,\n NodesSetupState,\n} from '../../../store/reducers/components/nodes/setup/setup';\nimport type {FIX_MY_TYPE} from '../../../types';\n\nconst isCorrectRange = (\n node: Node['IOWeight'] = {},\n {from, to}: NodeRange,\n key: FIX_MY_TYPE,\n isArray = false,\n) => {\n if (!node[key]) {\n return from.value === null && to.value === null;\n }\n\n const nodeValue = isArray ? (node[key] as FIX_MY_TYPE).length : node[key];\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n};\n\nexport function createMediumsPredicates(setupFilters: NodesSetupState, mediumList: FIX_MY_TYPE) {\n const {storage} = setupFilters;\n const predicates = [] as Array<(node: Pick<Node, 'IOWeight'>) => boolean>;\n forEach_(mediumList, (medium) => {\n const fromTo =\n storage[(MEDIUM_COLS_PREFIX + medium) as FIX_MY_TYPE as keyof typeof storage];\n if (isRangeFilterDefined(fromTo)) {\n predicates.push((node: Pick<Node, 'IOWeight'>) =>\n isCorrectRange(node.IOWeight, fromTo, medium),\n );\n }\n });\n return predicates;\n}\n\nexport function isRangeFilterDefined({from, to}: NodeRange) {\n return from.value !== null || to.value !== null;\n}\n","import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\nimport {ButtonLinkProps} from '@gravity-ui/uikit';\n\nexport type AttributesButtonProps = Exclude<ButtonProps, ButtonLinkProps>;\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n headingClassName,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'}, headingClassName)}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n headingClassName?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n"],"names":["getTables","state","tables","initialState","addI18Keysets","en","ru","connect","openAttributesModal","_ref","title","_ref$getPathProps","getPathProps","path","exactPath","attribute","attributes","_ref$withTooltip","withTooltip","_ref$tooltipProps","tooltipProps","placement","content","i18n","rest","_objectWithoutProperties","_excluded","_jsx","AttributesButton","_objectSpread","onClick","pathProps","props","xmlns","fill","viewBox","children","fillRule","d","clipRule","getNodeMaintenanceModalState","components","nodeMaintenanceModal","getNodeMaintenanceModalInitialValues","createSelector","maintenance","resourceLimitsOverrides","role","limits","reduce_","acc","value","k","isAllowedMaintenanceApiNodes","getClusterUiConfig","enable_maintenance_api_nodes","isAllowedMaintenanceApiProxies","enable_maintenance_api_proxies","reShortName","makeRegexpFromSettings","uiSettings","reShortNameFromAddress","reTabletNodeShortName","reShortNameFromTabletNodeAddress","block","cn","Host","_ref$address","address","prefix","className","copyBtnClassName","useText","asTabletNode","inlineMargins","host","React","re","_res$groups","res","exec","groups","shortname","suffix","filter","Boolean","join","calcShortNameByRegExp","cluster","useSelector","getCluster","_jsxs","hidden","Tooltip","Link","url","concat","routed","ClipboardButton","view","text","DialogError","YTErrorBlock","makeErrorFields","errors","compact_","map_","error","index","name","type","extras","undefined","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","Component","YTDFDialog","withLazyLoading","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","t0","sent","YTDialog","abrupt","stop","_React$useState","_React$useState2","_slicedToArray","mounted","setMounted","visible","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","getMediumList","global","mediumList","data","hammer","utils","sortInPredefinedOrder","MediumType","DEFAULT","_toConsumableArray","getMediumListNoCache","mediums","filter_","item","getCurrentCluster","Proxy","_createClass","_classCallCheck","this","format","NO_VALUE","dead","effectiveState","banned","ypath","getBoolean","banMessage","getValue","version","physicalHost","liveness","loadAverage","updatedAt","networkLoad","maintenanceRequests","ATTRIBUTES","getProxies","dispatch","GET_PROXIES","REQUEST","PROXY_TYPE","HTTP","getState","Promise","all","axios","get","ytApiV3Id","YTApiId","systemProxies","then","_ref3","_ref4","cypressData","proxies","proxyData","cypressAttributes","getAttributes","SUCCESS","FAILURE","RPC","list","componentsRpcProxies","componentGetRpcProxies","_ref2","proxiesMap","alive","meta","CYPRESS","_ref5","componentGetCypressProxies","_ypath$getAttributes","_ypath$getAttributes2","code","YTErrors","NODE_DOES_NOT_EXIST","_x","apply","arguments","changeHostFilter","hostFilter","PROXIES_CHANGE_FILTERS","changeStateFilter","stateFilter","changeRoleFilter","roleFilter","changeBannedFilter","bannedFilter","resetProxyState","CANCELLED","compressionExtras","labels","items","map","subItemsMap","zlib_","genComperessionLevelItems","zstd_","brotli_","lzma_","bzip2_","from","to","i","push","String","compressionCodecValueFromString","SELECT_EMPTY_VALUE","startsWith","substr","length","compressionCodecValueToString","isEqual_","StorageOptions","REPLICATION","ERASURE","ERASURE_CODECS","storageOptionFromErasureCodec","codec","normalizeErasureCodec","erasureCodec","erasureCodecFromStorageOption","InMemoryMode","NONE","COMPRESSED","UNCOMPRESSED","makeUiMarker","ui_marker","prepareSetCommandForBatch","additionalParameters","command","parameters","force","input","CypressNodeTypes","REPLICATED_TABLE","REPLICATION_LOG_TABLE","CHAOS_REPLICATED_TABLE","MAP_NODE","TABLE","createParentsBeforeSet","_x2","_createParentsBeforeSet","nodePath","attributesToSet","parentPaths","toCreate","_iterator","_step","_loop","resolve","forEach_","attr","parents","split","key","slice","Object","keys","sort","_createForOfIteratorHelper","yt","exists","isCreated","set","s","n","done","delegateYield","t1","e","f","finish","updateNodeAttributes","changes","isEmpty_","requests","oneLevelDiffsParents","oneLevelDiffs","attrPath","_attrPath$splice","splice","last","parentPath","wrapBatchPromise","executeBatch","promises","diff","p","updateAttributes","_x3","_x4","oneLevelDiff","modifyGuarantee","cloneDeep_","isExists","makeBatchSubRequest","setup","prepareAttributes","_partition_","partition_","indexOf","_partition_2","paths","NodeTypeSelector","onUpdate","Select","multiple","options","NODE_TYPE_ITEMS","newVal","newValue","updateListWithAll","NODE_TYPE","ALL_NODES","label","SystemNodeTypeSelector","useDispatch","getSystemNodesNodeTypesToLoad","setSettingSystemNodesNodeType","setSysmetNodesNodeType","ComponentsNodeTypeSelector","getComponentsNodesNodeTypes","componentsNodesSetNodeTypes","COMPONENTS","NAMESPACES","TEMPLATES","SettingName","changeContentMode","contentMode","CHANGE_CONTENT_MODE","updateNodeCanceler","CancelHelper","getNodes","nodeTypes","GET_NODES","preparedAttrs","USE_CACHE","USE_MAX_SIZE","componentsClusterNodes","cancellation","removeAllAndSave","_splitBatchResults","splitBatchResults","results","outputs","output","nodes","collectedItems","Set","_step2","_iterator2","has","add","err","updateComponentsNode","componentsUpdateNodeData","Node","node","COMPONENTS_NODES_UPDATE_NODE","$value","CHANGE_HOST_FILTER","trim","CHANGE_NODE_TYPE","applyPreset","APPLY_SETUP","savePreset","prevTemplates","getTemplates","templates","setSetting","removePreset","omit_","handleColumnsChange","selectedColumns","SELECTED_COLUMNS","getComponentsNodesFilterOptions","useTagsFromAttributes","useRacksFromAttributes","GET_NODES_FILTER_OPTIONS","wrapApiPromiseByToaster","toasterName","errorTitle","skipSuccessToast","tags","racks","tag","rack","filterOptionsTags","filterOptionsRacks","PageCounter","pageIndex","pageCount","getNameTitle","column","shortTitle","t","ReadableField","nameContent","titleContent","ColumnHeader","align","order","onSort","multisortIndex","loading","_useColumnInfo","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","rumLogError","message","additional","subColumn","useColumnInfo","changeHandler","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","ctrlKey","metaKey","sortable","SortIcon","Text","variant","color","SubColumnSelector","Loader","DropdownMenu","x","action","renderSwitcher","Button","size","Icon","barsDescendingSvg","ICON_BY_TYPE","_React$Component","_this","_len","args","Array","_key","_callSuper","_this$props","onChange","_inherits","_this$props2","icon","awesome","face","ROLE_THEME","default","control","STATE_THEME","online","offline","NodeColumnState","_STATE_THEME$state","FirstUppercase","theme","Label","NodeColumnBanned","StatusBlock","NodeColumnRole","Address","NodeColumnText","ClickableId","allowTooltip","_ref5$format","v","ClickableText","nodeTableProps","virtual","cssHover","striped","tableId","COMPONENTS_NODES_NODE_TABLE_ID","columns","cell_id","caption","peer_id","sets","mode","makeComponentsNodesLink","rackFilter","rackSelected","decommissioned","full","alerts","search","ChartLink","hideIcon","wrapContent","target","prepareRoleListValue","roles","otherMembers","current","toAdd","toRemove","unrecognized","isUnrecognized","isRequested","isApproved","isDepriving","currentArr","prepareItemOfCurrent","otherArr","frozen","newItems","itemClassName","extraProps","roleListValueToSubjectList","manyListDataItemToSubjectList","manyListDataItem","removed","extractChangedSubjects","added","_ref6","user","group","_ref7","_ref8","Version","_Component","handleShow","handleClose","SimpleModal","onCancel","onOutsideClick","renderErrorVersion","renderVersion","withVisible","NodeActions","handleEditClick","showNodeMaintenance","component","_UIFactory$getCompone","UIFactory","getComponentsNodeDashboardUrl","ClickableAttributesButton","mapDispatchToProps","NodesColumnHeader","_props$options","_column$column","sortState","COMPONENTS_NODES_TABLE_ID","oldSortStateToOrderType","field","columnName","_props$options2","colInfo","toggleColumnSortOrder","PropertiesByColumn","__default__","actions","alert_count","chunks","cpu","cpu_limit","cpu_usage","data_center","elections","elections_chaos","follower_recovery","follower_recovery_chaos","following","following_chaos","gpu","gpu_usage","gpu_limit","io_weight","last_seen","leader_recovery","leader_recovery_chaos","leading","leading_chaos","locations","memory_total","memory","memory_limit","memory_usage","network","network_usage","network_limit","none","none_chaos","physical_host","flavors","removal_slots","removal_slots_usage","removal_slots_limit","repair_slots","repair_slots_usage","repair_slots_limit","replication_slots","replication_slots_usage","replication_slots_limit","scheduler_jobs","seal_slots","seal_slots_usage","seal_slots_limit","sessions","space_limit","space_usage","space","stopped","stopped_chaos","system_tags","tablet_cells","tablet_memory_dynamic","tablet_memory_dynamic_usage","tablet_memory_dynamic_limit","tablet_memory_static","tablet_memory_static_usage","tablet_memory_static_limit","tablet_memory","tablet_slots","user_slots","user_slots_usage","user_slots_limit","user_tags","write_sessions","nodesTableProps","virtualType","computeKey","compareFn","compareArraysBySizeThenByItems","dataCenter","userTags","_node$userTags","systemTags","DESC_ASC_UNORDERED","alertCount","disableJobs","disableWriteSession","disableTabletCells","lastSeenTime","spaceProgress","renderHeader","sortWithUndefined","spaceTotal","spaceUsed","enabledLocations","cpuProgress","_node$cpu","limit","_node$cpu2","usage","_node$gpu","progress","_node$gpu2","_node$gpu3","memoryProgress","memoryTotal","networkProgress","hiddne","repairSlotsProgress","repairSlots","removalSlotsProgress","removalSlots","replicationSlotsProgress","replicationSlots","sealSlotsProgress","_ref9","sealSlots","userSlotsProgress","_ref0","userSlots","tabletSlots","raw","sum","slot","_node$tabletSlots","byState","_node$tabletSlots2","makeCaptionProps","_node$chaosSlots","chaosSlots","_node$chaosSlots2","_node$tabletSlots3","_node$tabletSlots4","_node$chaosSlots3","_node$chaosSlots4","_node$tabletSlots5","_node$tabletSlots6","_node$chaosSlots5","_node$chaosSlots6","_node$tabletSlots7","_node$tabletSlots8","_node$chaosSlots7","_node$chaosSlots8","_node$tabletSlots9","_node$chaosSlots9","_node$tabletSlots0","_node$tabletSlots1","_node$chaosSlots0","_node$chaosSlots1","_node$tabletSlots10","_node$tabletSlots11","_node$chaosSlots10","_node$chaosSlots11","static","tabletStaticMemory","static_usage","used","static_limit","dynamic","tabletDynamicMemory","dynamic_usage","dynamic_limit","IOWeight","cache","ssd_blobs","ssd_journals","storage","cpu_and_memory","resources","tablets","chaos_slots","custom","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","defaultColumns","renderTags","themes","flexType","TagsContainer","_ref1","_ref1$flexType","inline","NODES_TABLE_TEMPLATES","_typeof","mediumName","IO_WEIGHT_PREFIX","renderLabel","_item$dataCenter","toUpperCase","Progress","spaceText","progressText","cpuText","_item$gpu","_item$gpu2","MemoryProgress","memoryData","memoryText","memoryTotalText","networkText","statuses","sortBy_","keys_","_TABLET_SLOTS$state","TABLET_SLOTS","_item$tabletSlots","_item$chaosSlots","_item$tabletSlots2","_item$chaosSlots2","_item$tabletSlots3","_item$chaosSlots3","_item$tabletSlots4","_item$chaosSlots4","_item$tabletSlots5","_item$chaosSlots5","_item$tabletSlots6","_item$chaosSlots6","_item$tabletSlots7","_item$chaosSlots7","getNodeTablesProps","allMediums","merge_","groupHeaderStyle","width","getSetupFiltersRaw","getComponentNodesFilterStatePredicate","excludes","substring","toaster","autoHiding","includes","getComponentNodesFiltersSetup","mediumDefaults","medium","MEDIUM_COLS_PREFIX","groupFilterInitialState","getComponentNodesIndexByTag","_acc$get","Map","getComponentNodesIndexByRack","_node$rack","_acc$get2","UNAWARE","PropertiesByPredicate","blobSession","blockCache","chunkBlockMeta","chunkMeta","footprint","query","systemJobs","versionedChunkMeta","tabletDynamicUsed","tabletDynamicTotal","tabletStaticUsed","tabletStaticTotal","userJobsUsed","userJobsTotal","userSlotsUsed","userSlotsTotal","sealSlotsUsed","sealSlotsTotal","repairSlotsUsed","repairSlotsTotal","removalSlotsUsed","removalSlotsTotal","replicationSlotsUsed","replicationSlotsTotal","followerRecovery","leaderRecovery","staticUsed","staticTotal","dynamicUsed","dynamicTotal","getRackPredicate","setupFilters","nodesByRack","_rack$selected","selected","createNodeTagPredicate","getFilterPredicatesObject","nodesByTags","rackPredicate","statePredicate","_node$physicalHost","createFlagPredicate","createAlertsFlagPredicate","createAttributeStatePredicate","schedulerJobs","writeSessions","tabletCells","createRangePredicate","blob_session","block_cache","chunk_block_meta","chunk_meta","system_jobs","versioned_chunk_meta","tablet_dynamic","tablet_static","user_jobs","getComponentNodesFiltersCount","filters","predicate","getComponentNodesFilterPredicates","filterPredicatesObject","getPropertiesRequiredForFilters","picked","values_","pickBy_","_value","union_","tagFilter","getTags","some_","toLowerCase","useRegexp","selectedItems","tagName","_nodesByTags$get","every_","_nodesByTags$get2","RegExp","test","flag","range","asArray","isRangeFilterDefined","nodeValue","Infinity","getMediumsPredicates","createMediumsPredicates","getPropertiesRequiredForMediums","mediumsPredicates","getFilteredByHost","hostFilters","_node$host","getFilteredNodes","predicates","predicatesArray","concatByAnd","getVisibleNodes","getComponentNodesTableProps","getVisibleColumns","getSelectedColumns","customColumns","getPropertiesRequiredForRender","visibleColumns","getRequiredAttributes","propertiesRequiredForRender","propertiesRequiredForFilters","propertiesRequiredForMediums","allRequiredProperties","AttributesByProperty","getComponentNodesTags","useFromAttrs","fetchedTags","nodesByTag","getComponentNodesRacks","fetchedRacks","types","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getSettingSystemNodesNodeType","valueSet","values","makeNodePath","Error","applyMaintenance","isNaN","$type","input_format","$attributes","annotate_with_types","comment","isMaintenanceApiAllowedForComponent","mine","c","isAdd","makeObsoleteMaintenanceRequests","reloadNodeData","ytApiV4Id","addMaintenance","batchType","params","loadNodeMaintenanceData","NODE_MAINTENANCE_PARTIAL","_dispatch","getCurrentUserName","allowMaintenanceRequests","errorContent","maintenance_requests","_maintenance$item$typ","_dst$comment","dst","otherComments","timestamp","assign","ban","ban_message","decommission","decommission_message","disable_scheduler_jobs","disable_tablet_cells","disable_write_sessions","resourceLimits","resource_limits","resource_limits_overrides","closeNodeMaintenanceModal","NODE_MAINTENANCE_RESET","_this$props$memoryDat","stack","_item$rawData","_item$rawData2","showAll","rawDataUsed","rawData","rawDataLimit","rawDataLimitIsNumber","style","backgroundColor","_this2","renderItem","renderPopupContent","renderProgress","getSettingsData","CustomRadioButton","_Fragment","SegmentedRadioGroup","tabletCellBundleDashboardUrl","bundle","makeUrlForTabletCellBundleDashboard","genTabletCellBundlesCellUrl","cellId","Page","TABLET_CELL_BUNDLES","TabletsTab","TABLET_CELLS","compareBundlesByAccount","left","right","changelog_account","snapshot_account","sortTableBundles","bundles","columnsSortable","sorted","_orderTypeToOrderK","orderTypeToOrderK","orderK","undefinedOrderK","_ref2$nodes","l","_ref3$nodes","r","multiSortWithUndefined","reverse","isCorrectRange","isArray","fromTo","_ref$view","_ref$size","b","headingCN","CollapsibleSectionStateLess","toggle","onToggle","collapsed","overview","headingClassName","marginDirection","togglerRightPadding","ErrorBoundary","margin","clickable","CollapsibleSection","setCollapsed","defaultProps","renderText","settings","mix","elem","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","prepareTextProps","printColumnAsTimeDurationWithMs","getColumn","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","showErrorPopup","hideOopsMsg","asNumber","_templates","templateId","reduce","newTemplates","wrapRenderMethods"],"sourceRoot":""}