@ytsaurus/ui 1.22.2 → 1.22.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/ui/components/Dialog/controls/PoolSuggestControl/PoolSuggestControl.js +48 -34
- package/build/cjs/ui/components/Dialog/controls/PoolSuggestControl/PoolSuggestControl.js.map +1 -1
- package/build/cjs/ui/hooks/global-pool-trees.d.ts +1 -0
- package/build/cjs/ui/hooks/global-pool-trees.js +8 -3
- package/build/cjs/ui/hooks/global-pool-trees.js.map +1 -1
- package/build/cjs/ui/pages/navigation/modals/RemoteCopyModal.js +11 -10
- package/build/cjs/ui/pages/navigation/modals/RemoteCopyModal.js.map +1 -1
- package/build/esm/ui/components/Dialog/controls/PoolSuggestControl/PoolSuggestControl.js +48 -34
- package/build/esm/ui/components/Dialog/controls/PoolSuggestControl/PoolSuggestControl.js.map +1 -1
- package/build/esm/ui/hooks/global-pool-trees.d.ts +1 -0
- package/build/esm/ui/hooks/global-pool-trees.js +7 -3
- package/build/esm/ui/hooks/global-pool-trees.js.map +1 -1
- package/build/esm/ui/pages/navigation/modals/RemoteCopyModal.js +11 -10
- package/build/esm/ui/pages/navigation/modals/RemoteCopyModal.js.map +1 -1
- package/dist/public/build/assets-manifest.json +9 -9
- package/dist/public/build/js/719.b5654185.chunk.js +2 -0
- package/dist/public/build/js/{719.5d4d8d0a.chunk.js.map → 719.b5654185.chunk.js.map} +1 -1
- package/dist/public/build/js/main.40d53a9b.js +3 -0
- package/dist/public/build/js/{main.696bd3aa.js.map → main.40d53a9b.js.map} +1 -1
- package/dist/public/build/js/{runtime.d242c08d.js → runtime.d620d412.js} +2 -2
- package/dist/public/build/js/{runtime.d242c08d.js.map → runtime.d620d412.js.map} +1 -1
- package/dist/public/build/manifest.json +6 -6
- package/package.json +2 -2
- package/dist/public/build/js/719.5d4d8d0a.chunk.js +0 -2
- package/dist/public/build/js/main.696bd3aa.js +0 -3
- /package/dist/public/build/js/{main.696bd3aa.js.LICENSE.txt → main.40d53a9b.js.LICENSE.txt} +0 -0
@@ -1,5 +1,5 @@
|
|
1
|
-
import _find from "lodash/find";
|
2
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
2
|
+
import _find from "lodash/find";
|
3
3
|
import _map from "lodash/map";
|
4
4
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
5
5
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
@@ -72,6 +72,13 @@ function RemoteCopyModal() {
|
|
72
72
|
};
|
73
73
|
});
|
74
74
|
}, [paths]);
|
75
|
+
var calculateValueOnPoolsLoaded = React.useCallback(function (_ref2) {
|
76
|
+
var loadedPoolNames = _ref2.loadedPoolNames;
|
77
|
+
var transferPool = _find(loadedPoolNames, function (name) {
|
78
|
+
return name === "transfer_".concat(cluster);
|
79
|
+
});
|
80
|
+
return transferPool || '';
|
81
|
+
}, [cluster]);
|
75
82
|
return !visible ? null : /*#__PURE__*/_jsx(YTDFDialog, {
|
76
83
|
visible: true,
|
77
84
|
onAdd: handleAdd,
|
@@ -155,18 +162,12 @@ function RemoteCopyModal() {
|
|
155
162
|
},
|
156
163
|
required: true,
|
157
164
|
tooltip: docsUrl(makeLink(UIFactory.docsUrls['operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'])),
|
158
|
-
extras: function extras(
|
159
|
-
var dstCluster =
|
165
|
+
extras: function extras(_ref3) {
|
166
|
+
var dstCluster = _ref3.dstCluster;
|
160
167
|
return {
|
161
168
|
cluster: dstCluster,
|
162
169
|
placeholder: "(cluster: ".concat(dstCluster, ") pool name"),
|
163
|
-
calculateValueOnPoolsLoaded:
|
164
|
-
var loadedPoolNames = _ref3.loadedPoolNames;
|
165
|
-
var transferPool = _find(loadedPoolNames, function (name) {
|
166
|
-
return name === "transfer_".concat(cluster);
|
167
|
-
});
|
168
|
-
return transferPool || '';
|
169
|
-
},
|
170
|
+
calculateValueOnPoolsLoaded: calculateValueOnPoolsLoaded,
|
170
171
|
allowEphemeral: true
|
171
172
|
};
|
172
173
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","useDispatch","useSelector","DialogError","YTDFDialog","getRemoteCopyModalPaths","getRemoteCopyModalVisible","hideRemoteCopyModal","remoteCopy","getCluster","makeLink","docsUrl","UIFactory","Fragment","_Fragment","jsxs","_jsxs","jsx","_jsx","RemoteCopyModal","_pathsValues$","dispatch","visible","paths","cluster","_React$useState","useState","_React$useState2","_slicedToArray","error","setError","handleAdd","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","form","_form$getState","values","input_table_paths","pool","rest","_response","wrap","_callee$","_context","prev","next","undefined","getState","_objectWithoutProperties","_excluded","_objectSpread","_map","t0","response","data","stop","_x","apply","arguments","handleClose","pathsValues","useMemo","item","title","onAdd","onClose","headerProps","initialValues","cluster_name","schema_inference_mode","output_table_path","override","fields","name","type","caption","extras","disabled","width","length","frozen","required","excludeClusters","items","value","text","warning","children","docsUrls","visibilityCondition","when","isActive","Boolean","tooltip","_ref2","dstCluster","placeholder","concat","calculateValueOnPoolsLoaded","_ref3","loadedPoolNames","transferPool","_find","allowEphemeral","_toConsumableArray","memo"],"sources":["RemoteCopyModal.tsx"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport _ from 'lodash';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog/Dialog';\nimport {\n getRemoteCopyModalPaths,\n getRemoteCopyModalVisible,\n} from '../../../store/selectors/navigation/modals/remote-copy-modal';\nimport {\n hideRemoteCopyModal,\n remoteCopy,\n} from '../../../store/actions/navigation/modals/remote-copy-modal';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {YTError} from '../../../types';\nimport {RemoteCopyParams} from '../../../../@types/types';\nimport {AxiosError} from 'axios';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ntype Values = Omit<RemoteCopyParams, 'input_table_paths'> & {\n input_table_paths: Array<{title: string}>;\n};\n\nfunction RemoteCopyModal() {\n const dispatch = useDispatch();\n const visible = useSelector(getRemoteCopyModalVisible);\n const paths = useSelector(getRemoteCopyModalPaths);\n const cluster = useSelector(getCluster);\n\n const [error, setError] = React.useState<YTError | unknown>();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<Values>) => {\n try {\n setError(undefined);\n const {values} = form.getState();\n const {input_table_paths, pool, ...rest} = values;\n await dispatch(\n remoteCopy({\n ...rest,\n input_table_paths: _.map(input_table_paths, 'title'),\n pool: pool,\n }),\n );\n } catch (e: unknown) {\n setError((e as AxiosError<YTError>)?.response?.data || e);\n throw e;\n }\n },\n [setError],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideRemoteCopyModal());\n }, []);\n\n const pathsValues = React.useMemo(\n () =>\n _.map(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n return !visible ? null : (\n <YTDFDialog<Values>\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n headerProps={{\n title: 'Remote copy',\n }}\n initialValues={{\n cluster_name: cluster,\n input_table_paths: pathsValues,\n schema_inference_mode: 'auto',\n output_table_path: pathsValues[0]?.title,\n override: false,\n }}\n fields={[\n {\n name: 'cluster_name',\n type: 'cluster',\n caption: 'Source cluster',\n extras: {\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'input_table_paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Input paths' : 'Input path',\n extras: {\n frozen: true,\n },\n },\n {\n name: 'dstCluster',\n type: 'cluster',\n caption: 'Destination cluster',\n required: true,\n extras: {\n excludeClusters: [cluster],\n width: 'max',\n },\n },\n {\n name: 'output_table_path',\n type: 'text',\n caption: 'Output path',\n required: true,\n },\n {\n name: 'override',\n type: 'tumbler',\n caption: 'Override output',\n },\n {\n name: 'copy_attributes',\n type: 'tumbler',\n caption: 'Copy user attributes',\n },\n {\n name: 'schema_inference_mode',\n type: 'yt-select-single',\n caption: 'Schema inference',\n extras: {\n items: [\n {\n value: 'auto',\n text: 'Auto',\n },\n {\n value: 'from_input',\n text: 'From input',\n },\n {\n value: 'from_output',\n text: 'From output',\n },\n ],\n width: 'max',\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n warning: (\n <>\n pool must have specified{' '}\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['operations:remote_copy'],\n 'limits',\n true,\n ),\n )}\n </>\n ),\n visibilityCondition: {\n when: 'dstCluster',\n isActive: (value) => Boolean(value),\n },\n required: true,\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({dstCluster}: Values) => {\n return {\n cluster: dstCluster,\n placeholder: `(cluster: ${dstCluster}) pool name`,\n calculateValueOnPoolsLoaded({loadedPoolNames}) {\n const transferPool = _.find(\n loadedPoolNames,\n (name) => name === `transfer_${cluster}`,\n );\n return transferPool || '';\n },\n allowEphemeral: true,\n };\n },\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nexport default React.memo(RemoteCopyModal);\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","useDispatch","useSelector","DialogError","YTDFDialog","getRemoteCopyModalPaths","getRemoteCopyModalVisible","hideRemoteCopyModal","remoteCopy","getCluster","makeLink","docsUrl","UIFactory","Fragment","_Fragment","jsxs","_jsxs","jsx","_jsx","RemoteCopyModal","_pathsValues$","dispatch","visible","paths","cluster","_React$useState","useState","_React$useState2","_slicedToArray","error","setError","handleAdd","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","form","_form$getState","values","input_table_paths","pool","rest","_response","wrap","_callee$","_context","prev","next","undefined","getState","_objectWithoutProperties","_excluded","_objectSpread","_map","t0","response","data","stop","_x","apply","arguments","handleClose","pathsValues","useMemo","item","title","calculateValueOnPoolsLoaded","_ref2","loadedPoolNames","transferPool","_find","name","concat","onAdd","onClose","headerProps","initialValues","cluster_name","schema_inference_mode","output_table_path","override","fields","type","caption","extras","disabled","width","length","frozen","required","excludeClusters","items","value","text","warning","children","docsUrls","visibilityCondition","when","isActive","Boolean","tooltip","_ref3","dstCluster","placeholder","allowEphemeral","_toConsumableArray","memo"],"sources":["RemoteCopyModal.tsx"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport _ from 'lodash';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog/Dialog';\nimport {\n getRemoteCopyModalPaths,\n getRemoteCopyModalVisible,\n} from '../../../store/selectors/navigation/modals/remote-copy-modal';\nimport {\n hideRemoteCopyModal,\n remoteCopy,\n} from '../../../store/actions/navigation/modals/remote-copy-modal';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {YTError} from '../../../types';\nimport {RemoteCopyParams} from '../../../../@types/types';\nimport {AxiosError} from 'axios';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ntype Values = Omit<RemoteCopyParams, 'input_table_paths'> & {\n input_table_paths: Array<{title: string}>;\n};\n\nfunction RemoteCopyModal() {\n const dispatch = useDispatch();\n const visible = useSelector(getRemoteCopyModalVisible);\n const paths = useSelector(getRemoteCopyModalPaths);\n const cluster = useSelector(getCluster);\n\n const [error, setError] = React.useState<YTError | unknown>();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<Values>) => {\n try {\n setError(undefined);\n const {values} = form.getState();\n const {input_table_paths, pool, ...rest} = values;\n await dispatch(\n remoteCopy({\n ...rest,\n input_table_paths: _.map(input_table_paths, 'title'),\n pool: pool,\n }),\n );\n } catch (e: unknown) {\n setError((e as AxiosError<YTError>)?.response?.data || e);\n throw e;\n }\n },\n [setError],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideRemoteCopyModal());\n }, []);\n\n const pathsValues = React.useMemo(\n () =>\n _.map(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const calculateValueOnPoolsLoaded = React.useCallback(\n ({loadedPoolNames}: {loadedPoolNames: Array<string>}) => {\n const transferPool = _.find(loadedPoolNames, (name) => name === `transfer_${cluster}`);\n return transferPool || '';\n },\n [cluster],\n );\n\n return !visible ? null : (\n <YTDFDialog<Values>\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n headerProps={{\n title: 'Remote copy',\n }}\n initialValues={{\n cluster_name: cluster,\n input_table_paths: pathsValues,\n schema_inference_mode: 'auto',\n output_table_path: pathsValues[0]?.title,\n override: false,\n }}\n fields={[\n {\n name: 'cluster_name',\n type: 'cluster',\n caption: 'Source cluster',\n extras: {\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'input_table_paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Input paths' : 'Input path',\n extras: {\n frozen: true,\n },\n },\n {\n name: 'dstCluster',\n type: 'cluster',\n caption: 'Destination cluster',\n required: true,\n extras: {\n excludeClusters: [cluster],\n width: 'max',\n },\n },\n {\n name: 'output_table_path',\n type: 'text',\n caption: 'Output path',\n required: true,\n },\n {\n name: 'override',\n type: 'tumbler',\n caption: 'Override output',\n },\n {\n name: 'copy_attributes',\n type: 'tumbler',\n caption: 'Copy user attributes',\n },\n {\n name: 'schema_inference_mode',\n type: 'yt-select-single',\n caption: 'Schema inference',\n extras: {\n items: [\n {\n value: 'auto',\n text: 'Auto',\n },\n {\n value: 'from_input',\n text: 'From input',\n },\n {\n value: 'from_output',\n text: 'From output',\n },\n ],\n width: 'max',\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n warning: (\n <>\n pool must have specified{' '}\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['operations:remote_copy'],\n 'limits',\n true,\n ),\n )}\n </>\n ),\n visibilityCondition: {\n when: 'dstCluster',\n isActive: (value) => Boolean(value),\n },\n required: true,\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({dstCluster}: Values) => {\n return {\n cluster: dstCluster,\n placeholder: `(cluster: ${dstCluster}) pool name`,\n calculateValueOnPoolsLoaded,\n allowEphemeral: true,\n };\n },\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nexport default React.memo(RemoteCopyModal);\n"],"mappings":"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"}
|
@@ -42,9 +42,9 @@
|
|
42
42
|
"main": {
|
43
43
|
"assets": {
|
44
44
|
"js": [
|
45
|
-
"js/runtime.
|
45
|
+
"js/runtime.d620d412.js",
|
46
46
|
"js/vendors.e6a251eb.js",
|
47
|
-
"js/main.
|
47
|
+
"js/main.40d53a9b.js"
|
48
48
|
],
|
49
49
|
"css": [
|
50
50
|
"css/main.7bb2aff3.css"
|
@@ -78,8 +78,8 @@
|
|
78
78
|
"js/526.9338de49.chunk.js": "js/526.9338de49.chunk.js",
|
79
79
|
"js/526.9338de49.chunk.js.map": "js/526.9338de49.chunk.js.map",
|
80
80
|
"js/64.73cd3d66.chunk.js": "js/64.73cd3d66.chunk.js",
|
81
|
-
"js/719.
|
82
|
-
"js/719.
|
81
|
+
"js/719.b5654185.chunk.js": "js/719.b5654185.chunk.js",
|
82
|
+
"js/719.b5654185.chunk.js.map": "js/719.b5654185.chunk.js.map",
|
83
83
|
"js/858.73af2ce3.chunk.js": "js/858.73af2ce3.chunk.js",
|
84
84
|
"js/858.73af2ce3.chunk.js.map": "js/858.73af2ce3.chunk.js.map",
|
85
85
|
"js/861.a0939319.chunk.js": "js/861.a0939319.chunk.js",
|
@@ -93,9 +93,9 @@
|
|
93
93
|
"js/955.e1c8cf19.chunk.js": "js/955.e1c8cf19.chunk.js",
|
94
94
|
"js/955.e1c8cf19.chunk.js.LICENSE.txt": "js/955.e1c8cf19.chunk.js.LICENSE.txt",
|
95
95
|
"js/955.e1c8cf19.chunk.js.map": "js/955.e1c8cf19.chunk.js.map",
|
96
|
-
"js/main.
|
97
|
-
"js/main.
|
98
|
-
"js/runtime.
|
96
|
+
"js/main.40d53a9b.js.LICENSE.txt": "js/main.40d53a9b.js.LICENSE.txt",
|
97
|
+
"js/main.40d53a9b.js.map": "js/main.40d53a9b.js.map",
|
98
|
+
"js/runtime.d620d412.js.map": "js/runtime.d620d412.js.map",
|
99
99
|
"js/vendors.e6a251eb.js.LICENSE.txt": "js/vendors.e6a251eb.js.LICENSE.txt",
|
100
100
|
"js/vendors.e6a251eb.js.map": "js/vendors.e6a251eb.js.map",
|
101
101
|
"js/vis-network.b367d390.chunk.js.LICENSE.txt": "js/vis-network.b367d390.chunk.js.LICENSE.txt",
|
@@ -104,8 +104,8 @@
|
|
104
104
|
"json.5239aa2e.worker.js.LICENSE.txt": "json.5239aa2e.worker.js.LICENSE.txt",
|
105
105
|
"json.5239aa2e.worker.js.map": "json.5239aa2e.worker.js.map",
|
106
106
|
"main.css": "css/main.7bb2aff3.css",
|
107
|
-
"main.js": "js/main.
|
108
|
-
"runtime.js": "js/runtime.
|
107
|
+
"main.js": "js/main.40d53a9b.js",
|
108
|
+
"runtime.js": "js/runtime.d620d412.js",
|
109
109
|
"vendors.js": "js/vendors.e6a251eb.js",
|
110
110
|
"vis-network.js": "js/vis-network.b367d390.chunk.js"
|
111
111
|
}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[719],{51719:(t,e,n)=>{n.r(e),n.d(e,{default:()=>I});var a=n(19961),o=n(29382),c=n(23680),r=n(19677),i=n(89526),u=n(92070),s=n(97282),l=n(10440),f=n(73536),d=n(41691),p=n(29648),v=n(33183),m=n(82772),h=n(11356),x=n(8336),y=n(48717),C=n(80703),T=n(13363),S=n(29694),k=n(95549),b=n(64010),g=n(23509),Z=n(11453),j=n(6370),A=n(46520),_=n(18975),Y=n(34703),E=n(98383),q=n(39766),H=n(67557),N=["instance_count"],w=(0,l.Z)("chyt-page-top-row");function I(){return(0,H.jsxs)(k.x,{page:S.T3.CHYT,name:"CHYT cliques",children:[(0,H.jsx)(P,{}),(0,H.jsx)(W,{}),(0,H.jsx)(D,{})]})}function P(){var t=(0,s.k6)(),e=(0,u.v9)(j.SY),n=(0,u.v9)(g.hy),a=(0,u.v9)(g.ei),o=(0,u.I0)(),c=(0,u.v9)(Z.uH),r=i.useCallback((function(n){t.push("/".concat(e,"/").concat(S.T3.CHYT,"/").concat(n.path))}),[t,e]),l=i.useCallback((function(){o((0,Y.Wv)(c))}),[o,c]);return(0,H.jsx)(x.Z,{isActive:n,items:a,onItemClick:r,onToggle:l,toggleDisabled:!c,theme:"clear"})}function W(){var t=(0,s.k6)(),e=(0,u.v9)(j.SY),n=(0,u.v9)(Z.uH),a=i.useMemo((function(){var t=[{text:"<Root>",url:"/".concat(e,"/").concat(S.T3.CHYT),action:function(){}}];return n&&t.push({text:n,url:"/".concat(e,"/").concat(S.T3.CHYT,"/").concat(n),action:function(){}}),t}),[n]);return(0,H.jsxs)("div",{className:w("breadcrumbs"),children:[(0,H.jsx)(y.K,{className:w("editable"),onChange:function(a){a?a!==n&&t.push("/".concat(e,"/").concat(S.T3.CHYT,"/").concat(a)):t.push("/".concat(e,"/").concat(S.T3.CHYT))},text:n,disableEdit:Boolean(!n),renderEditor:function(t){return(0,H.jsx)(B,(0,r.Z)({cluster:e},t))},children:(0,H.jsx)(d.Oo,{items:a,lastDisplayedItemsCount:2,firstDisplayedItemsCount:1,renderItemContent:function(t,e){return(0,H.jsx)(C.Z,{url:t.url,theme:e?"primary":"secondary",routed:!0,children:t.text})}})}),n&&(0,H.jsx)(m.Z,{text:n})]})}function B(t){var e=t.value,n=t.onChange,a=t.className,o=t.onApply,r=t.cluster,s=t.onBlur,l=i.useState([]),d=(0,c.Z)(l,2),p=d[0],v=d[1],m=(0,u.v9)(j.Sk);return i.useEffect((function(){(0,A.W)("list",r,{},{isAdmin:m}).then((function(t){v(t.result.map((function(t){return f.Z.getValue(t)})))}))}),[m]),(0,H.jsx)(T.Z,{autoFocus:!0,className:"".concat(w("alias-suggest")," ").concat(a),text:e,filter:function(t,e){return e?p.filter((function(t){return-1!==t.indexOf(e)})):p},apply:function(t){n("string"==typeof t?t:t.value)},onItemClick:function(t){o("string"==typeof t?t:t.value)},onBlur:s})}function D(){var t=(0,E.O)(),e=(0,s.k6)(),n=(0,u.v9)(j.SY),l=i.useState(!1),f=(0,c.Z)(l,2),d=f[0],m=f[1],x=i.useState(),y=(0,c.Z)(x,2),C=y[0],T=y[1];return(0,H.jsxs)("div",{className:w("create-clique"),children:[(0,H.jsx)(p.z,{view:"action",onClick:function(){return m(!d)},children:"Create clique"}),d&&(0,H.jsx)(b.j5,{children:function(c){var i=c.defaultPoolTree;return(0,H.jsx)(h.mf,{visible:!0,className:w("create-dialog"),headerProps:{title:"Create clique"},onClose:function(){return m(!1)},onAdd:function(a){var c=a.getState().values,i=c.instance_count,u=(0,o.Z)(c,N);return t((0,_.Gl)((0,r.Z)((0,r.Z)({},u),{},{instance_count:i||1}))).then((function(){T(void 0),e.push("/".concat(n,"/chyt/").concat(u.alias,"/").concat(q.aD.SPECLET))})).catch((function(t){return T(t),Promise.reject(t)}))},fields:[{name:"alias",type:"text",caption:"Alias name",required:!0},{name:"instance_count",type:"range-input-picker",caption:"Instance count",extras:{minValue:1,maxValue:100},required:!0},{name:"tree",type:"pool-tree",caption:"Pool tree",extras:{disabled:!0}},{name:"pool",type:"pool",caption:"Pool",extras:function(t){return{poolTree:t.tree,placeholder:"Pool name...",allowEmpty:!0}}},{name:"poolNotice",type:"block",visibilityCondition:{when:"pool",isActive:function(t){return!t}},extras:{children:(0,H.jsx)(v.x,{color:"info-heavy",variant:"body-2",children:"Select a pool to start the clique after creation."})}},{name:"runAfterCreation",type:"tumbler",caption:"Start after creation",visibilityCondition:{when:"pool",isActive:function(t){return Boolean(t)}}}].concat((0,a.Z)((0,h.Lg)([C]))),initialValues:{instance_count:1,tree:i,runAfterCreation:!0}})}})]})}},46520:(t,e,n)=>{n.d(e,{W:()=>r});var a=n(19677),o=n(38615),c=n(42840);function r(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.cancelToken,u=r.skipErrorToast,s=r.successTitle,l=r.isAdmin?"?isDeveloper=true":"";return(0,c.H4)(o.Z.request({method:"POST",url:"/api/chyt/".concat(e,"/").concat(t).concat(l),data:{params:(0,a.Z)({},n)},cancelToken:i}),{toasterName:"clique-".concat(t),skipSuccessToast:!s,successTitle:s,skipErrorToast:u,errorTitle:"'".concat(t,"' action failed")}).then((function(t){return t.data}))}},18975:(t,e,n)=>{n.d(e,{Fb:()=>d,Gl:()=>v,cy:()=>m,zb:()=>p});var a=n(19677),o=n(19961),c=n(39766),r=n(57254),i=n(6370),u=n(11453),s=n(46520),l=n(80645),f=new r.Z;function d(){return function(t,e){var n=e(),l=(0,i.SY)(n),d=(0,i.Sk)(n),p=(0,u.NV)(n);t({type:c.mS.REQUEST});var v=-1===p.indexOf("pool")?["pool"]:[],m=new Set(["yt_operation_id","creator","state","health","health_reason"].concat((0,o.Z)(p),v));return(0,s.W)("list",l,{attributes:(0,o.Z)(m)},{isAdmin:d,cancelToken:f.removeAllAndGenerateNextToken()}).then((function(e){var n,o=null==e||null===(n=e.result)||void 0===n?void 0:n.map((function(t){var e=t.$value,n=t.$attributes,o=void 0===n?{}:n;return(0,a.Z)({alias:e},o)}));t({type:c.mS.SUCCESS,data:{data:{items:o}}})})).catch((function(e){(0,r.j)(e)||t({type:c.mS.FAILURE,data:{error:e}})}))}}function p(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).skipLoadList;return function(a,o){var c=o(),r=(0,i.SY)(c),u=(0,i.Sk)(c);return(0,s.W)(t,r,e,{isAdmin:u}).then((function(t){return n||a(d()),t}))}}function v(t){return function(e,n){var o=n(),c=(0,i.SY)(o),r=(0,i.Sk)(o),u=t.alias,l=t.runAfterCreation,f=t.pool,p=t.instance_count;return(0,s.W)("create",c,{alias:u,speclet_options:(0,a.Z)({active:l&&Boolean(f),instance_count:p},f?{pool:f}:void 0)},{isAdmin:r,successTitle:"".concat(u," clique created")}).finally((function(){e(d())}))}}function m(t){return function(e){return e((0,l.gb)("global::chyt::list_columns",t)).then((function(){e(d())}))}}}}]);
|
2
|
+
//# sourceMappingURL=719.b5654185.chunk.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/719.5d4d8d0a.chunk.js","mappings":"2eA8BMA,GAAQC,EAAAA,EAAAA,GAAG,qBAEF,SAASC,IACpB,OACIC,EAAAA,EAAAA,MAACC,EAAAA,EAAW,CAACC,KAAMC,EAAAA,GAAKC,KAAMC,KAAK,eAAcC,SAAA,EAC7CC,EAAAA,EAAAA,KAACC,EAAc,KACfD,EAAAA,EAAAA,KAACE,EAAgB,KACjBF,EAAAA,EAAAA,KAACG,EAAgB,MAG7B,CAEA,SAASF,IACL,IAAMG,GAAUC,EAAAA,EAAAA,MACVC,GAAUC,EAAAA,EAAAA,IAAYC,EAAAA,IACtBC,GAAuBF,EAAAA,EAAAA,IAAYG,EAAAA,IACnCC,GAAaJ,EAAAA,EAAAA,IAAYK,EAAAA,IACzBC,GAAWC,EAAAA,EAAAA,MACXC,GAAgBR,EAAAA,EAAAA,IAAYS,EAAAA,IAE5BC,EAA2BC,EAAAA,aAC7B,SAACC,GACGf,EAAQgB,KAAK,IAADC,OAAKf,EAAO,KAAAe,OAAIzB,EAAAA,GAAKC,KAAI,KAAAwB,OAAIF,EAAKG,MAClD,GACA,CAAClB,EAASE,IAGRiB,EAAwBL,EAAAA,aAAkB,WAC5CL,GAASW,EAAAA,EAAAA,IAAoBT,GACjC,GAAG,CAACF,EAAUE,IAEd,OACIf,EAAAA,EAAAA,KAACyB,EAAAA,EAAU,CACPC,SAAUjB,EACVkB,MAAOhB,EACPiB,YAAaX,EACbY,SAAUN,EACVO,gBAAiBf,EACjBgB,MAAO,SAGnB,CAEA,SAAS7B,IACL,IAAME,GAAUC,EAAAA,EAAAA,MACVC,GAAUC,EAAAA,EAAAA,IAAYC,EAAAA,IACtBwB,GAAQzB,EAAAA,EAAAA,IAAYS,EAAAA,IACpBW,EAAQT,EAAAA,SAAc,WACxB,IAAMe,EAA8C,CAChD,CACIC,KAAM,SACNC,IAAI,IAADd,OAAMf,EAAO,KAAAe,OAAIzB,EAAAA,GAAKC,MACzBuC,OAAQ,WAAO,IAMvB,OAHIJ,GACAC,EAAIb,KAAK,CAACc,KAAMF,EAAOG,IAAI,IAADd,OAAMf,EAAO,KAAAe,OAAIzB,EAAAA,GAAKC,KAAI,KAAAwB,OAAIW,GAASI,OAAQ,WAAO,IAE7EH,CACX,GAAG,CAACD,IAEJ,OACIvC,EAAAA,EAAAA,MAAA,OAAK4C,UAAW/C,EAAM,eAAeS,SAAA,EACjCC,EAAAA,EAAAA,KAACsC,EAAAA,EAAc,CACXD,UAAW/C,EAAM,YACjBiD,SAAU,SAACL,GACFA,EAEMA,IAASF,GAChB5B,EAAQgB,KAAK,IAADC,OAAKf,EAAO,KAAAe,OAAIzB,EAAAA,GAAKC,KAAI,KAAAwB,OAAIa,IAFzC9B,EAAQgB,KAAK,IAADC,OAAKf,EAAO,KAAAe,OAAIzB,EAAAA,GAAKC,MAIzC,EACAqC,KAAMF,EACNQ,YAAaC,SAAST,GACtBU,aAAc,SAACC,GAAK,OAAK3C,EAAAA,EAAAA,KAAC4C,GAAgBC,EAAAA,EAAAA,GAAA,CAACvC,QAASA,GAAaqC,GAAS,EAAC5C,UAE3EC,EAAAA,EAAAA,KAAC8C,EAAAA,GAAW,CACRnB,MAAOA,EACPoB,wBAAyB,EACzBC,yBAA0B,EAC1BC,kBAAmB,SAAC9B,EAAM+B,GACtB,OACIlD,EAAAA,EAAAA,KAACmD,EAAAA,EAAI,CAAChB,IAAKhB,EAAKgB,IAAKJ,MAAOmB,EAAY,UAAY,YAAaE,QAAM,EAAArD,SAClEoB,EAAKe,MAGlB,MAGPF,IAAShC,EAAAA,EAAAA,KAACqD,EAAAA,EAAe,CAACnB,KAAMF,MAG7C,CAEA,SAASY,EAAgBU,GAcrB,IAbAC,EAAKD,EAALC,MACAhB,EAAQe,EAARf,SACAF,EAASiB,EAATjB,UACAmB,EAAOF,EAAPE,QACAlD,EAAOgD,EAAPhD,QACAmD,EAAMH,EAANG,OASAC,EAA0BxC,EAAAA,SAA8B,IAAGyC,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAApD/B,EAAKgC,EAAA,GAAEE,EAAQF,EAAA,GAEhBG,GAAUvD,EAAAA,EAAAA,IAAYwD,EAAAA,IAQ5B,OANA7C,EAAAA,WAAgB,YACZ8C,EAAAA,EAAAA,GAAc,OAAQ1D,EAAS,CAAC,EAAG,CAACwD,QAAAA,IAAUG,MAAK,SAACC,GAChDL,EAASK,EAAKC,OAAOC,KAAI,SAACjD,GAAI,OAAKkD,EAAAA,EAAMC,SAASnD,EAAK,IAC3D,GACJ,GAAG,CAAC2C,KAGA9D,EAAAA,EAAAA,KAACuE,EAAAA,EAAO,CACJC,WAAS,EACTnC,UAAS,GAAAhB,OAAK/B,EAAM,iBAAgB,KAAA+B,OAAIgB,GACxCH,KAAMqB,EACNkB,OAAQ,SAACC,EAAIxC,GACT,OAAKA,EAGEP,EAAM8C,QAAO,SAACtD,GACjB,OAAQ,IAAMA,EAAKwD,QAAQzC,EAC/B,IAJWP,CAKf,EACAiD,MAAO,SAACzD,GAEAoB,EADA,iBAAoBpB,EACXA,EAEAA,EAAKoC,MAEtB,EACA3B,YAAa,SAACT,GACVqC,EAAwB,iBAATrC,EAAoBA,EAAOA,EAAKoC,MACnD,EACAE,OAAQA,GAGpB,CAUA,SAAStD,IACL,IAAMU,GAAWgE,EAAAA,EAAAA,KACXzE,GAAUC,EAAAA,EAAAA,MACVC,GAAUC,EAAAA,EAAAA,IAAYC,EAAAA,IAC5BsE,EAA8B5D,EAAAA,UAAe,GAAM6D,GAAAnB,EAAAA,EAAAA,GAAAkB,EAAA,GAA5CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAE1BG,EAA0BhE,EAAAA,WAAqCiE,GAAAvB,EAAAA,EAAAA,GAAAsB,EAAA,GAAxDE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAEtB,OACI1F,EAAAA,EAAAA,MAAA,OAAK4C,UAAW/C,EAAM,iBAAiBS,SAAA,EACnCC,EAAAA,EAAAA,KAACsF,EAAAA,EAAM,CAACC,KAAK,SAASC,QAAS,kBAAMP,GAAYD,EAAQ,EAACjF,SAAC,kBAG1DiF,IACGhF,EAAAA,EAAAA,KAACyF,EAAAA,EAAsB,CAAA1F,SAClB,SAAA2F,GAAA,IAAEC,EAAeD,EAAfC,gBAAe,OACd3F,EAAAA,EAAAA,KAAC4F,EAAAA,GAAU,CACPZ,SAAO,EACP3C,UAAW/C,EAAM,iBACjBuG,YAAa,CAACC,MAAO,iBACrBC,QAAS,kBAAMd,GAAW,EAAM,EAChCe,MAAO,SAACC,GACJ,IAEmBC,EAAfD,EAAKE,WADLC,OAASC,EAAcH,EAAdG,eAAmBC,GAAIC,EAAAA,EAAAA,GAAAL,EAAAM,GAEpC,OAAO3F,GACH4F,EAAAA,EAAAA,KAAgB5D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACXyD,GAAI,IACPD,eAAgBA,GAAkB,MAGrCpC,MAAK,WACFoB,OAASqB,GACTtG,EAAQgB,KAAK,IAADC,OACJf,EAAO,UAAAe,OAASiF,EAAKtE,MAAK,KAAAX,OAAIsF,EAAAA,GAAkBC,SAE5D,IAAE,OACK,SAACC,GAEJ,OADAxB,EAASwB,GACFC,QAAQC,OAAOF,EAC1B,GACR,EACAG,OAAM,CACF,CACIlH,KAAM,QACNmH,KAAM,OACNC,QAAS,aACTC,UAAU,GAEd,CACIrH,KAAM,iBACNmH,KAAM,qBACNC,QAAS,iBACTE,OAAQ,CACJC,SAAU,EACVC,SAAU,KAEdH,UAAU,GAEd,CACIrH,KAAM,OACNmH,KAAM,YACNC,QAAS,YACTE,OAAQ,CACJG,UAAU,IAGlB,CACIzH,KAAM,OACNmH,KAAM,OACNC,QAAS,OACTE,OAAQ,SAAAI,GACJ,MAAO,CACHC,SAFMD,EAAJE,KAGFC,YAAa,eACbC,YAAY,EAEpB,GAEJ,CACI9H,KAAM,aACNmH,KAAM,QACNY,oBAAqB,CACjBC,KAAM,OACNpG,SAAQ,SAACqG,GACL,OAAQA,CACZ,GAEJX,OAAQ,CACJrH,UACIC,EAAAA,EAAAA,KAACgI,EAAAA,EAAI,CAACC,MAAM,aAAaC,QAAQ,SAAQnI,SAAC,wDAMtD,CACID,KAAM,mBACNmH,KAAM,UACNC,QAAS,uBACTW,oBAAqB,CACjBC,KAAM,OACNpG,SAAQ,SAACyG,GACL,OAAO1F,QAAQ0F,EACnB,KAEP9G,QAAA+G,EAAAA,EAAAA,IACEC,EAAAA,EAAAA,IAAgB,CAACjD,MAExBkD,cAAe,CACXjC,eAAgB,EAChBqB,KAAM/B,EACN4C,kBAAkB,IAExB,MAM1B,C,wECjNO,SAASvE,EAIZ5B,EACA9B,EACAkI,GAYD,IAADlF,EAAAmF,UAAAC,OAAA,QAAAhC,IAAA+B,UAAA,GAAAA,UAAA,GADM,CAAC,EATDE,EAAWrF,EAAXqF,YACAC,EAActF,EAAdsF,eACAC,EAAYvF,EAAZuF,aASEC,EARKxF,EAAPQ,QAQoB,oBAAsB,GAC9C,OAAOiF,EAAAA,EAAAA,IACHC,EAAAA,EAAMC,QAA6B,CAC/BC,OAAQ,OACR/G,IAAI,aAADd,OAAef,EAAO,KAAAe,OAAIe,GAAMf,OAAGyH,GACtC5E,KAAM,CACFsE,QAAM3F,EAAAA,EAAAA,GAAA,GAAM2F,IAEhBG,YAAAA,IAEJ,CACIQ,YAAY,UAAD9H,OAAYe,GACvBgH,kBAAmBP,EACnBA,aAAAA,EACAD,eAAAA,EACAS,WAAW,IAADhI,OAAMe,EAAM,qBAE5B6B,MAAK,SAACqF,GACJ,OAAOA,EAASpF,IACpB,GACJ,C,0JCzHMqF,EAAe,IAAIC,EAAAA,EAElB,SAASC,IACZ,OAAO,SAAC5I,EAAUsF,GACd,IAAMuD,EAAQvD,IACR7F,GAAUE,EAAAA,EAAAA,IAAWkJ,GACrB5F,GAAUC,EAAAA,EAAAA,IAAY2F,GACtBC,GAAUC,EAAAA,EAAAA,IAA0BF,GAE1C7I,EAAS,CAACoG,KAAM4C,EAAAA,GAAUC,UAE1B,IAAMC,GAAgB,IAAMJ,EAAQhF,QAAQ,QAAU,CAAC,QAAmB,GAEpEqF,EAAgB,IAAIC,IAAI,CAC1B,kBACA,UACA,QACA,SACA,iBAAe5I,QAAA+G,EAAAA,EAAAA,GACZuB,GACAI,IAGP,OAAO/F,EAAAA,EAAAA,GACH,OACA1D,EACA,CAAC4J,YAAU9B,EAAAA,EAAAA,GAAM4B,IACjB,CAAClG,QAAAA,EAAS6E,YAAaY,EAAaY,kCAEnClG,MAAK,SAACC,GAAU,IAADkG,EACNzI,EAAQuC,SAAY,QAARkG,EAAJlG,EAAMC,cAAM,IAAAiG,OAAA,EAAZA,EAAchG,KAAI,SAAAd,GAAiC,IAA/B+G,EAAM/G,EAAN+G,OAAMC,EAAAhH,EAAEiH,YAAAA,OAAW,IAAAD,EAAG,CAAC,EAACA,EACtD,OAAAzH,EAAAA,EAAAA,GAAA,CACIb,MAAOqI,GACJE,EAEX,IAEA1J,EAAS,CAACoG,KAAM4C,EAAAA,GAAUW,QAAStG,KAAM,CAACA,KAAM,CAACvC,MAAAA,KACrD,IAAE,OACK,SAACyD,IACCqF,EAAAA,EAAAA,GAAYrF,IACbvE,EAAS,CAACoG,KAAM4C,EAAAA,GAAUa,QAASxG,KAAM,CAACkB,MAAAA,IAElD,GACR,CACJ,CAEO,SAASuF,EAIZvI,EACAoG,GAEyC,IADxCoC,GACuCnC,UAAAC,OAAA,QAAAhC,IAAA+B,UAAA,GAAAA,UAAA,GADG,CAAC,GAA3CmC,aAED,OAAO,SAAC/J,EAAUsF,GACd,IAAMuD,EAAQvD,IACR7F,GAAUE,EAAAA,EAAAA,IAAWkJ,GACrB5F,GAAUC,EAAAA,EAAAA,IAAY2F,GAE5B,OAAO1F,EAAAA,EAAAA,GAAc5B,EAAQ9B,EAASkI,EAAQ,CAAC1E,QAAAA,IAAUG,MAAK,SAAC4G,GAI3D,OAHKD,GACD/J,EAAS4I,KAENoB,CACX,GACJ,CACJ,CAEO,SAASpE,EAAiB+B,GAM7B,OAAO,SAAC3H,EAAUsF,GACd,IAAMuD,EAAQvD,IACR7F,GAAUE,EAAAA,EAAAA,IAAWkJ,GACrB5F,GAAUC,EAAAA,EAAAA,IAAY2F,GAErB1H,EAAiDwG,EAAjDxG,MAAOuG,EAA0CC,EAA1CD,iBAAkBR,EAAwBS,EAAxBT,KAAM1B,EAAkBmC,EAAlBnC,eACtC,OAAOrC,EAAAA,EAAAA,GACH,SACA1D,EACA,CACI0B,MAAAA,EACA8I,iBAAejI,EAAAA,EAAAA,GAAA,CACXkI,OAAQxC,GAAoB9F,QAAQsF,GACpC1B,eAAAA,GACI0B,EAAO,CAACA,KAAAA,QAAQrB,IAG5B,CAAC5C,QAAAA,EAAS+E,aAAa,GAADxH,OAAKW,EAAK,qBACnC,SAAS,WACNnB,EAAS4I,IACb,GACJ,CACJ,CAEO,SAASuB,EAAsBrB,GAClC,OAAO,SAAC9I,GACJ,OAAOA,GAASoK,EAAAA,EAAAA,IAAgB,6BAA8BtB,IAAU1F,MAAK,WACzEpD,EAAS4I,IACb,GACJ,CACJ,C","sources":["webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageTopRow.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/api.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {Breadcrumbs, BreadcrumbsItem, Button, Text} from '@gravity-ui/uikit';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {YTDFDialog, makeErrorFields} from '../../components/Dialog/Dialog';\nimport Favourites, {FavouritesItem} from '../../components/Favourites/Favourites';\nimport {EditableAsText} from '../../components/EditableAsText/EditableAsText';\nimport Link from '../../components/Link/Link';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster, isDeveloper} from '../../store/selectors/global';\nimport {chytApiAction} from '../../store/actions/chyt/api';\nimport {chytCliqueCreate} from '../../store/actions/chyt/list';\nimport {chytToggleFavourite} from '../../store/actions/favourites';\nimport {useThunkDispatch} from '../../store/thunkDispatch';\nimport {YTError} from '../../../@types/types';\nimport {ChytCliquePageTab} from '../../constants/chyt-page';\n\nimport './ChytPageTopRow.scss';\n\nconst block = cn('chyt-page-top-row');\n\nexport default function ChytPageTopRow() {\n return (\n <RowWithName page={Page.CHYT} name=\"CHYT cliques\">\n <ChytFavourites />\n <ChytBreadcrumsbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumsbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n const items = React.useMemo(() => {\n const res: Array<BreadcrumbsItem & {url: string}> = [\n {\n text: '<Root>',\n url: `/${cluster}/${Page.CHYT}`,\n action: () => {},\n },\n ];\n if (alias) {\n res.push({text: alias, url: `/${cluster}/${Page.CHYT}/${alias}`, action: () => {}});\n }\n return res;\n }, [alias]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={(item, isCurrent) => {\n return (\n <Link url={item.url} theme={isCurrent ? 'primary' : 'secondary'} routed>\n {item.text}\n </Link>\n );\n }}\n />\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string;\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n extras: {\n disabled: true,\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTree: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: defaultPoolTree,\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n","import axios, {CancelToken} from 'axios';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTError} from '../../../../@types/types';\nimport {OptionsGroup} from '../../../components/Dialog/df-dialog-utils';\n\nexport type WithResult<T> = {result: T};\n\nexport type ChytListAttributes = keyof Required<ChytListResponseItem>['$attributes'];\n\nexport type ChytDescribeOptionsType = Array<OptionsGroup>;\n\nexport type ChytApi =\n | {action: 'list'; params: {attributes?: Array<ChytListAttributes>}; response: ChytListResponse}\n | {action: 'start'; params: {alias: string; untracked?: boolean}; response: void}\n | {action: 'stop'; params: {alias: string}; response: void}\n | {action: 'remove'; params: {alias: string}; response: void}\n | {\n action: 'create';\n params: {\n alias: string;\n speclet_options: {\n active: boolean;\n pool?: string;\n instance_count: number;\n };\n };\n response: void;\n }\n | {\n action: 'edit_options';\n params: {\n alias: string;\n options_to_set: Partial<ChytListResponseItem['$attributes']>;\n options_to_remove: Array<ChytListAttributes>;\n };\n response: void;\n }\n | {\n action: 'describe_options';\n params: {alias: string};\n response: WithResult<ChytDescribeOptionsType>;\n }\n | {action: 'get_speclet'; params: {alias: string}; response: WithResult<unknown>}\n | {action: 'get_brief_info'; params: {alias: string}; response: WithResult<ChytStatusResponse>};\n\nexport type ChytStatusResponse = {\n ctl_attributes: {\n instance_count?: number;\n total_cpu?: number;\n total_memory?: number;\n };\n yt_operation: {\n id?: string;\n state?: string;\n start_time?: string;\n finish_time?: string;\n };\n state?: ChytCliqueStateType;\n health?: ChytCliqueHealthType;\n health_reason?: unknown;\n incarnation_index?: number;\n creator?: string;\n speclet_modification_time?: string;\n strawberry_state_modification_time?: string;\n stage?: string;\n\n pool?: string;\n error?: YTError;\n};\n\nexport type ChytListResponse = WithResult<Array<ChytListResponseItem>>;\n\nexport type ChytListResponseItem = {\n $value: string;\n $attributes?: {\n pool?: string;\n creator?: string;\n creation_time?: string;\n health?: ChytCliqueHealthType;\n health_reason?: string;\n instance_count?: number;\n speclet_modification_time?: string;\n stage?: string;\n state?: ChytCliqueStateType;\n strawberry_state_modification_time?: string;\n total_cpu?: number;\n total_memory?: number;\n yt_operation_id?: string;\n yt_operation_finish_time?: string;\n yt_operation_start_time?: string;\n };\n};\n\nexport type ChytCliqueHealthType = 'good' | 'pending' | 'failed';\nexport type ChytCliqueStateType = 'active' | 'inactive' | 'untracked';\n\nexport function chytApiAction<\n T extends ChytApi['action'] = never,\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n cluster: string,\n params: ApiItem['params'],\n {\n cancelToken,\n skipErrorToast,\n successTitle,\n isAdmin,\n }: {\n cancelToken?: CancelToken;\n skipErrorToast?: boolean;\n successTitle?: string;\n isAdmin?: boolean;\n } = {},\n) {\n const query = isAdmin ? '?isDeveloper=true' : '';\n return wrapApiPromiseByToaster(\n axios.request<ApiItem['response']>({\n method: 'POST',\n url: `/api/chyt/${cluster}/${action}${query}`,\n data: {\n params: {...params},\n },\n cancelToken,\n }),\n {\n toasterName: `clique-${action}`,\n skipSuccessToast: !successTitle,\n successTitle,\n skipErrorToast,\n errorTitle: `'${action}' action failed`,\n },\n ).then((response) => {\n return response.data;\n });\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport type {RootState} from '../../reducers';\nimport type {ChytListAction} from '../../reducers/chyt/list';\nimport {CHYT_LIST} from '../../../constants/chyt-page';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {ChytApi, chytApiAction} from './api';\nimport {SettingsThunkAction, setSettingByKey} from '../settings';\n\ntype ChytListThunkAction<T> = ThunkAction<Promise<T>, RootState, unknown, ChytListAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadList(): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n const columns = getChytListVisibleColumns(state);\n\n dispatch({type: CHYT_LIST.REQUEST});\n\n const extraColumns = -1 === columns.indexOf('pool') ? ['pool' as const] : [];\n\n const attributesSet = new Set([\n 'yt_operation_id' as const,\n 'creator' as const,\n 'state' as const,\n 'health' as const,\n 'health_reason' as const,\n ...columns,\n ...extraColumns,\n ]);\n\n return chytApiAction(\n 'list',\n cluster,\n {attributes: [...attributesSet]},\n {isAdmin, cancelToken: cancelHelper.removeAllAndGenerateNextToken()},\n )\n .then((data) => {\n const items = data?.result?.map(({$value, $attributes = {}}) => {\n return {\n alias: $value,\n ...$attributes,\n };\n });\n\n dispatch({type: CHYT_LIST.SUCCESS, data: {data: {items}}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_LIST.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytListAction<\n T extends ChytApi['action'],\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n params: ApiItem['params'],\n {skipLoadList}: {skipLoadList?: boolean} = {},\n): ChytListThunkAction<ApiItem['response']> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(action, cluster, params, {isAdmin}).then((d) => {\n if (!skipLoadList) {\n dispatch(chytLoadList());\n }\n return d;\n });\n };\n}\n\nexport function chytCliqueCreate(params: {\n alias: string;\n instance_count: number;\n pool: string;\n runAfterCreation: boolean;\n}): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const {alias, runAfterCreation, pool, instance_count} = params;\n return chytApiAction(\n 'create',\n cluster,\n {\n alias,\n speclet_options: {\n active: runAfterCreation && Boolean(pool),\n instance_count,\n ...(pool ? {pool} : undefined),\n },\n },\n {isAdmin, successTitle: `${alias} clique created`},\n ).finally(() => {\n dispatch(chytLoadList());\n });\n };\n}\n\nexport function chytSetVisibleColumns(columns: Array<string>): SettingsThunkAction {\n return (dispatch) => {\n return dispatch(setSettingByKey('global::chyt::list_columns', columns)).then(() => {\n dispatch(chytLoadList());\n });\n };\n}\n"],"names":["block","cn","ChytPageTopRow","_jsxs","RowWithName","page","Page","CHYT","name","children","_jsx","ChytFavourites","ChytBreadcrumsbs","CreateChytButton","history","useHistory","cluster","useSelector","getCluster","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","dispatch","useDispatch","currentClique","getChytCurrentAlias","handleFavouriteItemClick","React","item","push","concat","path","handleFavouriteToggle","chytToggleFavourite","Favourites","isActive","items","onItemClick","onToggle","toggleDisabled","theme","alias","res","text","url","action","className","EditableAsText","onChange","disableEdit","Boolean","renderEditor","props","ChytAliasSuggest","_objectSpread","Breadcrumbs","lastDisplayedItemsCount","firstDisplayedItemsCount","renderItemContent","isCurrent","Link","routed","ClipboardButton","_ref","value","onApply","onBlur","_React$useState","_React$useState2","_slicedToArray","setItems","isAdmin","isDeveloper","chytApiAction","then","data","result","map","ypath","getValue","Suggest","autoFocus","filter","_x","indexOf","apply","useThunkDispatch","_React$useState3","_React$useState4","visible","setVisible","_React$useState5","_React$useState6","error","setError","Button","view","onClick","WaitForDefaultPoolTree","_ref2","defaultPoolTree","YTDFDialog","headerProps","title","onClose","onAdd","form","_form$getState$values","getState","values","instance_count","rest","_objectWithoutProperties","_excluded","chytCliqueCreate","undefined","ChytCliquePageTab","SPECLET","e","Promise","reject","fields","type","caption","required","extras","minValue","maxValue","disabled","_ref3","poolTree","tree","placeholder","allowEmpty","visibilityCondition","when","pool","Text","color","variant","v","_toConsumableArray","makeErrorFields","initialValues","runAfterCreation","params","arguments","length","cancelToken","skipErrorToast","successTitle","query","wrapApiPromiseByToaster","axios","request","method","toasterName","skipSuccessToast","errorTitle","response","cancelHelper","CancelHelper","chytLoadList","state","columns","getChytListVisibleColumns","CHYT_LIST","REQUEST","extraColumns","attributesSet","Set","attributes","removeAllAndGenerateNextToken","_data$result","$value","_ref$$attributes","$attributes","SUCCESS","isCancelled","FAILURE","chytListAction","skipLoadList","d","speclet_options","active","chytSetVisibleColumns","setSettingByKey"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/719.b5654185.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageTopRow.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/api.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts"],"sourcesContent":["import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {Breadcrumbs, BreadcrumbsItem, Button, Text} from '@gravity-ui/uikit';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {YTDFDialog, makeErrorFields} from '../../components/Dialog/Dialog';\nimport Favourites, {FavouritesItem} from '../../components/Favourites/Favourites';\nimport {EditableAsText} from '../../components/EditableAsText/EditableAsText';\nimport Link from '../../components/Link/Link';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster, isDeveloper} from '../../store/selectors/global';\nimport {chytApiAction} from '../../store/actions/chyt/api';\nimport {chytCliqueCreate} from '../../store/actions/chyt/list';\nimport {chytToggleFavourite} from '../../store/actions/favourites';\nimport {useThunkDispatch} from '../../store/thunkDispatch';\nimport {YTError} from '../../../@types/types';\nimport {ChytCliquePageTab} from '../../constants/chyt-page';\n\nimport './ChytPageTopRow.scss';\n\nconst block = cn('chyt-page-top-row');\n\nexport default function ChytPageTopRow() {\n return (\n <RowWithName page={Page.CHYT} name=\"CHYT cliques\">\n <ChytFavourites />\n <ChytBreadcrumsbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumsbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n const items = React.useMemo(() => {\n const res: Array<BreadcrumbsItem & {url: string}> = [\n {\n text: '<Root>',\n url: `/${cluster}/${Page.CHYT}`,\n action: () => {},\n },\n ];\n if (alias) {\n res.push({text: alias, url: `/${cluster}/${Page.CHYT}/${alias}`, action: () => {}});\n }\n return res;\n }, [alias]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={(item, isCurrent) => {\n return (\n <Link url={item.url} theme={isCurrent ? 'primary' : 'secondary'} routed>\n {item.text}\n </Link>\n );\n }}\n />\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string;\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n extras: {\n disabled: true,\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTree: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: defaultPoolTree,\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n","import axios, {CancelToken} from 'axios';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTError} from '../../../../@types/types';\nimport {OptionsGroup} from '../../../components/Dialog/df-dialog-utils';\n\nexport type WithResult<T> = {result: T};\n\nexport type ChytListAttributes = keyof Required<ChytListResponseItem>['$attributes'];\n\nexport type ChytDescribeOptionsType = Array<OptionsGroup>;\n\nexport type ChytApi =\n | {action: 'list'; params: {attributes?: Array<ChytListAttributes>}; response: ChytListResponse}\n | {action: 'start'; params: {alias: string; untracked?: boolean}; response: void}\n | {action: 'stop'; params: {alias: string}; response: void}\n | {action: 'remove'; params: {alias: string}; response: void}\n | {\n action: 'create';\n params: {\n alias: string;\n speclet_options: {\n active: boolean;\n pool?: string;\n instance_count: number;\n };\n };\n response: void;\n }\n | {\n action: 'edit_options';\n params: {\n alias: string;\n options_to_set: Partial<ChytListResponseItem['$attributes']>;\n options_to_remove: Array<ChytListAttributes>;\n };\n response: void;\n }\n | {\n action: 'describe_options';\n params: {alias: string};\n response: WithResult<ChytDescribeOptionsType>;\n }\n | {action: 'get_speclet'; params: {alias: string}; response: WithResult<unknown>}\n | {action: 'get_brief_info'; params: {alias: string}; response: WithResult<ChytStatusResponse>};\n\nexport type ChytStatusResponse = {\n ctl_attributes: {\n instance_count?: number;\n total_cpu?: number;\n total_memory?: number;\n };\n yt_operation: {\n id?: string;\n state?: string;\n start_time?: string;\n finish_time?: string;\n };\n state?: ChytCliqueStateType;\n health?: ChytCliqueHealthType;\n health_reason?: unknown;\n incarnation_index?: number;\n creator?: string;\n speclet_modification_time?: string;\n strawberry_state_modification_time?: string;\n stage?: string;\n\n pool?: string;\n error?: YTError;\n};\n\nexport type ChytListResponse = WithResult<Array<ChytListResponseItem>>;\n\nexport type ChytListResponseItem = {\n $value: string;\n $attributes?: {\n pool?: string;\n creator?: string;\n creation_time?: string;\n health?: ChytCliqueHealthType;\n health_reason?: string;\n instance_count?: number;\n speclet_modification_time?: string;\n stage?: string;\n state?: ChytCliqueStateType;\n strawberry_state_modification_time?: string;\n total_cpu?: number;\n total_memory?: number;\n yt_operation_id?: string;\n yt_operation_finish_time?: string;\n yt_operation_start_time?: string;\n };\n};\n\nexport type ChytCliqueHealthType = 'good' | 'pending' | 'failed';\nexport type ChytCliqueStateType = 'active' | 'inactive' | 'untracked';\n\nexport function chytApiAction<\n T extends ChytApi['action'] = never,\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n cluster: string,\n params: ApiItem['params'],\n {\n cancelToken,\n skipErrorToast,\n successTitle,\n isAdmin,\n }: {\n cancelToken?: CancelToken;\n skipErrorToast?: boolean;\n successTitle?: string;\n isAdmin?: boolean;\n } = {},\n) {\n const query = isAdmin ? '?isDeveloper=true' : '';\n return wrapApiPromiseByToaster(\n axios.request<ApiItem['response']>({\n method: 'POST',\n url: `/api/chyt/${cluster}/${action}${query}`,\n data: {\n params: {...params},\n },\n cancelToken,\n }),\n {\n toasterName: `clique-${action}`,\n skipSuccessToast: !successTitle,\n successTitle,\n skipErrorToast,\n errorTitle: `'${action}' action failed`,\n },\n ).then((response) => {\n return response.data;\n });\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport type {RootState} from '../../reducers';\nimport type {ChytListAction} from '../../reducers/chyt/list';\nimport {CHYT_LIST} from '../../../constants/chyt-page';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {ChytApi, chytApiAction} from './api';\nimport {SettingsThunkAction, setSettingByKey} from '../settings';\n\ntype ChytListThunkAction<T> = ThunkAction<Promise<T>, RootState, unknown, ChytListAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadList(): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n const columns = getChytListVisibleColumns(state);\n\n dispatch({type: CHYT_LIST.REQUEST});\n\n const extraColumns = -1 === columns.indexOf('pool') ? ['pool' as const] : [];\n\n const attributesSet = new Set([\n 'yt_operation_id' as const,\n 'creator' as const,\n 'state' as const,\n 'health' as const,\n 'health_reason' as const,\n ...columns,\n ...extraColumns,\n ]);\n\n return chytApiAction(\n 'list',\n cluster,\n {attributes: [...attributesSet]},\n {isAdmin, cancelToken: cancelHelper.removeAllAndGenerateNextToken()},\n )\n .then((data) => {\n const items = data?.result?.map(({$value, $attributes = {}}) => {\n return {\n alias: $value,\n ...$attributes,\n };\n });\n\n dispatch({type: CHYT_LIST.SUCCESS, data: {data: {items}}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_LIST.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytListAction<\n T extends ChytApi['action'],\n ApiItem extends ChytApi & {action: T} = ChytApi & {action: T},\n>(\n action: T,\n params: ApiItem['params'],\n {skipLoadList}: {skipLoadList?: boolean} = {},\n): ChytListThunkAction<ApiItem['response']> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n return chytApiAction(action, cluster, params, {isAdmin}).then((d) => {\n if (!skipLoadList) {\n dispatch(chytLoadList());\n }\n return d;\n });\n };\n}\n\nexport function chytCliqueCreate(params: {\n alias: string;\n instance_count: number;\n pool: string;\n runAfterCreation: boolean;\n}): ChytListThunkAction<void> {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const {alias, runAfterCreation, pool, instance_count} = params;\n return chytApiAction(\n 'create',\n cluster,\n {\n alias,\n speclet_options: {\n active: runAfterCreation && Boolean(pool),\n instance_count,\n ...(pool ? {pool} : undefined),\n },\n },\n {isAdmin, successTitle: `${alias} clique created`},\n ).finally(() => {\n dispatch(chytLoadList());\n });\n };\n}\n\nexport function chytSetVisibleColumns(columns: Array<string>): SettingsThunkAction {\n return (dispatch) => {\n return dispatch(setSettingByKey('global::chyt::list_columns', columns)).then(() => {\n dispatch(chytLoadList());\n });\n };\n}\n"],"names":["block","cn","ChytPageTopRow","_jsxs","RowWithName","page","Page","CHYT","name","children","_jsx","ChytFavourites","ChytBreadcrumsbs","CreateChytButton","history","useHistory","cluster","useSelector","getCluster","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","dispatch","useDispatch","currentClique","getChytCurrentAlias","handleFavouriteItemClick","React","item","push","concat","path","handleFavouriteToggle","chytToggleFavourite","Favourites","isActive","items","onItemClick","onToggle","toggleDisabled","theme","alias","res","text","url","action","className","EditableAsText","onChange","disableEdit","Boolean","renderEditor","props","ChytAliasSuggest","_objectSpread","Breadcrumbs","lastDisplayedItemsCount","firstDisplayedItemsCount","renderItemContent","isCurrent","Link","routed","ClipboardButton","_ref","value","onApply","onBlur","_React$useState","_React$useState2","_slicedToArray","setItems","isAdmin","isDeveloper","chytApiAction","then","data","result","map","ypath","getValue","Suggest","autoFocus","filter","_x","indexOf","apply","useThunkDispatch","_React$useState3","_React$useState4","visible","setVisible","_React$useState5","_React$useState6","error","setError","Button","view","onClick","WaitForDefaultPoolTree","_ref2","defaultPoolTree","YTDFDialog","headerProps","title","onClose","onAdd","form","_form$getState$values","getState","values","instance_count","rest","_objectWithoutProperties","_excluded","chytCliqueCreate","undefined","ChytCliquePageTab","SPECLET","e","Promise","reject","fields","type","caption","required","extras","minValue","maxValue","disabled","_ref3","poolTree","tree","placeholder","allowEmpty","visibilityCondition","when","pool","Text","color","variant","v","_toConsumableArray","makeErrorFields","initialValues","runAfterCreation","params","arguments","length","cancelToken","skipErrorToast","successTitle","query","wrapApiPromiseByToaster","axios","request","method","toasterName","skipSuccessToast","errorTitle","response","cancelHelper","CancelHelper","chytLoadList","state","columns","getChytListVisibleColumns","CHYT_LIST","REQUEST","extraColumns","attributesSet","Set","attributes","removeAllAndGenerateNextToken","_data$result","$value","_ref$$attributes","$attributes","SUCCESS","isCancelled","FAILURE","chytListAction","skipLoadList","d","speclet_options","active","chytSetVisibleColumns","setSettingByKey"],"sourceRoot":""}
|