@ytsaurus/ui 1.96.0 → 1.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +1 -0
  2. package/dist/public/build/assets-manifest.json +25 -25
  3. package/dist/public/build/css/{3716.f1b13197.chunk.css → 3716.932479b0.chunk.css} +2 -2
  4. package/dist/public/build/css/3716.932479b0.chunk.css.map +1 -0
  5. package/dist/public/build/js/4776.b922a445.chunk.js.map +1 -1
  6. package/dist/public/build/js/{5082.b1a7f7b1.chunk.js → 5082.b475d219.chunk.js} +2 -2
  7. package/dist/public/build/js/5082.b475d219.chunk.js.map +1 -0
  8. package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js +2 -0
  9. package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js.map +1 -0
  10. package/dist/public/build/js/dashboard.8850118b.chunk.js +3 -0
  11. package/dist/public/build/js/dashboard.8850118b.chunk.js.map +1 -0
  12. package/dist/public/build/js/main.a609b753.js +3 -0
  13. package/dist/public/build/js/main.a609b753.js.map +1 -0
  14. package/dist/public/build/js/{navigation.e85f53e0.chunk.js → navigation.7e85a761.chunk.js} +2 -2
  15. package/dist/public/build/js/navigation.7e85a761.chunk.js.map +1 -0
  16. package/dist/public/build/js/{runtime.ed973fa5.js → runtime.78bd9bc8.js} +2 -2
  17. package/dist/public/build/js/{runtime.ed973fa5.js.map → runtime.78bd9bc8.js.map} +1 -1
  18. package/dist/public/build/js/scheduling.680c5ca7.chunk.js +2 -0
  19. package/dist/public/build/js/scheduling.680c5ca7.chunk.js.map +1 -0
  20. package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js +2 -0
  21. package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js.map +1 -0
  22. package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js → yt-df-dialog.5aa0b817.chunk.js} +3 -3
  23. package/dist/public/build/js/yt-df-dialog.5aa0b817.chunk.js.map +1 -0
  24. package/dist/public/build/manifest.json +20 -20
  25. package/dist/server/components/requestsSetup.d.ts +1 -1
  26. package/dist/server/components/requestsSetup.js +5 -2
  27. package/dist/server/controllers/yt-tablet-errors-api.js +7 -3
  28. package/dist/shared/tablet-errors-manager.d.ts +1 -0
  29. package/package.json +2 -2
  30. package/dist/public/build/css/3716.f1b13197.chunk.css.map +0 -1
  31. package/dist/public/build/js/5082.b1a7f7b1.chunk.js.map +0 -1
  32. package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js +0 -2
  33. package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js.map +0 -1
  34. package/dist/public/build/js/dashboard.2150185c.chunk.js +0 -3
  35. package/dist/public/build/js/dashboard.2150185c.chunk.js.map +0 -1
  36. package/dist/public/build/js/main.56182cbb.js +0 -3
  37. package/dist/public/build/js/main.56182cbb.js.map +0 -1
  38. package/dist/public/build/js/navigation.e85f53e0.chunk.js.map +0 -1
  39. package/dist/public/build/js/scheduling.83bb157a.chunk.js +0 -2
  40. package/dist/public/build/js/scheduling.83bb157a.chunk.js.map +0 -1
  41. package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js +0 -2
  42. package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js.map +0 -1
  43. package/dist/public/build/js/yt-df-dialog.e8489fd1.chunk.js.map +0 -1
  44. /package/dist/public/build/js/{dashboard.2150185c.chunk.js.LICENSE.txt → dashboard.8850118b.chunk.js.LICENSE.txt} +0 -0
  45. /package/dist/public/build/js/{main.56182cbb.js.LICENSE.txt → main.a609b753.js.LICENSE.txt} +0 -0
  46. /package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js.LICENSE.txt → yt-df-dialog.5aa0b817.chunk.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/scheduling.680c5ca7.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/selectors/acl-filters.ts","webpack://@ytsaurus/ui/./src/ui/utils/batch.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/scheduling/expanded-pools.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/scheduling/scheduling-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/scheduling/scheduling.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/controls/ShareUsageBar.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-ts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/PoolMetaData.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/PoolStaticConfiguration/SchedulingStaticConfiguration.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/SchedulingOperationsError/SchedulingOperationsError.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/PoolsSuggest/PoolsSuggest.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Overview/PoolTags.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Overview/Overview.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableSticky.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Details/Details.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/details.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/PoolAcl/PoolAcl.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/SchedulingExpandedPoolsUpdater.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/Content.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/SchedulingResources.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/PoolEditorDialog/PoolEditorDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/Scheduling.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/index.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/scheduling/create-pool-dialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Instruments/CreatePoolDialog/CreatePoolDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/SchedulingTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Placeholder.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyHead.js","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyFooter.js","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl.ts","webpack://@ytsaurus/ui/./src/ui/components/Favourites/Favourites.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx"],"sourcesContent":["import {RootState} from '../reducers';\n\nexport function getExecuteBatchState(state: RootState) {\n return state.executeBatch;\n}\n\nexport const getApproversSubjectFilter = (state: RootState) => state.aclFilters.approversSubject;\nexport const getObjectSubjectFilter = (state: RootState) => state.aclFilters.objectSubject;\nexport const getObjectPermissionsFilter = (state: RootState) => state.aclFilters.objectPermissions;\nexport const getAclFilterColumns = (state: RootState) => state.aclFilters.columnsFilter;\nexport const getAclFilterColumnGroupName = (state: RootState) =>\n state.aclFilters.columnGroupNameFilter;\nexport const getAclFilterExpandedSubjects = (state: RootState) => state.aclFilters.expandedSubjects;\nexport const getAclCurrentTab = (state: RootState) => state.aclFilters.aclCurrentTab;\n","import {USE_CACHE, USE_MAX_SIZE} from '../../shared/constants/yt-api';\nimport {BatchSubRequest} from '../../shared/yt-types';\n\nexport function makeGet(\n path: string,\n parameters?: Omit<(BatchSubRequest & {command: 'get'})['parameters'], 'path'>,\n) {\n return {\n command: 'get' as const,\n parameters: {\n path,\n ...parameters,\n ...USE_CACHE,\n },\n };\n}\n\nexport function makeList(\n path: string,\n parameters?: Omit<(BatchSubRequest & {command: 'list'})['parameters'], 'path'>,\n) {\n return {\n command: 'list' as const,\n parameters: {\n path,\n ...parameters,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n },\n };\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../reducers';\n\nimport forEach_ from 'lodash/forEach';\nimport reduce_ from 'lodash/reduce';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {\n ExpandedPoolInfo,\n ExpandedPoolsAction,\n PoolCypressData,\n} from '../../reducers/scheduling/expanded-pools';\n\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {USE_IGNORE_NODE_DOES_NOT_EXIST, splitBatchResults} from '../../../utils/utils';\nimport {makeGet, makeList} from '../../../utils/batch';\nimport {\n CHANGE_POOL,\n ROOT_POOL_NAME,\n SCHEDULING_EXPANDED_POOLS_FAILURE,\n SCHEDULING_EXPANDED_POOLS_PARTITION,\n SCHEDULING_EXPANDED_POOLS_REQUEST,\n SCHEDULING_EXPANDED_POOLS_SUCCESS,\n} from '../../../constants/scheduling';\nimport {calculatePoolPath, getPool, getPools, getTree} from '../../selectors/scheduling/scheduling';\nimport {\n getExpandedPoolsLoadAll,\n getSchedulingOperationsExpandedPools,\n} from '../../selectors/scheduling/expanded-pools';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\nimport {PoolInfo, getSchedulingPoolsMapByName} from '../../selectors/scheduling/scheduling-pools';\nimport {BatchSubRequest} from '../../../../shared/yt-types';\nimport {SchedulingAction} from '../../../store/reducers/scheduling/scheduling';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {flattenAttributes} from '../../../utils/scheduling/scheduling';\nimport {UIBatchError} from '../../../utils/errors/ui-error';\n\ntype ExpandedPoolsThunkAction = ThunkAction<\n any,\n RootState,\n any,\n ExpandedPoolsAction | SchedulingAction\n>;\n\nconst cancelHelper = new CancelHelper();\n\nconst POOL_FIELDS_TO_LOAD = [\n 'accumulated_resource_ratio_volume',\n 'accumulated_resource_volume',\n 'demand_ratio',\n 'detailed_fair_share',\n 'dominant_resource',\n 'effective_lightweight_operations_enabled',\n 'estimated_burst_usage_duration_sec',\n 'fair_share_ratio',\n 'fifo_index',\n 'fifo_sort_parameters',\n 'integral_guarantee_type',\n 'is_ephemeral',\n 'max_operation_count',\n 'max_running_operation_count',\n 'max_share_ratio',\n 'min_share_ratio',\n 'mode',\n 'operation_count',\n 'parent',\n 'pool_operation_count',\n 'child_pool_count',\n 'resource_demand',\n 'resource_limits',\n 'specified_resource_limits',\n 'resource_usage',\n 'promised_fair_share_resources',\n 'running_operation_count',\n 'specified_burst_guarantee_resources',\n 'specified_resource_flow',\n 'starvation_status',\n 'starving',\n 'strong_guarantee_resources',\n 'usage_ratio',\n 'weight',\n 'abc',\n];\n\nconst POOL_TREE_GET_ATTRS = [\n 'integral_guarantees',\n 'weight',\n 'max_operation_count',\n 'max_running_operation_count',\n 'strong_guarantee_resources',\n 'resource_limits',\n 'specified_resource_limits',\n 'forbid_immediate_operations',\n 'create_ephemeral_subpools',\n 'fifo_sort_parameters',\n 'config',\n 'folder_id',\n];\n\nclass EmptyFullPath extends Error {}\n\nexport function loadExpandedPools(tree: string): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const pool = getPool(getState());\n\n if (!tree) {\n return undefined;\n }\n\n if (pool === ROOT_POOL_NAME) {\n return dispatch(loadExpandedOperationsAndPools(tree));\n } else {\n return ytApiV3Id\n .executeBatch<{full_path: string; is_ephemeral?: boolean}>(\n YTApiId.schedulingPoolFullPath,\n {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n path: `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools/${pool}`,\n fields: ['is_ephemeral', 'full_path'],\n },\n },\n ],\n },\n )\n .then(([{output}]) => {\n const {full_path, is_ephemeral} = output ?? {};\n if (!full_path) {\n throw new EmptyFullPath();\n } else {\n dispatch(addFullPathToExpandedPoolsNoLoad(tree, full_path, is_ephemeral));\n dispatch(loadExpandedOperationsAndPools(tree));\n }\n })\n .catch((e) => {\n if (e instanceof EmptyFullPath) {\n dispatch({type: CHANGE_POOL, data: {pool: ROOT_POOL_NAME}});\n /**\n * We don't need to call `dispatch(loadExpandedOperationsAndPools(tree))` after `CHANGE_POOL`.\n * The call will be triggered by SchedulingExpandedPoolsUpdater.\n */\n // dispatch(loadExpandedOperationsAndPools(tree));\n } else {\n new Toaster().add({\n name: 'schedulingPoolFullPath',\n theme: 'danger',\n title: '',\n });\n }\n });\n }\n };\n}\n\nfunction loadExpandedOperationsAndPools(tree: string): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const loadAll = getExpandedPoolsLoadAll(state);\n const expandedPools: Map<string, ExpandedPoolInfo> = loadAll\n ? new Map()\n : getSchedulingOperationsExpandedPools(state)[tree] ?? new Map();\n const expandedPoolNames: Array<string> = [...expandedPools.keys()];\n\n const operationsExpandedPools: Array<string> = [...expandedPoolNames];\n\n const operationsRequests: Array<BatchSubRequest> = [];\n if (loadAll) {\n operationsRequests.push(\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/operations`),\n );\n } else {\n const prefix = `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/operations_by_pool`;\n operationsExpandedPools.forEach((item) => {\n operationsRequests.push(makeGet(`${prefix}/${item}`));\n });\n }\n\n const loadAllPools = loadAll;\n const poolsRequests: Array<BatchSubRequest> = [];\n const poolsChildrenRequests: Array<BatchSubRequest> = [];\n const poolsCypressDataRequests: Array<BatchSubRequest> = [];\n\n const poolsExpandedPools: Array<string> = [ROOT_POOL_NAME, ...expandedPoolNames];\n\n if (loadAllPools) {\n poolsRequests.push(\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools`, {\n fields: POOL_FIELDS_TO_LOAD,\n }),\n );\n poolsCypressDataRequests.push(\n makeGet(`//sys/pool_trees/${tree}`, {attributes: POOL_TREE_GET_ATTRS}),\n );\n } else {\n poolsExpandedPools.forEach((pool) => {\n poolsRequests.push(\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools/${pool}`, {\n fields: POOL_FIELDS_TO_LOAD,\n }),\n );\n poolsChildrenRequests.push(\n makeGet(\n `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/child_pools_by_pool/${pool}`,\n {\n fields: POOL_FIELDS_TO_LOAD,\n },\n ),\n );\n const {parentPoolPath, isEphemeral} = expandedPools.get(pool) ?? {};\n const cypressDataPath = parentPoolPath\n ? `//sys/pool_trees/${tree}/${parentPoolPath}/${pool}`\n : `//sys/pool_trees/${tree}/${pool}`;\n if (pool === ROOT_POOL_NAME || !isEphemeral) {\n poolsCypressDataRequests.push(\n makeList(\n pool === ROOT_POOL_NAME ? `//sys/pool_trees/${tree}` : cypressDataPath,\n {\n attributes: POOL_TREE_GET_ATTRS,\n },\n ),\n );\n }\n });\n }\n\n cancelHelper.removeAllRequests();\n\n dispatch({type: SCHEDULING_EXPANDED_POOLS_REQUEST});\n return Promise.all([\n operationsRequests.length\n ? ytApiV3Id.executeBatch(YTApiId.schedulingLoadOperationsPerPool, {\n parameters: {requests: operationsRequests},\n cancellation: cancelHelper.saveCancelToken,\n })\n : Promise.resolve([]),\n\n ytApiV3Id.executeBatch(\n loadAllPools ? YTApiId.schedulingLoadPoolsAll : YTApiId.schedulingLoadPoolsPerPool,\n {\n parameters: {requests: poolsRequests},\n cancellation: cancelHelper.saveCancelToken,\n },\n ),\n loadAllPools\n ? Promise.resolve([])\n : ytApiV3Id.executeBatch(YTApiId.schedulingLoadChildrenPerPool, {\n parameters: {requests: poolsChildrenRequests},\n cancellation: cancelHelper.saveCancelToken,\n }),\n !poolsCypressDataRequests.length\n ? Promise.resolve([])\n : ytApiV3Id.executeBatch(YTApiId.schedulingLoadCypressDataPerPool, {\n parameters: {requests: poolsCypressDataRequests},\n cancellation: cancelHelper.saveCancelToken,\n }),\n ])\n .then(([operationsResults, poolsResults, poolsChildrenResults, poolsCypressData]) => {\n const error = new UIBatchError('Failed to load expanded pools');\n const {results: operations, errorIgnoredIndices} = splitBatchResults(\n operationsResults,\n error,\n USE_IGNORE_NODE_DOES_NOT_EXIST,\n );\n const rawOperations = reduce_(\n operations,\n (acc, data) => {\n return Object.assign(acc, data);\n },\n {},\n );\n\n const poolsToCollapse: Record<string, false> = {};\n forEach_(errorIgnoredIndices, (pos) => {\n poolsToCollapse[operationsExpandedPools[pos]] = false;\n });\n\n const rawPools: Record<string, PoolInfo> = {};\n const cypressData: Record<string, PoolCypressData> = {};\n\n if (loadAllPools) {\n const {results: pools} = splitBatchResults<Record<string, PoolInfo>>(\n poolsResults,\n error,\n );\n const [value = {}] = pools ?? [];\n Object.assign(rawPools, value);\n\n const {\n results: [data],\n } = splitBatchResults(poolsCypressData, error);\n Object.assign(cypressData, flattenAttributes(data));\n } else {\n const {\n results: pools,\n resultIndices,\n errorIgnoredIndices: poolsReqeustsIgnored,\n } = splitBatchResults<PoolInfo>(\n poolsResults,\n error,\n USE_IGNORE_NODE_DOES_NOT_EXIST,\n );\n pools.forEach((poolInfo, index) => {\n const name = poolsExpandedPools[resultIndices[index]];\n rawPools[name] = poolInfo;\n });\n\n const {\n results: poolChildren,\n errorIgnoredIndices: poolsChildrenRequestsIgnored,\n } = splitBatchResults<Record<string, PoolInfo>>(\n poolsChildrenResults,\n error,\n USE_IGNORE_NODE_DOES_NOT_EXIST,\n );\n poolChildren.forEach((children) => {\n Object.assign(rawPools, children);\n });\n\n const {\n results: cypressDataChildrenPerPool,\n errorIgnoredIndices: poolsCypressDataRequestsIgnored,\n } = splitBatchResults<Array<PoolCypressData>>(\n poolsCypressData,\n error,\n USE_IGNORE_NODE_DOES_NOT_EXIST,\n );\n cypressDataChildrenPerPool.forEach((poolChildrenCypressData) => {\n poolChildrenCypressData.forEach((item) => {\n cypressData[item.$value] = item;\n });\n });\n\n forEach_(\n [\n ...poolsReqeustsIgnored,\n ...poolsChildrenRequestsIgnored,\n ...poolsCypressDataRequestsIgnored,\n ],\n (position) => {\n const poolName = poolsExpandedPools[position];\n poolsToCollapse[poolName] = false;\n },\n );\n setExpandedPools(poolsToCollapse);\n }\n\n dispatch({\n type: SCHEDULING_EXPANDED_POOLS_SUCCESS,\n data: {\n expandedPoolsTree: tree,\n rawOperations: Object.keys(rawOperations).length\n ? rawOperations\n : EMPTY_OBJECT,\n rawPools: Object.keys(rawPools).length ? rawPools : EMPTY_OBJECT,\n flattenCypressData: Object.keys(cypressData).length\n ? cypressData\n : EMPTY_OBJECT,\n },\n });\n\n if (error.inner_errors?.length) {\n throw error;\n }\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({\n type: SCHEDULING_EXPANDED_POOLS_FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function setExpandedPools(changes: Record<string, boolean>): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const tree = getTree(getState());\n const expandedPools = getSchedulingOperationsExpandedPools(state);\n\n const poolsByName = getSchedulingPoolsMapByName(state);\n\n const treeExpandedPools = new Map(expandedPools[tree]);\n forEach_(changes, (expanded, poolName) => {\n if (expanded) {\n const expandedPoolInfo = calcExpandedPoolInfo(poolName, poolsByName);\n treeExpandedPools.set(poolName, expandedPoolInfo);\n } else {\n treeExpandedPools.delete(poolName);\n }\n });\n\n dispatch(updateExpandedPoolNoLoad(tree, treeExpandedPools));\n dispatch(loadExpandedPools(tree));\n };\n}\n\nfunction addFullPathToExpandedPoolsNoLoad(\n tree: string,\n /**\n * elements of the array should have the same format as `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools/${pool}/full_path`\n */\n fullPath: string,\n isEphemeral?: boolean,\n): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldExpandedPools = getSchedulingOperationsExpandedPools(state);\n const treeExpandedPools = new Map(oldExpandedPools[tree]);\n\n /**\n * `fullPath` value starts from `/`, example: `/mypool/child/subchild`\n * so we have to use `.slice(1)` to remove first empty string\n */\n const parts = fullPath.split('/').slice(1);\n\n for (let i = 0; i < parts.length; ++i) {\n const poolName = parts[i];\n const parentPoolPath = parts.slice(0, i).join('/');\n treeExpandedPools.set(poolName, {parentPoolPath, isEphemeral});\n }\n\n dispatch(updateExpandedPoolNoLoad(tree, treeExpandedPools));\n };\n}\n\nfunction updateExpandedPoolNoLoad(\n tree: string,\n treeExpandedPools: Map<string, ExpandedPoolInfo>,\n): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const oldExpandedPools = getSchedulingOperationsExpandedPools(getState());\n\n const expandedPools = {\n ...oldExpandedPools,\n [tree]: treeExpandedPools,\n };\n\n dispatch({\n type: SCHEDULING_EXPANDED_POOLS_PARTITION,\n data: {expandedPools},\n });\n };\n}\n\nexport function resetExpandedPools(tree: string): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n if (!tree) {\n return;\n }\n\n const state = getState();\n const {[tree]: old, ...rest} = getSchedulingOperationsExpandedPools(state);\n\n if (old?.size) {\n dispatch({\n type: SCHEDULING_EXPANDED_POOLS_PARTITION,\n data: {\n expandedPools: {\n ...rest,\n [tree]: new Map<string, ExpandedPoolInfo>(),\n },\n },\n });\n }\n };\n}\n\nexport function getSchedulingOperationsCount(): ThunkAction<number, RootState, any, any> {\n return (_dispatch, getState) => {\n const state = getState();\n\n const tree = getSchedulingPoolsMapByName(state);\n const root = tree[ROOT_POOL_NAME];\n return root?.operationCount || 0;\n };\n}\n\nexport function getPoolPathsByName(\n poolName: string,\n): ThunkAction<{fullPath: string; orchidPath: string}, RootState, unknown, any> {\n return (_dispatch, getState) => {\n const state = getState();\n const pools = getPools(state);\n const tree = getTree(state);\n\n return {\n fullPath: calculatePoolPath(poolName, pools, tree),\n orchidPath: `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools/${poolName}`,\n };\n };\n}\n\nexport function setLoadAllOperations(loadAll: boolean): ExpandedPoolsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n dispatch({\n type: SCHEDULING_EXPANDED_POOLS_PARTITION,\n data: {loadAll},\n });\n\n const tree = getTree(state);\n dispatch(loadExpandedPools(tree));\n };\n}\n\nfunction calcExpandedPoolInfo(\n poolName: string,\n poolsByName: Record<string, PoolInfo>,\n): ExpandedPoolInfo {\n let data = poolsByName[poolName];\n const isEphemeral = data?.isEphemeral;\n let res = '';\n while (data?.parent && data.parent !== ROOT_POOL_NAME) {\n res = res ? `${data.parent}/${res}` : data.parent;\n data = poolsByName[data.parent];\n }\n return {parentPoolPath: res, isEphemeral};\n}\n","import forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport update_ from 'lodash/update';\n\nimport {\n INTEGRAL_GUARANTEES_PREFIX,\n InitialPoolResourceInfo,\n POOL_RESOURCE_TYPE_TO_ATTRIBUTE,\n PoolResourceType,\n computePoolPath,\n prepareCurrentTree,\n prepareTrees,\n} from '../../../utils/scheduling/scheduling';\nimport {\n extractBatchV4Values,\n getBatchError,\n splitBatchResults,\n wrapApiPromiseByToaster,\n} from '../../../utils/utils';\nimport {makeGet, makeList} from '../../../utils/batch';\nimport {updateNodeAttributes} from '../../../utils/cypress-attributes';\n\nimport {ThunkAction} from 'redux-thunk';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n getPools,\n getSchedulingIsInitialLoading,\n getTree,\n} from '../../../store/selectors/scheduling/scheduling';\n\nimport {\n POOL_TOGGLE_DELETE_VISIBILITY,\n SCHEDULING_DATA_FAILURE,\n SCHEDULING_DATA_PARTITION,\n SCHEDULING_DATA_REQUEST,\n SCHEDULING_DATA_SUCCESS,\n SCHEDULING_DELETE_POOL_FAILURE,\n SCHEDULING_DELETE_POOL_REQUEST,\n SCHEDULING_DELETE_POOL_SUCCESS,\n} from '../../../constants/scheduling';\nimport {loadExpandedPools} from './expanded-pools';\nimport {RumWrapper, YTApiId, ytApiV3Id, ytApiV4Id} from '../../../rum/rum-wrap-api';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport type {RootState} from '../../../store/reducers';\nimport type {SchedulingAction} from '../../../store/reducers/scheduling/scheduling';\nimport type {PoolInfo} from '../../../store/selectors/scheduling/scheduling-pools';\nimport {\n getSchedulingAttributesToFilterParams,\n schedulingOverviewHasFilter,\n} from '../../../store/selectors/scheduling/attributes-to-filter';\nimport {USE_CACHE} from '../../../../shared/constants/yt-api';\n\nconst toaster = new Toaster();\n\ntype SchedulingThunkAction<T = unknown> = ThunkAction<T, RootState, unknown, SchedulingAction>;\n\nexport function loadSchedulingData(): SchedulingThunkAction {\n return (dispatch, getState) => {\n dispatch({type: SCHEDULING_DATA_REQUEST});\n\n const state = getState();\n const isInitialLoading = getSchedulingIsInitialLoading(state);\n\n const cluster = getCluster(state);\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n return rumId\n .fetch(\n YTApiId.schedulingData,\n ytApiV3Id.executeBatch(YTApiId.schedulingData, {\n requests: [\n makeGet('//sys/scheduler/@alerts'),\n makeList('//sys/scheduler/orchid/scheduler/pool_trees'),\n makeGet('//sys/scheduler/orchid/scheduler/default_pool_tree'),\n ],\n ...USE_CACHE,\n }),\n )\n .then((data) => {\n const {\n error,\n results: [schedulerAlerts, rawTrees, defaultTree],\n } = splitBatchResults(data, 'Failed to fetch scheduling data');\n\n if (error) {\n return Promise.reject(error);\n }\n\n const state = getState();\n\n const trees = prepareTrees(rawTrees);\n const tree = prepareCurrentTree(\n defaultTree,\n trees,\n state.scheduling.scheduling.tree,\n );\n\n if (isInitialLoading) {\n dispatch(schedulingLoadFilterAttributes(tree, {checkFilters: true}));\n }\n\n dispatch({\n type: SCHEDULING_DATA_PARTITION,\n data: {schedulerAlerts, trees, tree},\n });\n\n const treeRequests = [\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/resource_usage`),\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/resource_limits`),\n makeGet(`//sys/scheduler/orchid/scheduler/pool_trees/${tree}/config`),\n makeGet(\n `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/resource_distribution_info`,\n ),\n ];\n\n if (isInitialLoading) {\n /**\n * We don't need to call `dispatch(loadExpandedPools(tree))` for this branch of code,\n * the call should be triggered by SchedulingExpandedPoolsUpdater\n */\n //dispatch(loadExpandedPools(tree));\n } else {\n dispatch(loadExpandedPools(tree));\n }\n\n return rumId\n .fetch(\n YTApiId.schedulingLoadTree,\n ytApiV4Id.executeBatch(YTApiId.schedulingLoadTree, {\n requests: treeRequests,\n ...USE_CACHE,\n }),\n )\n .then((treeData) => {\n const extracted = extractBatchV4Values(treeData, treeRequests);\n const {error, results} = splitBatchResults(\n extracted.results,\n 'Failed to fetch tree details',\n );\n if (error) {\n throw error;\n }\n return results;\n });\n })\n .then(([resource_usage, resource_limits, config, resource_distribution_info]) => {\n const treeResources = {\n resource_usage,\n resource_limits,\n config,\n resource_distribution_info,\n };\n\n dispatch({\n type: SCHEDULING_DATA_SUCCESS,\n data: {\n treeResources,\n },\n });\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: SCHEDULING_DATA_FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function deletePool(item?: PoolInfo): SchedulingThunkAction {\n return (dispatch, getState) => {\n if (!item) {\n return;\n }\n\n const state = getState();\n\n const tree = getTree(state);\n const pools = getPools(state);\n const path = computePoolPath(item, pools);\n\n dispatch({type: SCHEDULING_DELETE_POOL_REQUEST});\n\n return yt.v3\n .remove({\n path: `//sys/pool_trees/${tree}/${path}`,\n })\n .then(() => {\n toaster.add({\n name: 'delete pool',\n autoHiding: 10000,\n theme: 'success',\n title: `Successfully deleted ${item.name}. Please wait.`,\n });\n\n dispatch({type: SCHEDULING_DELETE_POOL_SUCCESS});\n dispatch(closePoolDeleteModal());\n setTimeout(() => dispatch(loadSchedulingData()), 3000);\n })\n .catch((error: any) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: SCHEDULING_DELETE_POOL_FAILURE,\n data: {error},\n });\n\n return Promise.reject(error);\n }\n return null;\n });\n };\n}\n\nexport function openPoolDeleteModal(item: PoolInfo): SchedulingAction {\n return {\n type: POOL_TOGGLE_DELETE_VISIBILITY,\n data: {\n visibility: true,\n item,\n },\n };\n}\n\nexport function closePoolDeleteModal(): SchedulingAction {\n return {\n type: POOL_TOGGLE_DELETE_VISIBILITY,\n data: {\n visibility: false,\n item: undefined,\n },\n };\n}\n\ntype PoolResources = Partial<\n Record<Exclude<PoolResourceType, 'guaranteeType'>, InitialPoolResourceInfo>\n>;\n\ninterface SetResourceGuaranteeParams {\n poolPath: string;\n values: PoolResources & {guaranteeType: string};\n initials: PoolResources;\n tree: string;\n}\n\nexport function setPoolAttributes(params: SetResourceGuaranteeParams) {\n const {poolPath, values, initials, tree} = params;\n if (isEmpty_(values)) {\n return Promise.resolve();\n }\n\n const transferData: Array<{diff: number; source: string; path: string}> = [];\n const toModify: Array<{attr: string; value: any}> = [];\n\n const {guaranteeType, ...restValues} = values;\n\n forEach_(restValues, (v, k) => {\n const {limit, source} = v || {};\n const key = k as keyof typeof restValues;\n\n const attr = POOL_RESOURCE_TYPE_TO_ATTRIBUTE[key];\n if (!source || limit === undefined) {\n toModify.push({attr, value: limit});\n } else {\n const prevLimit = initials[key]?.limit || 0;\n const diff = (limit || 0) - prevLimit;\n if (diff) {\n transferData.push({diff, source, path: attr});\n }\n }\n });\n\n if (Object.hasOwnProperty.call(values, 'guaranteeType')) {\n toModify.push({\n attr: POOL_RESOURCE_TYPE_TO_ATTRIBUTE['guaranteeType'],\n value: guaranteeType,\n });\n }\n\n return updateNodeAttributes(poolPath, toModify).then(() => {\n return transferPoolQuota({poolPath, transferData, tree});\n });\n}\n\ninterface TransferPoolQuotaParams {\n poolPath: string;\n transferData: Array<{diff: number; source: string; path: string}>;\n tree: string;\n}\n\nfunction transferPoolQuota({poolPath, transferData, tree}: TransferPoolQuotaParams) {\n if (isEmpty_(transferData)) {\n return Promise.resolve();\n }\n const tmp = poolPath.split('/');\n const dstPool = tmp[tmp.length - 1];\n\n const requests = map_(transferData, (v) => {\n const {diff, source, path} = v;\n const transferPath = path.startsWith(INTEGRAL_GUARANTEES_PREFIX)\n ? path.substr(INTEGRAL_GUARANTEES_PREFIX.length)\n : path;\n const dotPath = transferPath.replace(/\\//g, '.');\n\n const delta = update_({}, dotPath, () => Math.abs(diff));\n\n return {\n command: 'transfer_pool_resources' as const,\n parameters: {\n source_pool: diff > 0 ? source : dstPool,\n destination_pool: diff > 0 ? dstPool : source,\n pool_tree: tree,\n resource_delta: delta,\n },\n };\n });\n\n return ytApiV4Id\n .executeBatch(YTApiId.schedulingTransferPoolQuota, {requests})\n .then((res: any) => {\n const err = getBatchError(res.results, 'Failed to transfer pool quota');\n if (err) {\n return Promise.reject(err);\n }\n return res;\n });\n}\n\nexport function schedulingLoadFilterAttributes(\n tree: string,\n {checkFilters}: {checkFilters?: boolean} = {},\n): SchedulingThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n if (checkFilters && !schedulingOverviewHasFilter(state)) {\n return undefined;\n }\n\n const {lastTime, lastTree} = getSchedulingAttributesToFilterParams(state);\n if (tree === lastTree && Date.now() - lastTime < 120000) {\n return undefined;\n }\n\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.schedulingFilterAttributes, {\n path: `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools`,\n fields: ['parent', 'abc'],\n ...USE_CACHE,\n }),\n {\n skipSuccessToast: true,\n toasterName: 'schedulingLoadFilterAttributes',\n errorContent: 'Failed to load attributes required for filtering',\n },\n ).then((attributesToFilter) => {\n dispatch({\n type: SCHEDULING_DATA_PARTITION,\n data: {\n attributesToFilter,\n attributesToFilterParams: {lastTime: Date.now(), lastTree: tree},\n },\n });\n });\n };\n}\n\nexport function schedulingSetAbcFilter(abcServiceFilter: {\n id: number;\n slug: string;\n}): SchedulingThunkAction {\n return (dispatch, getState) => {\n dispatch(schedulingLoadFilterAttributes(getTree(getState())));\n dispatch({\n type: SCHEDULING_DATA_PARTITION,\n data: {abcServiceFilter},\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport mapKeys_ from 'lodash/mapKeys';\nimport mapValues_ from 'lodash/mapValues';\nimport omit_ from 'lodash/omit';\nimport pick_ from 'lodash/pick';\nimport pickBy_ from 'lodash/pickBy';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {getSchedulingNS} from '../../../store/selectors/settings';\nimport {toggleFavourite} from '../../../store/actions/favourites';\nimport {getPools, getTree} from '../../../store/selectors/scheduling/scheduling';\nimport {\n POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n computePoolPath,\n} from '../../../utils/scheduling/scheduling';\n\nimport {\n CHANGE_CONTENT_MODE,\n CHANGE_POOL,\n CHANGE_POOL_CHILDREN_FILTER,\n CHANGE_TABLE_TREE_STATE,\n CHANGE_TREE,\n SCHEDULING_EDIT_POOL_CANCELLED,\n SCHEDULING_EDIT_POOL_FAILURE,\n SCHEDULING_EDIT_POOL_REQUEST,\n SCHEDULING_EDIT_POOL_SUCCESS,\n TOGGLE_EDIT_VISIBILITY,\n} from '../../../constants/scheduling';\nimport {loadSchedulingData, setPoolAttributes} from './scheduling-ts';\nimport {splitBatchResults} from '../../../utils/utils';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\n\nconst toaster = new Toaster();\n\nconst setName = (path, newName, prevName) => {\n if (prevName === newName) {\n return Promise.resolve();\n }\n\n return yt.v3.set({path: `${path}/@name`}, newName);\n};\n\nconst makeOtherAttributesCommands = (path, values, initialValues) => {\n const initialSortParamsString = initialValues.fifoSortParams.join('|');\n const newSortParamsString = values.fifoSortParams.join('|');\n\n const commands = [];\n\n if (initialValues.forbidImmediateOperations !== values.forbidImmediateOperations) {\n commands.push({\n command: 'set',\n parameters: {\n path: `${path}/@forbid_immediate_operations`,\n },\n input: values.forbidImmediateOperations,\n });\n }\n\n if (initialValues.createEphemeralSubpools !== values.createEphemeralSubpools) {\n commands.push({\n command: 'set',\n parameters: {\n path: `${path}/@create_ephemeral_subpools`,\n },\n input: values.createEphemeralSubpools,\n });\n }\n\n if (initialSortParamsString !== newSortParamsString) {\n commands.push({\n command: 'set',\n parameters: {\n path: `${path}/@fifo_sort_parameters`,\n },\n input: values.fifoSortParams,\n });\n }\n\n return commands;\n};\n\nconst setResourceAttributes = (path, values, omittedValues, attribute) => {\n if (isEmpty_(values) && isEmpty_(omittedValues)) {\n return Promise.resolve();\n }\n\n const keyMapper = {userSlots: 'user_slots'};\n const omittedValuesList = map_(omittedValues, (value, key) => keyMapper[key] || key);\n const preparedValues = mapKeys_(values, (value, key) => keyMapper[key] || key);\n\n return ytApiV3Id\n .get(YTApiId.schedulingGetAttrsBeforeEdit, {path: `${path}/@${attribute}`})\n .then((resources) => {\n const result = {...resources, ...preparedValues};\n const input = omit_(result, omittedValuesList);\n\n return yt.v3.set({path: `${path}/@${attribute}`}, input);\n })\n .catch((error) => {\n if (error.code === 500) {\n // attribute not found\n return yt.v3.set({path: `${path}/@${attribute}`}, preparedValues);\n }\n\n return Promise.reject(error);\n });\n};\n\nconst makeGeneralCommands = (path, values, initialValues) => {\n const isInitial = (value, initialValue) => value === initialValue;\n const isOmitted = (value, omittedValues) =>\n Object.prototype.hasOwnProperty.call(omittedValues, value);\n\n //const {name: abcServiceName, slug: abcServiceSlug, id} = prepareAbcService(values.abcService);\n const omittedValues = pickBy_(\n values,\n (value) => value === '' || value === undefined || value === null,\n );\n\n const commands = [];\n\n // if (!isInitial(abcServiceSlug, initialValues.abcService?.value)) {\n // commands.push({\n // command: abcServiceSlug ? 'set' : 'remove',\n // parameters: {\n // path: `${path}/@abc`,\n // },\n // input: !abcServiceSlug ? undefined : {\n // slug: abcServiceSlug,\n // name: abcServiceName,\n // id,\n // },\n // });\n // }\n\n if (!isInitial(values.mode, initialValues.mode)) {\n commands.push({\n command: 'set',\n parameters: {\n path: `${path}/@mode`,\n },\n input: values.mode,\n });\n }\n\n if (!isInitial(values.weight, initialValues.weight)) {\n if (isOmitted('weight', omittedValues)) {\n commands.push({\n command: 'remove',\n parameters: {\n path: `${path}/@weight`,\n },\n });\n } else if (!isInitial(values.weight, initialValues.weight)) {\n commands.push({\n command: 'set',\n parameters: {\n path: `${path}/@weight`,\n },\n input: Number(values.weight),\n });\n }\n }\n\n return commands;\n};\n\nfunction isInvalidNumber(value) {\n return value === '' || isNaN(Number(value));\n}\n\nfunction isValidNumber(value) {\n return !isInvalidNumber(value);\n}\n\nexport function editPool(pool, values, initialValues) {\n return (dispatch, getState) => {\n const state = getState();\n\n const tree = getTree(state);\n const pools = getPools(state);\n const poolPath = computePoolPath(pool, pools);\n const path = `//sys/pool_trees/${tree}/${poolPath}`;\n\n const filteredResourceLimitsValues = pickBy_(values.resourceLimits, isValidNumber);\n const omittedResourceLimitsValues = pickBy_(values.resourceLimits, isInvalidNumber);\n const resourceLimitsValues = mapValues_(filteredResourceLimitsValues, (value) =>\n Number(value),\n );\n delete resourceLimitsValues['error-block'];\n delete omittedResourceLimitsValues['error-block'];\n\n dispatch({type: SCHEDULING_EDIT_POOL_REQUEST});\n\n const requests = [\n ...makeGeneralCommands(path, values.general, initialValues.general),\n ...makeOtherAttributesCommands(path, values.otherSettings, initialValues.otherSettings),\n ];\n\n return Promise.all([\n ytApiV3Id.executeBatch(YTApiId.schedulingEditPool, {requests}).then((data) => {\n const {error} = splitBatchResults(data, 'Failed to fetch pool details');\n if (error) {\n return Promise.reject(error);\n }\n }),\n setPoolAttributes({\n poolPath: path,\n values: {\n ...values.resourceGuarantee,\n ...values.integralGuarantee,\n ...pick_(values.general, Object.keys(POOL_GENERAL_TYPE_TO_ATTRIBUTE)),\n },\n initials: {\n ...initialValues.resourceGuarantee,\n ...initialValues.integralGuarantee,\n ...pick_(initialValues.general, Object.keys(POOL_GENERAL_TYPE_TO_ATTRIBUTE)),\n },\n tree,\n }),\n setResourceAttributes(\n path,\n resourceLimitsValues,\n omittedResourceLimitsValues,\n 'resource_limits',\n ),\n ])\n .then(setName(path, values.general.name, initialValues.general.name))\n .then(() => {\n toaster.add({\n name: 'edit pool',\n timeout: 10000,\n theme: 'success',\n title: `Successfully edited ${pool.name}. Please wait.`,\n });\n\n dispatch({type: SCHEDULING_EDIT_POOL_SUCCESS});\n dispatch(closeEditModal());\n setTimeout(() => dispatch(loadSchedulingData()), 3000);\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: SCHEDULING_EDIT_POOL_FAILURE,\n data: {error},\n });\n\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function openEditModal(item) {\n return {\n type: TOGGLE_EDIT_VISIBILITY,\n data: {\n visibility: true,\n item,\n },\n };\n}\n\nexport function closeEditModal({cancelled} = {}) {\n return (dispatch) => {\n dispatch({\n type: TOGGLE_EDIT_VISIBILITY,\n data: {\n visibility: false,\n item: undefined,\n },\n });\n\n if (cancelled) {\n dispatch({type: SCHEDULING_EDIT_POOL_CANCELLED});\n }\n };\n}\n\nexport function changeTree(tree) {\n return (dispatch) => {\n dispatch({\n type: CHANGE_TREE,\n data: {tree},\n });\n\n dispatch(loadSchedulingData());\n };\n}\n\nexport function changeTableTreeState(treeState) {\n return {\n type: CHANGE_TABLE_TREE_STATE,\n data: {treeState},\n };\n}\n\nexport function changePool(pool) {\n return {\n type: CHANGE_POOL,\n data: {pool},\n };\n}\n\nexport function changeContentMode(evt) {\n return {\n type: CHANGE_CONTENT_MODE,\n data: {\n contentMode: evt.target.value,\n },\n };\n}\n\nexport function changePoolChildrenFilter(poolChildrenFilter) {\n return {\n type: CHANGE_POOL_CHILDREN_FILTER,\n data: {poolChildrenFilter},\n };\n}\n\nexport function togglePoolFavourites(pool, tree) {\n return (dispatch, getState) => {\n const value = `${pool}[${tree}]`;\n const parentNS = getSchedulingNS(getState());\n return dispatch(toggleFavourite(value, parentNS));\n };\n}\n","import {RootState} from '../../../store/reducers';\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../utils/utils';\nimport {createSelector} from 'reselect';\n\nexport const getSchedulingIsFinalLoadingState = createSelector(\n [\n (store: RootState) => store.scheduling.scheduling.loading,\n (store: RootState) => store.scheduling.scheduling.loaded,\n (store: RootState) => store.scheduling.scheduling.error,\n ],\n (loading, loaded, error) => {\n const status = calculateLoadingStatus(loading, loaded, error);\n return isFinalLoadingStatus(status);\n },\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../common/hammer/format';\nimport {calcProgressProps} from '../../../../utils/utils';\nimport {Progress, ProgressProps} from '@gravity-ui/uikit';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\n\nimport './ShareUsageBar.scss';\n\nconst block = cn('share-usage-bar');\n\ninterface Props {\n className?: string;\n shareValue?: number;\n shareTitle?: string;\n usageValue?: number;\n usageTitle?: string;\n forceTheme?: ProgressProps['theme'];\n title?: React.ReactNode;\n}\n\nfunction ShareUsageBar(props: Props) {\n const {className, shareValue, usageValue, shareTitle, usageTitle, forceTheme, title} = props;\n\n const x = Number(usageValue) / Number(shareValue);\n\n if (isNaN(shareValue!) || isNaN(usageValue!) || isNaN(x)) {\n return (\n <Tooltip\n content={\n <React.Fragment>\n <div>\n {shareTitle}: {shareValue}\n </div>\n <div>\n {usageTitle}: {usageValue}\n </div>\n </React.Fragment>\n }\n >\n {format.NO_VALUE}\n </Tooltip>\n );\n }\n\n const {value, theme} = calcProgressProps(usageValue, Number(shareValue) * 2);\n\n return (\n <Tooltip\n className={block(null, className)}\n content={\n <React.Fragment>\n {title}\n <div>\n {usageTitle} / {shareTitle} = {format.Number(x, {digits: 3})}\n </div>\n </React.Fragment>\n }\n >\n <Progress\n className={block('progress')}\n size={'s'}\n value={Number(value)}\n theme={forceTheme || theme}\n />\n <div className={block('tick')} />\n </Tooltip>\n );\n}\n\nexport default React.memo(ShareUsageBar);\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\nimport {getCurrentPool, getIsRoot, getPool, getTree, getTreeResources} from './scheduling';\n\nimport ypath from '../../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {getCluster} from '../global';\nimport {PoolInfo, getPools} from './scheduling-pools';\n\nexport const getSchedulingBreadcrumbItems = createSelector(\n [getPool, getPools],\n (pool: string, pools: Array<PoolInfo>) => {\n let current: string | undefined = pool;\n const path = [];\n while (current) {\n path.push(current);\n const tmp: string = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent;\n }\n return path.reverse();\n },\n);\n\ninterface PoolStaticConfigurationItem {\n name: string;\n cpu?: number;\n cpuLabel?: string;\n gpu?: number;\n memory?: number;\n user_slots?: number;\n network?: number;\n}\n\nfunction makeStaticConfigurationItem(name: string, attrs: object): PoolStaticConfigurationItem {\n return {\n name,\n cpu: ypath.getValue(attrs, '/cpu'),\n gpu: ypath.getValue(attrs, '/gpu'),\n memory: ypath.getValue(attrs, '/user_memory'),\n user_slots: ypath.getValue(attrs, '/user_slots'),\n network: ypath.getValue(attrs, '/network'),\n };\n}\n\nexport const getCurrentPoolStaticConfiguration = createSelector(\n [getIsRoot, getCurrentPool],\n (isRoot, data): Array<PoolStaticConfigurationItem> => {\n if (isRoot || !data?.attributes) {\n return [];\n }\n\n const burst_guarantee_resources = ypath.getValue(\n data.attributes,\n '/specified_burst_guarantee_resources',\n );\n const resource_flow = ypath.getValue(data.attributes, '/specified_resource_flow');\n\n return [\n makeStaticConfigurationItem(\n 'Strong guarantee',\n ypath.getValue(data.attributes, '/strong_guarantee_resources'),\n ),\n burst_guarantee_resources &&\n makeStaticConfigurationItem('Burst', burst_guarantee_resources),\n resource_flow && makeStaticConfigurationItem('Flow', resource_flow),\n ].filter(Boolean);\n },\n);\n\ninterface PoolTreeStaticConfigurationItem {\n name: string;\n total?: number;\n\n used?: number;\n usedTitle?: string;\n\n free?: number;\n format: 'Bytes' | 'Number';\n level?: number;\n\n lastDayMaxValueSensor?: 'max_operation_count' | 'max_running_operation_count';\n lastDayMaxValueTitle?: string;\n}\n\nfunction calcTreeStaticConfiguration(totals: any, undistributed: any, resourceType: any) {\n const total = ypath.getNumber(totals, '/' + resourceType, 0);\n const free = ypath.getNumber(undistributed, '/' + resourceType, 0);\n return {\n total,\n used: total - free,\n free,\n };\n}\n\nfunction calcTreeStaticConfigurationByDistributed(\n distributed: any,\n undistributed: any,\n resourceType: any,\n) {\n const used = ypath.getNumber(distributed, '/' + resourceType, 0);\n const free = ypath.getNumber(undistributed, '/' + resourceType, 0);\n return {\n total: used + free,\n used,\n free,\n };\n}\n\nexport const getPoolsTopLevel = createSelector([getPools], (pools) => {\n return filter_(pools, ({parent}) => parent === ROOT_POOL_NAME);\n});\n\nconst getPoolsAllocatedOperationsCount = createSelector([getPoolsTopLevel], (topPools) => {\n return reduce_(\n topPools,\n (acc, item) => {\n acc.maxOperationCount += item.maxOperationCount || 0;\n acc.maxRunningOperationCount += item.maxRunningOperationCount || 0;\n return acc;\n },\n {maxOperationCount: 0, maxRunningOperationCount: 0},\n );\n});\n\nexport const getCurrentTreeGpuLimit = createSelector([getTreeResources], (resources): number => {\n return ypath.getNumber(resources, '/resource_limits/gpu', 0);\n});\n\nexport const getOperationsStaticConfiguration = createSelector(\n [getTreeResources, getPoolsAllocatedOperationsCount, getCluster, getTree],\n ({config}, allocated): Array<PoolTreeStaticConfigurationItem> => {\n const operationCount = ypath.getNumber(config, '/max_operation_count', 0);\n const runningOperationCount = ypath.getNumber(config, '/max_running_operation_count', 0);\n\n return [\n {\n name: 'Operations',\n format: 'Number',\n },\n {\n level: 1,\n name: 'Total',\n format: 'Number',\n total: operationCount,\n used: allocated.maxOperationCount,\n usedTitle: 'Max operation count',\n free: operationCount - allocated.maxOperationCount,\n\n lastDayMaxValueSensor: 'max_operation_count',\n lastDayMaxValueTitle: 'Last day max operations',\n },\n {\n level: 1,\n name: 'Running',\n format: 'Number',\n total: runningOperationCount,\n used: allocated.maxRunningOperationCount,\n usedTitle: 'Max running operation count',\n\n free: runningOperationCount - allocated.maxRunningOperationCount,\n\n lastDayMaxValueSensor: 'max_running_operation_count',\n lastDayMaxValueTitle: 'Last day max running operations',\n },\n ];\n },\n);\n\nexport const getCurrentPoolTreeStaticConfiguration = createSelector(\n [getTreeResources, getOperationsStaticConfiguration],\n (treeResources = {}, operationRows): Array<PoolTreeStaticConfigurationItem> => {\n const {resource_distribution_info, resource_limits} = treeResources;\n\n if (!resource_distribution_info) {\n return [];\n }\n\n const {\n undistributed_resources,\n distributed_burst_guarantee_resources: burst,\n undistributed_burst_guarantee_resources: unburst,\n distributed_resource_flow: flow,\n undistributed_resource_flow: unflow,\n } = resource_distribution_info;\n\n const cpuRow: PoolTreeStaticConfigurationItem = {\n level: 0,\n name: 'CPU',\n format: 'Number',\n ...calcTreeStaticConfiguration(resource_limits, undistributed_resources, 'cpu'),\n };\n\n const burstRow: PoolTreeStaticConfigurationItem = {\n level: 1,\n name: 'Burst',\n format: 'Number',\n ...calcTreeStaticConfigurationByDistributed(burst, unburst, 'cpu'),\n total: undefined,\n free: undefined,\n };\n\n const flowRow: PoolTreeStaticConfigurationItem = {\n level: 1,\n name: 'Flow',\n format: 'Number',\n ...calcTreeStaticConfigurationByDistributed(flow, unflow, 'cpu'),\n total: undefined,\n };\n\n flowRow.free = burstRow.used! - flowRow.used!;\n\n const strong: PoolTreeStaticConfigurationItem = {\n level: 1,\n name: 'Strong',\n format: 'Number',\n used:\n cpuRow.used! -\n Math.max(...[0, burstRow.used!, flowRow.used!].filter((v) => !isNaN(v))),\n };\n\n return [\n cpuRow,\n strong,\n burstRow,\n flowRow,\n {\n name: 'Memory',\n format: 'Bytes',\n ...calcTreeStaticConfiguration(\n resource_limits,\n undistributed_resources,\n 'user_memory',\n ),\n },\n {\n name: 'GPU',\n format: 'Number',\n ...calcTreeStaticConfiguration(resource_limits, undistributed_resources, 'gpu'),\n },\n ...operationRows,\n ];\n },\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport capitalize_ from 'lodash/capitalize';\n\nimport format from '../../../common/hammer/format';\nimport ypath from '../../../common/thor/ypath';\n\nimport MetaTable from '../../../components/MetaTable/MetaTable';\nimport {useSelector} from 'react-redux';\nimport {getCurrentPool, getIsRoot} from '../../../store/selectors/scheduling/scheduling';\nimport UIFactory from '../../../UIFactory';\nimport {getClusterUiConfig} from '../../../store/selectors/global';\n\nconst block = cn('pool-meta-table');\n\ninterface Props {\n className?: string;\n}\n\nexport default function PoolMetaData({className}: Props) {\n const pool = useSelector(getCurrentPool);\n const isRoot = useSelector(getIsRoot);\n const clusterUiConfig = useSelector(getClusterUiConfig);\n\n if (!pool || isRoot) {\n return null;\n }\n\n const cpu = ypath.getNumber(pool, '/cypressAttributes/strong_guarantee_resources/cpu', 0);\n const gpu = ypath.getNumber(pool, '/cypressAttributes/strong_guarantee_resources/gpu', 0);\n const memory = ypath.getNumber(pool, '/cypressAttributes/strong_guarantee_resources/memory', 0);\n const hasStrong = cpu > 0 || gpu > 0 || memory > 0;\n\n const {integralType, mode} = pool;\n const hasIntegralType = integralType && integralType !== 'none';\n\n const guaranteeType = [hasStrong && 'Strong', hasIntegralType && capitalize_(integralType)]\n .filter(Boolean)\n .join(' + ');\n return (\n <div className={block(null, className)}>\n <MetaTable\n items={[\n {\n key: 'Guarantee type',\n value: guaranteeType || 'Strong',\n },\n {\n key: 'Mode',\n value: format.Readable(mode) || format.NO_VALUE,\n },\n ...(UIFactory.getExtraMetaTableItemsForPool({pool, clusterUiConfig}) || []),\n ]}\n />\n </div>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport CollapsibleSection from '../../../components/CollapsibleSection/CollapsibleSection';\nimport {getIsRoot, getTree} from '../../../store/selectors/scheduling/scheduling';\nimport {\n getCurrentPoolStaticConfiguration,\n getCurrentPoolTreeStaticConfiguration,\n} from '../../../store/selectors/scheduling/scheduling-ts';\n\nimport DataTableYT from '../../../components/DataTableYT/DataTableYT';\nimport format from '../../../common/hammer/format';\n\nimport './SchedulingStaticConfiguration.scss';\nimport {getSettingsSchedulingExpandStaticConfiguration} from '../../../store/selectors/settings/settings-ts';\nimport {setSettingsSchedulingExpandStaticConfiguration} from '../../../store/actions/settings/settings';\nimport Label from '../../../components/Label/Label';\nimport UIFactory from '../../../UIFactory';\nimport PoolMetaData from '../Content/PoolMetaData';\nimport {getCluster} from '../../../store/selectors/global';\nimport {ArrayElement} from '../../../types';\n\nconst block = cn('scheduling-static-configuration');\n\ninterface Props {\n onToggleCollapsedState: (value: boolean) => void;\n}\n\nfunction SchedulingStaticConfiguration(props: Props) {\n const {onToggleCollapsedState} = props;\n const dispatch = useDispatch();\n const isRoot = useSelector(getIsRoot);\n\n const collapsed = useSelector(getSettingsSchedulingExpandStaticConfiguration);\n const onToggle = React.useCallback(\n (value: boolean) => {\n onToggleCollapsedState(value);\n dispatch(setSettingsSchedulingExpandStaticConfiguration(value));\n },\n [onToggleCollapsedState, dispatch],\n );\n\n return (\n <CollapsibleSection\n name={'Static configuration'}\n className={block()}\n onToggle={onToggle}\n collapsed={collapsed}\n >\n <div className={block('container')}>\n <PoolMetaData className={block('pool-meta')} />\n {isRoot ? <PoolTreeStaticConfiguration /> : <PoolStaticConfiguration />}\n </div>\n </CollapsibleSection>\n );\n}\n\nexport default React.memo(SchedulingStaticConfiguration);\n\nfunction PoolStaticConfiguration() {\n const staticConfigurationItems = useSelector(getCurrentPoolStaticConfiguration);\n\n const columns: Array<Column<ArrayElement<typeof staticConfigurationItems>>> = [\n {\n name: 'name',\n header: 'Guarantees',\n sortable: false,\n width: 200,\n },\n {\n name: 'cpu',\n header: 'CPU',\n sortable: false,\n width: 100,\n render: ({row}) => {\n const {cpu, cpuLabel} = row;\n if (cpuLabel) {\n return <Label capitalize text={cpuLabel} />;\n }\n return format['Number'](cpu);\n },\n align: 'right',\n },\n {\n name: 'gpu',\n header: 'GPU',\n sortable: false,\n width: 100,\n render: ({row}) => {\n return format['Number'](row.gpu);\n },\n align: 'right',\n },\n {\n name: 'memory',\n header: 'Memory',\n sortable: false,\n width: 120,\n render: ({row}) => {\n return format['Bytes'](row.memory);\n },\n align: 'right',\n },\n {\n name: 'user_slots',\n header: 'User slots',\n sortable: false,\n width: 100,\n render: ({row}) => {\n return format['Number'](row.user_slots);\n },\n align: 'right',\n },\n {\n name: 'network',\n header: 'Network',\n sortable: false,\n width: 100,\n render: ({row}) => {\n const res = format['Number'](row.network);\n return res === format.NO_VALUE ? res : res + ' %';\n },\n align: 'right',\n },\n ];\n\n return (\n <DataTableYT\n className={block('table')}\n columns={columns}\n data={staticConfigurationItems}\n useThemeYT={true}\n settings={{\n displayIndices: false,\n }}\n />\n );\n}\n\nfunction PoolTreeStaticConfiguration() {\n const items = useSelector(getCurrentPoolTreeStaticConfiguration);\n const poolTree = useSelector(getTree);\n const cluster = useSelector(getCluster);\n\n const columns: Array<Column<ArrayElement<typeof items>>> = [\n {\n name: 'name',\n header: '',\n sortable: false,\n width: 200,\n render: (row) => {\n const {name, level} = row?.row || {};\n return <span className={block('name', {level: level as any})}>{name}</span>;\n },\n },\n {\n name: 'total',\n header: 'Total',\n sortable: false,\n width: 100,\n render: ({row}) => {\n return format[row.format](row.total);\n },\n align: 'right',\n },\n {\n name: 'used',\n header: 'Distributed',\n sortable: false,\n width: 150,\n render({row}) {\n const {used, usedTitle, lastDayMaxValueSensor, lastDayMaxValueTitle} = row;\n const formatValue = format[row.format];\n\n const content = !lastDayMaxValueSensor\n ? null\n : UIFactory.renderSchedulingLastDayMaximum({\n cluster,\n tree: poolTree,\n title: lastDayMaxValueTitle,\n sensor: lastDayMaxValueSensor,\n format: formatValue,\n current: {\n value: formatValue(used),\n title: usedTitle!,\n },\n showHint: true,\n showAsLink: true,\n });\n\n return !content ? (\n formatValue(used)\n ) : (\n <span className={block('used-cell')}>\n {formatValue(used)} / {content}\n </span>\n );\n },\n align: 'right',\n },\n {\n name: 'free',\n header: 'Delta',\n sortable: false,\n width: 150,\n render({row}) {\n const formatFn = format[row.format];\n const {free, total, lastDayMaxValueSensor} = row;\n const freeValue = formatFn(free);\n\n const content = !lastDayMaxValueSensor\n ? null\n : UIFactory.renderSchedulingLastDayMaximum({\n cluster,\n tree: poolTree,\n title: 'Last day max operations',\n sensor: lastDayMaxValueSensor,\n format: (lastDayMaxValue?: number) => {\n const v =\n isNaN(total!) || isNaN(lastDayMaxValue!)\n ? undefined\n : total! - lastDayMaxValue!;\n return formatFn(v);\n },\n });\n\n return !content ? (\n freeValue\n ) : (\n <span>\n {freeValue} / {content}\n </span>\n );\n },\n align: 'right',\n },\n ];\n\n return (\n <DataTableYT\n className={block('table')}\n columns={columns}\n data={items}\n useThemeYT={true}\n settings={{\n displayIndices: false,\n }}\n rowClassName={(row) => {\n return !row?.level ? '' : block('row', {level: row.level as any});\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {YTErrorBlock} from '../../../../../components/Error/Error';\nimport {getSchedulingOperationsError} from '../../../../../store/selectors/scheduling/expanded-pools';\n\nfunction SchedulingOperationsError() {\n const error = useSelector(getSchedulingOperationsError);\n return !error ? null : <YTErrorBlock error={error} topMargin={'none'} />;\n}\n\nexport default React.memo(SchedulingOperationsError);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport forEach_ from 'lodash/forEach';\n\nimport {getPoolsNames, getTree} from '../../../store/selectors/scheduling/scheduling';\nimport {changePool} from '../../../store/actions/scheduling/scheduling';\nimport {schedulingLoadFilterAttributes} from '../../../store/actions/scheduling/scheduling-ts';\n\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport Suggest from '../../../components/Suggest/Suggest';\n\nimport './PoolsSuggest.scss';\n\nconst block = cn('yt-pools-suggest');\n\nexport function PoolsSuggest({\n onCancelEdit = () => {},\n className,\n autoFocus,\n}: {\n onCancelEdit?: () => void;\n className?: string;\n autoFocus?: boolean;\n}) {\n const poolNames = useSelector(getPoolsNames);\n const tree = useSelector(getTree);\n const dispatch = useDispatch();\n\n const getSuggestItems = React.useCallback(\n (_items: any, filter?: string) => {\n if (!filter) {\n return poolNames;\n }\n\n const match: Array<string> = [];\n const startsWith: Array<string> = [];\n const filtered: Array<string> = [];\n\n const lcFilter = filter?.toLowerCase();\n\n forEach_(poolNames, (poolName) => {\n const lcPoolName = poolName.toLowerCase();\n if (lcFilter === lcPoolName) {\n match.push(poolName);\n } else if (lcPoolName.startsWith(lcFilter)) {\n startsWith.push(poolName);\n } else if (poolName !== ROOT_POOL_NAME && -1 !== lcPoolName.indexOf(lcFilter)) {\n filtered.push(poolName);\n }\n });\n return match.concat(startsWith, filtered);\n },\n [poolNames],\n );\n\n const handleCancelEdit = React.useCallback(() => {\n setTimeout(onCancelEdit, 500);\n }, [onCancelEdit]);\n\n const onItemClick = React.useCallback(\n (pool: string) => {\n dispatch(changePool(pool));\n onCancelEdit();\n },\n [dispatch, onCancelEdit],\n );\n\n const onFocus = React.useCallback(() => {\n dispatch(schedulingLoadFilterAttributes(tree));\n }, [dispatch, tree]);\n\n return (\n <Suggest\n className={block(null, className)}\n popupClassName={block('popup')}\n autoFocus={autoFocus}\n filter={getSuggestItems}\n onBlur={handleCancelEdit}\n onFocus={onFocus}\n placeholder=\"Select pool...\"\n onItemClick={(item) => onItemClick('string' === typeof item ? item : item.value)}\n items={poolNames}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport capitalize_ from 'lodash/capitalize';\n\nimport Label from '../../../../../components/Label/Label';\nimport UIFactory from '../../../../../UIFactory';\nimport {PoolInfo} from '../../../../../store/selectors/scheduling/scheduling-pools';\nimport {getCluster, getClusterUiConfig} from '../../../../../store/selectors/global';\n\nimport './PoolTags.scss';\n\nconst block = cn('scheduling-pool-tags');\n\nfunction PoolTags({pool}: {pool: PoolInfo}) {\n const cluster = useSelector(getCluster);\n const clusterUiConfig = useSelector(getClusterUiConfig);\n\n const {integralType} = pool;\n const showGuaranteeType = integralType === 'burst' || integralType === 'relaxed';\n const hasFlow = Number(pool.flowCPU) > 0 || Number(pool.flowGPU) > 0;\n return (\n <span className={block()}>\n {showGuaranteeType && (\n <Label\n className={block('tag')}\n text={capitalize_(integralType)}\n theme={'complementary'}\n />\n )}\n {!showGuaranteeType && hasFlow && (\n <Label className={block('tag')} text={'Integral'} theme={'complementary'} />\n )}\n {pool.mode === 'fifo' && (\n <Label className={block('tag')} text={'FIFO'} theme={'misc'} />\n )}\n {UIFactory.renderSchedulingTableItemExtraControls({\n cluster,\n pool,\n clusterUiConfig,\n })}\n </span>\n );\n}\n\nexport default React.memo(PoolTags);\n","import React, {Component, Fragment} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\nimport qs from 'qs';\n\nimport ElementsTable from '../../../../../components/ElementsTable/ElementsTable';\nimport {FormattedLink, FormattedText} from '../../../../../components/formatters';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport Button from '../../../../../components/Button/Button';\nimport Label from '../../../../../components/Label/Label';\nimport Link from '../../../../../components/Link/Link';\nimport Icon from '../../../../../components/Icon/Icon';\nimport WithStickyToolbar from '../../../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {\n changePool,\n changeTableTreeState,\n openEditModal,\n} from '../../../../../store/actions/scheduling/scheduling';\nimport {\n openPoolDeleteModal,\n schedulingSetAbcFilter,\n} from '../../../../../store/actions/scheduling/scheduling-ts';\nimport {\n getCurrentPool,\n getIsRoot,\n getSchedulingIsInitialLoading,\n getSchedulingOverviewMaxDepth,\n getSchedulingTreeState,\n getSortState,\n getTableItems,\n getTree,\n} from '../../../../../store/selectors/scheduling/scheduling';\nimport {\n getOperationRefId,\n getSchedulingAbcFilter,\n} from '../../../../../store/selectors/scheduling/attributes-to-filter';\nimport {SCHEDULING_POOL_TREE_TABLE_ID, Tab} from '../../../../../constants/scheduling';\nimport {poolsTableItems} from '../../../../../utils/scheduling/overviewTable';\nimport {Page} from '../../../../../constants/index';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {useRumMeasureStop} from '../../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {getSchedulingIsFinalLoadingState} from '../../../../../store/selectors/scheduling';\nimport ShareUsageBar from '../../controls/ShareUsageBar';\nimport SchedulingStaticConfiguration from '../../../PoolStaticConfiguration/SchedulingStaticConfiguration';\n\nimport {DialogWrapper as Dialog} from '../../../../../components/DialogWrapper/DialogWrapper';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {LightWeightIcon} from '../../../../../components/OperationPool/LightWeightIcon';\nimport SchedulingOperationsError from '../SchedulingOperationsError/SchedulingOperationsError';\nimport {\n getPoolPathsByName,\n getSchedulingOperationsCount,\n resetExpandedPools,\n setExpandedPools,\n setLoadAllOperations,\n} from '../../../../../store/actions/scheduling/expanded-pools';\nimport {PoolsSuggest} from '../../../../../pages/scheduling/PoolsSuggest/PoolsSuggest';\nimport PoolTags from './PoolTags';\nimport UIFactory from '../../../../../UIFactory';\n\nimport './Overview.scss';\n\nconst block = cn('scheduling-overview');\n\nconst STARVATION_STATUS_TO_THEME = {\n starving: 'warning',\n aggressively_starving: 'danger',\n};\n\nclass Overview extends Component {\n static resourcePropTypes = PropTypes.shape({\n type: PropTypes.string.isRequired,\n progress: PropTypes.object.isRequired,\n });\n\n static tableItemPropTypes = PropTypes.shape({\n abc: PropTypes.object,\n name: PropTypes.string.isRequired,\n fairShareRatio: PropTypes.number,\n usageRatio: PropTypes.number,\n weight: PropTypes.number,\n demandRatio: PropTypes.number,\n\n runningOperationCount: PropTypes.number,\n operationCount: PropTypes.number,\n children: PropTypes.array,\n level: PropTypes.number,\n type: PropTypes.string,\n mode: PropTypes.string,\n });\n\n static propTypes = {\n // from connect\n treeState: PropTypes.string.isRequired,\n cluster: PropTypes.string.isRequired,\n items: PropTypes.arrayOf(Overview.tableItemPropTypes).isRequired,\n currentPool: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n\n changePool: PropTypes.func.isRequired,\n openPoolDeleteModal: PropTypes.func.isRequired,\n schedulingSetFilter: PropTypes.func.isRequired,\n openEditModal: PropTypes.func.isRequired,\n changeTableTreeState: PropTypes.func.isRequired,\n schedulingSetAbcFilter: PropTypes.func.isRequired,\n\n isInitialLoading: PropTypes.bool,\n };\n\n static poolModeTheme = {\n fair_share: 'default',\n fifo: 'info',\n };\n\n static renderBars([share, usage] = [], {forceTheme = undefined, title = undefined}) {\n return (\n <ShareUsageBar\n className={block('bars')}\n shareValue={share?.value}\n shareTitle={share?.title}\n usageValue={usage?.value}\n usageTitle={usage?.title}\n forceTheme={forceTheme}\n title={title}\n />\n );\n }\n\n static renderRatio(data) {\n const EPSILON = 1e-6;\n\n if (data < EPSILON) {\n return 0;\n } else if (data === 1) {\n return 1;\n }\n\n return hammer.format['Number'](data, {digits: 6});\n }\n\n static renderMode(item) {\n if (item.mode) {\n const text = hammer.format['ReadableField'](item.mode);\n const theme = Overview.poolModeTheme[item.mode];\n\n return <Label text={text} theme={theme} />;\n }\n\n return hammer.format.NO_VALUE;\n }\n\n static renderWeight(item) {\n const {weightEdited, type} = item;\n const edited = !isNaN(weightEdited);\n const content = edited ? 'Explicitly defined' : 'Automatically calculated';\n return (\n <span className={block('weight-content', {edited})}>\n <Tooltip content={type === 'pool' ? content : null}>\n {hammer.format['Number'](item.weight, {\n digits: 6,\n digitsOnlyForFloat: true,\n })}\n </Tooltip>\n </span>\n );\n }\n\n static renderColumnAsRatio(item, columnName) {\n const data = poolsTableItems[columnName].get(item);\n\n return Overview.renderRatio(data);\n }\n\n static renderFairShareUsage(item) {\n const barsData = [\n {\n value: item.fairShareRatio,\n title: 'Fair share',\n theme: 'success',\n },\n {\n value: item.usageRatio,\n title: 'Usage',\n theme: 'info',\n },\n ];\n\n const {starvation_status} = item;\n const forceTheme = STARVATION_STATUS_TO_THEME[starvation_status];\n\n return Overview.renderBars(barsData, {\n forceTheme,\n title: !forceTheme ? null : (\n <div className={block('starvation-status')}>\n <Label theme={forceTheme} text={hammer.format.Readable(starvation_status)} />\n </div>\n ),\n });\n }\n\n static renderOperationOverview(item) {\n const formatter = hammer.format['Number'];\n\n return formatter(item.runningOperationCount) + ' / ' + formatter(item.operationCount);\n }\n\n static renderAttributesButton(item, getPoolPaths) {\n const buttonProps = getPoolPaths\n ? {\n getPathProps: () => {\n return {\n exactPath: getPoolPaths(item.name).orchidPath,\n };\n },\n }\n : {\n attributes: item.attributes,\n };\n return <ClickableAttributesButton title={item.name} {...buttonProps} />;\n }\n\n static renderEditButton(item, onClick) {\n if (item.isEphemeral) {\n return null;\n }\n const title = `edit pool ${item?.name || ''}`;\n return (\n <Button title={title} size=\"s\" view=\"flat-secondary\" onClick={onClick}>\n <Icon awesome=\"pencil\" />\n </Button>\n );\n }\n\n static renderFifoIndex(item) {\n if (item.fifoIndex === undefined || item.type !== 'operation') {\n return '';\n } else {\n return item.fifoIndex;\n }\n }\n\n static renderDeleteButton(item, onClick) {\n if (item.isEphemeral) {\n return null;\n }\n return (\n <Button size=\"s\" view=\"flat-secondary\" onClick={onClick}>\n <Icon awesome=\"trash-bin\" />\n </Button>\n );\n }\n\n static renderType(item, columnName, toggleItemState, itemState, allowExpand = true) {\n const icon = {\n pool: 'tasks',\n operation: 'code',\n };\n\n const empty = allowExpand && itemState ? itemState.empty : true;\n const expanderClass = block('table-row-expander', {empty});\n const expanderClassIcon = block('table-row-expander-icon', {empty});\n\n const expanderIcon = itemState && (\n <Icon\n className={expanderClassIcon}\n awesome={itemState.collapsed ? 'angle-down' : 'angle-up'}\n />\n );\n\n return (\n <span onClick={empty ? undefined : toggleItemState} className={expanderClass}>\n {item.type !== 'operation' && expanderIcon}\n <span\n className={block('operation-icon', {\n type: item.type,\n })}\n title={item.type}\n >\n {icon[item.type] ? <Icon awesome={icon[item.type]} /> : null}\n </span>\n </span>\n );\n }\n\n static renderName(item, tab, cluster, currentPool) {\n const isCurrentPool = item.name === currentPool.name;\n const linkText = {\n pool: item.incomplete ? '' : item.name,\n operation: item.id,\n };\n\n if (item.type === 'pool') {\n if (isCurrentPool) {\n return <FormattedText text={linkText[item.type]} />;\n } else {\n const params = qs.parse(window.location.search.slice(1));\n const text = linkText[item.type];\n const state = {\n ...params,\n tab,\n cluster,\n pool: item.name,\n page: Page.SCHEDULING,\n };\n return <FormattedLink text={text} state={state} theme=\"primary\" routed />;\n }\n } else if (item.type === 'operation') {\n const url = `/${cluster}/operations/${item.id}`;\n return <Link url={url}>{linkText[item.type]}</Link>;\n } else {\n return <FormattedText text={item.name} />;\n }\n }\n\n static renderEphemeralIcon(item) {\n return (\n item.isEphemeral && (\n <Tooltip content=\"Ephemeral pool\" className={block('ephemeral-icon')}>\n <Icon awesome=\"ghost\" />\n </Tooltip>\n )\n );\n }\n\n static renderEffectiveLightweightIcon(item) {\n return (\n item.isEffectiveLightweight && <LightWeightIcon className={block('ephemeral-icon')} />\n );\n }\n\n static renderDominantResource(item) {\n return hammer.format['ReadableField'](item.dominantResource);\n }\n\n static renderMinShare(item) {\n return Overview.renderRatio(item.minShareRatio);\n }\n\n renderNameCell = (item, ...rest) => {\n const {cluster, currentPool, changePool, itemsMaxDepth} = this.props;\n const allowExpand = item.name !== currentPool.name;\n\n return (\n <span\n className={block('name-content', {\n level: item.level,\n 'max-depth': itemsMaxDepth,\n })}\n >\n {Overview.renderType(item, ...rest, allowExpand)}\n <span className={block('name-content-name')}>\n {Overview.renderName(item, Tab.OVERVIEW, cluster, currentPool, changePool)}\n </span>\n {Overview.renderEphemeralIcon(item)}\n {Overview.renderEffectiveLightweightIcon(item)}\n <PoolTags pool={item} />\n </span>\n );\n };\n\n renderActions = (item) => {\n const {openEditModal, openPoolDeleteModal, getPoolPathsByName} = this.props;\n\n if (item.aggregation) {\n return;\n }\n\n if (item.type !== 'pool') {\n return Overview.renderAttributesButton(item);\n }\n\n const handleEditClick = () => openEditModal(item);\n const handleDeleteClick = () => openPoolDeleteModal(item);\n\n return (\n <Fragment>\n {Overview.renderAttributesButton(item, getPoolPathsByName)}\n &nbsp;\n {Overview.renderEditButton(item, handleEditClick)}\n &nbsp;\n {Overview.renderDeleteButton(item, handleDeleteClick)}\n </Fragment>\n );\n };\n\n get tableSettings() {\n const {treeState} = this.props;\n\n return {\n treeState,\n css: block(),\n theme: 'light',\n striped: false,\n tableId: SCHEDULING_POOL_TREE_TABLE_ID,\n tree: true,\n itemHeight: 40,\n columns: {\n items: poolsTableItems,\n sets: {\n default: {\n items: [\n 'name',\n 'FI',\n 'weight',\n 'fair_share_usage',\n 'fair_share',\n 'usage',\n 'demand',\n 'min_share',\n 'operation_overview',\n 'dominant_resource',\n 'actions',\n ],\n },\n },\n mode: 'default',\n },\n templates: {\n name: this.renderNameCell,\n mode: Overview.renderMode,\n FI: Overview.renderFifoIndex,\n weight: Overview.renderWeight,\n fair_share: Overview.renderColumnAsRatio,\n usage: Overview.renderColumnAsRatio,\n demand: Overview.renderColumnAsRatio,\n min_share: Overview.renderMinShare,\n fair_share_usage: Overview.renderFairShareUsage,\n dominant_resource: Overview.renderDominantResource,\n operation_overview: Overview.renderOperationOverview,\n actions: this.renderActions,\n },\n computeKey(item) {\n return item.key;\n },\n };\n }\n\n renderToolbar() {\n return (\n <div className={block('toolbar')}>\n <SchedulingOverviewToolbar {...this.props} />\n </div>\n );\n }\n\n rowClassName = (item) => {\n const {currentPool} = this.props;\n return item.name !== currentPool?.name ? undefined : block('current-row');\n };\n\n render() {\n const {items, treeStateExpanded, isInitialLoading, operationRefId, sortState} = this.props;\n\n const refItem = items?.find((item) => item?.name === operationRefId);\n\n return (\n <ErrorBoundary>\n <div className={block(null, 'elements-section')}>\n <SchedulingStaticConfiguration onToggleCollapsedState={fireResizeEvent} />\n <WithStickyToolbar\n toolbar={this.renderToolbar()}\n content={\n <React.Fragment>\n <SchedulingOperationsError />\n <ResetExpandedPoolsOnTreeChange>\n <ElementsTable\n {...this.tableSettings}\n treeStateExpanded={treeStateExpanded}\n items={items}\n rowClassName={this.rowClassName}\n onItemToggleState={this.onItemToggleState}\n isLoading={isInitialLoading}\n highlightedItem={refItem}\n compareHighlitedBy={'name'}\n getEffectiveSortState={() => sortState}\n />\n </ResetExpandedPoolsOnTreeChange>\n </React.Fragment>\n }\n />\n </div>\n </ErrorBoundary>\n );\n }\n\n onItemToggleState = (poolPath, collapsed) => {\n const {setExpandedPools} = this.props;\n const parts = poolPath.split('/');\n const poolName = parts[parts.length - 1];\n\n setExpandedPools({[poolName]: !collapsed});\n };\n}\n\nconst mapStateToProps = (state) => {\n const sortState = getSortState(state);\n const items = getTableItems(state);\n const itemsMaxDepth = getSchedulingOverviewMaxDepth(state);\n const cluster = getCluster(state);\n const currentPool = getCurrentPool(state);\n const treeState = getSchedulingTreeState(state);\n const isRoot = getIsRoot(state);\n\n const isInitialLoading = getSchedulingIsInitialLoading(state);\n\n const operationRefId = getOperationRefId(state);\n\n return {\n cluster,\n sortState,\n items,\n itemsMaxDepth,\n currentPool,\n treeState,\n treeStateExpanded: isRoot || !items[0] ? undefined : [items[0].key],\n abcServiceFilter: getSchedulingAbcFilter(state),\n isInitialLoading,\n operationRefId,\n };\n};\n\nconst mapDispatchToProps = {\n changePool,\n openPoolDeleteModal,\n openEditModal,\n changeTableTreeState,\n schedulingSetAbcFilter,\n setExpandedPools,\n getSchedulingOperationsCount,\n setLoadAllOperations,\n getPoolPathsByName,\n};\n\nfunction fireResizeEvent() {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 500);\n}\n\nconst OverviewConnected = connect(mapStateToProps, mapDispatchToProps)(Overview);\n\nexport default OverviewConnected;\n\nexport function OverviewWithRum() {\n const isFinalState = useSelector(getSchedulingIsFinalLoadingState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.SCHEDULING_OVERVIEW,\n additionalStartType: RumMeasureTypes.SCHEDULING,\n startDeps: [isFinalState],\n allowStart: ([isFinal]) => {\n return !isFinal;\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.SCHEDULING_OVERVIEW,\n stopDeps: [isFinalState],\n allowStop: ([isFinal]) => {\n return isFinal;\n },\n });\n\n return <OverviewConnected />;\n}\n\nfunction ResetExpandedPoolsOnTreeChange({children}) {\n const dispatch = useDispatch();\n const tree = useSelector(getTree);\n /**\n * The component is required to reset inner state of ElementsTable by recreate it when tree is changed.\n * Also it resets state when the tab is changed back from 'Details'\n * These resets are required to sync store.getState().schedulingOperations.expandedPools and state of ElementsTable\n * to correctly calculate current max depth of items (see getSchedulingOverviewMaxDepth)\n */\n React.useEffect(() => {\n dispatch(resetExpandedPools(tree));\n }, [tree]);\n\n return <React.Fragment key={tree}>{children}</React.Fragment>;\n}\n\nclass SchedulingOverviewToolbar extends React.PureComponent {\n state = {\n confirmExpandDialogVisible: false,\n };\n\n handleExpand = () => {\n const opCount = this.props.getSchedulingOperationsCount();\n if (opCount <= 2000) {\n this.onConfirmExpand();\n } else {\n this.setConfirmDialogVisibility(true);\n }\n };\n onConfirmExpand = () => {\n const {setLoadAllOperations} = this.props;\n setLoadAllOperations(true);\n this.props.changeTableTreeState('expanded');\n };\n handleCollapse = () => {\n const {setLoadAllOperations} = this.props;\n setLoadAllOperations(true);\n this.props.changeTableTreeState('collapsed');\n };\n\n onAbcServiceFilter = (abcService) => {\n const {slug, id} = abcService || {};\n this.props.schedulingSetAbcFilter({id, slug});\n };\n\n setConfirmDialogVisibility = (confirmExpandDialogVisible) => {\n this.setState({confirmExpandDialogVisible});\n };\n\n renderConfirmExpandDialog() {\n const {confirmExpandDialogVisible} = this.state;\n return !confirmExpandDialogVisible ? null : (\n <Dialog open={true}>\n <Dialog.Header caption={'Confirmation of \"Expand all\"'} />\n <Dialog.Body>\n To display the expanded tree it is required to load all running operations, it\n might be a reason of less responsiveness UI.\n <div>Are you sure you want to load all running operations?</div>\n </Dialog.Body>\n <Dialog.Footer\n onClickButtonApply={() => {\n this.setConfirmDialogVisibility(false);\n this.onConfirmExpand();\n }}\n onClickButtonCancel={() => this.setConfirmDialogVisibility(false)}\n textButtonCancel={'No'}\n textButtonApply={'Yes, please expand'}\n />\n </Dialog>\n );\n }\n\n render() {\n const {\n abcServiceFilter: {slug},\n } = this.props;\n\n return (\n <React.Fragment>\n {this.renderConfirmExpandDialog()}\n <PoolsSuggest className={block('filter')} />\n\n {UIFactory.renderControlAbcService({\n className: block('abc-filter'),\n value: {slug},\n onChange: this.onAbcServiceFilter,\n })}\n\n <Button\n size=\"m\"\n className={block('toolbar-button')}\n theme=\"normal\"\n title=\"Expand All\"\n onClick={this.handleExpand}\n >\n <Icon awesome=\"arrow-to-bottom\" />\n </Button>\n\n <Button size=\"m\" theme=\"normal\" title=\"Collapse All\" onClick={this.handleCollapse}>\n <Icon awesome=\"arrow-to-top\" />\n </Button>\n </React.Fragment>\n );\n }\n}\n","import React from 'react';\nimport {compose} from 'redux';\n\nimport withStickyHead from '../../components/ElementsTable/hocs/withStickyHead';\nimport withStickyFooter from '../../components/ElementsTable/hocs/withStickyFooter';\nimport ElementsTableBase from '../../components/ElementsTable/ElementsTable';\n\nconst ElementsTable = compose(withStickyHead, withStickyFooter)(ElementsTableBase);\n\nfunction ElementsTableSticky(props) {\n return <ElementsTable {...props} />;\n}\n\nexport default ElementsTableSticky;\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport ElementsTableSticky from '../../../../../components/ElementsTable/ElementsTableSticky';\nimport Overview from '../../../../../pages/scheduling/Content/tabs/Overview/Overview';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport Filter from '../../../../../components/Filter/Filter';\nimport WithStickyToolbar from '../../../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {\n changeContentMode,\n changePool,\n changePoolChildrenFilter,\n openEditModal,\n} from '../../../../../store/actions/scheduling/scheduling';\nimport {openPoolDeleteModal} from '../../../../../store/actions/scheduling/scheduling-ts';\nimport {SCHEDULING_POOL_CHILDREN_TABLE_ID, Tab} from '../../../../../constants/scheduling';\nimport {calculateTotalOverPools} from '../../../../../utils/scheduling/details';\nimport {childTableItems} from '../../../../../utils/scheduling/detailsTable';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getContentMode,\n getCurrentPool,\n getPollChildrenTableItems,\n getPoolChildrenFilter,\n getPoolChildrenSortState,\n getSchedulingIsInitialLoading,\n getSortedPoolChildren,\n} from '../../../../../store/selectors/scheduling/scheduling';\n\nimport {getSchedulingIsFinalLoadingState} from '../../../../../store/selectors/scheduling';\nimport {useRumMeasureStop} from '../../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {getProgressTheme} from '../../../../../utils/progress';\nimport {useAppRumMeasureStart} from '../../../../../rum/rum-app-measures';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {Bold, Secondary} from '../../../../../components/Text/Text';\n\nimport SchedulingOperationsError from '../SchedulingOperationsError/SchedulingOperationsError';\nimport {getPoolPathsByName} from '../../../../../store/actions/scheduling/expanded-pools';\n\nimport PoolTags from '../Overview/PoolTags';\n\nimport './Details.scss';\n\nconst block = cn('scheduling-details');\n\nclass Details extends Component {\n static renderDominantResource(item) {\n return hammer.format['ReadableField'](item.dominantResource);\n }\n\n static renderMinShare(item) {\n return Overview.renderRatio(item.minShareRatio);\n }\n\n static renderMaxShare(item) {\n return Overview.renderRatio(item.maxShareRatio);\n }\n\n static renderColumnAsRatio(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return Overview.renderRatio(data);\n }\n\n static renderColumnAsNumber(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return hammer.format['Number'](data);\n }\n\n static renderMaxOperationCount(item) {\n const {maxOperationCount, maxOperationCountEdited} = item;\n return Details.renderNumberWithEdited(maxOperationCount, maxOperationCountEdited);\n }\n\n static renderMaxRunningOperationCount(item) {\n const {maxRunningOperationCount, maxRunningOperationCountEdited} = item;\n return Details.renderNumberWithEdited(\n maxRunningOperationCount,\n maxRunningOperationCountEdited,\n );\n }\n\n static renderNumberWithEdited(value, editedValue) {\n const content = hammer.format.Number(value);\n\n const autoCalculated = isNaN(editedValue);\n return (\n <Tooltip content={autoCalculated ? 'Automatically calculated' : 'Explicitly defined'}>\n {autoCalculated ? <Secondary>{content}</Secondary> : <Bold>{content}</Bold>}\n </Tooltip>\n );\n }\n\n static renderColumnAsBytes(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return hammer.format['Bytes'](data);\n }\n\n static renderColumnAsFloatNumber(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return hammer.format['Number'](data, {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n }\n\n static renderIntegralGuarantee(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n const {integralType} = item;\n const hasActiveGuarantee = integralType && integralType !== 'none';\n\n const value = hammer.format['Number'](data, {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n\n return hasActiveGuarantee ? (\n value\n ) : (\n <Tooltip\n className={block('integral-guarantee', {\n inactive: !hasActiveGuarantee,\n })}\n content={'It is impossible to use the guarantee until \"Guarantee type\" is defined'}\n >\n {value}\n </Tooltip>\n );\n }\n\n static renderColumnAsReadable(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return hammer.format['ReadableField'](data);\n }\n\n static renderIntegralType(item, columnName) {\n const data = childTableItems[columnName].get(item);\n\n return data === undefined\n ? hammer.format.NO_VALUE\n : Details.renderColumnAsReadable(item, columnName);\n }\n\n static renderAsProgress(item, columnName) {\n const value = childTableItems[columnName].get(item);\n const theme = getProgressTheme(value);\n const text = childTableItems[columnName].text(item);\n return isNaN(value) ? (\n hammer.format.NO_VALUE\n ) : (\n <Progress value={value * 100} theme={theme} text={text} />\n );\n }\n\n static childrenIntegrals(item, columnName) {\n const value = childTableItems[columnName].get(item);\n return !value\n ? hammer.format.NO_VALUE\n : hammer.format.Number(value, {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n }\n\n static propTypes = {\n // from connect\n mode: PropTypes.string.isRequired,\n filter: PropTypes.string.isRequired,\n cluster: PropTypes.string.isRequired,\n currentPool: PropTypes.shape({\n name: PropTypes.string.isRequired,\n }),\n items: PropTypes.arrayOf(Overview.tableItemPropTypes).isRequired,\n children: PropTypes.arrayOf(Overview.tableItemPropTypes),\n\n changePoolChildrenFilter: PropTypes.func.isRequired,\n changeContentMode: PropTypes.func.isRequired,\n openEditModal: PropTypes.func.isRequired,\n openPoolDeleteModal: PropTypes.func.isRequired,\n changePool: PropTypes.func.isRequired,\n\n isInitialLoading: PropTypes.bool,\n };\n\n get columnsSets() {\n return {\n cpu: {\n items: [\n 'name',\n 'FI',\n 'weight',\n 'min_resources_cpu',\n 'abs_guaranteed_cpu',\n //'rel_guaranteed_cpu',\n 'abs_demand_cpu',\n 'resource_detailed_cpu',\n 'abs_usage_cpu',\n //'rel_usage_cpu',\n 'resource_limit_cpu',\n //'guaranteed_usage_cpu',\n 'actions',\n ],\n },\n memory: {\n items: [\n 'name',\n 'FI',\n 'weight',\n 'min_resources_memory',\n 'abs_guaranteed_memory',\n //'rel_guaranteed_memory',\n 'abs_demand_memory',\n 'resource_detailed_memory',\n 'abs_usage_memory',\n //'rel_usage_memory',\n 'resource_limit_memory',\n //'guaranteed_usage_memory',\n 'actions',\n ],\n },\n gpu: {\n items: [\n 'name',\n 'FI',\n 'weight',\n 'min_resources_gpu',\n 'abs_guaranteed_gpu',\n //'rel_guaranteed_gpu',\n 'abs_demand_gpu',\n 'resource_detailed_gpu',\n 'abs_usage_gpu',\n //'rel_usage_gpu',\n 'resource_limit_gpu',\n //'guaranteed_usage_gpu',\n 'actions',\n ],\n },\n user_slots: {\n items: [\n 'name',\n 'FI',\n 'weight',\n 'min_resources_user_slots',\n 'abs_guaranteed_user_slots',\n //'rel_guaranteed_user_slots',\n 'abs_demand_user_slots',\n 'resource_detailed_user_slots',\n 'abs_usage_user_slots',\n //'rel_usage_user_slots',\n 'resource_limit_user_slots',\n //'guaranteed_usage_user_slots',\n 'actions',\n ],\n },\n operations: {\n items: [\n 'name',\n 'FI',\n 'running_operation_count',\n 'max_running_operation_count',\n 'running_operation_progress',\n 'operation_count',\n 'max_operation_count',\n 'operation_progress',\n 'actions',\n ],\n },\n integral: {\n items: [\n 'name',\n 'FI',\n 'integral_type',\n 'burst_cpu',\n 'children_burst_cpu',\n 'flow_cpu',\n 'children_flow_cpu',\n 'accumulated',\n //'accumulated_cpu',\n 'burst_duration',\n 'actions',\n ],\n },\n };\n }\n\n get tableSettings() {\n const {mode, children} = this.props;\n const isCurrentPool = this.isCurrentPool;\n const totalRow = children?.length ? calculateTotalOverPools(children) : undefined;\n\n return {\n css: block(),\n theme: 'light',\n striped: false,\n tableId: SCHEDULING_POOL_CHILDREN_TABLE_ID,\n footer: totalRow,\n header: false,\n top: 99,\n columns: {\n items: childTableItems,\n sets: this.columnsSets,\n mode,\n },\n templates: {\n name: this.renderNameCell,\n mode: Overview.renderMode,\n FI: Overview.renderFifoIndex,\n weight: Overview.renderWeight,\n dominant_resource: Details.renderDominantResource,\n min_share: Details.renderMinShare,\n max_share: Details.renderMaxShare,\n operation_overview: Overview.renderOperationOverview,\n demand: Details.renderColumnAsRatio,\n fair_share: Details.renderColumnAsRatio,\n usage: Details.renderColumnAsRatio,\n fair_share_usage: Overview.renderFairShareUsage,\n\n resource_detailed_cpu: Details.renderColumnAsFloatNumber,\n resource_detailed_memory: Details.renderColumnAsBytes,\n resource_detailed_gpu: Details.renderColumnAsNumber,\n resource_detailed_user_slots: Details.renderColumnAsNumber,\n\n resource_limit_cpu: Details.renderColumnAsFloatNumber,\n resource_limit_memory: Details.renderColumnAsBytes,\n resource_limit_gpu: Details.renderColumnAsNumber,\n resource_limit_user_slots: Details.renderColumnAsNumber,\n\n min_resources_cpu: Details.renderColumnAsFloatNumber,\n min_resources_memory: Details.renderColumnAsBytes,\n min_resources_gpu: Details.renderColumnAsNumber,\n min_resources_user_slots: Details.renderColumnAsNumber,\n\n abs_guaranteed_cpu: Details.renderColumnAsFloatNumber,\n abs_guaranteed_memory: Details.renderColumnAsBytes,\n abs_guaranteed_gpu: Details.renderColumnAsFloatNumber,\n abs_guaranteed_user_slots: Details.renderColumnAsFloatNumber,\n\n abs_demand_cpu: Details.renderColumnAsNumber,\n abs_demand_memory: Details.renderColumnAsBytes,\n abs_demand_gpu: Details.renderColumnAsNumber,\n abs_demand_user_slots: Details.renderColumnAsNumber,\n\n abs_usage_cpu: Details.renderColumnAsNumber,\n abs_usage_memory: Details.renderColumnAsBytes,\n abs_usage_gpu: Details.renderColumnAsNumber,\n abs_usage_user_slots: Details.renderColumnAsNumber,\n\n rel_guaranteed_cpu: this.renderRelResource,\n rel_guaranteed_memory: this.renderRelResource,\n rel_guaranteed_gpu: this.renderRelResource,\n rel_guaranteed_user_slots: this.renderRelResource,\n\n rel_usage_cpu: this.renderRelResource,\n rel_usage_memory: this.renderRelResource,\n rel_usage_gpu: this.renderRelResource,\n rel_usage_user_slots: this.renderRelResource,\n\n guaranteed_usage_cpu: this.renderResourceBars,\n guaranteed_usage_memory: this.renderResourceBars,\n guaranteed_usage_gpu: this.renderResourceBars,\n guaranteed_usage_user_slots: this.renderResourceBars,\n\n running_operation_progress: Details.renderAsProgress,\n running_operation_count: Details.renderColumnAsNumber,\n operation_count: Details.renderColumnAsNumber,\n operation_progress: Details.renderAsProgress,\n max_running_operation_count: Details.renderMaxRunningOperationCount,\n max_operation_count: Details.renderMaxOperationCount,\n\n integral_type: Details.renderIntegralType,\n burst_cpu: Details.renderIntegralGuarantee,\n flow_cpu: Details.renderIntegralGuarantee,\n children_burst_cpu: Details.childrenIntegrals,\n children_flow_cpu: Details.childrenIntegrals,\n accumulated: Details.renderColumnAsRatio,\n accumulated_cpu: Details.renderColumnAsNumber,\n burst_duration: Details.renderColumnAsNumber,\n\n actions: this.renderActions,\n },\n computeKey(item) {\n return item.name;\n },\n itemMods(item) {\n return {\n current: isCurrentPool(item) ? 'yes' : '',\n aggregation: item.aggregation ? 'yes' : '',\n };\n },\n };\n }\n\n renderResourceBars = (item, columnName) => {\n const isCurrentPool = this.isCurrentPool(item);\n\n if (isCurrentPool) {\n return hammer.format.NO_VALUE;\n }\n\n const {currentPool} = this.props;\n const resourceData = childTableItems[columnName].get(item, currentPool);\n const barsData = [\n {\n value: resourceData.guaranteed,\n title: 'Guaranteed share',\n theme: 'success',\n },\n {\n value: resourceData.usage,\n title: 'Usage',\n theme: 'info',\n },\n ];\n\n return Overview.renderBars(barsData);\n };\n\n renderRelResource = (item, columnName) => {\n const isCurrentPool = this.isCurrentPool(item);\n\n if (isCurrentPool) {\n return hammer.format.NO_VALUE;\n }\n\n const {currentPool} = this.props;\n const data = childTableItems[columnName].get(item, currentPool);\n\n return Overview.renderRatio(data);\n };\n\n renderNameCell = (item, ...rest) => {\n const {cluster, currentPool, changePool} = this.props;\n\n return (\n <span className={block('name-cell', {child: item.isChildPool})}>\n {Overview.renderType(item, ...rest)}\n <span className={block('name-cell-text')}>\n {Overview.renderName(item, Tab.DETAILS, cluster, currentPool, changePool)}\n </span>\n {Overview.renderEphemeralIcon(item)}\n {Overview.renderEffectiveLightweightIcon(item)}\n <PoolTags pool={item} />\n </span>\n );\n };\n\n renderActions = (item) => {\n const {openEditModal, openPoolDeleteModal, getPoolPathsByName} = this.props;\n\n if (item.aggregation) {\n return;\n }\n\n if (item.type !== 'pool') {\n return Overview.renderAttributesButton(item);\n }\n\n const handleEditClick = () => openEditModal(item);\n const handleDeleteClick = () => openPoolDeleteModal(item);\n\n return (\n <Fragment>\n {Overview.renderAttributesButton(item, getPoolPathsByName)}\n &nbsp;\n {Overview.renderEditButton(item, handleEditClick)}\n &nbsp;\n {Overview.renderDeleteButton(item, handleDeleteClick)}\n </Fragment>\n );\n };\n\n isCurrentPool = (item) => item.name === this.props.currentPool.name;\n\n renderToolbar() {\n const {filter, mode, changePoolChildrenFilter, changeContentMode, currentPool} = this.props;\n\n return (\n <div className={block('toolbar')}>\n <Filter\n key={currentPool?.name}\n size=\"m\"\n value={filter}\n placeholder=\"Filter...\"\n className={block('filter')}\n onChange={changePoolChildrenFilter}\n />\n\n <RadioButton\n size=\"m\"\n value={mode}\n onChange={changeContentMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'cpu',\n text: 'CPU',\n },\n {\n value: 'memory',\n text: 'Memory',\n },\n {\n value: 'gpu',\n text: 'GPU',\n },\n {\n value: 'user_slots',\n text: 'User slots',\n },\n {\n value: 'operations',\n text: 'Operations',\n },\n {\n value: 'integral',\n text: 'Integral guarantees',\n },\n ]}\n />\n </div>\n );\n }\n\n render() {\n const {items, mode, isInitialLoading, sortState} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n <WithStickyToolbar\n hideToolbarShadow\n toolbar={this.renderToolbar()}\n content={\n <React.Fragment>\n <SchedulingOperationsError />\n <ElementsTableSticky\n cssTableMods={{mode}}\n {...this.tableSettings}\n items={items}\n isLoading={isInitialLoading}\n getEffectiveSortState={() => sortState}\n />\n </React.Fragment>\n }\n />\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const currentPool = getCurrentPool(state);\n const sortState = getPoolChildrenSortState(state);\n const items = getPollChildrenTableItems(state);\n const mode = getContentMode(state);\n const filter = getPoolChildrenFilter(state);\n const cluster = getCluster(state);\n const children = getSortedPoolChildren(state);\n\n const isInitialLoading = getSchedulingIsInitialLoading(state);\n\n return {currentPool, mode, filter, sortState, items, children, cluster, isInitialLoading};\n};\n\nconst mapDispatchToProps = {\n changePoolChildrenFilter,\n changeContentMode,\n openEditModal,\n openPoolDeleteModal,\n changePool,\n getPoolPathsByName,\n};\n\nconst DetailsConnected = connect(mapStateToProps, mapDispatchToProps)(Details);\n\nexport default function DetailsWithRum() {\n const isFinalState = useSelector(getSchedulingIsFinalLoadingState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.SCHEDULING_DETAILS,\n additionalStartType: RumMeasureTypes.SCHEDULING,\n startDeps: [isFinalState],\n allowStart: ([isFinal]) => {\n return !isFinal;\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.SCHEDULING_DETAILS,\n stopDeps: [isFinalState],\n allowStop: ([isFinal]) => {\n return isFinal;\n },\n });\n\n return <DetailsConnected />;\n}\n","import hammer from '../../common/hammer';\n\nexport function calculateTotalOverPools(pools) {\n const summedProperties = [\n 'weight',\n 'minShareRatio',\n 'demandRatio',\n 'fairShareRatio',\n 'usageRatio',\n 'maxOperationCount',\n 'maxRunningOperationCount',\n 'runningOperationCount',\n 'operationCount',\n ].map((name) => ({name, type: 'sum'}));\n\n ['cpu', 'user_memory', 'gpu', 'user_slots'].forEach((resource) => {\n ['min', 'guaranteed', 'usage', 'demand'].forEach((metric) => {\n const name = ['resources', resource, metric].join('.');\n summedProperties.push({name, type: 'nested/sum'});\n });\n });\n\n // We can aggregate only pools with resources\n const items = pools.filter((pool) => Boolean(pool.resources));\n\n return Object.assign(hammer.aggregation.prepare(items, summedProperties)[0], {\n key: 'aggregation',\n name: 'Aggregation',\n type: 'aggregation',\n aggregation: true,\n });\n}\n","import React from 'react';\nimport {connect, useSelector} from 'react-redux';\n\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {NoContent} from '../../../../../components/NoContent/NoContent';\nimport {\n getIsRoot,\n getPool,\n getPools,\n getTree,\n} from '../../../../../store/selectors/scheduling/scheduling';\nimport {PoolAclPanel} from '../../../../../containers/ACL';\nimport {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../../utils/utils';\nimport {getAclLoadState} from '../../../../../store/selectors/acl';\nimport {IdmObjectType} from '../../../../../constants/acl';\nimport {useAppRumMeasureStart} from '../../../../../rum/rum-app-measures';\n\nfunction PoolAcl() {\n const isRoot = useSelector(getIsRoot);\n\n const pool = useSelector(getPool);\n const tree = useSelector(getTree);\n const pools = useSelector(getPools);\n\n if (isRoot) {\n return (\n <NoContent\n warning=\"Visualization is not supported for <Root>.\"\n hint=\" Please select a specific pool.\"\n />\n );\n }\n\n return isEmpty_(pools) ? null : (\n <ErrorBoundary>\n <PoolAclPanel key={`${tree}_${pool}`} path={pool} poolTree={tree} />\n </ErrorBoundary>\n );\n}\n\nfunction PoolAclWithRum({loadState}) {\n useAppRumMeasureStart({\n type: RumMeasureTypes.SCHEDULING_ACL,\n additionalStartType: RumMeasureTypes.SCHEDULING,\n startDeps: [loadState],\n allowStart: ([loadState]) => !isFinalLoadingStatus(loadState),\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.SCHEDULING_ACL,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <PoolAcl />;\n}\n\nconst mapStateToProps = (state) => {\n return {\n loadState: getAclLoadState(state, IdmObjectType.POOL),\n };\n};\n\nexport default connect(mapStateToProps)(PoolAclWithRum);\n","import React from 'react';\nimport {getPool, getTree} from '../../../store/selectors/scheduling/scheduling';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {loadExpandedPools} from '../../../store/actions/scheduling/expanded-pools';\n\nfunction SchedulingExpandedPoolsUpdater() {\n const tree = useSelector(getTree);\n const name = useSelector(getPool);\n\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadExpandedPools(tree));\n }, [dispatch, tree, name]);\n\n return null;\n}\n\nexport default React.memo(SchedulingExpandedPoolsUpdater);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\nimport {Redirect, Route, Switch, withRouter} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport Tabs from '../../../components/Tabs/Tabs';\nimport Placeholder from '../../../pages/components/Placeholder';\nimport {OverviewWithRum} from '../../../pages/scheduling/Content/tabs/Overview/Overview';\nimport Details from '../../../pages/scheduling/Content/tabs/Details/Details';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\n\nimport {DEFAULT_TAB, SCHEDULING_ALLOWED_ROOT_TABS, Tab} from '../../../constants/scheduling';\nimport PoolAcl from '../../../pages/scheduling/Content/tabs/PoolAcl/PoolAcl';\nimport {\n getIsRoot,\n getPool,\n getPoolIsEphemeral,\n getTree,\n isPoolAclAllowed,\n} from '../../../store/selectors/scheduling/scheduling';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\n\nimport './Content.scss';\nimport {getCluster} from '../../../store/selectors/global';\nimport SchedulingExpandedPoolsUpdater from './SchedulingExpandedPoolsUpdater';\nimport UIFactory from '../../../UIFactory';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst block = cn('scheduling-content');\n\nContent.propTypes = {\n // from parent\n className: PropTypes.string,\n // from react-router\n match: PropTypes.shape({\n path: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n }).isRequired,\n location: PropTypes.shape({\n search: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nfunction Content({className, match, location}) {\n const cluster = useSelector(getCluster);\n const pool = useSelector(getPool);\n const tree = useSelector(getTree);\n const isEphemeral = useSelector(getPoolIsEphemeral);\n const isRoot = useSelector(getIsRoot);\n const allowAcl = useSelector(isPoolAclAllowed);\n\n const localTab = {...Tab};\n\n const showSettings = reduce_(\n Tab,\n (acc, tab) => {\n acc[tab] = {show: SCHEDULING_ALLOWED_ROOT_TABS[tab] || !isRoot};\n return acc;\n },\n {},\n );\n\n const titleDict = {};\n\n const aclTab = showSettings[Tab.ACL];\n aclTab.show = aclTab.show && allowAcl;\n\n const extraTabs = UIFactory.getSchedulingExtraTabs({\n cluster,\n pool,\n tree,\n extraOptions: {isRoot, isEphemeral},\n });\n\n const extraRoutes = [];\n\n extraTabs.forEach((tab) => {\n const {name, title, component, urlTemplate} = tab;\n const tabSettings = {show: true};\n showSettings[name] = tabSettings;\n\n if (urlTemplate) {\n tabSettings.routed = false;\n tabSettings.external = true;\n tabSettings.url = formatByParams(urlTemplate, {\n ytCluster: cluster,\n ytPool: pool,\n ytPoolTree: tree,\n });\n }\n\n localTab[name] = name;\n if (title) {\n titleDict[name] = title;\n }\n if (component) {\n const route = <Route key={name} path={`${match.path}/${name}`} component={component} />;\n extraRoutes.push(route);\n }\n });\n\n delete localTab.ACL;\n localTab[Tab.ACL] = Tab.ACL;\n\n const props = makeTabProps(match.url, localTab, showSettings, {pool, tree}, titleDict);\n\n return (\n <ErrorBoundary>\n <SchedulingExpandedPoolsUpdater />\n <div className={block(null, className)}>\n <Tabs\n {...props}\n active={DEFAULT_TAB}\n className={block('tabs')}\n routed\n size={UI_TAB_SIZE}\n />\n\n <Switch>\n <Route path={`${match.path}/${Tab.OVERVIEW}`} component={OverviewWithRum} />\n <Route path={`${match.path}/${Tab.DETAILS}`} component={Details} />\n {extraRoutes}\n {aclTab.show && <Route path={`${match.path}/${Tab.ACL}`} component={PoolAcl} />}\n <Route path={`${match.path}/:tab`} component={Placeholder} />\n <Redirect\n from={match.url}\n to={{pathname: `${match.url}/${DEFAULT_TAB}`, search: location.search}}\n />\n </Switch>\n </div>\n </ErrorBoundary>\n );\n}\n\nexport default withRouter(Content);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../common/hammer';\nimport {getIsRoot, getResources} from '../../../store/selectors/scheduling/scheduling';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport './SchedulingResources.scss';\n\nconst block = cn('scheduling-resources');\nconst headingBlock = cn('elements-heading');\n\nfunction SchedulingResources() {\n const isRoot = useSelector(getIsRoot);\n const resources = useSelector(getResources) as any;\n\n return !isRoot || isEmpty_(resources) ? null : (\n <div className={block()}>\n {map_(resources, (resource) => (\n <div className={block('resources-item')} key={resource.type}>\n <div className={headingBlock({size: 's'})}>\n {hammer.format['ReadableField'](resource.type)}\n </div>\n <Progress {...resource.progress} />\n </div>\n ))}\n </div>\n );\n}\n\nexport default React.memo(SchedulingResources);\n","import React, {useCallback, useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport pick_ from 'lodash/pick';\nimport pickBy_ from 'lodash/pickBy';\n\nimport {DialogField, FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {YTErrorBlock} from '../../../../components/Error/Error';\n\nimport {\n calculatePoolPath,\n getPools,\n getPoolsSelectItems,\n getSchedulingEditItem,\n getSchedulingSourcesOfEditItem,\n getTree,\n} from '../../../../store/selectors/scheduling/scheduling';\nimport {\n InitialPoolResourceInfo,\n POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n PoolGeneralResourceType,\n PoolIntegralResourceType,\n PoolStrongResourceType,\n getInitialValues,\n} from '../../../../utils/scheduling/scheduling';\nimport {isAbcPoolName, isTopLevelPool} from '../../../../utils/scheduling/pool';\nimport {closeEditModal, editPool} from '../../../../store/actions/scheduling/scheduling';\n\nimport {checkUserPermissionsUI} from '../../../../utils/acl/acl-api';\nimport {getCluster, getCurrentUserName} from '../../../../store/selectors/global';\nimport {getCurrentTreeGpuLimit} from '../../../../store/selectors/scheduling/scheduling-ts';\n\nimport {RootState} from '../../../../store/reducers';\nimport {\n PoolInfo,\n getSchedulingPoolsMapByName,\n} from '../../../../store/selectors/scheduling/scheduling-pools';\nimport Link from '../../../../components/Link/Link';\n\nimport './PoolEditorDialog.scss';\nimport UIFactory from '../../../../UIFactory';\nimport {createQuotaReqTicketUrl} from '../../../../config';\n\nconst block = cn('pool-editor-dialog');\n\nfunction makePermissionWarning(visible: boolean) {\n return !visible ? null : (\n <div className={block('permissions-warning')}>\n You do not have sufficient permissions to modify pool settings. In order to be able to\n modify pool settings <span className={block('flag')}>inherit_acl</span> flag should be\n enabled for current pool and you should be responsible for the parent pool.\n </div>\n );\n}\n\nfunction makeError(error: any) {\n return isEmpty_(error) ? null : <YTErrorBlock className={block('error')} error={error} />;\n}\n\nexport interface PoolEditorFormValues {\n general: Record<PoolGeneralResourceType, InitialPoolResourceInfo> & {\n weight: {value?: number; error?: string};\n }; // TODO add description for another fields\n resourceGuarantee: Record<PoolStrongResourceType, InitialPoolResourceInfo>;\n integralGuarantee: Record<\n Exclude<PoolIntegralResourceType, 'guaranteeType'>,\n InitialPoolResourceInfo\n > & {guaranteeType?: 'none' | 'burst' | 'relaxed'};\n resourceLimits: {\n cpu: number | string;\n gpu: number | string;\n memory: number | string;\n userSlots: number | string;\n };\n otherSettings: {\n forbidImmediateOperations: boolean;\n fifoSortParams: Array<string>;\n createEphemeralSubpools: boolean;\n };\n}\n\nexport function PoolEditorDialog() {\n const dispatch = useDispatch();\n\n const editItem = useSelector(getSchedulingEditItem);\n const {poolErrorData, editVisibility} = useSelector(\n (state: RootState) => state.scheduling.scheduling,\n );\n\n const treGpuLimit = useSelector(getCurrentTreeGpuLimit);\n\n const allowedSources = useSelector(getSchedulingSourcesOfEditItem);\n\n const poolsItems = useSelector(getPoolsSelectItems);\n const pools = useSelector(getPools);\n const tree = useSelector(getTree);\n const modeItems = [\n {key: 'fair_share', value: 'fair_share', title: 'fair_share'},\n {key: 'fifo', value: 'fifo', title: 'fifo'},\n ];\n const [initialValues, initialFormValues] = useMemo(() => {\n const data = getInitialValues(editItem, allowedSources);\n const formData: PoolEditorFormValues = {\n ...data,\n general: {\n ...data.general,\n weight: {\n value: data.general.weight,\n },\n },\n };\n return [data, formData];\n }, [editItem, allowedSources]); // don't pass pools into memo's array\n\n const editCloseHandler = useCallback(() => {\n dispatch(closeEditModal({cancelled: true}));\n }, [dispatch]);\n const editConfirmHandler = useCallback(\n async (form: FormApi<PoolEditorFormValues>) => {\n const {values} = form.getState();\n const {general, resourceGuarantee, integralGuarantee, resourceLimits, otherSettings} =\n values;\n const data = {\n general: {\n ...pick_(general, ['name', 'mode']),\n weight: general.weight.value,\n ...pickBy_(\n pick_(general, Object.keys(POOL_GENERAL_TYPE_TO_ATTRIBUTE)),\n (item: {limit: number}, k) => {\n if (!item) {\n return false;\n }\n const key = k as keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\n const initialValue = initialValues.general[key].limit;\n return item.limit !== initialValue;\n },\n ),\n },\n resourceGuarantee: pickBy_(\n pick_(resourceGuarantee, Object.keys(POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE)),\n (item: {limit: number}, k) => {\n if (!item) {\n return false;\n }\n const key = k as keyof typeof resourceGuarantee;\n const initialValue = initialValues.resourceGuarantee[key].limit;\n return item.limit !== initialValue;\n },\n ),\n integralGuarantee: pickBy_(\n pick_(integralGuarantee, Object.keys(POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR)),\n (item, k) => {\n if (!item) {\n return false;\n }\n const key = k as keyof typeof integralGuarantee;\n const initialValue = initialValues.integralGuarantee[key];\n if (typeof item === 'object' && typeof initialValue === 'object') {\n return item.limit !== initialValue.limit;\n } else {\n return item !== initialValue;\n }\n },\n ),\n resourceLimits: pick_(resourceLimits, ['cpu', 'gpu', 'memory', 'userSlots']),\n otherSettings: pick_(otherSettings, [\n 'forbidImmediateOperations',\n 'fifoSortParams',\n 'createEphemeralSubpools',\n ]),\n };\n await dispatch(editPool(editItem, data, initialValues));\n },\n [editItem, initialValues, dispatch],\n );\n\n const user = useSelector(getCurrentUserName);\n const [hasWarning, setHasWarning] = React.useState(false);\n const [checkPermError, setCheckPermError] = React.useState(null);\n\n React.useEffect(() => {\n setCheckPermError(null);\n if (!editItem?.name) {\n return;\n }\n const pathToCheck = calculatePoolPath(editItem.name, pools, tree);\n checkUserPermissionsUI(pathToCheck, user, ['write'])\n .then(([{action}]) => {\n const newHasWarning = action !== 'allow';\n if (newHasWarning !== hasWarning) {\n setHasWarning(newHasWarning);\n }\n })\n .catch((error) => {\n setCheckPermError(error);\n });\n }, [pools, tree, editItem?.name, hasWarning, setHasWarning, setCheckPermError]);\n\n const warningField: DialogField = {\n type: 'block',\n name: 'perm-warning',\n extras: {\n children: makePermissionWarning(hasWarning),\n },\n };\n\n const checkPermErrorField: DialogField = {\n type: 'block',\n name: 'check-perm-error',\n extras: {\n children: makeError(checkPermError),\n },\n };\n\n const poolErrorDataField: DialogField = {\n type: 'block',\n name: 'pool-error-data',\n extras: {\n children: makeError(poolErrorData),\n },\n };\n\n const transferNotice = useTransferNotice(editItem);\n\n const integralTypeNotice = useChangeIntegralTypeNotice(editItem, pools, tree);\n\n return (\n <YTDFDialog<PoolEditorFormValues>\n size=\"l\"\n key={editItem?.name + '/' + editVisibility}\n className={block()}\n visible={editVisibility}\n onClose={editCloseHandler}\n headerProps={{\n title: editItem?.name,\n }}\n onAdd={editConfirmHandler}\n initialValues={initialFormValues}\n fields={[\n {\n type: 'tab-vertical',\n name: 'general',\n title: 'General',\n fields: [\n ...transferNotice,\n {\n name: 'name',\n type: 'text',\n caption: 'Pool name',\n required: true,\n extras: {\n placeholder: 'Enter pool name...',\n },\n },\n {\n name: 'parent',\n type: 'yt-select-single',\n caption: 'Parent',\n tooltip:\n 'Select parent pool, defining a place in pool_tree to place a new pool.',\n required: true,\n extras: {\n disabled: true,\n items: poolsItems,\n placeholder: 'Select pool tree...',\n width: 'max',\n },\n },\n {\n name: 'separator',\n type: 'block',\n extras: {\n children: <div className={block('separator')} />,\n },\n },\n {\n name: 'mode',\n type: 'yt-select-single',\n caption: 'Mode',\n required: true,\n extras: {\n items: modeItems,\n placeholder: 'Select mode...',\n width: 'max',\n hideFilter: true,\n },\n },\n {\n name: 'weight',\n type: 'number',\n caption: 'Weight',\n extras: {\n min: Number.MIN_VALUE,\n hidePrettyValue: true,\n formatFn: (value) => (value === undefined ? '' : String(value)),\n },\n },\n {\n name: 'maxOperationCount',\n type: 'pool-quota-editor',\n caption: 'Max operation count',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'maxOperationCount',\n initialLimit: initialValues.general.maxOperationCount.limit,\n min: 0,\n max: Infinity,\n sourcesSkipParent: true,\n limitInputTitle: 'Limit',\n },\n },\n {\n name: 'maxRunningOperationCount',\n type: 'pool-quota-editor',\n caption: 'Max running operation count',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'maxRunningOperationCount',\n initialLimit: initialValues.general.maxRunningOperationCount.limit,\n min: 0,\n max: Infinity,\n sourcesSkipParent: true,\n limitInputTitle: 'Limit',\n },\n },\n warningField,\n poolErrorDataField,\n checkPermErrorField,\n ],\n },\n {\n type: 'tab-vertical',\n name: 'resourceGuarantee',\n title: 'Strong Guarantee',\n fields: [\n ...transferNotice,\n {\n name: 'cpuStrong',\n type: 'pool-quota-editor',\n caption: 'CPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'cpuStrong',\n initialLimit: initialValues.resourceGuarantee.cpuStrong.limit,\n decimalPlaces: 2,\n },\n },\n ...(treGpuLimit > 0\n ? [\n {\n name: 'gpuStrong',\n type: 'pool-quota-editor' as const,\n caption: 'GPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'gpuStrong' as const,\n initialLimit:\n initialValues.resourceGuarantee.gpuStrong.limit,\n },\n },\n ]\n : []),\n {\n name: 'memoryStrong',\n type: 'pool-quota-editor' as const,\n caption: 'Memory',\n extras: {\n format: 'Bytes',\n pool: editItem?.name || '',\n resourceType: 'memoryStrong' as const,\n initialLimit: initialValues.resourceGuarantee.memoryStrong.limit,\n },\n },\n warningField,\n poolErrorDataField,\n checkPermErrorField,\n ],\n },\n {\n type: 'tab-vertical',\n name: 'integralGuarantee',\n title: 'Integral Guarantee',\n fields: [\n ...transferNotice,\n ...integralTypeNotice,\n {\n name: 'guaranteeType',\n type: 'yt-select-single',\n caption: 'Guarantee',\n extras: {\n placeholder: 'Integral guarantee type...',\n items: [\n {\n value: 'none',\n text: 'Descendants only',\n },\n {value: 'burst', text: 'Burst'},\n {value: 'relaxed', text: 'Relaxed'},\n ],\n width: 'max',\n },\n },\n {\n name: 'burstCpu',\n type: 'pool-quota-editor',\n caption: 'Burst CPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'burstCpu',\n initialLimit: initialValues.integralGuarantee.burstCpu.limit,\n decimalPlaces: 2,\n },\n },\n ...(treGpuLimit > 0\n ? [\n {\n name: 'burstGpu',\n type: 'pool-quota-editor' as const,\n caption: 'Burst GPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'burstGpu' as const,\n initialLimit:\n initialValues.integralGuarantee.burstGpu.limit,\n },\n },\n ]\n : []),\n {\n name: 'flowCpu',\n type: 'pool-quota-editor',\n caption: 'Flow CPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'flowCpu',\n initialLimit: initialValues.integralGuarantee.flowCpu.limit,\n decimalPlaces: 2,\n },\n },\n ...(treGpuLimit > 0\n ? [\n {\n name: 'flowGpu',\n type: 'pool-quota-editor' as const,\n caption: 'Flow GPU',\n extras: {\n pool: editItem?.name || '',\n resourceType: 'flowGpu' as const,\n initialLimit:\n initialValues.integralGuarantee.flowGpu.limit,\n },\n },\n ]\n : []),\n warningField,\n poolErrorDataField,\n checkPermErrorField,\n ],\n },\n {\n type: 'tab-vertical',\n name: 'resourceLimits',\n title: 'Resource Limits',\n fields: [\n {\n name: 'cpu',\n type: 'text',\n caption: 'CPU',\n },\n {\n name: 'gpu',\n type: 'text',\n caption: 'GPU',\n },\n {\n name: 'memory',\n type: 'bytes',\n caption: 'Memory',\n validator(value?: number) {\n if (typeof value !== 'undefined' && isNaN(value)) {\n return 'Incorrect value';\n }\n return undefined;\n },\n },\n {\n name: 'userSlots',\n type: 'text',\n caption: 'User slots',\n },\n warningField,\n poolErrorDataField,\n checkPermErrorField,\n ],\n },\n {\n type: 'tab-vertical',\n name: 'otherSettings',\n title: 'Other settings',\n fields: [\n {\n name: 'forbidImmediateOperations',\n type: 'tumbler',\n caption: 'Forbid immediate operations',\n },\n {\n name: 'fifoSortParams',\n type: 'sortable-list',\n caption: 'Fifo sort parameters',\n extras: {\n axis: 'x',\n },\n },\n {\n name: 'createEphemeralSubpools',\n type: 'tumbler',\n caption: 'Create ephemeral subpools',\n },\n warningField,\n poolErrorDataField,\n checkPermErrorField,\n ],\n },\n ]}\n />\n );\n}\n\nfunction useTransferNotice(editItem?: PoolInfo): [DialogField<PoolEditorFormValues>] | [] {\n const {parent} = editItem || {};\n // const abcInfo = abcInfoFromAttributes(cypressAttributes);\n const poolsByName = useSelector(getSchedulingPoolsMapByName);\n const parentPool = poolsByName[parent!];\n\n const children = UIFactory.renderTransferQuotaNoticeForPool({\n pool: editItem,\n parentPool,\n isTopLevel: isTopLevelPool(editItem),\n });\n\n return !children\n ? []\n : [\n {\n type: 'block' as const,\n name: 'transferQuotaNotice',\n extras: {\n children,\n },\n },\n ];\n}\n\nfunction useChangeIntegralTypeNotice(\n editItem: PoolInfo | undefined,\n pools: Array<PoolInfo>,\n tree: string,\n): [DialogField<PoolEditorFormValues>] | [] {\n const {name, parent} = editItem || {};\n\n const cluster = useSelector(getCluster);\n\n if (isAbcPoolName(name) || (!isAbcPoolName(parent) && !isTopLevelPool(editItem))) {\n return [];\n }\n\n const poolPath = name ? calculatePoolPath(name, pools, tree) : undefined;\n const path = `${poolPath}/@integral_guarantees/guarantee_type`;\n const summary = `[${cluster}]: Change-request of ${path}`;\n\n const {url, queue} = createQuotaReqTicketUrl({summary});\n\n return [\n {\n type: 'block' as const,\n name: 'integralTypeNotice',\n extras: {\n children: (\n <div className={block('changeTypeNotice')}>\n To change the guarantee type of the pool you have to create a request to{' '}\n {url ? <Link url={url}>{queue}</Link> : \"the cluster's support team\"}\n </div>\n ),\n },\n },\n ];\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport keys_ from 'lodash/keys';\n\nimport {DialogWrapper as DeleteDialog} from '../../../components/DialogWrapper/DialogWrapper';\n\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {YTErrorBlock} from '../../../components/Error/Error';\n\nimport Content from '../Content/Content';\n\nimport {SCHEDULING_CREATE_POOL_CANCELLED} from '../../../constants/scheduling';\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {\n closePoolDeleteModal as closeDeleteModal,\n deletePool,\n loadSchedulingData,\n} from '../../../store/actions/scheduling/scheduling-ts';\n\nimport './Scheduling.scss';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {getSchedulingIsFinalLoadingState} from '../../../store/selectors/scheduling';\nimport SchedulingResources from '../Content/SchedulingResources';\nimport {PoolEditorDialog} from './PoolEditorDialog/PoolEditorDialog';\nimport {RootState} from '../../../store/reducers';\n\nconst block = cn('scheduling');\n\nconst SchedulingDialogsMemo = React.memo(SchedulingDialogs);\n\nfunction Scheduling() {\n const error = useSelector((state: RootState) => {\n const {error: hasError, errorData} = state.scheduling.scheduling;\n return hasError ? errorData : undefined;\n });\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(loadSchedulingData());\n }, [dispatch]);\n\n useUpdater(updateFn);\n\n return (\n <div className={block(null, 'elements-main-section')}>\n <ErrorBoundary>\n {error && <YTErrorBlock error={error} />}\n <div className={block('wrapper')}>\n <SchedulingResources />\n <Content {...{className: block('content')}} />\n </div>\n <SchedulingDialogsMemo />\n </ErrorBoundary>\n </div>\n );\n}\n\nconst SchedulingMemo = React.memo(Scheduling);\n\nexport default function SchedulingWithRum() {\n const isFinalState = useSelector(getSchedulingIsFinalLoadingState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.SCHEDULING,\n startDeps: [isFinalState],\n allowStart: ([isFinal]) => {\n return !isFinal;\n },\n });\n\n return <SchedulingMemo />;\n}\n\nfunction SchedulingDialogs() {\n const dispatch = useDispatch();\n\n const {deleteVisibility, deleteItem, poolErrorData} = useSelector(\n (state: RootState) => state.scheduling.scheduling,\n );\n\n const deleteConfirmHandler = React.useCallback(\n () => dispatch(deletePool(deleteItem)),\n [deleteItem, dispatch],\n );\n const deleteCloseHandler = React.useCallback(() => {\n dispatch({type: SCHEDULING_CREATE_POOL_CANCELLED});\n dispatch(closeDeleteModal());\n }, [dispatch]);\n\n return (\n <React.Fragment>\n {deleteVisibility && (\n <DeleteDialog\n size=\"m\"\n className={block('delete-dialog')}\n open={deleteVisibility}\n onClose={deleteCloseHandler}\n hasCloseButton\n >\n <DeleteDialog.Header caption=\"Delete\" />\n <DeleteDialog.Body>\n Are you sure you want to delete the <b>{deleteItem?.name}</b> pool?\n {keys_(poolErrorData).length > 0 ? (\n <YTErrorBlock message=\"Delete pool failure\" error={poolErrorData} />\n ) : null}\n </DeleteDialog.Body>\n <DeleteDialog.Footer\n onClickButtonApply={deleteConfirmHandler}\n onClickButtonCancel={deleteCloseHandler}\n propsButtonApply={{view: 'flat-danger'}}\n textButtonCancel=\"Cancel\"\n textButtonApply=\"Delete\"\n />\n </DeleteDialog>\n )}\n <PoolEditorDialog />\n </React.Fragment>\n );\n}\n","export function prepareAbcService(abcService?: {\n value?: string;\n title: string;\n id: string | number;\n}) {\n if (!abcService || !abcService.value) {\n return {};\n }\n const slug = abcService.value.startsWith('svc_')\n ? abcService.value.slice(4) // remove 'svc_' prefix;\n : abcService.value;\n const name = abcService.title;\n\n return {slug, name, id: Number(abcService.id)};\n}\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../reducers';\nimport {\n CreatePoolDialogAction,\n CreatePoolDialogState,\n} from '../../reducers/scheduling/create-pool-dialog';\nimport {\n CREATE_POOL_DIALOG_TREE_CREATE_FAILURE,\n CREATE_POOL_DIALOG_TREE_ITEMS_SUCCESS,\n} from '../../../constants/scheduling';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {prepareAbcService} from '../../../utils/scheduling';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {loadSchedulingData} from './scheduling-ts';\nimport {FIX_MY_TYPE} from '../../../types';\nimport {getCluster} from '../../selectors/global';\nimport {updateAcl} from '../../../utils/acl/acl-api';\nimport {IdmObjectType} from '../../../constants/acl';\nimport Link from '../../../components/Link/Link';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {createAdminReqTicketUrl} from '../../../config';\n\ntype CreatePoolDialogThunkAction<R = any> = ThunkAction<\n R,\n RootState,\n unknown,\n CreatePoolDialogAction\n>;\n\nexport function fetchCreatePoolDialogTreeItems(currentTree: string): CreatePoolDialogThunkAction {\n return (dispatch) => {\n return ytApiV3Id\n .get(YTApiId.getPoolTrees, {path: `//sys/pool_trees/${currentTree}`})\n .then((treeItems: CreatePoolDialogState['treeItems']) => {\n dispatch({\n type: CREATE_POOL_DIALOG_TREE_ITEMS_SUCCESS,\n data: {currentTree, treeItems},\n });\n });\n };\n}\n\nexport function createPool(values: FIX_MY_TYPE): CreatePoolDialogThunkAction {\n return (dispatch, getState) => {\n const {abcService} = values;\n const cluster = getCluster(getState()) as string;\n\n return wrapApiPromiseByToaster(\n yt.v3.create({\n type: 'scheduler_pool',\n attributes: Object.assign(\n {\n name: values.name,\n parent_name: values.parent || undefined,\n pool_tree: values.tree,\n },\n !abcService || !abcService.value\n ? {}\n : {\n abc: prepareAbcService(abcService),\n },\n ),\n }),\n {\n toasterName: `create_${values.name}`,\n successContent: `Successfully created ${values.name}. Please wait.`,\n errorContent: `'${values.name}' pool creation failed`,\n timeout: 10000,\n },\n )\n .then(() => {\n updateAcl(cluster, values.name, {\n idmKind: IdmObjectType.POOL,\n poolTree: values.tree,\n responsible: values.responsible,\n });\n\n return waitWhilePoolIsReady(values).then(() => {\n dispatch(loadSchedulingData());\n });\n })\n .catch((error) => {\n if (error?.code === yt.codes.CANCELLED) {\n return;\n }\n\n dispatch({\n type: CREATE_POOL_DIALOG_TREE_CREATE_FAILURE,\n data: error,\n });\n\n return Promise.reject(error);\n });\n };\n}\n\nconst {url: createUrl, queue} = createAdminReqTicketUrl();\n\nconst CHECK_REDINESS_TIMEOUT = 1500;\nconst MAX_POOL_REDINESS_TIMEOUT = 10 * 1000; // the value is provided by @renadeen\nconst TIMEOUT_ERROR = {\n message: (\n <div>\n The pool was not appeared in orchidea in 10 seconds.\n {createUrl ? (\n <>\n Please fill a ticket for <Link url={createUrl}>{queue}</Link>\n </>\n ) : (\n \"Please report it to the cluster's support team.\"\n )}\n .\n </div>\n ),\n};\n\nfunction waitWhilePoolIsReady({name, tree}: {name: string; tree: string}, startedAt = 0) {\n const startedTime = startedAt || Date.now();\n const diff = Date.now() - startedTime;\n if (diff > MAX_POOL_REDINESS_TIMEOUT) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n yt.v3\n .exists({\n path: `//sys/scheduler/orchid/scheduler/pool_trees/${tree}/pools/${name}`,\n })\n .then((res: boolean) => {\n if (res) {\n return resolve(true);\n } else {\n return resolve(waitWhilePoolIsReady({name, tree}, startedTime));\n }\n })\n .catch((error: unknown) => {\n if (error !== TIMEOUT_ERROR) {\n return resolve(waitWhilePoolIsReady({name, tree}, startedTime));\n }\n\n return reject(error);\n });\n }, CHECK_REDINESS_TIMEOUT);\n });\n}\n","import React, {useCallback, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport sortedIndexOf_ from 'lodash/sortedIndexOf';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport Link from '../../../../components/Link/Link';\nimport {YTErrorBlock} from '../../../../components/Error/Error';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport Button from '../../../../components/Button/Button';\n\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {\n getIsRoot,\n getPool,\n getTree,\n getTreesSelectItems,\n} from '../../../../store/selectors/scheduling/scheduling';\n\nimport {\n createPool,\n fetchCreatePoolDialogTreeItems,\n} from '../../../../store/actions/scheduling/create-pool-dialog';\nimport {\n getCreatePoolDialogError,\n getCreatePoolDialogFlatTreeItems,\n} from '../../../../store/selectors/scheduling/create-pool-dialog';\nimport {FIX_MY_TYPE} from '../../../../types';\nimport {SCHEDULING_CREATE_POOL_CANCELLED} from '../../../../constants/scheduling';\nimport {docsUrl, isIdmAclAvailable} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {uiSettings} from '../../../../config/ui-settings';\n\nconst allowRoot = !uiSettings.schedulingDenyRootAsParent;\n\nexport default function CreatePoolButton() {\n const dispatch = useDispatch();\n\n const isRoot = useSelector(getIsRoot);\n\n const [visible, changeVisibility] = useState(false);\n const handleShow = useCallback(() => changeVisibility(true), [changeVisibility]);\n const handleClose = useCallback(() => {\n changeVisibility(false);\n dispatch({type: SCHEDULING_CREATE_POOL_CANCELLED});\n }, [dispatch, changeVisibility]);\n\n return (\n <React.Fragment>\n <Button view=\"action\" disabled={!allowRoot && isRoot} onClick={handleShow}>\n Create pool\n </Button>\n {visible && <CreatePoolDialog onClose={handleClose} />}\n </React.Fragment>\n );\n}\n\ninterface FormValues {\n name: string;\n tree: string;\n parent: string;\n responsible: {value: string; id: string | number; title: string};\n}\n\nfunction CreatePoolDialog(props: {onClose: () => void}) {\n const dispatch = useDispatch();\n const treeStored: string = useSelector(getTree);\n const [tree, setTree] = React.useState(treeStored);\n const handleTreeChange = React.useCallback(\n (newTree: string | undefined) => {\n setTree(newTree!);\n dispatch(fetchCreatePoolDialogTreeItems(newTree!));\n },\n [dispatch],\n );\n React.useEffect(() => {\n dispatch(fetchCreatePoolDialogTreeItems(tree));\n }, [dispatch]);\n\n const error = useSelector(getCreatePoolDialogError);\n\n const login = useSelector(getCurrentUserName);\n const treeItems = useSelector(getTreesSelectItems);\n const pool = useSelector(getPool);\n\n const handleCreateConfirm = useCallback(\n (form: FormApi) => {\n const {values} = form.getState();\n return dispatch(createPool(values));\n },\n [dispatch],\n );\n const initialValues = useMemo(() => {\n // const slug = ypath.getValue(poolData, '/abc/slug');\n return {\n // abcService: slug ? {\n // key: slug,\n // value: slug,\n // id: ypath.getValue(poolData, '/abc/id'),\n // title: ypath.getValue(poolData, '/abc/name'),\n // } : undefined,\n tree,\n parent: pool,\n responsible: [\n {\n value: login,\n type: 'users',\n },\n ],\n };\n }, [tree, pool, login]);\n\n const [name, setName] = React.useState('');\n const handleNameChange = React.useCallback(\n (newName: string) => {\n setName(newName);\n },\n [setName],\n );\n\n const {sortedFlatTree} = useSelector(getCreatePoolDialogFlatTreeItems);\n\n const validateForm = React.useCallback(\n (values: FormValues): null | {name?: string} => {\n const {name} = values;\n const res: Partial<Record<keyof FormValues, string>> = {};\n if (-1 !== sortedIndexOf_(sortedFlatTree, name)) {\n res.name = 'the value must be unique';\n }\n return isEmpty_(res) ? null : res;\n },\n [sortedFlatTree],\n );\n\n const isApplyDisabled = React.useMemo(\n () => (form: {values: FormValues}) => {\n const errors = validateForm(form.values);\n return Boolean(errors);\n },\n [validateForm],\n );\n\n return (\n <YTDFDialog\n visible={true}\n onClose={props.onClose}\n headerProps={{\n title: 'Create pool',\n }}\n onAdd={handleCreateConfirm as FIX_MY_TYPE}\n initialValues={{\n ...initialValues,\n name,\n }}\n validate={validateForm as FIX_MY_TYPE}\n isApplyDisabled={isApplyDisabled}\n pristineSubmittable={true}\n fields={[\n {\n name: 'name',\n type: 'text',\n caption: 'Name',\n required: true,\n extras: {\n placeholder: 'Enter pool name...',\n },\n onChange: handleNameChange,\n touched: Boolean(name),\n },\n {\n name: 'tree',\n type: 'yt-select-single',\n caption: 'Pool tree',\n tooltip: (\n <span>\n Select pool tree where to create new pool.{' '}\n {docsUrl(\n <>\n See{' '}\n <Link url={UIFactory.docsUrls['scheduler:scheduler_and_pools']}>\n Documentations\n </Link>{' '}\n for more details.\n </>,\n )}\n </span>\n ),\n required: true,\n extras: {\n hideFilter: true,\n items: treeItems,\n placeholder: 'Select pool tree...',\n width: 'max',\n },\n onChange: (value: string | Array<string> | undefined) => {\n handleTreeChange(value as string);\n },\n },\n {\n name: 'parent',\n type: 'create-pool-parent',\n caption: 'Parent',\n tooltip:\n 'Select parent pool, defining a place in pool_tree to place a new pool.',\n required: !allowRoot,\n extras: {\n placeholder: 'Select parent...',\n },\n },\n ...(!isIdmAclAvailable()\n ? []\n : [\n {\n name: 'responsible',\n type: 'acl-subjects' as const,\n caption: 'Responsible users',\n tooltip:\n 'Choose responsible users who will manage permissions and pool settings.',\n required: true,\n extras: {\n placeholder: 'Select responsible users...',\n },\n },\n ]),\n {\n name: 'error-block',\n type: 'block',\n extras: {\n children: error && <YTErrorBlock error={error} />,\n },\n },\n ]}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport some_ from 'lodash/some';\n\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {useHistory} from 'react-router';\n\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites from '../../../components/Favourites/Favourites';\nimport {PoolsSuggest} from '../PoolsSuggest/PoolsSuggest';\nimport {\n getCurrentPool,\n getCurrentPoolPath,\n getPool,\n getTree,\n getTreesSelectItems,\n} from '../../../store/selectors/scheduling/scheduling';\nimport {getFavouritePools, isActivePoolInFavourites} from '../../../store/selectors/favourites';\nimport {\n changePool,\n changeTree,\n togglePoolFavourites,\n} from '../../../store/actions/scheduling/scheduling';\n\nimport {ROOT_POOL_NAME, SCHEDULING_ALLOWED_ROOT_TABS, Tab} from '../../../constants/scheduling';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {getSchedulingBreadcrumbItems} from '../../../store/selectors/scheduling/scheduling-ts';\nimport {Page} from '../../../constants';\nimport {EditButton} from '../../../components/EditableAsText/EditableAsText';\nimport Select from '../../../components/Select/Select';\nimport CreatePoolButton from '../Instruments/CreatePoolDialog/CreatePoolDialog';\n\nimport {makeRoutedURL} from '../../../store/location';\nimport {getCluster, getClusterUiConfig} from '../../../store/selectors/global';\nimport UIFactory from '../../../UIFactory';\n\nimport './SchedulingTopRowContent.scss';\n\nconst block = cn('scheduling-top-row-content');\n\nfunction SchedulingTopRowContent() {\n const pool = useSelector(getCurrentPool);\n const clusterUiConfig = useSelector(getClusterUiConfig);\n\n return (\n <RowWithName page={Page.SCHEDULING} className={block()} urlParams={{pool: ''}}>\n <SchedulingFavourites />\n <SchedulingPhysicalTree />\n <EditableSchedulingBreadcrumbs />\n <span className={block('actions')}>\n {UIFactory.renderTopRowExtraControlsForPool({\n itemClassName: block('extra-control'),\n pool,\n clusterUiConfig,\n })}\n <CreatePoolButton />\n </span>\n </RowWithName>\n );\n}\n\nfunction SchedulingFavourites() {\n const tree = useSelector(getTree);\n const dispatch = useDispatch();\n const pool = useSelector(getPool);\n const favouritesPools = useSelector(getFavouritePools);\n const isActivePool = useSelector(isActivePoolInFavourites);\n\n const onFavouriteClick = React.useCallback(\n ({path}: {path: string}) => {\n const [, pool, tree] = path.match(/(.+)\\[(.+)]/)!;\n dispatch(changePool(pool));\n dispatch(changeTree(tree));\n },\n [dispatch],\n );\n const onFavouriteToggle = React.useCallback(\n () => dispatch(togglePoolFavourites(pool, tree)),\n [dispatch, pool, tree],\n );\n\n const currentPool = useSelector(getPool);\n\n return (\n <Favourites\n className={block('favourites')}\n theme={'clear'}\n items={favouritesPools || []}\n isActive={isActivePool}\n onToggle={onFavouriteToggle}\n onItemClick={onFavouriteClick}\n toggleDisabled={ROOT_POOL_NAME === currentPool}\n />\n );\n}\n\nfunction CurrentPoolToClipboardButton() {\n const currentPool = useSelector(getPool);\n const currentPoolPath = useSelector(getCurrentPoolPath);\n\n return (\n <ClipboardButton\n className={block('clipboard')}\n text={currentPool}\n shiftText={currentPoolPath}\n hoverContent={'Hold SHIFT-key to copy full path'}\n />\n );\n}\n\nfunction SchedulingBreadcrumbs() {\n const bcItems = useSelector(getSchedulingBreadcrumbItems);\n const dispatch = useDispatch();\n const tree = useSelector(getTree);\n const cluster = useSelector(getCluster);\n const history = useHistory();\n\n const handleChangePool = (name: string | number) => {\n setTimeout(() => {\n dispatch(changePool(name.toString()));\n }, 0);\n };\n\n const items = React.useMemo(() => {\n return ['<Root>', ...bcItems.slice(1)].map((text) => {\n const pathname = text\n ? window.location.pathname\n : calcRootPathname(window.location.pathname, cluster);\n return (\n <BreadcrumbsItem\n key={text}\n href={makeRoutedURL(pathname, {tree, text, filter: ''})}\n >\n {text}\n </BreadcrumbsItem>\n );\n });\n }, [bcItems, cluster, tree]);\n\n return (\n <Breadcrumbs\n navigate={history.push}\n onAction={handleChangePool}\n className={block('breadcrumbs')}\n showRoot\n >\n {items}\n </Breadcrumbs>\n );\n}\n\nfunction calcRootPathname(pathname: string, cluster: string) {\n // it is not allowed to stay on ACL and Monitor tabs for <Root> link\n const isAllowedTab = some_(SCHEDULING_ALLOWED_ROOT_TABS, (_v, tab) =>\n pathname.endsWith('/' + tab),\n );\n return isAllowedTab ? pathname : `/${cluster}/${Page.SCHEDULING}/${Tab.OVERVIEW}`;\n}\n\nfunction EditableSchedulingBreadcrumbs() {\n const [editMode, setEditMode] = React.useState(false);\n const toggleEdit = React.useCallback(() => {\n setEditMode(!editMode);\n }, [editMode, setEditMode]);\n\n return (\n <div className={block('editable-breadcrumbs', {edit: editMode})}>\n {editMode ? (\n <PoolsSuggest autoFocus onCancelEdit={toggleEdit} />\n ) : (\n <React.Fragment>\n <SchedulingBreadcrumbs />\n <EditButton onClick={toggleEdit} />\n <div className={block('btn-spacer')} />\n <CurrentPoolToClipboardButton />\n </React.Fragment>\n )}\n </div>\n );\n}\n\nfunction SchedulingPhysicalTree() {\n const tree = useSelector(getTree);\n const treeItems = useSelector(getTreesSelectItems);\n const dispatch = useDispatch();\n\n const onChange = React.useCallback((tree: unknown) => dispatch(changeTree(tree)), [dispatch]);\n\n return (\n <div className={block('tree')}>\n <Select\n value={[tree]}\n hideFilter={treeItems?.length <= 5}\n items={treeItems}\n onUpdate={(vals) => onChange(vals[0])}\n className={block('path-tree')}\n placeholder=\"Select tree...\"\n width=\"max\"\n />\n </div>\n );\n}\n\nconst SchedulingTopRowContentMemo = React.memo(SchedulingTopRowContent);\n\nexport default function SchedulingTopRowContentWithError() {\n return (\n <ErrorBoundary compact>\n <SchedulingTopRowContentMemo />\n </ErrorBoundary>\n );\n}\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted, Subject} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}): {\n added: Subject[];\n removed: Subject[];\n} {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value!} : {group: value!};\n }),\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport {YTErrorBlock} from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <YTErrorBlock {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {useRouteMatch} from 'react-router';\n\nimport hammer from '../../common/hammer';\n\nconst b = block('elements-message');\n\ninterface MatchParams {\n tab: string;\n}\n\nexport default function Placeholder() {\n const match = useRouteMatch<MatchParams>();\n const {tab} = match.params;\n\n return (\n <div className={b({theme: 'warning'})}>\n <p className={b('paragraph')}>\n {tab\n ? `Viewer for tab \"${hammer.format['ReadableField'](tab)}\" is not implemented.`\n : 'Viewer for this tab is not implemented.'}\n </p>\n </div>\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableHeader from '../../../components/ElementsTable/ElementsTableHeader';\n\nimport {toggleColumnSortOrder} from '../../../store/actions/tables';\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\nimport {HEADER_HEIGHT} from '../../../constants/index';\n\nimport '../ElementsTable.scss';\n\nconst withStickyHead = (Component) => {\n return class WithStickyHead extends React.Component {\n static displayName = `WithStickyHead(${getDisplayName(Component)})`;\n\n static propTypes = {\n top: PropTypes.number,\n };\n\n static defaultProps = {\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n top: HEADER_HEIGHT,\n };\n\n renderStickyHead() {\n const {top} = this.props;\n const bWrapper = block('elements-table-wrapper')({sticky: 'top'});\n\n return (\n <div className={bWrapper} style={{top}}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableHeader {...this.props} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n {this.renderStickyHead()}\n <Component {...this.props} />\n </React.Fragment>\n );\n }\n };\n};\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\nconst composedWithStickyHead = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withStickyHead,\n);\n\nexport default composedWithStickyHead;\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableRow from '../../components/ElementsTable/ElementsTableRow';\n\nimport {ELEMENTS_TABLE, TemplatesPropType, prepareColumnsData} from './utils';\n\nimport './ElementsTable.scss';\n\nexport default class ElementsTableFooter extends Component {\n static propTypes = {\n footer: PropTypes.object.isRequired,\n templates: TemplatesPropType.isRequired,\n cssHover: PropTypes.bool,\n };\n\n static defaultProps = {\n templates: {},\n cssHover: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n static getDerivedStateFromProps(props) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n renderRow(item, index, key = index) {\n const {css, itemHeight, templates, itemMods, selectedIndex, computeKey, cssHover} =\n this.props;\n const {columnSet, columnItems} = this.state;\n\n const selected = selectedIndex === index;\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey}\n columnSet={columnSet}\n columnItems={columnItems}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n index={index}\n itemMods={itemMods}\n cssHover={cssHover}\n />\n );\n }\n\n render() {\n const bFooter = block(ELEMENTS_TABLE)('footer');\n const {footer} = this.props;\n\n return <tfoot className={bFooter}>{this.renderRow(footer, 0)}</tfoot>;\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableFooter from '../../../components/ElementsTable/ElementsTableFooter';\n\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\n\nimport '../ElementsTable.scss';\n\nexport default (Component) => {\n return class WithStickyFooter extends React.Component {\n static displayName = `WithStickyFooter(${getDisplayName(Component)})`;\n\n static defaultProps = {\n size: 'm',\n };\n\n renderStickyFooter() {\n const bWrapper = block('elements-table-wrapper')({\n sticky: 'bottom',\n });\n const {footer} = this.props;\n\n return (\n <div className={bWrapper}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableFooter {...this.props} footer={footer} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <Component {...this.props} />\n {this.props.footer && this.renderStickyFooter()}\n </React.Fragment>\n );\n }\n };\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button\n className={block('edit-btn')}\n onClick={onClick}\n size={size}\n qa=\"qa:navigation:edit-path\"\n >\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import {createSelector} from 'reselect';\n\nimport compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport uniq_ from 'lodash/uniq';\nimport partition_ from 'lodash/partition';\nimport isEqual_ from 'lodash/isEqual';\nimport some_ from 'lodash/some';\n\nimport {calculateLoadingStatus} from '../../utils/utils';\nimport {concatByAnd} from '../../common/hammer/predicate';\nimport {\n getAclFilterColumnGroupName,\n getAclFilterColumns,\n getAclFilterExpandedSubjects,\n getApproversSubjectFilter,\n getObjectPermissionsFilter,\n getObjectSubjectFilter,\n} from './acl-filters';\nimport UIFactory from '../../UIFactory';\nimport {RootState} from '../../store/reducers';\nimport {IdmKindType, PreparedAclSubject} from '../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../utils/acl/acl-api';\nimport {PreparedRole} from '../../utils/acl';\n\nexport type PreparedAclSubjectColumn = Omit<PreparedAclSubject, 'type'> & {type: 'columns'};\n\nfunction prepareColumnsNames(columnsPermissions: Array<{columns?: Array<string>}>) {\n const columns = map_(columnsPermissions, (permission) => permission.columns);\n\n return compact_(uniq_(flatten_(columns))).sort();\n}\n\nfunction prepareApprovers(\n approvers: Array<PreparedRole> | undefined,\n type: 'read_approver' | 'responsible' | 'auditor',\n) {\n return map_(approvers, (subject) => {\n const extra = {\n type,\n subjects: [subject.value],\n subjectType: subject.type === 'users' ? ('user' as const) : ('group' as const),\n groupInfo:\n subject.type === 'groups'\n ? {name: subject.group_name, url: subject.url, group: undefined}\n : undefined,\n action: undefined,\n };\n return {\n ...subject,\n ...extra,\n };\n });\n}\n\nexport type PreparedApprover = ReturnType<typeof prepareApprovers>[number];\n\nexport const getAllUserPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].userPermissions;\nconst getAllObjectPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].objectPermissions;\n\nconst getAllObjectPermissionsWithSplittedSubjects = createSelector(\n [getAllObjectPermissions],\n splitSubjects,\n);\n\nexport const getObjectPermissionsTypesList = (idmKind: IdmKindType) => {\n return createSelector(\n [\n getObjectPermissionsFilter,\n (state) => getAllObjectPermissionsWithSplittedSubjects(state, idmKind),\n ],\n (permissionsFilter, items) => {\n const uniquePermisions = new Set<YTPermissionTypeUI>();\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind] || {};\n [...permissionTypes, ...permissionsFilter].forEach((permission) =>\n uniquePermisions.add(permission),\n );\n items.forEach((item) => {\n const {permissions} = item;\n permissions?.forEach((permission) => uniquePermisions.add(permission));\n });\n return sortBy_([...uniquePermisions], (permission) => permission);\n },\n );\n};\n\ntype HasSplitted = {\n isSplitted?: boolean;\n subjectIndex?: number;\n};\n\nfunction splitSubjects<T extends {subjects: Array<unknown>}>(items: Array<T>) {\n const res: Array<T & HasSplitted> = [];\n forEach_(items, (item) => {\n const {subjects} = item;\n if (subjects && subjects.length > 1) {\n forEach_(subjects, (subject, index) => {\n res.push({...item, subjects: [subject], isSplitted: true, subjectIndex: index});\n });\n } else {\n res.push(item);\n }\n });\n return res;\n}\n\nfunction subjectFilterPredicate<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(item: T, filter: string) {\n const {subjectType, groupInfo} = item;\n if (subjectType === 'group') {\n return some_(Object.entries(groupInfo ?? {}), ([key, value]) => {\n let str: string | undefined = String(value);\n if (key === 'url') {\n if (str[str.length - 1] === '/') str = str.slice(0, -1);\n str = str.split('/').pop();\n }\n return -1 !== str?.toLowerCase().indexOf(filter);\n });\n }\n const value = String(item.subjects[0] ?? '');\n return -1 !== value.toLowerCase().indexOf(filter);\n}\n\nfunction FilterBySubject<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(items: Array<T>, subjectFilter?: string) {\n if (!subjectFilter) return items;\n const lowerNameFilter = subjectFilter.toLowerCase();\n return filter_(items, (item) => subjectFilterPredicate(item, lowerNameFilter));\n}\n\nconst permissionsFilterPredicate = (item: PreparedAclSubject, filter: Set<YTPermissionTypeUI>) => {\n const {permissions} = item;\n let foundCount = 0;\n return permissions?.some((p) => {\n if (filter.has(p)) {\n foundCount++;\n }\n return foundCount >= filter.size;\n });\n};\n\ntype ObjectPermissionsRow = PreparedAclSubject & HasSplitted;\n\nexport const getAllObjectPermissionsFiltered = createSelector(\n [\n getAllObjectPermissionsWithSplittedSubjects,\n getObjectSubjectFilter,\n getObjectPermissionsFilter,\n getAclFilterColumns,\n ],\n (items, subjectFilter, permissionsFilter, columns) => {\n const [mainPermissions, columnPermissions] = partition_(\n items,\n (item) => !item.columns?.length,\n );\n\n const withColumns = columnPermissions.map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n\n const lowerNameFilter = subjectFilter?.toLocaleLowerCase();\n const filterBySubject = lowerNameFilter\n ? (item: ObjectPermissionsRow) => subjectFilterPredicate(item, lowerNameFilter)\n : undefined;\n\n const permissionsFilterSet = new Set<YTPermissionTypeUI>(permissionsFilter);\n const filterByPermissions = permissionsFilterSet.size\n ? (item: ObjectPermissionsRow) =>\n permissionsFilterPredicate(item, permissionsFilterSet) ?? false\n : undefined;\n\n const visibleColumns = new Set(columns);\n const filterByColumns = visibleColumns.size\n ? ({columns}: ObjectPermissionsRow) => {\n return columns?.some((colName) => visibleColumns.has(colName)) ?? false;\n }\n : undefined;\n\n const mainPredicates = compact_([filterBySubject, filterByPermissions]);\n const columnsPredicates = compact_([filterBySubject, filterByColumns]);\n return {\n mainPermissions: mainPredicates.length\n ? mainPermissions.filter(concatByAnd(...mainPredicates))\n : mainPermissions,\n columnsPermissions: columnsPredicates.length\n ? withColumns.filter(concatByAnd(...columnsPredicates))\n : withColumns,\n };\n },\n);\n\nexport const getObjectPermissionsAggregated = createSelector(\n [getAllObjectPermissionsFiltered, getAclFilterExpandedSubjects],\n ({mainPermissions, columnsPermissions}, expandedSubjects) => {\n return {\n mainPermissions: {\n ...aggregateBySubject(mainPermissions, expandedSubjects),\n count: mainPermissions.length,\n },\n columnsPermissions: {\n ...aggregateBySubject(columnsPermissions, expandedSubjects),\n count: columnsPermissions.length,\n },\n };\n },\n);\n\nclass AggregateBySubject {\n aggrKey: string;\n subject: ObjectPermissionsRow['subjects'][number];\n inherited: boolean;\n\n allPermissions = new Set<YTPermissionTypeUI>();\n columns = new Set<string>();\n first: ObjectPermissionsRow;\n children = new Array<ObjectPermissionsRow & {expanded?: boolean; level?: number}>();\n\n constructor(first: AggregateBySubject['first']) {\n if (first.subjects.length > 1) {\n throw new Error(\n `Unexpected behavior: more than one subject occured: ${first.subjects.join(',')}`,\n );\n }\n\n this.aggrKey = aggregationKey(first);\n this.inherited = Boolean(first.inherited);\n this.subject = first.subjects[0];\n this.first = {...first};\n this.add(first);\n }\n\n add(item: ObjectPermissionsRow) {\n const aggrKey = aggregationKey(item);\n if (this.aggrKey !== aggrKey) {\n throw new Error(\n `Unexpected behavior: aggregation keys are not queal: ${this.aggrKey} !== ${aggrKey}`,\n );\n }\n\n if (item.subjects.length !== 1) {\n throw new Error(\n `Unexpected behavior: item.subjects.length !== 1: ${JSON.stringify(item)}`,\n );\n }\n\n const child = {...item, permissions: [...(item.permissions ?? [])]};\n this.children.push(child);\n\n child.permissions?.sort();\n child.permissions?.forEach((p) => {\n this.allPermissions.add(p);\n });\n item.columns?.forEach((column) => this.columns.add(column));\n\n this.first.isMissing ||= Boolean(item.isMissing);\n this.first.isUnrecognized ||= Boolean(item.isUnrecognized);\n this.first.isApproved ||= Boolean(item.isApproved);\n this.first.isRequested ||= Boolean(item.isRequested);\n }\n\n getItems(expanded: boolean): {\n items: AggregateBySubject['children'];\n hasExpandable?: boolean;\n hasDenyAction?: boolean;\n hasInherited?: boolean;\n } {\n const hasInherited = this.inherited;\n if (this.children.length === 1) {\n return {items: this.children, hasInherited};\n }\n\n const first: typeof this.first & {level?: number; expanded?: boolean} = {\n ...this.first,\n level: 0,\n expanded,\n };\n first.permissions = [...this.allPermissions].sort();\n first.columns = [...this.columns].sort();\n\n let hasDenyAction = false;\n const items = !expanded\n ? [first]\n : [\n first,\n ...sortBy_(this.children, ['inheritance_mode', 'permissions']).map((i) => {\n hasDenyAction ||= i.action === 'deny';\n return {...i, level: 1};\n }),\n ];\n\n this.children.forEach((i) => {\n if (i.inheritance_mode !== first.inheritance_mode) {\n first.inheritance_mode = undefined;\n }\n if (!isEqual_(this.first.inheritedFrom, i.inheritedFrom)) {\n first.inheritedFrom = undefined;\n }\n });\n\n return {items, hasExpandable: true, hasDenyAction, hasInherited};\n }\n}\n\nexport type ObjectPermissionRowWithExpand = AggregateBySubject['children'][number];\n\nfunction aggregationKey(item: ObjectPermissionsRow) {\n const {\n inherited,\n subjects: [subject],\n } = item;\n return `subject:${subject}_inherited:${Boolean(inherited)}`;\n}\n\nfunction aggregateBySubject(\n objPermissions: Array<ObjectPermissionsRow>,\n expandedSubjects: Set<string | number>,\n) {\n const aggregated: Record<string, AggregateBySubject> = {};\n\n objPermissions.forEach((item) => {\n const aggKey = aggregationKey(item);\n const dst = aggregated[aggKey];\n if (!dst) {\n aggregated[aggKey] = new AggregateBySubject(item);\n } else {\n dst.add(item);\n }\n });\n\n const res = Object.values(aggregated).reduce(\n (acc, item) => {\n const {items, hasExpandable, hasInherited} = item.getItems(\n expandedSubjects.has(item.subject),\n );\n acc.items = acc.items.concat(items);\n acc.hasExpandable ||= hasExpandable;\n acc.hasInherited ||= hasInherited;\n return acc;\n },\n {items: []} as ReturnType<AggregateBySubject['getItems']>,\n );\n\n const [inherited, other] = partition_(res.items, (item) => item.inherited);\n\n return {\n ...res,\n items: [...inherited, ...other],\n };\n}\n\nexport const getAllObjectPermissionsOrderedByStatus = createSelector(\n [getAllObjectPermissions],\n OrderByRoleStatus,\n);\nexport const getAllColumnGroups = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].columnGroups;\nexport const getAllColumnGroupsActual = createSelector(\n [getAllColumnGroups, getAclFilterColumns, getAclFilterColumnGroupName],\n (items, columnsFilter, nameFilter) => {\n const visibleColumns = new Set(columnsFilter);\n type ItemType = (typeof items)[number];\n const nameFilterLower = nameFilter?.toLowerCase();\n const predicates = compact_([\n (item: ItemType) => {\n return !item.removed;\n },\n visibleColumns.size > 0\n ? (item: ItemType) => {\n return item.columns?.some((name) => visibleColumns.has(name)) ?? false;\n }\n : undefined,\n nameFilterLower?.length\n ? (item: ItemType) =>\n -1 !== (item.name?.toLowerCase()?.indexOf(nameFilterLower) ?? -1)\n : undefined,\n ]);\n const filtered = filter_(items, concatByAnd(...predicates)).map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n return sortBy_(filtered, ['name']);\n },\n);\n\nfunction OrderByRoleStatus<\n T extends {\n isDepriving?: boolean;\n isRequested?: boolean;\n isUnrecognized?: boolean;\n isApproved?: boolean;\n },\n>(items: Array<T>) {\n const unrecognized: typeof items = [];\n const requested: typeof items = [];\n const depriving: typeof items = [];\n const rest: typeof items = [];\n forEach_(items, (item) => {\n const {isDepriving, isRequested, isUnrecognized, isApproved} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n depriving.push(item);\n } else if (isRequested || isApproved) {\n requested.push(item);\n } else {\n rest.push(item);\n }\n });\n return [...requested, ...depriving, ...unrecognized, ...rest];\n}\n\nfunction OrderByInheritanceAndSubject<T extends {inherited?: boolean; subjects: Array<unknown>}>(\n items: Array<T>,\n) {\n const res = sortBy_(items, [\n (item) => !item.inherited,\n (item) => (item.subjects && item.subjects[0]) || true,\n ]);\n return res;\n}\n\nconst getReadApprovers = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].readApprovers;\nconst getResponsibles = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].responsible;\nconst getAuditors = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].auditors;\n\nexport const getNotInheritedReadApprovers = createSelector([getReadApprovers], (readApprovers) =>\n filter_(readApprovers, (readApprover) => !readApprover.inherited),\n);\nexport const getNotInheritedResponsibles = createSelector([getResponsibles], (responsibles) =>\n filter_(responsibles, (responsible) => !responsible.inherited),\n);\nexport const getNotInheritedAuditors = createSelector([getAuditors], (auditros) =>\n filter_(auditros, (auditro) => !auditro.inherited),\n);\n\nconst getAllApprovers = createSelector(\n [getReadApprovers, getResponsibles, getAuditors],\n (readApprovers, responsibles, auditros) => {\n return [\n ...prepareApprovers(readApprovers, 'read_approver'),\n ...prepareApprovers(responsibles, 'responsible'),\n ...prepareApprovers(auditros, 'auditor'),\n ];\n },\n);\n\nexport const getHasApprovers = createSelector([getAllApprovers], (items) => items.length > 0);\n\nexport const getApproversFiltered = createSelector(\n [getAllApprovers, getApproversSubjectFilter],\n FilterBySubject,\n);\n\nexport const getApproversFilteredAndOrdered = createSelector(\n [getApproversFiltered],\n OrderByInheritanceAndSubject,\n);\n\nexport const getApprovers = createSelector([getAllApprovers], OrderByRoleStatus);\n\nexport const getAllAccessColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'allow' && permission.columns?.length! > 0,\n );\n\n return map_(filteredPermissions, (item) => {\n const tmp: typeof item = {...item};\n tmp.type = 'columns';\n return tmp;\n });\n },\n);\n\nconst getAllDenyColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'deny' && permission.columns?.length! > 0,\n );\n\n return map_(\n filteredPermissions,\n (permission) =>\n ({\n ...permission,\n type: 'columns',\n }) as PreparedAclSubjectColumn,\n );\n },\n);\n\nexport const getAllAccessColumnsNames = createSelector(\n [getAllAccessColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getAllDenyColumnsNames = createSelector(\n [getAllDenyColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getDenyColumnsItems = createSelector([getAllDenyColumnsNames], (names) =>\n map_(names, (name) => ({key: name, value: name, title: name})),\n);\n\nexport const isPermissionDeleted = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].isPermissionDeleted;\nexport const permissionDeletionError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletionError;\nexport const getLastDeletedPermissionKey = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletedItemKey;\nexport const getIdmPermissionsRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmPermissionsRequestError;\nexport const getIdmManageAclRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmManageAclRequestError;\nexport const getIdmPathVersion = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].version;\n\nconst getAclLoading = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loading;\nconst getAclLoaded = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loaded;\nconst getAclError = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].error;\n\nexport const getAclLoadState = createSelector(\n [getAclLoading, getAclLoaded, getAclError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Button, ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Favourites.scss';\n\nconst b = block('favourites');\n\ninterface Props {\n className?: string;\n isActive: boolean;\n items: Array<FavouritesItem>;\n onItemClick: (item: FavouritesItem) => void;\n toggleDisabled?: boolean;\n onToggle: () => void;\n theme?: 'clear';\n}\n\nexport interface FavouritesItem {\n path: string;\n}\n\ninterface State {\n isActive: boolean;\n}\n\nexport default class Favourites extends Component<Props, State> {\n static itemType = PropTypes.shape({\n path: PropTypes.string,\n });\n\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n items: PropTypes.arrayOf(Favourites.itemType),\n onItemClick: PropTypes.func,\n toggleDisabled: PropTypes.bool,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n theme: PropTypes.string,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.isActive !== state.isActive) {\n return {isActive: props.isActive};\n }\n return null;\n }\n\n state = {\n isActive: this.props.isActive,\n };\n\n toggleActive = () => {\n const {onToggle} = this.props;\n\n this.setState((prevState) => ({isActive: !prevState.isActive}));\n onToggle();\n };\n\n onItemClick = (item: FavouritesItem) => {\n const {onItemClick} = this.props;\n onItemClick(item);\n };\n\n renderDropDownMenu() {\n const {items} = this.props;\n\n const dropItems = map_(items, (item) => {\n return {\n text: item.path,\n action: () => this.onItemClick(item),\n };\n });\n if (items.length === 0) {\n dropItems.push({\n action: () => {},\n text: 'No favourites',\n });\n }\n\n const switcher = this.renderButton({\n view: 'normal',\n size: 'm',\n pin: 'brick-round',\n title: 'View favourites',\n children: <Icon awesome=\"angle-down\" />,\n });\n\n return (\n <DropdownMenu\n popupProps={{\n className: b('popup', {empty: items.length === 0}),\n }}\n items={dropItems}\n switcher={switcher}\n />\n );\n }\n\n renderHotkey() {\n return <Hotkey settings={[{keys: 'f', handler: this.toggleActive, scope: 'all'}]} />;\n }\n\n renderButton(buttonProps: ButtonProps & {disabled?: boolean}) {\n const {theme} = this.props;\n const themeProps = !theme ? {} : {view: 'outlined' as const};\n return <Button {...buttonProps} {...themeProps} />;\n }\n\n render() {\n const {toggleDisabled, className, theme} = this.props;\n const {isActive} = this.state;\n\n return (\n <div className={b(null, className)}>\n <div className={b('star-btn', {clear: theme === 'clear'})}>\n {this.renderButton({\n view: 'outlined-info',\n selected: isActive,\n size: 'm',\n pin: theme === 'clear' ? 'round-brick' : 'round-clear',\n title: 'Add to favourites [F]',\n onClick: this.toggleActive,\n disabled: toggleDisabled,\n children: <Icon awesome={isActive ? 'star-alt' : 'star'} />,\n })}\n </div>\n {this.renderDropDownMenu()}\n {this.renderHotkey()}\n </div>\n );\n }\n}\n","import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n headingClassName,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'}, headingClassName)}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n headingClassName?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n"],"names":["getApproversSubjectFilter","state","aclFilters","approversSubject","getObjectSubjectFilter","objectSubject","getObjectPermissionsFilter","objectPermissions","getAclFilterColumns","columnsFilter","getAclFilterColumnGroupName","columnGroupNameFilter","getAclFilterExpandedSubjects","expandedSubjects","getAclCurrentTab","aclCurrentTab","makeGet","path","parameters","command","_objectSpread","USE_CACHE","makeList","USE_MAX_SIZE","cancelHelper","CancelHelper","POOL_FIELDS_TO_LOAD","POOL_TREE_GET_ATTRS","EmptyFullPath","_Error","_classCallCheck","_callSuper","arguments","_inherits","_createClass","_wrapNativeSuper","Error","loadExpandedPools","tree","dispatch","getState","pool","getPool","ROOT_POOL_NAME","loadExpandedOperationsAndPools","ytApiV3Id","executeBatch","YTApiId","schedulingPoolFullPath","requests","concat","fields","then","_ref","output","_slicedToArray","_ref3","full_path","is_ephemeral","fullPath","isEphemeral","oldExpandedPools","getSchedulingOperationsExpandedPools","treeExpandedPools","Map","parts","split","slice","i","length","poolName","parentPoolPath","join","set","updateExpandedPoolNoLoad","addFullPathToExpandedPoolsNoLoad","e","type","CHANGE_POOL","data","Toaster","add","name","theme","title","_getSchedulingOperati","loadAll","getExpandedPoolsLoadAll","expandedPools","expandedPoolNames","_toConsumableArray","keys","operationsExpandedPools","operationsRequests","push","prefix","forEach","item","loadAllPools","poolsRequests","poolsChildrenRequests","poolsCypressDataRequests","poolsExpandedPools","attributes","_expandedPools$get","_ref4","get","cypressDataPath","removeAllRequests","SCHEDULING_EXPANDED_POOLS_REQUEST","Promise","all","schedulingLoadOperationsPerPool","cancellation","saveCancelToken","resolve","schedulingLoadPoolsAll","schedulingLoadPoolsPerPool","schedulingLoadChildrenPerPool","schedulingLoadCypressDataPerPool","_ref5","_error$inner_errors","_ref6","operationsResults","poolsResults","poolsChildrenResults","poolsCypressData","error","UIBatchError","_splitBatchResults","splitBatchResults","USE_IGNORE_NODE_DOES_NOT_EXIST","operations","results","errorIgnoredIndices","rawOperations","reduce_","acc","Object","assign","poolsToCollapse","forEach_","pos","rawPools","cypressData","pools","_ref7","_ref8$","value","_splitBatchResults3","flattenAttributes","_splitBatchResults4","resultIndices","poolsReqeustsIgnored","poolInfo","index","_splitBatchResults5","poolChildren","poolsChildrenRequestsIgnored","children","_splitBatchResults6","cypressDataChildrenPerPool","poolsCypressDataRequestsIgnored","poolChildrenCypressData","$value","position","setExpandedPools","SCHEDULING_EXPANDED_POOLS_SUCCESS","expandedPoolsTree","EMPTY_OBJECT","flattenCypressData","inner_errors","isCancelled","SCHEDULING_EXPANDED_POOLS_FAILURE","changes","getTree","poolsByName","getSchedulingPoolsMapByName","expanded","expandedPoolInfo","_data","res","_data2","parent","calcExpandedPoolInfo","_defineProperty","SCHEDULING_EXPANDED_POOLS_PARTITION","getPoolPathsByName","_dispatch","getPools","calculatePoolPath","orchidPath","toaster","loadSchedulingData","SCHEDULING_DATA_REQUEST","isInitialLoading","getSchedulingIsInitialLoading","cluster","getCluster","rumId","RumWrapper","RumMeasureTypes","SCHEDULING","fetch","schedulingData","_splitBatchResults$re","schedulerAlerts","rawTrees","defaultTree","reject","trees","prepareTrees","prepareCurrentTree","scheduling","schedulingLoadFilterAttributes","checkFilters","SCHEDULING_DATA_PARTITION","treeRequests","schedulingLoadTree","ytApiV4Id","treeData","extracted","extractBatchV4Values","_splitBatchResults2","_ref2","treeResources","resource_usage","resource_limits","config","resource_distribution_info","SCHEDULING_DATA_SUCCESS","code","yt","CANCELLED","SCHEDULING_DATA_FAILURE","openPoolDeleteModal","POOL_TOGGLE_DELETE_VISIBILITY","visibility","closePoolDeleteModal","undefined","setPoolAttributes","params","poolPath","values","initials","isEmpty_","transferData","toModify","guaranteeType","restValues","_objectWithoutProperties","_excluded","v","k","limit","source","key","attr","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","_initials$key","diff","hasOwnProperty","call","updateNodeAttributes","tmp","dstPool","map_","dotPath","startsWith","INTEGRAL_GUARANTEES_PREFIX","substr","replace","delta","update_","Math","abs","source_pool","destination_pool","pool_tree","resource_delta","schedulingTransferPoolQuota","err","getBatchError","transferPoolQuota","schedulingOverviewHasFilter","_getSchedulingAttribu","getSchedulingAttributesToFilterParams","lastTime","lastTree","Date","now","wrapApiPromiseByToaster","schedulingFilterAttributes","skipSuccessToast","toasterName","errorContent","attributesToFilter","attributesToFilterParams","setName","newName","prevName","makeOtherAttributesCommands","initialValues","initialSortParamsString","fifoSortParams","newSortParamsString","commands","forbidImmediateOperations","input","createEphemeralSubpools","setResourceAttributes","omittedValues","attribute","keyMapper","userSlots","omittedValuesList","preparedValues","mapKeys_","schedulingGetAttrsBeforeEdit","resources","result","omit_","makeGeneralCommands","isInitial","initialValue","pickBy_","mode","weight","prototype","isOmitted","Number","isInvalidNumber","isNaN","isValidNumber","editPool","computePoolPath","filteredResourceLimitsValues","resourceLimits","omittedResourceLimitsValues","resourceLimitsValues","mapValues_","SCHEDULING_EDIT_POOL_REQUEST","general","otherSettings","schedulingEditPool","resourceGuarantee","integralGuarantee","pick_","POOL_GENERAL_TYPE_TO_ATTRIBUTE","timeout","SCHEDULING_EDIT_POOL_SUCCESS","closeEditModal","setTimeout","SCHEDULING_EDIT_POOL_FAILURE","openEditModal","TOGGLE_EDIT_VISIBILITY","cancelled","SCHEDULING_EDIT_POOL_CANCELLED","changeTree","CHANGE_TREE","changePool","getSchedulingIsFinalLoadingState","createSelector","store","loading","loaded","status","calculateLoadingStatus","isFinalLoadingStatus","block","cn","ShareUsageBar","props","className","shareValue","usageValue","shareTitle","usageTitle","forceTheme","x","_jsx","Tooltip","content","_jsxs","React","format","NO_VALUE","_calcProgressProps","calcProgressProps","digits","Progress","size","getSchedulingBreadcrumbItems","current","_loop","find_","reverse","makeStaticConfigurationItem","attrs","cpu","ypath","getValue","gpu","memory","user_slots","network","getCurrentPoolStaticConfiguration","getIsRoot","getCurrentPool","isRoot","burst_guarantee_resources","resource_flow","filter","Boolean","calcTreeStaticConfiguration","totals","undistributed","resourceType","total","getNumber","free","used","calcTreeStaticConfigurationByDistributed","distributed","getPoolsTopLevel","filter_","getPoolsAllocatedOperationsCount","topPools","maxOperationCount","maxRunningOperationCount","getCurrentTreeGpuLimit","getTreeResources","getOperationsStaticConfiguration","allocated","operationCount","runningOperationCount","level","usedTitle","lastDayMaxValueSensor","lastDayMaxValueTitle","getCurrentPoolTreeStaticConfiguration","operationRows","undistributed_resources","burst","distributed_burst_guarantee_resources","unburst","undistributed_burst_guarantee_resources","flow","distributed_resource_flow","unflow","undistributed_resource_flow","cpuRow","burstRow","flowRow","max","apply","PoolMetaData","useSelector","clusterUiConfig","getClusterUiConfig","hasStrong","integralType","capitalize_","MetaTable","items","Readable","UIFactory","getExtraMetaTableItemsForPool","SchedulingStaticConfiguration","onToggleCollapsedState","useDispatch","collapsed","getSettingsSchedulingExpandStaticConfiguration","onToggle","setSettingsSchedulingExpandStaticConfiguration","CollapsibleSection","PoolTreeStaticConfiguration","PoolStaticConfiguration","staticConfigurationItems","columns","header","sortable","width","render","row","cpuLabel","Label","capitalize","text","align","DataTableYT","useThemeYT","settings","displayIndices","poolTree","_ref8","formatValue","renderSchedulingLastDayMaximum","sensor","showHint","showAsLink","_ref9","formatFn","freeValue","lastDayMaxValue","rowClassName","SchedulingOperationsError","getSchedulingOperationsError","YTErrorBlock","topMargin","PoolsSuggest","_ref$onCancelEdit","onCancelEdit","autoFocus","poolNames","getPoolsNames","getSuggestItems","_items","match","filtered","lcFilter","toLowerCase","lcPoolName","indexOf","handleCancelEdit","onItemClick","onFocus","Suggest","popupClassName","onBlur","placeholder","PoolTags","showGuaranteeType","hasFlow","flowCPU","flowGPU","renderSchedulingTableItemExtraControls","STARVATION_STATUS_TO_THEME","starving","aggressively_starving","Overview","_Component","_this","_len","args","Array","_key","renderNameCell","_this$props","currentPool","itemsMaxDepth","allowExpand","_len2","rest","_key2","renderType","renderName","Tab","OVERVIEW","renderEphemeralIcon","renderEffectiveLightweightIcon","renderActions","_this$props2","aggregation","renderAttributesButton","Fragment","renderEditButton","renderDeleteButton","onItemToggleState","treeState","this","css","striped","tableId","SCHEDULING_POOL_TREE_TABLE_ID","itemHeight","poolsTableItems","sets","default","templates","renderMode","FI","renderFifoIndex","renderWeight","fair_share","renderColumnAsRatio","usage","demand","min_share","renderMinShare","fair_share_usage","renderFairShareUsage","dominant_resource","renderDominantResource","operation_overview","renderOperationOverview","actions","computeKey","SchedulingOverviewToolbar","_this$props3","treeStateExpanded","operationRefId","sortState","refItem","find","ErrorBoundary","fireResizeEvent","WithStickyToolbar","toolbar","renderToolbar","ResetExpandedPoolsOnTreeChange","ElementsTable","tableSettings","isLoading","highlightedItem","compareHighlitedBy","getEffectiveSortState","share","_ref3$forceTheme","_ref3$title","hammer","poolModeTheme","weightEdited","edited","digitsOnlyForFloat","columnName","renderRatio","barsData","fairShareRatio","usageRatio","starvation_status","renderBars","formatter","getPoolPaths","buttonProps","getPathProps","exactPath","ClickableAttributesButton","onClick","Button","view","Icon","awesome","fifoIndex","toggleItemState","itemState","icon","operation","empty","expanderClass","expanderClassIcon","expanderIcon","tab","isCurrentPool","linkText","incomplete","id","FormattedText","qs","window","location","search","page","Page","FormattedLink","routed","url","Link","isEffectiveLightweight","LightWeightIcon","dominantResource","minShareRatio","Component","resourcePropTypes","PropTypes","isRequired","progress","tableItemPropTypes","abc","demandRatio","fifo","mapDispatchToProps","changeTableTreeState","CHANGE_TABLE_TREE_STATE","schedulingSetAbcFilter","abcServiceFilter","getSchedulingOperationsCount","root","setLoadAllOperations","dispatchEvent","Event","OverviewConnected","connect","getSortState","getTableItems","getSchedulingOverviewMaxDepth","getSchedulingTreeState","getOperationRefId","getSchedulingAbcFilter","OverviewWithRum","isFinalState","useAppRumMeasureStart","SCHEDULING_OVERVIEW","additionalStartType","startDeps","allowStart","useRumMeasureStop","stopDeps","allowStop","_getSchedulingOperati2","old","map","_toPropertyKey","resetExpandedPools","_React$PureComponent","_this2","_len3","_key3","confirmExpandDialogVisible","handleExpand","onConfirmExpand","setConfirmDialogVisibility","handleCollapse","onAbcServiceFilter","abcService","slug","setState","_this3","Dialog","open","Header","caption","Body","Footer","onClickButtonApply","onClickButtonCancel","textButtonCancel","textButtonApply","renderConfirmExpandDialog","renderControlAbcService","onChange","compose","withStickyHead","withStickyFooter","ElementsTableBase","Details","renderResourceBars","resourceData","childTableItems","guaranteed","renderRelResource","child","isChildPool","DETAILS","integral","totalRow","summedProperties","resource","metric","prepare","calculateTotalOverPools","SCHEDULING_POOL_CHILDREN_TABLE_ID","footer","top","columnsSets","max_share","renderMaxShare","resource_detailed_cpu","renderColumnAsFloatNumber","resource_detailed_memory","renderColumnAsBytes","resource_detailed_gpu","renderColumnAsNumber","resource_detailed_user_slots","resource_limit_cpu","resource_limit_memory","resource_limit_gpu","resource_limit_user_slots","min_resources_cpu","min_resources_memory","min_resources_gpu","min_resources_user_slots","abs_guaranteed_cpu","abs_guaranteed_memory","abs_guaranteed_gpu","abs_guaranteed_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","rel_usage_cpu","rel_usage_memory","rel_usage_gpu","rel_usage_user_slots","guaranteed_usage_cpu","guaranteed_usage_memory","guaranteed_usage_gpu","guaranteed_usage_user_slots","running_operation_progress","renderAsProgress","running_operation_count","operation_count","operation_progress","max_running_operation_count","renderMaxRunningOperationCount","max_operation_count","renderMaxOperationCount","integral_type","renderIntegralType","burst_cpu","renderIntegralGuarantee","flow_cpu","children_burst_cpu","childrenIntegrals","children_flow_cpu","accumulated","accumulated_cpu","burst_duration","itemMods","_this$props4","changePoolChildrenFilter","changeContentMode","Filter","RadioButton","_this$props5","hideToolbarShadow","ElementsTableSticky","cssTableMods","maxShareRatio","maxOperationCountEdited","renderNumberWithEdited","maxRunningOperationCountEdited","editedValue","autoCalculated","Secondary","Bold","hasActiveGuarantee","inactive","renderColumnAsReadable","getProgressTheme","poolChildrenFilter","CHANGE_POOL_CHILDREN_FILTER","evt","CHANGE_CONTENT_MODE","contentMode","target","DetailsConnected","getPoolChildrenSortState","getPollChildrenTableItems","getContentMode","getPoolChildrenFilter","getSortedPoolChildren","DetailsWithRum","SCHEDULING_DETAILS","PoolAcl","NoContent","warning","hint","PoolAclPanel","loadState","getAclLoadState","IdmObjectType","POOL","SCHEDULING_ACL","SchedulingExpandedPoolsUpdater","withRouter","getPoolIsEphemeral","allowAcl","isPoolAclAllowed","localTab","showSettings","show","SCHEDULING_ALLOWED_ROOT_TABS","titleDict","aclTab","ACL","extraTabs","getSchedulingExtraTabs","extraOptions","extraRoutes","component","urlTemplate","tabSettings","external","formatByParams","ytCluster","ytPool","ytPoolTree","route","Route","makeTabProps","Tabs","active","DEFAULT_TAB","UI_TAB_SIZE","Switch","Placeholder","Redirect","from","to","pathname","headingBlock","SchedulingResources","getResources","makeError","PoolEditorDialog","editItem","getSchedulingEditItem","_useSelector","poolErrorData","editVisibility","treGpuLimit","allowedSources","getSchedulingSourcesOfEditItem","poolsItems","getPoolsSelectItems","_useMemo","useMemo","getInitialValues","_useMemo2","initialFormValues","editCloseHandler","useCallback","editConfirmHandler","_asyncToGenerator","_regeneratorRuntime","mark","_callee","form","_form$getState","wrap","_context","prev","next","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","_typeof","stop","_x","user","getCurrentUserName","_React$useState","_React$useState2","hasWarning","setHasWarning","_React$useState3","_React$useState4","checkPermError","setCheckPermError","pathToCheck","checkUserPermissionsUI","newHasWarning","action","visible","warningField","extras","checkPermErrorField","poolErrorDataField","transferNotice","parentPool","renderTransferQuotaNoticeForPool","isTopLevel","isTopLevelPool","useTransferNotice","integralTypeNotice","isAbcPoolName","summary","_createQuotaReqTicket","createQuotaReqTicketUrl","queue","useChangeIntegralTypeNotice","YTDFDialog","onClose","headerProps","onAdd","required","tooltip","disabled","hideFilter","min","MIN_VALUE","hidePrettyValue","String","initialLimit","Infinity","sourcesSkipParent","limitInputTitle","cpuStrong","decimalPlaces","gpuStrong","memoryStrong","burstCpu","burstGpu","flowCpu","flowGpu","validator","axis","SchedulingDialogsMemo","SchedulingDialogs","Scheduling","_state$scheduling$sch","hasError","errorData","updateFn","useUpdater","Content","SchedulingMemo","SchedulingWithRum","deleteVisibility","deleteItem","deleteConfirmHandler","SCHEDULING_DELETE_POOL_REQUEST","remove","autoHiding","SCHEDULING_DELETE_POOL_SUCCESS","SCHEDULING_DELETE_POOL_FAILURE","deleteCloseHandler","SCHEDULING_CREATE_POOL_CANCELLED","closeDeleteModal","DeleteDialog","hasCloseButton","keys_","message","propsButtonApply","prepareAbcService","fetchCreatePoolDialogTreeItems","currentTree","getPoolTrees","treeItems","CREATE_POOL_DIALOG_TREE_ITEMS_SUCCESS","createPool","create","parent_name","successContent","updateAcl","idmKind","responsible","waitWhilePoolIsReady","CREATE_POOL_DIALOG_TREE_CREATE_FAILURE","_createAdminReqTicket","createAdminReqTicketUrl","createUrl","CHECK_REDINESS_TIMEOUT","MAX_POOL_REDINESS_TIMEOUT","TIMEOUT_ERROR","_Fragment","startedTime","exists","allowRoot","uiSettings","schedulingDenyRootAsParent","CreatePoolButton","_useState","useState","_useState2","changeVisibility","handleShow","handleClose","CreatePoolDialog","treeStored","setTree","handleTreeChange","newTree","getCreatePoolDialogError","login","getTreesSelectItems","handleCreateConfirm","handleNameChange","sortedFlatTree","getCreatePoolDialogFlatTreeItems","validateForm","sortedIndexOf_","isApplyDisabled","errors","validate","pristineSubmittable","touched","docsUrl","docsUrls","isIdmAclAvailable","SchedulingTopRowContent","RowWithName","urlParams","SchedulingFavourites","SchedulingPhysicalTree","EditableSchedulingBreadcrumbs","renderTopRowExtraControlsForPool","itemClassName","favouritesPools","getFavouritePools","isActivePool","isActivePoolInFavourites","onFavouriteClick","onFavouriteToggle","parentNS","getSchedulingNS","toggleFavourite","togglePoolFavourites","Favourites","isActive","toggleDisabled","CurrentPoolToClipboardButton","currentPoolPath","getCurrentPoolPath","ClipboardButton","shiftText","hoverContent","SchedulingBreadcrumbs","bcItems","history","useHistory","some_","_v","endsWith","calcRootPathname","BreadcrumbsItem","href","makeRoutedURL","Breadcrumbs","navigate","onAction","toString","showRoot","editMode","setEditMode","toggleEdit","edit","EditButton","Select","onUpdate","vals","SchedulingTopRowContentMemo","SchedulingTopRowContentWithError","compact","prepareRoleListValue","roles","otherMembers","toAdd","toRemove","unrecognized","isUnrecognized","isRequested","isApproved","isDepriving","currentArr","prepareItemOfCurrent","otherArr","frozen","newItems","role","extraProps","roleListValueToSubjectList","manyListDataItemToSubjectList","manyListDataItem","removed","extractChangedSubjects","added","group","DialogError","makeErrorFields","compact_","FORM_ERROR","makeFormSubmitError","validationErrors","importYTDFDialog","withLazyLoading","t0","sent","YTDialog","abrupt","mounted","setMounted","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","b","useRouteMatch","toggleColumnSortOrder","tables","_WithStickyHead","_React$Component","WithStickyHead","bWrapper","sticky","style","prepareTableClassName","ElementsTableHeader","renderStickyHead","displayName","getDisplayName","defaultProps","padded","HEADER_HEIGHT","useRumMeasureStart","subPage","ElementsTableFooter","selectedIndex","cssHover","_this$state","columnSet","columnItems","selected","currentKey","ElementsTableRow","bFooter","ELEMENTS_TABLE","renderRow","_prepareColumnsData","prepareColumnsData","_WithStickyFooter","WithStickyFooter","renderStickyFooter","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","EditableAsText","withControls","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","setInput","useEffect","handleChangeMode","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","handleKeyDown","controlSize","TextInput","onKeyDown","onMouseDown","_ref$size","qa","prepareColumnsNames","columnsPermissions","permission","uniq_","flatten_","sort","prepareApprovers","approvers","subject","extra","subjects","subjectType","groupInfo","group_name","getAllUserPermissions","acl","userPermissions","getAllObjectPermissions","getAllObjectPermissionsWithSplittedSubjects","isSplitted","subjectIndex","getObjectPermissionsTypesList","permissionsFilter","uniquePermisions","Set","permissionTypes","getAclPermissionsSettings","permissions","sortBy_","subjectFilterPredicate","_item$subjects$","entries","_str","str","pop","getAllObjectPermissionsFiltered","subjectFilter","_partition_","partition_","_item$columns","_partition_2","mainPermissions","withColumns","lowerNameFilter","toLocaleLowerCase","filterBySubject","permissionsFilterSet","filterByPermissions","_permissionsFilterPre","foundCount","some","p","has","permissionsFilterPredicate","visibleColumns","filterByColumns","_columns$some","colName","mainPredicates","columnsPredicates","concatByAnd","getObjectPermissionsAggregated","aggregateBySubject","count","AggregateBySubject","first","aggrKey","inherited","allPermissions","aggregationKey","_item$permissions","_child$permissions","_child$permissions2","_item$columns2","_this$first","_this$first2","_this$first3","_this$first4","JSON","stringify","column","isMissing","hasInherited","hasDenyAction","inheritance_mode","isEqual_","inheritedFrom","hasExpandable","objPermissions","aggregated","aggKey","dst","reduce","_item$getItems","getItems","_partition_3","_partition_4","other","OrderByRoleStatus","getAllColumnGroupsActual","columnGroups","nameFilter","nameFilterLower","predicates","_item$columns$some","_item$columns3","_item$name$toLowerCas","_item$name","requested","depriving","getReadApprovers","readApprovers","getResponsibles","getAuditors","auditors","getNotInheritedReadApprovers","readApprover","getNotInheritedResponsibles","responsibles","getNotInheritedAuditors","auditros","auditro","getAllApprovers","getHasApprovers","getApproversFiltered","getApproversFilteredAndOrdered","getAllAccessColumnsPermissions","filteredPermissions","_permission$columns","getAllDenyColumnsPermissions","_permission$columns2","getAllAccessColumnsNames","getAllDenyColumnsNames","getDenyColumnsItems","names","isPermissionDeleted","permissionDeletionError","deletionError","getLastDeletedPermissionKey","deletedItemKey","getIdmPermissionsRequestError","idmPermissionsRequestError","getIdmManageAclRequestError","idmManageAclRequestError","getIdmPathVersion","version","toggleActive","prevState","dropItems","switcher","renderButton","pin","DropdownMenu","popupProps","Hotkey","handler","scope","themeProps","clear","renderDropDownMenu","renderHotkey","itemType","headingCN","CollapsibleSectionStateLess","toggle","overview","headingClassName","marginDirection","togglerRightPadding","margin","clickable","setCollapsed"],"sourceRoot":""}