@ytsaurus/ui 1.75.1 → 1.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +75 -75
- package/dist/public/build/css/{job.c7c99207.chunk.css → job.9757ff68.chunk.css} +2 -2
- package/dist/public/build/css/job.9757ff68.chunk.css.map +1 -0
- package/dist/public/build/css/main.0efa9da5.css +10 -0
- package/dist/public/build/css/main.0efa9da5.css.map +1 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css +2 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css.map +1 -0
- package/dist/public/build/js/{1260.534f3f75.chunk.js → 1260.a1e22005.chunk.js} +2 -2
- package/dist/public/build/js/{1260.534f3f75.chunk.js.map → 1260.a1e22005.chunk.js.map} +1 -1
- package/dist/public/build/js/{1879.23423388.chunk.js → 1879.3975650a.chunk.js} +3 -3
- package/dist/public/build/js/{1879.23423388.chunk.js.map → 1879.3975650a.chunk.js.map} +1 -1
- package/dist/public/build/js/{1983.666923be.chunk.js → 1983.64a2e22f.chunk.js} +2 -2
- package/dist/public/build/js/{1983.666923be.chunk.js.map → 1983.64a2e22f.chunk.js.map} +1 -1
- package/dist/public/build/js/{2447.b2877275.chunk.js → 2447.eb8fde89.chunk.js} +2 -2
- package/dist/public/build/js/{2447.b2877275.chunk.js.map → 2447.eb8fde89.chunk.js.map} +1 -1
- package/dist/public/build/js/3724.3e5848f0.chunk.js +2 -0
- package/dist/public/build/js/{3724.425d01ec.chunk.js.map → 3724.3e5848f0.chunk.js.map} +1 -1
- package/dist/public/build/js/6729.39d7cf60.chunk.js +2 -0
- package/dist/public/build/js/6729.39d7cf60.chunk.js.map +1 -0
- package/dist/public/build/js/{7959.95ebd185.chunk.js → 7959.faac2ff8.chunk.js} +2 -2
- package/dist/public/build/js/{7959.95ebd185.chunk.js.map → 7959.faac2ff8.chunk.js.map} +1 -1
- package/dist/public/build/js/{8390.83f4531a.chunk.js → 8390.c3d2de6a.chunk.js} +2 -2
- package/dist/public/build/js/{8390.83f4531a.chunk.js.map → 8390.c3d2de6a.chunk.js.map} +1 -1
- package/dist/public/build/js/{8460.2d4d237e.chunk.js → 8460.fc8e2238.chunk.js} +2 -2
- package/dist/public/build/js/{8460.2d4d237e.chunk.js.map → 8460.fc8e2238.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.e18e655b.chunk.js → 8778.f3ea089f.chunk.js} +2 -2
- package/dist/public/build/js/{8778.e18e655b.chunk.js.map → 8778.f3ea089f.chunk.js.map} +1 -1
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js → 9558.6a4bf9a9.chunk.js} +2 -2
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js.map → 9558.6a4bf9a9.chunk.js.map} +1 -1
- package/dist/public/build/js/9569.aac48f3b.chunk.js +2 -0
- package/dist/public/build/js/9569.aac48f3b.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts.2ba221c2.chunk.js → accounts.aa7ed73f.chunk.js} +2 -2
- package/dist/public/build/js/accounts.aa7ed73f.chunk.js.map +1 -0
- package/dist/public/build/js/{acl.c948c339.chunk.js → acl.4cd54663.chunk.js} +2 -2
- package/dist/public/build/js/{acl.c948c339.chunk.js.map → acl.4cd54663.chunk.js.map} +1 -1
- package/dist/public/build/js/{app-navigation.b062662b.chunk.js → app-navigation.13c65573.chunk.js} +2 -2
- package/dist/public/build/js/app-navigation.13c65573.chunk.js.map +1 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js +2 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js.map +1 -0
- package/dist/public/build/js/{components.bbe331cb.chunk.js → components.b39828bc.chunk.js} +2 -2
- package/dist/public/build/js/components.b39828bc.chunk.js.map +1 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js +2 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js.map +1 -0
- package/dist/public/build/js/main.6375dbc6.js +3 -0
- package/dist/public/build/js/main.6375dbc6.js.map +1 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js +2 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js.map +1 -0
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js → navigation-flow.6d67215a.chunk.js} +2 -2
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js.map → navigation-flow.6d67215a.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.529208de.chunk.js +2 -0
- package/dist/public/build/js/navigation.529208de.chunk.js.map +1 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js +2 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js.map +1 -0
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js → path-viewer.c091d9f4.chunk.js} +2 -2
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js.map → path-viewer.c091d9f4.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js → query-navigation.b1574290.chunk.js} +2 -2
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js.map → query-navigation.b1574290.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-results.733b1795.chunk.js → query-results.0a05cc41.chunk.js} +2 -2
- package/dist/public/build/js/{query-results.733b1795.chunk.js.map → query-results.0a05cc41.chunk.js.map} +1 -1
- package/dist/public/build/js/query-tracker.515069f6.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.515069f6.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.481a6d3a.js → runtime.09217c31.js} +2 -2
- package/dist/public/build/js/{runtime.481a6d3a.js.map → runtime.09217c31.js.map} +1 -1
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js → scheduling.6448eabd.chunk.js} +2 -2
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js.map → scheduling.6448eabd.chunk.js.map} +1 -1
- package/dist/public/build/js/system.1114aa96.chunk.js +2 -0
- package/dist/public/build/js/system.1114aa96.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.9ddda260.chunk.js → yt-df-dialog.4ad719bf.chunk.js} +2 -2
- package/dist/public/build/js/yt-df-dialog.4ad719bf.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +70 -70
- package/dist/shared/constants/settings-types.d.ts +1 -0
- package/package.json +3 -2
- package/dist/public/build/css/job.c7c99207.chunk.css.map +0 -1
- package/dist/public/build/css/main.2d3cbfcd.css +0 -10
- package/dist/public/build/css/main.2d3cbfcd.css.map +0 -1
- package/dist/public/build/css/navigation.0a9042b3.chunk.css +0 -2
- package/dist/public/build/css/navigation.0a9042b3.chunk.css.map +0 -1
- package/dist/public/build/js/3724.425d01ec.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js.map +0 -1
- package/dist/public/build/js/6729.da9aa02f.chunk.js +0 -2
- package/dist/public/build/js/6729.da9aa02f.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.2ba221c2.chunk.js.map +0 -1
- package/dist/public/build/js/app-navigation.b062662b.chunk.js.map +0 -1
- package/dist/public/build/js/chyt.7f99f87d.chunk.js +0 -2
- package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js.map +0 -1
- package/dist/public/build/js/components.bbe331cb.chunk.js.map +0 -1
- package/dist/public/build/js/job.4fc50056.chunk.js +0 -2
- package/dist/public/build/js/job.4fc50056.chunk.js.map +0 -1
- package/dist/public/build/js/main.7981a440.js +0 -3
- package/dist/public/build/js/main.7981a440.js.map +0 -1
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js +0 -2
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.d891266d.chunk.js +0 -2
- package/dist/public/build/js/navigation.d891266d.chunk.js.map +0 -1
- package/dist/public/build/js/odin.df1cfe56.chunk.js +0 -2
- package/dist/public/build/js/odin.df1cfe56.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +0 -1
- package/dist/public/build/js/system.f759d3f0.chunk.js +0 -2
- package/dist/public/build/js/system.f759d3f0.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.9ddda260.chunk.js.map +0 -1
- /package/dist/public/build/js/{1879.23423388.chunk.js.LICENSE.txt → 1879.3975650a.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.7981a440.js.LICENSE.txt → main.6375dbc6.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/3724.425d01ec.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/actions/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/tablet-cell-bundle-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/support.ts","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts-selector.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 metrics from '../../common/utils/metrics';\n\nimport find_ from 'lodash/find';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChytNS,\n getClusterNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {reloadSetting, setSetting} from '../../store/actions/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getTabletsActiveBundle} from '../selectors/tablet_cell_bundles';\n\nconst LAST_VISITED_BUFFER_SIZE = 15;\n\nexport function accountsTrackVisit(account) {\n return (dispatch, getState) => {\n const activeAccount = getActiveAccount(getState());\n if (account === activeAccount) {\n return;\n }\n\n const parentNS = getAccountsNS(getState());\n return dispatch(trackLastVisited(account, parentNS));\n };\n}\n\nexport function navigationTrackVisit(path) {\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(trackLastVisited(path, parentNS));\n };\n}\n\nexport function bundlesTrackVisit(bundle) {\n return (dispatch, getState) => {\n const state = getState();\n const activeBundle = getTabletsActiveBundle(state);\n if (!bundle || bundle === activeBundle) {\n return;\n }\n const parentNS = getBundlesNS(state);\n return dispatch(trackLastVisited(bundle, parentNS));\n };\n}\n\nfunction trackLastVisited(value, parentNS, settingName = SettingName.LOCAL.LAST_VISITED) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = makeGetSetting(state)(settingName, parentNS) || [];\n const currentPathItem = {path: value, count: 1};\n\n return dispatch(\n setSetting(\n settingName,\n parentNS,\n current\n .reduce(\n (updated, item) => {\n if (item.path === value) {\n currentPathItem.count += item.count;\n } else {\n updated.push(item);\n }\n\n return updated;\n },\n [currentPathItem],\n )\n .slice(0, LAST_VISITED_BUFFER_SIZE),\n ),\n );\n });\n };\n}\n\nexport function accountsToggleFavourite(account) {\n metrics.countEvent({\n 'accounts_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getAccountsNS(getState());\n return dispatch(toggleFavourite(account, parentNS));\n };\n}\n\nexport function chytToggleFavourite(clique) {\n metrics.countEvent({\n 'chyt_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const chytNS = getChytNS(getState());\n return dispatch(toggleFavourite(clique, chytNS));\n };\n}\n\nexport function navigationToggleFavourite(path) {\n metrics.countEvent({\n 'navigation_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(toggleFavourite(path, parentNS));\n };\n}\n\nexport function bundlesToggleFavourite(bundle) {\n metrics.countEvent({\n 'accounts_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getBundlesNS(getState());\n return dispatch(toggleFavourite(bundle, parentNS));\n };\n}\n\nexport function toggleFavourite(value, parentNS, settingName = SettingName.LOCAL.FAVOURITES) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = [...(makeGetSetting(state)(settingName, parentNS) || [])];\n const currentPathItem = {path: value};\n\n const entry = find_(current, currentPathItem);\n\n if (entry) {\n current.splice(current.indexOf(entry), 1);\n } else {\n current.push(currentPathItem);\n }\n\n return dispatch(setSetting(settingName, parentNS, current));\n });\n };\n}\n","import capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n ACCOUNT_RESOURCE_TYPES_DESCRIPTION,\n AccountResourceName,\n AccountResourceNameType,\n ROOT_ACCOUNT_NAME,\n} from '../../../constants/accounts/accounts';\nimport hammer from '../../../common/hammer';\nimport {FIX_MY_TYPE} from '../../../types';\nimport {getMediumListNoCache} from '../thor';\nimport ypath from '../../../common/thor/ypath';\n\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../utils/utils';\n\nfunction isTopLevelAccount(account: AccountSelector) {\n const parent = ypath.getValue(account, '/@parent_name');\n return !parent || parent === ROOT_ACCOUNT_NAME;\n}\n\nconst getAccountsLoading = (state: RootState) => state.accounts.accounts.fetching;\nconst getAccountsLoaded = (state: RootState) => state.accounts.accounts.wasLoaded;\nconst getAccountsError = (state: RootState) => state.accounts.accounts.error;\n\nexport const getAccountsIsFinalLoadingStatus = createSelector(\n [getAccountsLoading, getAccountsLoaded, getAccountsError],\n (loading, loaded, error) => {\n const status = calculateLoadingStatus(loading, loaded, error);\n return isFinalLoadingStatus(status);\n },\n);\n\nexport const getActiveAccount = (state: RootState) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state: RootState) =>\n state.accounts.accounts.activeMediumFilter;\nexport const getAccountsContentMode = (state: RootState) =>\n state.accounts.accounts.activeContentModeFilter;\nexport const getAccountsMasterMemoryContentMode = (state: RootState) =>\n state.accounts.accounts.masterMemoryContentMode;\nexport const getEditableAccount = (state: RootState) =>\n state.accounts.accounts.editableAccount as AccountSelector;\n\nexport const getAccountsDisabledCacheForNextFetch = (state: RootState) =>\n state.accounts.accounts.disableCacheForNextFetch;\nexport const getAccountsEditCounter = (state: RootState) => state.accounts.accounts.editCounter;\n\nexport interface AccountSelector {\n name: string;\n alertsCount: number;\n perMedium: {[key: string]: number};\n\n $value: string;\n $attributes: unknown;\n parent?: string;\n\n master_memory_detailed: {\n nodes?: number;\n chunks?: number;\n attributes?: number;\n tablets?: number;\n schemas?: number;\n };\n\n getDiskSpaceProgressInfo(mediumType: string, recursive?: boolean): ProgressInfo;\n\n getNodeCountProgressInfo(recursive?: boolean): ProgressInfo;\n getChunkCountProgressInfo(recursive?: boolean): ProgressInfo;\n getTabletStaticMemoryInfo(recursive?: boolean): ProgressInfo;\n}\n\ninterface ProgressInfo {\n total?: number;\n limit?: number;\n}\n\ninterface AccountsAggregation {\n totalNodeCount: number;\n nodeCountLimit: number;\n\n totalChunkCount: number;\n chunkCountLimit: number;\n\n perMedium: {\n [mediumType: string]: {\n totalDiskSpace: number;\n diskSpaceLimit: number;\n };\n };\n\n totalTabletCount: number;\n tabletCountLimit: number;\n\n totalTabletStaticMemory: number;\n tabletStaticMemoryLimit: number;\n\n totalMasterMemory: number;\n masterMemoryLimit: number;\n}\n\nexport interface AccountsTreeItem {\n attributes: AccountSelector;\n isAggregation: boolean;\n}\n\nexport interface AccountStaticConfigurationItem {\n name: string;\n level?: number;\n\n format: 'Bytes' | 'Number';\n total?: number;\n used?: number;\n free?: number;\n}\n\nconst getAccounts = (state: RootState) =>\n state.accounts.accounts.accounts as Array<AccountSelector>;\n\nexport const getAccountNames = createSelector(getAccounts, (items: Array<FIX_MY_TYPE>) =>\n map_(items, (i) => i.$value).sort(),\n);\n\nexport const getAccountsMapByName = createSelector(getAccounts, (accounts) => {\n const nameToAccountMap: Record<string, AccountSelector> = {};\n forEach_(accounts, (item) => {\n nameToAccountMap[item.name] = item;\n });\n return nameToAccountMap;\n});\n\nexport const getAccountsTree = createSelector([getAccountsMapByName], prepareAccountsTree);\n\ntype Tree<T> = {\n attributes: T;\n children: Array<T>;\n name: string;\n parent?: string;\n};\n\nexport type AccountsTree = Tree<AccountSelector>;\n\nfunction prepareAccountsTree(\n nameToAccountMap: Record<string, AccountSelector>,\n): Record<string, AccountsTree> {\n const tree = hammer.treeList.prepareTree(nameToAccountMap, (item: AccountSelector) => {\n if (nameToAccountMap[item.parent!] === undefined) {\n // specific case when parent account is removed\n // child should be attahed to the upper level\n return '<Root>';\n }\n\n return item.parent || '<Root>';\n });\n\n return tree;\n}\n\nfunction makeStaticConfigurationItem(\n name: string,\n format: 'Bytes' | 'Number',\n {total, limit}: {total?: number; limit?: number},\n level?: number,\n): [AccountStaticConfigurationItem] | [] {\n if (!total && !limit) {\n return [];\n }\n\n return [\n {\n name,\n level,\n format,\n used: total,\n total: limit,\n free: (limit || 0) - (total || 0),\n },\n ];\n}\n\nexport const getActiveAccountStaticConfiguration = createSelector(\n [getActiveAccount, getAccountsTree, getMediumListNoCache],\n (activeAccount, tree = {}, mediums = []) => {\n const item = tree[activeAccount];\n if (!item) {\n return [];\n }\n\n const mediumsInfo: Array<AccountStaticConfigurationItem> = [];\n for (const i of mediums) {\n mediumsInfo.push(\n ...makeStaticConfigurationItem(\n capitalize_(i),\n 'Bytes',\n item.attributes.getDiskSpaceProgressInfo(i, true),\n 1,\n ),\n );\n }\n\n if (mediumsInfo.length) {\n mediumsInfo.splice(0, 0, {\n name: 'Media',\n format: 'Number',\n });\n }\n\n const res: Array<AccountStaticConfigurationItem> = [\n ...mediumsInfo,\n ...makeStaticConfigurationItem(\n 'Nodes',\n 'Number',\n item.attributes.getNodeCountProgressInfo(true),\n ),\n ...makeStaticConfigurationItem(\n 'Chunks',\n 'Number',\n item.attributes.getChunkCountProgressInfo(true),\n ),\n ];\n\n return res;\n },\n);\n\nfunction getAggregatedByType(\n aggr: AccountsAggregation,\n type: AccountResourceNameType,\n mediumType = '',\n) {\n switch (type) {\n case AccountResourceName.DISK_SPACE_PER_MEDIUM:\n return {\n progress: undefined,\n total: aggr.perMedium[mediumType]?.totalDiskSpace,\n limit: aggr.perMedium[mediumType]?.diskSpaceLimit,\n };\n case AccountResourceName.NODE_COUNT:\n return {\n progress: undefined,\n total: aggr.totalNodeCount,\n limit: aggr.nodeCountLimit,\n };\n case AccountResourceName.CHUNK_COUNT:\n return {\n progress: undefined,\n total: aggr.totalChunkCount,\n limit: aggr.chunkCountLimit,\n };\n case AccountResourceName.TABLET_STATIC_MEMORY:\n return {\n progress: undefined,\n total: aggr.totalTabletStaticMemory,\n limit: aggr.tabletStaticMemoryLimit,\n };\n case AccountResourceName.TABLET_COUNT:\n return {\n progress: undefined,\n total: aggr.totalTabletCount,\n limit: aggr.tabletCountLimit,\n };\n case AccountResourceName.MASTER_MEMORY: {\n const {total, limit} =\n get_(aggr, accountMemoryMediumToFieldName('master_memory/' + mediumType)) || {};\n return {progress: undefined, total, limit};\n }\n }\n}\n\nfunction getResourceInfo(\n entry: AccountsTreeItem,\n type: AccountResourceNameType,\n activeAccount?: string,\n mediumType?: string,\n) {\n if (entry.isAggregation) {\n return getAggregatedByType(entry.attributes as any, type, mediumType);\n }\n const {getInfo} = ACCOUNT_RESOURCE_TYPES_DESCRIPTION[type];\n const name = getAccountName(entry);\n const recursive = name !== activeAccount;\n return getInfo(entry.attributes, recursive, mediumType);\n}\n\nexport const getAccountMasterMemoryMedia = createSelector([getAccounts], (items = []) => {\n const [item] = items;\n if (!item) {\n return [];\n }\n\n const perCell = ypath.getValue(item, '/@resource_usage/master_memory/per_cell');\n const mediums = map_(keys_(perCell), (key) => {\n return `per_cell/${key}`;\n });\n\n return ['total', 'chunk_host', ...mediums];\n});\n\nconst getAccountsMasterMemoryColumns = createSelector(\n [getActiveAccount, getAccountsMasterMemoryContentMode],\n (activeAccount, medium) => {\n return {\n master_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.progress;\n },\n },\n master_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.total;\n },\n },\n master_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.limit;\n },\n },\n master_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} =\n getResourceInfo(entry, AccountResourceName.MASTER_MEMORY, '', medium) || {};\n return total !== undefined && limit - total;\n },\n },\n\n master_memory_detailed_nodes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.nodes;\n },\n },\n\n master_memory_detailed_chunks: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.chunks;\n },\n },\n\n master_memory_detailed_attributes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.attributes;\n },\n },\n\n master_memory_detailed_tablets: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.tablets;\n },\n },\n\n master_memory_detailed_schemas: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.schemas;\n },\n },\n };\n },\n);\n\nexport const getAccountsColumnFields = createSelector(\n [getActiveAccount, getActiveMediumFilter, getAccountsMasterMemoryColumns],\n (activeAccount, mediumType, accountsColumns) => {\n const res = {\n name: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.name;\n },\n },\n alerts: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.alertsCount;\n },\n },\n disk_space_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.progress;\n },\n },\n disk_space_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.limit;\n },\n },\n disk_space_free: {\n get: (entry: AccountsTreeItem) => {\n const {limit, total} =\n getResourceInfo(entry, 'disk_space_per_medium', '', mediumType) || {};\n\n return total !== undefined && limit - total;\n },\n },\n node_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.total;\n },\n },\n node_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.limit;\n },\n },\n node_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'node_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n chunk_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.total;\n },\n },\n chunk_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.limit;\n },\n },\n chunk_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'chunk_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.total;\n },\n },\n tablet_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_static_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_static_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.total;\n },\n },\n tablet_static_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_static_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_static_memory', '') || {};\n return total !== undefined && limit - total;\n },\n },\n ...accountsColumns,\n };\n return res;\n },\n);\n\nexport function getAccountName(treeItem?: {attributes: AccountSelector}) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nexport const getEditableAccountQuotaSources = createSelector(\n [getAccountsTree, getEditableAccount],\n (tree, account) => {\n if (!account?.name || !tree) {\n return [];\n }\n const res = collectSubtreeItems(account.name, tree);\n\n return res.sort();\n },\n);\n\nfunction collectSubtreeItems(\n account: string,\n tree: Record<string, AccountsTree>,\n collected = new Set<string>(),\n): Array<string> {\n if (collected.has(account)) {\n return [];\n }\n\n collected.add(account);\n\n const res = [] as Array<string>;\n const {parent, children, attributes} = tree[account] || {};\n const isTopLevel = isTopLevelAccount(attributes);\n if (parent && tree[parent] && !isTopLevel && !collected.has(parent)) {\n res.push(parent);\n const parentItems = collectSubtreeItems(parent, tree, collected);\n res.push(...parentItems);\n }\n forEach_(children, (item) => {\n if (collected.has(item.name)) {\n return;\n }\n res.push(item.name);\n const childItems = collectSubtreeItems(item.name, tree, collected);\n res.push(...childItems);\n });\n return res;\n}\n\nexport const isEditableAccountOfTopLevel = createSelector(\n [getAccountsMapByName, getEditableAccount],\n (mapByName, account) => {\n return isTopLevelAccount(mapByName[account?.name]);\n },\n);\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport set_ from 'lodash/set';\n\nimport {createSelector} from 'reselect';\nimport {ACCOUNTS_TABLE_ID, ROOT_ACCOUNT_NAME} from '../../../constants/accounts/accounts';\nimport {getTables} from '../../../store/selectors/tables';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {\n getAccountMasterMemoryMedia,\n getAccountNames,\n getAccountsColumnFields,\n getAccountsMapByName,\n getAccountsTree,\n} from './accounts-ts';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {visitTreeItems} from '../../../utils/utils';\n\nexport const getActiveAccount = (state) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state) => state.accounts.accounts.activeMediumFilter;\nexport const getUsableAccounts = (state) => state.accounts.accounts.usableAccounts;\nexport const getAccountsNameFilter = (state) => state.accounts.accounts.activeNameFilter;\nexport const getAccountsAbcServiceIdSlugFilter = (state) =>\n state.accounts.accounts.abcServiceFilter;\nexport const getAccountsSortInfo = (state) => getTables(state)[ACCOUNTS_TABLE_ID];\n\nexport const getEditableAccount = (state) => state.accounts.accounts.editableAccount;\n\nconst getEditableAccountSubtreeNames = createSelector(\n [getAccountsTree, getEditableAccount],\n prepareSubtreeNames,\n);\n\nexport const getEditableAccountParentSuggests = createSelector(\n [getAccountNames, getEditableAccountSubtreeNames],\n (allNames, excludeNames) => {\n const excludeNamesSet = new Set(excludeNames);\n return filter_(allNames, (name) => !excludeNamesSet.has(name));\n },\n);\n\nconst getFlattenTree = createSelector(\n [getAccountsTree, getActiveAccount, getAccountsNameFilter, getAccountsAbcServiceIdSlugFilter],\n prepareAccountsFlattenTreeImpl,\n);\n\nexport const getActiveAccountSubtree = createSelector(\n getActiveAccount,\n getFlattenTree,\n getActiveAccountSubtreeImpl,\n);\n\nexport const getActiveAccountAggregationRow = createSelector(\n [getActiveAccountSubtree, getAccountMasterMemoryMedia],\n ({activeTreeItem}, masterMemoryMedia) => calcAggregationRow(activeTreeItem, masterMemoryMedia),\n);\n\nexport const getActiveAccountSubtreeNames = createSelector(\n getActiveAccountSubtree,\n getActiveAccountSubtreeNamesImpl,\n);\n\nexport const prepareAccountsFlattenTree = createSelector(\n [getAccountsSortInfo, getFlattenTree, getAccountsColumnFields],\n sortFlattenTree,\n);\n\nexport function getAccountName(treeItem) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nfunction prepareSubtreeNames(tree, account) {\n if (isEmpty_(tree) || isEmpty_(account)) {\n return [];\n }\n\n const res = [];\n hammer.treeList.treeForEach(tree[account.name], (node) => {\n res.push(getAccountName(node));\n });\n return res;\n}\n\nfunction prepareAccountsFlattenTreeImpl(treeList, activeAccount, nameFilter = '', {slug} = {}) {\n let root = treeList['<Root>'];\n if (root === undefined) {\n return [];\n }\n\n if (activeAccount && treeList[activeAccount]) {\n root = {...root, children: [treeList[activeAccount]]};\n }\n\n let filteredRoot = root;\n\n const isRoot = (treeNode) => {\n const {attributes: account} = treeNode;\n return treeNode === root || account.name === activeAccount;\n };\n\n const predicates = [];\n if (nameFilter) {\n predicates.push((treeNode) => {\n const {attributes: account} = treeNode;\n const {name} = account;\n\n return isRoot(treeNode) || -1 !== name.indexOf(nameFilter);\n });\n }\n\n if (slug) {\n predicates.push((treeNode) => {\n return isRoot(treeNode) || slug === ypath.getValue(treeNode.attributes, '/@abc/slug');\n });\n }\n\n if (predicates.length) {\n filteredRoot = hammer.treeList.filterTree(root, concatByAnd(...predicates));\n }\n\n return filteredRoot;\n}\n\nfunction sortFlattenTree(sortInfo, flattenTree = [], columnFields) {\n if (sortInfo) {\n hammer.treeList.sortTree(flattenTree, sortInfo, columnFields);\n }\n\n const sortedTree = hammer.treeList.flattenTree(flattenTree);\n return sortedTree;\n}\n\nfunction findByName(treeNode, name) {\n if (name === getAccountName(treeNode)) {\n return treeNode;\n }\n\n for (const childNode of treeNode.children || []) {\n const res = findByName(childNode, name);\n if (res) {\n return res;\n }\n }\n\n return undefined;\n}\n\nfunction getActiveAccountSubtreeImpl(activeAccount, treeRoot) {\n if (!activeAccount) {\n return {treeRoot};\n }\n\n const activeTreeItem = findByName(treeRoot, activeAccount);\n return {treeRoot, activeTreeItem};\n}\n\nconst AGGREGATION_FIELDS = [\n 'totalNodeCount',\n 'nodeCountLimit',\n 'totalChunkCount',\n 'chunkCountLimit',\n 'totalTabletCount',\n 'tabletCountLimit',\n 'totalTabletStaticMemory',\n 'tabletStaticMemoryLimit',\n 'totalMasterMemory',\n 'masterMemoryLimit',\n 'master_memory_detailed.nodes',\n 'master_memory_detailed.chunks',\n 'master_memory_detailed.attributes',\n 'master_memory_detailed.tablets',\n 'master_memory_detailed.schemas',\n];\n\nconst AGGREGATION_PER_MEDIUM_FIELDS = ['totalDiskSpace', 'diskSpaceLimit'];\nconst AGGREGATION_MASTER_MEMORY_FIELDS = ['total', 'limit'];\n\nfunction addIfDefined(dst, src, key) {\n const srcValue = get_(src, key);\n const dstValue = get_(dst, key);\n if (srcValue === null || srcValue === undefined) {\n return dstValue;\n }\n\n return (dstValue || 0) + srcValue;\n}\n\nfunction calcAggregationRow(treeItem, masterMemoryMedia) {\n const {children} = treeItem || {};\n if (!children || !children.length) {\n return null;\n }\n\n const aggAccount = {\n name: 'Aggregation',\n perMedium: {},\n };\n\n forEach_(children, (treeItem) => {\n const {attributes: account} = treeItem;\n forEach_(AGGREGATION_FIELDS, (key) => {\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n\n forEach_(account.perMedium, (data, mediumType) => {\n forEach_(AGGREGATION_PER_MEDIUM_FIELDS, (key) => {\n let aggMediumData = aggAccount.perMedium[mediumType];\n if (!aggMediumData) {\n aggMediumData = aggAccount.perMedium[mediumType] = {};\n }\n aggMediumData[key] = addIfDefined(aggMediumData, data, key);\n });\n });\n\n forEach_(masterMemoryMedia, (medium) => {\n forEach_(AGGREGATION_MASTER_MEMORY_FIELDS, (field) => {\n const srcField = accountMemoryMediumToFieldName('master_memory/' + medium);\n const key = `${srcField}.${field}`;\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n });\n });\n\n const aggTreeItem = {\n isAggregation: true,\n children: [],\n attributes: aggAccount,\n parent: treeItem.name,\n name: treeItem.name + '/Aggregation',\n };\n\n return aggTreeItem;\n}\n\nfunction getActiveAccountSubtreeNamesImpl({activeTreeItem}) {\n const res = [];\n visitTreeItems(activeTreeItem, (item) => {\n res.push(getAccountName(item));\n });\n return res;\n}\n\nexport const getActiveAccountBreadcrumbs = createSelector(\n getActiveAccount,\n getAccountsMapByName,\n (activeAccount, nameToAccountMap) => {\n const parentNode = (name) => {\n const account = nameToAccountMap[name] || {attributes: {}};\n return account && account.parent;\n };\n\n const loaded = nameToAccountMap[activeAccount] !== undefined;\n const namesArr = [];\n if (loaded) {\n let name = activeAccount;\n while (name && name !== ROOT_ACCOUNT_NAME) {\n namesArr.push(name);\n name = parentNode(name);\n }\n }\n const items = [\n {text: '<Accounts>', url: '', title: ''},\n ...map_(namesArr.reverse(), (name) => {\n return {\n value: name,\n text: name,\n url: `?account=${name}`,\n title: name,\n };\n }),\n ];\n return items;\n },\n);\n","import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n aggregateTotal,\n tabletActiveBundleLink,\n tabletCellBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {\n AllocatedInstancesMap,\n InProgressInstancesMap,\n TabletBundle,\n TabletCell,\n} from '../../../store/reducers/tablet_cell_bundles';\nimport {createSelector} from 'reselect';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {prepareHost} from '../../../utils';\nimport {getCluster} from '../global';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\nimport {makeComponentsNodesUrl, makeProxyUrl} from '../../../utils/app-url';\nimport {\n getTabletCellBundleControllerInstanceDetailsMap,\n getTabletCellBundleEditorState,\n} from './tablet-cell-bundle-editor';\nimport {BundleControllerInstanceDetails} from '../../../store/reducers/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport UIFactory from '../../../UIFactory';\n\nexport const getTabletsIsLoaded = (state: RootState) => state.tablet_cell_bundles.loaded;\nexport const getTabletsIsLoading = (state: RootState) => state.tablet_cell_bundles.loading;\nexport const getTabletsError = (state: RootState) => state.tablet_cell_bundles.error;\n\nexport const getTabletsBundlesSortState = (state: RootState) =>\n state.tablet_cell_bundles.bundlesSort;\n\nexport const getTabletsBundlesNameFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesNameFilter;\nexport const getTabletsBundlesAccountFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesAccountFilter;\nexport const getTabletsBundlesTagNodeFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTagNodeFilter;\n\nexport const getTabletsBundles = (state: RootState) => state.tablet_cell_bundles.bundles;\n\nexport const getTabletsActiveBundle = (state: RootState) => state.tablet_cell_bundles.activeBundle;\n\nexport const getBundleDefaultConfig = (state: RootState) =>\n state.tablet_cell_bundles.bundleDefaultConfig;\n\nexport const getTabletBundlesTableMode = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTableMode;\n\nexport const getTabletBundlesWriteableByName = (state: RootState) =>\n state.tablet_cell_bundles.writableByName;\n\nexport const getTabletsActiveBundleData = createSelector(\n [getTabletsBundles, getTabletsActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getTabletsDefaultMemoryConfiguration = createSelector(\n [getBundleDefaultConfig, getTabletCellBundleEditorState],\n (config, editorState) => {\n if (!config) return 0;\n const nodeSizes = config.zone_default.tablet_node_sizes;\n\n const key =\n editorState.bundleData?.bundle_controller_target_config?.tablet_node_resource_guarantee\n .type;\n\n if (!key || !(key in nodeSizes)) return 0;\n return nodeSizes[key as string].default_config.memory_limits?.reserved || 0;\n },\n);\n\nfunction prepareBundleInstances(\n allocated: AllocatedInstancesMap,\n inProgresss: InProgressInstancesMap,\n instanceDetailsMap: Record<string, BundleControllerInstanceDetails>,\n makeUrl: (address: string) => string,\n) {\n return [\n ...map_(allocated, (data, address) => {\n const details = instanceDetailsMap?.[address] || {};\n\n const {pod_id, yp_cluster} = data || {};\n const deployUrl = UIFactory.getNodeDeployUrl(yp_cluster, pod_id);\n\n const {nanny_service, tablet_static_memory} = details;\n const nannyUrl = UIFactory.getNodeNannyUrl({nanny_service, pod_id, yp_cluster});\n\n return {\n address,\n data,\n url: makeUrl(address),\n allocationState: data.removing ? ('removing' as const) : undefined,\n tablet_static_memory,\n deployUrl,\n nannyUrl,\n };\n }),\n ...map_(inProgresss, (item) => {\n return {\n data: item.instance_info,\n allocationState: item.hulk_request_state,\n hulkRequestPath: item.hulk_request_link,\n };\n }),\n ];\n}\n\nexport const getActiveBundleControllerData = createSelector(\n [getTabletsActiveBundle, getTabletCellBundleEditorState],\n (activeBundle, {bundleData, bundleControllerData}) => {\n if (activeBundle !== bundleData?.bundle) {\n return undefined;\n }\n\n return bundleControllerData;\n },\n);\n\nexport const getActiveBundleInstances = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_tablet_nodes, allocating_tablet_nodes} = bundleControllerData;\n return prepareBundleInstances(\n allocated_tablet_nodes,\n allocating_tablet_nodes,\n instanceDetailsMap,\n (address) => makeComponentsNodesUrl({host: address, cluster}),\n );\n },\n);\n\nexport const getActiveBundleProxies = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_rpc_proxies, allocating_rpc_proxies} = bundleControllerData;\n return prepareBundleInstances(\n allocated_rpc_proxies,\n allocating_rpc_proxies,\n instanceDetailsMap,\n (address) => makeProxyUrl(cluster, address),\n );\n },\n);\n\nexport const getBundleEditorData = createSelector(\n [getTabletCellBundleEditorState, getBundleDefaultConfig],\n (editorState, defaultConfig) => {\n const {bundleData, data} = editorState;\n const {zone} = bundleData || {};\n return {\n data,\n bundleData,\n defaultConfig: defaultConfig?.[zone || ''],\n };\n },\n);\n\nexport const getTabletsBundlesTotal = createSelector(\n [getTabletsBundles],\n (bundles): TabletBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof TabletBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'enable_bundle_controller',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getTabletsBundlesFiltered = createSelector(\n [\n getTabletsBundles,\n getTabletsBundlesNameFilter,\n getTabletsBundlesAccountFilter,\n getTabletsBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: TabletBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getTabletsBundlesSorted = createSelector(\n [getTabletsBundlesFiltered, getTabletsBundlesSortState],\n (bundles, sortState) => {\n const {column, order} = sortState || {};\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getTabletsCells = (state: RootState) => state.tablet_cell_bundles.cells;\nexport const getTabletsCellsSortState = (state: RootState) => state.tablet_cell_bundles.cellsSort;\n\nexport const getTabletsCellsIdFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsIdFilter;\nexport const getTabletsCellsBundleFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsBundleFilter;\nexport const getTabletsCellsHostFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsHostFilter;\n\nexport const getTabletCellsOfActiveAccount = createSelector(\n [getTabletsCells, getTabletsActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getTabletsCellsFiltered = createSelector(\n [\n getTabletCellsOfActiveAccount,\n getTabletsCellsIdFilter,\n getTabletsCellsBundleFilter,\n getTabletsCellsHostFilter,\n getTabletsActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: TabletCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterTabletCellsByBundle(bundle: string, cells: Array<TabletCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getTabletsCellsSorted = createSelector(\n [getTabletsCellsFiltered, getTabletsCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getTabletsCellsBundles = createSelector([getTabletsCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getTabletsCellsHosts = createSelector([getTabletCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getTabletsCellsHostsOfActiveBundle = createSelector(\n [getTabletsActiveBundle, getTabletsCellsFiltered],\n (activeBundle: string, cells: Array<TabletCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<TabletCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface TabletsCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getTabletsBreadcrumbItems = createSelector(\n [getCluster, getTabletsActiveBundleData],\n (cluster, activeBundleData): Array<TabletsCellBundlesBreadcrumbsItem> => {\n const res: Array<TabletsCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletCellBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n const {bundle, enable_bundle_controller} = activeBundleData || {};\n\n if (bundle) {\n res.push({\n text: bundle,\n href: tabletActiveBundleLink(cluster, bundle, enable_bundle_controller),\n });\n }\n\n return res;\n },\n);\n","import type {RootState} from '../../../store/reducers';\n\nexport const getTabletCellBundleEditorState = (state: RootState) => state.tabletCellBundleEditor;\nexport const getTabletCellBundleControllerInstanceDetailsMap = (state: RootState) =>\n state.tabletCellBundleEditor.instanceDetailsMap;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\nexport {isSupportedSelector} from './support';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\nimport every_ from 'lodash/every';\n\n// @ts-ignore\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const _LOCAL_ARCADIA_VERSION = '(development)';\n\nfunction versionToArray(version: string, build?: string) {\n const VERSION_DELIMITER = '.';\n const VERSION_CHUNK_COUNT = 3;\n const VERSION_CHUNK_PLACEHOLDER = 0;\n\n const versionArray: Array<string | number> = map_(\n version.split(VERSION_DELIMITER),\n (subversion) => {\n return parseInt(subversion, 10);\n },\n );\n\n while (versionArray.length < VERSION_CHUNK_COUNT) {\n versionArray.push(VERSION_CHUNK_PLACEHOLDER);\n }\n\n if (build) {\n versionArray.push(build);\n }\n\n return versionArray;\n}\n\n/**\n * Returns true if versionA >= versionB and comparator === 'greater'\n * Returns true if versionA < versionB and comparator === 'smaller'\n * @param {String} comparator - 'greater', 'smaller'\n * @param {String} versionA\n * @param {String} versionB\n * @returns {boolean}\n */\nexport function _compareVersions(\n comparator: 'greater' | 'smaller',\n versionA: string,\n versionB: string,\n) {\n if (versionA === versionB) {\n return comparator === 'greater';\n }\n\n return comparator === 'greater'\n ? hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) >= 0\n : hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) < 0;\n}\n\n/**\n * Determines wheter a given version belongs to a versionInterval [a, b)\n * Left end included, right end excluded (intuitive limitations - features are supported starting from a specific build)\n * @param {String} version\n * @param {String|Object} versionInterval\n * @returns {boolean}\n */\nexport function _versionInInterval(\n version: string,\n versionInterval: MajorMinorPatch | MajorMinorPatchRange | typeof _LOCAL_ARCADIA_VERSION,\n) {\n let supported;\n\n if (typeof versionInterval === 'object') {\n supported = Object.keys(versionInterval).every((comparator) => {\n if (!(comparator === 'greater' || comparator === 'smaller')) {\n throw new Error(\n 'thor.support: feature description has unknown comparator \"' +\n comparator +\n '\",' +\n ' cannot check support.',\n );\n }\n const key = comparator as keyof typeof versionInterval;\n return _compareVersions(comparator, version, versionInterval[key]!);\n });\n } else {\n supported = _compareVersions('greater', version, versionInterval);\n }\n\n return supported;\n}\n\nfunction getVersionAndBuild(version?: string): [string, string | undefined] | undefined {\n const parsedVersion = version?.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n let parsedBuild;\n\n if (parsedVersion) {\n const majorMinorPatch = parsedVersion[0];\n parsedBuild = version?.substring(parsedVersion.length);\n\n return [majorMinorPatch, parsedBuild];\n }\n return undefined;\n}\n\nconst getRawProxyVersion = (state: RootState) => state.global.version;\nconst getRawSchedulerVersion = (state: RootState) => state.global.schedulerVersion;\nconst getRawMasterVersion = (state: RootState) => state.global.masterVersion;\n\ntype MajorMinorPatch = `${number}.${number}.${number}`;\ntype MajorMinorPatchRange = {greater?: MajorMinorPatch; smaller?: MajorMinorPatch};\n\nexport type RawVersion = `${MajorMinorPatch}-${string}`;\n\nexport type Versions<T> = {proxy?: T | typeof _LOCAL_ARCADIA_VERSION; scheduler?: T; master?: T};\n\ntype FeatureVersions = Versions<MajorMinorPatch | Array<MajorMinorPatchRange>>;\ntype RawFeatureVersions = Versions<RawVersion>;\n\nconst FEATURES = {\n fieldsFilter: {\n scheduler: '22.1.9091155',\n } as FeatureVersions,\n effectiveExpiration: {\n master: '23.1.11146445',\n } as FeatureVersions,\n clusterNodeVersion: {\n proxy: '23.2.0',\n } as FeatureVersions,\n nodeMaintenanceApi: {\n proxy: '23.1.11106567',\n } as FeatureVersions,\n schedulingChildrenByPool: {\n scheduler: '23.1.11146742',\n } as FeatureVersions,\n};\n\nexport function _isFeatureSupported<T extends Record<string, FeatureVersions>>(\n rawVersions: RawFeatureVersions,\n features: T,\n) {\n return (featureName: keyof T) => {\n function failFeature(message: string) {\n console.warn(`thor.support \"${featureName as string}\" ${message}`);\n return false;\n }\n\n const featureVersions: FeatureVersions = features[featureName];\n\n if (!featureVersions) {\n return failFeature(`${featureName as string} is unknown, cannot check support.`);\n }\n\n if (isEmpty_(featureVersions)) {\n return failFeature('feature component version is unknown, cannot check support.');\n }\n\n return every_(featureVersions, (value, k) => {\n const key = k as keyof typeof rawVersions;\n const rawVersion = rawVersions[key];\n\n // yt-local in arcadia is meant to be of the freshest version\n if (rawVersion === _LOCAL_ARCADIA_VERSION) {\n return true;\n }\n\n if (!value) {\n return failFeature(`feature version of '${key}' is unknown, connot check support`);\n }\n\n const buildVersion = getVersionAndBuild(rawVersion);\n if (!buildVersion) {\n return failFeature(\n `version of '${key}' component is unknown, cannot check support.`,\n );\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => _versionInInterval(buildVersion[0], item));\n } else {\n return _versionInInterval(buildVersion[0], value);\n }\n });\n };\n}\n\nexport const isSupportedSelector = createSelector(\n [getRawProxyVersion, getRawSchedulerVersion, getRawMasterVersion],\n (proxy, scheduler, master) => _isFeatureSupported({proxy, scheduler, master}, FEATURES),\n);\n\nexport const isSupportedEffectiveExpiration = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('effectiveExpiration');\n },\n);\n\nexport const isSupportedClusterNodeForVersions = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('clusterNodeVersion');\n },\n);\n\nexport const isSupportedNodeMaintenanceApi = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('nodeMaintenanceApi');\n },\n);\n\nexport const isSupportedSchedulingChildrenByPool = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('schedulingChildrenByPool');\n },\n);\n","import camelCase_ from 'lodash/camelCase';\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport replace_ from 'lodash/replace';\nimport some_ from 'lodash/some';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {AccountResourceInfo} from '../../constants/accounts/accounts';\nimport {computeProgress, getProgressTheme} from '../../utils/progress';\nimport formatLib from '../../common/hammer/format';\nimport {FIX_MY_TYPE} from '../../types';\n\nexport function accountMemoryMediumToFieldName(path: string) {\n return replace_(path, /\\//g, '_');\n}\n\nexport interface AccountParsedData {\n $attributes: any;\n $value: string;\n\n name: string;\n parent: string;\n abc: {id: number; slug: string};\n\n stats: string; // stats url;\n\n responsibleUsers: Array<string>; // TODO: remove me later\n responsibleUsersSet: Set<string>; // TODO: remove me later\n\n hasRecursiveResources: boolean;\n recursiveResources: Record<string, AccountResources>;\n\n master_memory_detailed: {\n nodes: number;\n chunks: number;\n attributes: number;\n tablets: number;\n schemas: number;\n };\n\n ownAlertsCount: number;\n alertsCount: number;\n\n masterMemoryResources: Record<string, AccountResourceInfo>;\n perMedium: Record<string, unknown>;\n}\n\ninterface AccountResources {}\n\nexport function parseAccountData(data: any) {\n const dst: AccountParsedData = {\n recursiveResources: {},\n masterMemoryResources: {},\n } as any;\n\n dst.$value = data.$value;\n dst.name = dst.$value;\n dst.$attributes = data.$attributes;\n\n dst.abc = dst.$attributes.abc || {};\n dst.responsibleUsers = Array.isArray(dst.$attributes.responsibles)\n ? dst.$attributes.responsibles\n : [];\n dst.responsibleUsersSet = new Set(dst.responsibleUsers);\n dst.parent = dst.$attributes.parent_name;\n\n dst.hasRecursiveResources = Boolean(ypath.getValue(dst, '/@recursive_resource_usage'));\n dst.recursiveResources = {};\n\n updateResource(dst, dst.$attributes, 'chunk_count', 'Number');\n updateResource(dst, dst.$attributes, 'node_count', 'Number');\n\n updateResource(dst, dst.$attributes, 'tablet_count', 'Number');\n updateResource(dst, dst.$attributes, 'tablet_static_memory', 'Bytes');\n\n updateResourcePerMedium(dst, dst.$attributes, 'disk_space', 'Bytes');\n\n updateMasterMemory(dst, dst.$attributes);\n\n dst.alertsCount = getAccountAlertsCount(dst);\n\n return dst;\n}\n\nfunction updateMasterMemory(dst: AccountParsedData, attributes: any) {\n prepareResource(dst, attributes, 'master_memory/total', 'Bytes');\n prepareResource(dst, attributes, 'master_memory/chunk_host', 'Bytes');\n\n const perCell = ypath.getValue(attributes, '/resource_usage/master_memory/per_cell');\n forEach_(perCell, (_value, key) => {\n prepareResource(dst, attributes, `master_memory/per_cell/${key}`, 'Bytes');\n });\n\n dst.master_memory_detailed = ypath.getValue(\n attributes,\n '/resource_usage/detailed_master_memory',\n );\n}\n\nfunction prepareResource(\n dst: AccountParsedData,\n resourceAttributes: any,\n path: string,\n format: 'Bytes' | 'Number',\n) {\n const name = accountMemoryMediumToFieldName(path);\n const committed = ypath.getValue(resourceAttributes, '/committed_resource_usage/' + path);\n const limit = ypath.getValue(resourceAttributes, '/resource_limits/' + path);\n (dst as FIX_MY_TYPE)[name] = prepareResourceInfo(\n {\n total: ypath.getValue(resourceAttributes, '/resource_usage/' + path),\n committed,\n limit,\n },\n format,\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(\n resourceAttributes,\n '/recursive_resource_usage/' + path,\n );\n const recursiveCommitted = ypath.getValue(\n resourceAttributes,\n '/recursive_committed_resource_usage/' + path,\n );\n dst.recursiveResources[name] = prepareResourceInfo(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(resourceAttributes, '/resource_limits/' + path),\n },\n format,\n );\n }\n}\n\nfunction updateResource(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n nameYPath = name,\n) {\n const committed = ypath.getValue(attributes, '/committed_resource_usage/' + nameYPath);\n const limit = ypath.getValue(attributes, '/resource_limits/' + nameYPath);\n Object.assign(\n dst,\n updateResourceFields(\n {\n total: ypath.getValue(attributes, '/resource_usage/' + nameYPath),\n committed,\n limit,\n },\n name,\n format,\n ),\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(attributes, '/recursive_resource_usage/' + nameYPath);\n const recursiveCommitted = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + nameYPath,\n );\n Object.assign(\n dst.recursiveResources,\n updateResourceFields(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(attributes, '/resource_limits/' + nameYPath),\n },\n name,\n format,\n ),\n );\n }\n}\n\nfunction updateResourcePerMedium(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const path = 'disk_space_per_medium';\n const recursiveTotalPerMedium = ypath.getValue(attributes, '/recursive_resource_usage/' + path);\n const recursiveCommittedPerMedium = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + path,\n );\n const totalPerMedium = ypath.getValue(attributes, '/resource_usage/' + path);\n const committedPerMedium = ypath.getValue(attributes, '/committed_resource_usage/' + path);\n const limitPerMedium = ypath.getValue(attributes, '/resource_limits/' + path);\n\n dst.perMedium = {};\n forEach_(totalPerMedium, (mediumData, mediumName) => {\n dst.perMedium[mediumName] = updateResourceFields(\n {\n total: mediumData,\n committed: committedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n\n let lastMedium;\n try {\n if (dst.hasRecursiveResources) {\n dst.recursiveResources.perMedium = {};\n forEach_(recursiveTotalPerMedium, (mediumData, mediumName) => {\n lastMedium = mediumName;\n (dst.recursiveResources as FIX_MY_TYPE).perMedium[mediumName] =\n updateResourceFields(\n {\n total: mediumData,\n committed: recursiveCommittedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n }\n } catch (e) {\n console.log({attributes, limitPerMedium, path, lastMedium});\n throw e;\n }\n}\n\nfunction prepareResourceInfo(\n data: {total?: number; committed?: number; limit?: number},\n format: 'Bytes' | 'Number',\n): AccountResourceInfo {\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const progressText =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = computeProgress(total, limit) ?? 0;\n const theme = getProgressTheme((committed / limit) * 100);\n\n return {\n committed,\n uncommitted,\n total,\n limit,\n theme,\n progress,\n progressText,\n };\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return capitalize_(text[0]) + text.slice(1);\n}\n\n/**\n * @deprecated use prepareResourceInfo instead of it\n * @param data\n * @param format\n */\nfunction updateResourceFields(\n data: {total?: number; committed?: number; limit?: number},\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const target: any = {};\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const camelCaseName = camelCase_(name);\n const capitalizedCamelCaseName = capitalizeFirstLetter(camelCaseName);\n\n target['committed' + capitalizedCamelCaseName] = committed;\n target['total' + capitalizedCamelCaseName] = total;\n target['uncommitted' + capitalizedCamelCaseName] = uncommitted;\n\n target[camelCaseName + 'Limit'] = limit;\n target[camelCaseName + 'ProgressText'] =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = (target[camelCaseName + 'Progress'] = computeProgress(total, limit));\n\n target[camelCaseName + 'ProgressTheme'] = getProgressTheme(\n name === 'node_count' ? (committed / limit) * 100 : progress,\n );\n\n return target;\n}\n\nfunction getAccountAlertsCount(dst: AccountParsedData) {\n let res = 0;\n const {recursive_violated_resource_limits: recursiveViolatedLimits} = dst.$attributes;\n visitResourceFields(recursiveViolatedLimits, (value: number) => {\n res += value;\n });\n return res;\n}\n\n/**\n * Returns true if stopped\n * @param container\n * @param stopFn\n * @returns {*}\n */\nexport function visitResourceFields(container: any, stopFn: (value: number, path: string) => void) {\n if (!container) {\n return;\n }\n const {\n // disk_space will be removed later and it should not be visited\n disk_space: _diskSpace,\n disk_space_per_medium: perMedium,\n master_memory: _masterMemory,\n ...rest\n } = container;\n visitNumberOrGoDeep(rest, '', stopFn);\n visitNumberOrGoDeep(perMedium, 'medium', stopFn);\n}\n\nfunction visitNumberOrGoDeep(\n value: any,\n path: string,\n stopFn: (value: number, path: string) => void,\n) {\n if (!isNaN(value)) {\n stopFn(value, path);\n } else {\n some_(value, (item, key) => {\n visitNumberOrGoDeep(item, path ? `${path}/${key}` : key, stopFn);\n });\n }\n}\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":["LAST_VISITED_BUFFER_SIZE","accountsTrackVisit","account","dispatch","getState","activeAccount","getActiveAccount","parentNS","getAccountsNS","trackLastVisited","navigationTrackVisit","path","getClusterNS","bundlesTrackVisit","bundle","state","activeBundle","getTabletsActiveBundle","getBundlesNS","value","settingName","arguments","length","undefined","SettingName","LOCAL","LAST_VISITED","reloadSetting","then","current","makeGetSetting","currentPathItem","count","setSetting","reduce","updated","item","push","slice","accountsToggleFavourite","metrics","countEvent","toggleFavourite","chytToggleFavourite","clique","chytNS","getChytNS","navigationToggleFavourite","bundlesToggleFavourite","FAVOURITES","_toConsumableArray","entry","find_","splice","indexOf","isTopLevelAccount","parent","ypath","getValue","ROOT_ACCOUNT_NAME","getAccountsIsFinalLoadingStatus","createSelector","accounts","fetching","wasLoaded","error","loading","loaded","status","calculateLoadingStatus","isFinalLoadingStatus","getAccountsContentMode","activeContentModeFilter","getAccountsMasterMemoryContentMode","masterMemoryContentMode","getEditableAccount","editableAccount","getAccountsDisabledCacheForNextFetch","disableCacheForNextFetch","getAccountsEditCounter","editCounter","getAccounts","getAccountNames","items","map_","i","$value","sort","getAccountsMapByName","nameToAccountMap","forEach_","name","getAccountsTree","hammer","treeList","prepareTree","makeStaticConfigurationItem","format","_ref","level","total","limit","used","free","getActiveAccountStaticConfiguration","getMediumListNoCache","mediums","_step","mediumsInfo","_iterator","_createForOfIteratorHelper","s","n","done","apply","capitalize_","attributes","getDiskSpaceProgressInfo","err","e","f","concat","getNodeCountProgressInfo","getChunkCountProgressInfo","getResourceInfo","type","mediumType","isAggregation","aggr","_aggr$perMedium$mediu","_aggr$perMedium$mediu2","AccountResourceName","DISK_SPACE_PER_MEDIUM","progress","perMedium","totalDiskSpace","diskSpaceLimit","NODE_COUNT","totalNodeCount","nodeCountLimit","CHUNK_COUNT","totalChunkCount","chunkCountLimit","TABLET_STATIC_MEMORY","totalTabletStaticMemory","tabletStaticMemoryLimit","TABLET_COUNT","totalTabletCount","tabletCountLimit","MASTER_MEMORY","_ref2","get_","accountMemoryMediumToFieldName","getAggregatedByType","getInfo","ACCOUNT_RESOURCE_TYPES_DESCRIPTION","recursive","getAccountMasterMemoryMedia","_slicedToArray","perCell","keys_","key","getAccountsMasterMemoryColumns","medium","master_memory_percentage","get","master_memory_usage","master_memory_limit","master_memory_free","_ref3","master_memory_detailed_nodes","data","master_memory_detailed","nodes","master_memory_detailed_chunks","chunks","master_memory_detailed_attributes","master_memory_detailed_tablets","tablets","master_memory_detailed_schemas","schemas","getAccountsColumnFields","activeMediumFilter","accountsColumns","_objectSpread","alerts","alertsCount","disk_space_default","disk_space_percentage","disk_space_usage","disk_space_limit","disk_space_free","_ref4","node_count_default","node_count_percentage","node_count_usage","node_count_limit","node_count_free","_ref5","chunk_count_default","chunk_count_percentage","chunk_count_usage","chunk_count_limit","chunk_count_free","_ref6","tablet_count_percentage","tablet_count_usage","tablet_count_limit","tablet_count_free","_ref7","tablet_static_memory_percentage","tablet_static_memory_usage","tablet_static_memory_limit","tablet_static_memory_free","_ref8","getEditableAccountQuotaSources","tree","collectSubtreeItems","collected","Set","has","add","res","_ref10","children","isTopLevel","parentItems","childItems","isEditableAccountOfTopLevel","mapByName","getUsableAccounts","usableAccounts","getAccountsAbcServiceIdSlugFilter","abcServiceFilter","getEditableAccountSubtreeNames","isEmpty_","treeForEach","node","getAccountName","getEditableAccountParentSuggests","allNames","excludeNames","excludeNamesSet","filter_","getFlattenTree","activeNameFilter","nameFilter","slug","root","filteredRoot","isRoot","treeNode","predicates","filterTree","concatByAnd","getActiveAccountSubtree","treeRoot","activeTreeItem","findByName","getActiveAccountAggregationRow","masterMemoryMedia","treeItem","aggAccount","AGGREGATION_FIELDS","set_","addIfDefined","AGGREGATION_PER_MEDIUM_FIELDS","aggMediumData","AGGREGATION_MASTER_MEMORY_FIELDS","field","srcField","calcAggregationRow","getActiveAccountSubtreeNames","visitTreeItems","prepareAccountsFlattenTree","getTables","ACCOUNTS_TABLE_ID","sortInfo","flattenTree","columnFields","sortTree","dst","src","srcValue","dstValue","getActiveAccountBreadcrumbs","parentNode","namesArr","text","url","title","reverse","tables","initialState","getTabletsIsLoaded","tablet_cell_bundles","getTabletsIsLoading","getTabletsError","getTabletsBundlesSortState","bundlesSort","getTabletsBundlesNameFilter","bundlesNameFilter","getTabletsBundlesAccountFilter","bundlesAccountFilter","getTabletsBundlesTagNodeFilter","bundlesTagNodeFilter","getTabletsBundles","bundles","getBundleDefaultConfig","bundleDefaultConfig","getTabletBundlesTableMode","bundlesTableMode","getTabletBundlesWriteableByName","writableByName","getTabletsActiveBundleData","getTabletsDefaultMemoryConfiguration","getTabletCellBundleEditorState","config","editorState","_editorState$bundleDa","_nodeSizes$default_co","nodeSizes","zone_default","tablet_node_sizes","bundleData","bundle_controller_target_config","tablet_node_resource_guarantee","default_config","memory_limits","reserved","prepareBundleInstances","allocated","inProgresss","instanceDetailsMap","makeUrl","address","details","pod_id","yp_cluster","deployUrl","UIFactory","getNodeDeployUrl","nanny_service","tablet_static_memory","nannyUrl","getNodeNannyUrl","allocationState","removing","instance_info","hulk_request_state","hulkRequestPath","hulk_request_link","getActiveBundleControllerData","bundleControllerData","getActiveBundleInstances","getCluster","getTabletCellBundleControllerInstanceDetailsMap","cluster","allocated_tablet_nodes","allocating_tablet_nodes","makeComponentsNodesUrl","host","getActiveBundleProxies","allocated_rpc_proxies","allocating_rpc_proxies","makeProxyUrl","getBundleEditorData","defaultConfig","zone","getTabletsBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getTabletsBundlesFiltered","accountFilter","tagNodeFilter","lowerNameFilter","toLowerCase","lowerAccountFilter","changelog_account","snapshot_account","Boolean","lowerTagNodeFilter","node_tag_filter","getTabletsBundlesSorted","sortState","column","order","sortTableBundles","columnsSortable","getTabletsCells","cells","getTabletsCellsSortState","cellsSort","getTabletsCellsIdFilter","cellsIdFilter","getTabletsCellsBundleFilter","cellsBundleFilter","getTabletsCellsHostFilter","cellsHostFilter","getTabletCellsOfActiveAccount","getTabletsCellsFiltered","idFilter","bundleFilter","hostFilter","id","peerAddress","filterTabletCellsByBundle","getTabletsCellsSorted","sortArrayBySortState","getTabletsCellsBundles","uniq_","getTabletsCellsHosts","getTabletsCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","filter","join","getTabletsBreadcrumbItems","activeBundleData","href","tabletCellBundleRootLink","enable_bundle_controller","tabletActiveBundleLink","tabletCellBundleEditor","getMediumList","global","mediumList","utils","sortInPredefinedOrder","MediumType","DEFAULT","getCurrentCluster","versionToArray","version","build","versionArray","split","subversion","parseInt","_compareVersions","comparator","versionA","versionB","compareVectors","_versionInInterval","versionInterval","_typeof","Object","keys","every","Error","FEATURES","fieldsFilter","scheduler","effectiveExpiration","master","clusterNodeVersion","proxy","nodeMaintenanceApi","schedulingChildrenByPool","isSupportedSelector","schedulerVersion","masterVersion","rawVersions","features","featureName","failFeature","message","console","warn","featureVersions","every_","k","rawVersion","buildVersion","parsedVersion","match","substring","getVersionAndBuild","Array","isArray","some","isSupportedEffectiveExpiration","isSupported","isSupportedClusterNodeForVersions","isSupportedNodeMaintenanceApi","isSupportedSchedulingChildrenByPool","replace_","parseAccountData","recursiveResources","masterMemoryResources","$attributes","abc","responsibleUsers","responsibles","responsibleUsersSet","parent_name","hasRecursiveResources","updateResource","lastMedium","recursiveTotalPerMedium","recursiveCommittedPerMedium","totalPerMedium","committedPerMedium","limitPerMedium","mediumData","mediumName","updateResourceFields","committed","log","updateResourcePerMedium","prepareResource","_value","updateMasterMemory","visitResourceFields","recursive_violated_resource_limits","getAccountAlertsCount","resourceAttributes","prepareResourceInfo","recursiveUsage","recursiveCommitted","nameYPath","assign","_computeProgress","uncommitted","progressText","formatLib","Math","abs","computeProgress","theme","getProgressTheme","target","camelCaseName","camelCase_","capitalizedCamelCaseName","container","stopFn","disk_space","disk_space_per_medium","master_memory","visitNumberOrGoDeep","_objectWithoutProperties","_excluded","isNaN","some_","makeNavigationLink","params","rest","YT","Page","NAVIGATION","search","info","URLSearchParams","acc","_info$k$options","options","serialize","_info$k$options2","_info$k$options2$seri","tmp","call","append","makeURLSearchParams","getNavigationParams","toString","COMPONENTS","ComponentsTab","NODES","RPC_PROXIES","makeSchedulingUrl","pool","poolTree","SCHEDULING","makeAccountsUrl","ACCOUNTS","prepareTabletCells","tabletCells","tabletCell","peer","uncompressed","compressed","memory","health","peers","aggregation","prepare","isTotal","collectBundlesAttrs","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","enable_bundle_balancer","tablet_count","nanToUndefined","prepareBundles","reduce_","bundleNodes","bundleList","nodeTags","tag","map","unique_node_tag","tabletCellNavigationLink","cellId","tabletTab","TabletsTab","INSTANCES","TABLET_CELLS","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/3724.3e5848f0.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/actions/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/tablet-cell-bundle-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/support.ts","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts-selector.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 metrics from '../../common/utils/metrics';\n\nimport find_ from 'lodash/find';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChytNS,\n getClusterNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {reloadSetting, setSetting} from '../../store/actions/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getTabletsActiveBundle} from '../selectors/tablet_cell_bundles';\n\nconst LAST_VISITED_BUFFER_SIZE = 15;\n\nexport function accountsTrackVisit(account) {\n return (dispatch, getState) => {\n const activeAccount = getActiveAccount(getState());\n if (account === activeAccount) {\n return;\n }\n\n const parentNS = getAccountsNS(getState());\n return dispatch(trackLastVisited(account, parentNS));\n };\n}\n\nexport function navigationTrackVisit(path) {\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(trackLastVisited(path, parentNS));\n };\n}\n\nexport function bundlesTrackVisit(bundle) {\n return (dispatch, getState) => {\n const state = getState();\n const activeBundle = getTabletsActiveBundle(state);\n if (!bundle || bundle === activeBundle) {\n return;\n }\n const parentNS = getBundlesNS(state);\n return dispatch(trackLastVisited(bundle, parentNS));\n };\n}\n\nfunction trackLastVisited(value, parentNS, settingName = SettingName.LOCAL.LAST_VISITED) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = makeGetSetting(state)(settingName, parentNS) || [];\n const currentPathItem = {path: value, count: 1};\n\n return dispatch(\n setSetting(\n settingName,\n parentNS,\n current\n .reduce(\n (updated, item) => {\n if (item.path === value) {\n currentPathItem.count += item.count;\n } else {\n updated.push(item);\n }\n\n return updated;\n },\n [currentPathItem],\n )\n .slice(0, LAST_VISITED_BUFFER_SIZE),\n ),\n );\n });\n };\n}\n\nexport function accountsToggleFavourite(account) {\n metrics.countEvent({\n 'accounts_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getAccountsNS(getState());\n return dispatch(toggleFavourite(account, parentNS));\n };\n}\n\nexport function chytToggleFavourite(clique) {\n metrics.countEvent({\n 'chyt_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const chytNS = getChytNS(getState());\n return dispatch(toggleFavourite(clique, chytNS));\n };\n}\n\nexport function navigationToggleFavourite(path) {\n metrics.countEvent({\n 'navigation_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(toggleFavourite(path, parentNS));\n };\n}\n\nexport function bundlesToggleFavourite(bundle) {\n metrics.countEvent({\n 'accounts_toggle-favourites': 'clicked',\n });\n\n return (dispatch, getState) => {\n const parentNS = getBundlesNS(getState());\n return dispatch(toggleFavourite(bundle, parentNS));\n };\n}\n\nexport function toggleFavourite(value, parentNS, settingName = SettingName.LOCAL.FAVOURITES) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = [...(makeGetSetting(state)(settingName, parentNS) || [])];\n const currentPathItem = {path: value};\n\n const entry = find_(current, currentPathItem);\n\n if (entry) {\n current.splice(current.indexOf(entry), 1);\n } else {\n current.push(currentPathItem);\n }\n\n return dispatch(setSetting(settingName, parentNS, current));\n });\n };\n}\n","import capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n ACCOUNT_RESOURCE_TYPES_DESCRIPTION,\n AccountResourceName,\n AccountResourceNameType,\n ROOT_ACCOUNT_NAME,\n} from '../../../constants/accounts/accounts';\nimport hammer from '../../../common/hammer';\nimport {FIX_MY_TYPE} from '../../../types';\nimport {getMediumListNoCache} from '../thor';\nimport ypath from '../../../common/thor/ypath';\n\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../utils/utils';\n\nfunction isTopLevelAccount(account: AccountSelector) {\n const parent = ypath.getValue(account, '/@parent_name');\n return !parent || parent === ROOT_ACCOUNT_NAME;\n}\n\nconst getAccountsLoading = (state: RootState) => state.accounts.accounts.fetching;\nconst getAccountsLoaded = (state: RootState) => state.accounts.accounts.wasLoaded;\nconst getAccountsError = (state: RootState) => state.accounts.accounts.error;\n\nexport const getAccountsIsFinalLoadingStatus = createSelector(\n [getAccountsLoading, getAccountsLoaded, getAccountsError],\n (loading, loaded, error) => {\n const status = calculateLoadingStatus(loading, loaded, error);\n return isFinalLoadingStatus(status);\n },\n);\n\nexport const getActiveAccount = (state: RootState) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state: RootState) =>\n state.accounts.accounts.activeMediumFilter;\nexport const getAccountsContentMode = (state: RootState) =>\n state.accounts.accounts.activeContentModeFilter;\nexport const getAccountsMasterMemoryContentMode = (state: RootState) =>\n state.accounts.accounts.masterMemoryContentMode;\nexport const getEditableAccount = (state: RootState) =>\n state.accounts.accounts.editableAccount as AccountSelector;\n\nexport const getAccountsDisabledCacheForNextFetch = (state: RootState) =>\n state.accounts.accounts.disableCacheForNextFetch;\nexport const getAccountsEditCounter = (state: RootState) => state.accounts.accounts.editCounter;\n\nexport interface AccountSelector {\n name: string;\n alertsCount: number;\n perMedium: {[key: string]: number};\n\n $value: string;\n $attributes: unknown;\n parent?: string;\n\n master_memory_detailed: {\n nodes?: number;\n chunks?: number;\n attributes?: number;\n tablets?: number;\n schemas?: number;\n };\n\n getDiskSpaceProgressInfo(mediumType: string, recursive?: boolean): ProgressInfo;\n\n getNodeCountProgressInfo(recursive?: boolean): ProgressInfo;\n getChunkCountProgressInfo(recursive?: boolean): ProgressInfo;\n getTabletStaticMemoryInfo(recursive?: boolean): ProgressInfo;\n}\n\ninterface ProgressInfo {\n total?: number;\n limit?: number;\n}\n\ninterface AccountsAggregation {\n totalNodeCount: number;\n nodeCountLimit: number;\n\n totalChunkCount: number;\n chunkCountLimit: number;\n\n perMedium: {\n [mediumType: string]: {\n totalDiskSpace: number;\n diskSpaceLimit: number;\n };\n };\n\n totalTabletCount: number;\n tabletCountLimit: number;\n\n totalTabletStaticMemory: number;\n tabletStaticMemoryLimit: number;\n\n totalMasterMemory: number;\n masterMemoryLimit: number;\n}\n\nexport interface AccountsTreeItem {\n attributes: AccountSelector;\n isAggregation: boolean;\n}\n\nexport interface AccountStaticConfigurationItem {\n name: string;\n level?: number;\n\n format: 'Bytes' | 'Number';\n total?: number;\n used?: number;\n free?: number;\n}\n\nconst getAccounts = (state: RootState) =>\n state.accounts.accounts.accounts as Array<AccountSelector>;\n\nexport const getAccountNames = createSelector(getAccounts, (items: Array<FIX_MY_TYPE>) =>\n map_(items, (i) => i.$value).sort(),\n);\n\nexport const getAccountsMapByName = createSelector(getAccounts, (accounts) => {\n const nameToAccountMap: Record<string, AccountSelector> = {};\n forEach_(accounts, (item) => {\n nameToAccountMap[item.name] = item;\n });\n return nameToAccountMap;\n});\n\nexport const getAccountsTree = createSelector([getAccountsMapByName], prepareAccountsTree);\n\ntype Tree<T> = {\n attributes: T;\n children: Array<T>;\n name: string;\n parent?: string;\n};\n\nexport type AccountsTree = Tree<AccountSelector>;\n\nfunction prepareAccountsTree(\n nameToAccountMap: Record<string, AccountSelector>,\n): Record<string, AccountsTree> {\n const tree = hammer.treeList.prepareTree(nameToAccountMap, (item: AccountSelector) => {\n if (nameToAccountMap[item.parent!] === undefined) {\n // specific case when parent account is removed\n // child should be attahed to the upper level\n return '<Root>';\n }\n\n return item.parent || '<Root>';\n });\n\n return tree;\n}\n\nfunction makeStaticConfigurationItem(\n name: string,\n format: 'Bytes' | 'Number',\n {total, limit}: {total?: number; limit?: number},\n level?: number,\n): [AccountStaticConfigurationItem] | [] {\n if (!total && !limit) {\n return [];\n }\n\n return [\n {\n name,\n level,\n format,\n used: total,\n total: limit,\n free: (limit || 0) - (total || 0),\n },\n ];\n}\n\nexport const getActiveAccountStaticConfiguration = createSelector(\n [getActiveAccount, getAccountsTree, getMediumListNoCache],\n (activeAccount, tree = {}, mediums = []) => {\n const item = tree[activeAccount];\n if (!item) {\n return [];\n }\n\n const mediumsInfo: Array<AccountStaticConfigurationItem> = [];\n for (const i of mediums) {\n mediumsInfo.push(\n ...makeStaticConfigurationItem(\n capitalize_(i),\n 'Bytes',\n item.attributes.getDiskSpaceProgressInfo(i, true),\n 1,\n ),\n );\n }\n\n if (mediumsInfo.length) {\n mediumsInfo.splice(0, 0, {\n name: 'Media',\n format: 'Number',\n });\n }\n\n const res: Array<AccountStaticConfigurationItem> = [\n ...mediumsInfo,\n ...makeStaticConfigurationItem(\n 'Nodes',\n 'Number',\n item.attributes.getNodeCountProgressInfo(true),\n ),\n ...makeStaticConfigurationItem(\n 'Chunks',\n 'Number',\n item.attributes.getChunkCountProgressInfo(true),\n ),\n ];\n\n return res;\n },\n);\n\nfunction getAggregatedByType(\n aggr: AccountsAggregation,\n type: AccountResourceNameType,\n mediumType = '',\n) {\n switch (type) {\n case AccountResourceName.DISK_SPACE_PER_MEDIUM:\n return {\n progress: undefined,\n total: aggr.perMedium[mediumType]?.totalDiskSpace,\n limit: aggr.perMedium[mediumType]?.diskSpaceLimit,\n };\n case AccountResourceName.NODE_COUNT:\n return {\n progress: undefined,\n total: aggr.totalNodeCount,\n limit: aggr.nodeCountLimit,\n };\n case AccountResourceName.CHUNK_COUNT:\n return {\n progress: undefined,\n total: aggr.totalChunkCount,\n limit: aggr.chunkCountLimit,\n };\n case AccountResourceName.TABLET_STATIC_MEMORY:\n return {\n progress: undefined,\n total: aggr.totalTabletStaticMemory,\n limit: aggr.tabletStaticMemoryLimit,\n };\n case AccountResourceName.TABLET_COUNT:\n return {\n progress: undefined,\n total: aggr.totalTabletCount,\n limit: aggr.tabletCountLimit,\n };\n case AccountResourceName.MASTER_MEMORY: {\n const {total, limit} =\n get_(aggr, accountMemoryMediumToFieldName('master_memory/' + mediumType)) || {};\n return {progress: undefined, total, limit};\n }\n }\n}\n\nfunction getResourceInfo(\n entry: AccountsTreeItem,\n type: AccountResourceNameType,\n activeAccount?: string,\n mediumType?: string,\n) {\n if (entry.isAggregation) {\n return getAggregatedByType(entry.attributes as any, type, mediumType);\n }\n const {getInfo} = ACCOUNT_RESOURCE_TYPES_DESCRIPTION[type];\n const name = getAccountName(entry);\n const recursive = name !== activeAccount;\n return getInfo(entry.attributes, recursive, mediumType);\n}\n\nexport const getAccountMasterMemoryMedia = createSelector([getAccounts], (items = []) => {\n const [item] = items;\n if (!item) {\n return [];\n }\n\n const perCell = ypath.getValue(item, '/@resource_usage/master_memory/per_cell');\n const mediums = map_(keys_(perCell), (key) => {\n return `per_cell/${key}`;\n });\n\n return ['total', 'chunk_host', ...mediums];\n});\n\nconst getAccountsMasterMemoryColumns = createSelector(\n [getActiveAccount, getAccountsMasterMemoryContentMode],\n (activeAccount, medium) => {\n return {\n master_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.progress;\n },\n },\n master_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.total;\n },\n },\n master_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.limit;\n },\n },\n master_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} =\n getResourceInfo(entry, AccountResourceName.MASTER_MEMORY, '', medium) || {};\n return total !== undefined && limit - total;\n },\n },\n\n master_memory_detailed_nodes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.nodes;\n },\n },\n\n master_memory_detailed_chunks: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.chunks;\n },\n },\n\n master_memory_detailed_attributes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.attributes;\n },\n },\n\n master_memory_detailed_tablets: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.tablets;\n },\n },\n\n master_memory_detailed_schemas: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.schemas;\n },\n },\n };\n },\n);\n\nexport const getAccountsColumnFields = createSelector(\n [getActiveAccount, getActiveMediumFilter, getAccountsMasterMemoryColumns],\n (activeAccount, mediumType, accountsColumns) => {\n const res = {\n name: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.name;\n },\n },\n alerts: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.alertsCount;\n },\n },\n disk_space_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.progress;\n },\n },\n disk_space_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.limit;\n },\n },\n disk_space_free: {\n get: (entry: AccountsTreeItem) => {\n const {limit, total} =\n getResourceInfo(entry, 'disk_space_per_medium', '', mediumType) || {};\n\n return total !== undefined && limit - total;\n },\n },\n node_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.total;\n },\n },\n node_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.limit;\n },\n },\n node_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'node_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n chunk_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.total;\n },\n },\n chunk_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.limit;\n },\n },\n chunk_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'chunk_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.total;\n },\n },\n tablet_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_static_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_static_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.total;\n },\n },\n tablet_static_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_static_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_static_memory', '') || {};\n return total !== undefined && limit - total;\n },\n },\n ...accountsColumns,\n };\n return res;\n },\n);\n\nexport function getAccountName(treeItem?: {attributes: AccountSelector}) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nexport const getEditableAccountQuotaSources = createSelector(\n [getAccountsTree, getEditableAccount],\n (tree, account) => {\n if (!account?.name || !tree) {\n return [];\n }\n const res = collectSubtreeItems(account.name, tree);\n\n return res.sort();\n },\n);\n\nfunction collectSubtreeItems(\n account: string,\n tree: Record<string, AccountsTree>,\n collected = new Set<string>(),\n): Array<string> {\n if (collected.has(account)) {\n return [];\n }\n\n collected.add(account);\n\n const res = [] as Array<string>;\n const {parent, children, attributes} = tree[account] || {};\n const isTopLevel = isTopLevelAccount(attributes);\n if (parent && tree[parent] && !isTopLevel && !collected.has(parent)) {\n res.push(parent);\n const parentItems = collectSubtreeItems(parent, tree, collected);\n res.push(...parentItems);\n }\n forEach_(children, (item) => {\n if (collected.has(item.name)) {\n return;\n }\n res.push(item.name);\n const childItems = collectSubtreeItems(item.name, tree, collected);\n res.push(...childItems);\n });\n return res;\n}\n\nexport const isEditableAccountOfTopLevel = createSelector(\n [getAccountsMapByName, getEditableAccount],\n (mapByName, account) => {\n return isTopLevelAccount(mapByName[account?.name]);\n },\n);\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport set_ from 'lodash/set';\n\nimport {createSelector} from 'reselect';\nimport {ACCOUNTS_TABLE_ID, ROOT_ACCOUNT_NAME} from '../../../constants/accounts/accounts';\nimport {getTables} from '../../../store/selectors/tables';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {\n getAccountMasterMemoryMedia,\n getAccountNames,\n getAccountsColumnFields,\n getAccountsMapByName,\n getAccountsTree,\n} from './accounts-ts';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {visitTreeItems} from '../../../utils/utils';\n\nexport const getActiveAccount = (state) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state) => state.accounts.accounts.activeMediumFilter;\nexport const getUsableAccounts = (state) => state.accounts.accounts.usableAccounts;\nexport const getAccountsNameFilter = (state) => state.accounts.accounts.activeNameFilter;\nexport const getAccountsAbcServiceIdSlugFilter = (state) =>\n state.accounts.accounts.abcServiceFilter;\nexport const getAccountsSortInfo = (state) => getTables(state)[ACCOUNTS_TABLE_ID];\n\nexport const getEditableAccount = (state) => state.accounts.accounts.editableAccount;\n\nconst getEditableAccountSubtreeNames = createSelector(\n [getAccountsTree, getEditableAccount],\n prepareSubtreeNames,\n);\n\nexport const getEditableAccountParentSuggests = createSelector(\n [getAccountNames, getEditableAccountSubtreeNames],\n (allNames, excludeNames) => {\n const excludeNamesSet = new Set(excludeNames);\n return filter_(allNames, (name) => !excludeNamesSet.has(name));\n },\n);\n\nconst getFlattenTree = createSelector(\n [getAccountsTree, getActiveAccount, getAccountsNameFilter, getAccountsAbcServiceIdSlugFilter],\n prepareAccountsFlattenTreeImpl,\n);\n\nexport const getActiveAccountSubtree = createSelector(\n getActiveAccount,\n getFlattenTree,\n getActiveAccountSubtreeImpl,\n);\n\nexport const getActiveAccountAggregationRow = createSelector(\n [getActiveAccountSubtree, getAccountMasterMemoryMedia],\n ({activeTreeItem}, masterMemoryMedia) => calcAggregationRow(activeTreeItem, masterMemoryMedia),\n);\n\nexport const getActiveAccountSubtreeNames = createSelector(\n getActiveAccountSubtree,\n getActiveAccountSubtreeNamesImpl,\n);\n\nexport const prepareAccountsFlattenTree = createSelector(\n [getAccountsSortInfo, getFlattenTree, getAccountsColumnFields],\n sortFlattenTree,\n);\n\nexport function getAccountName(treeItem) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nfunction prepareSubtreeNames(tree, account) {\n if (isEmpty_(tree) || isEmpty_(account)) {\n return [];\n }\n\n const res = [];\n hammer.treeList.treeForEach(tree[account.name], (node) => {\n res.push(getAccountName(node));\n });\n return res;\n}\n\nfunction prepareAccountsFlattenTreeImpl(treeList, activeAccount, nameFilter = '', {slug} = {}) {\n let root = treeList['<Root>'];\n if (root === undefined) {\n return [];\n }\n\n if (activeAccount && treeList[activeAccount]) {\n root = {...root, children: [treeList[activeAccount]]};\n }\n\n let filteredRoot = root;\n\n const isRoot = (treeNode) => {\n const {attributes: account} = treeNode;\n return treeNode === root || account.name === activeAccount;\n };\n\n const predicates = [];\n if (nameFilter) {\n predicates.push((treeNode) => {\n const {attributes: account} = treeNode;\n const {name} = account;\n\n return isRoot(treeNode) || -1 !== name.indexOf(nameFilter);\n });\n }\n\n if (slug) {\n predicates.push((treeNode) => {\n return isRoot(treeNode) || slug === ypath.getValue(treeNode.attributes, '/@abc/slug');\n });\n }\n\n if (predicates.length) {\n filteredRoot = hammer.treeList.filterTree(root, concatByAnd(...predicates));\n }\n\n return filteredRoot;\n}\n\nfunction sortFlattenTree(sortInfo, flattenTree = [], columnFields) {\n if (sortInfo) {\n hammer.treeList.sortTree(flattenTree, sortInfo, columnFields);\n }\n\n const sortedTree = hammer.treeList.flattenTree(flattenTree);\n return sortedTree;\n}\n\nfunction findByName(treeNode, name) {\n if (name === getAccountName(treeNode)) {\n return treeNode;\n }\n\n for (const childNode of treeNode.children || []) {\n const res = findByName(childNode, name);\n if (res) {\n return res;\n }\n }\n\n return undefined;\n}\n\nfunction getActiveAccountSubtreeImpl(activeAccount, treeRoot) {\n if (!activeAccount) {\n return {treeRoot};\n }\n\n const activeTreeItem = findByName(treeRoot, activeAccount);\n return {treeRoot, activeTreeItem};\n}\n\nconst AGGREGATION_FIELDS = [\n 'totalNodeCount',\n 'nodeCountLimit',\n 'totalChunkCount',\n 'chunkCountLimit',\n 'totalTabletCount',\n 'tabletCountLimit',\n 'totalTabletStaticMemory',\n 'tabletStaticMemoryLimit',\n 'totalMasterMemory',\n 'masterMemoryLimit',\n 'master_memory_detailed.nodes',\n 'master_memory_detailed.chunks',\n 'master_memory_detailed.attributes',\n 'master_memory_detailed.tablets',\n 'master_memory_detailed.schemas',\n];\n\nconst AGGREGATION_PER_MEDIUM_FIELDS = ['totalDiskSpace', 'diskSpaceLimit'];\nconst AGGREGATION_MASTER_MEMORY_FIELDS = ['total', 'limit'];\n\nfunction addIfDefined(dst, src, key) {\n const srcValue = get_(src, key);\n const dstValue = get_(dst, key);\n if (srcValue === null || srcValue === undefined) {\n return dstValue;\n }\n\n return (dstValue || 0) + srcValue;\n}\n\nfunction calcAggregationRow(treeItem, masterMemoryMedia) {\n const {children} = treeItem || {};\n if (!children || !children.length) {\n return null;\n }\n\n const aggAccount = {\n name: 'Aggregation',\n perMedium: {},\n };\n\n forEach_(children, (treeItem) => {\n const {attributes: account} = treeItem;\n forEach_(AGGREGATION_FIELDS, (key) => {\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n\n forEach_(account.perMedium, (data, mediumType) => {\n forEach_(AGGREGATION_PER_MEDIUM_FIELDS, (key) => {\n let aggMediumData = aggAccount.perMedium[mediumType];\n if (!aggMediumData) {\n aggMediumData = aggAccount.perMedium[mediumType] = {};\n }\n aggMediumData[key] = addIfDefined(aggMediumData, data, key);\n });\n });\n\n forEach_(masterMemoryMedia, (medium) => {\n forEach_(AGGREGATION_MASTER_MEMORY_FIELDS, (field) => {\n const srcField = accountMemoryMediumToFieldName('master_memory/' + medium);\n const key = `${srcField}.${field}`;\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n });\n });\n\n const aggTreeItem = {\n isAggregation: true,\n children: [],\n attributes: aggAccount,\n parent: treeItem.name,\n name: treeItem.name + '/Aggregation',\n };\n\n return aggTreeItem;\n}\n\nfunction getActiveAccountSubtreeNamesImpl({activeTreeItem}) {\n const res = [];\n visitTreeItems(activeTreeItem, (item) => {\n res.push(getAccountName(item));\n });\n return res;\n}\n\nexport const getActiveAccountBreadcrumbs = createSelector(\n getActiveAccount,\n getAccountsMapByName,\n (activeAccount, nameToAccountMap) => {\n const parentNode = (name) => {\n const account = nameToAccountMap[name] || {attributes: {}};\n return account && account.parent;\n };\n\n const loaded = nameToAccountMap[activeAccount] !== undefined;\n const namesArr = [];\n if (loaded) {\n let name = activeAccount;\n while (name && name !== ROOT_ACCOUNT_NAME) {\n namesArr.push(name);\n name = parentNode(name);\n }\n }\n const items = [\n {text: '<Accounts>', url: '', title: ''},\n ...map_(namesArr.reverse(), (name) => {\n return {\n value: name,\n text: name,\n url: `?account=${name}`,\n title: name,\n };\n }),\n ];\n return items;\n },\n);\n","import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n aggregateTotal,\n tabletActiveBundleLink,\n tabletCellBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {\n AllocatedInstancesMap,\n InProgressInstancesMap,\n TabletBundle,\n TabletCell,\n} from '../../../store/reducers/tablet_cell_bundles';\nimport {createSelector} from 'reselect';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {prepareHost} from '../../../utils';\nimport {getCluster} from '../global';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\nimport {makeComponentsNodesUrl, makeProxyUrl} from '../../../utils/app-url';\nimport {\n getTabletCellBundleControllerInstanceDetailsMap,\n getTabletCellBundleEditorState,\n} from './tablet-cell-bundle-editor';\nimport {BundleControllerInstanceDetails} from '../../../store/reducers/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport UIFactory from '../../../UIFactory';\n\nexport const getTabletsIsLoaded = (state: RootState) => state.tablet_cell_bundles.loaded;\nexport const getTabletsIsLoading = (state: RootState) => state.tablet_cell_bundles.loading;\nexport const getTabletsError = (state: RootState) => state.tablet_cell_bundles.error;\n\nexport const getTabletsBundlesSortState = (state: RootState) =>\n state.tablet_cell_bundles.bundlesSort;\n\nexport const getTabletsBundlesNameFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesNameFilter;\nexport const getTabletsBundlesAccountFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesAccountFilter;\nexport const getTabletsBundlesTagNodeFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTagNodeFilter;\n\nexport const getTabletsBundles = (state: RootState) => state.tablet_cell_bundles.bundles;\n\nexport const getTabletsActiveBundle = (state: RootState) => state.tablet_cell_bundles.activeBundle;\n\nexport const getBundleDefaultConfig = (state: RootState) =>\n state.tablet_cell_bundles.bundleDefaultConfig;\n\nexport const getTabletBundlesTableMode = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTableMode;\n\nexport const getTabletBundlesWriteableByName = (state: RootState) =>\n state.tablet_cell_bundles.writableByName;\n\nexport const getTabletsActiveBundleData = createSelector(\n [getTabletsBundles, getTabletsActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getTabletsDefaultMemoryConfiguration = createSelector(\n [getBundleDefaultConfig, getTabletCellBundleEditorState],\n (config, editorState) => {\n if (!config) return 0;\n const nodeSizes = config.zone_default.tablet_node_sizes;\n\n const key =\n editorState.bundleData?.bundle_controller_target_config?.tablet_node_resource_guarantee\n .type;\n\n if (!key || !(key in nodeSizes)) return 0;\n return nodeSizes[key as string].default_config.memory_limits?.reserved || 0;\n },\n);\n\nfunction prepareBundleInstances(\n allocated: AllocatedInstancesMap,\n inProgresss: InProgressInstancesMap,\n instanceDetailsMap: Record<string, BundleControllerInstanceDetails>,\n makeUrl: (address: string) => string,\n) {\n return [\n ...map_(allocated, (data, address) => {\n const details = instanceDetailsMap?.[address] || {};\n\n const {pod_id, yp_cluster} = data || {};\n const deployUrl = UIFactory.getNodeDeployUrl(yp_cluster, pod_id);\n\n const {nanny_service, tablet_static_memory} = details;\n const nannyUrl = UIFactory.getNodeNannyUrl({nanny_service, pod_id, yp_cluster});\n\n return {\n address,\n data,\n url: makeUrl(address),\n allocationState: data.removing ? ('removing' as const) : undefined,\n tablet_static_memory,\n deployUrl,\n nannyUrl,\n };\n }),\n ...map_(inProgresss, (item) => {\n return {\n data: item.instance_info,\n allocationState: item.hulk_request_state,\n hulkRequestPath: item.hulk_request_link,\n };\n }),\n ];\n}\n\nexport const getActiveBundleControllerData = createSelector(\n [getTabletsActiveBundle, getTabletCellBundleEditorState],\n (activeBundle, {bundleData, bundleControllerData}) => {\n if (activeBundle !== bundleData?.bundle) {\n return undefined;\n }\n\n return bundleControllerData;\n },\n);\n\nexport const getActiveBundleInstances = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_tablet_nodes, allocating_tablet_nodes} = bundleControllerData;\n return prepareBundleInstances(\n allocated_tablet_nodes,\n allocating_tablet_nodes,\n instanceDetailsMap,\n (address) => makeComponentsNodesUrl({host: address, cluster}),\n );\n },\n);\n\nexport const getActiveBundleProxies = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_rpc_proxies, allocating_rpc_proxies} = bundleControllerData;\n return prepareBundleInstances(\n allocated_rpc_proxies,\n allocating_rpc_proxies,\n instanceDetailsMap,\n (address) => makeProxyUrl(cluster, address),\n );\n },\n);\n\nexport const getBundleEditorData = createSelector(\n [getTabletCellBundleEditorState, getBundleDefaultConfig],\n (editorState, defaultConfig) => {\n const {bundleData, data} = editorState;\n const {zone} = bundleData || {};\n return {\n data,\n bundleData,\n defaultConfig: defaultConfig?.[zone || ''],\n };\n },\n);\n\nexport const getTabletsBundlesTotal = createSelector(\n [getTabletsBundles],\n (bundles): TabletBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof TabletBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'enable_bundle_controller',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getTabletsBundlesFiltered = createSelector(\n [\n getTabletsBundles,\n getTabletsBundlesNameFilter,\n getTabletsBundlesAccountFilter,\n getTabletsBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: TabletBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getTabletsBundlesSorted = createSelector(\n [getTabletsBundlesFiltered, getTabletsBundlesSortState],\n (bundles, sortState) => {\n const {column, order} = sortState || {};\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getTabletsCells = (state: RootState) => state.tablet_cell_bundles.cells;\nexport const getTabletsCellsSortState = (state: RootState) => state.tablet_cell_bundles.cellsSort;\n\nexport const getTabletsCellsIdFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsIdFilter;\nexport const getTabletsCellsBundleFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsBundleFilter;\nexport const getTabletsCellsHostFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsHostFilter;\n\nexport const getTabletCellsOfActiveAccount = createSelector(\n [getTabletsCells, getTabletsActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getTabletsCellsFiltered = createSelector(\n [\n getTabletCellsOfActiveAccount,\n getTabletsCellsIdFilter,\n getTabletsCellsBundleFilter,\n getTabletsCellsHostFilter,\n getTabletsActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: TabletCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterTabletCellsByBundle(bundle: string, cells: Array<TabletCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getTabletsCellsSorted = createSelector(\n [getTabletsCellsFiltered, getTabletsCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getTabletsCellsBundles = createSelector([getTabletsCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getTabletsCellsHosts = createSelector([getTabletCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getTabletsCellsHostsOfActiveBundle = createSelector(\n [getTabletsActiveBundle, getTabletsCellsFiltered],\n (activeBundle: string, cells: Array<TabletCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<TabletCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface TabletsCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getTabletsBreadcrumbItems = createSelector(\n [getCluster, getTabletsActiveBundleData],\n (cluster, activeBundleData): Array<TabletsCellBundlesBreadcrumbsItem> => {\n const res: Array<TabletsCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletCellBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n const {bundle, enable_bundle_controller} = activeBundleData || {};\n\n if (bundle) {\n res.push({\n text: bundle,\n href: tabletActiveBundleLink(cluster, bundle, enable_bundle_controller),\n });\n }\n\n return res;\n },\n);\n","import type {RootState} from '../../../store/reducers';\n\nexport const getTabletCellBundleEditorState = (state: RootState) => state.tabletCellBundleEditor;\nexport const getTabletCellBundleControllerInstanceDetailsMap = (state: RootState) =>\n state.tabletCellBundleEditor.instanceDetailsMap;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\nexport {isSupportedSelector} from './support';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\nimport every_ from 'lodash/every';\n\n// @ts-ignore\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const _LOCAL_ARCADIA_VERSION = '(development)';\n\nfunction versionToArray(version: string, build?: string) {\n const VERSION_DELIMITER = '.';\n const VERSION_CHUNK_COUNT = 3;\n const VERSION_CHUNK_PLACEHOLDER = 0;\n\n const versionArray: Array<string | number> = map_(\n version.split(VERSION_DELIMITER),\n (subversion) => {\n return parseInt(subversion, 10);\n },\n );\n\n while (versionArray.length < VERSION_CHUNK_COUNT) {\n versionArray.push(VERSION_CHUNK_PLACEHOLDER);\n }\n\n if (build) {\n versionArray.push(build);\n }\n\n return versionArray;\n}\n\n/**\n * Returns true if versionA >= versionB and comparator === 'greater'\n * Returns true if versionA < versionB and comparator === 'smaller'\n * @param {String} comparator - 'greater', 'smaller'\n * @param {String} versionA\n * @param {String} versionB\n * @returns {boolean}\n */\nexport function _compareVersions(\n comparator: 'greater' | 'smaller',\n versionA: string,\n versionB: string,\n) {\n if (versionA === versionB) {\n return comparator === 'greater';\n }\n\n return comparator === 'greater'\n ? hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) >= 0\n : hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) < 0;\n}\n\n/**\n * Determines wheter a given version belongs to a versionInterval [a, b)\n * Left end included, right end excluded (intuitive limitations - features are supported starting from a specific build)\n * @param {String} version\n * @param {String|Object} versionInterval\n * @returns {boolean}\n */\nexport function _versionInInterval(\n version: string,\n versionInterval: MajorMinorPatch | MajorMinorPatchRange | typeof _LOCAL_ARCADIA_VERSION,\n) {\n let supported;\n\n if (typeof versionInterval === 'object') {\n supported = Object.keys(versionInterval).every((comparator) => {\n if (!(comparator === 'greater' || comparator === 'smaller')) {\n throw new Error(\n 'thor.support: feature description has unknown comparator \"' +\n comparator +\n '\",' +\n ' cannot check support.',\n );\n }\n const key = comparator as keyof typeof versionInterval;\n return _compareVersions(comparator, version, versionInterval[key]!);\n });\n } else {\n supported = _compareVersions('greater', version, versionInterval);\n }\n\n return supported;\n}\n\nfunction getVersionAndBuild(version?: string): [string, string | undefined] | undefined {\n const parsedVersion = version?.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n let parsedBuild;\n\n if (parsedVersion) {\n const majorMinorPatch = parsedVersion[0];\n parsedBuild = version?.substring(parsedVersion.length);\n\n return [majorMinorPatch, parsedBuild];\n }\n return undefined;\n}\n\nconst getRawProxyVersion = (state: RootState) => state.global.version;\nconst getRawSchedulerVersion = (state: RootState) => state.global.schedulerVersion;\nconst getRawMasterVersion = (state: RootState) => state.global.masterVersion;\n\ntype MajorMinorPatch = `${number}.${number}.${number}`;\ntype MajorMinorPatchRange = {greater?: MajorMinorPatch; smaller?: MajorMinorPatch};\n\nexport type RawVersion = `${MajorMinorPatch}-${string}`;\n\nexport type Versions<T> = {proxy?: T | typeof _LOCAL_ARCADIA_VERSION; scheduler?: T; master?: T};\n\ntype FeatureVersions = Versions<MajorMinorPatch | Array<MajorMinorPatchRange>>;\ntype RawFeatureVersions = Versions<RawVersion>;\n\nconst FEATURES = {\n fieldsFilter: {\n scheduler: '22.1.9091155',\n } as FeatureVersions,\n effectiveExpiration: {\n master: '23.1.11146445',\n } as FeatureVersions,\n clusterNodeVersion: {\n proxy: '23.2.0',\n } as FeatureVersions,\n nodeMaintenanceApi: {\n proxy: '23.1.11106567',\n } as FeatureVersions,\n schedulingChildrenByPool: {\n scheduler: '23.1.11146742',\n } as FeatureVersions,\n};\n\nexport function _isFeatureSupported<T extends Record<string, FeatureVersions>>(\n rawVersions: RawFeatureVersions,\n features: T,\n) {\n return (featureName: keyof T) => {\n function failFeature(message: string) {\n console.warn(`thor.support \"${featureName as string}\" ${message}`);\n return false;\n }\n\n const featureVersions: FeatureVersions = features[featureName];\n\n if (!featureVersions) {\n return failFeature(`${featureName as string} is unknown, cannot check support.`);\n }\n\n if (isEmpty_(featureVersions)) {\n return failFeature('feature component version is unknown, cannot check support.');\n }\n\n return every_(featureVersions, (value, k) => {\n const key = k as keyof typeof rawVersions;\n const rawVersion = rawVersions[key];\n\n // yt-local in arcadia is meant to be of the freshest version\n if (rawVersion === _LOCAL_ARCADIA_VERSION) {\n return true;\n }\n\n if (!value) {\n return failFeature(`feature version of '${key}' is unknown, connot check support`);\n }\n\n const buildVersion = getVersionAndBuild(rawVersion);\n if (!buildVersion) {\n return failFeature(\n `version of '${key}' component is unknown, cannot check support.`,\n );\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => _versionInInterval(buildVersion[0], item));\n } else {\n return _versionInInterval(buildVersion[0], value);\n }\n });\n };\n}\n\nexport const isSupportedSelector = createSelector(\n [getRawProxyVersion, getRawSchedulerVersion, getRawMasterVersion],\n (proxy, scheduler, master) => _isFeatureSupported({proxy, scheduler, master}, FEATURES),\n);\n\nexport const isSupportedEffectiveExpiration = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('effectiveExpiration');\n },\n);\n\nexport const isSupportedClusterNodeForVersions = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('clusterNodeVersion');\n },\n);\n\nexport const isSupportedNodeMaintenanceApi = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('nodeMaintenanceApi');\n },\n);\n\nexport const isSupportedSchedulingChildrenByPool = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('schedulingChildrenByPool');\n },\n);\n","import camelCase_ from 'lodash/camelCase';\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport replace_ from 'lodash/replace';\nimport some_ from 'lodash/some';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {AccountResourceInfo} from '../../constants/accounts/accounts';\nimport {computeProgress, getProgressTheme} from '../../utils/progress';\nimport formatLib from '../../common/hammer/format';\nimport {FIX_MY_TYPE} from '../../types';\n\nexport function accountMemoryMediumToFieldName(path: string) {\n return replace_(path, /\\//g, '_');\n}\n\nexport interface AccountParsedData {\n $attributes: any;\n $value: string;\n\n name: string;\n parent: string;\n abc: {id: number; slug: string};\n\n stats: string; // stats url;\n\n responsibleUsers: Array<string>; // TODO: remove me later\n responsibleUsersSet: Set<string>; // TODO: remove me later\n\n hasRecursiveResources: boolean;\n recursiveResources: Record<string, AccountResources>;\n\n master_memory_detailed: {\n nodes: number;\n chunks: number;\n attributes: number;\n tablets: number;\n schemas: number;\n };\n\n ownAlertsCount: number;\n alertsCount: number;\n\n masterMemoryResources: Record<string, AccountResourceInfo>;\n perMedium: Record<string, unknown>;\n}\n\ninterface AccountResources {}\n\nexport function parseAccountData(data: any) {\n const dst: AccountParsedData = {\n recursiveResources: {},\n masterMemoryResources: {},\n } as any;\n\n dst.$value = data.$value;\n dst.name = dst.$value;\n dst.$attributes = data.$attributes;\n\n dst.abc = dst.$attributes.abc || {};\n dst.responsibleUsers = Array.isArray(dst.$attributes.responsibles)\n ? dst.$attributes.responsibles\n : [];\n dst.responsibleUsersSet = new Set(dst.responsibleUsers);\n dst.parent = dst.$attributes.parent_name;\n\n dst.hasRecursiveResources = Boolean(ypath.getValue(dst, '/@recursive_resource_usage'));\n dst.recursiveResources = {};\n\n updateResource(dst, dst.$attributes, 'chunk_count', 'Number');\n updateResource(dst, dst.$attributes, 'node_count', 'Number');\n\n updateResource(dst, dst.$attributes, 'tablet_count', 'Number');\n updateResource(dst, dst.$attributes, 'tablet_static_memory', 'Bytes');\n\n updateResourcePerMedium(dst, dst.$attributes, 'disk_space', 'Bytes');\n\n updateMasterMemory(dst, dst.$attributes);\n\n dst.alertsCount = getAccountAlertsCount(dst);\n\n return dst;\n}\n\nfunction updateMasterMemory(dst: AccountParsedData, attributes: any) {\n prepareResource(dst, attributes, 'master_memory/total', 'Bytes');\n prepareResource(dst, attributes, 'master_memory/chunk_host', 'Bytes');\n\n const perCell = ypath.getValue(attributes, '/resource_usage/master_memory/per_cell');\n forEach_(perCell, (_value, key) => {\n prepareResource(dst, attributes, `master_memory/per_cell/${key}`, 'Bytes');\n });\n\n dst.master_memory_detailed = ypath.getValue(\n attributes,\n '/resource_usage/detailed_master_memory',\n );\n}\n\nfunction prepareResource(\n dst: AccountParsedData,\n resourceAttributes: any,\n path: string,\n format: 'Bytes' | 'Number',\n) {\n const name = accountMemoryMediumToFieldName(path);\n const committed = ypath.getValue(resourceAttributes, '/committed_resource_usage/' + path);\n const limit = ypath.getValue(resourceAttributes, '/resource_limits/' + path);\n (dst as FIX_MY_TYPE)[name] = prepareResourceInfo(\n {\n total: ypath.getValue(resourceAttributes, '/resource_usage/' + path),\n committed,\n limit,\n },\n format,\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(\n resourceAttributes,\n '/recursive_resource_usage/' + path,\n );\n const recursiveCommitted = ypath.getValue(\n resourceAttributes,\n '/recursive_committed_resource_usage/' + path,\n );\n dst.recursiveResources[name] = prepareResourceInfo(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(resourceAttributes, '/resource_limits/' + path),\n },\n format,\n );\n }\n}\n\nfunction updateResource(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n nameYPath = name,\n) {\n const committed = ypath.getValue(attributes, '/committed_resource_usage/' + nameYPath);\n const limit = ypath.getValue(attributes, '/resource_limits/' + nameYPath);\n Object.assign(\n dst,\n updateResourceFields(\n {\n total: ypath.getValue(attributes, '/resource_usage/' + nameYPath),\n committed,\n limit,\n },\n name,\n format,\n ),\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(attributes, '/recursive_resource_usage/' + nameYPath);\n const recursiveCommitted = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + nameYPath,\n );\n Object.assign(\n dst.recursiveResources,\n updateResourceFields(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(attributes, '/resource_limits/' + nameYPath),\n },\n name,\n format,\n ),\n );\n }\n}\n\nfunction updateResourcePerMedium(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const path = 'disk_space_per_medium';\n const recursiveTotalPerMedium = ypath.getValue(attributes, '/recursive_resource_usage/' + path);\n const recursiveCommittedPerMedium = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + path,\n );\n const totalPerMedium = ypath.getValue(attributes, '/resource_usage/' + path);\n const committedPerMedium = ypath.getValue(attributes, '/committed_resource_usage/' + path);\n const limitPerMedium = ypath.getValue(attributes, '/resource_limits/' + path);\n\n dst.perMedium = {};\n forEach_(totalPerMedium, (mediumData, mediumName) => {\n dst.perMedium[mediumName] = updateResourceFields(\n {\n total: mediumData,\n committed: committedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n\n let lastMedium;\n try {\n if (dst.hasRecursiveResources) {\n dst.recursiveResources.perMedium = {};\n forEach_(recursiveTotalPerMedium, (mediumData, mediumName) => {\n lastMedium = mediumName;\n (dst.recursiveResources as FIX_MY_TYPE).perMedium[mediumName] =\n updateResourceFields(\n {\n total: mediumData,\n committed: recursiveCommittedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n }\n } catch (e) {\n console.log({attributes, limitPerMedium, path, lastMedium});\n throw e;\n }\n}\n\nfunction prepareResourceInfo(\n data: {total?: number; committed?: number; limit?: number},\n format: 'Bytes' | 'Number',\n): AccountResourceInfo {\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const progressText =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = computeProgress(total, limit) ?? 0;\n const theme = getProgressTheme((committed / limit) * 100);\n\n return {\n committed,\n uncommitted,\n total,\n limit,\n theme,\n progress,\n progressText,\n };\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return capitalize_(text[0]) + text.slice(1);\n}\n\n/**\n * @deprecated use prepareResourceInfo instead of it\n * @param data\n * @param format\n */\nfunction updateResourceFields(\n data: {total?: number; committed?: number; limit?: number},\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const target: any = {};\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const camelCaseName = camelCase_(name);\n const capitalizedCamelCaseName = capitalizeFirstLetter(camelCaseName);\n\n target['committed' + capitalizedCamelCaseName] = committed;\n target['total' + capitalizedCamelCaseName] = total;\n target['uncommitted' + capitalizedCamelCaseName] = uncommitted;\n\n target[camelCaseName + 'Limit'] = limit;\n target[camelCaseName + 'ProgressText'] =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = (target[camelCaseName + 'Progress'] = computeProgress(total, limit));\n\n target[camelCaseName + 'ProgressTheme'] = getProgressTheme(\n name === 'node_count' ? (committed / limit) * 100 : progress,\n );\n\n return target;\n}\n\nfunction getAccountAlertsCount(dst: AccountParsedData) {\n let res = 0;\n const {recursive_violated_resource_limits: recursiveViolatedLimits} = dst.$attributes;\n visitResourceFields(recursiveViolatedLimits, (value: number) => {\n res += value;\n });\n return res;\n}\n\n/**\n * Returns true if stopped\n * @param container\n * @param stopFn\n * @returns {*}\n */\nexport function visitResourceFields(container: any, stopFn: (value: number, path: string) => void) {\n if (!container) {\n return;\n }\n const {\n // disk_space will be removed later and it should not be visited\n disk_space: _diskSpace,\n disk_space_per_medium: perMedium,\n master_memory: _masterMemory,\n ...rest\n } = container;\n visitNumberOrGoDeep(rest, '', stopFn);\n visitNumberOrGoDeep(perMedium, 'medium', stopFn);\n}\n\nfunction visitNumberOrGoDeep(\n value: any,\n path: string,\n stopFn: (value: number, path: string) => void,\n) {\n if (!isNaN(value)) {\n stopFn(value, path);\n } else {\n some_(value, (item, key) => {\n visitNumberOrGoDeep(item, path ? `${path}/${key}` : key, stopFn);\n });\n }\n}\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":["LAST_VISITED_BUFFER_SIZE","accountsTrackVisit","account","dispatch","getState","activeAccount","getActiveAccount","parentNS","getAccountsNS","trackLastVisited","navigationTrackVisit","path","getClusterNS","bundlesTrackVisit","bundle","state","activeBundle","getTabletsActiveBundle","getBundlesNS","value","settingName","arguments","length","undefined","SettingName","LOCAL","LAST_VISITED","reloadSetting","then","current","makeGetSetting","currentPathItem","count","setSetting","reduce","updated","item","push","slice","accountsToggleFavourite","metrics","countEvent","toggleFavourite","chytToggleFavourite","clique","chytNS","getChytNS","navigationToggleFavourite","bundlesToggleFavourite","FAVOURITES","_toConsumableArray","entry","find_","splice","indexOf","isTopLevelAccount","parent","ypath","getValue","ROOT_ACCOUNT_NAME","getAccountsIsFinalLoadingStatus","createSelector","accounts","fetching","wasLoaded","error","loading","loaded","status","calculateLoadingStatus","isFinalLoadingStatus","getAccountsContentMode","activeContentModeFilter","getAccountsMasterMemoryContentMode","masterMemoryContentMode","getEditableAccount","editableAccount","getAccountsDisabledCacheForNextFetch","disableCacheForNextFetch","getAccountsEditCounter","editCounter","getAccounts","getAccountNames","items","map_","i","$value","sort","getAccountsMapByName","nameToAccountMap","forEach_","name","getAccountsTree","hammer","treeList","prepareTree","makeStaticConfigurationItem","format","_ref","level","total","limit","used","free","getActiveAccountStaticConfiguration","getMediumListNoCache","mediums","_step","mediumsInfo","_iterator","_createForOfIteratorHelper","s","n","done","apply","capitalize_","attributes","getDiskSpaceProgressInfo","err","e","f","concat","getNodeCountProgressInfo","getChunkCountProgressInfo","getResourceInfo","type","mediumType","isAggregation","aggr","_aggr$perMedium$mediu","_aggr$perMedium$mediu2","AccountResourceName","DISK_SPACE_PER_MEDIUM","progress","perMedium","totalDiskSpace","diskSpaceLimit","NODE_COUNT","totalNodeCount","nodeCountLimit","CHUNK_COUNT","totalChunkCount","chunkCountLimit","TABLET_STATIC_MEMORY","totalTabletStaticMemory","tabletStaticMemoryLimit","TABLET_COUNT","totalTabletCount","tabletCountLimit","MASTER_MEMORY","_ref2","get_","accountMemoryMediumToFieldName","getAggregatedByType","getInfo","ACCOUNT_RESOURCE_TYPES_DESCRIPTION","recursive","getAccountMasterMemoryMedia","_slicedToArray","perCell","keys_","key","getAccountsMasterMemoryColumns","medium","master_memory_percentage","get","master_memory_usage","master_memory_limit","master_memory_free","_ref3","master_memory_detailed_nodes","data","master_memory_detailed","nodes","master_memory_detailed_chunks","chunks","master_memory_detailed_attributes","master_memory_detailed_tablets","tablets","master_memory_detailed_schemas","schemas","getAccountsColumnFields","activeMediumFilter","accountsColumns","_objectSpread","alerts","alertsCount","disk_space_default","disk_space_percentage","disk_space_usage","disk_space_limit","disk_space_free","_ref4","node_count_default","node_count_percentage","node_count_usage","node_count_limit","node_count_free","_ref5","chunk_count_default","chunk_count_percentage","chunk_count_usage","chunk_count_limit","chunk_count_free","_ref6","tablet_count_percentage","tablet_count_usage","tablet_count_limit","tablet_count_free","_ref7","tablet_static_memory_percentage","tablet_static_memory_usage","tablet_static_memory_limit","tablet_static_memory_free","_ref8","getEditableAccountQuotaSources","tree","collectSubtreeItems","collected","Set","has","add","res","_ref10","children","isTopLevel","parentItems","childItems","isEditableAccountOfTopLevel","mapByName","getUsableAccounts","usableAccounts","getAccountsAbcServiceIdSlugFilter","abcServiceFilter","getEditableAccountSubtreeNames","isEmpty_","treeForEach","node","getAccountName","getEditableAccountParentSuggests","allNames","excludeNames","excludeNamesSet","filter_","getFlattenTree","activeNameFilter","nameFilter","slug","root","filteredRoot","isRoot","treeNode","predicates","filterTree","concatByAnd","getActiveAccountSubtree","treeRoot","activeTreeItem","findByName","getActiveAccountAggregationRow","masterMemoryMedia","treeItem","aggAccount","AGGREGATION_FIELDS","set_","addIfDefined","AGGREGATION_PER_MEDIUM_FIELDS","aggMediumData","AGGREGATION_MASTER_MEMORY_FIELDS","field","srcField","calcAggregationRow","getActiveAccountSubtreeNames","visitTreeItems","prepareAccountsFlattenTree","getTables","ACCOUNTS_TABLE_ID","sortInfo","flattenTree","columnFields","sortTree","dst","src","srcValue","dstValue","getActiveAccountBreadcrumbs","parentNode","namesArr","text","url","title","reverse","tables","initialState","getTabletsIsLoaded","tablet_cell_bundles","getTabletsIsLoading","getTabletsError","getTabletsBundlesSortState","bundlesSort","getTabletsBundlesNameFilter","bundlesNameFilter","getTabletsBundlesAccountFilter","bundlesAccountFilter","getTabletsBundlesTagNodeFilter","bundlesTagNodeFilter","getTabletsBundles","bundles","getBundleDefaultConfig","bundleDefaultConfig","getTabletBundlesTableMode","bundlesTableMode","getTabletBundlesWriteableByName","writableByName","getTabletsActiveBundleData","getTabletsDefaultMemoryConfiguration","getTabletCellBundleEditorState","config","editorState","_editorState$bundleDa","_nodeSizes$default_co","nodeSizes","zone_default","tablet_node_sizes","bundleData","bundle_controller_target_config","tablet_node_resource_guarantee","default_config","memory_limits","reserved","prepareBundleInstances","allocated","inProgresss","instanceDetailsMap","makeUrl","address","details","pod_id","yp_cluster","deployUrl","UIFactory","getNodeDeployUrl","nanny_service","tablet_static_memory","nannyUrl","getNodeNannyUrl","allocationState","removing","instance_info","hulk_request_state","hulkRequestPath","hulk_request_link","getActiveBundleControllerData","bundleControllerData","getActiveBundleInstances","getCluster","getTabletCellBundleControllerInstanceDetailsMap","cluster","allocated_tablet_nodes","allocating_tablet_nodes","makeComponentsNodesUrl","host","getActiveBundleProxies","allocated_rpc_proxies","allocating_rpc_proxies","makeProxyUrl","getBundleEditorData","defaultConfig","zone","getTabletsBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getTabletsBundlesFiltered","accountFilter","tagNodeFilter","lowerNameFilter","toLowerCase","lowerAccountFilter","changelog_account","snapshot_account","Boolean","lowerTagNodeFilter","node_tag_filter","getTabletsBundlesSorted","sortState","column","order","sortTableBundles","columnsSortable","getTabletsCells","cells","getTabletsCellsSortState","cellsSort","getTabletsCellsIdFilter","cellsIdFilter","getTabletsCellsBundleFilter","cellsBundleFilter","getTabletsCellsHostFilter","cellsHostFilter","getTabletCellsOfActiveAccount","getTabletsCellsFiltered","idFilter","bundleFilter","hostFilter","id","peerAddress","filterTabletCellsByBundle","getTabletsCellsSorted","sortArrayBySortState","getTabletsCellsBundles","uniq_","getTabletsCellsHosts","getTabletsCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","filter","join","getTabletsBreadcrumbItems","activeBundleData","href","tabletCellBundleRootLink","enable_bundle_controller","tabletActiveBundleLink","tabletCellBundleEditor","getMediumList","global","mediumList","utils","sortInPredefinedOrder","MediumType","DEFAULT","getCurrentCluster","versionToArray","version","build","versionArray","split","subversion","parseInt","_compareVersions","comparator","versionA","versionB","compareVectors","_versionInInterval","versionInterval","_typeof","Object","keys","every","Error","FEATURES","fieldsFilter","scheduler","effectiveExpiration","master","clusterNodeVersion","proxy","nodeMaintenanceApi","schedulingChildrenByPool","isSupportedSelector","schedulerVersion","masterVersion","rawVersions","features","featureName","failFeature","message","console","warn","featureVersions","every_","k","rawVersion","buildVersion","parsedVersion","match","substring","getVersionAndBuild","Array","isArray","some","isSupportedEffectiveExpiration","isSupported","isSupportedClusterNodeForVersions","isSupportedNodeMaintenanceApi","isSupportedSchedulingChildrenByPool","replace_","parseAccountData","recursiveResources","masterMemoryResources","$attributes","abc","responsibleUsers","responsibles","responsibleUsersSet","parent_name","hasRecursiveResources","updateResource","lastMedium","recursiveTotalPerMedium","recursiveCommittedPerMedium","totalPerMedium","committedPerMedium","limitPerMedium","mediumData","mediumName","updateResourceFields","committed","log","updateResourcePerMedium","prepareResource","_value","updateMasterMemory","visitResourceFields","recursive_violated_resource_limits","getAccountAlertsCount","resourceAttributes","prepareResourceInfo","recursiveUsage","recursiveCommitted","nameYPath","assign","_computeProgress","uncommitted","progressText","formatLib","Math","abs","computeProgress","theme","getProgressTheme","target","camelCaseName","camelCase_","capitalizedCamelCaseName","container","stopFn","disk_space","disk_space_per_medium","master_memory","visitNumberOrGoDeep","_objectWithoutProperties","_excluded","isNaN","some_","makeNavigationLink","params","rest","YT","Page","NAVIGATION","search","info","URLSearchParams","acc","_info$k$options","options","serialize","_info$k$options2","_info$k$options2$seri","tmp","call","append","makeURLSearchParams","getNavigationParams","toString","COMPONENTS","ComponentsTab","NODES","RPC_PROXIES","makeSchedulingUrl","pool","poolTree","SCHEDULING","makeAccountsUrl","ACCOUNTS","prepareTabletCells","tabletCells","tabletCell","peer","uncompressed","compressed","memory","health","peers","aggregation","prepare","isTotal","collectBundlesAttrs","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","enable_bundle_balancer","tablet_count","nanToUndefined","prepareBundles","reduce_","bundleNodes","bundleList","nodeTags","tag","map","unique_node_tag","tabletCellNavigationLink","cellId","tabletTab","TabletsTab","INSTANCES","TABLET_CELLS","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath"],"sourceRoot":""}
|