@ytsaurus/ui 1.75.1 → 1.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/public/build/assets-manifest.json +75 -75
  2. package/dist/public/build/css/{job.c7c99207.chunk.css → job.9757ff68.chunk.css} +2 -2
  3. package/dist/public/build/css/job.9757ff68.chunk.css.map +1 -0
  4. package/dist/public/build/css/main.0efa9da5.css +10 -0
  5. package/dist/public/build/css/main.0efa9da5.css.map +1 -0
  6. package/dist/public/build/css/navigation.c199c4f2.chunk.css +2 -0
  7. package/dist/public/build/css/navigation.c199c4f2.chunk.css.map +1 -0
  8. package/dist/public/build/js/{1260.534f3f75.chunk.js → 1260.a1e22005.chunk.js} +2 -2
  9. package/dist/public/build/js/{1260.534f3f75.chunk.js.map → 1260.a1e22005.chunk.js.map} +1 -1
  10. package/dist/public/build/js/{1879.23423388.chunk.js → 1879.3975650a.chunk.js} +3 -3
  11. package/dist/public/build/js/{1879.23423388.chunk.js.map → 1879.3975650a.chunk.js.map} +1 -1
  12. package/dist/public/build/js/{1983.666923be.chunk.js → 1983.64a2e22f.chunk.js} +2 -2
  13. package/dist/public/build/js/{1983.666923be.chunk.js.map → 1983.64a2e22f.chunk.js.map} +1 -1
  14. package/dist/public/build/js/{2447.b2877275.chunk.js → 2447.eb8fde89.chunk.js} +2 -2
  15. package/dist/public/build/js/{2447.b2877275.chunk.js.map → 2447.eb8fde89.chunk.js.map} +1 -1
  16. package/dist/public/build/js/3724.3e5848f0.chunk.js +2 -0
  17. package/dist/public/build/js/{3724.425d01ec.chunk.js.map → 3724.3e5848f0.chunk.js.map} +1 -1
  18. package/dist/public/build/js/6729.39d7cf60.chunk.js +2 -0
  19. package/dist/public/build/js/6729.39d7cf60.chunk.js.map +1 -0
  20. package/dist/public/build/js/{7959.95ebd185.chunk.js → 7959.faac2ff8.chunk.js} +2 -2
  21. package/dist/public/build/js/{7959.95ebd185.chunk.js.map → 7959.faac2ff8.chunk.js.map} +1 -1
  22. package/dist/public/build/js/{8390.83f4531a.chunk.js → 8390.c3d2de6a.chunk.js} +2 -2
  23. package/dist/public/build/js/{8390.83f4531a.chunk.js.map → 8390.c3d2de6a.chunk.js.map} +1 -1
  24. package/dist/public/build/js/{8460.2d4d237e.chunk.js → 8460.fc8e2238.chunk.js} +2 -2
  25. package/dist/public/build/js/{8460.2d4d237e.chunk.js.map → 8460.fc8e2238.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{8778.e18e655b.chunk.js → 8778.f3ea089f.chunk.js} +2 -2
  27. package/dist/public/build/js/{8778.e18e655b.chunk.js.map → 8778.f3ea089f.chunk.js.map} +1 -1
  28. package/dist/public/build/js/{9558.a6ea64c9.chunk.js → 9558.6a4bf9a9.chunk.js} +2 -2
  29. package/dist/public/build/js/{9558.a6ea64c9.chunk.js.map → 9558.6a4bf9a9.chunk.js.map} +1 -1
  30. package/dist/public/build/js/9569.aac48f3b.chunk.js +2 -0
  31. package/dist/public/build/js/9569.aac48f3b.chunk.js.map +1 -0
  32. package/dist/public/build/js/{accounts.2ba221c2.chunk.js → accounts.aa7ed73f.chunk.js} +2 -2
  33. package/dist/public/build/js/accounts.aa7ed73f.chunk.js.map +1 -0
  34. package/dist/public/build/js/{acl.c948c339.chunk.js → acl.4cd54663.chunk.js} +2 -2
  35. package/dist/public/build/js/{acl.c948c339.chunk.js.map → acl.4cd54663.chunk.js.map} +1 -1
  36. package/dist/public/build/js/{app-navigation.b062662b.chunk.js → app-navigation.13c65573.chunk.js} +2 -2
  37. package/dist/public/build/js/app-navigation.13c65573.chunk.js.map +1 -0
  38. package/dist/public/build/js/chyt.0ee6bfa2.chunk.js +2 -0
  39. package/dist/public/build/js/chyt.0ee6bfa2.chunk.js.map +1 -0
  40. package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js +2 -0
  41. package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js.map +1 -0
  42. package/dist/public/build/js/{components.bbe331cb.chunk.js → components.b39828bc.chunk.js} +2 -2
  43. package/dist/public/build/js/components.b39828bc.chunk.js.map +1 -0
  44. package/dist/public/build/js/job.ea2ba82d.chunk.js +2 -0
  45. package/dist/public/build/js/job.ea2ba82d.chunk.js.map +1 -0
  46. package/dist/public/build/js/main.6375dbc6.js +3 -0
  47. package/dist/public/build/js/main.6375dbc6.js.map +1 -0
  48. package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js +2 -0
  49. package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js.map +1 -0
  50. package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js → navigation-flow.6d67215a.chunk.js} +2 -2
  51. package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js.map → navigation-flow.6d67215a.chunk.js.map} +1 -1
  52. package/dist/public/build/js/navigation.529208de.chunk.js +2 -0
  53. package/dist/public/build/js/navigation.529208de.chunk.js.map +1 -0
  54. package/dist/public/build/js/odin.c4c4ef6f.chunk.js +2 -0
  55. package/dist/public/build/js/odin.c4c4ef6f.chunk.js.map +1 -0
  56. package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js → path-viewer.c091d9f4.chunk.js} +2 -2
  57. package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js.map → path-viewer.c091d9f4.chunk.js.map} +1 -1
  58. package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js → query-navigation.b1574290.chunk.js} +2 -2
  59. package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js.map → query-navigation.b1574290.chunk.js.map} +1 -1
  60. package/dist/public/build/js/{query-results.733b1795.chunk.js → query-results.0a05cc41.chunk.js} +2 -2
  61. package/dist/public/build/js/{query-results.733b1795.chunk.js.map → query-results.0a05cc41.chunk.js.map} +1 -1
  62. package/dist/public/build/js/query-tracker.515069f6.chunk.js +2 -0
  63. package/dist/public/build/js/query-tracker.515069f6.chunk.js.map +1 -0
  64. package/dist/public/build/js/{runtime.481a6d3a.js → runtime.09217c31.js} +2 -2
  65. package/dist/public/build/js/{runtime.481a6d3a.js.map → runtime.09217c31.js.map} +1 -1
  66. package/dist/public/build/js/{scheduling.b70d4627.chunk.js → scheduling.6448eabd.chunk.js} +2 -2
  67. package/dist/public/build/js/{scheduling.b70d4627.chunk.js.map → scheduling.6448eabd.chunk.js.map} +1 -1
  68. package/dist/public/build/js/system.1114aa96.chunk.js +2 -0
  69. package/dist/public/build/js/system.1114aa96.chunk.js.map +1 -0
  70. package/dist/public/build/js/{yt-df-dialog.9ddda260.chunk.js → yt-df-dialog.4ad719bf.chunk.js} +2 -2
  71. package/dist/public/build/js/yt-df-dialog.4ad719bf.chunk.js.map +1 -0
  72. package/dist/public/build/manifest.json +70 -70
  73. package/dist/shared/constants/settings-types.d.ts +1 -0
  74. package/package.json +3 -2
  75. package/dist/public/build/css/job.c7c99207.chunk.css.map +0 -1
  76. package/dist/public/build/css/main.2d3cbfcd.css +0 -10
  77. package/dist/public/build/css/main.2d3cbfcd.css.map +0 -1
  78. package/dist/public/build/css/navigation.0a9042b3.chunk.css +0 -2
  79. package/dist/public/build/css/navigation.0a9042b3.chunk.css.map +0 -1
  80. package/dist/public/build/js/3724.425d01ec.chunk.js +0 -2
  81. package/dist/public/build/js/5177.b4cec253.chunk.js +0 -2
  82. package/dist/public/build/js/5177.b4cec253.chunk.js.map +0 -1
  83. package/dist/public/build/js/6729.da9aa02f.chunk.js +0 -2
  84. package/dist/public/build/js/6729.da9aa02f.chunk.js.map +0 -1
  85. package/dist/public/build/js/accounts.2ba221c2.chunk.js.map +0 -1
  86. package/dist/public/build/js/app-navigation.b062662b.chunk.js.map +0 -1
  87. package/dist/public/build/js/chyt.7f99f87d.chunk.js +0 -2
  88. package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +0 -1
  89. package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js +0 -2
  90. package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js.map +0 -1
  91. package/dist/public/build/js/components.bbe331cb.chunk.js.map +0 -1
  92. package/dist/public/build/js/job.4fc50056.chunk.js +0 -2
  93. package/dist/public/build/js/job.4fc50056.chunk.js.map +0 -1
  94. package/dist/public/build/js/main.7981a440.js +0 -3
  95. package/dist/public/build/js/main.7981a440.js.map +0 -1
  96. package/dist/public/build/js/manage-tokens.286a4da9.chunk.js +0 -2
  97. package/dist/public/build/js/manage-tokens.286a4da9.chunk.js.map +0 -1
  98. package/dist/public/build/js/navigation.d891266d.chunk.js +0 -2
  99. package/dist/public/build/js/navigation.d891266d.chunk.js.map +0 -1
  100. package/dist/public/build/js/odin.df1cfe56.chunk.js +0 -2
  101. package/dist/public/build/js/odin.df1cfe56.chunk.js.map +0 -1
  102. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +0 -2
  103. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +0 -1
  104. package/dist/public/build/js/system.f759d3f0.chunk.js +0 -2
  105. package/dist/public/build/js/system.f759d3f0.chunk.js.map +0 -1
  106. package/dist/public/build/js/yt-df-dialog.9ddda260.chunk.js.map +0 -1
  107. /package/dist/public/build/js/{1879.23423388.chunk.js.LICENSE.txt → 1879.3975650a.chunk.js.LICENSE.txt} +0 -0
  108. /package/dist/public/build/js/{main.7981a440.js.LICENSE.txt → main.6375dbc6.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"js/9558.a6ea64c9.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/attributes-to-filter.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/expanded-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool-child.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overview.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/detailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overviewTable.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/scheduling.ts"],"sourcesContent":["import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport {getSchedulingOperationsLoadingStatus} from '../../../../../store/selectors/scheduling/expanded-pools';\nimport {useSelector} from 'react-redux';\nimport Loader from '../../../../../components/Loader/Loader';\n\nfunction SchedulingOperationsLoader() {\n const loading = useSelector(getSchedulingOperationsLoadingStatus);\n return <Loader visible={loading} />;\n}\n\nexport default React.memo(SchedulingOperationsLoader);\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {createSelector} from 'reselect';\nimport reduce_ from 'lodash/reduce';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../reducers';\nimport {getSchedulingPoolsMapByName} from './scheduling-pools';\n\nexport const getSchedulingAbcFilter = (state: RootState) =>\n state.scheduling.scheduling.abcServiceFilter;\n\nexport const getSchedulingAttributesToFilter = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilter;\nexport const getSchedulingAttributesToFilterParams = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilterParams;\n\nexport const schedulingOverviewHasFilter = (state: RootState) => {\n const abcFilter = getSchedulingAbcFilter(state);\n\n return abcFilter?.id !== undefined;\n};\n\nexport const getSchedulingFilteredPoolNames = createSelector(\n [getSchedulingAttributesToFilter, getSchedulingPoolsMapByName, getSchedulingAbcFilter],\n (attrsToFilter, loadedPools, abcFilter) => {\n if (!attrsToFilter) {\n return undefined;\n }\n\n if (abcFilter?.id === undefined) {\n return undefined;\n }\n\n const res = reduce_(\n attrsToFilter,\n (acc, attrs, key) => {\n if (attrs.abc?.id !== abcFilter?.id) {\n return acc;\n }\n\n acc.add(key);\n return acc;\n },\n new Set<string>(),\n );\n\n forEach_([...res], (poolName) => {\n let name = poolName;\n let item = attrsToFilter[name];\n while (item?.parent && !loadedPools[name]) {\n res.add(item.parent);\n\n name = item.parent;\n item = attrsToFilter[item.parent];\n }\n });\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\n\nexport const getExpandedPoolCypressData = (state: RootState) =>\n state.scheduling.expandedPools.flattenCypressData;\n\nexport const getSchedulingOperations = (state: RootState) =>\n state.scheduling.expandedPools.rawOperations;\nexport const getExpandedPoolsTree = (state: RootState) =>\n state.scheduling.expandedPools.expandedPoolsTree;\nexport const getSchedulingOperationsError = (state: RootState) =>\n state.scheduling.expandedPools.error;\nexport const getSchedulingOperationsLoading = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsLoaded = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsExpandedPools = (state: RootState) =>\n state.scheduling.expandedPools.expandedPools;\nexport const getExpandedPoolsLoadAll = (state: RootState) => state.scheduling.expandedPools.loadAll;\n\nexport const getSchedulingOperationsLoadingStatus = createSelector(\n [getSchedulingOperationsLoading, getSchedulingOperationsLoaded],\n (loading, loaded) => {\n return loading && !loaded;\n },\n);\n","import map_ from 'lodash/map';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport {appendInnerErrors} from '../errors';\n\nconst RESOURCE_LIMIT_MAPPER = {\n user_memory: 'memory',\n};\n\nfunction preparePoolChildResource(data, type, treeResources, resource) {\n const attributes = data.attributes;\n\n if (data.name === ROOT_POOL_NAME) {\n data.resources[resource] = {\n guaranteed: ypath.getNumber(treeResources, '/resource_limits/' + resource),\n usage: ypath.getNumber(treeResources, '/resource_usage/' + resource),\n };\n } else {\n const min = ypath.getNumber(attributes, '/strong_guarantee_resources/' + resource);\n const usage = ypath.getNumber(attributes, '/resource_usage/' + resource);\n const demand = ypath.getNumber(attributes, '/resource_demand/' + resource);\n const guaranteed = ypath.getNumber(\n attributes,\n '/promised_fair_share_resources/' + resource,\n );\n\n const limitResource = RESOURCE_LIMIT_MAPPER[resource] || resource;\n const limit = ypath.getNumber(data.cypressAttributes, '/resource_limits/' + limitResource);\n\n const treeLimit = ypath.getNumber(treeResources, '/resource_limits/' + resource);\n const detailed =\n treeLimit * ypath.getNumber(attributes, '/detailed_fair_share/total/' + limitResource);\n\n data.resources[resource] = {\n min,\n guaranteed,\n usage,\n demand,\n limit,\n detailed,\n };\n }\n\n return data;\n}\n\nexport function updatePoolChild(data, cypressData, type, treeResources) {\n try {\n const attributes = data.attributes;\n const cypressAttributes = ypath.getAttributes(cypressData);\n\n data.cypressAttributes = cypressAttributes;\n data.type = type;\n\n if (data.type === 'pool') {\n if (typeof attributes === 'undefined' && data.parent) {\n console.error(\n 'Pool \"%s\" without attributes inited by \"%s\"',\n data.name,\n data._initedBy,\n );\n }\n\n data.mode = ypath.getValue(attributes, '/mode');\n\n data.leaves = map_(data.leaves, (leaf) => {\n return updatePoolChild(leaf, {}, 'operation', treeResources);\n });\n\n const child_pool_count = ypath.getNumber(attributes, '/child_pool_count');\n if (child_pool_count > 0 && !data.children.length) {\n for (let i = 0; i < child_pool_count; ++i) {\n data.children.push({\n parent: data.name,\n type: 'pool',\n name: `#key_${data.name}_${i}`,\n attributes: {},\n leaves: [],\n incomplete: true,\n });\n }\n }\n\n if (!data.leaves?.length) {\n data.pool_operation_count = ypath.getNumber(\n attributes,\n '/pool_operation_count',\n NaN,\n );\n if (data.pool_operation_count > 0) {\n const emptyOp = updatePoolChild(\n {attributes: {}},\n {},\n 'operation',\n treeResources,\n );\n data.leaves = [];\n for (let i = 0; i < data.pool_operation_count; ++i) {\n data.leaves.push({\n ...emptyOp,\n name: `##fake_operation_${data.name}_${i}`,\n });\n }\n }\n }\n\n // Operations\n data.operationCount = ypath.getNumber(attributes, '/operation_count');\n data.maxOperationCount = ypath.getNumber(attributes, '/max_operation_count');\n data.maxOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_operation_count',\n );\n data.runningOperationCount = ypath.getNumber(attributes, '/running_operation_count');\n data.maxRunningOperationCount = ypath.getNumber(\n attributes,\n '/max_running_operation_count',\n );\n data.maxRunningOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_running_operation_count',\n );\n }\n\n data.id = data.name;\n data.starvation_status = ypath.getValue(attributes, '/starvation_status');\n\n // General\n data.weight = ypath.getNumber(attributes, '/weight');\n data.weightEdited = ypath.getNumber(cypressAttributes, '/weight');\n data.minShareRatio = ypath.getNumber(attributes, '/min_share_ratio');\n data.maxShareRatio = ypath.getNumber(attributes, '/max_share_ratio');\n data.fairShareRatio = ypath.getNumber(attributes, '/fair_share_ratio');\n data.fifoIndex = ypath.getNumber(attributes, '/fifo_index');\n data.usageRatio = ypath.getNumber(attributes, '/usage_ratio');\n data.demandRatio = ypath.getNumber(attributes, '/demand_ratio');\n data.isEphemeral = ypath.getBoolean(attributes, '/is_ephemeral');\n\n data.integralType = ypath.getValue(attributes, '/integral_guarantee_type');\n const userDefinedBurstCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/burst_guarantee_resources/cpu',\n NaN,\n );\n data.burstCPU = ypath.getNumber(\n attributes,\n '/specified_burst_guarantee_resources/cpu',\n userDefinedBurstCPU,\n );\n const userDefinedFlowCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/cpu',\n NaN,\n );\n data.flowCPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/cpu',\n userDefinedFlowCPU,\n );\n const userDefinedFlowGPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/gpu',\n NaN,\n );\n data.flowGPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/gpu',\n userDefinedFlowGPU,\n );\n\n data.accumulated = ypath.getValue(attributes, '/accumulated_resource_ratio_volume');\n data.accumulatedCpu = ypath.getValue(attributes, '/accumulated_resource_volume/cpu');\n data.burstDuration = ypath.getValue(attributes, '/estimated_burst_usage_duration_sec');\n\n const fifoSortParams = map_(\n ypath.getValue(attributes, '/fifo_sort_parameters') ||\n ypath.getValue(cypressAttributes, '/fifo_sort_parameters'),\n (param) => ypath.getValue(param),\n );\n data.fifoSortParams =\n fifoSortParams.length > 0\n ? fifoSortParams\n : ['start_time', 'weight', 'pending_job_count'];\n data.abc = ypath.getValue(attributes, '/abc') || {};\n data.forbidImmediateOperations =\n ypath.getBoolean(cypressAttributes, '/forbid_immediate_operations') || false;\n data.createEphemeralSubpools =\n ypath.getBoolean(cypressAttributes, '/create_ephemeral_subpools') || false;\n\n // Resources\n data.dominantResource = ypath.getValue(attributes, '/dominant_resource');\n\n data.resources = {};\n\n preparePoolChildResource(data, type, treeResources, 'cpu');\n preparePoolChildResource(data, type, treeResources, 'user_memory');\n preparePoolChildResource(data, type, treeResources, 'gpu');\n preparePoolChildResource(data, type, treeResources, 'user_slots');\n\n return data;\n } catch (e) {\n throw appendInnerErrors(e, {\n message: `An error occured while parsing pool \"${data.name}\" data.`,\n });\n }\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {preparePools} from '../../../utils/scheduling/scheduling';\nimport ypath from '../../../common/thor/ypath';\nimport {updatePoolChild} from '../../../utils/scheduling/pool-child';\nimport {\n getExpandedPoolCypressData,\n getExpandedPoolsTree,\n getSchedulingOperations,\n} from './expanded-pools';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumWrapper} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nconst getPoolsRaw = (state: RootState) => state.scheduling.expandedPools.rawPools;\nconst getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\n\nconst getSchedulingTreeOperations = createSelector(\n [getSchedulingOperations, getExpandedPoolsTree, getTree],\n (rawOperations, expandedPoolsTree, tree) => {\n if (tree !== expandedPoolsTree) {\n return EMPTY_OBJECT as typeof rawOperations;\n }\n\n return rawOperations;\n },\n);\n\nconst getOperationsFiltered = createSelector(\n [getPoolsRaw, getSchedulingTreeOperations],\n (rawPools, rawOperations) => {\n return reduce_(\n rawOperations,\n (acc, item, operationId) => {\n if (rawPools[item.pool]) {\n acc[operationId] = item;\n }\n return acc;\n },\n {} as typeof rawOperations,\n );\n },\n);\n\nconst getPoolsPrepared = createSelector(\n [getPoolsRaw, getOperationsFiltered, getExpandedPoolCypressData, getTreeResources, getCluster],\n (rawPools, rawOperations, attributes, treeResources, cluster) => {\n if (isEmpty_(rawPools)) {\n return [];\n }\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n\n return rumId.wrap('prepareData', () => {\n const preparedPools = preparePools(rawPools!, rawOperations);\n return map_(preparedPools, (pool) => {\n const cypressAttributes = ypath.getValue(attributes)[pool.name];\n return updatePoolChild(pool, cypressAttributes, 'pool', treeResources);\n });\n });\n },\n);\n\nexport const getSchedulingPoolsMapByName = createSelector(\n [getPoolsPrepared],\n (pools: Array<PoolInfo>) => {\n return reduce_(\n pools,\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {} as Record<string, PoolInfo>,\n );\n },\n);\n\nexport const getSchedulingPoolsExtraInfo = createSelector(\n [getSchedulingPoolsMapByName],\n (poolsMap) => {\n const root = poolsMap[ROOT_POOL_NAME];\n if (!root) {\n return {};\n }\n\n const res: Record<string, PoolExtraInfo> = {};\n calcChildrenIntegrals(root, res);\n return res;\n },\n);\n\ntype PoolName = string;\n\nfunction calcChildrenIntegrals(pool: PoolInfo, dst: Record<PoolName, PoolExtraInfo>) {\n const {children, name} = pool;\n if (!children?.length) {\n const res = (dst[name] = {\n childrenBurstCPU: 0,\n childrenFlowCPU: 0,\n });\n return res;\n }\n\n const res: PoolExtraInfo = {\n childrenFlowCPU: 0,\n childrenBurstCPU: 0,\n };\n for (let i = 0; i < children.length; ++i) {\n const item = children[i];\n const itemExtraInfo = calcChildrenIntegrals(item, dst);\n\n dst[item.name] = itemExtraInfo;\n\n res.childrenFlowCPU += item.flowCPU || 0 + itemExtraInfo.childrenFlowCPU;\n res.childrenBurstCPU += item.burstCPU || 0 + itemExtraInfo.childrenBurstCPU;\n }\n\n dst[name] = res;\n return res;\n}\n\nexport interface PoolExtraInfo {\n childrenFlowCPU: number;\n childrenBurstCPU: number;\n}\n\nexport interface OperationInfo {\n name: string;\n type: 'operation';\n parent: string;\n attributes: object;\n cypressAttributes: object;\n flowCPU: number;\n burstCPU: number;\n flowGPU: number;\n integralType?: string;\n mode?: string;\n\n operationCount?: number;\n maxOperationCount?: number;\n maxRunningOperationCount?: number;\n\n pool: string;\n}\n\nexport interface PoolInfo extends Omit<OperationInfo, 'type' | 'pool'> {\n type: 'pool';\n incomplete?: boolean;\n children?: Array<PoolInfo>;\n leaves: Array<OperationInfo>;\n isEphemeral?: boolean;\n resources?: PoolResources;\n fifoIndex?: number;\n weight?: number;\n minShareRatio?: number;\n maxShareRatio?: number;\n fairShareRatio?: number;\n usageRatio?: number;\n demandRatio?: number;\n dominantResource?: number;\n runningOperationCount?: number;\n operationCount?: number;\n maxOperationCount?: number;\n childrenBurstCPU?: number;\n childrenFlowCPU?: number;\n accumulated?: number;\n accumulatedCpu?: number;\n burstDuration?: number;\n}\n\nexport type PoolResources = Partial<\n Record<'cpu' | 'gpu' | 'user_memory' | 'user_slots', PoolResourceDetails>\n>;\n\nexport type PoolResourceType = keyof PoolResources;\n\nexport type PoolResourceDetails = {\n min?: number;\n usage?: number;\n limit?: number;\n demand?: number;\n detailed?: number;\n guaranteed?: number;\n};\n\nexport const getPools = createSelector(\n [getPoolsPrepared, getSchedulingPoolsExtraInfo],\n (pools, extras) => {\n const res = map_(pools, (item) => {\n const itemExtra = extras[item.name] || {};\n return Object.assign(item, itemExtra);\n });\n return res;\n },\n);\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../common/hammer';\n\nimport reduce_ from 'lodash/reduce';\n\nfunction getNetworkResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Percent']((resourceUsage / resourceLimit) * 100);\n}\n\nfunction getMemoryResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Bytes'](resourceUsage) + ' / ' + hammer.format['Bytes'](resourceLimit);\n}\n\nfunction getDefaultResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Number'](resourceUsage) + ' / ' + hammer.format['Number'](resourceLimit);\n}\n\nfunction getResourcesText(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n switch (data.type) {\n case 'network':\n return getNetworkResourceText(resourceUsage, resourceLimit);\n case 'user_memory':\n return getMemoryResourceText(resourceUsage, resourceLimit);\n default:\n return getDefaultResourceText(resourceUsage, resourceLimit);\n }\n}\n\nfunction getResourceProgressValue(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n return (resourceUsage / resourceLimit) * 100;\n}\n\nfunction getResourceProgress(data) {\n return {\n text: getResourcesText(data),\n value: getResourceProgressValue(data),\n theme: 'info',\n };\n}\n\nexport function prepareResources(data) {\n const resourceUsage = ypath.getValue(data, '/resource_usage');\n const resourceLimits = ypath.getValue(data, '/resource_limits');\n const resourceTypes = ['cpu', 'user_memory', 'user_slots', 'network', 'gpu'];\n\n return reduce_(\n resourceTypes,\n (res, type) => {\n if (resourceUsage && resourceLimits) {\n const data = {\n type,\n usage: Number(ypath.getValue(resourceUsage[type], '')),\n limit: Number(ypath.getValue(resourceLimits[type], '')),\n };\n const progress = getResourceProgress(data);\n\n res.push({...data, progress});\n }\n return res;\n },\n [],\n );\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport hammer from '../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport {prepareResources} from '../../../utils/scheduling/overview';\nimport {childTableItems} from '../../../utils/scheduling/detailsTable';\nimport {poolsTableItems} from '../../../utils/scheduling/overviewTable';\nimport {\n ROOT_POOL_NAME,\n SCHEDULING_POOL_CHILDREN_TABLE_ID,\n SCHEDULING_POOL_TREE_TABLE_ID,\n} from '../../../constants/scheduling';\n\nimport {\n OperationInfo,\n PoolInfo,\n getPools as getPoolsImpl,\n getSchedulingPoolsMapByName,\n} from './scheduling-pools';\nimport {RootState} from '../../../store/reducers';\nimport {isAbcPoolName, isTopLevelPool} from '../../../utils/scheduling/pool';\nimport {visitTreeItems} from '../../../utils/utils';\nimport {getExpandedPoolsLoadAll, getSchedulingOperationsExpandedPools} from './expanded-pools';\nimport {\n getSchedulingAttributesToFilter,\n getSchedulingFilteredPoolNames,\n} from './attributes-to-filter';\nexport const getPools = getPoolsImpl;\n\nconst getExpandedPoolsIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.expandedPools;\n return !loaded && loading;\n};\n\nexport const getSchedulingIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.scheduling;\n return (!loaded && loading) || getExpandedPoolsIsInitialLoading(state);\n};\n\nexport const getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\nexport const getPoolChildrenFilter = (state: RootState) =>\n state.scheduling.scheduling.poolChildrenFilter;\nexport const getSchedulingTreeState = (state: RootState) => state.scheduling.scheduling.treeState;\nconst getContentModeRaw = (state: RootState) => state.scheduling.scheduling.contentMode;\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nexport const getTrees = (state: RootState) => state.scheduling.scheduling.trees;\n\nexport const getPool = (state: RootState) => state.scheduling.scheduling.pool;\n\nexport const getSchedulingEditItem = (state: RootState) => state.scheduling.scheduling.editItem;\n\nexport const getSortState = (state: RootState) => state.tables[SCHEDULING_POOL_TREE_TABLE_ID];\nexport const getPoolChildrenSortState = (state: RootState) =>\n state.tables[SCHEDULING_POOL_CHILDREN_TABLE_ID];\n\nexport const getPoolsNames = createSelector(\n getSchedulingAttributesToFilter,\n (pools): Array<string> => map_(pools, (_v, name) => name).sort(),\n);\n\nconst DETAILS_CONTENT_MODES = {\n cpu: 'cpu',\n memory: 'memory',\n gpu: 'gpu',\n user_slots: 'user_slots',\n operations: 'operations',\n integral: 'integral',\n};\n\nexport const getContentMode = createSelector([getContentModeRaw], (mode) => {\n return DETAILS_CONTENT_MODES[mode] || DETAILS_CONTENT_MODES.cpu;\n});\n\nexport const getIsRoot = createSelector(getPool, (pool) => pool === ROOT_POOL_NAME);\n\nexport const getTreesSelectItems = createSelector(getTrees, (trees) =>\n map_(trees, (tree) => ({\n value: tree,\n text: hammer.format['Readable'](tree) as string,\n })),\n);\n\nexport const getPoolsSelectItems = createSelector(getPoolsNames, (pools) => {\n const items = map_(pools, (pool) => ({\n value: pool,\n text: pool,\n }));\n\n return items;\n});\n\nexport const getCurrentPool = createSelector([getPool, getPools], (pool, pools) =>\n find_(pools, (item) => item.name === pool),\n);\n\nexport const getPoolIsEphemeral = createSelector([getCurrentPool], (currentPool) => {\n if (currentPool && currentPool.isEphemeral !== undefined) return currentPool.isEphemeral;\n return undefined;\n});\n\nexport const getCurrentPoolChildren = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.children;\n }\n\n return undefined;\n});\n\nexport const getCurrentPoolOperations = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.leaves;\n }\n\n return undefined;\n});\n\nexport const getResources = createSelector(\n [getCurrentPool, getTreeResources],\n (currentPool, resources) => {\n if (currentPool && currentPool.name !== '<Root>') {\n return prepareResources(currentPool.attributes);\n } else if (resources) {\n return prepareResources(resources);\n }\n\n return [];\n },\n);\n\nconst getFilteredTree = createSelector(\n [getCurrentPool, getSchedulingFilteredPoolNames],\n (treeRoot, visiblePools) => {\n if (treeRoot) {\n return hammer.treeList.filterTree(\n treeRoot,\n (pool: {name: string}) => {\n return visiblePools === undefined || visiblePools.has(pool.name);\n },\n true,\n );\n }\n return undefined;\n },\n);\n\nexport const getTableItems = createSelector(\n [getFilteredTree, getSortState],\n (filteredTree, sortState) => {\n if (filteredTree) {\n const isRoot = filteredTree && filteredTree.name === ROOT_POOL_NAME;\n const tree = isRoot ? filteredTree : {children: [filteredTree]};\n const sortedTree = hammer.treeList.sortTree(tree, sortState, poolsTableItems);\n\n return hammer.treeList.flattenTree(sortedTree);\n }\n\n return [];\n },\n);\n\nexport const getSchedulingOverviewMaxDepth = createSelector(\n [getTableItems, getExpandedPoolsLoadAll, getTree, getSchedulingOperationsExpandedPools],\n (items: Array<{level: number; name: string}>, allExpanded, tree, expandedPoolsMap) => {\n if (allExpanded) {\n return reduce_(\n items,\n (acc, item) => {\n const {level = 0} = item || {};\n return acc < level ? level : acc;\n },\n 0,\n );\n }\n\n const expandedPools = expandedPoolsMap[tree];\n if (!expandedPools?.size) {\n return 0;\n }\n\n return reduce_(\n items,\n (acc, item) => {\n if (expandedPools.has(item.name)) {\n return acc < item.level + 1 ? item.level + 1 : acc;\n }\n return acc;\n },\n 0,\n );\n },\n);\n\nconst getPoolChildrenData = createSelector(\n [getCurrentPool, getCurrentPoolChildren, getCurrentPoolOperations],\n (pool, pools, operations = []) => {\n if (pool && pools) {\n return [...pools, ...operations];\n }\n\n return undefined;\n },\n);\n\nconst getFilteredPoolChildren = createSelector(\n [getPoolChildrenData, getPoolChildrenFilter],\n (poolChildrenData, poolChildrenFilter) => {\n return hammer.filter.filter({\n data: poolChildrenData,\n input: poolChildrenFilter,\n factors: ['name'],\n });\n },\n);\n\nexport const getSortedPoolChildren = createSelector(\n [getFilteredPoolChildren, getPoolChildrenSortState, getCurrentPool],\n (filteredPoolChildren, poolChildrenSortState, currentPool) => {\n return hammer.utils.sort(filteredPoolChildren, poolChildrenSortState, childTableItems, {\n addGetParams: [currentPool],\n groupBy: {\n asc: true,\n get(item: PoolInfo | OperationInfo) {\n return item.type === 'operation' ? 0 : 1;\n },\n },\n });\n },\n);\n\nexport const getPollChildrenTableItems = createSelector(\n [getCurrentPool, getSortedPoolChildren],\n (currentPool, sortedPoolChildren) => {\n const extras = [];\n let isChildPool = false;\n if (currentPool && currentPool.name !== ROOT_POOL_NAME) {\n extras.push(currentPool);\n isChildPool = true;\n }\n\n return extras.concat(\n map_(sortedPoolChildren, (item) => {\n return Object.assign({}, item, {isChildPool});\n }),\n );\n },\n);\n\n// The same cluster is ready for bundle's ACL\nconst CLUSTERS_WITHOUT_POOL_ACL = ['locke'];\n\nexport const isPoolAclAllowed = createSelector([getCluster], (cluster) => {\n return CLUSTERS_WITHOUT_POOL_ACL.indexOf(cluster) === -1;\n});\n\nexport const getCurrentPoolPath = createSelector(\n [getPool, getPools, getTree],\n (pool, pools, tree) => {\n return calculatePoolPath(pool, pools, tree);\n },\n);\n\nexport function calculatePoolPath(pool: string, pools: Array<PoolInfo>, tree: string) {\n const prefix = `//sys/pool_trees/${tree}`;\n\n let current = pool;\n const path = [];\n while (current) {\n if (current !== ROOT_POOL_NAME) {\n path.push(current);\n }\n const tmp = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent || '';\n }\n const pathStr = !path.length ? '' : '/' + path.reverse().join('/');\n return `${prefix}${pathStr}`;\n}\n\nexport const getSchedulingTopPoolOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingPoolsMapByName],\n (pool, mapOfPools) => {\n if (isAbcPoolName(pool?.name)) {\n return undefined;\n }\n\n if (isTopLevelPool(pool)) {\n return pool;\n }\n\n let item = pool;\n while (item) {\n const parent = mapOfPools[item.parent];\n if (isAbcPoolName(item.parent)) {\n return item;\n }\n\n if (isTopLevelPool(item)) {\n return item;\n }\n\n item = parent;\n }\n return undefined;\n },\n);\n\nexport const getSchedulingSourcesOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingTopPoolOfEditItem, getSchedulingPoolsMapByName],\n (pool, topPool, mapOfPools): Array<string> => {\n if (!pool?.name || !mapOfPools) {\n return [];\n }\n\n const res: Array<string> = [];\n visitTreeItems(\n topPool,\n (item: PoolInfo) => {\n if (pool.name !== item.name) {\n res.push(item.name);\n }\n },\n {\n isNeedToSkipChildren: (item: PoolInfo) => {\n return item?.name === pool?.name;\n },\n },\n );\n\n return res;\n },\n);\n\nexport const getSchedulingSourcesOfEditItemSkipParent = createSelector(\n [getSchedulingEditItem, getSchedulingSourcesOfEditItem],\n (pool, sources) => {\n if (!pool?.parent) {\n return sources;\n }\n\n return filter_(sources, (item) => item !== pool.parent);\n },\n);\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\nimport type {PoolInfo, PoolResourceType} from '../../store/selectors/scheduling/scheduling-pools';\n\nfunction prepareDetailedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.detailed;\n },\n sort: true,\n caption: 'Abs fair share',\n align: 'right',\n };\n}\n\nfunction prepareLimitColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.limit;\n },\n sort: true,\n sortWithUndefined: true,\n caption: 'Limit',\n align: 'right',\n };\n}\n\nfunction prepareMinResourcesColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.min;\n },\n sort: true,\n caption: 'Strong guar.',\n title: 'Strong guarantee',\n align: 'right',\n };\n}\n\nfunction prepareAbsGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.guaranteed;\n },\n sort: true,\n caption: 'Estimated guar.',\n title: 'Estimated guarantee',\n align: 'right',\n };\n}\n\nfunction prepareRelGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsGuaranteedColumn(resource).get(item)! /\n prepareAbsGuaranteedColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel guaranteed',\n align: 'right',\n };\n}\n\nfunction prepareAbsDemandColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.demand;\n },\n sort: true,\n caption: 'Abs demand',\n align: 'right',\n };\n}\n\nfunction prepareAbsUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.usage;\n },\n sort: true,\n caption: 'Abs usage',\n align: 'right',\n };\n}\n\nfunction prepareRelUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsUsageColumn(resource).get(item)! /\n prepareAbsUsageColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel usage',\n align: 'right',\n };\n}\n\nfunction prepareGuaranteedUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return {\n guaranteed: prepareRelGuaranteedColumn(resource).get(item, currentPool),\n usage: prepareRelUsageColumn(resource).get(item, currentPool),\n };\n },\n caption: 'Usage / Guaranteed',\n align: 'center',\n };\n}\n\nexport const childTableItems = {\n name: {\n sort(item: PoolInfo) {\n return item.name;\n },\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n },\n mode: {\n sort(item: PoolInfo) {\n return item.mode;\n },\n align: 'center',\n },\n FI: {\n sort(item: PoolInfo) {\n return item.fifoIndex;\n },\n align: 'center',\n },\n weight: {\n sort(item: PoolInfo) {\n return item.weight;\n },\n align: 'right',\n },\n min_share: {\n sort(item: PoolInfo) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n max_share: {\n sort(item: PoolInfo) {\n return item.maxShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n get(item: PoolInfo) {\n return item.fairShareRatio;\n },\n sort: true,\n align: 'right',\n },\n usage: {\n get(item: PoolInfo) {\n return item.usageRatio;\n },\n sort: true,\n align: 'right',\n },\n demand: {\n get(item: PoolInfo) {\n return item.demandRatio;\n },\n sort: true,\n align: 'right',\n },\n fair_share_usage: {\n caption: 'Usage / Fair share',\n align: 'left',\n },\n dominant_resource: {\n sort(item: PoolInfo) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n\n resource_detailed_cpu: prepareDetailedColumn('cpu'),\n resource_detailed_memory: prepareDetailedColumn('user_memory'),\n resource_detailed_gpu: prepareDetailedColumn('gpu'),\n resource_detailed_user_slots: prepareDetailedColumn('user_slots'),\n\n resource_limit_cpu: prepareLimitColumn('cpu'),\n resource_limit_memory: prepareLimitColumn('user_memory'),\n resource_limit_gpu: prepareLimitColumn('gpu'),\n resource_limit_user_slots: prepareLimitColumn('user_slots'),\n\n min_resources_cpu: prepareMinResourcesColumn('cpu'),\n min_resources_memory: prepareMinResourcesColumn('user_memory'),\n min_resources_gpu: prepareMinResourcesColumn('gpu'),\n min_resources_user_slots: prepareMinResourcesColumn('user_slots'),\n\n abs_guaranteed_cpu: prepareAbsGuaranteedColumn('cpu'),\n abs_guaranteed_memory: prepareAbsGuaranteedColumn('user_memory'),\n abs_guaranteed_gpu: prepareAbsGuaranteedColumn('gpu'),\n abs_guaranteed_user_slots: prepareAbsGuaranteedColumn('user_slots'),\n\n rel_guaranteed_cpu: prepareRelGuaranteedColumn('cpu'),\n rel_guaranteed_memory: prepareRelGuaranteedColumn('user_memory'),\n rel_guaranteed_gpu: prepareRelGuaranteedColumn('gpu'),\n rel_guaranteed_user_slots: prepareRelGuaranteedColumn('user_slots'),\n\n abs_usage_cpu: prepareAbsUsageColumn('cpu'),\n abs_usage_memory: prepareAbsUsageColumn('user_memory'),\n abs_usage_gpu: prepareAbsUsageColumn('gpu'),\n abs_usage_user_slots: prepareAbsUsageColumn('user_slots'),\n\n abs_demand_cpu: prepareAbsDemandColumn('cpu'),\n abs_demand_memory: prepareAbsDemandColumn('user_memory'),\n abs_demand_gpu: prepareAbsDemandColumn('gpu'),\n abs_demand_user_slots: prepareAbsDemandColumn('user_slots'),\n\n rel_usage_cpu: prepareRelUsageColumn('cpu'),\n rel_usage_memory: prepareRelUsageColumn('user_memory'),\n rel_usage_gpu: prepareRelUsageColumn('gpu'),\n rel_usage_user_slots: prepareRelUsageColumn('user_slots'),\n\n guaranteed_usage_cpu: prepareGuaranteedUsageColumn('cpu'),\n guaranteed_usage_memory: prepareGuaranteedUsageColumn('user_memory'),\n guaranteed_usage_gpu: prepareGuaranteedUsageColumn('gpu'),\n guaranteed_usage_user_slots: prepareGuaranteedUsageColumn('user_slots'),\n\n operation_overview: {\n get(item: PoolInfo) {\n return [item.operationCount, item.runningOperationCount];\n },\n caption: 'Operations',\n sort: true,\n align: 'right',\n },\n operation_count: {\n get(item: PoolInfo) {\n return item.operationCount;\n },\n sort: true,\n align: 'right',\n },\n max_operation_count: {\n get(item: PoolInfo) {\n return item.maxOperationCount;\n },\n sort: true,\n align: 'right',\n },\n operation_progress: {\n get(item: PoolInfo) {\n return item.operationCount! / item.maxOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.operationCount)} / ${format.Number(\n item.maxOperationCount,\n )}`;\n },\n caption: 'Total operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n running_operation_count: {\n get(item: PoolInfo) {\n return item.runningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n max_running_operation_count: {\n get(item: PoolInfo) {\n return item.maxRunningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n running_operation_progress: {\n get(item: PoolInfo) {\n return item.runningOperationCount! / item.maxRunningOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.runningOperationCount)} / ${format.Number(\n item.maxRunningOperationCount,\n )}`;\n },\n caption: 'Running operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n\n integral_type: {\n get(item: PoolInfo) {\n const res = item.integralType;\n return res === 'none' ? undefined : res;\n },\n caption: 'Guarantee type',\n sort: true,\n align: 'right',\n sortWithUndefined: true,\n },\n burst_cpu: {\n get(item: PoolInfo) {\n return item.burstCPU;\n },\n sort(item: PoolInfo) {\n const res = item.burstCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Burst CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n flow_cpu: {\n get(item: PoolInfo) {\n return item.flowCPU;\n },\n sort(item: PoolInfo) {\n const res = item.flowCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Flow CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n children_burst_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenBurstCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's burst CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n children_flow_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenFlowCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's flow CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n accumulated: {\n get(item: PoolInfo) {\n return item.accumulated;\n },\n caption: 'Acc ratio volume',\n sortWithUndefined: true,\n sort: true,\n align: 'right',\n },\n accumulated_cpu: {\n get(item: PoolInfo) {\n return item.accumulatedCpu;\n },\n caption: 'Acc CPU volume',\n sort: true,\n align: 'right',\n },\n burst_duration: {\n get(item: PoolInfo) {\n return item.burstDuration;\n },\n caption: 'Est burst usage duration ',\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import React from 'react';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\n\nexport const poolsTableItems = {\n type: {\n caption: '',\n align: 'center',\n },\n name: {\n sort: true,\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n get(item) {\n return item.name;\n },\n },\n mode: {\n sort: true,\n align: 'center',\n get(item) {\n return item.mode;\n },\n },\n FI: {\n sort: true,\n align: 'right',\n title: 'FIFO Index',\n get(item) {\n return item.fifoIndex;\n },\n },\n weight: {\n sort: true,\n align: 'right',\n title: 'Effective weight',\n get(item) {\n return item.weight;\n },\n },\n operation_overview: {\n caption: 'Operations',\n sort: true,\n align: 'center',\n get(item) {\n return [item.operationCount, item.runningOperationCount];\n },\n },\n dominant_resource: {\n sort(item) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n min_share: {\n caption: 'Guarantee',\n title: 'Effective dominant strong guarantee share',\n sort(item) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n sort: true,\n title: 'Dominant fair share',\n align: 'right',\n get(item) {\n return item.fairShareRatio;\n },\n },\n usage: {\n sort: true,\n title: 'Dominant usage share',\n align: 'right',\n get(item) {\n return item.usageRatio;\n },\n },\n demand: {\n sort: true,\n title: 'Dominant demand share',\n align: 'right',\n get(item) {\n return item.demandRatio;\n },\n },\n fair_share_usage: {\n sort: true,\n caption: 'Usage / Fair share',\n align: 'center',\n sortWithUndefined: true,\n get(item) {\n const {fairShareRatio, usageRatio} = item;\n const x = Number(usageRatio) / Number(fairShareRatio);\n if (isNaN(usageRatio) || isNaN(fairShareRatio) || isNaN(x)) {\n return undefined;\n }\n return x;\n },\n },\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\n\nexport function isAbcPoolName(name?: string) {\n return name?.startsWith('abc:');\n}\n\nexport function isTopLevelPool(pool?: PoolInfo) {\n const {parent} = pool || {};\n\n return parent === ROOT_POOL_NAME;\n}\n","import find_ from 'lodash/find';\nimport indexOf_ from 'lodash/indexOf';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {OperationInfo, PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\nimport {attachTreeLeaves, prepareTree} from '../../common/hammer/tree-list';\n\nfunction getPool(pools: Array<PoolInfo>, name: string) {\n return find_(pools, (pool) => pool.name === name);\n}\n\nexport function prepareTrees(trees: Array<unknown>) {\n return map_(trees, (tree) => ypath.getValue(tree, '')).sort();\n}\n\nexport function prepareCurrentTree(defaultTree: unknown, trees: Array<string>, tree: string) {\n return tree !== '' && trees.indexOf(tree) !== -1\n ? tree\n : ypath.getValue(defaultTree, '') || trees[0];\n}\n\nexport function preparePools(\n pools: Record<string, PoolInfo>,\n operations: Record<string, OperationInfo>,\n) {\n const treeNodesMap = prepareTree<PoolInfo, OperationInfo>(pools, (entry: PoolInfo) =>\n ypath.getValue(entry, '/parent'),\n );\n\n attachTreeLeaves(treeNodesMap, operations, (operation: OperationInfo) =>\n ypath.getValue(operation, '/pool'),\n );\n\n return map_(treeNodesMap);\n}\n\nexport function computePathItems(pools: Array<PoolInfo>, name: string) {\n let pool: PoolInfo | undefined =\n getPool(pools, name) || ({parent: ROOT_POOL_NAME, name} as PoolInfo);\n const pathItems = [];\n\n // Unknown pool or dynamically created pool\n while (pool) {\n pathItems.unshift(pool.name);\n\n pool = getPool(pools, pool.parent);\n }\n\n return pathItems;\n}\n\nexport function computePoolPath(pool: PoolInfo, pools: Array<PoolInfo>) {\n const partitions = [pool.name];\n let parent: string | undefined = pool.parent;\n\n while (parent && parent !== ROOT_POOL_NAME) {\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const parentPool = find_(pools, (item) => item.name === parent);\n partitions.unshift(parentPool?.name!);\n parent = parentPool?.parent;\n }\n\n return partitions.join('/');\n}\n\n/* eslint-disable prefer-const */\nexport function flattenAttributes(obj: any) {\n const toReturn: any = {};\n const object = ypath.getValue(obj);\n\n for (let i in object) {\n if (!Object.hasOwnProperty.call(object, i)) {\n continue;\n }\n\n const innerObject = ypath.getValue(object[i]);\n if (\n typeof innerObject === 'object' &&\n !Object.is(innerObject, null) &&\n Object.keys(innerObject).length > 0\n ) {\n toReturn[i] = object[i];\n\n const flatObject = flattenAttributes(object[i]);\n for (let x in flatObject) {\n if (!Object.hasOwnProperty.call(flatObject, x)) {\n continue;\n }\n\n toReturn[x] = flatObject[x];\n }\n } else {\n toReturn[i] = object[i];\n }\n }\n\n return toReturn;\n}\n\nfunction getResourceLimit(pool: PoolInfo | undefined, limitKey: string): number | '' {\n const value = Number(ypath.getValue(pool, `/cypressAttributes/resource_limits/${limitKey}`));\n return isNaN(value) ? '' : value;\n}\n\nfunction prepareValueDetails(pool: PoolInfo | undefined, path: string) {\n if (!pool) {\n return {};\n }\n\n const value = Number(ypath.getValue(pool, path));\n const childrenSum = prepareMinGuaranteed(pool, path);\n\n return {\n value: isNaN(value) ? undefined : value,\n childrenSum: isNaN(childrenSum!) ? undefined : childrenSum,\n };\n}\n\nfunction prepareMinGuaranteed(pool?: PoolInfo, path = '') {\n const res = reduce_(\n pool?.children,\n (sum, item) => {\n const tmp = Number(ypath.getValue(item, path) || 0);\n return isNaN(tmp) ? sum : tmp + firstValidNumber(sum, 0)!;\n },\n NaN,\n );\n return isNaN(res) ? undefined : res;\n}\n\nfunction firstValidNumber(...args: number[]) {\n for (let i = 0; i < args.length; ++i) {\n if (!isNaN(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nexport const INTEGRAL_GUARANTEES_PREFIX = 'integral_guarantees/';\n\nexport const POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR = {\n guaranteeType: INTEGRAL_GUARANTEES_PREFIX + 'guarantee_type',\n burstCpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/cpu',\n burstRam: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/memory',\n burstGpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/gpu',\n flowCpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/cpu',\n flowRam: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/memory',\n flowGpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/gpu',\n};\n\nexport const POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE = {\n cpuStrong: 'strong_guarantee_resources/cpu',\n gpuStrong: 'strong_guarantee_resources/gpu',\n memoryStrong: 'strong_guarantee_resources/memory',\n //userSlotsStrong: 'strong_guarantee_resources/user_slots',\n};\n\nexport const POOL_GENERAL_TYPE_TO_ATTRIBUTE = {\n maxOperationCount: 'max_operation_count',\n maxRunningOperationCount: 'max_running_operation_count',\n};\n\nexport const POOL_RESOURCE_TYPE_TO_ATTRIBUTE = {\n ...POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n ...POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n ...POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n};\n\nexport type PoolStrongResourceType = keyof typeof POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE;\nexport type PoolIntegralResourceType = keyof typeof POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR;\nexport type PoolGeneralResourceType = keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\nexport type PoolResourceType = keyof typeof POOL_RESOURCE_TYPE_TO_ATTRIBUTE;\n\nexport function getPoolResourceInfo(pool: PoolInfo, type: PoolResourceType) {\n const path = '/cypressAttributes/' + POOL_RESOURCE_TYPE_TO_ATTRIBUTE[type];\n return prepareValueDetails(pool, path);\n}\n\nexport interface InitialPoolResourceInfo {\n limit?: number;\n source?: string;\n}\n\nexport function getPoolResourceInitialValue(\n pool: PoolInfo | undefined,\n type: PoolResourceType,\n allowSource: boolean,\n): InitialPoolResourceInfo {\n if (!pool) {\n return {};\n }\n const {value} = getPoolResourceInfo(pool, type);\n return {\n limit: value,\n source: allowSource ? pool.parent : undefined,\n };\n}\n\nexport function getInitialValues(editItem: PoolInfo | undefined, allowedSources: Array<string>) {\n const slug = ypath.getValue(editItem, '/abc/slug');\n\n const allowSource = -1 !== indexOf_(allowedSources, editItem?.parent);\n\n return {\n general: {\n name: editItem?.name,\n abcService: slug\n ? {\n key: slug,\n value: slug,\n title: ypath.getValue(editItem, '/abc/name'),\n }\n : undefined,\n parent: editItem?.parent,\n mode: editItem?.mode,\n weight: ypath.getNumber(editItem, '/cypressAttributes/weight'),\n maxOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxOperationCount', allowSource),\n {source: undefined},\n ),\n maxRunningOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxRunningOperationCount', allowSource),\n {source: undefined},\n ),\n },\n resourceGuarantee: {\n cpuStrong: getPoolResourceInitialValue(editItem, 'cpuStrong', allowSource),\n gpuStrong: getPoolResourceInitialValue(editItem, 'gpuStrong', allowSource),\n memoryStrong: getPoolResourceInitialValue(editItem, 'memoryStrong', allowSource),\n //userSlotsStrong: getPoolResourceInitialValue(editItem, 'userSlotsStrong', allowSource),\n },\n integralGuarantee: {\n guaranteeType:\n ypath.getValue(\n editItem,\n `/cypressAttributes/${POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR.guaranteeType}`,\n ) || 'none',\n burstCpu: getPoolResourceInitialValue(editItem, 'burstCpu', allowSource),\n burstRam: getPoolResourceInitialValue(editItem, 'burstRam', allowSource),\n burstGpu: getPoolResourceInitialValue(editItem, 'burstGpu', allowSource),\n flowCpu: getPoolResourceInitialValue(editItem, 'flowCpu', allowSource),\n flowRam: getPoolResourceInitialValue(editItem, 'flowRam', allowSource),\n flowGpu: getPoolResourceInitialValue(editItem, 'flowGpu', allowSource),\n },\n resourceLimits: {\n cpu: getResourceLimit(editItem, 'cpu'),\n gpu: getResourceLimit(editItem, 'gpu'),\n memory: getResourceLimit(editItem, 'memory'),\n userSlots: getResourceLimit(editItem, 'user_slots'),\n },\n otherSettings: {\n forbidImmediateOperations: ypath.getBoolean(editItem, '/forbidImmediateOperations'),\n fifoSortParams: ypath.getValue(editItem, '/fifoSortParams'),\n createEphemeralSubpools: ypath.getBoolean(editItem, '/createEphemeralSubpools'),\n },\n };\n}\n"],"names":["renderText","text","settings","arguments","length","undefined","className","block","mix","elem","_objectSpread","mods","textProps","asHTML","props","dangerouslySetInnerHTML","__html","children","unipika","decode","String","prepareTextProps","title","_jsx","printColumnAsTimeDurationWithMs","item","columnName","column","this","getColumn","hammer","format","get","printColumnAsReadableField","printColumnAsTime","value","ColumnAsTime","_ref","printColumnAsError","error","_typeof","Link","theme","onClick","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","key","wrapRenderMethods","SchedulingOperationsLoader","loading","useSelector","getSchedulingOperationsLoadingStatus","Loader","visible","React","getTransaction","state","navigation","transaction","getAttributes","attributes","getAttributesWithTypes","attributesWithTypes","getLoadState","loadState","getError","getRawPath","path","getIdmSupport","isIdmSupported","getType","createSelector","type","getPath","getNavigationDefaultPath","rawPath","defaultPath","getAttributesPath","navigationPath","isNavigationFinalLoadState","isFinalLoadingStatus","getParsedPath","ypath","create","ex","console","getActualPath","checkIsTrash","startsWith","getSchedulingAbcFilter","scheduling","abcServiceFilter","getSchedulingAttributesToFilter","attributesToFilter","getSchedulingAttributesToFilterParams","attributesToFilterParams","schedulingOverviewHasFilter","abcFilter","id","getSchedulingFilteredPoolNames","getSchedulingPoolsMapByName","attrsToFilter","loadedPools","res","reduce_","acc","attrs","_attrs$abc","abc","Set","forEach_","_toConsumableArray","poolName","name","_item","parent","getExpandedPoolCypressData","expandedPools","flattenCypressData","getSchedulingOperations","rawOperations","getExpandedPoolsTree","expandedPoolsTree","getSchedulingOperationsError","getSchedulingOperationsExpandedPools","getExpandedPoolsLoadAll","loadAll","loaded","RESOURCE_LIMIT_MAPPER","user_memory","preparePoolChildResource","data","treeResources","resource","ROOT_POOL_NAME","resources","guaranteed","usage","min","demand","limitResource","limit","cypressAttributes","detailed","updatePoolChild","cypressData","_data$leaves","_initedBy","mode","getValue","leaves","map_","leaf","child_pool_count","i","push","concat","incomplete","pool_operation_count","NaN","emptyOp","operationCount","maxOperationCount","maxOperationCountEdited","runningOperationCount","maxRunningOperationCount","maxRunningOperationCountEdited","starvation_status","weight","weightEdited","minShareRatio","maxShareRatio","fairShareRatio","fifoIndex","usageRatio","demandRatio","isEphemeral","getBoolean","integralType","userDefinedBurstCPU","burstCPU","userDefinedFlowCPU","flowCPU","userDefinedFlowGPU","flowGPU","accumulated","accumulatedCpu","burstDuration","fifoSortParams","param","forbidImmediateOperations","createEphemeralSubpools","dominantResource","e","appendInnerErrors","message","getPoolsRaw","rawPools","getSchedulingTreeOperations","tree","EMPTY_OBJECT","getOperationsFiltered","operationId","pool","getPoolsPrepared","getCluster","cluster","isEmpty_","RumWrapper","RumMeasureTypes","SCHEDULING","wrap","preparedPools","preparePools","pools","getSchedulingPoolsExtraInfo","poolsMap","root","calcChildrenIntegrals","dst","childrenBurstCPU","childrenFlowCPU","itemExtraInfo","getPools","extras","itemExtra","assign","getResourcesText","resourceUsage","resourceLimit","getNetworkResourceText","getMemoryResourceText","getDefaultResourceText","getResourceProgressValue","prepareResources","resourceLimits","Number","progress","getResourceProgress","getPoolsImpl","getSchedulingIsInitialLoading","_state$scheduling$sch","_state$scheduling$exp","getExpandedPoolsIsInitialLoading","getTreeResources","getPoolChildrenFilter","poolChildrenFilter","getSchedulingTreeState","treeState","getTree","getPool","getSchedulingEditItem","editItem","getPoolsNames","_v","sort","DETAILS_CONTENT_MODES","cpu","memory","gpu","user_slots","operations","integral","getContentMode","contentMode","getIsRoot","getTreesSelectItems","trees","getPoolsSelectItems","getCurrentPool","find_","getPoolIsEphemeral","currentPool","getCurrentPoolChildren","getCurrentPoolOperations","getResources","getFilteredTree","treeRoot","visiblePools","treeList","filterTree","has","getTableItems","tables","SCHEDULING_POOL_TREE_TABLE_ID","filteredTree","sortState","sortedTree","sortTree","poolsTableItems","flattenTree","getSchedulingOverviewMaxDepth","items","allExpanded","expandedPoolsMap","_ref$level","level","size","getPoolChildrenData","getFilteredPoolChildren","poolChildrenData","filter","input","factors","getSortedPoolChildren","SCHEDULING_POOL_CHILDREN_TABLE_ID","filteredPoolChildren","poolChildrenSortState","utils","childTableItems","addGetParams","groupBy","asc","getPollChildrenTableItems","sortedPoolChildren","isChildPool","CLUSTERS_WITHOUT_POOL_ACL","isPoolAclAllowed","indexOf","getCurrentPoolPath","calculatePoolPath","prefix","current","_loop","tmp","_ref3","pathStr","reverse","join","getSchedulingTopPoolOfEditItem","mapOfPools","isAbcPoolName","isTopLevelPool","getSchedulingSourcesOfEditItem","topPool","visitTreeItems","isNeedToSkipChildren","getSchedulingSourcesOfEditItemSkipParent","sources","filter_","prepareDetailedColumn","_item$resources","caption","align","prepareLimitColumn","_item$resources2","sortWithUndefined","prepareMinResourcesColumn","_item$resources3","prepareAbsGuaranteedColumn","_item$resources4","prepareRelGuaranteedColumn","prepareAbsDemandColumn","_item$resources5","prepareAbsUsageColumn","_item$resources6","prepareRelUsageColumn","prepareGuaranteedUsageColumn","captionTail","FI","min_share","max_share","fair_share","fair_share_usage","dominant_resource","resource_detailed_cpu","resource_detailed_memory","resource_detailed_gpu","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","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_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","operation_overview","operation_count","max_operation_count","operation_progress","running_operation_count","max_running_operation_count","running_operation_progress","integral_type","burst_cpu","isNaN","flow_cpu","children_burst_cpu","children_flow_cpu","accumulated_cpu","burst_duration","actions","x","prepareTrees","prepareCurrentTree","defaultTree","treeNodesMap","prepareTree","entry","attachTreeLeaves","operation","computePoolPath","partitions","parentPool","unshift","flattenAttributes","obj","toReturn","object","hasOwnProperty","call","innerObject","is","flatObject","getResourceLimit","limitKey","INTEGRAL_GUARANTEES_PREFIX","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","guaranteeType","burstCpu","burstRam","burstGpu","flowCpu","flowRam","flowGpu","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","cpuStrong","gpuStrong","memoryStrong","POOL_GENERAL_TYPE_TO_ATTRIBUTE","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","getPoolResourceInfo","childrenSum","sum","_len","args","Array","_key","firstValidNumber","prepareMinGuaranteed","prepareValueDetails","getPoolResourceInitialValue","allowSource","source","getInitialValues","allowedSources","slug","indexOf_","general","abcService","resourceGuarantee","integralGuarantee","userSlots","otherSettings"],"sourceRoot":""}
