@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.
Files changed (94) hide show
  1. package/dist/public/build/assets-manifest.json +61 -61
  2. package/dist/public/build/css/{2209.ee64dbab.chunk.css → 2209.b618d964.chunk.css} +2 -2
  3. package/dist/public/build/css/2209.b618d964.chunk.css.map +1 -0
  4. package/dist/public/build/css/components.6375c10d.chunk.css +2 -0
  5. package/dist/public/build/css/components.6375c10d.chunk.css.map +1 -0
  6. package/dist/public/build/css/{navigation.d170ba80.chunk.css → navigation.b6f988cd.chunk.css} +2 -2
  7. package/dist/public/build/css/navigation.b6f988cd.chunk.css.map +1 -0
  8. package/dist/public/build/css/{query-tracker.94d91868.chunk.css → query-tracker.7c9d0851.chunk.css} +2 -2
  9. package/dist/public/build/css/{query-tracker.94d91868.chunk.css.map → query-tracker.7c9d0851.chunk.css.map} +1 -1
  10. package/dist/public/build/js/{1604.72f6d465.chunk.js → 1604.7b5c7976.chunk.js} +3 -3
  11. package/dist/public/build/js/1604.7b5c7976.chunk.js.map +1 -0
  12. package/dist/public/build/js/{1983.e3e6d5e8.chunk.js → 1983.034a4de9.chunk.js} +2 -2
  13. package/dist/public/build/js/1983.034a4de9.chunk.js.map +1 -0
  14. package/dist/public/build/js/{3724.f72a2691.chunk.js → 3724.1674ced1.chunk.js} +2 -2
  15. package/dist/public/build/js/3724.1674ced1.chunk.js.map +1 -0
  16. package/dist/public/build/js/3751.147f6dd9.chunk.js +2 -0
  17. package/dist/public/build/js/3751.147f6dd9.chunk.js.map +1 -0
  18. package/dist/public/build/js/4319.3407fde8.chunk.js +3 -0
  19. package/dist/public/build/js/4319.3407fde8.chunk.js.map +1 -0
  20. package/dist/public/build/js/5088.bee0a42a.chunk.js +2 -0
  21. package/dist/public/build/js/5088.bee0a42a.chunk.js.map +1 -0
  22. package/dist/public/build/js/{5653.45eec4e2.chunk.js → 5653.cff8909f.chunk.js} +2 -2
  23. package/dist/public/build/js/5653.cff8909f.chunk.js.map +1 -0
  24. package/dist/public/build/js/{acl.614f12c4.chunk.js → acl.f6256b52.chunk.js} +2 -2
  25. package/dist/public/build/js/{acl.614f12c4.chunk.js.map → acl.f6256b52.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js → app-navigation.e7dd869b.chunk.js} +2 -2
  27. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js.map → app-navigation.e7dd869b.chunk.js.map} +1 -1
  28. package/dist/public/build/js/cluster-menu.68f5e677.chunk.js +2 -0
  29. package/dist/public/build/js/{cluster-menu.381d4a48.chunk.js.map → cluster-menu.68f5e677.chunk.js.map} +1 -1
  30. package/dist/public/build/js/cluster-page-wrapper.e42322f0.chunk.js +2 -0
  31. package/dist/public/build/js/{cluster-page-wrapper.b70c30d4.chunk.js.map → cluster-page-wrapper.e42322f0.chunk.js.map} +1 -1
  32. package/dist/public/build/js/components.1ea8e03b.chunk.js +2 -0
  33. package/dist/public/build/js/components.1ea8e03b.chunk.js.map +1 -0
  34. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js → dashboard.303faf7e.chunk.js} +2 -2
  35. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js.map → dashboard.303faf7e.chunk.js.map} +1 -1
  36. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js +2 -0
  37. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js.map +1 -0
  38. package/dist/public/build/js/job.47f7b4c0.chunk.js +2 -0
  39. package/dist/public/build/js/job.47f7b4c0.chunk.js.map +1 -0
  40. package/dist/public/build/js/main.4f383c25.js +3 -0
  41. package/dist/public/build/js/main.4f383c25.js.map +1 -0
  42. package/dist/public/build/js/navigation.5512d9c6.chunk.js +2 -0
  43. package/dist/public/build/js/navigation.5512d9c6.chunk.js.map +1 -0
  44. package/dist/public/build/js/odin.96cec50a.chunk.js +2 -0
  45. package/dist/public/build/js/odin.96cec50a.chunk.js.map +1 -0
  46. package/dist/public/build/js/{operations.3535a692.chunk.js → operations.1a486c6e.chunk.js} +2 -2
  47. package/dist/public/build/js/operations.1a486c6e.chunk.js.map +1 -0
  48. package/dist/public/build/js/{query-tracker.d266354f.chunk.js → query-tracker.028a8ccf.chunk.js} +2 -2
  49. package/dist/public/build/js/query-tracker.028a8ccf.chunk.js.map +1 -0
  50. package/dist/public/build/js/{runtime.948c8e30.js → runtime.ad8a9439.js} +2 -2
  51. package/dist/public/build/js/{runtime.948c8e30.js.map → runtime.ad8a9439.js.map} +1 -1
  52. package/dist/public/build/js/{tablet.4e3852cc.chunk.js → tablet.68f185b6.chunk.js} +2 -2
  53. package/dist/public/build/js/{tablet.4e3852cc.chunk.js.map → tablet.68f185b6.chunk.js.map} +1 -1
  54. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js → yt-df-dialog.bbf72b55.chunk.js} +2 -2
  55. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js.map → yt-df-dialog.bbf72b55.chunk.js.map} +1 -1
  56. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js +2 -0
  57. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js.map +1 -0
  58. package/dist/public/build/manifest.json +56 -56
  59. package/package.json +2 -2
  60. package/dist/public/build/css/2209.ee64dbab.chunk.css.map +0 -1
  61. package/dist/public/build/css/components.fd2fa23a.chunk.css +0 -2
  62. package/dist/public/build/css/components.fd2fa23a.chunk.css.map +0 -1
  63. package/dist/public/build/css/navigation.d170ba80.chunk.css.map +0 -1
  64. package/dist/public/build/js/1604.72f6d465.chunk.js.map +0 -1
  65. package/dist/public/build/js/1983.e3e6d5e8.chunk.js.map +0 -1
  66. package/dist/public/build/js/3724.f72a2691.chunk.js.map +0 -1
  67. package/dist/public/build/js/3745.aa320ee5.chunk.js +0 -2
  68. package/dist/public/build/js/3745.aa320ee5.chunk.js.map +0 -1
  69. package/dist/public/build/js/4319.20f80209.chunk.js +0 -3
  70. package/dist/public/build/js/4319.20f80209.chunk.js.map +0 -1
  71. package/dist/public/build/js/5088.91897d9a.chunk.js +0 -2
  72. package/dist/public/build/js/5088.91897d9a.chunk.js.map +0 -1
  73. package/dist/public/build/js/5653.45eec4e2.chunk.js.map +0 -1
  74. package/dist/public/build/js/cluster-menu.381d4a48.chunk.js +0 -2
  75. package/dist/public/build/js/cluster-page-wrapper.b70c30d4.chunk.js +0 -2
  76. package/dist/public/build/js/components.4b381a1a.chunk.js +0 -2
  77. package/dist/public/build/js/components.4b381a1a.chunk.js.map +0 -1
  78. package/dist/public/build/js/default-subject-link.17448a19.chunk.js +0 -2
  79. package/dist/public/build/js/default-subject-link.17448a19.chunk.js.map +0 -1
  80. package/dist/public/build/js/job.c5cdc8c6.chunk.js +0 -2
  81. package/dist/public/build/js/job.c5cdc8c6.chunk.js.map +0 -1
  82. package/dist/public/build/js/main.03147e02.js +0 -3
  83. package/dist/public/build/js/main.03147e02.js.map +0 -1
  84. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js +0 -2
  85. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js.map +0 -1
  86. package/dist/public/build/js/odin.45cc399f.chunk.js +0 -2
  87. package/dist/public/build/js/odin.45cc399f.chunk.js.map +0 -1
  88. package/dist/public/build/js/operations.3535a692.chunk.js.map +0 -1
  89. package/dist/public/build/js/query-tracker.d266354f.chunk.js.map +0 -1
  90. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js +0 -2
  91. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js.map +0 -1
  92. /package/dist/public/build/js/{1604.72f6d465.chunk.js.LICENSE.txt → 1604.7b5c7976.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/public/build/js/{4319.20f80209.chunk.js.LICENSE.txt → 4319.3407fde8.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/public/build/js/{main.03147e02.js.LICENSE.txt → main.4f383c25.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/components.4b381a1a.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 &nbsp;\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 HostType,\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<HostType, 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 as HostType;\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 {VersionSummaryItem} from '../../../../store/reducers/components/versions/versions_v2';\nimport {isSupportedClusterNodeForVersions} from '../../../../store/selectors/thor/support';\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\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 return items;\n },\n);\n\nexport const getVersionsSummaryVisibleColumns = createSelector(\n [getSummary, isSupportedClusterNodeForVersions],\n (summary = [], useClusterNode) => {\n const visibleTypes = new Set<string>();\n const total = getTotalElementOfSummary(summary);\n Object.keys(total ?? {}).forEach((k) => {\n const key = k as keyof typeof total;\n if (total?.[key]) {\n visibleTypes.add(key);\n }\n });\n const res: Array<{type: keyof VersionSummaryItem; name: string; shortName: string}> = [];\n function tryToAdd(type: keyof VersionSummaryItem, name: string, shortName = '') {\n if (visibleTypes.has(type)) {\n res.push({type, name, shortName});\n }\n }\n\n tryToAdd('primary_master', 'Primary Masters', 'Pri Masters');\n tryToAdd('secondary_master', 'Secondary masters', 'Sec Masters');\n tryToAdd('scheduler', 'Schedulers');\n tryToAdd('controller_agent', 'Controller Agents', 'CA');\n tryToAdd(useClusterNode ? 'cluster_node' : 'node', 'Nodes');\n tryToAdd('http_proxy', 'HTTP Proxies');\n tryToAdd('rpc_proxy', 'RPC Proxies');\n tryToAdd('job_proxy', 'Job Proxies');\n tryToAdd('online', 'Online');\n tryToAdd('offline', 'Offline');\n tryToAdd('banned', 'Banned');\n\n return res;\n },\n);\n\nfunction getTotalElementOfSummary(summary: ReturnType<typeof getSummary>) {\n return summary[summary.length - 1];\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Checkbox} 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 {\n getHideOfflineValue,\n getSummarySortState,\n getVersionsSummaryData,\n getVersionsSummaryVisibleColumns,\n} from '../../../../store/selectors/components/versions/versions_v2-ts';\n\nimport hammer from '../../../../common/hammer';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\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 {VersionSummaryItem} from '../../../../store/reducers/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {formatByParams} from '../../../../utils/format';\nimport UIFactory from '../../../../UIFactory';\n\nimport {VersionCellWithAction} from './VersionCell';\nimport './VersionSummary.scss';\n\nconst block = cn('versions-summary');\n\ntype Props = ConnectedProps<typeof connector>;\n\ntype RenderData = {row: VersionSummaryItem; index: number};\n\nconst SETTINGS: DT100.Settings = {\n displayIndices: false,\n};\n\nfunction isSpecialRow(version: string) {\n return version === 'error' || version === 'total';\n}\n\nclass VersionsSummary extends React.Component<Props> {\n getColumns(): Array<DT100.Column<VersionSummaryItem>> {\n return [];\n }\n renderVersion = ({row: {version}}: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n let content;\n if (version === 'error') {\n content = (\n <React.Fragment>\n <ClickableText\n color=\"primary\"\n onClick={() => {\n changeVersionStateTypeFilters({state: 'error'});\n }}\n >\n <Icon awesome={'exclamation-triangle'} />{' '}\n {hammer.format['Readable'](version)}\n </ClickableText>\n </React.Fragment>\n );\n } else if (version === 'total') {\n content = hammer.format['Readable'](version);\n } else {\n content = (\n <div className={block('version')}>\n <VersionCellWithAction version={version} />\n </div>\n );\n }\n\n return <span className={block('value')}>{content}</span>;\n };\n renderNumber = (key: keyof VersionSummaryItem, 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 >\n {content}\n </span>\n );\n };\n\n makeColumnInfo({\n type,\n name,\n shortName,\n }: {\n type: keyof VersionSummaryItem;\n name: string;\n shortName?: string;\n }): DT100.Column<VersionSummaryItem> {\n return {\n name: shortName || name,\n title: name,\n sortable: false,\n render: this.renderNumber.bind(this, type),\n align: 'right',\n header: this.renderHeader(type, name, shortName),\n };\n }\n\n renderHeader(key: keyof VersionSummaryItem, name: string, shortName?: string) {\n const {sortState, setVersionsSummarySortState} = this.props;\n const {column, order} = sortState || {};\n return (\n <ColumnHeader<typeof key>\n column={key}\n title={name}\n shortTitle={shortName || name}\n onSort={(column, order) => {\n setVersionsSummarySortState({column, order});\n }}\n order={key === column ? order : ''}\n withUndefined\n />\n );\n }\n\n handleHideOffline = (value: boolean) => {\n this.props.changeCheckedHideOffline(value);\n };\n\n render() {\n const {visibleColumns} = this.props;\n const columns: Array<DT100.Column<VersionSummaryItem>> = [\n {\n name: 'version',\n render: this.renderVersion,\n sortable: false,\n sortAccessor: (row) => row.version,\n header: this.renderHeader('version', 'Versions'),\n },\n\n ...visibleColumns.map((item) => this.makeColumnInfo(item)),\n ];\n\n const {items, loading, loaded, cluster, checkedHideOffline} = this.props;\n const monitoringLink = UIFactory.getVersionMonitoringLink(cluster);\n\n return (\n <div className={block()}>\n <div className={block('header-actions')}>\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 <Checkbox\n title={'Hide offline'}\n content={'Hide offline'}\n defaultChecked={checkedHideOffline}\n onUpdate={this.handleHideOffline}\n />\n </div>\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={items}\n columns={columns}\n theme={'versions'}\n settings={SETTINGS}\n rowClassName={this.rowClassName}\n />\n </div>\n );\n }\n\n rowClassName(row: VersionSummaryItem) {\n return block('row', {special: isSpecialRow(row.version)});\n }\n\n onClick = (key: keyof VersionSummaryItem, data: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n const {\n row: {version: rowVersion},\n } = data;\n const isSpecial = isSpecialRow(rowVersion);\n const version = !isSpecial ? rowVersion : undefined;\n\n const state = rowVersion === 'error' ? 'error' : undefined;\n\n if (key === 'online' || key === 'offline') {\n changeVersionStateTypeFilters({version, state: state || key});\n } else if (key === 'banned') {\n changeVersionStateTypeFilters({version, banned: true});\n } else {\n changeVersionStateTypeFilters({version, type: key, state});\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded} = state.components.versionsV2;\n const cluster = getCluster(state);\n\n const items = getVersionsSummaryData(state);\n const sortState = getSummarySortState(state);\n\n const visibleColumns = getVersionsSummaryVisibleColumns(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 &nbsp;</>} 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 &nbsp;\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 &nbsp;\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 &nbsp;\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","getVersionsSummaryData","getTotalElementOfSummary","slice","sortArrayBySortState","push","getVersionsSummaryVisibleColumns","isSupportedClusterNodeForVersions","useClusterNode","visibleTypes","Set","keys","forEach","tryToAdd","shortName","SETTINGS","displayIndices","isSpecialRow","VersionsSummary","renderVersion","row","renderNumber","rowData","clickable","handleHideOffline","changeCheckedHideOffline","rowVersion","render","bind","header","renderHeader","setVersionsSummarySortState","order","ColumnHeader","shortTitle","onSort","withUndefined","visibleColumns","sortAccessor","makeColumnInfo","loading","cluster","monitoringLink","UIFactory","getVersionMonitoringLink","Link","url","formatByParams","urlTemplate","ytCluster","target","Checkbox","defaultChecked","DataTableYT","settings","rowClassName","special","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","Select","vals","width","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","component","PROXY_TYPE","HTTP","ClickableAttributesButton","path","basePath","withTooltip","MaintenanceRequestsImpl","_ref$requests","requests","_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","split","makeMaintenanceFields","makeErrorFields","makeResourceLimitField","allowOthers","extras","makeRadioExtras","_values$type","_labels$type","ban","decommission","_ref4$","activeLabel","_ref4$2","options","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","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","multiple","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","from","valid","to","SetupModal","handleApplySetup","savePreset","_this$state","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","filterable","RadioButton","radioItems","ev","handleRadioChange","_this4","nodeTags","nodeRacks","renderTextFilter","renderTagsFilter","renderStatesSelect","renderRadioGroup","_this5","mediumList","Fragment","renderFiltersGroup","medium","MEDIUM_COLS_PREFIX","_this$state2","renderDefaultFilters","renderStorageFilters","renderCpuFilters","renderResourcesFilters","renderTabletsFilters","renderCheckBox","Hotkey","hotkeySettings","Modal","onCancel","onConfirm","loadOptions","prevProps","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","sortOrder","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","backgroundColor","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","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":""}