@ytsaurus/ui 1.83.0 → 1.84.0
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.
- package/dist/public/build/assets-manifest.json +61 -61
- package/dist/public/build/css/{2209.ee64dbab.chunk.css → 2209.b618d964.chunk.css} +2 -2
- package/dist/public/build/css/2209.b618d964.chunk.css.map +1 -0
- package/dist/public/build/css/components.6375c10d.chunk.css +2 -0
- package/dist/public/build/css/components.6375c10d.chunk.css.map +1 -0
- package/dist/public/build/css/{navigation.d170ba80.chunk.css → navigation.b6f988cd.chunk.css} +2 -2
- package/dist/public/build/css/navigation.b6f988cd.chunk.css.map +1 -0
- package/dist/public/build/css/{query-tracker.94d91868.chunk.css → query-tracker.7c9d0851.chunk.css} +2 -2
- package/dist/public/build/css/{query-tracker.94d91868.chunk.css.map → query-tracker.7c9d0851.chunk.css.map} +1 -1
- package/dist/public/build/js/{1604.72f6d465.chunk.js → 1604.7b5c7976.chunk.js} +3 -3
- package/dist/public/build/js/1604.7b5c7976.chunk.js.map +1 -0
- package/dist/public/build/js/{1983.e3e6d5e8.chunk.js → 1983.034a4de9.chunk.js} +2 -2
- package/dist/public/build/js/1983.034a4de9.chunk.js.map +1 -0
- package/dist/public/build/js/{3724.f72a2691.chunk.js → 3724.1674ced1.chunk.js} +2 -2
- package/dist/public/build/js/3724.1674ced1.chunk.js.map +1 -0
- package/dist/public/build/js/3751.147f6dd9.chunk.js +2 -0
- package/dist/public/build/js/3751.147f6dd9.chunk.js.map +1 -0
- package/dist/public/build/js/4319.3407fde8.chunk.js +3 -0
- package/dist/public/build/js/4319.3407fde8.chunk.js.map +1 -0
- package/dist/public/build/js/5088.bee0a42a.chunk.js +2 -0
- package/dist/public/build/js/5088.bee0a42a.chunk.js.map +1 -0
- package/dist/public/build/js/{5653.45eec4e2.chunk.js → 5653.cff8909f.chunk.js} +2 -2
- package/dist/public/build/js/5653.cff8909f.chunk.js.map +1 -0
- package/dist/public/build/js/{acl.614f12c4.chunk.js → acl.f6256b52.chunk.js} +2 -2
- package/dist/public/build/js/{acl.614f12c4.chunk.js.map → acl.f6256b52.chunk.js.map} +1 -1
- package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js → app-navigation.e7dd869b.chunk.js} +2 -2
- package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js.map → app-navigation.e7dd869b.chunk.js.map} +1 -1
- package/dist/public/build/js/cluster-menu.68f5e677.chunk.js +2 -0
- package/dist/public/build/js/{cluster-menu.381d4a48.chunk.js.map → cluster-menu.68f5e677.chunk.js.map} +1 -1
- package/dist/public/build/js/cluster-page-wrapper.e42322f0.chunk.js +2 -0
- package/dist/public/build/js/{cluster-page-wrapper.b70c30d4.chunk.js.map → cluster-page-wrapper.e42322f0.chunk.js.map} +1 -1
- package/dist/public/build/js/components.1ea8e03b.chunk.js +2 -0
- package/dist/public/build/js/components.1ea8e03b.chunk.js.map +1 -0
- package/dist/public/build/js/{dashboard.a63eef8c.chunk.js → dashboard.303faf7e.chunk.js} +2 -2
- package/dist/public/build/js/{dashboard.a63eef8c.chunk.js.map → dashboard.303faf7e.chunk.js.map} +1 -1
- package/dist/public/build/js/default-subject-link.f30c100a.chunk.js +2 -0
- package/dist/public/build/js/default-subject-link.f30c100a.chunk.js.map +1 -0
- package/dist/public/build/js/job.47f7b4c0.chunk.js +2 -0
- package/dist/public/build/js/job.47f7b4c0.chunk.js.map +1 -0
- package/dist/public/build/js/main.4f383c25.js +3 -0
- package/dist/public/build/js/main.4f383c25.js.map +1 -0
- package/dist/public/build/js/navigation.5512d9c6.chunk.js +2 -0
- package/dist/public/build/js/navigation.5512d9c6.chunk.js.map +1 -0
- package/dist/public/build/js/odin.96cec50a.chunk.js +2 -0
- package/dist/public/build/js/odin.96cec50a.chunk.js.map +1 -0
- package/dist/public/build/js/{operations.3535a692.chunk.js → operations.1a486c6e.chunk.js} +2 -2
- package/dist/public/build/js/operations.1a486c6e.chunk.js.map +1 -0
- package/dist/public/build/js/{query-tracker.d266354f.chunk.js → query-tracker.028a8ccf.chunk.js} +2 -2
- package/dist/public/build/js/query-tracker.028a8ccf.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.948c8e30.js → runtime.ad8a9439.js} +2 -2
- package/dist/public/build/js/{runtime.948c8e30.js.map → runtime.ad8a9439.js.map} +1 -1
- package/dist/public/build/js/{tablet.4e3852cc.chunk.js → tablet.68f185b6.chunk.js} +2 -2
- package/dist/public/build/js/{tablet.4e3852cc.chunk.js.map → tablet.68f185b6.chunk.js.map} +1 -1
- package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js → yt-df-dialog.bbf72b55.chunk.js} +2 -2
- package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js.map → yt-df-dialog.bbf72b55.chunk.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js +2 -0
- package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +56 -56
- package/package.json +2 -2
- package/dist/public/build/css/2209.ee64dbab.chunk.css.map +0 -1
- package/dist/public/build/css/components.fd2fa23a.chunk.css +0 -2
- package/dist/public/build/css/components.fd2fa23a.chunk.css.map +0 -1
- package/dist/public/build/css/navigation.d170ba80.chunk.css.map +0 -1
- package/dist/public/build/js/1604.72f6d465.chunk.js.map +0 -1
- package/dist/public/build/js/1983.e3e6d5e8.chunk.js.map +0 -1
- package/dist/public/build/js/3724.f72a2691.chunk.js.map +0 -1
- package/dist/public/build/js/3745.aa320ee5.chunk.js +0 -2
- package/dist/public/build/js/3745.aa320ee5.chunk.js.map +0 -1
- package/dist/public/build/js/4319.20f80209.chunk.js +0 -3
- package/dist/public/build/js/4319.20f80209.chunk.js.map +0 -1
- package/dist/public/build/js/5088.91897d9a.chunk.js +0 -2
- package/dist/public/build/js/5088.91897d9a.chunk.js.map +0 -1
- package/dist/public/build/js/5653.45eec4e2.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-menu.381d4a48.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.b70c30d4.chunk.js +0 -2
- package/dist/public/build/js/components.4b381a1a.chunk.js +0 -2
- package/dist/public/build/js/components.4b381a1a.chunk.js.map +0 -1
- package/dist/public/build/js/default-subject-link.17448a19.chunk.js +0 -2
- package/dist/public/build/js/default-subject-link.17448a19.chunk.js.map +0 -1
- package/dist/public/build/js/job.c5cdc8c6.chunk.js +0 -2
- package/dist/public/build/js/job.c5cdc8c6.chunk.js.map +0 -1
- package/dist/public/build/js/main.03147e02.js +0 -3
- package/dist/public/build/js/main.03147e02.js.map +0 -1
- package/dist/public/build/js/navigation.1f7a0ea4.chunk.js +0 -2
- package/dist/public/build/js/navigation.1f7a0ea4.chunk.js.map +0 -1
- package/dist/public/build/js/odin.45cc399f.chunk.js +0 -2
- package/dist/public/build/js/odin.45cc399f.chunk.js.map +0 -1
- package/dist/public/build/js/operations.3535a692.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.d266354f.chunk.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js +0 -2
- package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js.map +0 -1
- /package/dist/public/build/js/{1604.72f6d465.chunk.js.LICENSE.txt → 1604.7b5c7976.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{4319.20f80209.chunk.js.LICENSE.txt → 4319.3407fde8.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.03147e02.js.LICENSE.txt → main.4f383c25.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"js/components.1ea8e03b.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/TableInfo/TableInfo.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/tables_v2.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionSummary.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionsV2.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyActions/ProxyActions.tsx","webpack://@ytsaurus/ui/./src/ui/components/MaintenanceRequests/MaintenanceRequests.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyCard/ProxyCard.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/proxies/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/pages/components/NodeMaintenanceModal/NodeMaintenanceModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/Proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/filters-presets.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/FilterPresets/FiltersPresets.js","webpack://@ytsaurus/ui/./src/ui/components/Filter/FilterWithRegExp.tsx","webpack://@ytsaurus/ui/./src/ui/components/TagSelector/TagSelector.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/TagsFilter/TagsFilter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/SetupModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/node-card.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeResources/NodeResources.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeStorage/NodeStorage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node-meta-items.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/Nodes.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/shards.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Name.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/NodeCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Shards.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundlesTotal/NodeBundlesTotal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryDetailsTable/NodeMemoryDetailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundles/NodeBundles.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTables/NodeTables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMeta/NodeMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeAlerts/NodeAlerts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeLocations/NodeLocations.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlotsTab/NodeTabletSlotsTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeUnrecognizedOptions/NodeUnrecognizedOptions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodePage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/Components.js","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/ComponentsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Placeholder.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/navigation.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/utils.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/tablet-cells/index.js"],"sourcesContent":["import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {sortableContainer, sortableElement, sortableHandle} from 'react-sortable-hoc';\nimport ReactList from 'react-list';\n\nimport each_ from 'lodash/each';\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\nimport reduce_ from 'lodash/reduce';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../components/Icon/Icon';\n\nimport {renderText} from '../../components/templates/utils';\n\nimport './ColumnSelector.scss';\nimport Button from '../Button/Button';\n\nconst b = cn('column-selector');\n\nexport function makeItemsCopy(items) {\n return map_(items, (item) => {\n return {...item};\n });\n}\n\nconst DragHandle = sortableHandle(() => (\n <div className={b('drag-handle')}>\n <Icon face=\"solid\" awesome=\"list\" />\n </div>\n));\n\nconst SortableItem = sortableElement(\n ({\n item,\n isSortable,\n isSelectable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n withClickableHandler,\n }) => {\n const active = !isDisabled && !item.disabled;\n const className = b('list-item', {\n selected: item.checked && active && 'yes',\n selectable: isSelectable && active && 'yes',\n disabled: !active && 'yes',\n });\n\n return (\n <div className={className}>\n {isSortable && item.checked && <DragHandle />}\n <div className={b('list-item-name')}>\n {item.keyColumn && <Icon awesome=\"key\" />}\n {itemRenderer(item)}\n </div>\n {active && withClickableHandler && (\n <span\n className={b('list-item-check')}\n onClick={onCheckBoxChange}\n data-item={item.name}\n >\n <Icon awesome=\"check\" />\n </span>\n )}\n {!active && <Icon className={b('list-item-lock')} awesome=\"lock\" />}\n </div>\n );\n },\n);\n\nconst SortableList = sortableContainer(\n ({\n items,\n isSortable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n isSelectable,\n useStaticSize,\n withClickableHandler = true,\n }) => {\n const renderer = (index, key) => {\n const item = items[index];\n return (\n <SortableItem\n key={key}\n index={index}\n item={item}\n disabled={!isSortable}\n isSortable={isSortable}\n isDisabled={isDisabled}\n isSelectable={isSelectable}\n itemRenderer={itemRenderer}\n onCheckBoxChange={onCheckBoxChange}\n withClickableHandler={withClickableHandler}\n />\n );\n };\n // Use 'simple' placement for draggable items because 'uniform' produces bugs when items are dragged outside the viewport\n const type = isSortable ? 'simple' : 'uniform';\n const mods = {'static-size': useStaticSize};\n\n return (\n <div className={b('list', mods)}>\n <ReactList itemRenderer={renderer} length={items.length} type={type} />\n </div>\n );\n },\n);\n\nexport default class ColumnSelector extends Component {\n static itemsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n keyColumn: PropTypes.bool,\n caption: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n );\n\n static propTypes = {\n className: PropTypes.string,\n items: ColumnSelector.itemsProps.isRequired,\n showDisabledItems: PropTypes.bool,\n isSortable: PropTypes.bool,\n isSelectable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n showSelectedOnly: PropTypes.bool,\n isHeadless: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.node,\n itemRenderer: PropTypes.func,\n };\n\n static defaultProps = {\n itemRenderer: ({name, caption = name}) => renderText(caption, {asHTML: false}),\n isSortable: false,\n isHeadless: false,\n isSelectable: true,\n isFilterable: true,\n showSelectedOnly: false,\n };\n\n constructor(props) {\n const {items, isHeadless, showSelectedOnly} = props;\n super(props);\n\n const state = {\n showSelectedOnly,\n filter: '',\n };\n if (isHeadless) {\n Object.assign(state, {items: makeItemsCopy(items)});\n }\n this.state = state;\n }\n\n get items() {\n return this.props.isHeadless ? this.state.items : this.props.items;\n }\n\n get buttonALLisDisabled() {\n return this.items.every((item) => item.checked);\n }\n\n get buttonNONEisDisabled() {\n return !this.items.some((item) => item.checked);\n }\n\n /*\n Takes items from the proper place (props or state), modifies them and writes them back at the same place.\n */\n withActualItems(func) {\n const {onChange} = this.props;\n // headless widget keeps its state to itself, but calls onChange as a way of notifying caller about changes\n if (this.props.isHeadless) {\n const {items} = func({items: this.state.items || []});\n this.setState({items}, () => {\n onChange({items: [...this.state.items]});\n });\n } else {\n // widget inside modal passes all changes to the modal component where they are put into state\n const {items} = func({items: this.props.items || []});\n onChange({items: [...items]});\n }\n }\n\n toggleItem = (name) => {\n this.withActualItems(({items}) => {\n items = [...items];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, checked: !changedItem.checked};\n\n return {items};\n });\n };\n\n selectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (!item.checked && !item.disabled) {\n items[index] = {...item, checked: true};\n }\n });\n\n return {items};\n });\n };\n\n deselectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (item.checked && !item.disabled) {\n items[index] = {...item, checked: false};\n }\n });\n\n return {items};\n });\n };\n\n invertItems = () => {\n this.withActualItems(({items}) => {\n const visibleItems = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleItems[item.name]) {\n return;\n }\n if (!item.disabled) {\n items[index] = {...item, checked: !item.checked};\n }\n });\n\n return {items};\n });\n };\n\n _handleCheckBoxChange = (event) => {\n this.toggleItem(event.currentTarget.getAttribute('data-item'));\n };\n\n _handleSortEnd = ({oldIndex, newIndex}) => {\n if (oldIndex === newIndex) {\n return;\n }\n\n this.withActualItems(({items}) => {\n items = [...items];\n\n const {items: visibleItems} = this.getVisibleItems();\n const fromIndex = items.findIndex((item) => item.name === visibleItems[oldIndex].name);\n const toIndex = items.findIndex((item) => item.name === visibleItems[newIndex].name);\n\n const [removed] = items.splice(fromIndex, 1);\n items.splice(toIndex, 0, removed);\n\n return {items};\n });\n };\n\n _handleDefaultSort = () => {\n this.withActualItems(({items}) => {\n return {\n items: items.sort((a, b) => {\n const aCaption = a.caption || a.name;\n const bCaption = b.caption || b.name;\n\n return aCaption.localeCompare(bCaption);\n }),\n };\n });\n };\n\n _toggleShownItems = () => {\n this.setState((prevState) => ({\n showSelectedOnly: !prevState.showSelectedOnly,\n }));\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n renderSearchBox() {\n return (\n <TextInput\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n value={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n renderControls() {\n const {isFilterable, isSelectable, isSortable, isHeadless} = this.props;\n const btnProps = {\n size: 'm',\n className: b('controls-item'),\n };\n\n return (\n <div className={b('controls')}>\n {isFilterable && this.renderSearchBox()}\n {isHeadless && (\n <Button {...btnProps} onClick={this._toggleShownItems}>\n Selected \n <span className=\"elements-secondary-text\">\n {filter_(this.items, (item) => item.checked).length}\n </span>\n </Button>\n )}\n {isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonALLisDisabled}\n onClick={this.selectAllItems}\n >\n Add all\n </Button>\n )}\n {isSelectable && (\n <Button {...btnProps} onClick={this.invertItems}>\n Invert list\n </Button>\n )}\n {!isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonNONEisDisabled}\n onClick={this.deselectAllItems}\n >\n Remove all\n </Button>\n )}\n {isSortable && (\n <Button {...btnProps} onClick={this._handleDefaultSort}>\n Default sort\n </Button>\n )}\n </div>\n );\n }\n\n filterItemsByName(items) {\n const re = new RegExp(escapeRegExp_(this.state.filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n filterItems(items) {\n const {showDisabledItems} = this.props;\n items = showDisabledItems ? items : filter_(items, (item) => !item.disabled);\n\n const visibleItems = this.filterItemsByName(items);\n return this.state.showSelectedOnly\n ? filter_(visibleItems, (item) => item.checked)\n : visibleItems;\n }\n\n getVisibleItems() {\n const toSplit = this.filterItems(this.items);\n const [keyItems, items] = partition_(toSplit, (item) => item.keyColumn);\n return {items, keyItems};\n }\n\n getVisibleItemsMap() {\n return reduce_(\n this.filterItems(this.items),\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n );\n }\n\n renderList() {\n const {isSortable, isSelectable, itemRenderer, children, isHeadless} = this.props;\n\n const {items, keyItems} = this.getVisibleItems();\n\n const className = b(\n 'content',\n {\n headless: isHeadless ? undefined : 'no',\n empty: items.length ? undefined : 'yes',\n },\n 'pretty-scroll',\n );\n\n return (\n <div className={className}>\n {keyItems.length > 0 && (\n <React.Fragment>\n <SortableList\n lockAxis=\"y\"\n isDisabled={false}\n isSortable={false}\n isSelectable={isSelectable}\n items={keyItems}\n itemRenderer={itemRenderer}\n helperClass={b('list-item', {helper: 'yes'})}\n onCheckBoxChange={this._handleCheckBoxChange}\n />\n {items.length > 0 && <div className={b('separator')} />}\n </React.Fragment>\n )}\n {items.length > 0 && (\n <SortableList\n items={items}\n isSelectable={isSelectable}\n isSortable={isSortable}\n itemRenderer={itemRenderer}\n lockAxis=\"y\"\n helperClass={b('list-item', {helper: 'yes'})}\n onSortEnd={this._handleSortEnd}\n onCheckBoxChange={this._handleCheckBoxChange}\n useDragHandle\n />\n )}\n {!keyItems.length && !items.length && children}\n </div>\n );\n }\n\n render() {\n const {isHeadless, isSortable, className} = this.props;\n const classNames = b(\n {\n headless: isHeadless ? 'yes' : undefined,\n sortable: isSortable ? undefined : 'no',\n },\n className,\n );\n return (\n <div className={classNames}>\n {this.renderControls()}\n {this.renderList()}\n </div>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport templates from '../templates/templates';\n\nimport {Popup} from '@gravity-ui/uikit';\n\nconst block = cn('elements-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions}\n onClose={this.close}\n open={true}\n anchorRef={this.anchor}\n hasArrow\n {...popup}\n >\n {this.renderTemplate()}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt.cancel();\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport './TableInfo.scss';\n\nconst block = cn('table-info');\n\ntype TableInfoProps = {\n showingItems: number;\n totalItems: number;\n};\n\nexport default function TableInfo({showingItems, totalItems}: TableInfoProps) {\n return (\n <div className={block('info')}>\n <p className={block('showing')}>\n <span className={block('info-text')}>Showing</span>\n <span className={block('info-count')}>{showingItems}</span>\n </p>\n\n <p className={block('total')}>\n <span className={block('info-text')}>Total</span>\n <span className={block('info-count')}>{totalItems}</span>\n </p>\n </div>\n );\n}\n\nTableInfo.propTypes = {\n showingItems: PropTypes.number.isRequired,\n totalItems: PropTypes.number.isRequired,\n};\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {\n CHANGE_VERSION_SUMMARY_PARTIAL,\n DISCOVER_VERSIONS,\n} from '../../../../constants/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../store/reducers';\nimport {\n SummaryItem,\n VersionHostInfo,\n VersionSummaryItem,\n VersionsAction,\n} from '../../../../store/reducers/components/versions/versions_v2';\nimport {SortState} from '../../../../types';\n\nexport interface DiscoverVersionsData {\n details: Array<VersionHostInfo>;\n summary: Record<'total' | 'error' | string, VersionSummary>;\n}\n\ntype VersionSummary = Record<string, SummaryItem>;\n\ntype NodesThunkAction<T = void> = ThunkAction<Promise<T>, RootState, unknown, any>;\n\nexport function getVersions(): NodesThunkAction<DiscoverVersionsData> {\n return (dispatch, getState) => {\n dispatch({type: DISCOVER_VERSIONS.REQUEST});\n\n const cluster = getCluster(getState());\n\n return axios\n .get<DiscoverVersionsData>(`/api/yt-proxy/${cluster}/internal-discover_versions`)\n .then(({data}) => {\n const summary = prepareSummary(data.summary);\n const details = prepareDetails(data.details);\n\n dispatch({\n type: DISCOVER_VERSIONS.SUCCESS,\n data: {summary, details},\n });\n return data;\n })\n .catch((error) => {\n dispatch({\n type: DISCOVER_VERSIONS.FAILURE,\n data: {error},\n });\n return Promise.reject(error);\n });\n };\n}\n\nexport function changeHostFilter(hostFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {hostFilter},\n };\n}\n\nexport function changeVersionFilter(versionFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {versionFilter},\n };\n}\n\nexport function changeTypeFilter(typeFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {typeFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {stateFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter: 'all' | boolean): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {bannedFilter: bannedFilter || false},\n };\n}\n\nfunction prepareGroup(group: VersionSummary, version: string) {\n const res = reduce_(\n group,\n (acc, value, type) => {\n const {total, banned, offline} = value;\n\n const k = type;\n acc[k] = total;\n acc.banned += banned;\n acc.offline += offline;\n acc.online += total - offline;\n\n return acc;\n },\n {banned: 0, offline: 0, online: 0, version} as VersionSummaryItem,\n );\n\n return {\n ...res,\n banned: res.banned || undefined,\n offline: res.offline || undefined,\n online: res.online || undefined,\n };\n}\n\nfunction prepareSummary({total, error, ...versions}: DiscoverVersionsData['summary']) {\n const preparedTotal = prepareGroup(total, 'total');\n const preparedError = error && prepareGroup(error, 'error');\n const preparedVersions = map_(versions, prepareGroup);\n\n return [...preparedVersions, preparedError, preparedTotal];\n}\n\nfunction prepareDetails(details: DiscoverVersionsData['details']) {\n return map_(details, (item) => {\n const calculatedState = item.offline ? 'offline' : 'online';\n item.state = item.state ? item.state : calculatedState;\n if (item.error) {\n item.state = 'error';\n }\n\n item.banned = Boolean(item.banned);\n return item;\n });\n}\n\nexport function changeVersionStateTypeFilters(data: {\n version?: string;\n state?: string;\n type?: string;\n banned?: boolean;\n}) {\n const {version, state, type, banned} = data;\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {\n stateFilter: state || 'all',\n versionFilter: version || 'all',\n typeFilter: type || 'all',\n bannedFilter: banned === undefined ? 'all' : banned,\n },\n };\n}\n\nexport function setVersionsSummarySortState(summarySortState: SortState) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {summarySortState},\n };\n}\n\nexport function changeCheckedHideOffline(checkedHideOffline: boolean) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {checkedHideOffline},\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport indexOf_ from 'lodash/indexOf';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './VersionCell.scss';\nimport {useDispatch} from 'react-redux';\nimport {changeVersionStateTypeFilters} from '../../../../store/actions/components/versions/versions_v2';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../../../config/ui-settings';\n\nconst block = cn('version-cell');\n\nconst {reHashFromNodeVersion} = uiSettings;\n\nfunction shortHash(version: string) {\n const tildaIndex = indexOf_(version, '~');\n if (-1 === tildaIndex) {\n return version;\n }\n\n return version.substr(0, tildaIndex + 1) + version.substr(tildaIndex + 1, 16);\n}\n\ninterface Props {\n version: string;\n onClick: (version: string) => void;\n}\n\nfunction VersionCell(props: Props) {\n const {version, onClick} = props;\n const visibleVersion = shortHash(version);\n\n const handleClick = React.useCallback(() => {\n onClick(version);\n }, [onClick, version]);\n\n const versionContent =\n visibleVersion?.length === version?.length ? (\n version\n ) : (\n <Tooltip content={version}>\n <span className={block('tooltip')}>{visibleVersion + '\\u2026'} </span>\n </Tooltip>\n );\n\n const hashPart = React.useMemo(() => {\n if (!version || !reHashFromNodeVersion) {\n return undefined;\n }\n\n try {\n const res = new RegExp(reHashFromNodeVersion).exec(version);\n return res?.groups?.hash;\n } catch (e) {\n return undefined;\n }\n }, [version]);\n\n return (\n <React.Fragment>\n <ClickableText className={block('text')} color={'primary'} onClick={handleClick}>\n {versionContent}\n </ClickableText>\n <ClipboardButton\n text={version}\n shiftText={hashPart}\n view=\"flat-secondary\"\n size=\"s\"\n hoverContent={\n <div>\n Copy version\n {Boolean(hashPart) && (\n <div>\n <Text color=\"secondary\">Hold SHIFT-key to copy hash</Text>\n </div>\n )}\n </div>\n }\n />\n </React.Fragment>\n );\n}\n\nexport function VersionCellWithAction(props: Omit<Props, 'onClick'>) {\n const {version} = props;\n const dispatch = useDispatch();\n\n const onClick = React.useCallback(() => {\n dispatch(changeVersionStateTypeFilters({version}));\n }, [version]);\n\n return <VersionCell version={version} onClick={onClick} />;\n}\n","import {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {\n changeHostFilter,\n changeTypeFilter,\n changeVersionFilter,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {getWindowStore} from '../../../../store/window-store';\nimport {showErrorPopup} from '../../../../utils/utils';\n\nexport const tableProps = {\n css: 'components-versions',\n theme: 'light',\n striped: false,\n cssHover: true,\n templates: {\n key: 'components/versions',\n data: {\n showError: showErrorPopup,\n handleItemClick(item, column) {\n switch (column) {\n case 'address':\n getWindowStore().dispatch(changeHostFilter(item));\n break;\n case 'version':\n getWindowStore().dispatch(changeVersionFilter([item]));\n break;\n case 'type':\n getWindowStore().dispatch(changeTypeFilter([item]));\n break;\n }\n },\n },\n },\n columns: {\n items: {\n address: {\n get(item) {\n return item.address.match(/[^/]+(?=:)/g)[0];\n },\n align: 'left',\n sort: true,\n caption: 'Host',\n },\n version: {\n get(item) {\n return item.version;\n },\n align: 'left',\n sort: true,\n caption: 'Version',\n },\n state: {\n get(item) {\n return item.state;\n },\n align: 'left',\n sort: true,\n caption: 'State',\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 },\n type: {\n get(item) {\n return item.type;\n },\n align: 'left',\n sort: true,\n caption: 'Type',\n },\n error: {\n get(item) {\n return item.error;\n },\n align: 'center',\n sort: true,\n caption: 'Error',\n },\n start_time: {\n get(item) {\n return item.start_time;\n },\n align: 'right',\n sort: true,\n caption: 'Start time',\n },\n },\n sets: {\n detailed: {\n items: ['address', 'version', 'state', 'banned', 'type', 'error', 'start_time'],\n },\n },\n },\n};\n\nexport const detailsTableProps = {\n ...tableProps,\n tableId: COMPONENTS_VERSIONS_DETAILED_TABLE_ID,\n columns: {\n ...tableProps.columns,\n mode: 'detailed',\n },\n};\n","import filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport reduce_ from 'lodash/reduce';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {detailsTableProps} from '../../../../pages/components/tabs/Versions/tables_v2';\n\nimport {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {RootState} from '../../../../store/reducers';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\n\nconst aggregateItems = (proxies: Array<VersionHostInfo>, key: keyof VersionHostInfo) => {\n const items = reduce_(\n proxies,\n (acc, item) => {\n const value = item[key];\n if (!acc.has(value)) {\n acc.set(value, 1);\n } else {\n const count = acc.get(value);\n acc.set(value, count + 1);\n }\n return acc;\n },\n new Map(),\n );\n\n return [...items.entries()].map(([item, count]) => {\n return {\n text: hammer.format['ReadableField'](String(item)),\n value: item,\n count,\n };\n });\n};\n\nfunction getSelectItems(\n allItems: ReturnType<typeof aggregateItems>,\n visibleItems: ReturnType<typeof aggregateItems>,\n hostFilter: string,\n otherFilters: Partial<ReturnType<typeof getFilters>>,\n) {\n const isAllSelected = isEmpty_(otherFilters);\n\n let items = allItems;\n\n if (hostFilter !== '' || !isAllSelected) {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n}\n\nconst getDetails = (state: RootState) => state.components.versionsV2.details;\n\nconst getHostFilter = (state: RootState) => state.components.versionsV2.hostFilter;\nconst getVersionFilter = (state: RootState) => state.components.versionsV2.versionFilter;\nconst getTypeFilter = (state: RootState) => state.components.versionsV2.typeFilter;\nconst getStateFilter = (state: RootState) => state.components.versionsV2.stateFilter;\nconst getBannedFilter = (state: RootState) => state.components.versionsV2.bannedFilter;\n\nconst getDetailsSortState = (state: RootState) =>\n state.tables[COMPONENTS_VERSIONS_DETAILED_TABLE_ID];\n\nconst getFilteredByHost = createSelector([getDetails, getHostFilter], (details, hostFilter) => {\n if (!hostFilter) {\n return details;\n }\n return filter_(details, ({address}) => address?.toLowerCase().includes(hostFilter));\n});\n\nconst getFilters = createSelector(\n [getVersionFilter, getTypeFilter, getStateFilter, getBannedFilter],\n (version, type, state, banned) => {\n return reduce_(\n {\n version,\n type,\n state,\n banned,\n },\n (acc, value, k) => {\n if (value !== 'all') {\n const key = k as keyof typeof acc;\n acc[key] = value as any;\n }\n return acc;\n },\n {} as Partial<{\n version: typeof version;\n type: typeof version;\n state: typeof state;\n banned: typeof banned;\n }>,\n );\n },\n);\n\nconst getFiltersSkipVersion = createSelector([getFilters], (filters) => {\n const {version: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipType = createSelector([getFilters], (filters) => {\n const {type: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipState = createSelector([getFilters], (filters) => {\n const {state: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipBanned = createSelector([getFilters], (filters) => {\n const {banned: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFilteredDetails = createSelector([getFilteredByHost, getFilters], (data, filters) => {\n return filter_(data, filters) as Array<VersionHostInfo>;\n});\n\nexport const getVisibleDetails = createSelector(\n [getFilteredDetails, getDetailsSortState],\n (details, sortState): typeof details =>\n hammer.utils.sort(details, sortState, detailsTableProps.columns.items),\n);\n\nconst getAllVersions = createSelector([getDetails], (versions) =>\n aggregateItems(versions, 'version'),\n);\nconst getAllTypes = createSelector([getDetails], (versions) => aggregateItems(versions, 'type'));\nconst getAllStates = createSelector([getDetails], (versions) => aggregateItems(versions, 'state'));\n\nconst getAllBanned = createSelector([getDetails], (version) => aggregateItems(version, 'banned'));\n\nconst getVisibleVersions = createSelector(\n [getFilteredByHost, getFiltersSkipVersion],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'version');\n },\n);\nconst getVisibleTypes = createSelector([getFilteredByHost, getFiltersSkipType], (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'type');\n});\nconst getVisibleStates = createSelector(\n [getFilteredByHost, getFiltersSkipState],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'state');\n },\n);\n\nconst getVisibleBanned = createSelector(\n [getFilteredByHost, getFiltersSkipBanned],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'banned');\n },\n);\n\nexport const getVersionSelectItems = createSelector(\n [getAllVersions, getVisibleVersions, getHostFilter, getFiltersSkipVersion],\n getSelectItems,\n);\nexport const getTypeSelectItems = createSelector(\n [getAllTypes, getVisibleTypes, getHostFilter, getFiltersSkipType],\n getSelectItems,\n);\nexport const getStatesSelectItems = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getFiltersSkipState],\n getSelectItems,\n);\n\nexport const getBannedSelectItems = createSelector(\n [getAllBanned, getVisibleBanned, getHostFilter, getFiltersSkipBanned],\n getSelectItems,\n);\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {FIX_MY_TYPE, SortState} from '../../../../types';\nimport {sortArrayBySortState} from '../../../../utils/sort-helpers';\nimport {\n VersionSummaryItem,\n VersionSummaryRow,\n} from '../../../../store/reducers/components/versions/versions_v2';\n\nexport const getSummarySortState = (\n state: RootState,\n): undefined | SortState<keyof VersionSummaryItem> =>\n (state.components.versionsV2 as FIX_MY_TYPE).summarySortState;\n\nconst getSummary = (state: RootState): Array<VersionSummaryItem> =>\n state.components.versionsV2.summary;\n\nexport const getHideOfflineValue = (state: RootState): boolean =>\n state.components.versionsV2.checkedHideOffline;\n\nfunction getTotalElementOfSummary(summary: ReturnType<typeof getSummary>) {\n return summary[summary.length - 1];\n}\n\nexport const getVisibleSummaryItems = createSelector(\n [getSummary, getHideOfflineValue],\n (summary = [], checkedHideOffline) => {\n let items = summary;\n if (checkedHideOffline) {\n items = items.filter((item) => item && item.online !== undefined);\n }\n return items;\n },\n);\n\nexport const getVersions = createSelector([getVisibleSummaryItems], (summary = []) => {\n const versions = [];\n for (const item of summary) {\n if (item) {\n versions.push({\n type: item.version,\n name: item.version,\n });\n }\n }\n return versions;\n});\n\nexport const getVersionsSummaryData = createSelector(\n [getSummary, getSummarySortState, getHideOfflineValue],\n (summary = [], sortState, checkedHideOffline) => {\n const error = summary[summary.length - 2];\n const total = getTotalElementOfSummary(summary);\n let items = summary.slice(0, summary.length - 2);\n\n if (checkedHideOffline) {\n items = items.filter((item) => item.online !== undefined);\n }\n\n items = sortArrayBySortState(items, sortState);\n\n if (error) {\n items.splice(0, 0, error);\n }\n if (total) {\n items.push(total);\n }\n\n const components = new Set<string>();\n for (const item of items) {\n for (const key in item) {\n if (key) components.add(key);\n }\n }\n\n const res: VersionSummaryRow[] = [];\n // iterating over every type of components\n for (const component of Array.from(components)) {\n if (component === 'version') continue;\n // initializing table row object to avoid type errors\n const row: VersionSummaryRow = {type: component, total: 0};\n // iterating over array of objects with attribute 'version'\n for (const item of items) {\n // apply version of component to the some type in resulting object\n // type item['version']: item[component] -> amount of components\n // example: res = {banned: {'2.12.123.1': 3, ...}}\n row[item['version']] = item[component];\n }\n // attribute 'type' will be the name of the row\n row['type'] = component;\n res.push(row);\n }\n\n return res;\n },\n);\n","import React, {CSSProperties} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, Checkbox, Flex, Select} from '@gravity-ui/uikit';\n\nimport {RootState} from '../../../../store/reducers';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport * as DT100 from '@gravity-ui/react-data-table';\nimport DataTable from '@gravity-ui/react-data-table';\nimport {\n getHideOfflineValue,\n getSummarySortState,\n getVersions,\n getVersionsSummaryData,\n} from '../../../../store/selectors/components/versions/versions_v2-ts';\n\nimport hammer from '../../../../common/hammer';\n\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport {\n changeCheckedHideOffline,\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {VersionSummaryRow} from '../../../../store/reducers/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {formatByParams} from '../../../../utils/format';\nimport UIFactory from '../../../../UIFactory';\n\nimport './VersionSummary.scss';\n\nconst block = cn('versions-summary');\n\ntype Props = ConnectedProps<typeof connector>;\n\ntype State = Readonly<{\n showAll: boolean;\n currentVersions: string[];\n sortOrder?: DT100.SortOrder | DT100.SortOrder[];\n}>;\n\ntype RenderData = {row: VersionSummaryRow; index: number};\n\nconst SETTINGS: DT100.Settings = {\n displayIndices: false,\n};\n\nconst DEFAULT_VERSIONS = ['error', 'total'];\nconst BASE_COMPONENTS = ['online', 'offline', 'banned'];\n\nfunction isSpecialRow(version: string) {\n return DEFAULT_VERSIONS.includes(version);\n}\n\nclass VersionsSummary extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n showAll: true,\n currentVersions: [],\n };\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const {currentVersions, showAll} = this.state;\n const {visibleColumns, checkedHideOffline} = this.props;\n\n const visibleColumnsNames = visibleColumns.map((col) => col.name);\n const onlineVersions = prevState.currentVersions.filter((version) =>\n visibleColumnsNames.includes(version),\n );\n\n if (!currentVersions.length && visibleColumns.length && showAll) {\n this.setState((state) => ({...state, currentVersions: visibleColumnsNames}));\n }\n\n const hideOfflineUpdated = prevProps.checkedHideOffline !== checkedHideOffline;\n if (hideOfflineUpdated && checkedHideOffline) {\n this.setState((state) => ({...state, currentVersions: onlineVersions}));\n }\n // if user unchecked checkbox while all columns was selected\n if (hideOfflineUpdated && !checkedHideOffline && showAll) {\n this.setState((state) => ({...state, currentVersions: visibleColumnsNames}));\n }\n }\n\n renderType = (data: RenderData) => {\n const type = data.row.type;\n const content = hammer.format['Readable'](type);\n\n return <span className={block('value')}>{content}</span>;\n };\n\n renderNumber = (key: string, rowData: RenderData) => {\n const {row} = rowData;\n const value = row[key];\n const content = !value ? hammer.format.NO_VALUE : hammer.format['Number'](value);\n const onClick = !value\n ? undefined\n : () => {\n this.onClick(key, rowData);\n };\n return (\n <span\n className={block('value', {clickable: Boolean(onClick)})}\n onClick={onClick}\n title={onClick ? 'Click to set corresponding filter values' : undefined}\n data-qa=\"component-amount\"\n >\n {content}\n </span>\n );\n };\n\n makeColumnInfo({type, name}: {type: string; name: string}) {\n return {\n name: name,\n title: name,\n sortable: false,\n render: this.renderNumber.bind(this, type),\n align: 'right' as const,\n header: this.renderHeader(type, name),\n };\n }\n\n renderHeader(key: string, name: string) {\n const {sortState} = this.props;\n const {column, order} = sortState || {};\n\n return (\n <ColumnHeader<string>\n column={name}\n title={name}\n shortTitle={name.split('-')[0]}\n onSort={this.handleOnSort}\n order={key === column ? order : ''}\n />\n );\n }\n\n renderSelectFilter = () => {\n return (\n <Flex direction=\"row\">\n <Button view=\"flat\" className={block('filter-button')} onClick={this.handleShowAll}>\n Show all\n </Button>\n <Button view=\"flat\" className={block('filter-button')} onClick={this.handleReset}>\n Reset\n </Button>\n </Flex>\n );\n };\n\n handleOnSort = (column: string, order: string) => {\n const {setVersionsSummarySortState} = this.props;\n const {currentVersions, sortOrder} = this.state;\n // unordered case\n if (sortOrder && !Array.isArray(sortOrder) && sortOrder.order === DataTable.DESCENDING) {\n this.setState((state) => ({...state, sortOrder: [], currentVersions: currentVersions}));\n setVersionsSummarySortState({});\n } else if (order === 'asc') {\n this.setState((state) => ({\n ...state,\n sortOrder: {columnId: column, order: DataTable.ASCENDING},\n }));\n setVersionsSummarySortState({column, order});\n } else if (order === 'desc') {\n this.setState((state) => ({\n ...state,\n sortOrder: {columnId: column, order: DataTable.DESCENDING},\n }));\n setVersionsSummarySortState({column, order});\n }\n };\n\n handleShowAll = () => {\n const {visibleColumns} = this.props;\n const visibleColumnsNames = visibleColumns.map((col) => col.name);\n this.setState((state) => ({...state, showAll: true, currentVersions: visibleColumnsNames}));\n };\n\n handleReset = () => {\n this.setState((state) => ({...state, showAll: false, currentVersions: DEFAULT_VERSIONS}));\n };\n\n handleHideOffline = (value: boolean) => {\n const {changeCheckedHideOffline} = this.props;\n changeCheckedHideOffline(value);\n };\n\n handleSelectUpdate = (value: string[]) => {\n // move default versions to the end\n const prepareValue = (value: string[]) => {\n return value\n .filter((item) => !DEFAULT_VERSIONS.includes(item))\n .concat(DEFAULT_VERSIONS);\n };\n this.setState((state) => ({\n ...state,\n showAll: false,\n currentVersions: prepareValue(value),\n }));\n };\n\n prepareSelectOptions = () => {\n const {visibleColumns} = this.props;\n const res = [];\n if (visibleColumns) {\n for (const column of visibleColumns) {\n if (DEFAULT_VERSIONS.includes(column.type)) continue;\n res.push({value: column.type, content: column.type});\n }\n }\n return res;\n };\n\n /*\n * If the user has not applied any sorting\n * for the first column -> sort the types\n * and append the base components to the end.\n */\n prepareItems = (data: VersionSummaryRow[]) => {\n const {sortOrder} = this.state;\n if (!sortOrder) {\n let newData: VersionSummaryRow[] = [];\n if (!sortOrder && data && data.length) {\n newData = [...data]\n .filter((item) => !BASE_COMPONENTS.includes(item.type))\n .sort((item1, item2) => item1.type.localeCompare(item2.type));\n\n BASE_COMPONENTS.forEach((type) => {\n const item = data.find((item) => item.type === type);\n if (item) newData.push(item);\n });\n }\n return newData;\n }\n // default components order from backennd -> banned, offline, online, ...\n // we need -> ..., online, offline, banned\n return data.reverse();\n };\n\n render() {\n const {currentVersions, sortOrder} = this.state;\n const {items, loading, loaded, cluster, checkedHideOffline} = this.props;\n const monitoringLink = UIFactory.getVersionMonitoringLink(cluster);\n\n const columns = [\n {\n name: 'type',\n render: this.renderType,\n sortable: false,\n header: this.renderHeader('type', 'Components'),\n customStyle: () =>\n ({\n position: 'sticky',\n left: 0,\n backgroundColor: 'var(--g-color-base-background)',\n zIndex: 1,\n boxShadow: 'inset -1px 0 var(--dark-divider)',\n width: 'fit-content',\n }) as CSSProperties,\n },\n ...currentVersions.map((column) => this.makeColumnInfo({type: column, name: column})),\n ];\n\n return (\n <div className={block()}>\n <div className={block('header-actions')}>\n <Checkbox\n title={'Hide offline'}\n content={'Hide offline'}\n defaultChecked={checkedHideOffline}\n onUpdate={this.handleHideOffline}\n />\n <Select\n className={block('versions-select')}\n options={this.prepareSelectOptions()}\n onUpdate={this.handleSelectUpdate}\n filterable\n // filter out default versions to prevent them from appearing in Select\n value={currentVersions.filter(\n (version) => !DEFAULT_VERSIONS.includes(version),\n )}\n renderFilter={this.renderSelectFilter}\n placeholder=\"Versions\"\n multiple\n />\n {monitoringLink && (\n <Link\n url={formatByParams(monitoringLink.urlTemplate, {ytCluster: cluster})}\n target=\"_blank\"\n className={block('monitoring-link')}\n >\n {monitoringLink.title || 'Monitoring'} <Icon awesome=\"external-link\" />\n </Link>\n )}\n </div>\n <DataTableYT\n className={block('table')}\n loaded={loaded}\n loading={loading}\n data={this.prepareItems(items)}\n columns={columns}\n theme={'versions'}\n settings={SETTINGS}\n sortOrder={sortOrder}\n />\n </div>\n );\n }\n\n onClick = (key: string, data: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n const {row} = data;\n const isSpecial = isSpecialRow(key);\n const version = !isSpecial ? key : undefined;\n const type: string | undefined = row.type;\n\n const state = key === 'error' ? 'error' : undefined;\n\n if (type === 'online' || type === 'offline') {\n changeVersionStateTypeFilters({version, state: state || type});\n } else if (type === 'banned') {\n changeVersionStateTypeFilters({version, banned: true});\n } else {\n changeVersionStateTypeFilters({version, type, state});\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded} = state.components.versionsV2;\n const cluster = getCluster(state);\n\n const sortState = getSummarySortState(state);\n\n const visibleColumns = getVersions(state);\n const items = getVersionsSummaryData(state);\n\n return {\n loading: loading as boolean,\n loaded: loaded as boolean,\n cluster,\n items,\n sortState,\n checkedHideOffline: getHideOfflineValue(state),\n visibleColumns,\n };\n};\n\nconst mapDispatchToProps = {\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n changeCheckedHideOffline,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsSummary);\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React from 'react';\nimport {ConnectedProps, connect, useDispatch} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport format from '../../../../common/hammer/format';\n\nimport {VersionCellWithAction} from '../../../../pages/components/tabs/Versions/VersionCell';\n\nimport {\n getBannedSelectItems,\n getStatesSelectItems,\n getTypeSelectItems,\n getVersionSelectItems,\n getVisibleDetails,\n} from '../../../../store/selectors/components/versions/versions_v2';\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeTypeFilter,\n changeVersionFilter,\n getVersions,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {DEBOUNCE_TIME} from '../../../../constants/components/versions/versions_v2';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport VersionsSummary from './VersionSummary';\nimport {RootState} from '../../../../store/reducers';\n\nimport templates, {ColumnAsTime, printColumnAsError} from '../../../../components/templates/utils';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\nimport {ClickableId, NodeColumnBanned, NodeColumnState} from '../NodeColumns';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport {detailsTableProps} from './tables_v2';\n\nimport './Versions.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst b = cn('components-versions');\n\nfunction VersionsV2Updater() {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(getVersions());\n }, [dispatch]);\n\n useUpdater(updateFn);\n\n return null;\n}\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass VersionsV2 extends React.Component<ReduxProps> {\n renderFilters() {\n const {\n hostFilter,\n changeHostFilter,\n versionFilter,\n versionSelectItems,\n changeVersionFilter,\n typeFilter,\n typeSelectItems,\n changeTypeFilter,\n stateFilter,\n stateSelectItems,\n changeStateFilter,\n bannedFilter,\n } = this.props;\n\n return (\n <div className={b('filters')}>\n <div className={b('filter', {address: true})}>\n <Filter\n hasClear\n size=\"m\"\n type=\"text\"\n key={hostFilter}\n value={hostFilter}\n debounce={DEBOUNCE_TIME}\n onChange={changeHostFilter}\n placeholder=\"Filter host...\"\n />\n </div>\n\n <div className={b('filter', {version: true})}>\n <Select\n value={[versionFilter]}\n items={versionSelectItems}\n onUpdate={(vals) => changeVersionFilter(vals[0])}\n label=\"Version:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {type: true})}>\n <Select\n value={[typeFilter]}\n items={typeSelectItems}\n onUpdate={(vals) => changeTypeFilter(vals[0])}\n label=\"Type:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {state: true})}>\n <Select\n value={[stateFilter]}\n items={stateSelectItems}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {banned: true})}>\n <Select\n value={[String(bannedFilter)]}\n items={this.getBannedItems()}\n onUpdate={(vals) => this.onBannedChange(vals[0])}\n label=\"Banned:\"\n width=\"max\"\n hideFilter\n />\n </div>\n </div>\n );\n }\n\n getBannedItems() {\n const {bannedSelectItems} = this.props;\n return bannedSelectItems.map(({value, ...rest}) => {\n return {\n value: String(value),\n ...rest,\n };\n });\n }\n\n onBannedChange = (value: string) => {\n const {changeBannedFilter} = this.props;\n const v =\n {\n false: false,\n true: true,\n all: 'all' as const,\n }[value] ?? 'all';\n changeBannedFilter(v);\n };\n\n renderOverview() {\n const {showingItems, totalItems} = this.props;\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={b('overview', {sticky: isSticky})}>\n {this.renderFilters()}\n\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n )}\n </Sticky>\n );\n }\n\n getDetailsTemplates() {\n const {changeVersionFilter, changeHostFilter, changeTypeFilter} = this.props;\n\n const res: Record<string, (item: VersionHostInfo) => React.ReactNode> = {\n start_time: (item) => <ColumnAsTime value={item.start_time} />,\n type: (item) => (\n <ClickableId\n text={item.type}\n onClick={() => changeTypeFilter(item.type)}\n format={format.ReadableField}\n />\n ),\n error: (item) => printColumnAsError(item.error),\n address: (item) => {\n return (\n <Host\n address={item.address}\n onClick={() => changeHostFilter(item.address)}\n useText\n />\n );\n },\n state: (item) => <NodeColumnState state={item.state} />,\n banned: (item) => <NodeColumnBanned banned={item.banned} />,\n decommissioned: templates.get('components').decommissioned,\n full: templates.get('components').full,\n alerts: templates.get('components').alerts,\n version(item) {\n const version = item.version;\n const versionIsError = version === 'error';\n const versionIsTotal = version === 'total';\n const handleClick = () => changeVersionFilter(version);\n\n if (versionIsError || versionIsTotal) {\n return (\n <ClickableText\n color=\"primary\"\n onClick={handleClick}\n className={cn('elements-table')(\n `cell_type`,\n {version: version === 'error' ? 'error' : undefined},\n 'elements-monospace elements-ellipsis',\n )}\n >\n {versionIsError && <Icon awesome=\"exclamation-triangle\" />}\n {format.FirstUppercase(version)}\n </ClickableText>\n );\n } else {\n return <VersionCellWithAction version={version} />;\n }\n },\n };\n return res;\n }\n\n render() {\n const {details, loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n const {error, ...rest} = this.props;\n\n return (\n <ErrorBoundary>\n <VersionsV2Updater />\n <LoadDataHandler {...rest} error={Boolean(error)} errorData={error}>\n <div className={b()}>\n <CollapsibleSection\n name=\"Summary\"\n className={b('summary')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n >\n <VersionsSummary />\n </CollapsibleSection>\n\n <StickyContainer>\n <CollapsibleSection\n name=\"Details\"\n className={b('details')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n >\n {this.renderOverview()}\n\n <ElementsTable\n {...detailsTableProps}\n isLoading={initialLoading}\n items={details}\n templates={this.getDetailsTemplates()}\n />\n </CollapsibleSection>\n </StickyContainer>\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n loading,\n loaded,\n error,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n details: allDetails,\n } = state.components.versionsV2;\n\n const details = getVisibleDetails(state);\n const versionSelectItems = getVersionSelectItems(state);\n const typeSelectItems = getTypeSelectItems(state);\n const stateSelectItems = getStatesSelectItems(state);\n const bannedSelectItems = getBannedSelectItems(state);\n\n const showingItems = details.length;\n const totalItems = allDetails.length;\n\n return {\n loading,\n loaded,\n error,\n details,\n showingItems,\n totalItems,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n versionSelectItems,\n typeSelectItems,\n stateSelectItems,\n bannedSelectItems,\n };\n};\n\nconst mapDispatchToProps = {\n changeHostFilter,\n changeVersionFilter,\n changeTypeFilter,\n changeStateFilter,\n changeBannedFilter,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsV2);\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';\n\nimport {PROXY_TYPE} from '../../../../../constants/components/proxies/proxies';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype Props = {\n type: 'http_proxy' | 'rpc_proxy';\n proxy: {host: string; banned: boolean};\n};\n\nclass ProxyActions extends React.Component<ReduxProps & Props> {\n get tooltipProps() {\n const {proxy} = this.props;\n\n return {\n placement: 'bottom',\n content: proxy.banned ? 'Unban proxy' : 'Ban proxy',\n };\n }\n\n get basePath() {\n const {type} = this.props;\n\n return type === PROXY_TYPE.HTTP ? '//sys/http_proxies' : '//sys/rpc_proxies';\n }\n\n handleEditClick = () => {\n const {proxy, type} = this.props;\n this.props.showNodeMaintenance({\n address: proxy.host,\n component: type === PROXY_TYPE.HTTP ? 'http_proxy' : 'rpc_proxy',\n });\n };\n\n render() {\n const {proxy} = this.props;\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={proxy.host}\n path={`${this.basePath}/${proxy.host}`}\n withTooltip\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 mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport default connector(ProxyActions);\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport {MaintenanceRequestInfo} from '../../store/actions/components/node-maintenance-modal';\nimport {SubjectCard} from '../../components/SubjectLink/SubjectLink';\nimport {Bold, WarningLight} from '../../components/Text/Text';\nimport Label from '../../components/Label/Label';\n\nexport type MaintenanceRequestsProps = {\n requests?: Record<string, MaintenanceRequestInfo>;\n};\n\nfunction MaintenanceRequestsImpl({requests = {}}: MaintenanceRequestsProps) {\n return Object.keys(requests).map((key) => {\n const {type, user, comment} = requests[key];\n return (\n <div key={key}>\n <Bold>\n <Label theme=\"danger\" type=\"text\" text={format.ReadableField(type)} />\n </Bold>\n {' by '}\n <Bold>\n <SubjectCard type=\"user\" name={user} />\n {': '}\n <WarningLight>{comment}</WarningLight>\n </Bold>\n </div>\n );\n });\n}\n\nexport const MaintenanceRequests = React.memo(MaintenanceRequestsImpl);\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../../../common/hammer';\n\nimport {MaintenanceRequests} from '../../../../../components/MaintenanceRequests/MaintenanceRequests';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Button from '../../../../../components/Button/Button';\nimport Label from '../../../../../components/Label/Label';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport withSplit from '../../../../../hocs/withSplit';\n\nimport './ProxyCard.scss';\nimport UIFactory from '../../../../../UIFactory';\nimport {NodeColumnRole, NodeColumnState} from '../../NodeColumns';\nimport type {RootState} from '../../../../../store/reducers';\nimport {MaintenanceRequestInfo} from '../../../../../store/actions/components/node-maintenance-modal';\n\ntype ProxyProps = {\n banMessage: string;\n effectiveState: string;\n role: 'data' | 'default' | 'control';\n state: string;\n host: string;\n name: string;\n physicalHost: string;\n banned: boolean;\n version: string;\n maintenanceRequests: Record<string, MaintenanceRequestInfo>;\n\n updatedAt?: string;\n loadAverage?: number;\n networkLoad?: number;\n};\n\ntype OwnProps = {\n proxy: ProxyProps;\n handleClose: () => void;\n isYpCluster: boolean;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype ProxyCardProps = OwnProps & StateProps;\n\nconst block = cn('proxy-card');\n\nexport class ProxyCard extends Component<ProxyCardProps> {\n static proxyProps = PropTypes.shape({\n banMessage: PropTypes.string.isRequired,\n effectiveState: PropTypes.string.isRequired,\n role: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n host: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n physicalHost: PropTypes.string,\n banned: PropTypes.bool.isRequired,\n\n updatedAt: PropTypes.string,\n loadAverage: PropTypes.number,\n networkLoad: PropTypes.number,\n });\n\n static propTypes = {\n // from parent\n proxy: ProxyCard.proxyProps.isRequired,\n handleClose: PropTypes.func.isRequired,\n\n isYpCluster: PropTypes.bool.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {host, physicalHost} = this.props.proxy;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderContent() {\n const {\n state,\n banned,\n banMessage,\n role,\n loadAverage,\n networkLoad,\n version,\n updatedAt,\n maintenanceRequests,\n } = this.props.proxy;\n\n return (\n <MetaTable\n items={[\n {\n key: 'state',\n value: <NodeColumnState state={state} />,\n },\n {\n key: 'role',\n value: <NodeColumnRole role={role} />,\n },\n {\n key: 'Banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={banMessage ? 'warning' : 'danger'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'Maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'version',\n value: version,\n },\n {\n key: 'load average',\n value: loadAverage,\n visible: Boolean(loadAverage),\n },\n {\n key: 'network load',\n value: networkLoad,\n visible: Boolean(networkLoad),\n },\n {\n key: 'updated at',\n value: hammer.format['DateTime'](updatedAt),\n visible: Boolean(updatedAt),\n },\n ]}\n />\n );\n }\n\n render() {\n const {proxy, handleClose} = this.props;\n\n return (\n proxy && (\n <div className={block()}>\n <div className={block('header')}>\n <h3 className={block('proxy')}>{proxy.host}</h3>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {this.renderTop()}\n {this.renderContent()}\n </div>\n )\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n clusterConfig: getCurrentClusterConfig(state),\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport default compose(connector, withSplit)(ProxyCard);\n","export const proxiesTableColumnItems = {\n host: {\n get(proxy) {\n return proxy.host;\n },\n sort: true,\n align: 'left',\n },\n state: {\n get(proxy) {\n return proxy.state;\n },\n sort: true,\n align: 'center',\n },\n role: {\n get(proxy) {\n return proxy.role;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(proxy) {\n return proxy.version;\n },\n sort: true,\n align: 'left',\n },\n banned: {\n get(proxy) {\n return Boolean(proxy.banned);\n },\n sort: true,\n caption: 'B',\n align: 'center',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n },\n load_average: {\n get(proxy) {\n return proxy.loadAverage;\n },\n sort: true,\n align: 'right',\n },\n updated_at: {\n get(proxy) {\n return proxy.updatedAt;\n },\n sort: true,\n align: 'right',\n },\n network_load: {\n get(proxy) {\n return proxy.networkLoad;\n },\n sort: true,\n align: 'right',\n },\n actions: {\n get(proxy) {\n return proxy.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n};\n","import compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {concatByAnd} from '../../../../common/hammer/predicate';\nimport {createSelector} from 'reselect';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {COMPONENTS_PROXIES_TABLE_ID} from '../../../../constants/components/proxies/proxies';\n\nconst aggregateItems = (proxies, key) => {\n const items = hammer.aggregation.countValues(proxies, key);\n\n return map_(items, (count, item) => ({\n text: hammer.format['FirstUppercase'](item),\n value: item,\n count,\n }));\n};\n\nconst getSelectItems = (allItems, visibleItems, hostFilter, selectFilter) => {\n let items = allItems;\n\n if (hostFilter !== '' || selectFilter !== 'all') {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n};\n\nconst getProxies = (state) => state.components.proxies.proxies.proxies;\nconst getHostFilter = (state) => state.components.proxies.proxies.hostFilter;\nconst getStateFilter = (state) => state.components.proxies.proxies.stateFilter;\nconst getRoleFilter = (state) => state.components.proxies.proxies.roleFilter;\nconst getBannedFilter = (state) => state.components.proxies.proxies.bannedFilter;\nconst getSortState = (state) => state.tables[COMPONENTS_PROXIES_TABLE_ID];\n\nconst getFiltersObject = createSelector(\n [getHostFilter, getStateFilter, getRoleFilter, getBannedFilter],\n (hostFilter, stateFilter, roleFilter, bannedFilter) => {\n return {hostFilter, stateFilter, roleFilter, bannedFilter};\n },\n);\n\nconst getFilteredProxies = createSelector(\n [getProxies, getFiltersObject],\n (proxies, filtersObject) => {\n return filterProxies(proxies, filtersObject);\n },\n);\n\nfunction filterProxies(proxies, {hostFilter, stateFilter, roleFilter, bannedFilter}) {\n const bannedFilterAsBool = bannedFilter === 'true';\n const predicates = compact_([\n hostFilter ? ({host}) => host?.toLowerCase().includes(hostFilter) : undefined,\n stateFilter && stateFilter !== 'all' ? ({state}) => state === stateFilter : undefined,\n roleFilter && roleFilter !== 'all' ? ({role}) => role === roleFilter : undefined,\n bannedFilter !== 'all' ? ({banned}) => banned === bannedFilterAsBool : undefined,\n ]);\n return predicates.length ? filter_(proxies, concatByAnd(...predicates)) : proxies;\n}\n\nconst getAllRoles = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'role'));\n\nconst getVisibleRoles = createSelector(\n [getProxies, getFiltersObject],\n function (\n proxies,\n {\n // eslint-disable-next-line no-unused-vars\n roleFilter,\n ...rest\n },\n ) {\n const filtered = filterProxies(proxies, rest);\n return aggregateItems(filtered, 'role');\n },\n);\n\nconst getAllStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nconst getVisibleStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nexport const getVisibleProxies = createSelector(\n [getFilteredProxies, getSortState],\n (proxies, sortState) => hammer.utils.sort(proxies, sortState, proxiesTableColumnItems),\n);\n\nexport const getRoles = createSelector(\n [getAllRoles, getVisibleRoles, getHostFilter, getStateFilter],\n getSelectItems,\n);\n\nexport const getStates = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getRoleFilter],\n getSelectItems,\n);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport format from '../../../common/hammer/format';\n\nimport {AddMaintenanceParams} from '../../../../shared/yt-types';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport type {\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n getNodeMaintenanceModalInitialValues,\n getNodeMaintenanceModalState,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {\n applyMaintenance,\n closeNodeMaintenanceModal,\n} from '../../../store/actions/components/node-maintenance-modal';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\nimport {Host} from '../../../containers/Host/Host';\n\nimport './NodeMaintenanceModal.scss';\n\nconst block = cn('node-maintenance-modal');\n\ntype FormValues = NodeMaintenanceState['maintenance'] & {\n limits: Partial<{[K in keyof NodeResourceLimits]: {value?: number}}>;\n role: {role?: string};\n};\n\nexport function NodeMaintenanceModal() {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const initialValues = useSelector(getNodeMaintenanceModalInitialValues);\n const {address, component, resourceLimits} = useSelector(getNodeMaintenanceModalState);\n\n const allowedMaintenanceTypes: Array<AddMaintenanceParams['type']> =\n component === 'cluster_node'\n ? [\n 'ban',\n 'disable_scheduler_jobs',\n 'disable_write_sessions',\n 'disable_tablet_cells',\n 'decommission',\n ]\n : ['ban'];\n\n const allowLimitsTab = component === 'cluster_node';\n const allowChangeRole = component !== 'cluster_node';\n\n return address ? (\n <YTDFDialog<FormValues>\n visible\n headerProps={{\n title: (\n <>\n <Host useText prefix={<>Edit </>} address={address} />\n </>\n ),\n }}\n initialValues={initialValues}\n onClose={() => dispatch(closeNodeMaintenanceModal())}\n onAdd={async (form) => {\n const {\n values: {limits, role: roleTab, ...rest},\n } = form.getState();\n\n const diff = reduce_(\n rest,\n (acc, item, t) => {\n const type = t as keyof typeof rest;\n const {state, comment} = initialValues?.[type] ?? {};\n if (\n Boolean(state) !== Boolean(item?.state) ||\n (item?.comment && comment !== item?.comment)\n ) {\n acc[type] = item;\n }\n return acc;\n },\n {} as Partial<FormValues>,\n );\n\n const limitsDiff = reduce_(\n limits,\n (acc, item, k) => {\n const key = k as keyof typeof limits;\n if (initialValues.limits[key]?.value !== item?.value) {\n acc[key] = item?.value;\n }\n return acc;\n },\n {} as Partial<NodeResourceLimits>,\n );\n\n const role = initialValues.role.role !== roleTab.role ? roleTab.role : undefined;\n\n try {\n dispatch(applyMaintenance(address, component, diff, limitsDiff, role));\n } catch (e: any) {\n setError(e);\n }\n }}\n fields={[\n ...map_(allowedMaintenanceTypes, (name) => {\n const title = name.split('disable_')[1];\n return {\n name,\n type: 'tab' as const,\n title: format.ReadableField(title ?? name),\n fields: [...makeMaintenanceFields(name), ...makeErrorFields([error])],\n };\n }),\n ...(!allowLimitsTab\n ? []\n : [\n {\n name: 'limits',\n type: 'tab' as const,\n title: 'Limits',\n fields: [\n makeResourceLimitField('cpu', resourceLimits),\n makeResourceLimitField('gpu', resourceLimits),\n makeResourceLimitField('network', resourceLimits),\n makeResourceLimitField('replication_slots', resourceLimits),\n makeResourceLimitField('replication_data_size', resourceLimits),\n makeResourceLimitField('removal_slots', resourceLimits),\n makeResourceLimitField('repair_slots', resourceLimits),\n makeResourceLimitField('repair_data_size', resourceLimits),\n makeResourceLimitField('seal_slots', resourceLimits),\n makeResourceLimitField('system_memory', resourceLimits),\n makeResourceLimitField('user_memory', resourceLimits),\n ...makeErrorFields([error]),\n ],\n },\n ]),\n ...(!allowChangeRole\n ? []\n : [\n {\n name: 'role',\n type: 'tab' as const,\n title: 'Role',\n fields: [\n {\n name: 'role',\n type: 'text' as const,\n caption: 'Role',\n },\n ],\n },\n ]),\n ]}\n />\n ) : null;\n}\n\nfunction makeMaintenanceFields(type: AddMaintenanceParams['type'], allowOthers = true) {\n return [\n {\n name: 'state',\n type: 'radio' as const,\n caption: 'State',\n extras: makeRadioExtras(type),\n },\n {\n name: 'comment',\n type: 'textarea' as const,\n caption: 'Comment',\n extras: (values: FormValues) => {\n return values[type]?.state ? {} : {disabled: true};\n },\n },\n ...(allowOthers\n ? [\n {\n name: 'otherComments',\n type: 'textarea' as const,\n caption: 'Other users comments',\n extras: {\n disabled: true,\n },\n },\n ]\n : []),\n ];\n}\n\nfunction makeRadioExtras(type: AddMaintenanceParams['type']) {\n const labels: Partial<Record<typeof type, [string, string]>> = {\n ban: ['Enabled', 'Banned'],\n decommission: ['Enabled', 'Decommissioned'],\n };\n const [activeLabel = 'Enabled', maintenanceLabel = 'Disabled'] = labels[type] ?? [];\n return {\n options: [\n {value: '', label: activeLabel},\n {value: 'maintenance', label: maintenanceLabel},\n ],\n };\n}\n\nfunction makeResourceLimitField(\n name: keyof NodeResourceLimits,\n defaults?: Partial<Record<typeof name, number>>,\n) {\n const OPTIONS: Partial<Record<typeof name, {format?: 'Bytes'; caption?: string}>> = {\n cpu: {caption: 'CPU'},\n gpu: {caption: 'GPU'},\n user_memory: {\n format: 'Bytes',\n },\n system_memory: {\n format: 'Bytes',\n },\n repair_data_size: {\n format: 'Bytes',\n },\n replication_data_size: {\n format: 'Bytes',\n },\n };\n\n const options = OPTIONS[name] ?? {};\n\n return {\n type: 'number' as const,\n name,\n caption: options?.caption || format.ReadableField(name),\n extras: {\n format: options?.format ?? ('Number' as const),\n showDefaultValue: true,\n defaultValue: defaults?.[name],\n defaultValueClassName: block('limit-default'),\n bottomLineVisibility: 'focused' as const,\n },\n };\n}\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component} from 'react';\nimport {connect, useDispatch} from 'react-redux';\nimport hammer from '../../../../common/hammer';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ProxyActions from '../../../../pages/components/tabs/Proxies/ProxyActions/ProxyActions';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\nimport ProxyCard from './ProxyCard/ProxyCard';\n\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeRoleFilter,\n changeStateFilter,\n getProxies,\n resetProxyState,\n} from '../../../../store/actions/components/proxies/proxies';\nimport {\n getRoles,\n getStates,\n getVisibleProxies,\n} from '../../../../store/selectors/components/proxies/proxies';\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../store/actions/global';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {showNodeMaintenance} from '../../../../store/actions/components/node-maintenance-modal';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {isPaneSplit} from '../../../../utils';\nimport {\n COMPONENTS_PROXIES_TABLE_ID,\n PROXY_TYPE,\n SPLIT_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {NodeColumnBanned, NodeColumnRole, NodeColumnState, NodeColumnText} from '../NodeColumns';\nimport {NodeMaintenanceModal} from '../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Proxies.scss';\n\nconst block = cn('components-proxies');\n\nfunction ProxiesUpdater({type}) {\n const dispatch = useDispatch();\n\n const {updateFn, destructFn} = React.useMemo(() => {\n return {\n updateFn: () => dispatch(getProxies(type)),\n destructFn: () => dispatch(resetProxyState()),\n };\n }, [dispatch, type]);\n\n useUpdater(updateFn, {destructFn});\n\n return null;\n}\n\nexport class Proxies extends Component {\n static selectProps = PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n );\n\n static propTypes = {\n // from parent\n type: PropTypes.oneOf([PROXY_TYPE.HTTP, PROXY_TYPE.RPC]).isRequired,\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n totalItems: PropTypes.number.isRequired,\n showingItems: PropTypes.number.isRequired,\n initialLoading: PropTypes.bool.isRequired,\n hostFilter: PropTypes.string.isRequired,\n stateFilter: PropTypes.string.isRequired,\n roleFilter: PropTypes.string.isRequired,\n states: Proxies.selectProps.isRequired,\n roles: Proxies.selectProps.isRequired,\n proxies: PropTypes.arrayOf(PropTypes.object).isRequired,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n type: PropTypes.string.isRequired,\n }).isRequired,\n\n changeHostFilter: PropTypes.func.isRequired,\n changeStateFilter: PropTypes.func.isRequired,\n changeRoleFilter: PropTypes.func.isRequired,\n\n splitScreenAction: PropTypes.func.isRequired,\n mergeScreen: PropTypes.func.isRequired,\n };\n\n state = {\n activeProxy: null,\n };\n\n static renderHost(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.host}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.host)}\n </span>\n \n <ClipboardButton\n text={item.host}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n }\n\n static renderState(item) {\n return <NodeColumnState state={item.state} />;\n }\n\n static renderBanned(item) {\n return <NodeColumnBanned banned={item.banned} />;\n }\n\n static renderRole(item) {\n return <NodeColumnRole role={item.role} />;\n }\n\n static renderVersion(item) {\n return <NodeColumnText text={item.version} />;\n }\n\n static renderLoadAverage(item) {\n return <span>{hammer.format['Number'](item.loadAverage, {digits: 2})}</span>;\n }\n\n static renderNetworkLoad(item) {\n return <span>{item.networkLoad?.toPrecision(3) || hammer.format.NO_VALUE}</span>;\n }\n\n static renderUpdatedAt(item) {\n return <span>{hammer.format['DateTime'](item.updatedAt, {format: 'short'})}</span>;\n }\n\n get tableColumnsSets() {\n return {\n [PROXY_TYPE.HTTP]: {\n items: [\n 'host',\n 'state',\n 'banned',\n 'role',\n 'version',\n 'load_average',\n 'network_load',\n 'updated_at',\n 'actions',\n ],\n },\n [PROXY_TYPE.RPC]: {\n items: ['host', 'state', 'banned', 'role', 'version', 'actions'],\n },\n };\n }\n\n get tableProps() {\n const {type, initialLoading} = this.props;\n\n return {\n size: 's',\n css: block(),\n theme: 'light',\n striped: false,\n cssHover: true,\n isLoading: initialLoading,\n onItemClick: this.handleItemClick,\n tableId: COMPONENTS_PROXIES_TABLE_ID,\n columns: {\n items: proxiesTableColumnItems,\n sets: this.tableColumnsSets,\n mode: type,\n },\n templates: {\n host: Proxies.renderHost,\n state: Proxies.renderState,\n banned: Proxies.renderBanned,\n role: Proxies.renderRole,\n load_average: Proxies.renderLoadAverage,\n network_load: Proxies.renderNetworkLoad,\n updated_at: Proxies.renderUpdatedAt,\n actions: this.renderActions,\n version: Proxies.renderVersion,\n },\n computeKey(proxy) {\n return proxy.host;\n },\n };\n }\n\n handleItemClick = (proxy, index) => {\n const {proxies, splitScreenAction} = this.props;\n const paneClassNames = [block('proxy-pane'), block('info-pane')];\n const activeProxy = proxies[index];\n\n this.setState({activeProxy});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n };\n\n renderActions = (item) => {\n const {type} = this.props;\n\n return <ProxyActions type={type} proxy={item} />;\n };\n\n renderFilters() {\n const {\n initialLoading,\n hostFilter,\n changeHostFilter,\n stateFilter,\n changeStateFilter,\n states,\n roleFilter,\n changeRoleFilter,\n bannedFilter,\n changeBannedFilter,\n roles,\n } = this.props;\n\n return (\n <div className={block('filters')}>\n <div className={block('filter', {host: true})}>\n <Filter\n hasClear\n size=\"m\"\n debounce={500}\n value={hostFilter}\n disabled={initialLoading}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n />\n </div>\n\n <div className={block('filter', {state: true})}>\n <Select\n items={states}\n value={[stateFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={block('filter', {role: true})}>\n <Select\n items={roles}\n value={[roleFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeRoleFilter(vals[0])}\n label=\"Role:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={block('filter')}>\n <Select\n label=\"Banned:\"\n items={[\n {value: 'all', title: 'All'},\n {value: 'true', title: 'True'},\n {value: 'false', title: 'False'},\n ]}\n value={[String(bannedFilter ?? 'all')]}\n disabled={initialLoading}\n onUpdate={([value]) => {\n changeBannedFilter(value);\n }}\n width=\"max\"\n hideFilter\n />\n </div>\n </div>\n );\n }\n\n renderOverview() {\n const {totalItems, showingItems, splitScreen} = this.props;\n const isSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n split: isSplit,\n })}\n >\n {this.renderFilters()}\n\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderContent() {\n const {proxies, mergeScreen, splitScreen} = this.props;\n const {activeProxy} = this.state;\n\n return (\n <div className={block('content')}>\n <ElementsTable items={proxies} {...this.tableProps} />\n\n {isPaneSplit(splitScreen, SPLIT_TYPE) && (\n <ProxyCard proxy={activeProxy} handleClose={mergeScreen} />\n )}\n </div>\n );\n }\n\n render() {\n return (\n <ErrorBoundary>\n <ProxiesUpdater type={this.props.type} />\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <StickyContainer>\n {this.renderOverview()}\n {this.renderContent()}\n </StickyContainer>\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {components, global} = state;\n const {\n loading,\n loaded,\n error,\n errorData,\n proxies,\n hostFilter,\n stateFilter,\n bannedFilter,\n roleFilter,\n } = components.proxies.proxies;\n const {splitScreen} = global;\n\n const visibleProxies = getVisibleProxies(state);\n const states = getStates(state);\n const roles = getRoles(state);\n const initialLoading = loading && !loaded;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n showingItems: visibleProxies.length,\n totalItems: proxies.length,\n proxies: visibleProxies,\n splitScreen,\n states,\n roles,\n stateFilter,\n hostFilter,\n roleFilter,\n bannedFilter,\n initialLoading,\n };\n};\n\nconst mapDispatchToProps = {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeRoleFilter,\n splitScreenAction,\n mergeScreen,\n\n showNodeMaintenance,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Proxies);\n","import {initialFiltersState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {createSelector} from 'reselect';\nimport transform_ from 'lodash/transform';\nimport {getTemplates} from '../../../../store/selectors/settings';\n\nconst getDefaultPreset = () => ({\n name: 'All',\n data: initialFiltersState,\n isDefault: true,\n});\n\nconst getSavedPresets = createSelector(getTemplates, (presets = {}) =>\n transform_(presets, (res, data, name) => res.push({name, data, isDefault: false}), []),\n);\n\nexport const getPresets = createSelector(\n [getDefaultPreset, getSavedPresets],\n (defaultPreset, savedPresets) => [defaultPreset, ...savedPresets],\n);\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getPresets} from '../../../../../store/selectors/components/nodes/filters-presets';\nimport {applyPreset, removePreset} from '../../../../../store/actions/components/nodes/nodes';\n\nimport './FiltersPresets.scss';\n\nconst block = cn('nodes-filters-preset');\n\nclass FiltersPresets extends Component {\n static propTypes = {\n // from connect\n presets: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.object.isRequired,\n isDefault: PropTypes.bool.isRequired,\n }).isRequired,\n ).isRequired,\n\n applyPreset: PropTypes.func.isRequired,\n removePreset: PropTypes.func.isRequired,\n\n // from parent\n onChange: PropTypes.func,\n };\n\n handlePresetClick = (preset) => {\n const {applyPreset, onChange} = this.props;\n\n applyPreset(preset.data);\n if (typeof onChange === 'function') {\n onChange(preset);\n }\n };\n\n handleRemoveClick = (evt, name) => {\n const {removePreset} = this.props;\n\n evt.stopPropagation();\n removePreset(name);\n };\n\n renderPreset(preset) {\n const {name, isDefault} = preset;\n\n return (\n <div\n onClick={() => this.handlePresetClick(preset)}\n className={block('preset')}\n key={name}\n >\n {name}\n\n {!isDefault && (\n <span\n onClick={(evt) => this.handleRemoveClick(evt, name)}\n className={block('close')}\n >\n <Icon face=\"solid\" awesome=\"times\" />\n </span>\n )}\n </div>\n );\n }\n\n render() {\n const {presets} = this.props;\n\n return (\n <div className={block()}>{map_(presets, (preset) => this.renderPreset(preset))}</div>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({presets: getPresets(state)});\n\nexport default connect(mapStateToProps, {applyPreset, removePreset})(FiltersPresets);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../Button/Button';\n\nimport TextInputWithDebounce, {\n TextInputWithDebounceProps,\n} from '../TextInputWithDebounce/TextInputWithDebounce';\n\nimport './FilterWithRegExp.scss';\nconst block = cn('filter-with-regexp');\n\ntype Props = Omit<TextInputWithDebounceProps, 'onChange' | 'value'> & {\n className?: string;\n value: FilterWithRegExpValue;\n onChange: (value: Props['value']) => void;\n placeholderRegexp?: string;\n\n hideError?: boolean;\n};\n\nexport interface FilterWithRegExpValue {\n filter: string;\n useRegexp?: boolean;\n regexpError?: string;\n}\n\ninterface State {\n error?: Error;\n prevFilter?: string;\n}\n\nexport default class FilterWithRegExp extends React.PureComponent<Props, State> {\n static getDerivedStateFromProps(props: Props, state: State) {\n if (state.prevFilter === props.value.filter) {\n return null;\n }\n\n try {\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _re = new RegExp(props.value.filter);\n return {prevFilter: props.value.filter, error: undefined};\n } catch (error) {\n return {\n prevFilter: props.value.filter,\n error,\n };\n }\n }\n\n input: HTMLInputElement | null = null;\n state: State = {};\n\n onChange(filter: string, useRegexp?: boolean) {\n const {onChange} = this.props;\n let regexpError;\n if (useRegexp) {\n try {\n // eslint-disable-next-line no-new\n new RegExp(filter);\n } catch (e) {\n regexpError = (e as Error).message;\n }\n }\n onChange({filter, useRegexp, regexpError});\n }\n\n toggleRegexpMode = () => {\n const {\n value: {useRegexp, filter},\n } = this.props;\n this.onChange(filter, !useRegexp);\n this.input?.focus();\n };\n\n onFilterChange = (filter: string) => {\n const {\n value: {useRegexp},\n } = this.props;\n this.onChange(filter, useRegexp);\n };\n\n render() {\n const {\n className,\n size,\n placeholder = 'Enter filter...',\n placeholderRegexp = 'Enter regexp...',\n value,\n pin,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ...rest\n } = this.props;\n const {useRegexp, filter} = value;\n const {error} = this.state;\n\n return (\n <div className={block(null, className)}>\n <div className={block('controls')}>\n <TextInputWithDebounce\n {...rest}\n controlRef={(input) => {\n this.input = input as HTMLInputElement;\n }}\n placeholder={useRegexp ? placeholderRegexp || placeholder : placeholder}\n pin={pin}\n size={size}\n value={filter}\n onUpdate={this.onFilterChange}\n className={block('filter')}\n debounce={400}\n />\n <Button\n view={useRegexp ? 'action' : undefined}\n size={size}\n pin={'clear-brick'}\n onClick={() => this.toggleRegexpMode()}\n >\n .*\n </Button>\n </div>\n {useRegexp && error && <span className={block('error')}>{error?.message}</span>}\n </div>\n );\n }\n}\n","import React from 'react';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport Select from '../../components/Select/Select';\nconst block = cn('tag-selector');\n\nexport interface TagSelectorValue {\n concatBy: 'AND' | 'OR';\n items: Array<string>;\n}\n\ntype SelectProps = React.ComponentProps<typeof Select>;\n\nexport interface TagSelectorProps {\n className?: string;\n\n value?: Array<string>;\n onChange: (v: TagSelectorProps['value']) => void;\n\n items?: Array<string>;\n\n placeholder?: string;\n pin?: SelectProps['pin'];\n}\n\nfunction TagSelector(props: TagSelectorProps) {\n const {className, onChange, items, placeholder, value, ...rest} = props;\n\n const options = React.useMemo(() => {\n return map_(items, (value) => ({value, text: value}));\n }, [items]);\n\n return (\n <div className={block(null, className)}>\n <Select\n {...rest}\n value={value || []}\n multiple\n onUpdate={onChange}\n items={options}\n placeholder={placeholder}\n width=\"max\"\n maxVisibleValues={3}\n />\n </div>\n );\n}\n\nexport default React.memo(TagSelector);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport FilterWithRegExp, {\n FilterWithRegExpValue,\n} from '../../../../../../components/Filter/FilterWithRegExp';\nimport TagSelector from '../../../../../../components/TagSelector/TagSelector';\n\nimport './TagsFilter.scss';\nimport Button from '../../../../../../components/Button/Button';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Icon, {IconName} from '../../../../../../components/Icon/Icon';\n\nconst block = cn('tags-filter');\n\nconst TAG_FILTER_MODES = ['filter', 'union', 'intersection'] as const;\n\ntype TagFilterMode = (typeof TAG_FILTER_MODES)[number];\n\ninterface TagsFilterValue extends FilterWithRegExpValue {\n mode?: TagFilterMode;\n selected?: Array<string>;\n}\n\ninterface Props {\n className?: string;\n\n size?: 's' | 'm' | 'l' | 'xl';\n\n value: TagsFilterValue;\n onChange: (v: Props['value']) => void;\n\n items?: Array<string>;\n\n allowedModes?: Array<TagsFilterValue['mode']>;\n\n selectPlaceholder?: string;\n}\n\nconst defaultValue: Required<Props['value']> = {\n mode: 'filter',\n filter: '',\n useRegexp: false,\n selected: [],\n regexpError: '',\n};\n\nconst ICONS: Record<Required<TagsFilterValue>['mode'], IconName> = {\n filter: 'filter',\n union: 'union',\n intersection: 'intersection',\n};\n\nfunction TagsFilter(props: Props) {\n const {\n value,\n onChange,\n className,\n size = 'm',\n items,\n selectPlaceholder,\n allowedModes = TAG_FILTER_MODES,\n } = props;\n const {\n mode = defaultValue.mode,\n filter = defaultValue.filter,\n selected = defaultValue.selected,\n useRegexp,\n } = value;\n\n const handleChange = React.useCallback(\n (v: Props['value']) => {\n const value = reduce_(\n v,\n (acc, value, key) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {} as any,\n );\n onChange(value);\n },\n [onChange],\n );\n\n const handleFilterChange = React.useCallback(\n (diff: FilterWithRegExpValue) => {\n handleChange({...value, ...diff});\n },\n [handleChange, value],\n );\n\n const handleSelectChange = React.useCallback(\n (selected?: Array<string>) => {\n handleChange({...value, selected});\n },\n [handleChange, value],\n );\n\n const selectedItems = React.useMemo(() => {\n return selected;\n }, [selected]);\n\n const control =\n mode === 'filter' ? (\n <FilterWithRegExp\n className={block('control')}\n pin={'round-brick'}\n size={size}\n value={{filter, useRegexp}}\n onChange={handleFilterChange}\n />\n ) : (\n <TagSelector\n className={block('control')}\n value={selectedItems}\n onChange={handleSelectChange}\n items={items}\n placeholder={selectPlaceholder}\n pin=\"round-brick\"\n />\n );\n\n const modes = allowedModes.map((m) => {\n const itemMode = m!;\n return {\n icon: <Icon awesome={ICONS[itemMode]} />,\n text: itemMode[0].toUpperCase() + itemMode.substring(1),\n action: () => handleChange({...value, mode: itemMode}),\n };\n });\n\n return (\n <div className={block(null, className)}>\n {control}\n <DropdownMenu\n items={modes}\n switcher={\n <Button size={size} width={'auto'} pin={'clear-round'}>\n <Icon awesome={ICONS[mode]} />\n </Button>\n }\n />\n </div>\n );\n}\n\nexport default React.memo(TagsFilter);\n","import React, {Component, Fragment} from 'react';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Hotkey from '../../../../../components/Hotkey/Hotkey';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Select from '../../../../../components/Select/Select';\n\nimport {initialState} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {\n applyPreset,\n getComponentsNodesFilterOptions,\n savePreset,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport {FLAG_STATE, MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {parseBytes, updateListWithAll} from '../../../../../utils';\n\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport TagsFilter from './TagsFilter/TagsFilter';\nimport {\n getComponentNodesFiltersSetup,\n getComponentNodesRacks,\n getComponentNodesTags,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {\n COMPONENTS_AVAILABLE_STATES,\n getComponentNodesFilterSetupStateValue,\n} from '../../../../../store/selectors/components/nodes/nodes/data';\n\nimport './SetupModal.scss';\n\nconst block = cn('nodes-setup-modal');\n\nconst groupFilterProps = PropTypes.shape({\n from: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n to: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n});\n\nexport class SetupModal extends Component {\n static radioProps = PropTypes.oneOf([FLAG_STATE.ENABLED, FLAG_STATE.DISABLED, FLAG_STATE.ALL]);\n\n static propTypes = {\n // from parent\n visible: PropTypes.bool,\n handleClose: PropTypes.func.isRequired,\n\n // from connect\n setup: PropTypes.shape({\n default: PropTypes.shape({\n physicalHost: PropTypes.string.isRequired,\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n state: PropTypes.arrayOf(PropTypes.string),\n schedulerJobs: SetupModal.radioProps.isRequired,\n writeSessions: SetupModal.radioProps.isRequired,\n tabletCells: SetupModal.radioProps.isRequired,\n rack: PropTypes.oneOfType([\n PropTypes.string.isRequired,\n PropTypes.object.isRequired,\n ]).isRequired,\n banned: SetupModal.radioProps.isRequired,\n decommissioned: SetupModal.radioProps.isRequired,\n full: SetupModal.radioProps.isRequired,\n alerts: SetupModal.radioProps.isRequired,\n }).isRequired,\n storage: SetupModal.createPropTypes('storage'),\n cpu: SetupModal.createPropTypes('cpu'),\n resources: SetupModal.createPropTypes('resources'),\n tablets: SetupModal.createPropTypes('tablets'),\n }),\n\n applyPreset: PropTypes.func.isRequired,\n savePreset: PropTypes.func.isRequired,\n };\n\n static createPropTypes(group) {\n const inner = mapValues_(initialState[group], () => groupFilterProps.isRequired);\n\n return PropTypes.shape(inner).isRequired;\n }\n\n static getCurrentValue(state, props, section, group) {\n if (!state[section] || !state[section][group]) {\n return props[section][group];\n }\n return null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const {mediumList, setup} = props;\n const {storage} = state;\n const newStorage = reduce_(\n mediumList,\n (acc, medium) => {\n const key = MEDIUM_COLS_PREFIX + medium;\n acc[key] = storage[key] || setup.storage[key];\n return acc;\n },\n {},\n );\n return {storage: {...storage, ...newStorage}};\n }\n\n state = {};\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props.setup,\n saveAsTemplate: false,\n templateName: '',\n };\n\n this.state.default.state = this.props.stateValue;\n }\n\n get hotkeySettings() {\n return [{keys: 'enter', handler: this.handleApplySetup, scope: 'all'}];\n }\n\n get states() {\n return map_(this.props.nodeStates, (state) => {\n return {\n title: hammer.format.Readable(state),\n value: state,\n };\n });\n }\n\n get radioItems() {\n const {ENABLED, DISABLED, ALL} = FLAG_STATE;\n\n return [\n {text: hammer.format['FirstUppercase'](ALL), value: ALL},\n {text: hammer.format['FirstUppercase'](ENABLED), value: ENABLED},\n {\n text: hammer.format['FirstUppercase'](DISABLED),\n value: DISABLED,\n },\n ];\n }\n\n prepareFiltersCallback(section, group) {\n return [\n (value) => this.handleValueFilterChange(section, group, 'from', value),\n (value) => this.handleValueFilterChange(section, group, 'to', value),\n ];\n }\n\n handleApplySetup = () => {\n const {applyPreset, handleClose, savePreset} = this.props;\n const {saveAsTemplate, templateName, ...setup} = this.state;\n\n if (saveAsTemplate && templateName.length > 0) {\n savePreset(templateName, setup);\n }\n\n applyPreset(this.state);\n this.setState({saveAsTemplate: false}, handleClose);\n };\n\n handleSelectChange = (newValue) => {\n const {state} = this.state.default;\n\n const values = updateListWithAll({value: state, newValue}, 'all');\n\n this.setState({\n default: {\n ...this.state.default,\n state: values,\n },\n });\n };\n\n handleRadioChange(section, key, value) {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n }\n\n handleValueFilterChange = (section, group, key, value) => {\n const parsedValue = value === '' ? null : parseBytes(value);\n const isValid = !isNaN(parsedValue);\n\n this.setState({\n [section]: {\n ...this.state[section],\n [group]: {\n ...this.state[section][group],\n [key]: {\n value: isValid ? parsedValue : this.state[section][group][key].value,\n valid: isValid,\n },\n },\n },\n });\n };\n\n handleTextFilterChange = (section, key, value) => {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n };\n\n handleTemplateCheckboxChange = ({target}) => this.setState({saveAsTemplate: target.checked});\n\n handleTemplateNameChange = (templateName) => this.setState({templateName});\n\n renderValueFilter({placeholder, onChange, value, invalid, format = 'Bytes'}) {\n const formatter =\n format === 'Number' ? (value) => Number(value).toString() : hammer.format[format];\n const preparedValue = value === '' || value === null ? '' : formatter(value);\n\n return (\n <Filter\n size=\"m\"\n debounce={500}\n invalid={invalid}\n autofocus={false}\n onChange={onChange}\n value={preparedValue}\n placeholder={placeholder}\n />\n );\n }\n\n renderTextFilter({placeholder, onChange, value, disabled = false, invalid = false}) {\n return (\n <Filter\n size=\"m\"\n debounce={500}\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n }\n\n renderTagsFilter({items, onChange, value, disabled = false, modes, invalid = false}) {\n return (\n <TagsFilter\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n items={items}\n allowedModes={modes}\n selectPlaceholder={'Select tags...'}\n />\n );\n }\n\n renderFiltersGroup(section, group, format = 'Bytes') {\n const [firstCallback, secondCallback] = this.prepareFiltersCallback(section, group);\n\n const filter = this.state[section][group];\n\n const {valid: fromFilterValid, value: fromFilterValue} = filter.from;\n const {valid: toFilterValid, value: toFilterValue} = filter.to;\n\n return (\n <div className={block('filters-group')}>\n {this.renderValueFilter({\n placeholder: 'From X...',\n onChange: firstCallback,\n value: fromFilterValue,\n invalid: !fromFilterValid,\n format,\n })}\n\n {this.renderValueFilter({\n placeholder: 'To Y...',\n onChange: secondCallback,\n value: toFilterValue,\n invalid: !toFilterValid,\n format,\n })}\n </div>\n );\n }\n\n renderStatesSelect() {\n const {state} = this.state.default;\n return (\n <div className={block('select')}>\n <Select\n value={state}\n items={this.states}\n filterable\n onUpdate={this.handleSelectChange}\n placeholder={'Select states...'}\n width=\"max\"\n maxVisibleValues={5}\n hideFilter\n multiple\n />\n </div>\n );\n }\n\n renderRadioGroup(section, name) {\n const value = this.state[section][name];\n\n return (\n <RadioButton\n size=\"m\"\n name={name}\n value={value}\n items={this.radioItems}\n onChange={(ev) => this.handleRadioChange(section, name, ev.target.value)}\n />\n );\n }\n\n renderCheckBox(text, checked, onChange) {\n return (\n <Checkbox\n size=\"l\"\n key={text}\n content={text}\n checked={checked}\n onChange={onChange}\n className={block('checkbox')}\n />\n );\n }\n\n renderDefaultFilters() {\n const section = 'default';\n const {nodeTags, nodeRacks} = this.props;\n\n return (\n <MetaTable\n items={[\n {\n key: 'physical host',\n value: this.renderTextFilter({\n value: this.state[section]['physicalHost'],\n placeholder: 'Enter physical host address...',\n onChange: (value) =>\n this.handleTextFilterChange(section, 'physicalHost', value),\n }),\n },\n {\n key: 'tags',\n value: this.renderTagsFilter({\n items: nodeTags,\n value: this.state[section]['tag'],\n onChange: (value) => this.handleTextFilterChange(section, 'tag', value),\n }),\n },\n {\n key: 'states',\n value: this.renderStatesSelect(),\n },\n {\n key: 'racks',\n value: this.renderTagsFilter({\n items: nodeRacks,\n value: this.state[section]['rack'],\n modes: ['filter', 'union'],\n onChange: (value) =>\n this.handleTextFilterChange(section, 'rack', value),\n }),\n },\n {\n key: 'banned',\n value: this.renderRadioGroup(section, 'banned'),\n },\n {\n key: 'decommissioned',\n value: this.renderRadioGroup(section, 'decommissioned'),\n },\n {\n key: 'full',\n value: this.renderRadioGroup(section, 'full'),\n },\n {\n key: 'alerts',\n value: this.renderRadioGroup(section, 'alertCount'),\n },\n {\n key: 'scheduler jobs',\n value: this.renderRadioGroup(section, 'schedulerJobs'),\n },\n {\n key: 'write sessions',\n value: this.renderRadioGroup(section, 'writeSessions'),\n },\n {\n key: 'tablet cells',\n value: this.renderRadioGroup(section, 'tabletCells'),\n },\n ]}\n />\n );\n }\n\n renderStorageFilters() {\n const {mediumList} = this.props;\n const section = 'storage';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'sessions',\n value: this.renderFiltersGroup(section, 'sessions', 'Number'),\n },\n {\n key: 'chunks',\n value: this.renderFiltersGroup(section, 'chunks', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Space</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'spaceUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'spaceTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>IO weight</h4>\n\n <MetaTable\n items={map_(mediumList, (medium) => ({\n key: hammer.format['Readable'](medium),\n value: this.renderFiltersGroup(\n section,\n MEDIUM_COLS_PREFIX + medium,\n 'Number',\n ),\n }))}\n />\n </Fragment>\n );\n }\n\n renderCpuFilters() {\n const section = 'cpu';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'blob session',\n value: this.renderFiltersGroup(section, 'blobSession'),\n },\n {\n key: 'block cache',\n value: this.renderFiltersGroup(section, 'blockCache'),\n },\n {\n key: 'chunk block meta',\n value: this.renderFiltersGroup(section, 'chunkBlockMeta'),\n },\n {\n key: 'chunk meta',\n value: this.renderFiltersGroup(section, 'chunkMeta'),\n },\n {\n key: 'footprint',\n value: this.renderFiltersGroup(section, 'footprint'),\n },\n {\n key: 'query',\n value: this.renderFiltersGroup(section, 'query'),\n },\n {\n key: 'system jobs',\n value: this.renderFiltersGroup(section, 'systemJobs'),\n },\n {\n key: 'versioned chunk meta',\n value: this.renderFiltersGroup(section, 'versionedChunkMeta'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet dynamic</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletDynamicUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletDynamicTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet static</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletStaticUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletStaticTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>User jobs</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'userJobsUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'userJobsTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderResourcesFilters() {\n const section = 'resources';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>User slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'user slots used',\n value: this.renderFiltersGroup(section, 'userSlotsUsed', 'Number'),\n },\n {\n key: 'user slots total',\n value: this.renderFiltersGroup(section, 'userSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Seal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'seal slots used',\n value: this.renderFiltersGroup(section, 'sealSlotsUsed', 'Number'),\n },\n {\n key: 'seal slots total',\n value: this.renderFiltersGroup(section, 'sealSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Repair slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'repair slots used',\n value: this.renderFiltersGroup(section, 'repairSlotsUsed', 'Number'),\n },\n {\n key: 'repair slots total',\n value: this.renderFiltersGroup(section, 'repairSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Removal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'removal slots used',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n {\n key: 'removal slots total',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Replication slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'replication slots used',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsUsed',\n 'Number',\n ),\n },\n {\n key: 'replication slots total',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsTotal',\n 'Number',\n ),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderTabletsFilters() {\n const section = 'tablets';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>Tablet slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'all states',\n value: this.renderFiltersGroup(section, 'all', 'Number'),\n },\n {\n key: 'none',\n value: this.renderFiltersGroup(section, 'none', 'Number'),\n },\n {\n key: 'leading',\n value: this.renderFiltersGroup(section, 'leading', 'Number'),\n },\n {\n key: 'following',\n value: this.renderFiltersGroup(section, 'following', 'Number'),\n },\n {\n key: 'Follower Recovery',\n value: this.renderFiltersGroup(section, 'followerRecovery', 'Number'),\n },\n {\n key: 'Leader Recovery',\n value: this.renderFiltersGroup(section, 'leaderRecovery', 'Number'),\n },\n {\n key: 'stopped',\n value: this.renderFiltersGroup(section, 'stopped', 'Number'),\n },\n {\n key: 'elections',\n value: this.renderFiltersGroup(section, 'elections', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet memory</h4>\n\n <MetaTable\n items={[\n {\n key: 'static used',\n value: this.renderFiltersGroup(section, 'staticUsed'),\n },\n {\n key: 'static total',\n value: this.renderFiltersGroup(section, 'staticTotal'),\n },\n {\n key: 'dynamic used',\n value: this.renderFiltersGroup(section, 'dynamicUsed'),\n },\n {\n key: 'dynamic total',\n value: this.renderFiltersGroup(section, 'dynamicTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderContent() {\n const {saveAsTemplate, templateName} = this.state;\n\n return (\n <div className={block()}>\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n {this.renderDefaultFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Storage\">\n {this.renderStorageFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"CPU and memory\">\n {this.renderCpuFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Resources\">\n {this.renderResourcesFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Tablets\">\n {this.renderTabletsFilters()}\n </CollapsibleSection>\n\n <div className={block('template')}>\n <MetaTable\n items={[\n {\n key: 'save',\n value: this.renderCheckBox(\n 'Save as template',\n saveAsTemplate,\n this.handleTemplateCheckboxChange,\n ),\n },\n {\n key: 'template name',\n value: this.renderTextFilter({\n placeholder: 'Enter template name...',\n onChange: this.handleTemplateNameChange,\n value: templateName,\n disabled: !saveAsTemplate,\n invalid: saveAsTemplate && templateName.length < 1,\n }),\n },\n ]}\n />\n </div>\n\n <Hotkey settings={this.hotkeySettings} />\n </div>\n );\n }\n\n render() {\n const {visible, handleClose} = this.props;\n\n return (\n <Modal\n size=\"m\"\n title=\"Setup\"\n visible={visible}\n onCancel={handleClose}\n content={this.renderContent()}\n onConfirm={this.handleApplySetup}\n />\n );\n }\n\n componentDidMount() {\n const {visible, loadOptions} = this.props;\n\n if (visible) {\n loadOptions();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {visible, loadOptions} = this.props;\n\n if (!prevProps.visible && visible) {\n loadOptions();\n }\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n setup: getComponentNodesFiltersSetup(state),\n mediumList: getMediumListNoCache(state),\n nodeTags: getComponentNodesTags(state),\n nodeRacks: getComponentNodesRacks(state),\n nodeStates: COMPONENTS_AVAILABLE_STATES,\n stateValue: getComponentNodesFilterSetupStateValue(state),\n };\n};\n\nexport default connect(mapStateToProps, {\n applyPreset,\n savePreset,\n loadOptions: getComponentsNodesFilterOptions,\n})(SetupModal);\n","import type {ThunkAction} from 'redux-thunk';\n\n// import ypath from '../../../../common/thor/ypath';\nimport {\n NODE_LOAD_FAILURE,\n NODE_LOAD_REQUEST,\n NODE_LOAD_SUCCESS,\n} from '../../../../constants/components/nodes/node';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeLoadAction} from '../../../../store/reducers/components/node/node';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\n\ntype NodeLoadThunkAction = ThunkAction<any, RootState, any, NodeLoadAction>;\n\nexport function loadNodeAttributes(host: string): NodeLoadThunkAction {\n return (dispatch) => {\n dispatch({type: NODE_LOAD_REQUEST});\n return ytApiV3Id\n .get<Node>(YTApiId.nodeAttributes, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: NODE_LOAD_SUCCESS,\n data: {host, node},\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: NODE_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport type {RootState} from '../../../../store/reducers';\nimport type {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport {nodeTableProps} from '../../../../utils/components/nodes/node';\nimport hammer from '../../../../common/hammer';\n\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_NODE_TABLE_ID];\nconst getTabletSlots = (_state: RootState, props: {node: Pick<Node, 'tabletSlots'>}) =>\n props.node.tabletSlots;\n\nexport const getSortedItems = createSelector(\n [getSortState, getTabletSlots],\n (sortState, tabletSlots) =>\n tabletSlots\n ? hammer.utils.sort(tabletSlots.raw, sortState, nodeTableProps.columns.items)\n : [],\n);\n","import type {RootState} from '../../../../store/reducers/index';\n\nexport const nodeSelector = (state: RootState) => state.components.node.node;\n\nexport const nodeHostSelector = (state: RootState) => nodeSelector(state).node?.host;\n\nexport const getNodeAlertCount = (state: RootState) => state.components.node.node.node?.alertCount;\n\nexport const getNodeAlerts = (state: RootState) => state.components.node.node.node?.alerts;\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport MemoryProgress from '../../nodes/MemoryProgress/MemoryProgress';\n\ninterface NodeCpuAndMemoryProps {\n cpuProgress: Node['cpuProgress'];\n cpuText: Node['cpuText'];\n memoryData?: Node['memoryData'];\n memoryProgress: Node['memoryProgress'];\n memoryText: Node['memoryText'];\n networkProgress: Node['networkProgress'];\n networkText: Node['networkText'];\n gpu?: Node['gpu'];\n}\n\nexport const hasCpuAndMemoryMeta = (node: NodeCpuAndMemoryProps) =>\n node.cpuProgress || node.memoryProgress || node.networkProgress;\n\nfunction NodeCpuAndMemory({node}: {node: NodeCpuAndMemoryProps}): ReturnType<React.VFC> {\n const {memoryData, memoryText, cpuProgress, cpuText, networkProgress, networkText, gpu} = node;\n return (\n <MetaTable\n items={[\n {\n key: 'cpu',\n value: <Progress value={cpuProgress || 0} text={cpuText} theme=\"success\" />,\n },\n {\n key: 'memory',\n value: <MemoryProgress memoryData={memoryData} memoryText={memoryText} />,\n },\n {\n key: 'gpu',\n value: (\n <Progress\n value={gpu?.progress || 0}\n text={gpu?.progressText}\n theme=\"success\"\n />\n ),\n visible: gpu !== undefined,\n },\n {\n key: 'network',\n value: (\n <Progress value={networkProgress || 0} text={networkText} theme=\"success\" />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeCpuAndMemory);\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {calcProgressProps} from '../../../../../utils/utils';\n\ninterface NodeResourcesProps {\n removalSlots: Node['removalSlots'];\n repairSlots: Node['repairSlots'];\n replicationSlots: Node['replicationSlots'];\n sealSlots: Node['sealSlots'];\n userSlots: Node['userSlots'];\n}\n\nexport const hasResourcesMeta = (node: NodeResourcesProps) =>\n [\n node.userSlots.usage,\n node.sealSlots.usage,\n node.repairSlots.usage,\n node.removalSlots.usage,\n node.replicationSlots.usage,\n ].some((item) => typeof item !== 'undefined');\n\nfunction NodeResources(node: NodeResourcesProps): ReturnType<React.VFC> {\n return (\n <MetaTable\n items={[\n {\n key: 'user slots',\n value: (\n <Progress\n {...calcProgressProps(node.userSlots.usage, node.userSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'seal slots',\n value: (\n <Progress\n {...calcProgressProps(node.sealSlots.usage, node.sealSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'repair slots',\n value: (\n <Progress\n {...calcProgressProps(node.repairSlots.usage, node.repairSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'removal slots',\n value: (\n <Progress\n {...calcProgressProps(\n node.removalSlots.usage,\n node.removalSlots.limits,\n )}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'replication slots',\n value: (\n <Progress\n {...calcProgressProps(\n node.replicationSlots.usage,\n node.replicationSlots.limits,\n )}\n theme=\"success\"\n />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeResources);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport transform_ from 'lodash/transform';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport hammer from '../../../../../common/hammer';\n\nimport './NodeStorage.scss';\n\nconst block = cn('node-storage');\n\ninterface NodeStorageProps {\n chunks: Node['chunks'];\n IOWeight: Node['IOWeight'];\n sessions: Node['sessions'];\n spaceProgress: Node['spaceProgress'];\n spaceText: Node['spaceText'];\n}\n\nexport const hasStorageMeta = (node: NodeStorageProps) =>\n node.spaceProgress || node.sessions || node.chunks || Object.keys(node.IOWeight).length > 0;\n\nfunction NodeStorage(node: NodeStorageProps): ReturnType<React.VFC> {\n const ioItems = transform_(\n node.IOWeight,\n (res, value, key) => res.push({key, value}),\n [] as Array<{key: string; value: number}>,\n );\n\n return (\n <>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'space',\n value: (\n <Progress\n value={node.spaceProgress || 0}\n text={node.spaceText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'sessions',\n value: hammer.format['Number'](node.sessions),\n },\n {\n key: 'chunks',\n value: hammer.format['Number'](node.chunks),\n },\n ]}\n />\n\n {ioItems.length > 0 && <h4 className={block('heading')}>IO weight</h4>}\n\n <MetaTable items={ioItems} />\n </>\n );\n}\n\nexport default React.memo(NodeStorage);\n","import React from 'react';\n\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport type {YTConfig} from '../../../../../../shared/yt-types';\nimport hammer from '../../../../../common/hammer';\nimport {TABLET_SLOTS} from '../../../../../components/templates/components/nodes/nodes';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport Link from '../../../../../components/Link/Link';\nimport StatusBlock from '../../../../../components/StatusBlock/StatusBlock';\nimport {genTabletCellBundlesCellUrl} from '../../../../../utils/tablet_cell_bundles';\n\nconst YT = (window as any).YT as YTConfig;\n\ntype TabletSlot = any;\n\ninterface TabletSlotsProps {\n tabletSlots: TabletSlot[];\n}\n\nconst columns: Array<Column<TabletSlot>> = [\n {\n name: 'Cell ID',\n render({row}) {\n const url = genTabletCellBundlesCellUrl(row.cell_id, YT.cluster);\n\n return row.cell_id ? (\n <Link url={url} theme=\"ghost\" routed>\n {row.cell_id}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n },\n {\n name: 'Peer ID',\n render({row}) {\n return row.peer_id;\n },\n },\n {\n name: 'State',\n render({row}) {\n const {text, theme} = TABLET_SLOTS[row.state as keyof typeof TABLET_SLOTS];\n\n return row.state ? <StatusBlock theme={theme} text={text} /> : hammer.format.NO_VALUE;\n },\n },\n];\n\nfunction NodeTabletSlots({tabletSlots}: TabletSlotsProps): ReturnType<React.VFC> {\n return (\n <DataTableYT\n columns={columns}\n data={tabletSlots}\n startIndex={1}\n useThemeYT\n settings={{sortable: false}}\n />\n );\n}\n\nexport default React.memo(NodeTabletSlots);\n","import React from 'react';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../common/hammer';\nimport Label from '../../../components/Label/Label';\nimport {MaintenanceRequests} from '../../../components/MaintenanceRequests/MaintenanceRequests';\nimport {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {renderLabel} from '../../../components/templates/components/nodes/nodes';\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\n\nfunction getStateTheme(state: Node['state']) {\n switch (state) {\n case 'online':\n return 'success';\n case 'offline':\n return 'danger';\n default:\n return 'default';\n }\n}\n\nexport function getNodeMetaItems({\n alertCount,\n banned,\n banMessage,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableWriteSession,\n disableTabletCells,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n maintenanceRequests,\n state,\n rack,\n version,\n}: Pick<\n Node,\n | 'alertCount'\n | 'banned'\n | 'banMessage'\n | 'dataCenter'\n | 'decommissioned'\n | 'decommissionedMessage'\n | 'disableJobs'\n | 'disableWriteSession'\n | 'disableTabletCells'\n | 'full'\n | 'jobProxyBuildVersion'\n | 'lastSeenTime'\n | 'maintenanceRequests'\n | 'state'\n | 'rack'\n | 'version'\n>): Array<MetaTableItem> {\n const stateText = hammer.format['FirstUppercase'](state);\n const stateTheme = getStateTheme(state);\n\n return [\n {\n key: 'state',\n value: <Label theme={stateTheme} type=\"text\" text={stateText} />,\n },\n {\n key: 'rack',\n value: hammer.format['Address'](rack),\n visible: Boolean(rack),\n },\n {\n key: 'banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={!banMessage ? 'danger' : 'warning'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'decommissioned',\n value: (\n <Label\n text={decommissionedMessage ? decommissionedMessage : 'Decommissioned'}\n theme=\"default\"\n type=\"text\"\n />\n ),\n visible: Boolean(decommissioned),\n },\n {\n key: 'full',\n value: <Label text=\"Full\" theme=\"danger\" type=\"text\" />,\n visible: Boolean(full),\n },\n {\n key: 'alerts',\n value: <Label text={alertCount} theme=\"danger\" type=\"text\" />,\n visible: alertCount! > 0,\n },\n {\n key: 'scheduler_jobs',\n value: renderLabel(disableJobs),\n },\n {\n key: 'write_sessions',\n value: renderLabel(disableWriteSession),\n },\n {\n key: 'tablet_cells',\n value: renderLabel(disableTabletCells),\n },\n {\n key: 'data_center',\n value: dataCenter?.toUpperCase(),\n visible: Boolean(dataCenter),\n },\n {\n key: 'last_seen',\n value: hammer.format['DateTime'](lastSeenTime, {\n format: 'full',\n }),\n },\n {\n key: 'version',\n value: version,\n visible: Boolean(version),\n },\n {\n key: 'job_proxy_build_version',\n value: jobProxyBuildVersion,\n visible: Boolean(jobProxyBuildVersion),\n },\n ];\n}\n","import React, {Component} from 'react';\nimport {connect, useDispatch} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport Label from '../../../../../components/Label/Label';\nimport Alert from '../../../../../components/Alert/Alert';\nimport Button from '../../../../../components/Button/Button';\nimport Error from '../../../../../components/Error/Error';\nimport MetaTable, {Template} from '../../../../../components/MetaTable/MetaTable';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport {loadNodeAttributes} from '../../../../../store/actions/components/node/node';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\n\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport hammer from '../../../../../common/hammer';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport {useUpdater} from '../../../../../hooks/use-updater';\n\nimport withSplit from '../../../../../hocs/withSplit';\nimport UIFactory from '../../../../../UIFactory';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {makeComponentsNodesUrl} from '../../../../../utils/app-url';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeCard.scss';\n\nconst block = cn('node-card');\n\nexport const nodeProps = PropTypes.shape({\n locations: PropTypes.arrayOf(\n PropTypes.shape({\n low_watermark_space: PropTypes.number.isRequired,\n available_space: PropTypes.number.isRequired,\n session_count: PropTypes.number.isRequired,\n chunk_count: PropTypes.number.isRequired,\n used_space: PropTypes.number.isRequired,\n throttling_writes: PropTypes.bool.isRequired,\n throttling_reads: PropTypes.bool.isRequired,\n enabled: PropTypes.bool.isRequired,\n sick: PropTypes.bool.isRequired,\n full: PropTypes.bool.isRequired,\n medium_name: PropTypes.string.isRequired,\n location_uuid: PropTypes.string.isRequired,\n }),\n ),\n tabletSlots: PropTypes.shape({\n byState: PropTypes.object.isRequired,\n raw: PropTypes.array.isRequired,\n }),\n host: PropTypes.string.isRequired,\n alerts: PropTypes.arrayOf(PropTypes.object),\n banned: PropTypes.bool.isRequired,\n disableJobs: PropTypes.bool.isRequired,\n disableTabletCells: PropTypes.bool.isRequired,\n disableWriteSession: PropTypes.bool.isRequired,\n});\n\nfunction NodeCardUpdater({host}) {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000, onlyOnce: !host});\n return null;\n}\n\nclass NodeCard extends Component {\n static propTypes = {\n // from parent\n handleClose: PropTypes.func.isRequired,\n handleKeyDown: PropTypes.func,\n // from connect\n node: nodeProps,\n tabletSlots: PropTypes.array,\n loadNodeAttributes: PropTypes.func.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {physicalHost, host} = this.props.node;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderLocation(location, index) {\n return (\n <div className={block('location')} key={index}>\n <MetaTable\n items={[\n {\n key: 'uuid',\n value: (\n <span>\n {location.location_uuid}\n \n <ClipboardButton\n view=\"flat-secondary\"\n text={location.location_uuid}\n size=\"s\"\n />\n </span>\n ),\n },\n {key: 'location number', value: index + 1},\n {key: 'enabled', value: location.enabled.toString()},\n {key: 'full', value: location.full.toString()},\n {key: 'medium name', value: location.medium_name},\n {key: 'sessions', value: location.session_count},\n {\n key: 'chunks',\n value: hammer.format['Number'](location.chunk_count),\n },\n {\n key: 'used space',\n value: (\n <Progress\n value={location.locationProgress}\n text={location.locationText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'available space',\n value: (\n <Template.FormattedValue\n value={location.available_space}\n format=\"Bytes\"\n />\n ),\n },\n {\n key: 'watermark space',\n value: (\n <Template.FormattedValue\n value={location.low_watermark_space}\n format=\"Bytes\"\n />\n ),\n },\n ]}\n />\n </div>\n );\n }\n\n renderLocations() {\n const {locations} = this.props.node;\n\n return (\n locations && (\n <CollapsibleSection\n size=\"s\"\n name=\"Locations\"\n className={block('locations')}\n collapsed\n >\n {map_(locations, (location, index) => this.renderLocation(location, index))}\n </CollapsibleSection>\n )\n );\n }\n\n renderAlerts() {\n const {alerts} = this.props.node;\n\n return (\n alerts?.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Alerts\" className={block('alerts')} collapsed>\n {map_(alerts, (alert) => (\n <Alert key={alert.message} error={alert} />\n ))}\n </CollapsibleSection>\n )\n );\n }\n\n renderTabletSlots() {\n const {tabletSlots} = this.props;\n\n return (\n tabletSlots.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Tablet slots\" collapsed={false}>\n <NodeTabletSlots tabletSlots={tabletSlots} />\n </CollapsibleSection>\n )\n );\n }\n\n renderDefault() {\n const {systemTags, userTags} = this.props.node;\n\n return (\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n <MetaTable\n items={[\n {\n key: 'system_tags',\n value: map_(systemTags, (tag) => <Label key={tag} text={tag} />),\n visible: systemTags?.length > 0,\n },\n {\n key: 'user_tags',\n value: map_(userTags, (tag) => <Label key={tag} text={tag} />),\n visible: userTags?.length > 0,\n },\n ...getNodeMetaItems(this.props.node),\n ]}\n />\n </CollapsibleSection>\n );\n }\n\n renderStorage() {\n const {node} = this.props;\n const hasMeta = hasStorageMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection size=\"s\" name=\"Storage\" className={block('storage')} collapsed>\n <NodeStorage {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCpuAndMemory() {\n const {node} = this.props;\n const hasMeta = hasCpuAndMemoryMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"CPU and memory\"\n className={block('cpu')}\n collapsed\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )\n );\n }\n\n renderResources() {\n const {node} = this.props;\n const hasMeta = hasResourcesMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"Resources\"\n className={block('resources')}\n collapsed\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCard() {\n const {cluster, handleClose, handleKeyDown, errorData, node} = this.props;\n\n return (\n <div className={block()} onKeyDown={handleKeyDown} tabIndex={-1}>\n <div className={block('header')}>\n <Link\n routed\n url={makeComponentsNodesUrl({cluster, host: node?.host})}\n className={block('node')}\n >\n {node?.host}\n </Link>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {errorData && <Error error={errorData} />}\n\n {Boolean(node) && (\n <React.Fragment>\n {this.renderTop()}\n {this.renderDefault()}\n {this.renderAlerts()}\n {this.renderLocations()}\n {this.renderTabletSlots()}\n {this.renderCpuAndMemory()}\n {this.renderStorage()}\n {this.renderResources()}\n </React.Fragment>\n )}\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <NodeCardUpdater host={this.props.host} />\n {this.renderCard()}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {node, loaded, error, errorData} = nodeSelector(state);\n const cluster = getCluster(state);\n\n return {\n cluster,\n error,\n errorData,\n loaded,\n node,\n tabletSlots: node && getSortedItems(state, {node}),\n clusterConfig: getCurrentClusterConfig(state),\n };\n};\n\nconst mapDispatchToProps = {\n loadNodeAttributes,\n};\n\nexport default compose(connect(mapStateToProps, mapDispatchToProps), withSplit)(NodeCard);\n","import React from 'react';\nimport {Sticky, StickyContainer} from 'react-sticky';\nimport {ConnectedProps, connect, useDispatch, useSelector} from 'react-redux';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport memoize_ from 'lodash/memoize';\nimport filter_ from 'lodash/filter';\nimport reduce_ from 'lodash/reduce';\nimport map_ from 'lodash/map';\nimport includes_ from 'lodash/includes';\n\nimport ColumnSelector from '../../../../../components/ColumnSelector/ColumnSelector';\nimport ElementsTable from '../../../../../components/ElementsTable/ElementsTable';\nimport Radiobutton from '../../../../../components/RadioButton/RadioButton';\nimport TableInfo from '../../../../../pages/components/TableInfo/TableInfo';\nimport Dropdown from '../../../../../components/Dropdown/Dropdown';\nimport Button from '../../../../../components/Button/Button';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Loader from '../../../../../components/Loader/Loader';\n\nimport LoadDataHandler from '../../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport FiltersPresets from '../FilterPresets/FiltersPresets';\nimport SetupModal from '../SetupModal/SetupModal';\nimport NodeCard from '../NodeCard/NodeCard';\n\nimport {ComponentsNodeTypeSelector} from '../../../../../pages/system/Nodes/NodeTypeSelector';\n\nimport {\n getComponentNodesFiltersCount,\n getComponentNodesTableProps,\n getComponentsNodesNodeTypes,\n getRequiredAttributes,\n getVisibleNodes,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getSettingsEnableSideBar} from '../../../../../store/selectors/settings/settings-ts';\nimport {defaultColumns} from '../../../../../pages/components/tabs/nodes/tables';\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport {useUpdaterWithMemoizedParams} from '../../../../../hooks/use-updater';\nimport {isPaneSplit} from '../../../../../utils';\nimport {\n changeContentMode,\n changeHostFilter,\n getNodes,\n handleColumnsChange,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport type {NodesState} from '../../../../../store/reducers/components/nodes/nodes/nodes';\n\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../../store/actions/global';\nimport {HEADER_HEIGHT, KeyCode} from '../../../../../constants/index';\nimport {\n CONTENT_MODE,\n CONTENT_MODE_ITEMS,\n SPLIT_TYPE,\n} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\n\nimport {NodeMaintenanceModal} from '../../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Nodes.scss';\n\nconst block = cn('components-nodes');\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype State = {\n preset: string;\n activeNodeHost?: string;\n selectedColumns: ReduxProps['selectedColumns'];\n nodes: Array<unknown>;\n};\n\nfunction NodesUpdater() {\n const dispatch = useDispatch();\n\n const attributes = useSelector(getRequiredAttributes);\n const nodeTypes = useSelector(getComponentsNodesNodeTypes);\n\n const updateFn = React.useCallback(\n (...args: Parameters<typeof getNodes>) => {\n dispatch(getNodes(...args));\n },\n [dispatch],\n );\n\n useUpdaterWithMemoizedParams(updateFn, undefined, {attributes, nodeTypes});\n\n return null;\n}\n\nclass Nodes extends React.Component<ReduxProps & WithVisibleProps, State> {\n state: State = {\n preset: '',\n activeNodeHost: undefined,\n selectedColumns: this.props.selectedColumns,\n nodes: [],\n };\n\n get allColumns() {\n const {nodesTableProps} = this.props;\n const {selectedColumns} = this.state;\n\n const columns = reduce_(\n nodesTableProps.columns.items,\n (acc, colInfo = {}, key) => {\n const hidden = 'hidden' in colInfo && colInfo.hidden;\n if (!hidden && key !== 'actions') {\n acc.push(key);\n }\n return acc;\n },\n [] as Array<string>,\n );\n\n return map_(columns, (column) => ({\n name: column,\n checked: includes_(selectedColumns, column),\n caption: hammer.format['ReadableField'](column),\n }));\n }\n\n get selectedIndex() {\n const {nodes, splitScreen} = this.props;\n const {activeNodeHost} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return hasSplit ? this.getSelectedIndex(activeNodeHost, nodes) : -1;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n getSelectedIndex = memoize_(\n (activeNodeHost: State['activeNodeHost'], nodes: ReduxProps['nodes'] = []) =>\n nodes.findIndex((node) => activeNodeHost === node.host),\n );\n\n handlePresetChange = ({name}: {name: string}) => this.setState({preset: name});\n\n handleItemClick = (_node: ReduxProps['nodes'][number], index: number) => {\n const {nodes, sideBarEnabled, splitScreenAction} = this.props;\n\n if (sideBarEnabled) {\n const paneClassNames = [block('node-pane'), block('info-pane')];\n\n this.setState({activeNodeHost: nodes[index].host, nodes});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n }\n };\n\n handleColumnsChange = ({items}: {items: Nodes['allColumns']}) => {\n const {handleColumnsChange} = this.props;\n\n const selectedItems = filter_(items, (column) => column.checked);\n const selectedColumns = [...map_(selectedItems, (column) => column.name), 'actions'];\n\n this.setState({selectedColumns});\n handleColumnsChange(selectedColumns);\n };\n\n handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n const key = evt.keyCode;\n\n switch (key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.selectNextSuggestion();\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.selectPrevSuggestion();\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.props.mergeScreen();\n break;\n }\n }\n };\n\n handleSetupModalClose = async () => {\n const {handleClose} = this.props;\n\n await handleClose();\n };\n\n handleContentModeChange = async (value: string) => {\n const {changeContentMode} = this.props;\n\n await changeContentMode(value as NodesState['contentMode']);\n };\n\n selectNextSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index >= 0 && index < nodes.length - 1) {\n this.setState({activeNodeHost: nodes[index + 1].host});\n }\n }\n\n selectPrevSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index > 0) {\n this.setState({activeNodeHost: nodes[index - 1].host});\n }\n }\n\n renderFilters(sticky: boolean, split: boolean) {\n const {\n changeHostFilter,\n hostFilter,\n contentMode,\n toggleVisible,\n totalItems,\n showingItems,\n filterCount,\n } = this.props;\n const isFiltered = totalItems !== showingItems;\n\n return (\n <div className={block('filters', {sticky, split})}>\n <Filter\n className={block('filters-item')}\n hasClear\n value={hostFilter}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n pin={'round-round'}\n />\n\n <Button\n className={block('filters-item')}\n size=\"m\"\n onClick={toggleVisible}\n selected={isFiltered}\n >\n <Icon awesome=\"filter\" /> Filter {filterCount}\n </Button>\n\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button disabled={contentMode !== CONTENT_MODE.CUSTOM} pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={this.allColumns}\n onChange={this.handleColumnsChange}\n className={block('custom-column-selector')}\n />\n }\n />\n\n <ComponentsNodeTypeSelector className={block('filters-item')} />\n </div>\n );\n }\n\n renderOverview() {\n const {contentMode, loading, showingItems, splitScreen, totalItems} = this.props;\n const isSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return (\n <Sticky topOffset={isSplit ? HEADER_HEIGHT * 2 : -HEADER_HEIGHT} relative={isSplit}>\n {(props) => {\n const {isSticky} = props;\n return (\n <div\n className={block('overview', {\n sticky: isSticky,\n split: isSplit,\n })}\n >\n <div className={block('overview-top')}>\n {this.renderFilters(isSticky, isSplit)}\n <div className={block('spacer')} />\n <Loader visible={loading} />\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n\n <div className={block('table-presets')}>\n <Radiobutton\n size=\"m\"\n value={contentMode}\n items={CONTENT_MODE_ITEMS}\n name=\"components-nodes-content-mode\"\n onUpdate={this.handleContentModeChange}\n />\n </div>\n\n <FiltersPresets onChange={this.handlePresetChange} />\n </div>\n );\n }}\n </Sticky>\n );\n }\n\n renderContent() {\n const {contentMode, nodes, splitScreen, initialLoading, mergeScreen, nodesTableProps} =\n this.props;\n const {activeNodeHost, selectedColumns} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n const columns = {\n ...nodesTableProps.columns,\n sets: {\n ...nodesTableProps.columns.sets,\n custom: {items: selectedColumns},\n },\n mode: contentMode,\n };\n\n return (\n <div className={block('content', {split: hasSplit})}>\n <ElementsTable\n {...nodesTableProps}\n onItemClick={this.handleItemClick}\n isLoading={initialLoading}\n columns={columns}\n items={nodes}\n css={block()}\n templates={nodesTableProps.templates}\n selectedIndex={this.selectedIndex}\n />\n\n {hasSplit && (\n <NodeCard\n host={activeNodeHost}\n handleClose={mergeScreen}\n handleKeyDown={this.handleKeyDown}\n />\n )}\n </div>\n );\n }\n\n render() {\n const {visible} = this.props;\n const {preset} = this.state;\n\n return (\n <ErrorBoundary>\n <NodesUpdater />\n <LoadDataHandler {...this.props}>\n <div className={block()} onKeyDown={this.handleKeyDown} tabIndex={-1}>\n <StickyContainer>\n {this.renderOverview()}\n {this.renderContent()}\n </StickyContainer>\n\n <SetupModal\n key={preset}\n visible={visible}\n handleClose={this.handleSetupModalClose}\n />\n\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {splitScreen} = state.global;\n const {contentMode, nodes, loading, loaded, error, errorData, hostFilter} =\n state.components.nodes.nodes;\n\n const visibleNodes = getVisibleNodes(state);\n const selectedColumns = getSelectedColumns(state) || defaultColumns;\n const initialLoading = loading && !loaded;\n\n const nodesTableProps = getComponentNodesTableProps(state);\n\n const sideBarEnabled = getSettingsEnableSideBar(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n nodes: visibleNodes,\n totalItems: nodes.length,\n showingItems: visibleNodes.length,\n selectedColumns,\n hostFilter,\n contentMode,\n splitScreen,\n initialLoading,\n nodesTableProps,\n sideBarEnabled,\n nodeTypes: getComponentsNodesNodeTypes(state),\n filterCount: getComponentNodesFiltersCount(state),\n };\n};\n\nconst mapDispatchToProps = {\n changeContentMode,\n splitScreenAction,\n changeHostFilter,\n mergeScreen,\n handleColumnsChange,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(connector, withVisible)(Nodes);\n","// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../utils/cancel-helper';\nimport {\n CLOSE_SHARD_NAME_EDITOR,\n GET_SHARDS,\n OPEN_SHARD_NAME_EDITOR,\n SET_SHARD_NAME,\n} from '../../../constants/components/shards';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport type {AppThunkDispatch} from '../../../store/thunkDispatch';\nimport type {ShardsAction} from '../../../store/reducers/components/shards';\n\nconst requests = new CancelHelper();\n\nexport function getShards() {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n dispatch({type: GET_SHARDS.REQUEST});\n\n requests.removeAllRequests();\n return ytApiV3Id\n .list(YTApiId.componentsShards, {\n parameters: {\n path: '//sys/cypress_shards',\n attributes: ['id', 'name', 'total_account_statistics'],\n },\n cancellation: requests.saveCancelToken,\n })\n .then((shards) => {\n dispatch({\n type: GET_SHARDS.SUCCESS,\n data: {shards},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_SHARDS.CANCELLED});\n } else {\n dispatch({\n type: GET_SHARDS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function setShardName(id: string, name: string) {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n dispatch({type: SET_SHARD_NAME.REQUEST});\n\n return yt.v3\n .set({path: `//sys/cypress_shards/${id}/@name`}, name)\n .then(() => {\n dispatch({type: SET_SHARD_NAME.SUCCESS});\n dispatch(getShards());\n dispatch(closeNameEditor());\n })\n .catch((error: unknown) => {\n dispatch({\n type: SET_SHARD_NAME.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function openNameEditor(id: string) {\n return {\n type: OPEN_SHARD_NAME_EDITOR,\n data: {id},\n };\n}\n\nexport function closeNameEditor() {\n return {\n type: CLOSE_SHARD_NAME_EDITOR,\n } as const;\n}\n\nexport function abortAllRequests() {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n requests.removeAllRequests();\n dispatch({type: GET_SHARDS.CANCELLED});\n };\n}\n","import React, {Fragment, useState} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {\n closeNameEditor,\n openNameEditor,\n setShardName,\n} from '../../../../store/actions/components/shards';\nimport type {RootState} from '../../../../store/reducers';\n\nName.propTypes = {\n // from parent\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string.isRequired,\n\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n visible: PropTypes.bool.isRequired,\n editId: PropTypes.string.isRequired,\n\n setShardName: PropTypes.func.isRequired,\n openNameEditor: PropTypes.func.isRequired,\n closeNameEditor: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NameProps = OwnProps & StateProps & DispatchProps;\n\nfunction Name({\n name: initialName,\n id,\n editId,\n className,\n visible,\n openNameEditor,\n closeNameEditor,\n setShardName,\n loading,\n error,\n errorData,\n}: NameProps) {\n const [name, changeName] = useState(initialName);\n const handleConfirm = () => setShardName(id, name);\n const handleOpen = () => openNameEditor(id);\n const isConfirmDisabled = () => name === initialName;\n\n return (\n <div className={className}>\n {initialName}\n <Button size=\"m\" view=\"flat-secondary\" onClick={handleOpen} title=\"Edit name\">\n <Icon awesome=\"pencil\" />\n </Button>\n\n {visible && id === editId && (\n <Modal\n isConfirmDisabled={isConfirmDisabled}\n onConfirm={handleConfirm}\n onCancel={closeNameEditor}\n loading={loading}\n visible={visible}\n title=\"Edit name\"\n content={\n <Fragment>\n <TextInput\n size=\"m\"\n value={name}\n onUpdate={changeName}\n placeholder=\"Enter name...\"\n />\n {error && <Error error={errorData} />}\n </Fragment>\n }\n />\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {nameId, nameVisible, nameLoading, nameLoaded, nameError, nameErrorData} =\n state.components.shards;\n\n return {\n loading: nameLoading,\n loaded: nameLoaded,\n error: nameError,\n errorData: nameErrorData,\n visible: nameVisible,\n editId: nameId,\n };\n};\n\nconst mapDispatchToProps = {\n setShardName,\n openNameEditor,\n closeNameEditor,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Name);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport {ResolveThunks, connect} from 'react-redux';\n\nimport Button from '../../../../components/Button/Button';\n\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\n\nNodeCount.propTypes = {\n // from parent\n count: PropTypes.number.isRequired,\n className: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n\n // from connect\n openAttributesModal: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n count: number;\n className: string;\n id: string;\n name: string;\n};\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NodeCountProps = OwnProps & DispatchProps;\n\nfunction NodeCount({id, name, count, className, openAttributesModal}: NodeCountProps) {\n const handleClick = () =>\n openAttributesModal({\n title: name,\n path: `//sys/cypress_shards/${id}`,\n attribute: 'account_statistics',\n });\n\n return (\n <div className={className}>\n {hammer.format['Number'](count)}\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n onClick={handleClick}\n title=\"view account statistics\"\n >\n View\n </Button>\n </div>\n );\n}\n\nconst mapDispatchToProps = {openAttributesModal};\n\nexport default connect(null, mapDispatchToProps)(NodeCount);\n","import React, {useEffect} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedId} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport Name from './Name';\nimport NodeCount from './NodeCount';\n\nimport {abortAllRequests, getShards} from '../../../../store/actions/components/shards';\nimport type {Shard} from '../../../../store/reducers/components/shards';\n\nimport './Shards.scss';\nimport {getCluster} from '../../../../store/selectors/global';\nimport type {RootState} from '../../../../store/reducers';\n\nconst block = cn('components-shards');\n\nconst tableSettings = {\n columns: {\n items: {\n id: {\n align: 'left',\n },\n name: {\n align: 'left',\n },\n account_statistics: {\n align: 'left',\n },\n node_count: {\n align: 'left',\n caption: 'Node count',\n },\n },\n sets: {\n default: {\n items: ['id', 'name', 'node_count'],\n },\n },\n mode: 'default',\n },\n theme: 'light',\n striped: false,\n cssHover: true,\n css: block('table'),\n computeKey(item: Shard) {\n return item.id;\n },\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype ShardsProps = OwnProps & StateProps & DispatchProps;\n\nfunction Shards(props: ShardsProps) {\n const {cluster, getShards, abortAllRequests} = props;\n useEffect(() => {\n getShards();\n return abortAllRequests;\n }, [cluster]);\n\n const idTemplate = (item: Shard) => <FormattedId id={item.id} />;\n const nameTemplate = (item: Shard) => (\n <Name className={block('name')} name={item.name} id={item.id} />\n );\n const nodeCountTemplate = (item: Shard) => (\n <NodeCount\n count={item['total_account_statistics']['node_count']}\n className={block('node-count')}\n name={item.name}\n id={item.id}\n />\n );\n\n const templates = {\n id: idTemplate,\n name: nameTemplate,\n node_count: nodeCountTemplate,\n };\n\n const {loading, loaded, error, errorData, shards} = props;\n const initialLoading = loading && !loaded;\n\n return (\n <ErrorBoundary>\n <LoadDataHandler loaded={loading} error={error} errorData={errorData}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <ElementsTable\n {...tableSettings}\n templates={templates}\n items={shards}\n css={block()}\n />\n )}\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n}\n\nShards.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n shards: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n total_account_statistics: PropTypes.shape({\n node_count: PropTypes.number.isRequired,\n }).isRequired,\n }),\n ).isRequired,\n\n getShards: PropTypes.func.isRequired,\n abortAllRequests: PropTypes.func.isRequired,\n cluster: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded, error, errorData, shards} = state.components.shards;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n shards,\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n getShards,\n abortAllRequests,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Shards);\n","import {useSelector} from 'react-redux';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nimport './NodeGeneralTab.scss';\nimport Alert from '../../../../../components/Alert/Alert';\n\nconst block = cn('node-general');\n\nfunction NodeGeneralTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!node) {\n return null;\n }\n\n if (node.state === 'offline') {\n return <Alert message=\"Node is Offline\" />;\n }\n\n return (\n <>\n {hasCpuAndMemoryMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Compute Resources\"\n className={block('cpu')}\n collapsed={false}\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )}\n {hasStorageMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Storage\"\n className={block('storage')}\n collapsed={false}\n >\n <NodeStorage {...node} />\n </CollapsibleSection>\n )}\n {hasResourcesMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Slot Resources\"\n className={block('resources')}\n collapsed={false}\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )}\n </>\n );\n}\n\nexport default React.memo(NodeGeneralTab);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport sum_ from 'lodash/sum';\nimport toArray_ from 'lodash/toArray';\n\nimport type {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {NodeMemoryUsagePreload} from '../../../../types/components/node';\nimport {\n TreeNode,\n filterTree,\n flattenTree,\n prepareTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {SortState} from '../../../../types';\nimport {orderTypeToOldSortState} from '../../../../utils/sort-helpers';\n\nexport const nodeMemorySelector = (state: RootState) => state.components.node.memory;\n\nexport const getNodeMemoryLoaded = (state: RootState) => state.components.node.memory.loaded;\n\nexport const getNodeMemoryLoading = (state: RootState) => state.components.node.memory.loading;\n\nexport const getNodeMemoryError = (state: RootState) => state.components.node.memory.error;\n\nexport const getNodeMemoryViewMode = (state: RootState) => state.components.node.memory.viewMode;\n\nexport const getNodeMemoryFilter = (state: RootState) => state.components.node.memory.filter;\n\nexport const getNodeMemoryStateHost = (state: RootState) => state.components.node.memory.host;\n\nexport const getNodeMemorySortOrder = (state: RootState) => state.components.node.memory.sortOrder;\n\nexport const getNodeMemoryCollapsedBundles = (state: RootState) =>\n state.components.node.memory.collapsedBundles;\n\nconst getNodeMemoryUsageTotal = (state: RootState) => state.components.node.memory.memory?.total;\n\nconst getNodeMemoryUsageBundles = (state: RootState) =>\n state.components.node.memory.memory?.bundles;\n\nconst getNodeMemoryUsageTables = (state: RootState) => state.components.node.memory.memory?.tables;\n\nexport const getNodeMemoryUsageTablesSortOrder = (state: RootState) =>\n state.components.node.memory.tablesSortOrder;\n\nexport const getNodeMemoryUsageTotalStorePreload = createSelector(\n [getNodeMemoryUsageTotal],\n calculateStorePreload,\n);\n\nexport const getNodeMemoryUsageTotalTableStatic = (state: RootState) =>\n state.components.node.memory.memory?.total.tablet_static;\n\nexport const getNodeMemoryUsageTotalRowCache = (state: RootState) =>\n state.components.node.memory.memory?.total.row_cache;\n\nfunction calculateStorePreload(total?: NodeMemoryUsagePreload) {\n const {\n preload_store_count: allCount = NaN,\n preload_pending_store_count: pending = NaN,\n preload_failed_store_count: failed = NaN,\n } = total || {};\n\n return {\n allCount,\n pending,\n failed,\n completed: allCount - pending - failed,\n };\n}\n\nexport const getNodeMemoryUsageTotalTabletDynamic = createSelector(\n [getNodeMemoryUsageTotal],\n (total) => {\n const {active, passive, backing, usage, limit, ...others} = total?.tablet_dynamic || {};\n\n return {\n usage,\n limit,\n active,\n backing,\n passive,\n other: !usage ? 0 : usage - sum_([active, passive, backing, ...toArray_(others)]),\n };\n },\n);\n\nexport interface NodeMemoryInfo {\n name: string;\n parent: string;\n storePreload: ReturnType<typeof calculateStorePreload>;\n rowCache: number;\n rowCacheLimit: number;\n tabletStatic: number;\n tabletStaticLimit: number;\n tabletDynamic: Record<string, number>;\n tabletDynamicSum: number;\n isBundle?: boolean;\n isCollapsed?: boolean;\n url: string;\n}\n\nconst getNodeMemoryUsageBundlesByName = createSelector(\n [getNodeMemoryUsageBundles, getCluster],\n (bundles, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {};\n\n let maxTabletStatic = 0;\n let maxRowCache = 0;\n\n forEach_(bundles, ({total}, bundleName) => {\n const {usage, limit: _ignore, ...rest} = total.tablet_dynamic;\n const tmp = (itemsByName[bundleName] = {\n name: bundleName,\n parent: '<Root>',\n storePreload: calculateStorePreload(total),\n rowCache: total.row_cache.usage,\n rowCacheLimit: 0,\n tabletStatic: total.tablet_static.usage,\n tabletStaticLimit: 0,\n tabletDynamic: total.tablet_dynamic,\n tabletDynamicSum: usage ?? sum_(toArray_(rest)),\n isBundle: true,\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?activeBundle=${bundleName}`,\n });\n\n maxTabletStatic = max_([maxTabletStatic, tmp.tabletStatic])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n });\n\n forEach_(itemsByName, (item) => {\n item.tabletStaticLimit = maxTabletStatic;\n item.rowCacheLimit = maxRowCache;\n });\n\n return itemsByName;\n },\n);\n\nconst getNodeMemoryUsageBundlesTreeRoot = createSelector(\n [getNodeMemoryUsageBundles, getNodeMemoryUsageBundlesByName, getCluster],\n (bundles, bundlesInfo, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {...bundlesInfo};\n\n forEach_(bundles, ({cells}, bundleName) => {\n const bundle = itemsByName[bundleName] || {};\n forEach_(cells, (item, cellName) => {\n itemsByName[cellName] = {\n name: cellName,\n parent: bundleName,\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?id=${cellName}&activeBundle=${bundleName}`,\n };\n });\n });\n\n const root = prepareTree(itemsByName, (item) => item.parent)['<Root>'];\n return root;\n },\n);\n\nexport const getNodeMemoryUsageBundlesTreeRootFiltered = createSelector(\n [getNodeMemoryUsageBundlesTreeRoot, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root = {...root};\n if (filter) {\n res = filterTree(\n res,\n (item) => {\n return item.name.indexOf(filter) !== -1;\n },\n false,\n );\n } else {\n res.children = map_(res.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n } else {\n return {\n ...item,\n children: [],\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n };\n }\n });\n }\n return res;\n },\n);\n\nexport const getNodeMemoryUsageBundlesItems = createSelector(\n [getNodeMemoryUsageBundlesTreeRootFiltered, getNodeMemorySortOrder],\n (root, [sortOrder]) => {\n if (!root) {\n return [];\n }\n sortTreeInPlace(root, sortOrder);\n return flattenTree(root);\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<NodeMemoryInfo, NodeMemoryInfo>, sortOrder?: SortState) {\n const {column, order} = sortOrder || {};\n if (column && order) {\n sortTree(root, orderTypeToOldSortState(column, order), {\n name: {\n sort(item) {\n return item.attributes.name;\n },\n sortWithUndefined: true,\n },\n rowCache: {\n sort(item) {\n return item.attributes.rowCache;\n },\n sortWithUndefined: true,\n },\n tabletStatic: {\n sort(item) {\n return item.attributes.tabletStatic;\n },\n sortWithUndefined: true,\n },\n tabletDynamic: {\n sort(item) {\n return item.attributes.tabletDynamicSum;\n },\n sortWithUndefined: true,\n },\n storePreload: {\n sort(item) {\n return item.attributes.storePreload.allCount;\n },\n sortWithUndefined: true,\n },\n });\n }\n}\n\nconst allowBundlesForTables = createSelector([getNodeMemoryUsageTables], (tables) => {\n const [first] = toArray_(tables);\n return first?.tablet_cell_bundle !== undefined;\n});\n\nconst getNodeMemoryUsageTablesAndBundlesByName = createSelector(\n [allowBundlesForTables, getNodeMemoryUsageTables, getCluster, getNodeMemoryUsageBundlesByName],\n (allowBundles, tables, cluster, bundles) => {\n let maxRowCache = 0;\n let maxStatic = 0;\n let maxDynamic = 0;\n\n const tablesByName: Record<string, NodeMemoryInfo> = allowBundles ? {...bundles} : {};\n\n forEach_(tables, (item, name) => {\n const parent = allowBundles ? item.tablet_cell_bundle : '<Root>';\n const bundle = bundles[parent] || {};\n const tmp = (tablesByName[name] = {\n name: name,\n parent,\n\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/navigation?path=${encodeURIComponent(name)}`,\n });\n if (!allowBundles) {\n maxDynamic = max_([maxDynamic, tmp.tabletDynamicSum])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n maxStatic = max_([maxStatic, tmp.tabletStatic])!;\n }\n });\n\n if (!allowBundles) {\n forEach_(tablesByName, (item) => {\n if (item.isBundle) {\n return;\n }\n\n item.tabletDynamic.limit = maxDynamic;\n item.tabletStaticLimit = maxStatic;\n item.rowCacheLimit = maxRowCache;\n });\n }\n\n return tablesByName;\n },\n);\n\nexport const getNodeMemoryUsageTablesTree = createSelector(\n [getNodeMemoryUsageTablesAndBundlesByName],\n (tablesAndBundles) => {\n const tree = prepareTree(tablesAndBundles, (item) => item.parent);\n\n return tree['<Root>'];\n },\n);\n\nexport const getNodeMemoryUsageTablesFiltered = createSelector(\n [getNodeMemoryUsageTablesTree, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root;\n if (filter) {\n res = filterTree(root, (item: TreeNode<NodeMemoryInfo, NodeMemoryInfo>) => {\n return item.name.indexOf(filter) !== -1;\n });\n } else {\n res = {\n ...root,\n children: map_(root?.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n }\n const res: typeof item = {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n children: [],\n };\n return res;\n }),\n };\n }\n\n return res;\n },\n);\n\nexport const getNodeMemoryUsageTablesItemsSorted = createSelector(\n [getNodeMemoryUsageTablesFiltered, getNodeMemoryUsageTablesSortOrder],\n (root, [sortOrder]) => {\n if (sortOrder && root) {\n sortTreeInPlace(root, sortOrder);\n }\n\n const items = !root ? [] : flattenTree(root);\n\n return items;\n },\n);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\n\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport {\n getNodeMemoryUsageTotalRowCache,\n getNodeMemoryUsageTotalStorePreload,\n getNodeMemoryUsageTotalTableStatic,\n getNodeMemoryUsageTotalTabletDynamic,\n} from '../../../../../store/selectors/components/node/memory';\nimport {\n STACKED_PROGRESS_BAR_COLORS,\n getProgressBarColorByIndex,\n} from '../../../../../constants/colors';\n\nimport './NodeBundlesTotal.scss';\n\nconst block = cn('node-bundles-total');\n\nconst progressClass = block('progress');\n\nfunction NodeBundlesTotal() {\n const tabletDynamic = useSelector(getNodeMemoryUsageTotalTabletDynamic) || {};\n const tabletStatic = useSelector(getNodeMemoryUsageTotalTableStatic) || {};\n const rowCache = useSelector(getNodeMemoryUsageTotalRowCache) || {};\n const storePreload = useSelector(getNodeMemoryUsageTotalStorePreload);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={'elements-heading elements-heading_size_xs'}>Total</div>\n <MetaTable\n items={[\n {\n key: 'Tablet dynamic',\n value: (\n <TabletDynamicTotal data={tabletDynamic} className={progressClass} />\n ),\n className: block('meta-value'),\n },\n {\n key: 'Tablet static',\n value: <UsageLimitProgress {...tabletStatic} className={progressClass} />,\n },\n {\n key: 'Row cache',\n value: <UsageLimitProgress {...rowCache} className={progressClass} />,\n },\n {\n key: 'Store preload',\n value: <StorePreload data={storePreload} className={progressClass} />,\n },\n ]}\n />\n </div>\n );\n}\n\nconst COLORS: Partial<Record<keyof TabletDynamicTotalProps['data'], string>> = {\n active: STACKED_PROGRESS_BAR_COLORS[4],\n backing: STACKED_PROGRESS_BAR_COLORS[7],\n other: STACKED_PROGRESS_BAR_COLORS[2],\n passive: STACKED_PROGRESS_BAR_COLORS[0],\n};\n\ninterface TabletDynamicTotalProps {\n className?: string;\n data: {\n usage?: number;\n limit?: number;\n active?: number;\n backing?: number;\n passive?: number;\n other?: number;\n };\n hideLimit?: boolean;\n limitTooltipTitle?: React.ReactNode;\n}\n\nexport function TabletDynamicTotal(props: TabletDynamicTotalProps) {\n const {\n className,\n data: {usage, limit, ...rest},\n hideLimit,\n limitTooltipTitle,\n } = props;\n\n const {stack, text, content} = React.useMemo(() => {\n let usageSum = 0;\n const stack = map_(rest, (value, key) => {\n usageSum += value || 0;\n const v = (100 * value!) / limit!;\n return {\n value: isNaN(v) ? 0 : v,\n key: key as keyof typeof props.data,\n color: '',\n };\n });\n\n return {\n stack,\n text: hideLimit\n ? format.Bytes(usage ?? usageSum)\n : `${format.Bytes(usage ?? usageSum)} / ${format.Bytes(limit)}`,\n content: (\n <div className={block('progress-tooltip')}>\n {map_(stack, (item, index) => {\n const {key} = item;\n item.color = COLORS[key] ?? getProgressBarColorByIndex(index, 8);\n\n return (\n <React.Fragment key={key}>\n <div\n style={{\n backgroundColor: item.color,\n borderRadius: '50%',\n width: '1em',\n height: '1em',\n }}\n />\n <div>{key}</div>\n <div>{format.Bytes(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n {limitTooltipTitle && (\n <React.Fragment>\n <div />\n <div>{limitTooltipTitle}</div>\n <div>{format.Bytes(props.data.limit)}</div>\n </React.Fragment>\n )}\n </div>\n ),\n };\n }, [props.data]);\n\n return (\n <Tooltip content={content} className={className}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport function UsageLimitProgress(props: {\n className?: string;\n usage?: number;\n limit?: number;\n hideLimit?: boolean;\n}) {\n const {className, usage, limit, hideLimit} = props;\n const text = hideLimit\n ? format.Bytes(usage)\n : `${format.Bytes(usage)} / ${format.Bytes(limit)}`;\n return (\n <div className={className}>\n <Progress value={((usage || 0) / (limit || 0)) * 100} text={text} theme={'info'} />\n </div>\n );\n}\n\nexport function StorePreload(props: {\n className?: string;\n data: {\n allCount: number;\n pending: number;\n failed: number;\n completed: number;\n };\n}) {\n const {\n className,\n data: {allCount, pending, failed, completed},\n } = props;\n const {stack, text, content} = React.useMemo(() => {\n const stack = [\n {\n value: (completed / allCount) * 100,\n theme: 'success' as const,\n key: 'completed' as const,\n },\n {\n value: (pending / allCount) * 100,\n theme: 'default' as const,\n key: 'pending' as const,\n },\n {\n value: (failed / allCount) * 100,\n theme: 'danger' as const,\n key: 'failed' as const,\n },\n ].filter(({value}) => value > 0);\n return {\n stack,\n text: [completed, allCount].join(' / '),\n content: (\n <div className={block('progress-tooltip')}>\n {map_([...stack, {key: 'allCount' as const, theme: 'info'}], ({key, theme}) => {\n return (\n <React.Fragment key={key}>\n <div\n className={block('color-circle', {\n theme,\n })}\n />\n <div className={block('progress-tooltip-title')}>\n {key === 'allCount' ? 'Total' : key}\n </div>\n <div>{format.Number(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n </div>\n ),\n };\n }, [props.data]);\n\n if (!allCount || isNaN(allCount)) {\n return format.NO_VALUE;\n }\n\n return (\n <Tooltip className={className} content={content} placement={['top', 'bottom']}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport default React.memo(NodeBundlesTotal);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport {FlatItem} from '../../../../../common/hammer/tree-list';\nimport Link from '../../../../../components/Link/Link';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\nimport ColumnHeader from '../../../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport {NodeMemoryInfo} from '../../../../../store/selectors/components/node/memory';\n\nimport {\n StorePreload,\n TabletDynamicTotal,\n UsageLimitProgress,\n} from '../NodeBundlesTotal/NodeBundlesTotal';\nimport {OrderType} from '../../../../../utils/sort-helpers';\nimport {SortState} from '../../../../../types';\nimport {SecondaryBold} from '../../../../../components/Text/Text';\n\nimport './NodeMemoryDetailsTable.scss';\n\nconst block = cn('node-memory-details-table');\n\nconst progressClassName = block('progress');\n\ninterface Props {\n items: Array<FlatItem<NodeMemoryInfo, NodeMemoryInfo>>;\n loading?: boolean;\n loaded?: boolean;\n toggleExpand: (v: Props['items'][0]) => void;\n onSort: (sortOrder: Array<SortState>) => void;\n nameColumnTitle: string;\n sortState: Array<SortState>;\n}\n\nfunction NodeMemoryDetailsTable(props: Props) {\n const {items, loading, loaded, toggleExpand, onSort, nameColumnTitle, sortState} = props;\n\n const toggleSort = React.useCallback((column: string, nextOrder: OrderType) => {\n onSort([{column, order: nextOrder}]);\n }, []);\n\n const sortStateByName = React.useMemo(() => {\n return reduce_(\n sortState,\n (acc, item) => {\n const {column, order} = item;\n if (!column || !order) {\n return acc;\n }\n acc[column] = order;\n return acc;\n },\n {} as Record<string, OrderType>,\n );\n }, [sortState]);\n\n const columns = React.useMemo(() => {\n function headerProps(name: string, title: string) {\n return {\n name,\n header: (\n <ColumnHeader\n onSort={toggleSort}\n column={name}\n title={title}\n order={sortStateByName[name]}\n allowedOrderTypes={['desc', 'asc']}\n />\n ),\n };\n }\n const res: Array<Column<(typeof items)[0]>> = [\n {\n ...headerProps('name', nameColumnTitle),\n render: ({row: item}) => {\n const {\n name,\n level,\n attributes: {isBundle, isCollapsed, url},\n } = item;\n return (\n <React.Fragment>\n {isBundle && (\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-right' : 'angle-down'} />\n </Button>\n )}\n <Link\n className={block('name', {\n level: String(level),\n })}\n theme={'primary'}\n url={url}\n routed\n >\n {name}\n </Link>\n </React.Fragment>\n );\n },\n },\n\n {\n ...headerProps('tabletDynamic', 'Tablet dynamic'),\n render: ({\n row: {\n attributes: {tabletDynamic, isBundle, parent},\n },\n }) => {\n return (\n <TabletDynamicTotal\n data={tabletDynamic}\n className={progressClassName}\n hideLimit={!isBundle}\n limitTooltipTitle={\n isBundle ? (\n ''\n ) : (\n <>\n Total <SecondaryBold>{parent}</SecondaryBold> usage\n </>\n )\n }\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('tabletStatic', 'Tablet static'),\n render: ({\n row: {\n attributes: {tabletStatic, tabletStaticLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={tabletStatic}\n limit={tabletStaticLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('rowCache', 'Row cache'),\n render: ({\n row: {\n attributes: {rowCache, rowCacheLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={rowCache}\n limit={rowCacheLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('storePreload', 'Store preload'),\n render: ({\n row: {\n attributes: {storePreload},\n },\n }) => {\n return <StorePreload data={storePreload} className={progressClassName} />;\n },\n align: 'center',\n width: 220,\n },\n ];\n return res;\n }, [nameColumnTitle, toggleSort, sortStateByName]);\n\n return (\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={items}\n columns={columns}\n useThemeYT\n settings={DATA_TABLE_YT_SETTINGS}\n rowClassName={({attributes: {isBundle}}) => {\n return block('row', {\n bundle: isBundle,\n });\n }}\n onRowClick={(row) => toggleExpand(row)}\n />\n );\n}\n\nexport default React.memo(NodeMemoryDetailsTable);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n NODE_MEMORY_LOAD_FAILURE,\n NODE_MEMORY_LOAD_REQUEST,\n NODE_MEMORY_LOAD_SUCCESS,\n NODE_MEMORY_PARTIAL,\n} from '../../../../constants/components/nodes/memory';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeMemoryLoadAction} from '../../../../store/reducers/components/node/memory';\nimport type {MemoryUsage} from '../../../../types/components/node';\nimport {\n getNodeMemoryCollapsedBundles,\n getNodeMemoryStateHost,\n} from '../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../types';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\ntype NodeMemoryThunkAction = ThunkAction<any, RootState, any, NodeMemoryLoadAction>;\n\nexport function loadNodeMemoryUsage(host: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n dispatch({type: NODE_MEMORY_LOAD_REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeMemoryUsage, {\n path: `//sys/cluster_nodes/${host}/orchid/tablet_slot_manager/memory_usage_statistics`,\n })\n .then((memory: MemoryUsage) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_SUCCESS,\n data: {memory},\n });\n })\n .catch((error: Error) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n\nexport function setNodeBundlesSort(sortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {sortOrder},\n });\n };\n}\n\nexport function toggleNodeMemoryBundleExpanded(name: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n const collapsedBundles = [...getNodeMemoryCollapsedBundles(getState())];\n const index = collapsedBundles.indexOf(name);\n if (index === -1) {\n collapsedBundles.push(name);\n } else {\n collapsedBundles.splice(index, 1);\n }\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {collapsedBundles},\n });\n };\n}\n\nexport function setNodeMemoryTablesSort(tablesSortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {tablesSortOrder},\n });\n };\n}\n\nexport function setNodeMemoryFilters(data: {\n viewMode?: 'cells' | 'tables';\n filter?: string;\n}): NodeMemoryLoadAction {\n return {\n type: NODE_MEMORY_PARTIAL,\n data,\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\n\nimport {\n setNodeBundlesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemorySortOrder,\n getNodeMemoryUsageBundlesItems,\n} from '../../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeBundles() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageBundlesItems);\n const sortOrder = useSelector(getNodeMemorySortOrder);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n const handleSort = React.useCallback((order: SortState[]) => {\n dispatch(setNodeBundlesSort(order));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n loaded={loaded}\n loading={loading}\n items={items}\n onSort={handleSort}\n toggleExpand={toggleExpandState}\n nameColumnTitle={'Bundle / Cell'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeBundles);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemoryUsageTablesItemsSorted,\n getNodeMemoryUsageTablesSortOrder,\n} from '../../../../../store/selectors/components/node/memory';\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\nimport {\n setNodeMemoryTablesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeTables() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageTablesItemsSorted);\n const sortOrder = useSelector(getNodeMemoryUsageTablesSortOrder);\n\n const handleSort = React.useCallback((sortOrder: Array<SortState>) => {\n dispatch(setNodeMemoryTablesSort(sortOrder));\n }, []);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n items={items}\n loaded={loaded}\n loading={loading}\n toggleExpand={toggleExpandState}\n onSort={handleSort}\n nameColumnTitle={'Bundles / Table'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeTables);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport CustomRadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {\n getNodeMemoryFilter,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {setNodeMemoryFilters} from '../../../../../store/actions/components/node/memory';\nimport Filter from '../../../../../components/Filter/Filter';\n\nimport './NodeMemoryUsageToolbar.scss';\n\nconst block = cn('node-memory-usage-toolbar');\n\nfunction NodeMemoryUsageToolbar() {\n const dispatch = useDispatch();\n const viewMode = useSelector(getNodeMemoryViewMode);\n const filter = useSelector(getNodeMemoryFilter);\n\n const handleViewMode = React.useCallback((value: string) => {\n dispatch(\n setNodeMemoryFilters({\n viewMode: value as typeof viewMode,\n }),\n );\n }, []);\n\n const handleFilter = React.useCallback((filter: string) => {\n dispatch(setNodeMemoryFilters({filter}));\n }, []);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={block('filter')}>\n <Filter\n value={filter}\n onChange={handleFilter}\n placeholder={\n viewMode === 'cells'\n ? 'Filter by Bundle, Cell id...'\n : 'Filter by Bundle, Path...'\n }\n />\n </div>\n <CustomRadioButton\n size=\"m\"\n value={viewMode}\n onUpdate={handleViewMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'tables',\n text: 'Tables',\n },\n {\n value: 'cells',\n text: 'Bundles and cells',\n },\n ]}\n />\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsageToolbar);\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport type {RouteComponentProps} from 'react-router';\n\nimport NodeBundles from '../../../../../pages/components/tabs/node/NodeBundles/NodeBundles';\nimport NodeTables from '../../../../../pages/components/tabs/node/NodeTables/NodeTables';\nimport {loadNodeMemoryUsage} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryError,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {useUpdater} from '../../../../../hooks/use-updater';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport NodeBundlesTotal from '../NodeBundlesTotal/NodeBundlesTotal';\nimport NodeMemoryUsageToolbar from './NodeMemoryUsageToolbar';\n\nconst block = cn('node-memory-usage');\n\ninterface RouteParams {\n host: string;\n}\n\ninterface Props extends RouteComponentProps<RouteParams> {}\n\nfunction NodeMemoryUsage({match}: Props): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const error = useSelector(getNodeMemoryError);\n\n const host = decodeURIComponent(match.params.host);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeMemoryUsage(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const viewMode = useSelector(getNodeMemoryViewMode);\n\n return (\n <div className={block()}>\n <React.Fragment>\n {error && <ErrorBlock error={error} />}\n <NodeBundlesTotal />\n <NodeMemoryUsageToolbar />\n {viewMode === 'cells' ? <NodeBundles /> : <NodeTables />}\n </React.Fragment>\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsage);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport UIFactory from '../../../../../UIFactory';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeMeta.scss';\n\nconst block = cn('node-meta');\n\ninterface Props {\n state: Node['state'];\n tags: Node['tags'];\n userTags: Node['userTags'];\n rack: Node['rack'];\n banned: Node['banned'];\n banMessage?: Node['banMessage'];\n decommissioned: Node['decommissioned'];\n decommissionedMessage?: Node['decommissionedMessage'];\n full: Node['full'];\n alertCount?: Node['alertCount'];\n dataCenter: Node['dataCenter'];\n lastSeenTime: Node['lastSeenTime'];\n disableJobs: Node['disableJobs'];\n disableTabletCells: Node['disableTabletCells'];\n disableWriteSession: Node['disableWriteSession'];\n physicalHost: Node['physicalHost'];\n host: Node['host'];\n maintenanceRequests?: Node['maintenanceRequests'];\n version?: Node['version'];\n jobProxyBuildVersion?: Node['jobProxyBuildVersion'];\n}\n\nfunction NodeMeta({\n state,\n tags,\n userTags,\n rack,\n banned,\n banMessage = '',\n decommissioned,\n decommissionedMessage,\n full,\n alertCount,\n dataCenter,\n lastSeenTime,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n jobProxyBuildVersion,\n physicalHost,\n host,\n maintenanceRequests,\n version,\n}: Props): ReturnType<React.VFC> {\n const clusterConfig = useSelector(getCurrentClusterConfig);\n\n const metaTableItems = React.useMemo(() => {\n return getNodeMetaItems({\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n version,\n });\n }, [\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n version,\n ]);\n\n const tagsItems = React.useMemo(\n () => [\n {\n key: 'tags',\n value: <Tags items={tags} />,\n visible: Boolean(tags?.length),\n },\n {\n key: 'user_tags',\n value: <Tags items={userTags} />,\n visible: Boolean(userTags?.length),\n },\n ],\n [tags, userTags],\n );\n\n const urlItems = React.useMemo(() => {\n return UIFactory.getExtraMetaTableItemsForComponentsNode({\n host,\n physicalHost,\n clusterConfig,\n });\n }, [host, physicalHost, clusterConfig]);\n\n return (\n <div className={block()}>\n <MetaTable\n className={block('column', {type: 'meta'})}\n items={compact_([metaTableItems, tagsItems, urlItems])}\n />\n </div>\n );\n}\n\nfunction Tags({items}: {items?: Array<string>}) {\n return (\n <div className={block('tags')}>\n {map_(items, (tag) => (\n <Label key={tag} text={tag} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeMeta);\n","import React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {getNodeAlerts} from '../../../../../store/selectors/components/node/node';\nimport {useSelector} from 'react-redux';\nimport Alert from '../../../../../components/Alert/Alert';\n\nimport './NodeAlerts.scss';\n\nconst block = cn('yt-node-alerts');\n\nfunction NodeAlerts() {\n const alerts = useSelector(getNodeAlerts);\n return (\n <div>\n {map_(alerts, (item, index) => (\n <Alert className={block('item')} error={item} key={index} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeAlerts);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport type {Column} from '@gravity-ui/react-data-table';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport Label from '../../../../../components/Label/Label';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\n\ninterface LocationInfo {\n enabled?: boolean;\n full?: boolean;\n location_uuid?: string;\n medium_name?: string;\n session_count?: number;\n chunk_count?: number;\n\n locationText?: string;\n locationProgress?: number;\n\n available_space?: number;\n low_watermark_space?: number;\n}\n\nconst columns: Array<Column<LocationInfo>> = [\n {\n name: 'Enabled',\n render({row}) {\n return (\n <Label theme={row.enabled ? 'success' : 'danger'}>\n {row.enabled ? 'Enabled' : 'Disabled'}\n </Label>\n );\n },\n },\n {\n name: 'Uuid',\n render({row}) {\n return (\n <span>\n {row.location_uuid}\n \n <ClipboardButton view=\"flat-secondary\" text={row.location_uuid} size=\"s\" />\n </span>\n );\n },\n align: 'left',\n },\n {\n name: 'Full',\n render({row}) {\n return Boolean(row.full).toString();\n },\n align: 'center',\n },\n {\n name: 'Medium name',\n render({row}) {\n return row.medium_name;\n },\n },\n {\n name: 'Sessions',\n render({row}) {\n return format.Number(row.session_count);\n },\n align: 'right',\n },\n {\n name: 'Chunks',\n render({row}) {\n return format.Number(row.chunk_count);\n },\n align: 'right',\n },\n {\n name: 'Used space',\n render({row}) {\n return !row.locationProgress ? (\n format.NO_VALUE\n ) : (\n <Progress value={row.locationProgress} text={row.locationText} theme=\"success\" />\n );\n },\n },\n {\n name: 'Available space',\n render({row}) {\n return format.Bytes(row.available_space);\n },\n align: 'right',\n width: 200,\n },\n {\n name: 'Watermark space',\n render({row}) {\n return format.Bytes(row.low_watermark_space);\n },\n align: 'right',\n width: 200,\n },\n];\n\nfunction NodeLocations(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!(node && node.locations.length > 0)) {\n return null;\n }\n\n return (\n <DataTableYT\n columns={columns}\n data={node.locations}\n startIndex={1}\n useThemeYT\n settings={{\n sortable: false,\n }}\n />\n );\n}\n\nexport default React.memo(NodeLocations);\n","import {useSelector} from 'react-redux';\nimport React from 'react';\n\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nfunction NodeTabletSlotsTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n if (!(node && tabletSlots.length > 0)) {\n return null;\n }\n\n return <NodeTabletSlots tabletSlots={tabletSlots} />;\n}\n\nexport default React.memo(NodeTabletSlotsTab);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../reducers';\nimport {NodeUnrecognizedOptionsAction} from '../../../reducers/components/node/unrecognized-options';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {NODE_UNRECOGNIEZED_OPTIONS} from '../../../../constants/components/nodes/node';\nimport CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\n\nconst cancelHeler = new CancelHelper();\n\nexport function loadNodeUnrecognizedOptions(\n host: string,\n): ThunkAction<any, RootState, unknown, NodeUnrecognizedOptionsAction> {\n return (dispatch) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeUnrecognizedOptions, {\n parameters: {\n path: `//sys/cluster_nodes/${host}/orchid/dynamic_config_manager/unrecognized_options`,\n },\n cancellation: cancelHeler.removeAllAndSave,\n })\n .then((data) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.SUCCESS, data: {data}});\n })\n .catch((error: any) => {\n if (!isCancelled(error)) {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {RootState} from '../../../reducers';\n\nexport const getNodeUnrecognizedOptionsData = (state: RootState) =>\n state.components.node.unrecognizedOptions.data;\nexport const getNodeUnrecognizedOptionsError = (state: RootState) =>\n state.components.node.unrecognizedOptions.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport './NodeUnrecognizedOptions.scss';\n\nconst block = cn('node-unrecognized-options');\n\nimport {loadNodeUnrecognizedOptions} from '../../../../../store/actions/components/node/unrecognized-options';\nimport {\n getNodeUnrecognizedOptionsData,\n getNodeUnrecognizedOptionsError,\n} from '../../../../../store/selectors/components/node/unrecognized-options';\nimport Error from '../../../../../components/Error/Error';\nimport Yson from '../../../../../components/Yson/Yson';\nimport {getNodeUnrecognizedOptionsYsonSettings} from '../../../../../store/selectors/thor/unipika';\nimport {YsonDownloadButton} from '../../../../../components/DownloadAttributesButton';\n\nexport function NodeUnrecognizedOptions({host}: {host: string}) {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadNodeUnrecognizedOptions(host));\n }, [host, dispatch]);\n\n const data = useSelector(getNodeUnrecognizedOptionsData);\n const error = useSelector(getNodeUnrecognizedOptionsError);\n\n const unipikaSettings = useSelector(getNodeUnrecognizedOptionsYsonSettings);\n\n return error ? (\n <Error error={error} />\n ) : (\n <Yson\n className={block('yson')}\n value={data}\n settings={unipikaSettings}\n folding\n virtualized\n extraTools={\n <YsonDownloadButton\n value={data}\n settings={unipikaSettings}\n name={`unrecognized_options_${host}`}\n />\n }\n />\n );\n}\n","import {useDispatch, useSelector} from 'react-redux';\nimport {Redirect, Route, RouteComponentProps, Switch} from 'react-router';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport Tabs from '../../../../components/Tabs/Tabs';\nimport Loader from '../../../../components/Loader/Loader';\nimport NodeGeneralTab from '../../../../pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab';\nimport NodeMemoryUsage from '../../../../pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage';\nimport {NodeTab} from '../../../../constants/components/nodes/node';\nimport {loadNodeAttributes} from '../../../../store/actions/components/node/node';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {makeTabProps} from '../../../../utils';\nimport type {RootState} from '../../../../store/reducers';\nimport {getNodeAlertCount, nodeSelector} from '../../../../store/selectors/components/node/node';\nimport {getSortedItems} from '../../../../store/selectors/components/nodes/node-card';\nimport NodeMeta from './NodeMeta/NodeMeta';\n\nimport './NodePage.scss';\nimport NodeAlerts from './NodeAlerts/NodeAlerts';\nimport NodeLocations from './NodeLocations/NodeLocations';\nimport NodeTabletSlotsTab from './NodeTabletSlotsTab/NodeTabletSlotsTab';\nimport {NodeUnrecognizedOptions} from './NodeUnrecognizedOptions/NodeUnrecognizedOptions';\n\nconst block = cn('node-page');\n\ninterface RouteParams {\n host: string;\n}\n\nexport interface NodeDetailsProps extends RouteComponentProps<RouteParams> {}\n\nfunction NodePage({match}: NodeDetailsProps): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const {node, loading, loaded, error, errorData} = useSelector(nodeSelector);\n\n const host = decodeURIComponent(match.params.host);\n const alertCount = useSelector(getNodeAlertCount);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const initialLoading = loading && (!loaded || host !== node?.host);\n\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n const matchUrl = match.url;\n const tabProps = React.useMemo(\n () =>\n makeTabProps(\n matchUrl,\n NodeTab,\n {\n [NodeTab.MEMORY_USAGE]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.LOCATIONS]: {show: Boolean(node?.locations?.length)},\n [NodeTab.TABLET_SLOTS]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.ALERTS]: {show: Boolean(alertCount), counter: alertCount},\n },\n null,\n {\n [NodeTab.GENERAL]: 'General',\n [NodeTab.MEMORY_USAGE]: 'Memory usage',\n },\n ),\n [node, matchUrl, alertCount, tabletSlots],\n );\n\n return (\n <div className={block()}>\n <div className={block('content', {loading: initialLoading})}>\n <LoadDataHandler loaded={loaded} error={error} errorData={errorData}>\n <div className={block()}>\n <div className={block('host', 'elements-heading elements-heading_size_l')}>\n {host}\n <ClipboardButton text={host} size=\"l\" view=\"flat-secondary\" />\n {<Loader visible={initialLoading} />}\n </div>\n {!initialLoading && (\n <React.Fragment>\n <div className={block('meta')}>\n {node && <NodeMeta {...node} />}\n </div>\n\n <div className={block('heading', 'elements-section')}>\n <Tabs {...tabProps} routed />\n </div>\n\n <Switch>\n <Route\n path={`${match.path}/${NodeTab.GENERAL}`}\n component={NodeGeneralTab}\n />\n <Route\n path={`${match.path}/${NodeTab.MEMORY_USAGE}`}\n component={NodeMemoryUsage}\n />\n <Route\n path={`${match.path}/${NodeTab.LOCATIONS}`}\n component={NodeLocations}\n />\n <Route\n path={`${match.path}/${NodeTab.TABLET_SLOTS}`}\n component={NodeTabletSlotsTab}\n />\n <Route\n path={`${match.path}/${NodeTab.ALERTS}`}\n render={() => <NodeAlerts />}\n />\n <Route\n path={`${match.path}/${NodeTab.UNRECOGNIZED_OPTIONS}`}\n render={() => (\n <NodeUnrecognizedOptions host={match.params.host} />\n )}\n />\n <Redirect\n from={match.url}\n to={`${match.url}/${NodeTab.GENERAL}`}\n />\n </Switch>\n </React.Fragment>\n )}\n </div>\n </LoadDataHandler>\n </div>\n </div>\n );\n}\n\nexport default React.memo(NodePage);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\nimport {Redirect, Route, Switch, matchPath} from 'react-router';\n\nimport VersionsV2 from '../tabs/Versions/VersionsV2';\nimport Proxies from '../tabs/Proxies/Proxies';\nimport Nodes from '../tabs/nodes/Nodes/Nodes';\nimport Shards from '../tabs/Shards/Shards';\nimport NodePage from '../tabs/node/NodePage';\n\nimport Placeholder from '../Placeholder';\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {PROXY_TYPE} from '../../../constants/components/proxies/proxies';\nimport {DEFAULT_TAB, Tab} from '../../../constants/components/main';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {makeTabProps} from '../../../utils';\nimport {Page} from '../../../constants/index';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\n\nimport './Component.scss';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block(Page.COMPONENTS);\n\nexport function Components({match, lastVisitedTab = DEFAULT_TAB, tabSize, location}) {\n const props = makeTabProps(match.url, Tab);\n\n const nodePageMatch = matchPath(location.pathname, {\n path: `${match.path}/${Tab.NODES}/:host`,\n });\n\n return (\n <div className=\"elements-page__content\">\n <section className={b(null, 'elements-main-section')}>\n {!nodePageMatch && (\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={DEFAULT_TAB}\n className={b('tabs')}\n routed\n size={tabSize}\n />\n </div>\n )}\n\n <div className={b('tab-viewer')}>\n <Switch>\n <Route path={`${match.path}/${Tab.NODES}/:host`} component={NodePage} />\n <Route path={`${match.path}/${Tab.NODES}`} component={Nodes} />\n <Route path={`${match.path}/${Tab.VERSIONS}`} component={VersionsV2} />\n <Route\n path={`${match.path}/${Tab.HTTP_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.HTTP} type={PROXY_TYPE.HTTP} />}\n />\n <Route\n path={`${match.path}/${Tab.RPC_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.RPC} type={PROXY_TYPE.RPC} />}\n />\n <Route path={`${match.path}/${Tab.SHARDS}`} component={Shards} />\n <Route\n path={`${match.path}/${Tab.TABLET_CELLS}`}\n component={RedirectToTabletCells}\n />\n <Route path={`${match.path}/:tab`} component={Placeholder} />\n <Redirect from={match.url} to={`${match.url}/${lastVisitedTab}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n}\n\nfunction RedirectToTabletCells() {\n const cluster = useSelector(getCluster);\n return <Redirect to={tabletActiveBundleLink(cluster, '')} />;\n}\n\nComponents.propTypes = {\n // from react-router\n match: PropTypes.shape({\n path: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n }).isRequired,\n // from connect\n lastVisitedTab: PropTypes.string,\n};\n\nconst mapStateToProps = (state) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n return {\n lastVisitedTab: lastVisitedTabs[Page.COMPONENTS],\n tabSize: UI_TAB_SIZE,\n };\n};\n\nexport default connect(mapStateToProps)(Components);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {Route, RouteComponentProps, Switch, useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {Tab as ComponentsTab} from '../../../constants/components/main';\nimport {Page} from '../../../constants/index';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport {nodeHostSelector} from '../../../store/selectors/components/node/node';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeComponentsNodesUrl} from '../../../utils/app-url';\n\nimport './ComponentsTopRowContent.scss';\n\nconst block = cn('components-top-row-content');\n\nfunction ComponentsTopRowContent({match}: RouteComponentProps) {\n return (\n <Switch>\n <Route\n path={`${match.path}/${ComponentsTab.NODES}/:host`}\n component={ComponentsNodeTopRowContent}\n />\n <Route path={''} render={() => <RowWithName page={Page.COMPONENTS} />} />\n </Switch>\n );\n}\n\nfunction ComponentsNodeTopRowContent() {\n return (\n <RowWithName page={Page.COMPONENTS}>\n <ComponentsBreadcrumbs />\n </RowWithName>\n );\n}\n\nfunction ComponentsBreadcrumbs() {\n const cluster = useSelector(getCluster);\n const nodeHost = useSelector(nodeHostSelector);\n const history = useHistory();\n\n const items = React.useMemo(() => {\n const result = [\n <BreadcrumbsItem key=\"<Root>\" href={makeComponentsNodesUrl({cluster})}>\n {'<Root>'}\n </BreadcrumbsItem>,\n ];\n if (nodeHost) {\n result.push(\n <BreadcrumbsItem\n key=\"<Root>\"\n href={makeComponentsNodesUrl({cluster, host: nodeHost})}\n >\n {nodeHost}\n </BreadcrumbsItem>,\n );\n }\n return result;\n }, [cluster, nodeHost]);\n\n return (\n <Breadcrumbs navigate={history.push} showRoot className={block('breadcrumbs')}>\n {items}\n </Breadcrumbs>\n );\n}\n\nexport default React.memo(ComponentsTopRowContent);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {useRouteMatch} from 'react-router';\n\nimport hammer from '../../common/hammer';\n\nconst b = block('elements-message');\n\ninterface MatchParams {\n tab: string;\n}\n\nexport default function Placeholder() {\n const match = useRouteMatch<MatchParams>();\n const {tab} = match.params;\n\n return (\n <div className={b({theme: 'warning'})}>\n <p className={b('paragraph')}>\n {tab\n ? `Viewer for tab \"${hammer.format['ReadableField'](tab)}\" is not implemented.`\n : 'Viewer for this tab is not implemented.'}\n </p>\n </div>\n );\n}\n","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\n","import {Page} from '../../../shared/constants/settings';\nimport {YT} from '../../config/yt-config';\nimport type {Tab as NavigationTab} from '../../constants/navigation';\nimport {ValueOf} from '../../types';\n\nimport {TabletErrorsByPathState} from '../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationParams} from '../../store/reducers/navigation/url-mapping';\nimport {makeURLSearchParams} from './utils';\n\nexport function makeNavigationLink(params: {\n path: string;\n cluster?: string;\n navmode?: ValueOf<typeof NavigationTab>;\n teMode?: 'request_errors';\n teTime?: TabletErrorsByPathState['timeRangeFilter'];\n teMethods?: Array<string>;\n}) {\n const {cluster, ...rest} = params;\n const res = `/${cluster || YT.cluster}/${Page.NAVIGATION}`;\n const search = makeURLSearchParams(rest, getNavigationParams()).toString();\n return search ? `${res}?${search}` : res;\n}\n","import {LocationParameters} from '../../store/location';\n\nexport function makeURLSearchParams<T extends object>(params: T, info: LocationParameters) {\n const res = new URLSearchParams();\n Object.keys(params).reduce((acc, k) => {\n const value = params[k as keyof T];\n if (k in info) {\n if (info[k].options?.serialize) {\n const tmp = info[k].options?.serialize?.(value);\n if (tmp !== undefined) {\n res.append(k, tmp + '');\n }\n } else {\n res.append(k, value + '');\n }\n }\n return acc;\n }, res);\n return res;\n}\n","import {Page} from '../../../shared/constants/settings';\nimport {Tab as ComponentsTab} from '../../constants/components/main';\nimport {YT} from '../../config/yt-config';\n\nexport * from './navigation';\n\nexport function makeComponentsNodesUrl({host, cluster}: {host?: string; cluster?: string} = {}) {\n return host\n ? `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}/${host}`\n : `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}`;\n}\n\nexport function makeProxyUrl(cluster: string, address: string) {\n return `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.RPC_PROXIES}?host=${address}`;\n}\n\nexport function makeSchedulingUrl({\n pool,\n poolTree,\n cluster,\n}: {\n pool: string;\n poolTree: string;\n cluster?: string;\n}) {\n return `/${cluster || YT.cluster}/${Page.SCHEDULING}?pool=${pool}&poolTree=${poolTree}`;\n}\n\nexport function makeAccountsUrl(account: string, cluster?: string) {\n return `/${cluster || YT.cluster}/${Page.ACCOUNTS}?account=${account}`;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../common/hammer';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Page} from '../../../constants';\nimport {TabletsTab} from '../../../constants/tablets';\nimport {nanToUndefined} from '../../utils';\n\nexport function prepareTabletCells(tabletCells) {\n return map_(tabletCells, (tabletCell) => {\n const uncompressed = ypath.getValue(\n tabletCell,\n '/@total_statistics/uncompressed_data_size',\n );\n const compressed = ypath.getValue(tabletCell, '/@total_statistics/compressed_data_size');\n const tablets = ypath.getValue(tabletCell, '/@total_statistics/tablet_count');\n const memory = ypath.getValue(tabletCell, '/@total_statistics/memory_size');\n const health = ypath.getValue(tabletCell, '/@status/health');\n\n const bundle = ypath.getValue(tabletCell, '/@tablet_cell_bundle');\n const peers = ypath.getValue(tabletCell, '/@peers');\n const id = ypath.getValue(tabletCell, '/@id');\n\n const peerCount = peers ? peers.length : 0;\n\n let peer;\n let peerAddress;\n let state;\n\n if (peerCount) {\n peer = find_(peers, (peer) => peer.state === 'leading') || peers[0];\n peerAddress = peer.address;\n state = peer.state;\n }\n\n return {\n id,\n health,\n state,\n bundle,\n tablets,\n memory,\n uncompressed,\n compressed,\n peers,\n peer,\n peerAddress,\n };\n });\n}\n\nexport function aggregateTotal(data) {\n const initialTotal = {\n bundle: 'total',\n tablets: 0,\n nodes: [],\n memory: 0,\n uncompressed: 0,\n compressed: 0,\n tabletCells: 0,\n isTotal: true,\n };\n\n const total = hammer.aggregation.prepare(data, [\n {name: 'tablets', type: 'sum'},\n {name: 'nodes', type: 'concat-array'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'sum'},\n ]);\n\n return data.length ? total[0] : initialTotal;\n}\n\nfunction collectBundlesAttrs(dst, attrs) {\n const resource_limits = ypath.getValue(attrs, '/resource_limits');\n const resource_usage = ypath.getValue(attrs, '/resource_usage');\n\n const tc_usage = ypath.getValue(resource_usage, '/tablet_count');\n const tc_limit = ypath.getValue(resource_limits, '/tablet_count');\n\n const tsm_usage = ypath.getValue(resource_usage, '/tablet_static_memory');\n const tsm_limit = ypath.getValue(resource_limits, '/tablet_static_memory');\n\n return {\n ...dst,\n bundle_controller_target_config: ypath.getValue(attrs, '/bundle_controller_target_config'),\n enable_bundle_controller: ypath.getValue(attrs, '/enable_bundle_controller') || false,\n enable_bundle_balancer: ypath.getValue(attrs, '/enable_bundle_balancer'),\n changelog_account: ypath.getValue(attrs, '/options/changelog_account'),\n snapshot_account: ypath.getValue(attrs, '/options/snapshot_account'),\n node_tag_filter: ypath.getValue(attrs, '/node_tag_filter'),\n health: ypath.getValue(attrs, '/health'),\n zone: ypath.getValue(attrs, '/zone'),\n resource_limits,\n resource_usage,\n\n tablet_count: tc_usage,\n tablet_count_limit: tc_limit,\n tablet_count_free: tc_limit - tc_usage,\n tablet_count_percentage: nanToUndefined((100 * tc_usage) / tc_limit),\n\n tablet_static_memory: tsm_usage,\n tablet_static_memory_limit: tsm_limit,\n tablet_static_memory_free: tsm_limit - tsm_usage,\n tablet_static_memory_percentage: nanToUndefined((100 * tsm_usage) / tsm_limit),\n };\n}\n\nexport function prepareBundles(tabletCells, bundles) {\n let aggregation = hammer.aggregation.prepare(\n tabletCells,\n [\n {name: 'tablets', type: 'sum'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'count'},\n ],\n 'bundle',\n );\n\n aggregation.splice(0, 1);\n\n aggregation = reduce_(\n aggregation,\n (res, bundle) => {\n const $attributes = bundles[bundle.bundle].$attributes;\n const bundleNodes = ypath.getValue($attributes, '/nodes');\n res[bundle.bundle] = {\n $attributes,\n ...collectBundlesAttrs({}, $attributes),\n ...bundle,\n nodes: bundleNodes,\n };\n return res;\n },\n {},\n );\n\n const bundleList = reduce_(\n bundles,\n (res, value, key) => {\n if (aggregation[key]) {\n res.push(aggregation[key]);\n } else {\n res.push({\n $attributes: value.$attributes,\n ...collectBundlesAttrs({}, value.$attributes),\n bundle: key,\n nodes: value.$attributes.nodes,\n tabletCells: 0,\n });\n }\n return res;\n },\n [],\n );\n\n const nodeTags = reduce_(\n bundleList,\n (res, bundle) => {\n const tag = bundle?.node_tag_filter;\n if (tag) {\n res[tag] = res[tag] ? res[tag] + 1 : 1;\n }\n return res;\n },\n {},\n );\n\n return bundleList.map((bundle) => ({\n ...bundle,\n unique_node_tag: bundle?.node_tag_filter ? nodeTags[bundle.node_tag_filter] === 1 : true,\n }));\n}\n\nexport function tabletCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/tablet_cells/${cellId}`;\n}\n\nexport function tabletActiveBundleLink(cluster, bundle, enable_bundle_controller) {\n const tabletTab = enable_bundle_controller ? TabletsTab.INSTANCES : TabletsTab.TABLET_CELLS;\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}/${tabletTab}?activeBundle=${bundle}`;\n}\n\nexport function tabletActiveChaosBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function tabletCellBundleRootLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletChaosBundleRootLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function tabletCellBundlesLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletAttributesPath(id) {\n return `//sys/tablet_cells/${id}`;\n}\n\nexport function chaosCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/chaos_cells/${cellId}`;\n}\n\nexport function chaosActiveBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function chaosCellBundlesLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function chaosAttributesPath(id) {\n return `//sys/chaos_cells/${id}`;\n}\n"],"names":["b","cn","makeItemsCopy","items","map_","item","_objectSpread","DragHandle","sortableHandle","_jsx","className","children","Icon","face","awesome","SortableItem","sortableElement","_ref","isSortable","isSelectable","isDisabled","itemRenderer","onCheckBoxChange","withClickableHandler","active","disabled","selected","checked","selectable","_jsxs","keyColumn","onClick","name","SortableList","sortableContainer","_ref2","useStaticSize","_ref2$withClickableHa","type","mods","ReactList","index","key","length","ColumnSelector","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","isHeadless","showSelectedOnly","call","toggleItem","withActualItems","_ref3","_toConsumableArray","findIndex","changedItem","selectAllItems","_ref4","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_ref5","invertItems","_ref6","visibleItems","_handleCheckBoxChange","event","currentTarget","getAttribute","_handleSortEnd","_ref7","oldIndex","newIndex","_ref8","getVisibleItems","fromIndex","toIndex","_items$splice","splice","removed","_slicedToArray","_handleDefaultSort","_ref9","sort","a","aCaption","caption","bCaption","localeCompare","_toggleShownItems","setState","prevState","_changeFilter","filter","state","Object","assign","_createClass","get","this","every","some","value","func","_this2","onChange","TextInput","placeholder","onUpdate","hasClear","_this$props","isFilterable","btnProps","size","renderSearchBox","Button","filter_","buttonALLisDisabled","buttonNONEisDisabled","re","RegExp","escapeRegExp_","test","showDisabledItems","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","reduce_","acc","_this$props2","_this$getVisibleItems2","headless","undefined","empty","React","lockAxis","helperClass","helper","onSortEnd","useDragHandle","_this$props3","classNames","sortable","renderControls","renderList","Component","itemsProps","PropTypes","isRequired","defaultProps","_ref10","_ref10$caption","renderText","asHTML","block","Dropdown","_len","arguments","args","Array","_key","apply","concat","popupVisible","anchor","toggle","open","close","button","trigger","actionProps","onMouseEnter","onMouseLeave","template","_this$props$template","data","renderer","templates","__default__","popup","directions","Popup","placement","onClose","anchorRef","hasArrow","renderTemplate","ref","renderButton","renderPopup","zIndexGroupLevel","toaster","Toaster","LoadDataHandler","error","loaded","errorData","add","theme","autoHiding","title","content","message","hammer","format","NO_VALUE","actions","label","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","Error","Secondary","Bold","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","text","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","dangerouslySetInnerHTML","__html","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","rest","_objectWithoutProperties","_excluded","_React$useState","_React$useState2","input","setInput","handleChangeExt","throttle_","handleChange","cancel","handleKeyDown","e","handleBlur","withSplit","_WithSplit","_React$Component","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","TableInfo","showingItems","totalItems","changeHostFilter","hostFilter","CHANGE_VERSION_SUMMARY_PARTIAL","changeVersionFilter","versionFilter","changeTypeFilter","typeFilter","prepareGroup","group","version","res","total","banned","offline","online","changeVersionStateTypeFilters","stateFilter","bannedFilter","reHashFromNodeVersion","uiSettings","VersionCell","visibleVersion","tildaIndex","indexOf_","substr","shortHash","handleClick","versionContent","Tooltip","hashPart","_res$groups","exec","groups","hash","ClickableText","color","ClipboardButton","shiftText","view","hoverContent","Boolean","Text","VersionCellWithAction","dispatch","useDispatch","tableProps","css","striped","cssHover","showError","handleItemClick","column","getWindowStore","columns","address","match","align","tooltipProps","start_time","sets","detailed","detailsTableProps","tableId","COMPONENTS_VERSIONS_DETAILED_TABLE_ID","mode","aggregateItems","proxies","has","count","set","Map","entries","map","String","getSelectItems","allItems","otherFilters","isAllSelected","isEmpty_","sumBy_","getDetails","components","versionsV2","details","getHostFilter","getFilteredByHost","createSelector","toLowerCase","includes","getFilters","k","getFiltersSkipVersion","filters","getFiltersSkipType","_excluded2","getFiltersSkipState","_excluded3","getFiltersSkipBanned","_excluded4","getFilteredDetails","getVisibleDetails","tables","sortState","utils","getAllVersions","versions","getAllTypes","getAllStates","getAllBanned","getVisibleVersions","getVisibleTypes","getVisibleStates","getVisibleBanned","getVersionSelectItems","getTypeSelectItems","getStatesSelectItems","getBannedSelectItems","getSummarySortState","summarySortState","getSummary","summary","getHideOfflineValue","checkedHideOffline","getVisibleSummaryItems","getVersions","_step","_iterator","_createForOfIteratorHelper","s","n","done","push","err","f","getVersionsSummaryData","getTotalElementOfSummary","slice","sortArrayBySortState","_step2","Set","_iterator2","_i","_Array$from","from","component","_step3","row","_iterator3","SETTINGS","displayIndices","DEFAULT_VERSIONS","BASE_COMPONENTS","VersionsSummary","renderType","renderNumber","rowData","clickable","renderSelectFilter","Flex","direction","handleShowAll","handleReset","handleOnSort","order","setVersionsSummarySortState","_this$state","currentVersions","sortOrder","isArray","DataTable","DESCENDING","columnId","ASCENDING","visibleColumnsNames","visibleColumns","col","showAll","handleHideOffline","changeCheckedHideOffline","handleSelectUpdate","prepareValue","prepareSelectOptions","prepareItems","newData","item1","item2","forEach","find","reverse","isSpecial","isSpecialRow","prevProps","_this$state2","onlineVersions","hideOfflineUpdated","render","bind","header","renderHeader","ColumnHeader","shortTitle","split","onSort","_this$state3","loading","cluster","monitoringLink","UIFactory","getVersionMonitoringLink","customStyle","position","left","backgroundColor","zIndex","boxShadow","width","makeColumnInfo","Checkbox","defaultChecked","Select","options","filterable","renderFilter","multiple","Link","url","formatByParams","urlTemplate","ytCluster","target","DataTableYT","settings","mapDispatchToProps","connect","_state$components$ver","getCluster","VersionsV2Updater","updateFn","getState","DISCOVER_VERSIONS","REQUEST","axios","then","preparedTotal","preparedError","preparedVersions","calculatedState","prepareDetails","SUCCESS","FAILURE","Promise","reject","useUpdater","VersionsV2","onBannedChange","_false$true$all$value","changeBannedFilter","false","true","all","versionSelectItems","typeSelectItems","stateSelectItems","changeStateFilter","Filter","DEBOUNCE_TIME","vals","hideFilter","getBannedItems","bannedSelectItems","_this3","Sticky","topOffset","HEADER_HEIGHT","isSticky","sticky","renderFilters","ColumnAsTime","ClickableId","ReadableField","printColumnAsError","Host","useText","NodeColumnState","NodeColumnBanned","decommissioned","full","alerts","versionIsError","FirstUppercase","_this$props4","initialLoading","_this$props5","ErrorBoundary","CollapsibleSection","collapsed","UI_COLLAPSIBLE_SIZE","StickyContainer","renderOverview","ElementsTable","isLoading","getDetailsTemplates","allDetails","ProxyActions","handleEditClick","proxy","showNodeMaintenance","host","PROXY_TYPE","HTTP","ClickableAttributesButton","path","basePath","withTooltip","MaintenanceRequestsImpl","_ref$requests","requests","keys","_requests$key","user","comment","Label","SubjectCard","MaintenanceRequests","ProxyCard","handleClose","clusterConfig","_this$props$proxy","physicalHost","renderComponentsNodeCardTop","_this$props$proxy2","banMessage","role","loadAverage","networkLoad","updatedAt","maintenanceRequests","MetaTable","NodeColumnRole","visible","renderTop","renderContent","proxyProps","effectiveState","connector","getCurrentClusterConfig","compose","proxiesTableColumnItems","load_average","updated_at","network_load","aggregation","countValues","selectFilter","getProxies","getStateFilter","getRoleFilter","roleFilter","getFiltersObject","getFilteredProxies","filtersObject","filterProxies","bannedFilterAsBool","predicates","compact_","concatByAnd","getAllRoles","getVisibleRoles","filtered","getVisibleProxies","COMPONENTS_PROXIES_TABLE_ID","getRoles","getStates","NodeMaintenanceModal","useThunkDispatch","setError","initialValues","useSelector","getNodeMaintenanceModalInitialValues","_useSelector","getNodeMaintenanceModalState","resourceLimits","allowedMaintenanceTypes","allowLimitsTab","allowChangeRole","YTDFDialog","headerProps","_Fragment","prefix","closeNodeMaintenanceModal","onAdd","_asyncToGenerator","_regeneratorRuntime","_callee","form","_form$getState","_form$getState$values","limits","roleTab","diff","limitsDiff","_context","prev","next","values","t","_initialValues$type","_initialValues$limits","applyMaintenance","stop","_x","fields","makeMaintenanceFields","makeErrorFields","makeResourceLimitField","allowOthers","extras","makeRadioExtras","_values$type","_labels$type","ban","decommission","_ref4$","activeLabel","_ref4$2","defaults","_OPTIONS$name","_options$format","cpu","gpu","user_memory","system_memory","repair_data_size","replication_data_size","showDefaultValue","defaultValue","defaultValueClassName","bottomLineVisibility","ProxiesUpdater","_React$useMemo","destructFn","resetProxyState","Proxies","activeProxy","splitScreenAction","paneClassNames","SPLIT_TYPE","renderActions","_defineProperty","RPC","onItemClick","tableColumnsSets","renderHost","renderState","renderBanned","renderRole","renderLoadAverage","renderNetworkLoad","renderUpdatedAt","renderVersion","computeKey","states","changeRoleFilter","roles","splitScreen","isSplit","isPaneSplit","mergeScreen","columnName","NodeColumnText","digits","_item$networkLoad","toPrecision","selectProps","global","_components$proxies$p","visibleProxies","getSavedPresets","getTemplates","presets","transform_","isDefault","getPresets","initialFiltersState","defaultPreset","savedPresets","FiltersPresets","handlePresetClick","preset","applyPreset","handleRemoveClick","evt","removePreset","stopPropagation","renderPreset","FilterWithRegExp","_React$PureComponent","toggleRegexpMode","_this$input","_this$props$value","useRegexp","focus","onFilterChange","regexpError","_this$props$placehold","_this$props$placehold2","placeholderRegexp","pin","controlRef","prevFilter","TagSelector","maxVisibleValues","TAG_FILTER_MODES","ICONS","union","intersection","TagsFilter","_props$size","selectPlaceholder","_props$allowedModes","allowedModes","_value$mode","_value$filter","_value$selected","v","handleFilterChange","handleSelectChange","selectedItems","control","modes","m","itemMode","icon","toUpperCase","substring","action","DropdownMenu","switcher","groupFilterProps","valid","to","SetupModal","handleApplySetup","savePreset","saveAsTemplate","templateName","setup","newValue","updateListWithAll","default","handleValueFilterChange","section","parsedValue","parseBytes","isValid","isNaN","handleTextFilterChange","handleTemplateCheckboxChange","handleTemplateNameChange","stateValue","handler","scope","nodeStates","Readable","ENABLED","FLAG_STATE","DISABLED","ALL","invalid","_ref2$format","formatter","Number","toString","preparedValue","autofocus","_ref3$disabled","_ref3$invalid","_ref4$disabled","_ref4$invalid","_this$prepareFiltersC","prepareFiltersCallback","_this$prepareFiltersC2","firstCallback","secondCallback","_filter$from","fromFilterValid","fromFilterValue","_filter$to","toFilterValid","toFilterValue","renderValueFilter","RadioButton","radioItems","ev","handleRadioChange","_this4","nodeTags","nodeRacks","renderTextFilter","renderTagsFilter","renderStatesSelect","renderRadioGroup","_this5","mediumList","Fragment","renderFiltersGroup","medium","MEDIUM_COLS_PREFIX","renderDefaultFilters","renderStorageFilters","renderCpuFilters","renderResourcesFilters","renderTabletsFilters","renderCheckBox","Hotkey","hotkeySettings","Modal","onCancel","onConfirm","loadOptions","inner","mapValues_","initialState","storage","newStorage","radioProps","getComponentNodesFiltersSetup","getMediumListNoCache","getComponentNodesTags","getComponentNodesRacks","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentsNodesFilterOptions","loadNodeAttributes","NODE_LOAD_REQUEST","ytApiV3Id","YTApiId","nodeAttributes","attributes","prepareAttributes","Node","ATTRIBUTES","node","NODE_LOAD_SUCCESS","NODE_LOAD_FAILURE","getSortedItems","COMPONENTS_NODES_NODE_TABLE_ID","_state","tabletSlots","raw","nodeTableProps","nodeSelector","nodeHostSelector","_nodeSelector$node","getNodeAlertCount","_state$components$nod","alertCount","getNodeAlerts","_state$components$nod2","hasCpuAndMemoryMeta","cpuProgress","memoryProgress","networkProgress","NodeCpuAndMemory","memoryData","memoryText","cpuText","networkText","Progress","MemoryProgress","progress","progressText","hasResourcesMeta","userSlots","usage","sealSlots","repairSlots","removalSlots","replicationSlots","NodeResources","calcProgressProps","hasStorageMeta","spaceProgress","sessions","chunks","IOWeight","NodeStorage","ioItems","spaceText","YT","window","genTabletCellBundlesCellUrl","cell_id","routed","peer_id","_TABLET_SLOTS","TABLET_SLOTS","StatusBlock","NodeTabletSlots","startIndex","useThemeYT","getNodeMetaItems","dataCenter","decommissionedMessage","disableJobs","disableWriteSession","disableTabletCells","jobProxyBuildVersion","lastSeenTime","rack","stateText","stateTheme","getStateTheme","renderLabel","NodeCardUpdater","timeout","onlyOnce","locations","low_watermark_space","available_space","session_count","chunk_count","used_space","throttling_writes","throttling_reads","enabled","sick","medium_name","location_uuid","byState","NodeCard","_this$props$node","location","locationProgress","locationText","Template","FormattedValue","renderLocation","alert","Alert","_this$props$node2","systemTags","userTags","tag","tabIndex","makeComponentsNodesUrl","renderDefault","renderAlerts","renderLocations","renderTabletSlots","renderCpuAndMemory","renderStorage","renderResources","renderCard","_nodeSelector","NodesUpdater","getRequiredAttributes","nodeTypes","getComponentsNodesNodeTypes","getNodes","useUpdaterWithMemoizedParams","Nodes","activeNodeHost","selectedColumns","nodes","getSelectedIndex","memoize_","handlePresetChange","_node","sideBarEnabled","handleColumnsChange","keyCode","KeyCode","ARROW_DOWN","preventDefault","selectNextSuggestion","ARROW_UP","selectPrevSuggestion","ESCAPE","handleSetupModalClose","handleContentModeChange","_callee2","changeContentMode","_context2","nodesTableProps","colInfo","hidden","includes_","selectedIndex","contentMode","toggleVisible","filterCount","isFiltered","CONTENT_MODE","CUSTOM","allColumns","ComponentsNodeTypeSelector","relative","Loader","Radiobutton","CONTENT_MODE_ITEMS","hasSplit","custom","visibleNodes","getVisibleNodes","getSelectedColumns","defaultColumns","getComponentNodesTableProps","getSettingsEnableSideBar","getComponentNodesFiltersCount","withVisible","CancelHelper","getShards","GET_SHARDS","removeAllRequests","list","componentsShards","parameters","cancellation","saveCancelToken","shards","code","yt","CANCELLED","closeNameEditor","CLOSE_SHARD_NAME_EDITOR","setShardName","id","SET_SHARD_NAME","openNameEditor","OPEN_SHARD_NAME_EDITOR","_state$components$sha","nameId","nameVisible","nameLoading","nameLoaded","nameError","nameErrorData","editId","initialName","_useState","useState","_useState2","changeName","isConfirmDisabled","openAttributesModal","attribute","tableSettings","account_statistics","node_count","abortAllRequests","useEffect","FormattedId","Name","NodeCount","NodeGeneralTab","getNodeMemoryLoaded","memory","getNodeMemoryLoading","getNodeMemoryError","getNodeMemoryViewMode","viewMode","getNodeMemoryFilter","getNodeMemoryStateHost","getNodeMemorySortOrder","getNodeMemoryCollapsedBundles","collapsedBundles","getNodeMemoryUsageTotal","getNodeMemoryUsageBundles","bundles","getNodeMemoryUsageTables","_state$components$nod3","getNodeMemoryUsageTablesSortOrder","tablesSortOrder","getNodeMemoryUsageTotalStorePreload","calculateStorePreload","getNodeMemoryUsageTotalTableStatic","_state$components$nod4","tablet_static","getNodeMemoryUsageTotalRowCache","_state$components$nod5","row_cache","_ref$preload_store_co","preload_store_count","allCount","NaN","_ref$preload_pending_","preload_pending_store_count","pending","_ref$preload_failed_s","preload_failed_store_count","failed","completed","getNodeMemoryUsageTotalTabletDynamic","tablet_dynamic","passive","backing","limit","others","other","sum_","toArray_","getNodeMemoryUsageBundlesByName","itemsByName","maxTabletStatic","maxRowCache","forEach_","bundleName","_total$tablet_dynamic","tmp","parent","storePreload","rowCache","rowCacheLimit","tabletStatic","tabletStaticLimit","tabletDynamic","tabletDynamicSum","isBundle","max_","getNodeMemoryUsageBundlesTreeRoot","bundlesInfo","cells","bundle","cellName","prepareTree","getNodeMemoryUsageBundlesTreeRootFiltered","root","filterTree","indexOf","isCollapsed","getNodeMemoryUsageBundlesItems","sortTreeInPlace","flattenTree","sortTree","orderTypeToOldSortState","sortWithUndefined","allowBundlesForTables","_toArray_","first","tablet_cell_bundle","getNodeMemoryUsageTablesAndBundlesByName","allowBundles","maxStatic","maxDynamic","tablesByName","encodeURIComponent","getNodeMemoryUsageTablesTree","tablesAndBundles","getNodeMemoryUsageTablesFiltered","getNodeMemoryUsageTablesItemsSorted","progressClass","NodeBundlesTotal","TabletDynamicTotal","UsageLimitProgress","StorePreload","COLORS","STACKED_PROGRESS_BAR_COLORS","_props$data","hideLimit","limitTooltipTitle","usageSum","stack","Bytes","_COLORS$key","getProgressBarColorByIndex","style","borderRadius","height","_props$data2","_React$useMemo2","join","progressClassName","NodeMemoryDetailsTable","toggleExpand","nameColumnTitle","toggleSort","nextOrder","sortStateByName","allowedOrderTypes","level","_item$attributes","_ref2$row$attributes","_ref3$row$attributes","_ref4$row$attributes","DATA_TABLE_YT_SETTINGS","rowClassName","onRowClick","toggleNodeMemoryBundleExpanded","NODE_MEMORY_PARTIAL","setNodeMemoryFilters","NodeBundles","toggleExpandState","handleSort","setNodeBundlesSort","NodeTables","NodeMemoryUsageToolbar","handleViewMode","handleFilter","CustomRadioButton","NodeMemoryUsage","decodeURIComponent","params","NODE_MEMORY_LOAD_REQUEST","nodeMemoryUsage","NODE_MEMORY_LOAD_SUCCESS","NODE_MEMORY_LOAD_FAILURE","loadNodeMemoryUsage","ErrorBlock","NodeMeta","tags","_ref$banMessage","metaTableItems","tagsItems","Tags","urlItems","getExtraMetaTableItemsForComponentsNode","NodeAlerts","NodeLocations","NodeTabletSlotsTab","cancelHeler","getNodeUnrecognizedOptionsData","unrecognizedOptions","getNodeUnrecognizedOptionsError","NodeUnrecognizedOptions","NODE_UNRECOGNIEZED_OPTIONS","nodeUnrecognizedOptions","removeAllAndSave","isCancelled","loadNodeUnrecognizedOptions","unipikaSettings","getNodeUnrecognizedOptionsYsonSettings","Yson","folding","virtualized","extraTools","YsonDownloadButton","NodePage","matchUrl","tabProps","_node$locations","_makeTabProps","_makeTabProps2","makeTabProps","NodeTab","MEMORY_USAGE","show","LOCATIONS","ALERTS","counter","GENERAL","Tabs","Switch","Route","UNRECOGNIZED_OPTIONS","Redirect","Page","COMPONENTS","RedirectToTabletCells","tabletActiveBundleLink","lastVisitedTab","getLastVisitedTabs","tabSize","UI_TAB_SIZE","_ref$lastVisitedTab","DEFAULT_TAB","Tab","nodePageMatch","matchPath","pathname","NODES","VERSIONS","HTTP_PROXIES","RPC_PROXIES","SHARDS","Shards","TABLET_CELLS","Placeholder","ComponentsTopRowContent","ComponentsTab","ComponentsNodeTopRowContent","RowWithName","page","ComponentsBreadcrumbs","nodeHost","history","useHistory","result","BreadcrumbsItem","href","Breadcrumbs","navigate","showRoot","tab","useRouteMatch","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","compact","escapeWhitespace","binaryAsHex","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getTableYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getNavigationMountConfigYsonSettings","getEditJsonYsonSettings","getPreviewCellYsonSettings","getFlowSpecYsonSettings","makeNavigationLink","NAVIGATION","search","info","URLSearchParams","reduce","_info$k$options","serialize","_info$k$options2","_info$k$options2$seri","append","makeURLSearchParams","getNavigationParams","makeProxyUrl","makeSchedulingUrl","pool","poolTree","SCHEDULING","makeAccountsUrl","account","ACCOUNTS","prepareTabletCells","tabletCells","tabletCell","peer","peerAddress","uncompressed","ypath","compressed","tablets","health","peers","find_","aggregateTotal","prepare","isTotal","collectBundlesAttrs","dst","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","bundle_controller_target_config","enable_bundle_controller","enable_bundle_balancer","changelog_account","snapshot_account","node_tag_filter","zone","tablet_count","tablet_count_limit","tablet_count_free","tablet_count_percentage","nanToUndefined","tablet_static_memory","tablet_static_memory_limit","tablet_static_memory_free","tablet_static_memory_percentage","prepareBundles","$attributes","bundleNodes","bundleList","unique_node_tag","tabletCellNavigationLink","cellId","tabletTab","TabletsTab","INSTANCES","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletCellBundleRootLink","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath"],"sourceRoot":""}
|