1
+ {"version":3,"file":"js/9558.6a4bf9a9.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/attributes-to-filter.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/expanded-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool-child.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overview.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/detailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overviewTable.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/scheduling.ts"],"sourcesContent":["import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport {getSchedulingOperationsLoadingStatus} from '../../../../../store/selectors/scheduling/expanded-pools';\nimport {useSelector} from 'react-redux';\nimport Loader from '../../../../../components/Loader/Loader';\n\nfunction SchedulingOperationsLoader() {\n const loading = useSelector(getSchedulingOperationsLoadingStatus);\n return <Loader visible={loading} />;\n}\n\nexport default React.memo(SchedulingOperationsLoader);\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {createSelector} from 'reselect';\nimport reduce_ from 'lodash/reduce';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../reducers';\nimport {getSchedulingPoolsMapByName} from './scheduling-pools';\n\nexport const getSchedulingAbcFilter = (state: RootState) =>\n state.scheduling.scheduling.abcServiceFilter;\n\nexport const getSchedulingAttributesToFilter = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilter;\nexport const getSchedulingAttributesToFilterParams = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilterParams;\n\nexport const schedulingOverviewHasFilter = (state: RootState) => {\n const abcFilter = getSchedulingAbcFilter(state);\n\n return abcFilter?.id !== undefined;\n};\n\nexport const getSchedulingFilteredPoolNames = createSelector(\n [getSchedulingAttributesToFilter, getSchedulingPoolsMapByName, getSchedulingAbcFilter],\n (attrsToFilter, loadedPools, abcFilter) => {\n if (!attrsToFilter) {\n return undefined;\n }\n\n if (abcFilter?.id === undefined) {\n return undefined;\n }\n\n const res = reduce_(\n attrsToFilter,\n (acc, attrs, key) => {\n if (attrs.abc?.id !== abcFilter?.id) {\n return acc;\n }\n\n acc.add(key);\n return acc;\n },\n new Set<string>(),\n );\n\n forEach_([...res], (poolName) => {\n let name = poolName;\n let item = attrsToFilter[name];\n while (item?.parent && !loadedPools[name]) {\n res.add(item.parent);\n\n name = item.parent;\n item = attrsToFilter[item.parent];\n }\n });\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\n\nexport const getExpandedPoolCypressData = (state: RootState) =>\n state.scheduling.expandedPools.flattenCypressData;\n\nexport const getSchedulingOperations = (state: RootState) =>\n state.scheduling.expandedPools.rawOperations;\nexport const getExpandedPoolsTree = (state: RootState) =>\n state.scheduling.expandedPools.expandedPoolsTree;\nexport const getSchedulingOperationsError = (state: RootState) =>\n state.scheduling.expandedPools.error;\nexport const getSchedulingOperationsLoading = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsLoaded = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsExpandedPools = (state: RootState) =>\n state.scheduling.expandedPools.expandedPools;\nexport const getExpandedPoolsLoadAll = (state: RootState) => state.scheduling.expandedPools.loadAll;\n\nexport const getSchedulingOperationsLoadingStatus = createSelector(\n [getSchedulingOperationsLoading, getSchedulingOperationsLoaded],\n (loading, loaded) => {\n return loading && !loaded;\n },\n);\n","import map_ from 'lodash/map';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport {appendInnerErrors} from '../errors';\n\nconst RESOURCE_LIMIT_MAPPER = {\n user_memory: 'memory',\n};\n\nfunction preparePoolChildResource(data, type, treeResources, resource) {\n const attributes = data.attributes;\n\n if (data.name === ROOT_POOL_NAME) {\n data.resources[resource] = {\n guaranteed: ypath.getNumber(treeResources, '/resource_limits/' + resource),\n usage: ypath.getNumber(treeResources, '/resource_usage/' + resource),\n };\n } else {\n const min = ypath.getNumber(attributes, '/strong_guarantee_resources/' + resource);\n const usage = ypath.getNumber(attributes, '/resource_usage/' + resource);\n const demand = ypath.getNumber(attributes, '/resource_demand/' + resource);\n const guaranteed = ypath.getNumber(\n attributes,\n '/promised_fair_share_resources/' + resource,\n );\n\n const limitResource = RESOURCE_LIMIT_MAPPER[resource] || resource;\n const limit = ypath.getNumber(data.cypressAttributes, '/resource_limits/' + limitResource);\n\n const treeLimit = ypath.getNumber(treeResources, '/resource_limits/' + resource);\n const detailed =\n treeLimit * ypath.getNumber(attributes, '/detailed_fair_share/total/' + limitResource);\n\n data.resources[resource] = {\n min,\n guaranteed,\n usage,\n demand,\n limit,\n detailed,\n };\n }\n\n return data;\n}\n\nexport function updatePoolChild(data, cypressData, type, treeResources) {\n try {\n const attributes = data.attributes;\n const cypressAttributes = ypath.getAttributes(cypressData);\n\n data.cypressAttributes = cypressAttributes;\n data.type = type;\n\n if (data.type === 'pool') {\n if (typeof attributes === 'undefined' && data.parent) {\n console.error(\n 'Pool \"%s\" without attributes inited by \"%s\"',\n data.name,\n data._initedBy,\n );\n }\n\n data.mode = ypath.getValue(attributes, '/mode');\n\n data.leaves = map_(data.leaves, (leaf) => {\n return updatePoolChild(leaf, {}, 'operation', treeResources);\n });\n\n const child_pool_count = ypath.getNumber(attributes, '/child_pool_count');\n if (child_pool_count > 0 && !data.children.length) {\n for (let i = 0; i < child_pool_count; ++i) {\n data.children.push({\n parent: data.name,\n type: 'pool',\n name: `#key_${data.name}_${i}`,\n attributes: {},\n leaves: [],\n incomplete: true,\n });\n }\n }\n\n if (!data.leaves?.length) {\n data.pool_operation_count = ypath.getNumber(\n attributes,\n '/pool_operation_count',\n NaN,\n );\n if (data.pool_operation_count > 0) {\n const emptyOp = updatePoolChild(\n {attributes: {}},\n {},\n 'operation',\n treeResources,\n );\n data.leaves = [];\n for (let i = 0; i < data.pool_operation_count; ++i) {\n data.leaves.push({\n ...emptyOp,\n name: `##fake_operation_${data.name}_${i}`,\n });\n }\n }\n }\n\n // Operations\n data.operationCount = ypath.getNumber(attributes, '/operation_count');\n data.maxOperationCount = ypath.getNumber(attributes, '/max_operation_count');\n data.maxOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_operation_count',\n );\n data.runningOperationCount = ypath.getNumber(attributes, '/running_operation_count');\n data.maxRunningOperationCount = ypath.getNumber(\n attributes,\n '/max_running_operation_count',\n );\n data.maxRunningOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_running_operation_count',\n );\n }\n\n data.id = data.name;\n data.starvation_status = ypath.getValue(attributes, '/starvation_status');\n\n // General\n data.weight = ypath.getNumber(attributes, '/weight');\n data.weightEdited = ypath.getNumber(cypressAttributes, '/weight');\n data.minShareRatio = ypath.getNumber(attributes, '/min_share_ratio');\n data.maxShareRatio = ypath.getNumber(attributes, '/max_share_ratio');\n data.fairShareRatio = ypath.getNumber(attributes, '/fair_share_ratio');\n data.fifoIndex = ypath.getNumber(attributes, '/fifo_index');\n data.usageRatio = ypath.getNumber(attributes, '/usage_ratio');\n data.demandRatio = ypath.getNumber(attributes, '/demand_ratio');\n data.isEphemeral = ypath.getBoolean(attributes, '/is_ephemeral');\n\n data.integralType = ypath.getValue(attributes, '/integral_guarantee_type');\n const userDefinedBurstCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/burst_guarantee_resources/cpu',\n NaN,\n );\n data.burstCPU = ypath.getNumber(\n attributes,\n '/specified_burst_guarantee_resources/cpu',\n userDefinedBurstCPU,\n );\n const userDefinedFlowCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/cpu',\n NaN,\n );\n data.flowCPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/cpu',\n userDefinedFlowCPU,\n );\n const userDefinedFlowGPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/gpu',\n NaN,\n );\n data.flowGPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/gpu',\n userDefinedFlowGPU,\n );\n\n data.accumulated = ypath.getValue(attributes, '/accumulated_resource_ratio_volume');\n data.accumulatedCpu = ypath.getValue(attributes, '/accumulated_resource_volume/cpu');\n data.burstDuration = ypath.getValue(attributes, '/estimated_burst_usage_duration_sec');\n\n const fifoSortParams = map_(\n ypath.getValue(attributes, '/fifo_sort_parameters') ||\n ypath.getValue(cypressAttributes, '/fifo_sort_parameters'),\n (param) => ypath.getValue(param),\n );\n data.fifoSortParams =\n fifoSortParams.length > 0\n ? fifoSortParams\n : ['start_time', 'weight', 'pending_job_count'];\n data.abc = ypath.getValue(attributes, '/abc') || {};\n data.forbidImmediateOperations =\n ypath.getBoolean(cypressAttributes, '/forbid_immediate_operations') || false;\n data.createEphemeralSubpools =\n ypath.getBoolean(cypressAttributes, '/create_ephemeral_subpools') || false;\n\n // Resources\n data.dominantResource = ypath.getValue(attributes, '/dominant_resource');\n\n data.resources = {};\n\n preparePoolChildResource(data, type, treeResources, 'cpu');\n preparePoolChildResource(data, type, treeResources, 'user_memory');\n preparePoolChildResource(data, type, treeResources, 'gpu');\n preparePoolChildResource(data, type, treeResources, 'user_slots');\n\n return data;\n } catch (e) {\n throw appendInnerErrors(e, {\n message: `An error occured while parsing pool \"${data.name}\" data.`,\n });\n }\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {preparePools} from '../../../utils/scheduling/scheduling';\nimport ypath from '../../../common/thor/ypath';\nimport {updatePoolChild} from '../../../utils/scheduling/pool-child';\nimport {\n getExpandedPoolCypressData,\n getExpandedPoolsTree,\n getSchedulingOperations,\n} from './expanded-pools';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumWrapper} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nconst getPoolsRaw = (state: RootState) => state.scheduling.expandedPools.rawPools;\nconst getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\n\nconst getSchedulingTreeOperations = createSelector(\n [getSchedulingOperations, getExpandedPoolsTree, getTree],\n (rawOperations, expandedPoolsTree, tree) => {\n if (tree !== expandedPoolsTree) {\n return EMPTY_OBJECT as typeof rawOperations;\n }\n\n return rawOperations;\n },\n);\n\nconst getOperationsFiltered = createSelector(\n [getPoolsRaw, getSchedulingTreeOperations],\n (rawPools, rawOperations) => {\n return reduce_(\n rawOperations,\n (acc, item, operationId) => {\n if (rawPools[item.pool]) {\n acc[operationId] = item;\n }\n return acc;\n },\n {} as typeof rawOperations,\n );\n },\n);\n\nconst getPoolsPrepared = createSelector(\n [getPoolsRaw, getOperationsFiltered, getExpandedPoolCypressData, getTreeResources, getCluster],\n (rawPools, rawOperations, attributes, treeResources, cluster) => {\n if (isEmpty_(rawPools)) {\n return [];\n }\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n\n return rumId.wrap('prepareData', () => {\n const preparedPools = preparePools(rawPools!, rawOperations);\n return map_(preparedPools, (pool) => {\n const cypressAttributes = ypath.getValue(attributes)[pool.name];\n return updatePoolChild(pool, cypressAttributes, 'pool', treeResources);\n });\n });\n },\n);\n\nexport const getSchedulingPoolsMapByName = createSelector(\n [getPoolsPrepared],\n (pools: Array<PoolInfo>) => {\n return reduce_(\n pools,\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {} as Record<string, PoolInfo>,\n );\n },\n);\n\nexport const getSchedulingPoolsExtraInfo = createSelector(\n [getSchedulingPoolsMapByName],\n (poolsMap) => {\n const root = poolsMap[ROOT_POOL_NAME];\n if (!root) {\n return {};\n }\n\n const res: Record<string, PoolExtraInfo> = {};\n calcChildrenIntegrals(root, res);\n return res;\n },\n);\n\ntype PoolName = string;\n\nfunction calcChildrenIntegrals(pool: PoolInfo, dst: Record<PoolName, PoolExtraInfo>) {\n const {children, name} = pool;\n if (!children?.length) {\n const res = (dst[name] = {\n childrenBurstCPU: 0,\n childrenFlowCPU: 0,\n });\n return res;\n }\n\n const res: PoolExtraInfo = {\n childrenFlowCPU: 0,\n childrenBurstCPU: 0,\n };\n for (let i = 0; i < children.length; ++i) {\n const item = children[i];\n const itemExtraInfo = calcChildrenIntegrals(item, dst);\n\n dst[item.name] = itemExtraInfo;\n\n res.childrenFlowCPU += item.flowCPU || 0 + itemExtraInfo.childrenFlowCPU;\n res.childrenBurstCPU += item.burstCPU || 0 + itemExtraInfo.childrenBurstCPU;\n }\n\n dst[name] = res;\n return res;\n}\n\nexport interface PoolExtraInfo {\n childrenFlowCPU: number;\n childrenBurstCPU: number;\n}\n\nexport interface OperationInfo {\n name: string;\n type: 'operation';\n parent: string;\n attributes: object;\n cypressAttributes: object;\n flowCPU: number;\n burstCPU: number;\n flowGPU: number;\n integralType?: string;\n mode?: string;\n\n operationCount?: number;\n maxOperationCount?: number;\n maxRunningOperationCount?: number;\n\n pool: string;\n}\n\nexport interface PoolInfo extends Omit<OperationInfo, 'type' | 'pool'> {\n type: 'pool';\n incomplete?: boolean;\n children?: Array<PoolInfo>;\n leaves: Array<OperationInfo>;\n isEphemeral?: boolean;\n resources?: PoolResources;\n fifoIndex?: number;\n weight?: number;\n minShareRatio?: number;\n maxShareRatio?: number;\n fairShareRatio?: number;\n usageRatio?: number;\n demandRatio?: number;\n dominantResource?: number;\n runningOperationCount?: number;\n operationCount?: number;\n maxOperationCount?: number;\n childrenBurstCPU?: number;\n childrenFlowCPU?: number;\n accumulated?: number;\n accumulatedCpu?: number;\n burstDuration?: number;\n}\n\nexport type PoolResources = Partial<\n Record<'cpu' | 'gpu' | 'user_memory' | 'user_slots', PoolResourceDetails>\n>;\n\nexport type PoolResourceType = keyof PoolResources;\n\nexport type PoolResourceDetails = {\n min?: number;\n usage?: number;\n limit?: number;\n demand?: number;\n detailed?: number;\n guaranteed?: number;\n};\n\nexport const getPools = createSelector(\n [getPoolsPrepared, getSchedulingPoolsExtraInfo],\n (pools, extras) => {\n const res = map_(pools, (item) => {\n const itemExtra = extras[item.name] || {};\n return Object.assign(item, itemExtra);\n });\n return res;\n },\n);\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../common/hammer';\n\nimport reduce_ from 'lodash/reduce';\n\nfunction getNetworkResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Percent']((resourceUsage / resourceLimit) * 100);\n}\n\nfunction getMemoryResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Bytes'](resourceUsage) + ' / ' + hammer.format['Bytes'](resourceLimit);\n}\n\nfunction getDefaultResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Number'](resourceUsage) + ' / ' + hammer.format['Number'](resourceLimit);\n}\n\nfunction getResourcesText(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n switch (data.type) {\n case 'network':\n return getNetworkResourceText(resourceUsage, resourceLimit);\n case 'user_memory':\n return getMemoryResourceText(resourceUsage, resourceLimit);\n default:\n return getDefaultResourceText(resourceUsage, resourceLimit);\n }\n}\n\nfunction getResourceProgressValue(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n return (resourceUsage / resourceLimit) * 100;\n}\n\nfunction getResourceProgress(data) {\n return {\n text: getResourcesText(data),\n value: getResourceProgressValue(data),\n theme: 'info',\n };\n}\n\nexport function prepareResources(data) {\n const resourceUsage = ypath.getValue(data, '/resource_usage');\n const resourceLimits = ypath.getValue(data, '/resource_limits');\n const resourceTypes = ['cpu', 'user_memory', 'user_slots', 'network', 'gpu'];\n\n return reduce_(\n resourceTypes,\n (res, type) => {\n if (resourceUsage && resourceLimits) {\n const data = {\n type,\n usage: Number(ypath.getValue(resourceUsage[type], '')),\n limit: Number(ypath.getValue(resourceLimits[type], '')),\n };\n const progress = getResourceProgress(data);\n\n res.push({...data, progress});\n }\n return res;\n },\n [],\n );\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport hammer from '../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport {prepareResources} from '../../../utils/scheduling/overview';\nimport {childTableItems} from '../../../utils/scheduling/detailsTable';\nimport {poolsTableItems} from '../../../utils/scheduling/overviewTable';\nimport {\n ROOT_POOL_NAME,\n SCHEDULING_POOL_CHILDREN_TABLE_ID,\n SCHEDULING_POOL_TREE_TABLE_ID,\n} from '../../../constants/scheduling';\n\nimport {\n OperationInfo,\n PoolInfo,\n getPools as getPoolsImpl,\n getSchedulingPoolsMapByName,\n} from './scheduling-pools';\nimport {RootState} from '../../../store/reducers';\nimport {isAbcPoolName, isTopLevelPool} from '../../../utils/scheduling/pool';\nimport {visitTreeItems} from '../../../utils/utils';\nimport {getExpandedPoolsLoadAll, getSchedulingOperationsExpandedPools} from './expanded-pools';\nimport {\n getSchedulingAttributesToFilter,\n getSchedulingFilteredPoolNames,\n} from './attributes-to-filter';\nexport const getPools = getPoolsImpl;\n\nconst getExpandedPoolsIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.expandedPools;\n return !loaded && loading;\n};\n\nexport const getSchedulingIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.scheduling;\n return (!loaded && loading) || getExpandedPoolsIsInitialLoading(state);\n};\n\nexport const getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\nexport const getPoolChildrenFilter = (state: RootState) =>\n state.scheduling.scheduling.poolChildrenFilter;\nexport const getSchedulingTreeState = (state: RootState) => state.scheduling.scheduling.treeState;\nconst getContentModeRaw = (state: RootState) => state.scheduling.scheduling.contentMode;\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nexport const getTrees = (state: RootState) => state.scheduling.scheduling.trees;\n\nexport const getPool = (state: RootState) => state.scheduling.scheduling.pool;\n\nexport const getSchedulingEditItem = (state: RootState) => state.scheduling.scheduling.editItem;\n\nexport const getSortState = (state: RootState) => state.tables[SCHEDULING_POOL_TREE_TABLE_ID];\nexport const getPoolChildrenSortState = (state: RootState) =>\n state.tables[SCHEDULING_POOL_CHILDREN_TABLE_ID];\n\nexport const getPoolsNames = createSelector(\n getSchedulingAttributesToFilter,\n (pools): Array<string> => map_(pools, (_v, name) => name).sort(),\n);\n\nconst DETAILS_CONTENT_MODES = {\n cpu: 'cpu',\n memory: 'memory',\n gpu: 'gpu',\n user_slots: 'user_slots',\n operations: 'operations',\n integral: 'integral',\n};\n\nexport const getContentMode = createSelector([getContentModeRaw], (mode) => {\n return DETAILS_CONTENT_MODES[mode] || DETAILS_CONTENT_MODES.cpu;\n});\n\nexport const getIsRoot = createSelector(getPool, (pool) => pool === ROOT_POOL_NAME);\n\nexport const getTreesSelectItems = createSelector(getTrees, (trees) =>\n map_(trees, (tree) => ({\n value: tree,\n text: hammer.format['Readable'](tree) as string,\n })),\n);\n\nexport const getPoolsSelectItems = createSelector(getPoolsNames, (pools) => {\n const items = map_(pools, (pool) => ({\n value: pool,\n text: pool,\n }));\n\n return items;\n});\n\nexport const getCurrentPool = createSelector([getPool, getPools], (pool, pools) =>\n find_(pools, (item) => item.name === pool),\n);\n\nexport const getPoolIsEphemeral = createSelector([getCurrentPool], (currentPool) => {\n if (currentPool && currentPool.isEphemeral !== undefined) return currentPool.isEphemeral;\n return undefined;\n});\n\nexport const getCurrentPoolChildren = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.children;\n }\n\n return undefined;\n});\n\nexport const getCurrentPoolOperations = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.leaves;\n }\n\n return undefined;\n});\n\nexport const getResources = createSelector(\n [getCurrentPool, getTreeResources],\n (currentPool, resources) => {\n if (currentPool && currentPool.name !== '<Root>') {\n return prepareResources(currentPool.attributes);\n } else if (resources) {\n return prepareResources(resources);\n }\n\n return [];\n },\n);\n\nconst getFilteredTree = createSelector(\n [getCurrentPool, getSchedulingFilteredPoolNames],\n (treeRoot, visiblePools) => {\n if (treeRoot) {\n return hammer.treeList.filterTree(\n treeRoot,\n (pool: {name: string}) => {\n return visiblePools === undefined || visiblePools.has(pool.name);\n },\n true,\n );\n }\n return undefined;\n },\n);\n\nexport const getTableItems = createSelector(\n [getFilteredTree, getSortState],\n (filteredTree, sortState) => {\n if (filteredTree) {\n const isRoot = filteredTree && filteredTree.name === ROOT_POOL_NAME;\n const tree = isRoot ? filteredTree : {children: [filteredTree]};\n const sortedTree = hammer.treeList.sortTree(tree, sortState, poolsTableItems);\n\n return hammer.treeList.flattenTree(sortedTree);\n }\n\n return [];\n },\n);\n\nexport const getSchedulingOverviewMaxDepth = createSelector(\n [getTableItems, getExpandedPoolsLoadAll, getTree, getSchedulingOperationsExpandedPools],\n (items: Array<{level: number; name: string}>, allExpanded, tree, expandedPoolsMap) => {\n if (allExpanded) {\n return reduce_(\n items,\n (acc, item) => {\n const {level = 0} = item || {};\n return acc < level ? level : acc;\n },\n 0,\n );\n }\n\n const expandedPools = expandedPoolsMap[tree];\n if (!expandedPools?.size) {\n return 0;\n }\n\n return reduce_(\n items,\n (acc, item) => {\n if (expandedPools.has(item.name)) {\n return acc < item.level + 1 ? item.level + 1 : acc;\n }\n return acc;\n },\n 0,\n );\n },\n);\n\nconst getPoolChildrenData = createSelector(\n [getCurrentPool, getCurrentPoolChildren, getCurrentPoolOperations],\n (pool, pools, operations = []) => {\n if (pool && pools) {\n return [...pools, ...operations];\n }\n\n return undefined;\n },\n);\n\nconst getFilteredPoolChildren = createSelector(\n [getPoolChildrenData, getPoolChildrenFilter],\n (poolChildrenData, poolChildrenFilter) => {\n return hammer.filter.filter({\n data: poolChildrenData,\n input: poolChildrenFilter,\n factors: ['name'],\n });\n },\n);\n\nexport const getSortedPoolChildren = createSelector(\n [getFilteredPoolChildren, getPoolChildrenSortState, getCurrentPool],\n (filteredPoolChildren, poolChildrenSortState, currentPool) => {\n return hammer.utils.sort(filteredPoolChildren, poolChildrenSortState, childTableItems, {\n addGetParams: [currentPool],\n groupBy: {\n asc: true,\n get(item: PoolInfo | OperationInfo) {\n return item.type === 'operation' ? 0 : 1;\n },\n },\n });\n },\n);\n\nexport const getPollChildrenTableItems = createSelector(\n [getCurrentPool, getSortedPoolChildren],\n (currentPool, sortedPoolChildren) => {\n const extras = [];\n let isChildPool = false;\n if (currentPool && currentPool.name !== ROOT_POOL_NAME) {\n extras.push(currentPool);\n isChildPool = true;\n }\n\n return extras.concat(\n map_(sortedPoolChildren, (item) => {\n return Object.assign({}, item, {isChildPool});\n }),\n );\n },\n);\n\n// The same cluster is ready for bundle's ACL\nconst CLUSTERS_WITHOUT_POOL_ACL = ['locke'];\n\nexport const isPoolAclAllowed = createSelector([getCluster], (cluster) => {\n return CLUSTERS_WITHOUT_POOL_ACL.indexOf(cluster) === -1;\n});\n\nexport const getCurrentPoolPath = createSelector(\n [getPool, getPools, getTree],\n (pool, pools, tree) => {\n return calculatePoolPath(pool, pools, tree);\n },\n);\n\nexport function calculatePoolPath(pool: string, pools: Array<PoolInfo>, tree: string) {\n const prefix = `//sys/pool_trees/${tree}`;\n\n let current = pool;\n const path = [];\n while (current) {\n if (current !== ROOT_POOL_NAME) {\n path.push(current);\n }\n const tmp = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent || '';\n }\n const pathStr = !path.length ? '' : '/' + path.reverse().join('/');\n return `${prefix}${pathStr}`;\n}\n\nexport const getSchedulingTopPoolOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingPoolsMapByName],\n (pool, mapOfPools) => {\n if (isAbcPoolName(pool?.name)) {\n return undefined;\n }\n\n if (isTopLevelPool(pool)) {\n return pool;\n }\n\n let item = pool;\n while (item) {\n const parent = mapOfPools[item.parent];\n if (isAbcPoolName(item.parent)) {\n return item;\n }\n\n if (isTopLevelPool(item)) {\n return item;\n }\n\n item = parent;\n }\n return undefined;\n },\n);\n\nexport const getSchedulingSourcesOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingTopPoolOfEditItem, getSchedulingPoolsMapByName],\n (pool, topPool, mapOfPools): Array<string> => {\n if (!pool?.name || !mapOfPools) {\n return [];\n }\n\n const res: Array<string> = [];\n visitTreeItems(\n topPool,\n (item: PoolInfo) => {\n if (pool.name !== item.name) {\n res.push(item.name);\n }\n },\n {\n isNeedToSkipChildren: (item: PoolInfo) => {\n return item?.name === pool?.name;\n },\n },\n );\n\n return res;\n },\n);\n\nexport const getSchedulingSourcesOfEditItemSkipParent = createSelector(\n [getSchedulingEditItem, getSchedulingSourcesOfEditItem],\n (pool, sources) => {\n if (!pool?.parent) {\n return sources;\n }\n\n return filter_(sources, (item) => item !== pool.parent);\n },\n);\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\nimport type {PoolInfo, PoolResourceType} from '../../store/selectors/scheduling/scheduling-pools';\n\nfunction prepareDetailedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.detailed;\n },\n sort: true,\n caption: 'Abs fair share',\n align: 'right',\n };\n}\n\nfunction prepareLimitColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.limit;\n },\n sort: true,\n sortWithUndefined: true,\n caption: 'Limit',\n align: 'right',\n };\n}\n\nfunction prepareMinResourcesColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.min;\n },\n sort: true,\n caption: 'Strong guar.',\n title: 'Strong guarantee',\n align: 'right',\n };\n}\n\nfunction prepareAbsGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.guaranteed;\n },\n sort: true,\n caption: 'Estimated guar.',\n title: 'Estimated guarantee',\n align: 'right',\n };\n}\n\nfunction prepareRelGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsGuaranteedColumn(resource).get(item)! /\n prepareAbsGuaranteedColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel guaranteed',\n align: 'right',\n };\n}\n\nfunction prepareAbsDemandColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.demand;\n },\n sort: true,\n caption: 'Abs demand',\n align: 'right',\n };\n}\n\nfunction prepareAbsUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.usage;\n },\n sort: true,\n caption: 'Abs usage',\n align: 'right',\n };\n}\n\nfunction prepareRelUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsUsageColumn(resource).get(item)! /\n prepareAbsUsageColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel usage',\n align: 'right',\n };\n}\n\nfunction prepareGuaranteedUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return {\n guaranteed: prepareRelGuaranteedColumn(resource).get(item, currentPool),\n usage: prepareRelUsageColumn(resource).get(item, currentPool),\n };\n },\n caption: 'Usage / Guaranteed',\n align: 'center',\n };\n}\n\nexport const childTableItems = {\n name: {\n sort(item: PoolInfo) {\n return item.name;\n },\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n },\n mode: {\n sort(item: PoolInfo) {\n return item.mode;\n },\n align: 'center',\n },\n FI: {\n sort(item: PoolInfo) {\n return item.fifoIndex;\n },\n align: 'center',\n },\n weight: {\n sort(item: PoolInfo) {\n return item.weight;\n },\n align: 'right',\n },\n min_share: {\n sort(item: PoolInfo) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n max_share: {\n sort(item: PoolInfo) {\n return item.maxShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n get(item: PoolInfo) {\n return item.fairShareRatio;\n },\n sort: true,\n align: 'right',\n },\n usage: {\n get(item: PoolInfo) {\n return item.usageRatio;\n },\n sort: true,\n align: 'right',\n },\n demand: {\n get(item: PoolInfo) {\n return item.demandRatio;\n },\n sort: true,\n align: 'right',\n },\n fair_share_usage: {\n caption: 'Usage / Fair share',\n align: 'left',\n },\n dominant_resource: {\n sort(item: PoolInfo) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n\n resource_detailed_cpu: prepareDetailedColumn('cpu'),\n resource_detailed_memory: prepareDetailedColumn('user_memory'),\n resource_detailed_gpu: prepareDetailedColumn('gpu'),\n resource_detailed_user_slots: prepareDetailedColumn('user_slots'),\n\n resource_limit_cpu: prepareLimitColumn('cpu'),\n resource_limit_memory: prepareLimitColumn('user_memory'),\n resource_limit_gpu: prepareLimitColumn('gpu'),\n resource_limit_user_slots: prepareLimitColumn('user_slots'),\n\n min_resources_cpu: prepareMinResourcesColumn('cpu'),\n min_resources_memory: prepareMinResourcesColumn('user_memory'),\n min_resources_gpu: prepareMinResourcesColumn('gpu'),\n min_resources_user_slots: prepareMinResourcesColumn('user_slots'),\n\n abs_guaranteed_cpu: prepareAbsGuaranteedColumn('cpu'),\n abs_guaranteed_memory: prepareAbsGuaranteedColumn('user_memory'),\n abs_guaranteed_gpu: prepareAbsGuaranteedColumn('gpu'),\n abs_guaranteed_user_slots: prepareAbsGuaranteedColumn('user_slots'),\n\n rel_guaranteed_cpu: prepareRelGuaranteedColumn('cpu'),\n rel_guaranteed_memory: prepareRelGuaranteedColumn('user_memory'),\n rel_guaranteed_gpu: prepareRelGuaranteedColumn('gpu'),\n rel_guaranteed_user_slots: prepareRelGuaranteedColumn('user_slots'),\n\n abs_usage_cpu: prepareAbsUsageColumn('cpu'),\n abs_usage_memory: prepareAbsUsageColumn('user_memory'),\n abs_usage_gpu: prepareAbsUsageColumn('gpu'),\n abs_usage_user_slots: prepareAbsUsageColumn('user_slots'),\n\n abs_demand_cpu: prepareAbsDemandColumn('cpu'),\n abs_demand_memory: prepareAbsDemandColumn('user_memory'),\n abs_demand_gpu: prepareAbsDemandColumn('gpu'),\n abs_demand_user_slots: prepareAbsDemandColumn('user_slots'),\n\n rel_usage_cpu: prepareRelUsageColumn('cpu'),\n rel_usage_memory: prepareRelUsageColumn('user_memory'),\n rel_usage_gpu: prepareRelUsageColumn('gpu'),\n rel_usage_user_slots: prepareRelUsageColumn('user_slots'),\n\n guaranteed_usage_cpu: prepareGuaranteedUsageColumn('cpu'),\n guaranteed_usage_memory: prepareGuaranteedUsageColumn('user_memory'),\n guaranteed_usage_gpu: prepareGuaranteedUsageColumn('gpu'),\n guaranteed_usage_user_slots: prepareGuaranteedUsageColumn('user_slots'),\n\n operation_overview: {\n get(item: PoolInfo) {\n return [item.operationCount, item.runningOperationCount];\n },\n caption: 'Operations',\n sort: true,\n align: 'right',\n },\n operation_count: {\n get(item: PoolInfo) {\n return item.operationCount;\n },\n sort: true,\n align: 'right',\n },\n max_operation_count: {\n get(item: PoolInfo) {\n return item.maxOperationCount;\n },\n sort: true,\n align: 'right',\n },\n operation_progress: {\n get(item: PoolInfo) {\n return item.operationCount! / item.maxOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.operationCount)} / ${format.Number(\n item.maxOperationCount,\n )}`;\n },\n caption: 'Total operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n running_operation_count: {\n get(item: PoolInfo) {\n return item.runningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n max_running_operation_count: {\n get(item: PoolInfo) {\n return item.maxRunningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n running_operation_progress: {\n get(item: PoolInfo) {\n return item.runningOperationCount! / item.maxRunningOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.runningOperationCount)} / ${format.Number(\n item.maxRunningOperationCount,\n )}`;\n },\n caption: 'Running operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n\n integral_type: {\n get(item: PoolInfo) {\n const res = item.integralType;\n return res === 'none' ? undefined : res;\n },\n caption: 'Guarantee type',\n sort: true,\n align: 'right',\n sortWithUndefined: true,\n },\n burst_cpu: {\n get(item: PoolInfo) {\n return item.burstCPU;\n },\n sort(item: PoolInfo) {\n const res = item.burstCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Burst CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n flow_cpu: {\n get(item: PoolInfo) {\n return item.flowCPU;\n },\n sort(item: PoolInfo) {\n const res = item.flowCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Flow CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n children_burst_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenBurstCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's burst CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n children_flow_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenFlowCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's flow CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n accumulated: {\n get(item: PoolInfo) {\n return item.accumulated;\n },\n caption: 'Acc ratio volume',\n sortWithUndefined: true,\n sort: true,\n align: 'right',\n },\n accumulated_cpu: {\n get(item: PoolInfo) {\n return item.accumulatedCpu;\n },\n caption: 'Acc CPU volume',\n sort: true,\n align: 'right',\n },\n burst_duration: {\n get(item: PoolInfo) {\n return item.burstDuration;\n },\n caption: 'Est burst usage duration ',\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import React from 'react';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\n\nexport const poolsTableItems = {\n type: {\n caption: '',\n align: 'center',\n },\n name: {\n sort: true,\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n get(item) {\n return item.name;\n },\n },\n mode: {\n sort: true,\n align: 'center',\n get(item) {\n return item.mode;\n },\n },\n FI: {\n sort: true,\n align: 'right',\n title: 'FIFO Index',\n get(item) {\n return item.fifoIndex;\n },\n },\n weight: {\n sort: true,\n align: 'right',\n title: 'Effective weight',\n get(item) {\n return item.weight;\n },\n },\n operation_overview: {\n caption: 'Operations',\n sort: true,\n align: 'center',\n get(item) {\n return [item.operationCount, item.runningOperationCount];\n },\n },\n dominant_resource: {\n sort(item) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n min_share: {\n caption: 'Guarantee',\n title: 'Effective dominant strong guarantee share',\n sort(item) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n sort: true,\n title: 'Dominant fair share',\n align: 'right',\n get(item) {\n return item.fairShareRatio;\n },\n },\n usage: {\n sort: true,\n title: 'Dominant usage share',\n align: 'right',\n get(item) {\n return item.usageRatio;\n },\n },\n demand: {\n sort: true,\n title: 'Dominant demand share',\n align: 'right',\n get(item) {\n return item.demandRatio;\n },\n },\n fair_share_usage: {\n sort: true,\n caption: 'Usage / Fair share',\n align: 'center',\n sortWithUndefined: true,\n get(item) {\n const {fairShareRatio, usageRatio} = item;\n const x = Number(usageRatio) / Number(fairShareRatio);\n if (isNaN(usageRatio) || isNaN(fairShareRatio) || isNaN(x)) {\n return undefined;\n }\n return x;\n },\n },\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\n\nexport function isAbcPoolName(name?: string) {\n return name?.startsWith('abc:');\n}\n\nexport function isTopLevelPool(pool?: PoolInfo) {\n const {parent} = pool || {};\n\n return parent === ROOT_POOL_NAME;\n}\n","import find_ from 'lodash/find';\nimport indexOf_ from 'lodash/indexOf';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {OperationInfo, PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\nimport {attachTreeLeaves, prepareTree} from '../../common/hammer/tree-list';\n\nfunction getPool(pools: Array<PoolInfo>, name: string) {\n return find_(pools, (pool) => pool.name === name);\n}\n\nexport function prepareTrees(trees: Array<unknown>) {\n return map_(trees, (tree) => ypath.getValue(tree, '')).sort();\n}\n\nexport function prepareCurrentTree(defaultTree: unknown, trees: Array<string>, tree: string) {\n return tree !== '' && trees.indexOf(tree) !== -1\n ? tree\n : ypath.getValue(defaultTree, '') || trees[0];\n}\n\nexport function preparePools(\n pools: Record<string, PoolInfo>,\n operations: Record<string, OperationInfo>,\n) {\n const treeNodesMap = prepareTree<PoolInfo, OperationInfo>(pools, (entry: PoolInfo) =>\n ypath.getValue(entry, '/parent'),\n );\n\n attachTreeLeaves(treeNodesMap, operations, (operation: OperationInfo) =>\n ypath.getValue(operation, '/pool'),\n );\n\n return map_(treeNodesMap);\n}\n\nexport function computePathItems(pools: Array<PoolInfo>, name: string) {\n let pool: PoolInfo | undefined =\n getPool(pools, name) || ({parent: ROOT_POOL_NAME, name} as PoolInfo);\n const pathItems = [];\n\n // Unknown pool or dynamically created pool\n while (pool) {\n pathItems.unshift(pool.name);\n\n pool = getPool(pools, pool.parent);\n }\n\n return pathItems;\n}\n\nexport function computePoolPath(pool: PoolInfo, pools: Array<PoolInfo>) {\n const partitions = [pool.name];\n let parent: string | undefined = pool.parent;\n\n while (parent && parent !== ROOT_POOL_NAME) {\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const parentPool = find_(pools, (item) => item.name === parent);\n partitions.unshift(parentPool?.name!);\n parent = parentPool?.parent;\n }\n\n return partitions.join('/');\n}\n\n/* eslint-disable prefer-const */\nexport function flattenAttributes(obj: any) {\n const toReturn: any = {};\n const object = ypath.getValue(obj);\n\n for (let i in object) {\n if (!Object.hasOwnProperty.call(object, i)) {\n continue;\n }\n\n const innerObject = ypath.getValue(object[i]);\n if (\n typeof innerObject === 'object' &&\n !Object.is(innerObject, null) &&\n Object.keys(innerObject).length > 0\n ) {\n toReturn[i] = object[i];\n\n const flatObject = flattenAttributes(object[i]);\n for (let x in flatObject) {\n if (!Object.hasOwnProperty.call(flatObject, x)) {\n continue;\n }\n\n toReturn[x] = flatObject[x];\n }\n } else {\n toReturn[i] = object[i];\n }\n }\n\n return toReturn;\n}\n\nfunction getResourceLimit(pool: PoolInfo | undefined, limitKey: string): number | '' {\n const value = Number(ypath.getValue(pool, `/cypressAttributes/resource_limits/${limitKey}`));\n return isNaN(value) ? '' : value;\n}\n\nfunction prepareValueDetails(pool: PoolInfo | undefined, path: string) {\n if (!pool) {\n return {};\n }\n\n const value = Number(ypath.getValue(pool, path));\n const childrenSum = prepareMinGuaranteed(pool, path);\n\n return {\n value: isNaN(value) ? undefined : value,\n childrenSum: isNaN(childrenSum!) ? undefined : childrenSum,\n };\n}\n\nfunction prepareMinGuaranteed(pool?: PoolInfo, path = '') {\n const res = reduce_(\n pool?.children,\n (sum, item) => {\n const tmp = Number(ypath.getValue(item, path) || 0);\n return isNaN(tmp) ? sum : tmp + firstValidNumber(sum, 0)!;\n },\n NaN,\n );\n return isNaN(res) ? undefined : res;\n}\n\nfunction firstValidNumber(...args: number[]) {\n for (let i = 0; i < args.length; ++i) {\n if (!isNaN(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nexport const INTEGRAL_GUARANTEES_PREFIX = 'integral_guarantees/';\n\nexport const POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR = {\n guaranteeType: INTEGRAL_GUARANTEES_PREFIX + 'guarantee_type',\n burstCpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/cpu',\n burstRam: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/memory',\n burstGpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/gpu',\n flowCpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/cpu',\n flowRam: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/memory',\n flowGpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/gpu',\n};\n\nexport const POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE = {\n cpuStrong: 'strong_guarantee_resources/cpu',\n gpuStrong: 'strong_guarantee_resources/gpu',\n memoryStrong: 'strong_guarantee_resources/memory',\n //userSlotsStrong: 'strong_guarantee_resources/user_slots',\n};\n\nexport const POOL_GENERAL_TYPE_TO_ATTRIBUTE = {\n maxOperationCount: 'max_operation_count',\n maxRunningOperationCount: 'max_running_operation_count',\n};\n\nexport const POOL_RESOURCE_TYPE_TO_ATTRIBUTE = {\n ...POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n ...POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n ...POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n};\n\nexport type PoolStrongResourceType = keyof typeof POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE;\nexport type PoolIntegralResourceType = keyof typeof POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR;\nexport type PoolGeneralResourceType = keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\nexport type PoolResourceType = keyof typeof POOL_RESOURCE_TYPE_TO_ATTRIBUTE;\n\nexport function getPoolResourceInfo(pool: PoolInfo, type: PoolResourceType) {\n const path = '/cypressAttributes/' + POOL_RESOURCE_TYPE_TO_ATTRIBUTE[type];\n return prepareValueDetails(pool, path);\n}\n\nexport interface InitialPoolResourceInfo {\n limit?: number;\n source?: string;\n}\n\nexport function getPoolResourceInitialValue(\n pool: PoolInfo | undefined,\n type: PoolResourceType,\n allowSource: boolean,\n): InitialPoolResourceInfo {\n if (!pool) {\n return {};\n }\n const {value} = getPoolResourceInfo(pool, type);\n return {\n limit: value,\n source: allowSource ? pool.parent : undefined,\n };\n}\n\nexport function getInitialValues(editItem: PoolInfo | undefined, allowedSources: Array<string>) {\n const slug = ypath.getValue(editItem, '/abc/slug');\n\n const allowSource = -1 !== indexOf_(allowedSources, editItem?.parent);\n\n return {\n general: {\n name: editItem?.name,\n abcService: slug\n ? {\n key: slug,\n value: slug,\n title: ypath.getValue(editItem, '/abc/name'),\n }\n : undefined,\n parent: editItem?.parent,\n mode: editItem?.mode,\n weight: ypath.getNumber(editItem, '/cypressAttributes/weight'),\n maxOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxOperationCount', allowSource),\n {source: undefined},\n ),\n maxRunningOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxRunningOperationCount', allowSource),\n {source: undefined},\n ),\n },\n resourceGuarantee: {\n cpuStrong: getPoolResourceInitialValue(editItem, 'cpuStrong', allowSource),\n gpuStrong: getPoolResourceInitialValue(editItem, 'gpuStrong', allowSource),\n memoryStrong: getPoolResourceInitialValue(editItem, 'memoryStrong', allowSource),\n //userSlotsStrong: getPoolResourceInitialValue(editItem, 'userSlotsStrong', allowSource),\n },\n integralGuarantee: {\n guaranteeType:\n ypath.getValue(\n editItem,\n `/cypressAttributes/${POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR.guaranteeType}`,\n ) || 'none',\n burstCpu: getPoolResourceInitialValue(editItem, 'burstCpu', allowSource),\n burstRam: getPoolResourceInitialValue(editItem, 'burstRam', allowSource),\n burstGpu: getPoolResourceInitialValue(editItem, 'burstGpu', allowSource),\n flowCpu: getPoolResourceInitialValue(editItem, 'flowCpu', allowSource),\n flowRam: getPoolResourceInitialValue(editItem, 'flowRam', allowSource),\n flowGpu: getPoolResourceInitialValue(editItem, 'flowGpu', allowSource),\n },\n resourceLimits: {\n cpu: getResourceLimit(editItem, 'cpu'),\n gpu: getResourceLimit(editItem, 'gpu'),\n memory: getResourceLimit(editItem, 'memory'),\n userSlots: getResourceLimit(editItem, 'user_slots'),\n },\n otherSettings: {\n forbidImmediateOperations: ypath.getBoolean(editItem, '/forbidImmediateOperations'),\n fifoSortParams: ypath.getValue(editItem, '/fifoSortParams'),\n createEphemeralSubpools: ypath.getBoolean(editItem, '/createEphemeralSubpools'),\n },\n };\n}\n"],"names":["renderText","text","settings","arguments","length","undefined","className","block","mix","elem","_objectSpread","mods","textProps","asHTML","props","dangerouslySetInnerHTML","__html","children","unipika","decode","String","prepareTextProps","title","_jsx","printColumnAsTimeDurationWithMs","item","columnName","column","this","getColumn","hammer","format","get","printColumnAsReadableField","printColumnAsTime","value","ColumnAsTime","_ref","printColumnAsError","error","_typeof","Link","theme","onClick","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","key","wrapRenderMethods","SchedulingOperationsLoader","loading","useSelector","getSchedulingOperationsLoadingStatus","Loader","visible","React","getTransaction","state","navigation","transaction","getAttributes","attributes","getAttributesWithTypes","attributesWithTypes","getLoadState","loadState","getError","getRawPath","path","getIdmSupport","isIdmSupported","getType","createSelector","type","getPath","getNavigationDefaultPath","rawPath","defaultPath","getAttributesPath","navigationPath","isNavigationFinalLoadState","isFinalLoadingStatus","getParsedPath","ypath","create","ex","console","getActualPath","checkIsTrash","startsWith","getSchedulingAbcFilter","scheduling","abcServiceFilter","getSchedulingAttributesToFilter","attributesToFilter","getSchedulingAttributesToFilterParams","attributesToFilterParams","schedulingOverviewHasFilter","abcFilter","id","getSchedulingFilteredPoolNames","getSchedulingPoolsMapByName","attrsToFilter","loadedPools","res","reduce_","acc","attrs","_attrs$abc","abc","Set","forEach_","_toConsumableArray","poolName","name","_item","parent","getExpandedPoolCypressData","expandedPools","flattenCypressData","getSchedulingOperations","rawOperations","getExpandedPoolsTree","expandedPoolsTree","getSchedulingOperationsError","getSchedulingOperationsExpandedPools","getExpandedPoolsLoadAll","loadAll","loaded","RESOURCE_LIMIT_MAPPER","user_memory","preparePoolChildResource","data","treeResources","resource","ROOT_POOL_NAME","resources","guaranteed","usage","min","demand","limitResource","limit","cypressAttributes","detailed","updatePoolChild","cypressData","_data$leaves","_initedBy","mode","getValue","leaves","map_","leaf","child_pool_count","i","push","concat","incomplete","pool_operation_count","NaN","emptyOp","operationCount","maxOperationCount","maxOperationCountEdited","runningOperationCount","maxRunningOperationCount","maxRunningOperationCountEdited","starvation_status","weight","weightEdited","minShareRatio","maxShareRatio","fairShareRatio","fifoIndex","usageRatio","demandRatio","isEphemeral","getBoolean","integralType","userDefinedBurstCPU","burstCPU","userDefinedFlowCPU","flowCPU","userDefinedFlowGPU","flowGPU","accumulated","accumulatedCpu","burstDuration","fifoSortParams","param","forbidImmediateOperations","createEphemeralSubpools","dominantResource","e","appendInnerErrors","message","getPoolsRaw","rawPools","getSchedulingTreeOperations","tree","EMPTY_OBJECT","getOperationsFiltered","operationId","pool","getPoolsPrepared","getCluster","cluster","isEmpty_","RumWrapper","RumMeasureTypes","SCHEDULING","wrap","preparedPools","preparePools","pools","getSchedulingPoolsExtraInfo","poolsMap","root","calcChildrenIntegrals","dst","childrenBurstCPU","childrenFlowCPU","itemExtraInfo","getPools","extras","itemExtra","assign","getResourcesText","resourceUsage","resourceLimit","getNetworkResourceText","getMemoryResourceText","getDefaultResourceText","getResourceProgressValue","prepareResources","resourceLimits","Number","progress","getResourceProgress","getPoolsImpl","getSchedulingIsInitialLoading","_state$scheduling$sch","_state$scheduling$exp","getExpandedPoolsIsInitialLoading","getTreeResources","getPoolChildrenFilter","poolChildrenFilter","getSchedulingTreeState","treeState","getTree","getPool","getSchedulingEditItem","editItem","getPoolsNames","_v","sort","DETAILS_CONTENT_MODES","cpu","memory","gpu","user_slots","operations","integral","getContentMode","contentMode","getIsRoot","getTreesSelectItems","trees","getPoolsSelectItems","getCurrentPool","find_","getPoolIsEphemeral","currentPool","getCurrentPoolChildren","getCurrentPoolOperations","getResources","getFilteredTree","treeRoot","visiblePools","treeList","filterTree","has","getTableItems","tables","SCHEDULING_POOL_TREE_TABLE_ID","filteredTree","sortState","sortedTree","sortTree","poolsTableItems","flattenTree","getSchedulingOverviewMaxDepth","items","allExpanded","expandedPoolsMap","_ref$level","level","size","getPoolChildrenData","getFilteredPoolChildren","poolChildrenData","filter","input","factors","getSortedPoolChildren","SCHEDULING_POOL_CHILDREN_TABLE_ID","filteredPoolChildren","poolChildrenSortState","utils","childTableItems","addGetParams","groupBy","asc","getPollChildrenTableItems","sortedPoolChildren","isChildPool","CLUSTERS_WITHOUT_POOL_ACL","isPoolAclAllowed","indexOf","getCurrentPoolPath","calculatePoolPath","prefix","current","_loop","tmp","_ref3","pathStr","reverse","join","getSchedulingTopPoolOfEditItem","mapOfPools","isAbcPoolName","isTopLevelPool","getSchedulingSourcesOfEditItem","topPool","visitTreeItems","isNeedToSkipChildren","getSchedulingSourcesOfEditItemSkipParent","sources","filter_","prepareDetailedColumn","_item$resources","caption","align","prepareLimitColumn","_item$resources2","sortWithUndefined","prepareMinResourcesColumn","_item$resources3","prepareAbsGuaranteedColumn","_item$resources4","prepareRelGuaranteedColumn","prepareAbsDemandColumn","_item$resources5","prepareAbsUsageColumn","_item$resources6","prepareRelUsageColumn","prepareGuaranteedUsageColumn","captionTail","FI","min_share","max_share","fair_share","fair_share_usage","dominant_resource","resource_detailed_cpu","resource_detailed_memory","resource_detailed_gpu","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","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_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","operation_overview","operation_count","max_operation_count","operation_progress","running_operation_count","max_running_operation_count","running_operation_progress","integral_type","burst_cpu","isNaN","flow_cpu","children_burst_cpu","children_flow_cpu","accumulated_cpu","burst_duration","actions","x","prepareTrees","prepareCurrentTree","defaultTree","treeNodesMap","prepareTree","entry","attachTreeLeaves","operation","computePoolPath","partitions","parentPool","unshift","flattenAttributes","obj","toReturn","object","hasOwnProperty","call","innerObject","is","flatObject","getResourceLimit","limitKey","INTEGRAL_GUARANTEES_PREFIX","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","guaranteeType","burstCpu","burstRam","burstGpu","flowCpu","flowRam","flowGpu","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","cpuStrong","gpuStrong","memoryStrong","POOL_GENERAL_TYPE_TO_ATTRIBUTE","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","getPoolResourceInfo","childrenSum","sum","_len","args","Array","_key","firstValidNumber","prepareMinGuaranteed","prepareValueDetails","getPoolResourceInitialValue","allowSource","source","getInitialValues","allowedSources","slug","indexOf_","general","abcService","resourceGuarantee","integralGuarantee","userSlots","otherSettings"],"sourceRoot":""}