@ytsaurus/ui 1.11.0 → 1.11.1

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 (79) hide show
  1. package/build/cjs/ui/components/OperationPool/OperationPool.d.ts +1 -0
  2. package/build/cjs/ui/components/OperationPool/OperationPool.js +3 -2
  3. package/build/cjs/ui/components/OperationPool/OperationPool.js.map +1 -1
  4. package/build/cjs/ui/components/UserLink/UserLink.css +1 -0
  5. package/build/cjs/ui/components/UserLink/UserLink.css.map +1 -1
  6. package/build/cjs/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.css +1 -1
  7. package/build/cjs/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.css.map +1 -1
  8. package/build/cjs/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.d.ts +2 -1
  9. package/build/cjs/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.js +40 -32
  10. package/build/cjs/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.js.map +1 -1
  11. package/build/cjs/ui/pages/chyt/ChytPageList/ChytPageListTable.css +13 -0
  12. package/build/cjs/ui/pages/chyt/ChytPageList/ChytPageListTable.css.map +1 -1
  13. package/build/cjs/ui/pages/chyt/ChytPageList/ChytPageListTable.js +15 -10
  14. package/build/cjs/ui/pages/chyt/ChytPageList/ChytPageListTable.js.map +1 -1
  15. package/build/cjs/ui/pages/chyt/components/CliqueState.js +1 -0
  16. package/build/cjs/ui/pages/chyt/components/CliqueState.js.map +1 -1
  17. package/build/cjs/ui/store/actions/chyt/options.d.ts +1 -1
  18. package/build/cjs/ui/store/actions/chyt/options.js +8 -3
  19. package/build/cjs/ui/store/actions/chyt/options.js.map +1 -1
  20. package/build/cjs/ui/store/actions/chyt/speclet.js +0 -6
  21. package/build/cjs/ui/store/actions/chyt/speclet.js.map +1 -1
  22. package/build/cjs/ui/store/reducers/chyt/clique.js +2 -1
  23. package/build/cjs/ui/store/reducers/chyt/clique.js.map +1 -1
  24. package/build/cjs/ui/store/reducers/chyt/options.js +2 -1
  25. package/build/cjs/ui/store/reducers/chyt/options.js.map +1 -1
  26. package/build/cjs/ui/store/reducers/chyt/speclet.js +2 -1
  27. package/build/cjs/ui/store/reducers/chyt/speclet.js.map +1 -1
  28. package/build/esm/ui/components/OperationPool/OperationPool.d.ts +1 -0
  29. package/build/esm/ui/components/OperationPool/OperationPool.js +3 -2
  30. package/build/esm/ui/components/OperationPool/OperationPool.js.map +1 -1
  31. package/build/esm/ui/components/UserLink/UserLink.css +1 -0
  32. package/build/esm/ui/components/UserLink/UserLink.css.map +1 -1
  33. package/build/esm/ui/components/UserLink/UserLink.scss +1 -0
  34. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.css +1 -1
  35. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.css.map +1 -1
  36. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.d.ts +2 -1
  37. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.js +40 -32
  38. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.js.map +1 -1
  39. package/build/esm/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.scss +1 -1
  40. package/build/esm/ui/pages/chyt/ChytPageList/ChytPageListTable.css +13 -0
  41. package/build/esm/ui/pages/chyt/ChytPageList/ChytPageListTable.css.map +1 -1
  42. package/build/esm/ui/pages/chyt/ChytPageList/ChytPageListTable.js +15 -10
  43. package/build/esm/ui/pages/chyt/ChytPageList/ChytPageListTable.js.map +1 -1
  44. package/build/esm/ui/pages/chyt/ChytPageList/ChytPageListTable.scss +17 -0
  45. package/build/esm/ui/pages/chyt/components/CliqueState.js +1 -0
  46. package/build/esm/ui/pages/chyt/components/CliqueState.js.map +1 -1
  47. package/build/esm/ui/store/actions/chyt/options.d.ts +1 -1
  48. package/build/esm/ui/store/actions/chyt/options.js +8 -3
  49. package/build/esm/ui/store/actions/chyt/options.js.map +1 -1
  50. package/build/esm/ui/store/actions/chyt/speclet.js +0 -6
  51. package/build/esm/ui/store/actions/chyt/speclet.js.map +1 -1
  52. package/build/esm/ui/store/reducers/chyt/clique.js +2 -1
  53. package/build/esm/ui/store/reducers/chyt/clique.js.map +1 -1
  54. package/build/esm/ui/store/reducers/chyt/options.js +2 -1
  55. package/build/esm/ui/store/reducers/chyt/options.js.map +1 -1
  56. package/build/esm/ui/store/reducers/chyt/speclet.js +2 -1
  57. package/build/esm/ui/store/reducers/chyt/speclet.js.map +1 -1
  58. package/dist/public/build/assets-manifest.json +14 -14
  59. package/dist/public/build/css/943.d936073c.chunk.css +2 -0
  60. package/dist/public/build/css/943.d936073c.chunk.css.map +1 -0
  61. package/dist/public/build/css/main.034d079d.css +2 -0
  62. package/dist/public/build/css/main.034d079d.css.map +1 -0
  63. package/dist/public/build/js/943.f6342dd5.chunk.js +2 -0
  64. package/dist/public/build/js/943.f6342dd5.chunk.js.map +1 -0
  65. package/dist/public/build/js/main.c54131f7.js +3 -0
  66. package/dist/public/build/js/{main.14a1b6af.js.map → main.c54131f7.js.map} +1 -1
  67. package/dist/public/build/js/runtime.3ef0b993.js +2 -0
  68. package/dist/public/build/js/{runtime.0e868e87.js.map → runtime.3ef0b993.js.map} +1 -1
  69. package/dist/public/build/manifest.json +10 -10
  70. package/package.json +2 -2
  71. package/dist/public/build/css/943.0bef6a74.chunk.css +0 -2
  72. package/dist/public/build/css/943.0bef6a74.chunk.css.map +0 -1
  73. package/dist/public/build/css/main.0fab6ef6.css +0 -2
  74. package/dist/public/build/css/main.0fab6ef6.css.map +0 -1
  75. package/dist/public/build/js/943.fcd8fc21.chunk.js +0 -2
  76. package/dist/public/build/js/943.fcd8fc21.chunk.js.map +0 -1
  77. package/dist/public/build/js/main.14a1b6af.js +0 -3
  78. package/dist/public/build/js/runtime.0e868e87.js +0 -2
  79. /package/dist/public/build/js/{main.14a1b6af.js.LICENSE.txt → main.c54131f7.js.LICENSE.txt} +0 -0
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[943],{45943:(e,t,n)=>{n.r(t),n.d(t,{default:()=>dt});var a=n(89526),r=n(97282),o=n(25456),i=n(36415),l=n(92070),s=n(38194),c=n(4294),u=n(18975),d=n(23680),m=n(10440),v=n(64436),p=n(29648),f=n(50795),h=n(95289),x=n(73635),j=n(76412),y=n(39766),_=n(11453),Z=n(73553),w=n(67557),g=(0,m.Z)("chyt-list-toolbar");function S(){var e=(0,l.I0)(),t=a.useCallback((function(t){var n;e((n=t,{type:y.kv,data:n}))}),[e]);return(0,w.jsx)(h.o,{itemsToWrap:[{name:"alias",node:(0,w.jsx)(b,{onUpdate:t}),growable:!0,wrapperClassName:g("name-filter")},{name:"creator",node:(0,w.jsx)(k,{onUpdate:t})},{name:"state",node:(0,w.jsx)(C,{onUpdate:t})},{name:"health",node:(0,w.jsx)(N,{onUpdate:t})},{name:"columns",node:(0,w.jsx)(A,{})}]})}function b(e){var t=e.onUpdate,n=(0,l.v9)(_.Q2);return(0,w.jsx)(v.o,{value:n,onUpdate:function(e){t({name:e})},placeholder:"Filter by alias name or id..."})}function k(e){var t=e.onUpdate,n=(0,l.v9)(_.RG),r=(0,l.v9)(_.iY),o=a.useMemo((function(){return r.map((function(e){return{value:e,text:e}}))}),[r]);return(0,w.jsx)(x.N,{className:g("select-filter"),label:"Creator:",value:n,items:o,onChange:function(e){t({creator:e})}})}function N(e){var t=e.onUpdate,n=(0,l.v9)(_.Lz),r=(0,l.v9)(_.SX),o=a.useMemo((function(){return r.map((function(e){return{value:e,text:e}}))}),[r]);return(0,w.jsx)(x.N,{className:g("select-filter"),label:"Health:",value:n,items:o,onChange:function(e){t({health:e})}})}function C(e){var t=e.onUpdate,n=(0,l.v9)(_.ZS),r=(0,l.v9)(_.bE),o=a.useMemo((function(){return r.map((function(e){return{value:e,text:e}}))}),[r]);return(0,w.jsx)(x.N,{className:g("select-filter"),label:"State:",value:n,items:o,onChange:function(e){t({state:e})}})}function A(){var e=(0,l.I0)(),t=a.useState(!1),n=(0,d.Z)(t,2),r=n[0],o=n[1],i=(0,l.v9)(_.n7),s=(0,w.jsx)(j.Z,{isVisible:r,items:i.map((function(e){var t;return{name:null!==(t=y.Sb[e.column])&&void 0!==t?t:f.Z.ReadableField(e.column),checked:e.checked,data:{column:e.column}}})),onConfirm:function(t){var n=t.filter((function(e){return e.checked})).map((function(e){return e.data.column}));e((0,u.cy)(n)),o(!1)},onCancel:function(){return o(!1)}});return(0,w.jsxs)(a.Fragment,{children:[r&&s,(0,w.jsx)(p.z,{view:"outlined",onClick:function(){return o(!0)},children:"Columns"})]})}const T=a.memo(S);var E=n(19677),F=n(19961),O=n(33183),U=n(15395),V=n(82772),q=n(3579),L=n(45510),R=n(80703);function Y(e){var t=e.id,n=e.cluster,r=e.color,i=e.allowCopy,l=t&&"0-0-0-0"!==t?t:null;return(0,w.jsx)(O.x,{variant:"code-1",color:r,children:l?(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)(R.Z,{theme:r,url:"/".concat(n,"/").concat(o.T3.OPERATIONS,"/").concat(l),routed:!0,children:l}),i&&(0,w.jsx)(V.Z,{text:l,view:"clear",visibleOnRowHover:!0,inlineMargins:!0})]}):f.Z.NO_VALUE})}var I=n(25058),M=n(69299),D=n(70880),P=n(6370),H=n(16680),W=n(81923),z={good:"success",failed:"danger",active:"success",pending:"info",untracked:"warning"};function B(e){var t=e.state;return t?(0,w.jsx)(M.Z,{text:t,theme:z[t],capitalize:!0}):f.Z.NO_VALUE}var G=n(44325),Q=n(3302),J=n(81471),$=n(25083),K=n(33628),X=n(98383),ee=(0,m.Z)("chyt-confirmation");function te(e){var t=e.action,n=e.alias,a=e.pool,r=e.onClose,o=e.onAction,i=function(){t&&(null==o||o(t))};switch(t){case"stop":case"remove":return(0,w.jsx)(ne,{alias:n,action:t,onClose:r,onConfirm:i});case"start":return(0,w.jsx)(ae,{alias:n,onClose:r,onConfirm:i,pool:a});default:return null}}function ne(e){var t=e.alias,n=e.action,r=e.onClose,o=e.onConfirm,i=(0,X.O)(),l=a.useState(),s=(0,d.Z)(l,2),c=s[0],m=s[1];return(0,w.jsx)(K.mf,{visible:!0,pristineSubmittable:!0,headerProps:{title:(0,w.jsxs)(w.Fragment,{children:[f.Z.ReadableField(n)," ",(0,w.jsx)(O.x,{variant:"header-1",color:"secondary",children:t})]})},footerProps:{textApply:"Yes, ".concat(n," ").concat(t)},onAdd:function(){return i((0,u.zb)("stop",{alias:t})).then((function(){return"remove"===n?i((0,u.zb)("remove",{alias:t})):null})).then((function(){o(),m(void 0)})).catch((function(e){throw m(e),e}))},fields:[{type:"block",name:"text",extras:{children:(0,w.jsxs)(w.Fragment,{children:["Are you sure you want to ",n," the clique"," ",(0,w.jsx)(O.x,{color:"secondary",children:t}),"?"]})}}].concat((0,F.Z)((0,K.Lg)([c]))),onClose:r})}function ae(e){var t=e.alias,n=e.onClose,r=e.pool,o=e.onConfirm,i=(0,X.O)(),l=a.useState(),s=(0,d.Z)(l,2),c=s[0],m=s[1];return(0,w.jsx)(K.mf,{visible:!0,className:ee("start"),headerProps:{title:(0,w.jsxs)(w.Fragment,{children:["Start clique"," ",(0,w.jsx)(O.x,{variant:"header-1",color:"secondary",children:t})]})},footerProps:{textApply:"Start clique ".concat(t)},onClose:n,initialValues:{pool:r},onAdd:function(e){var n=e.getState().values.untracked;return i((0,u.zb)("start",{alias:t,untracked:n})).then((function(){o(),m(void 0)})).catch((function(e){throw m(e),e}))},isApplyDisabled:function(e){var t=e.values,n=t.pool,a=t.untracked;return Boolean(!n&&!a)},fields:[{type:"plain",name:"pool",caption:"Pool",extras:{placeholder:f.Z.NO_VALUE}},{type:"tumbler",name:"untracked",tooltip:"YT Operation for a clique in untracked mode is started using the current user's credentials in the user's default pool. Such clique is not tracked by the controller and will not be restarted in case of any failures or speclet updates.",caption:"Untracked"},{type:"block",name:"untrackedNotice",visibilityCondition:{when:"untracked",isActive:function(e){return e}},extras:{children:(0,w.jsx)(O.x,{color:"warning",variant:"body-2",children:"Usage of untracked cliques is strictly discouraged."})}}].concat((0,F.Z)((0,K.Lg)([c])))})}var re=(0,m.Z)("chyt-clique-actions");function oe(e){var t=(0,l.v9)(P.SY),n=(0,l.v9)(P.Vj),r=(0,l.I0)();return a.useCallback((function(a){n?(setTimeout((function(){r((0,Q.Cp)({engine:J.q.CHYT,query:"SELECT 1;",settings:{cluster:t,clique:a}}))}),500),e()):$.ZP.onChytAliasSqlClick({alias:a,cluster:t})}),[t,e,n,r])}function ie(e){var t=e.alias,n=e.pool,r=e.showAllButtons,o=e.allButtonsClassName,i=e.onAction,l=e.onSqlClick,s=a.useState(),c=(0,d.Z)(s,2),u=c[0],m=c[1],v={icon:(0,w.jsx)(L.Z,{awesome:"play-circle"}),text:"Start",action:function(){m("start")}},f={icon:(0,w.jsx)(L.Z,{awesome:"stop-circle"}),text:"Stop",action:function(){m("stop")}},h={icon:(0,w.jsx)(L.Z,{awesome:"trash-alt"}),text:"Remove",action:function(){m("remove")}},x=[[v,f],[h]],j=(0,w.jsx)(p.z,{view:"flat",onClick:function(){return l(t)},children:(0,w.jsx)(L.Z,{awesome:"sql"})});return(0,w.jsxs)(a.Fragment,{children:[void 0!==u&&(0,w.jsx)(te,{alias:t,pool:n,action:u,onClose:function(){return m(void 0)},onAction:i}),r?(0,w.jsxs)("span",{className:re("chyt-clique-actions",o),children:[(0,w.jsx)("span",{className:re("item"),children:j}),(0,w.jsx)("span",{className:re("item"),children:(0,w.jsx)(p.z,{title:"Start",onClick:function(){v.action()},children:(0,w.jsx)(L.Z,{awesome:"play-circle"})})}),(0,w.jsx)("span",{className:re("item"),children:(0,w.jsx)(p.z,{title:"Stop",onClick:function(){f.action()},children:(0,w.jsx)(L.Z,{awesome:"stop-circle"})})}),(0,w.jsx)(p.z,{title:"Remove",onClick:function(){h.action()},children:(0,w.jsx)(L.Z,{awesome:"trash-alt"})})]}):(0,w.jsxs)(a.Fragment,{children:[j,(0,w.jsx)(G.h,{switcher:(0,w.jsx)(p.z,{view:"flat",children:(0,w.jsx)(L.Z,{awesome:"ellipsis-h"})}),items:x})]})]})}var le=(0,m.Z)("chyt-page-list-table");function se(e){var t,n=e.column,a=e.withUndefined,r=(0,l.I0)(),o=(0,l.v9)(_.Tb);return(0,w.jsx)(q.Z,(0,E.Z)((0,E.Z)({allowUnordered:!0,withUndefined:a,column:n,title:null!==(t=y.Sb[n])&&void 0!==t?t:f.Z.ReadableField(n),sortable:!0},o[n]),{},{toggleSort:function(e,t,n){r(function(e,t,n){return function(a,r){var o=(0,_.Av)(r()),i=(0,Z.Ao)(o,{column:e,order:t},n);a({type:y.kv,data:{sortState:i}})}}(e,t,n))}}))}function ce(e){var t=e.value;if(!t)return(0,w.jsx)("span",{className:le("one-row-cell"),children:f.Z.NO_VALUE});var n=f.Z.DateTime(t),r=n.lastIndexOf(" ");return(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)("span",{children:n.substring(0,r)}),(0,w.jsx)("div",{children:n.substring(r+1)})]})}function ue(){var e=(0,l.v9)(_.RS),t=(0,l.v9)(P.SY),n=(0,W.Go)(),r=n.openWidget,i=n.widgetContent,s=function(e,t){var n=(0,l.v9)(_.NV);return a.useMemo((function(){var a={pool:{name:"pool",header:(0,w.jsx)(se,{column:"pool"}),render:function(t){var n=t.row;return n.pool?(0,w.jsx)(H._,{cluster:e,pool:{pool:n.pool,tree:"physical"}}):f.Z.NO_VALUE}},instance_count:{name:"instance_count",header:(0,w.jsx)(se,{column:"instance_count"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:void 0===t.instance_count?f.Z.NO_VALUE:f.Z.Number(t.instance_count)})},align:"right",width:120},total_cpu:{name:"cores",header:(0,w.jsx)(se,{column:"total_cpu"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:void 0===t.total_cpu?f.Z.NO_VALUE:f.Z.Number(t.total_cpu)})},align:"right",width:100},total_memory:{name:"memory",header:(0,w.jsx)(se,{column:"total_memory"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:void 0===t.total_memory?f.Z.NO_VALUE:f.Z.Bytes(t.total_memory)})},align:"right",width:120},health:{name:"health",header:(0,w.jsx)(se,{column:"health"}),render:function(e){var t=e.row;return(0,w.jsxs)(D.u,{className:le("one-row-cell"),content:f.Z.ReadableField(t.health_reason),children:[(0,w.jsx)(B,{state:t.health}),t.health_reason&&(0,w.jsxs)(O.x,{color:"secondary",children:[" ",(0,w.jsx)(L.Z,{awesome:"question-circle"})]})]})},width:100},creation_time:{name:"creation_time",header:(0,w.jsx)(se,{column:"creation_time",withUndefined:!0}),render:function(e){var t=e.row;return(0,w.jsx)(ce,{value:t.creation_time})},width:120},speclet_modification_time:{name:"speclet_modification_time",header:(0,w.jsx)(se,{column:"speclet_modification_time"}),render:function(e){var t=e.row;return(0,w.jsx)(ce,{value:t.speclet_modification_time})},width:120},stage:{name:"stage",header:(0,w.jsx)(se,{column:"stage"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:(0,w.jsx)(M.Z,{text:t.stage})})}},strawberry_state_modification_time:{name:"strawberry_state_modification_time",header:(0,w.jsx)(se,{column:"strawberry_state_modification_time"}),render:function(e){var t=e.row;return(0,w.jsx)(ce,{value:t.strawberry_state_modification_time})},width:120},yt_operation_finish_time:{name:"yt_operation_finish_time",header:(0,w.jsx)(se,{column:"yt_operation_finish_time",withUndefined:!0}),render:function(e){var t=e.row;return(0,w.jsx)(ce,{value:t.yt_operation_finish_time})},width:120},yt_operation_start_time:{name:"yt_operation_start_time",header:(0,w.jsx)(se,{column:"yt_operation_start_time",withUndefined:!0}),render:function(e){var t=e.row;return(0,w.jsx)(ce,{value:t.yt_operation_start_time})},width:120},creator:{name:"creator",header:(0,w.jsx)(se,{column:"creator"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:t.creator?(0,w.jsx)(I.O,{userName:t.creator}):f.Z.NO_VALUE})}},state:{name:"state",header:(0,w.jsx)(se,{column:"state"}),render:function(e){var t=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:(0,w.jsx)(B,{state:t.state})})},width:100}},r=n.map((function(e){return a[e]}));return[{name:"alias",header:(0,w.jsx)(se,{column:"alias"}),render:function(t){var n=t.row;return(0,w.jsxs)("div",{children:[(0,w.jsx)(R.Z,{url:"/".concat(e,"/").concat(o.T3.CHYT,"/").concat(n.alias),theme:"primary",routed:!0,children:n.alias}),(0,w.jsx)(V.Z,{text:n.alias,view:"clear",visibleOnRowHover:!0,inlineMargins:!0}),(0,w.jsx)("div",{children:(0,w.jsx)(Y,{id:n.yt_operation_id,cluster:e,color:"secondary",allowCopy:!0})})]})}}].concat((0,F.Z)(r),[{name:"actions",header:"",render:function(e){var n=e.row;return(0,w.jsx)("span",{className:le("one-row-cell"),children:(0,w.jsx)(ie,{alias:n.alias,pool:n.pool,onSqlClick:t})})},align:"center",width:60}])}),[e,n,t])}(t,oe(r));return(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)(U.ZP,{className:le(),settings:U.CF,useThemeYT:!0,columns:s,data:e}),i]})}const de=a.memo(ue);function me(){var e=(0,l.I0)(),t=a.useCallback((function(){e((0,u.Fb)())}),[e]);return(0,s.LG)(t),(0,w.jsx)(c.ZP,{toolbar:(0,w.jsx)(T,{}),content:(0,w.jsx)(de,{})})}var ve=n(36105),pe=n.n(ve),fe=n(67290),he=n(78707),xe=n(59709),je=n(19368),ye=n(57254),_e=n(46520),Ze=new ye.Z;function we(e){return function(t,n){t({type:y.rx.REQUEST,data:{currentClique:e}});var a=n(),r=(0,P.SY)(a),o=(0,P.Sk)(a);return(0,_e.W)("get_brief_info",r,{alias:e},{isAdmin:o,cancelToken:Ze.removeAllAndGenerateNextToken(),skipErrorToast:!0}).then((function(e){t({type:y.rx.SUCCESS,data:{data:e.result}})})).catch((function(e){(0,ye.j)(e)||t({type:y.rx.FAILURE,data:{error:e}})}))}}var ge=function(e){return e.chyt.clique.data},Se=function(e){return e.chyt.clique.error},be=function(e){var t=e.chyt.clique,n=t.loaded,a=t.loading;return!n&&a},ke=function(e){var t;return null===(t=e.chyt.clique.data)||void 0===t?void 0:t.error},Ne=n(20240),Ce=n(9880),Ae=n(77098),Te=n(37522),Ee=n(45281);function Fe(){var e=(0,l.v9)(_.uH);return(0,w.jsx)(Ee.KT,{path:"//sys/access_control_object_namespaces/chyt/".concat(e)})}var Oe=n(20195),Ue=n.n(Oe),Ve=n(92881),qe=n(32598),Le=n(29382),Re=["initialValue","converter"],Ye={number:{toFieldValue:function(e){return{value:null===e?void 0:e}},fromFieldValue:function(e,t){return null==e?void 0:e.value}},json:{toFieldValue:function(e){return{value:void 0!==e?JSON.stringify(e,null,2):void 0}},fromFieldValue:function(e,t){try{return JSON.parse(e.value)}catch(e){return t}}},plain:{toFieldValue:function(e){return JSON.stringify(e)},fromFieldValue:function(e,t){return void 0!==e?JSON.parse(e):void 0}},string_with_choices:{toFieldValue:function(e){return e?[e]:[]},fromFieldValue:function(e,t){return null==e?void 0:e[0]}}};var Ie=function(e){return e.chyt.options.data},Me=function(e){return e.chyt.options.dataAlias},De=function(e){return e.chyt.options.error},Pe=n(92006),He=new ye.Z;function We(e){return function(t,n){var a=n(),r=(0,P.SY)(a),o=(0,P.Sk)(a);return t({type:y.OR.REQUEST,data:{dataAlias:""}}),(0,_e.W)("get_speclet",r,{alias:e},{isAdmin:o,cancelToken:He.removeAllAndGenerateNextToken(),skipErrorToast:!0}).then((function(n){t({type:y.OR.SUCCESS,data:{data:n.result,dataAlias:e}})})).catch((function(e){(0,ye.j)(e)||t({type:y.OR.FAILURE,data:{error:e}})}))}}var ze=new ye.Z;function Be(e){return function(t,n){var a=n(),r=(0,P.SY)(a),o=(0,P.Sk)(a);return t({type:y.mj.REQUEST,data:{dataAlias:""}}),(0,_e.W)("describe_options",r,{alias:e},{isAdmin:o,cancelToken:ze.removeAllAndGenerateNextToken(),skipErrorToast:!0}).then((function(n){t({type:y.mj.SUCCESS,data:{data:n.result,dataAlias:e}})})).catch((function(e){(0,ye.j)(e)||t({type:y.mj.FAILURE,data:{error:e}})}))}}var Ge=function(e){return e.chyt.speclet.loaded},Qe=function(e){return e.chyt.speclet.data},Je=function(e){return e.chyt.speclet.dataAlias},$e=function(e){return e.chyt.speclet.error},Ke=(0,m.Z)("yt-chyt-clique-speclet");function Xe(){var e=(0,l.I0)(),t=(0,l.v9)(_.uH);a.useMemo((function(){t&&e(Be(t))}),[t,e]);var n=(0,l.v9)(Ie),r=(0,l.v9)(Me),o=(0,l.v9)(De),i=(0,l.v9)(Pe.l);return{alias:t,specletData:n,dataAlias:r,error:o,unipikaSettings:i}}function et(){var e=Xe(),t=e.error,n=e.alias,r=e.specletData,o=e.unipikaSettings;return(0,w.jsxs)(a.Fragment,{children:[t&&(0,w.jsx)(xe.Z,{bottomMargin:!0,error:t}),r?(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)("div",{className:Ke("edit"),children:(0,w.jsx)(nt,{})}),(0,w.jsx)(tt,{alias:n,unipikaSettings:o})]}):null]})}function tt(e){var t=e.alias,n=e.unipikaSettings,r=(0,l.I0)(),o=a.useCallback((function(){t&&r(We(t))}),[t,r]);(0,s.LG)(o);var i=(0,l.v9)(Qe),c=(0,l.v9)($e),u=(0,l.v9)(Je),d=(0,l.v9)(Ge);return u!==t?null:(0,w.jsxs)("div",{className:Ke(),children:[c&&(0,w.jsx)(xe.Z,{className:Ke("raw-speclet-error"),error:c,bottomMargin:!0}),d&&(0,w.jsx)(qe.Z,{className:Ke("raw-speclet"),value:i,settings:n,folding:!0})]})}function nt(e){var t=e.compact,n=e.className,r=a.useState(!1),o=(0,d.Z)(r,2),i=o[0],l=o[1],s=Xe(),c=s.error,u=s.specletData,m=s.dataAlias,v=s.alias,p=s.unipikaSettings;return(0,w.jsxs)(a.Fragment,{children:[c&&(0,w.jsx)(xe.Z,{bottomMargin:!0,error:c}),i&&u?(0,w.jsx)(at,{data:u,alias:v,unipikaSettings:p,allowEdit:m===v,onClose:function(){return l(!1)}},m):null,(0,w.jsxs)(Ve.Z,{size:"m",view:t?"normal":void 0,className:n,title:"Edit speclet",onClick:function(){return l(!i)},children:[(0,w.jsx)(L.Z,{awesome:"pencil"}),!t&&"Edit speclet"]})]})}function at(e){var t=e.alias,n=e.data,r=e.allowEdit,o=e.unipikaSettings,i=e.onClose,l=(0,X.O)(),s=a.useState(),c=(0,d.Z)(s,2),u=c[0],m=c[1],v=a.useMemo((function(){return function(e,t){var n={},a={};return{fieldTypeByName:a,initialValues:n,fields:null==e?void 0:e.map((function(e,r){var o="group_".concat(r),i=n[o]={},l=e.options.map((function(e){return function(e,t,n,a){var r=function(e,t){var n,a=t.unipikaSettings,r=t.allowEdit,o={name:e.name,caption:f.Z.ReadableField(e.name),tooltip:e.description,converter:{toFieldValue:function(e){return e},fromFieldValue:function(e,t){return e}}},i={disabled:!r,placeholder:null!=e.default_value?String(e.default_value):void 0};switch(e.type){case"string":var l;return null!==(l=e.choices)&&void 0!==l&&l.length?(0,E.Z)((0,E.Z)({},o),{},{type:"select",extras:(0,E.Z)((0,E.Z)({},i),{},{width:"max",options:e.choices.map((function(e){return{value:e,content:e}})),hasClear:!0}),converter:Ye.string_with_choices}):(0,E.Z)((0,E.Z)({},o),{},{type:"text",extras:i});case"bool":return(0,E.Z)((0,E.Z)({},o),{},{type:"tumbler",extras:i,initialValue:null!==(n=e.current_value)&&void 0!==n?n:e.default_value});case"int64":case"uint64":case"byte_count":var s="byte_count"===e.type?"Bytes":void 0,c="Bytes"===s?f.Z.Bytes(e.default_value):f.Z.Number(e.default_value);return(0,E.Z)((0,E.Z)({},o),{},{type:"number",extras:(0,E.Z)((0,E.Z)({},i),{},{hidePrettyValue:!0,placeholder:void 0!==e.default_value?c:void 0,min:e.min_value,max:e.max_value,format:s,integerOnly:!0,showHint:!0}),converter:Ye.number});case"yson":return(0,E.Z)((0,E.Z)({},o),{},{type:"json",fullWidth:!0,extras:(0,E.Z)((0,E.Z)({},i),{},{unipikaSettings:a,minHeight:200,nullPreview:e.default_value}),converter:Ye.json});case"path":return(0,E.Z)((0,E.Z)({},o),{},{type:"path",extras:i});case"pool":return(0,E.Z)((0,E.Z)({},o),{},{type:"pool",extras:(0,E.Z)((0,E.Z)({},i),{},{allowEmpty:!0})});default:return(0,E.Z)((0,E.Z)({},o),{},{type:"plain"})}}(e,a),o=r.initialValue,i=r.converter,l=(0,Le.Z)(r,Re),s=l.type;return t[e.name]=null!=o?o:i.toFieldValue(e.current_value),n[e.name]={type:s,converter:i},l}(e,i,a,t)}));return{name:o,title:e.title,type:"tab-vertical",fields:l}}))}}(null!=n?n:[],{allowEdit:r,unipikaSettings:o})}),[n,r,o]),p=v.fields,h=v.initialValues,x=v.fieldTypeByName;return(0,w.jsxs)(a.Fragment,{children:[u&&(0,w.jsx)(xe.Z,{bottomMargin:!0,error:u}),(0,w.jsx)(K.mf,{className:Ke("dialog"),size:"l",visible:!0,onClose:i,onAdd:function(e){var n=e.getState().values,a=Ue()(n,(function(e,t){return(0,E.Z)((0,E.Z)({},e),t)}),{}),r=a.restart_on_speclet_change,o=Ue()(h,(function(e,t){return(0,E.Z)((0,E.Z)({},e),t)}),{}),i=Ue()(a,(function(e,t,n){var a=o[n],r=x[n].converter,i=r.fromFieldValue(a),l=r.fromFieldValue(t,i);return l!==i&&(e[n]=null!=l&&""!==l?l:void 0),e}),{restart_on_speclet_change:r});return l(function(e,t){return function(n,a){var r=a(),o=(0,P.SY)(r),i=(0,P.Sk)(r),l=[],s={};return Object.keys(t).forEach((function(e){var n=e;void 0===t[n]?l.push(n):s[n]=t[n]})),(0,_e.W)("edit_options",o,{alias:e,options_to_set:s,options_to_remove:l},{isAdmin:i}).then((function(){n(Be(e)),n(we(e)),n(We(e))}))}}(t,i)).then((function(){m(void 0)})).catch((function(e){return m(e)}))},fields:p,initialValues:h,headerProps:{title:(0,w.jsxs)("span",{children:["Edit clique"," ",(0,w.jsx)(O.x,{ellipsis:!0,variant:"header-1",color:"secondary",children:t})]})}})]})}var rt=n(83547);function ot(){var e,t=(0,l.v9)(P.SY),n=(0,l.v9)(_.uH),a=(null!==(e=$.ZP.getMonitoringComponentForChyt())&&void 0!==e?e:{}).component;return a?(0,w.jsx)(a,{cluster:t,alias:n}):(0,w.jsx)(rt.d,{})}function it(e){var t=e.className,n=(0,r.$B)(),o=(0,l.v9)(P.SY),i=(0,l.v9)(_.uH),s=$.ZP.getMonitoringComponentForChyt(),c=a.useMemo((function(){var e=null!=s?s:{},t=e.component,a=e.urlTemplate,r=e.title,l=a&&!t;return(0,Ae.Mm)(n.url,y.aD,(0,Ne.Z)({},y.aD.MONITORING,l?{show:!0,external:!0,url:(0,Te.D)(a,{ytCluster:o,chytAlias:i}),title:r}:{show:Boolean(t)}),void 0)}),[o,i,n.url,s]),u=Boolean(null==s?void 0:s.component);return(0,w.jsxs)(a.Fragment,{children:[(0,w.jsx)(Ce.Z,(0,E.Z)((0,E.Z)({className:t},c),{},{routed:!0})),(0,w.jsxs)(r.rs,{children:[u&&(0,w.jsx)(r.AW,{path:"".concat(n.url,"/").concat(y.aD.MONITORING),component:ot}),(0,w.jsx)(r.AW,{path:"".concat(n.url,"/").concat(y.aD.SPECLET),component:et}),(0,w.jsx)(r.AW,{path:"".concat(n.url,"/").concat(y.aD.ACL),component:Fe}),(0,w.jsx)(r.l_,{to:"".concat(n.url,"/").concat(u?y.aD.MONITORING:y.aD.SPECLET)})]})]})}var lt=(0,m.Z)("chyt-page-clique");function st(e){var t,n=(0,l.I0)(),i=(0,r.k6)(),c=(0,l.v9)(P.SY),u=e.match.params.alias,d=a.useCallback((function(){n(we(u))}),[u,n]);a.useEffect((function(){return function(){n({type:y.rx.PARTITION,data:{currentClique:""}})}}),[u,n]);var m=(null!==(t=(0,l.v9)(ge))&&void 0!==t?t:{}).pool,v=(0,l.v9)(be);(0,s.LG)(d);var p=(0,W.Go)(),f=p.openWidget,h=p.widgetContent,x=oe(f);return(0,w.jsxs)("div",{className:lt(),children:[(0,w.jsxs)("div",{className:lt("header"),children:[(0,w.jsxs)(O.x,{variant:"header-1",children:["CHYT clique"," ",(0,w.jsx)(O.x,{variant:"header-1",color:"secondary",children:u})]}),v&&(0,w.jsx)(fe.a,{className:lt("loader"),size:"s"}),(0,w.jsx)("span",{className:lt("spacer")}),(0,w.jsx)(ie,{alias:u,pool:m,showAllButtons:!0,onAction:function(e){"remove"===e?i.push("/".concat(c,"/").concat(o.T3.CHYT)):d()},onSqlClick:x}),(0,w.jsx)("span",{className:lt("edit"),children:(0,w.jsx)(nt,{compact:!0})})]}),(0,w.jsx)(ct,{}),(0,w.jsx)(ut,{}),(0,w.jsx)(it,{className:lt("tabs")}),h]})}function ct(){var e,t=(0,l.v9)(Se),n=(0,l.v9)(ke),r=(null!==(e=(0,l.v9)(ge))&&void 0!==e?e:{}).health_reason;return(0,w.jsxs)(a.Fragment,{children:[t?(0,w.jsx)(xe.Z,{className:lt("error"),error:t,bottomMargin:!0}):null,n?(0,w.jsx)(xe.Z,{header:"Failed to start",className:lt("error"),error:{message:n},bottomMargin:!0}):null,r?(0,w.jsx)(he.Z,{header:"Health reason",type:"alert",message:r,bottomMargin:!0}):null]})}function ut(){var e=(0,l.v9)(P.SY),t=(0,l.v9)(ge),n=a.useMemo((function(){var n=null!=t?t:{},a=n.pool,r=n.state,o=n.stage,i=n.ctl_attributes,l=n.yt_operation,s=n.health,c=n.incarnation_index,u=n.creator,d=n.speclet_modification_time,m=n.strawberry_state_modification_time,v=null!=l?l:{},p=v.start_time,h=v.finish_time,x=v.id,j=p?pe()(p).valueOf():void 0,_=h?pe()(h).valueOf():j?Date.now():void 0,Z=j&&_?_-j:void 0;return[[{key:"Health",value:(0,w.jsx)(B,{state:s})},{key:"State",value:(0,w.jsx)(B,{state:r})},{key:"Pool",value:a?(0,w.jsx)(H._,{cluster:e,pool:{pool:a,tree:"physical"}}):f.Z.NO_VALUE},{key:"Instances",value:f.Z.Number(null==i?void 0:i.instance_count)},{key:"Cores",value:f.Z.Number(null==i?void 0:i.total_cpu)},{key:"Memory",value:f.Z.Bytes(null==i?void 0:i.total_memory)}],[{key:"Stage",value:o?(0,w.jsx)(M.Z,{capitalize:!0,text:o}):f.Z.NO_VALUE},{key:"Incarnation index",value:f.Z.Number(c)},{key:"Creator",value:u?(0,w.jsx)(I.O,{userName:u}):f.Z.NO_VALUE},{key:y.Sb.speclet_modification_time,value:f.Z.DateTime(d)},{key:y.Sb.strawberry_state_modification_time,value:f.Z.DateTime(m)}],[{key:"YT operation id",value:(0,w.jsx)("div",{className:lt("operation-id"),children:(0,w.jsx)(Y,{id:x,cluster:e})})},{key:"YT operation state",value:null!=l&&l.state?f.Z.ReadableField(null==l?void 0:l.state):f.Z.NO_VALUE},{key:"Start time",value:f.Z.DateTime(p)},{key:"Finish time",value:f.Z.DateTime(h)},{key:"Duration",value:Z?f.Z.TimeDuration(Z):f.Z.NO_VALUE}]]}),[t,e]);return(0,w.jsx)(je.ZP,{items:n})}function dt(){return(0,w.jsx)("div",{className:"elements-main-section",children:(0,w.jsx)(i.Z,{children:(0,w.jsxs)(r.rs,{children:[(0,w.jsx)(r.AW,{path:"/:cluster/".concat(o.T3.CHYT,"/:alias"),component:st}),(0,w.jsx)(r.AW,{path:"/:cluster/".concat(o.T3.CHYT),component:me})]})})})}},46520:(e,t,n)=>{n.d(t,{W:()=>i});var a=n(19677),r=n(38615),o=n(42840);function i(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=i.cancelToken,s=i.skipErrorToast,c=i.successTitle,u=i.isAdmin?"?isDeveloper=true":"";return(0,o.H4)(r.Z.request({method:"POST",url:"/api/chyt/".concat(t,"/").concat(e).concat(u),data:{params:(0,a.Z)({},n)},cancelToken:l}),{toasterName:"clique-".concat(e),skipSuccessToast:!c,successTitle:c,skipErrorToast:s,errorTitle:"'".concat(e,"' action failed")}).then((function(e){return e.data}))}},18975:(e,t,n)=>{n.d(t,{Fb:()=>m,Gl:()=>p,cy:()=>f,zb:()=>v});var a=n(19677),r=n(19961),o=n(39766),i=n(57254),l=n(6370),s=n(11453),c=n(46520),u=n(80645),d=new i.Z;function m(){return function(e,t){var n=t(),u=(0,l.SY)(n),m=(0,l.Sk)(n),v=(0,s.NV)(n);e({type:o.mS.REQUEST});var p=-1===v.indexOf("pool")?["pool"]:[],f=new Set(["yt_operation_id","creator","state","health","health_reason"].concat((0,r.Z)(v),p));return(0,c.W)("list",u,{attributes:(0,r.Z)(f)},{isAdmin:m,cancelToken:d.removeAllAndGenerateNextToken()}).then((function(t){var n,r=null==t||null===(n=t.result)||void 0===n?void 0:n.map((function(e){var t=e.$value,n=e.$attributes,r=void 0===n?{}:n;return(0,a.Z)({alias:t},r)}));e({type:o.mS.SUCCESS,data:{data:{items:r}}})})).catch((function(t){(0,i.j)(t)||e({type:o.mS.FAILURE,data:{error:t}})}))}}function v(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).skipLoadList;return function(a,r){var o=r(),i=(0,l.SY)(o),s=(0,l.Sk)(o);return(0,c.W)(e,i,t,{isAdmin:s}).then((function(e){return n||a(m()),e}))}}function p(e){return function(t,n){var r=n(),o=(0,l.SY)(r),i=(0,l.Sk)(r),s=e.alias,u=e.runAfterCreation,d=e.pool,v=e.instance_count;return(0,c.W)("create",o,{alias:s,speclet_options:(0,a.Z)({active:u&&Boolean(d),instance_count:v},d?{pool:d}:void 0)},{isAdmin:i,successTitle:"".concat(s," clique created")}).finally((function(){t(m())}))}}function f(e){return function(t){return t((0,u.gb)("global::chyt::list_columns",e)).then((function(){t(m())}))}}}}]);
2
- //# sourceMappingURL=943.fcd8fc21.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/943.fcd8fc21.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list-fitlers.ts","webpack://@ytsaurus/ui/./src/ui/components/OperationId/OperationId.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/components/CliqueState.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytConfirmation/ChytConfirmation.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytCliqueActions/ChytCliqueActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageListTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageList/ChytPageList.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/clique.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueAcl.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/df-dialog-utils.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/speclet.ts","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueSpeclet.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueMonitoring.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageCliqueTabs.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPageClique/ChytPageClique.tsx","webpack://@ytsaurus/ui/./src/ui/pages/chyt/ChytPage.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 cn from 'bem-cn-lite';\n\nimport {Button, TextInput} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {Toolbar} from '../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport {SelectSingle} from '../../../components/Select/Select';\nimport ColumnSelectorModal from '../../../components/ColumnSelectorModal/ColumnSelectorModal';\n\nimport {chytUpdateListFilters} from '../../../store/actions/chyt/list-fitlers';\nimport {\n getChytListAvailableCreators,\n getChytListAvailableHealths,\n getChytListAvailableStates,\n getChytListColumns,\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterHealth,\n getChytListFilterState,\n} from '../../../store/selectors/chyt';\nimport {ChytListFilters} from '../../../store/reducers/chyt/list-filters';\nimport {chytSetVisibleColumns} from '../../../store/actions/chyt/list';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\n\nimport './ChytPageListToolbar.scss';\n\nconst block = cn('chyt-list-toolbar');\n\nfunction ChytPageListToolbar() {\n const dispatch = useDispatch();\n\n const onUpdate = React.useCallback(\n (filters: Partial<ChytListFilters>) => {\n dispatch(chytUpdateListFilters(filters));\n },\n [dispatch],\n );\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n name: 'alias',\n node: <NameIdFilter onUpdate={onUpdate} />,\n growable: true,\n wrapperClassName: block('name-filter'),\n },\n {\n name: 'creator',\n node: <CreatorFilter onUpdate={onUpdate} />,\n },\n {\n name: 'state',\n node: <StateFilter onUpdate={onUpdate} />,\n },\n {\n name: 'health',\n node: <HealthFilter onUpdate={onUpdate} />,\n },\n {\n name: 'columns',\n node: <ChytListColumnsButton />,\n },\n ]}\n />\n );\n}\n\nfunction NameIdFilter({onUpdate}: {onUpdate: (value: {name: string}) => void}) {\n const value = useSelector(getChytListFilterAlias);\n\n return (\n <TextInput\n value={value}\n onUpdate={(name) => {\n onUpdate({name});\n }}\n placeholder=\"Filter by alias name or id...\"\n />\n );\n}\n\nfunction CreatorFilter({onUpdate}: {onUpdate: (value: {creator?: string}) => void}) {\n const value = useSelector(getChytListFilterCreator);\n const creators = useSelector(getChytListAvailableCreators);\n\n const items = React.useMemo(() => {\n return creators.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [creators]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Creator:\"\n value={value}\n items={items}\n onChange={(creator) => {\n onUpdate({creator});\n }}\n />\n );\n}\n\nfunction HealthFilter({onUpdate}: {onUpdate: (value: {health?: string}) => void}) {\n const value = useSelector(getChytListFilterHealth);\n const choices = useSelector(getChytListAvailableHealths);\n\n const items = React.useMemo(() => {\n return choices.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [choices]);\n\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"Health:\"\n value={value}\n items={items}\n onChange={(health) => {\n onUpdate({health});\n }}\n />\n );\n}\n\nfunction StateFilter({onUpdate}: {onUpdate: (value: {state?: string}) => void}) {\n const value = useSelector(getChytListFilterState);\n const states = useSelector(getChytListAvailableStates);\n\n const items = React.useMemo(() => {\n return states.map((item) => {\n return {\n value: item,\n text: item,\n };\n });\n }, [states]);\n return (\n <SelectSingle\n className={block('select-filter')}\n label=\"State:\"\n value={value}\n items={items}\n onChange={(state) => {\n onUpdate({state});\n }}\n />\n );\n}\n\nfunction ChytListColumnsButton() {\n const dispatch = useDispatch();\n\n const [visible, setVisible] = React.useState(false);\n const columns = useSelector(getChytListColumns);\n\n const dialog = (\n <ColumnSelectorModal\n isVisible={visible}\n items={columns.map((i) => {\n return {\n name: CHYT_TABLE_TITLES[i.column] ?? format.ReadableField(i.column),\n checked: i.checked,\n data: {\n column: i.column,\n },\n };\n })}\n onConfirm={(value) => {\n const newColumns = value.filter((i) => i.checked).map((i) => i.data.column);\n dispatch(chytSetVisibleColumns(newColumns));\n setVisible(false);\n }}\n onCancel={() => setVisible(false)}\n />\n );\n\n return (\n <React.Fragment>\n {visible && dialog}\n <Button view=\"outlined\" onClick={() => setVisible(true)}>\n Columns\n </Button>\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListToolbar);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_LIST_FILTERS} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {ChytListFilters, ChytListFiltersAction} from '../../reducers/chyt/list-filters';\nimport {getChytListTableSortState} from '../../../store/selectors/chyt';\nimport {OrderType, updateSortStateArray} from '../../../utils/sort-helpers';\n\ntype ChytFiltersThunkAction<T = unknown> = ThunkAction<\n T,\n RootState,\n unknown,\n ChytListFiltersAction\n>;\n\nexport function chytUpdateListFilters(data: Partial<ChytListFilters>): ChytListFiltersAction {\n return {type: CHYT_LIST_FILTERS, data};\n}\n\nexport function chytToggleSortState(\n column: keyof ChytInfo,\n order: OrderType,\n options: {multisort?: boolean},\n): ChytFiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getChytListTableSortState(getState());\n const sortState = updateSortStateArray(prevSortState, {column, order}, options);\n\n dispatch({type: CHYT_LIST_FILTERS, data: {sortState}});\n };\n}\n","import React from 'react';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport format from '../../common/hammer/format';\nimport {Page} from '../../../shared/constants/settings';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nexport function OperationId({\n id,\n cluster,\n color,\n allowCopy,\n}: {\n id?: string;\n color?: 'secondary';\n cluster: string;\n allowCopy?: boolean;\n}) {\n const operationId = id && id !== '0-0-0-0' ? id : null;\n\n return (\n <Text variant=\"code-1\" color={color}>\n {operationId ? (\n <React.Fragment>\n <Link\n theme={color}\n url={`/${cluster}/${Page.OPERATIONS}/${operationId}`}\n routed\n >\n {operationId}\n </Link>\n {allowCopy && (\n <ClipboardButton\n text={operationId}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n )}\n </React.Fragment>\n ) : (\n format.NO_VALUE\n )}\n </Text>\n );\n}\n","import React from 'react';\n\nimport format from '../../../common/hammer/format';\nimport Label from '../../../components/Label/Label';\nimport {ChytCliqueHealthType, ChytCliqueStateType} from '../../../store/actions/chyt/api';\n\nconst THEME_MAP: Partial<\n Record<ChytCliqueStateType | ChytCliqueHealthType, 'danger' | 'success' | 'info' | 'warning'>\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({state}: {state?: ChytCliqueStateType | ChytCliqueHealthType}) {\n return !state ? format.NO_VALUE : <Label text={state} theme={THEME_MAP[state]} capitalize />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog/Dialog';\nimport {YTError} from '../../../types';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {chytListAction} from '../../../store/actions/chyt/list';\n\nimport './ChytConfirmation.scss';\n\nconst block = cn('chyt-confirmation');\n\nexport type ChytConfirmationProps = {\n action: 'remove' | 'start' | 'stop';\n alias: string;\n pool?: string;\n onClose: () => void;\n onAction?: (action: ChytConfirmationProps['action']) => void;\n};\n\nexport function ChytConfirmation({action, alias, pool, onClose, onAction}: ChytConfirmationProps) {\n const onConfirm = () => {\n if (action) {\n onAction?.(action);\n }\n };\n switch (action) {\n case 'stop':\n case 'remove':\n return <ChytSimpleConfirmation {...{alias, action, onClose, onConfirm}} />;\n case 'start':\n return <ChytStartConfirmation {...{alias, onClose, onConfirm, pool}} />;\n default:\n return null;\n }\n}\n\ntype ConfirmationProps = {\n alias: string;\n pool?: string;\n onClose: () => void;\n onConfirm: () => void;\n};\n\nfunction ChytSimpleConfirmation({\n alias,\n action,\n onClose,\n onConfirm,\n}: ConfirmationProps & {action: 'remove' | 'stop'}) {\n const dispatch = useThunkDispatch();\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <YTDFDialog\n visible\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)}{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Yes, ${action} ${alias}`}}\n onAdd={() => {\n return dispatch(chytListAction('stop', {alias: alias}))\n .then(() => {\n if (action === 'remove') {\n return dispatch(chytListAction('remove', {alias}));\n } else {\n return null;\n }\n })\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n fields={[\n {\n type: 'block',\n name: 'text',\n extras: {\n children: (\n <>\n Are you sure you want to {action} the clique{' '}\n <Text color=\"secondary\">{alias}</Text>?\n </>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n onClose={onClose}\n />\n );\n}\n\ntype StartFormValues = {\n pool: string;\n untracked: boolean;\n};\n\nfunction ChytStartConfirmation({\n alias,\n onClose,\n pool,\n onConfirm,\n}: Omit<ConfirmationProps, 'action'>) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState();\n\n return (\n <YTDFDialog<StartFormValues>\n visible\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </>\n ),\n }}\n footerProps={{textApply: `Start clique ${alias}`}}\n onClose={onClose}\n initialValues={{pool: pool}}\n onAdd={(form) => {\n const {untracked} = form.getState().values;\n return dispatch(chytListAction('start', {alias, untracked}))\n .then(() => {\n onConfirm();\n setError(undefined);\n })\n .catch((error: any) => {\n setError(error);\n throw error;\n });\n }}\n isApplyDisabled={(state) => {\n const {\n values: {pool, untracked},\n } = state;\n return Boolean(!pool && !untracked);\n }}\n fields={[\n {\n type: 'plain',\n name: 'pool',\n caption: 'Pool',\n extras: {\n placeholder: format.NO_VALUE,\n },\n },\n {\n type: 'tumbler',\n name: 'untracked',\n tooltip:\n \"YT Operation for a clique in untracked mode is started using the current user's credentials in the user's default pool. Such clique is not tracked by the controller and will not be restarted in case of any failures or speclet updates.\",\n caption: 'Untracked',\n },\n {\n type: 'block',\n name: 'untrackedNotice',\n visibilityCondition: {\n when: 'untracked',\n isActive: (v) => v,\n },\n extras: {\n children: (\n <Text color=\"warning\" variant=\"body-2\">\n {`Usage of untracked cliques is strictly discouraged.`}\n </Text>\n ),\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, DropdownMenu, DropdownMenuItem} from '@gravity-ui/uikit';\n\nimport Icon from '../../../components/Icon/Icon';\nimport {getCluster, isQueryTrackerAllowed} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n}: {\n showAllButtons?: boolean;\n allButtonsClassName?: string;\n alias: string;\n pool?: string;\n onSqlClick: (alias: string) => void;\n onAction?: (action: 'remove' | 'start' | 'stop') => void;\n}) {\n const [visibleConfirmation, setVisibleConirmation] = React.useState<\n undefined | 'remove' | 'start' | 'stop'\n >();\n\n const start = {\n icon: <Icon awesome=\"play-circle\" />,\n text: 'Start',\n action: () => {\n setVisibleConirmation('start');\n },\n };\n const stop = {\n icon: <Icon awesome=\"stop-circle\" />,\n text: 'Stop',\n action: () => {\n setVisibleConirmation('stop');\n },\n };\n const remove = {\n icon: <Icon awesome=\"trash-alt\" />,\n text: 'Remove',\n action: () => {\n setVisibleConirmation('remove');\n },\n };\n\n const menuItems: Array<Array<DropdownMenuItem>> = [[start, stop], [remove]];\n\n const sqlButton = (\n <Button view=\"flat\" onClick={() => onSqlClick(alias)}>\n <Icon awesome=\"sql\" />\n </Button>\n );\n\n return (\n <React.Fragment>\n {visibleConfirmation !== undefined && (\n <ChytConfirmation\n alias={alias}\n pool={pool}\n action={visibleConfirmation}\n onClose={() => setVisibleConirmation(undefined)}\n onAction={onAction}\n />\n )}\n {showAllButtons ? (\n <span className={block('chyt-clique-actions', allButtonsClassName)}>\n <span className={block('item')}>{sqlButton}</span>\n\n <span className={block('item')}>\n <Button\n title=\"Start\"\n onClick={() => {\n start.action();\n }}\n >\n <Icon awesome=\"play-circle\" />\n </Button>\n </span>\n\n <span className={block('item')}>\n <Button\n title=\"Stop\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n onClick={() => {\n remove.action();\n }}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n </span>\n ) : (\n <React.Fragment>\n {sqlButton}\n <DropdownMenu\n switcher={\n <Button view=\"flat\">\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR,\n} from '../../../components/DataTableYT/DataTableYT';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../components/Icon/Icon';\nimport Link from '../../../components/Link/Link';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\nimport Label from '../../../components/Label/Label';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport {chytToggleSortState} from '../../../store/actions/chyt/list-fitlers';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n getChytListTableItems,\n getChytListTableSortStateByName,\n getChytListVisibleColumns,\n} from '../../../store/selectors/chyt';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {Page} from '../../../../shared/constants/settings';\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {CliqueState} from '../components/CliqueState';\n\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport './ChytPageListTable.scss';\n\nconst block = cn('chyt-page-list-table');\n\nfunction useChytListColumns(cluster: string, onSqlClick: (alias: string) => void) {\n const checkedColumns = useSelector(getChytListVisibleColumns);\n\n const columns: Array<Column<ChytInfo>> = React.useMemo(() => {\n const columnsByName = {\n pool: {\n name: 'pool',\n header: <ChytListHeader column=\"pool\" />,\n render({row}) {\n return !row.pool ? (\n format.NO_VALUE\n ) : (\n <OperationPool\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n } as Column<ChytInfo>,\n instance_count: {\n name: 'instance_count',\n header: <ChytListHeader column=\"instance_count\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.instance_count === undefined\n ? format.NO_VALUE\n : format.Number(row.instance_count)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n total_cpu: {\n name: 'cores',\n header: <ChytListHeader column=\"total_cpu\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_cpu === undefined\n ? format.NO_VALUE\n : format.Number(row.total_cpu)}\n </span>\n );\n },\n align: 'right',\n width: 100,\n } as Column<ChytInfo>,\n total_memory: {\n name: 'memory',\n header: <ChytListHeader column=\"total_memory\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {row.total_memory === undefined\n ? format.NO_VALUE\n : format.Bytes(row.total_memory)}\n </span>\n );\n },\n align: 'right',\n width: 120,\n } as Column<ChytInfo>,\n health: {\n name: 'health',\n header: <ChytListHeader column=\"health\" />,\n render({row}) {\n return (\n <Tooltip\n className={block('one-row-cell')}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Text color=\"secondary\">\n {' '}\n <Icon awesome={'question-circle'} />\n </Text>\n )}\n </Tooltip>\n );\n },\n width: 100,\n } as Column<ChytInfo>,\n creation_time: {\n name: 'creation_time',\n header: <ChytListHeader column=\"creation_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.creation_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n speclet_modification_time: {\n name: 'speclet_modification_time',\n header: <ChytListHeader column=\"speclet_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.speclet_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n stage: {\n name: 'stage',\n header: <ChytListHeader column=\"stage\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>{<Label text={row.stage} />}</span>\n );\n },\n } as Column<ChytInfo>,\n strawberry_state_modification_time: {\n name: 'strawberry_state_modification_time',\n header: <ChytListHeader column=\"strawberry_state_modification_time\" />,\n render({row}) {\n return <DateTimeCell value={row.strawberry_state_modification_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_finish_time: {\n name: 'yt_operation_finish_time',\n header: <ChytListHeader column=\"yt_operation_finish_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_finish_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n yt_operation_start_time: {\n name: 'yt_operation_start_time',\n header: <ChytListHeader column=\"yt_operation_start_time\" withUndefined />,\n render({row}) {\n return <DateTimeCell value={row.yt_operation_start_time} />;\n },\n width: 120,\n } as Column<ChytInfo>,\n creator: {\n name: 'creator',\n header: <ChytListHeader column=\"creator\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n {!row.creator ? format.NO_VALUE : <UserCard userName={row.creator} />}\n </span>\n );\n },\n } as Column<ChytInfo>,\n state: {\n name: 'state',\n header: <ChytListHeader column=\"state\" />,\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <CliqueState state={row.state} />\n </span>\n );\n },\n width: 100,\n } as Column<ChytInfo>,\n };\n\n const res = checkedColumns.map((i) => columnsByName[i]);\n return [\n {\n name: 'alias',\n header: <ChytListHeader column=\"alias\" />,\n render({row}) {\n return (\n <div>\n <Link\n url={`/${cluster}/${Page.CHYT}/${row.alias}`}\n theme=\"primary\"\n routed\n >\n {row.alias}\n </Link>\n <ClipboardButton\n text={row.alias}\n view=\"clear\"\n visibleOnRowHover\n inlineMargins\n />\n <div>\n <OperationId\n id={row.yt_operation_id}\n cluster={cluster}\n color=\"secondary\"\n allowCopy\n />\n </div>\n </div>\n );\n },\n } as Column<ChytInfo>,\n ...res,\n {\n name: 'actions',\n header: '',\n render({row}) {\n return (\n <span className={block('one-row-cell')}>\n <ChytCliqueActions\n alias={row.alias}\n pool={row.pool}\n onSqlClick={onSqlClick}\n />\n </span>\n );\n },\n align: 'center',\n width: 60,\n } as Column<ChytInfo>,\n ];\n }, [cluster, checkedColumns, onSqlClick]);\n\n return columns;\n}\n\nfunction ChytListHeader({\n column,\n withUndefined,\n}: {\n column: keyof ChytInfo;\n withUndefined?: boolean;\n}) {\n const dispatch = useDispatch();\n const sortState = useSelector(getChytListTableSortStateByName);\n return (\n <ColumnHeader<typeof column>\n allowUnordered\n withUndefined={withUndefined}\n column={column}\n title={CHYT_TABLE_TITLES[column] ?? format.ReadableField(column)}\n sortable\n {...sortState[column]}\n toggleSort={(col, nextOrder, options) => {\n dispatch(chytToggleSortState(col, nextOrder, options));\n }}\n />\n );\n}\n\nfunction DateTimeCell({value}: {value?: string}) {\n if (!value) {\n return <span className={block('one-row-cell')}>{format.NO_VALUE}</span>;\n }\n\n const time: string = format.DateTime(value);\n const lastSpace = time.lastIndexOf(' ');\n return (\n <React.Fragment>\n <span>{time.substring(0, lastSpace)}</span>\n <div>{time.substring(lastSpace + 1)}</div>\n </React.Fragment>\n );\n}\n\nfunction ChytPageListTable() {\n const items = useSelector(getChytListTableItems);\n const cluster = useSelector(getCluster);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n const columns = useChytListColumns(cluster, onSqlClick);\n\n return (\n <React.Fragment>\n <DataTableYT\n className={block()}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR}\n useThemeYT\n columns={columns}\n data={items}\n />\n {widgetContent}\n </React.Fragment>\n );\n}\n\nexport default React.memo(ChytPageListTable);\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport {chytLoadList} from '../../../store/actions/chyt/list';\n\nimport ChytPageListToolbar from './ChytPageListToolbar';\nimport ChytPageListTable from './ChytPageListTable';\n\nexport function ChytPageList() {\n const dispatch = useDispatch();\n const update = React.useCallback(() => {\n dispatch(chytLoadList());\n }, [dispatch]);\n\n useUpdater(update);\n\n return <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster, isDeveloper} from '../../../store/selectors/global';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from './api';\n\ntype ChytCliqueThunkAction<T = void> = ThunkAction<T, RootState, unknown, ChytCliqueAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytCliqueLoad(alias: string): ChytCliqueThunkAction {\n return (dispatch, getState) => {\n dispatch({type: CHYT_CLIQUE.REQUEST, data: {currentClique: alias}});\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n return chytApiAction(\n 'get_brief_info',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_CLIQUE.SUCCESS, data: {data: data.result}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_CLIQUE.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytResetCurrentClique(): ChytCliqueAction {\n return {type: CHYT_CLIQUE.PARTITION, data: {currentClique: ''}};\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getChytCliqueData = (state: RootState) => state.chyt.clique.data;\nexport const getChytCliqueError = (state: RootState) => state.chyt.clique.error;\n\nexport const getChytCliqueInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.chyt.clique;\n return !loaded && loading;\n};\n\nexport const getChytCliqueStartError = (state: RootState) => state.chyt.clique.data?.error;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {AccessContentAcl} from '../../../components/ACL/ACL-connect-helpers';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />;\n}\n","import {DialogField} from './Dialog';\n\nimport format from '../../common/hammer/format';\nimport {UnipikaSettings} from '../Yson/StructuredYson/StructuredYsonTypes';\n\nexport type OptionsGroup = {\n title: string;\n options: Array<OptionDescription>;\n hidden: boolean;\n};\n\nexport type OptionDescription =\n | (Option<'string', string> & {choices?: Array<string>})\n | Option<'bool', boolean>\n | (Option<'uint64' | 'int64' | 'byte_count', number> & {\n max_value?: number;\n min_value?: number;\n })\n | Option<'yson', JsonAsString>\n | Option<'path' | 'pool', string>;\n\nexport type JsonAsString = string;\n\nexport type Option<TypeName extends string, T> = {\n name: string;\n type: TypeName;\n current_value?: T | null;\n default_value?: T;\n description?: string;\n};\n\nexport function descriptionToDialogField<T = unknown>(\n item: OptionDescription,\n {unipikaSettings, allowEdit}: MakeDialogFieldsOptions,\n): DialogField<T> & {initialValue?: unknown; converter: Converter} {\n const common = {\n name: item.name,\n caption: format.ReadableField(item.name),\n tooltip: item.description,\n converter: makeConverter<any>(),\n };\n const {default_value} = item;\n const extras = {\n disabled: !allowEdit,\n placeholder:\n default_value !== null && default_value !== undefined\n ? String(item.default_value)\n : undefined,\n };\n\n switch (item.type) {\n case 'string': {\n if (!item.choices?.length) {\n return {...common, type: 'text', extras};\n } else {\n return {\n ...common,\n type: 'select',\n extras: {\n ...extras,\n width: 'max',\n options: item.choices.map((value) => {\n return {value, content: value};\n }),\n hasClear: true,\n },\n converter: CONVERTER.string_with_choices,\n };\n }\n }\n case 'bool':\n return {\n ...common,\n type: 'tumbler',\n extras,\n initialValue: item.current_value ?? item.default_value,\n };\n case 'int64':\n case 'uint64':\n case 'byte_count': {\n const valueFormat = item.type === 'byte_count' ? 'Bytes' : undefined;\n const defaultFormatted =\n valueFormat === 'Bytes'\n ? format.Bytes(item.default_value)\n : format.Number(item.default_value);\n return {\n ...common,\n type: 'number',\n extras: {\n ...extras,\n hidePrettyValue: true,\n placeholder: item.default_value !== undefined ? defaultFormatted : undefined,\n min: item.min_value,\n max: item.max_value,\n format: valueFormat,\n integerOnly: true,\n showHint: true,\n },\n converter: CONVERTER.number,\n };\n }\n case 'yson':\n return {\n ...common,\n type: 'json',\n fullWidth: true,\n extras: {\n ...extras,\n unipikaSettings,\n minHeight: 200,\n nullPreview: item.default_value,\n },\n converter: CONVERTER.json,\n };\n case 'path':\n return {...common, type: 'path', extras};\n case 'pool':\n return {...common, type: 'pool', extras: {...extras, allowEmpty: true}};\n default:\n return {...common, type: 'plain'};\n }\n}\n\nfunction makeConverter<T>() {\n return {\n toFieldValue(value: any) {\n return value as T;\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value;\n },\n };\n}\n\nconst CONVERTER: Record<string, ReturnType<typeof makeConverter>> = {\n number: {\n toFieldValue(value: unknown) {\n return {value: value === null ? undefined : (value as number | undefined)};\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value?.value;\n },\n },\n json: {\n toFieldValue(value: unknown) {\n return {value: value !== undefined ? JSON.stringify(value, null, 2) : undefined};\n },\n fromFieldValue(value: any, oldV?: any) {\n try {\n return JSON.parse(value.value);\n } catch {\n return oldV;\n }\n },\n },\n plain: {\n toFieldValue(value: unknown) {\n return JSON.stringify(value);\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value !== undefined ? JSON.parse(value) : undefined;\n },\n },\n string_with_choices: {\n toFieldValue(value: string) {\n return value ? [value] : [];\n },\n fromFieldValue(value: Array<string>, _oldV?: any) {\n return value?.[0];\n },\n },\n};\n\nfunction converterByType(item: OptionDescription) {\n return CONVERTER[item.type] ?? makeConverter<any>();\n}\n\ntype Converter = ReturnType<typeof converterByType>;\n\nfunction makeDialogField<FormValues = any>(\n item: OptionDescription,\n dstInitialValues: any,\n dstConvertersByName: Record<string, {type: DialogField['type']; converter: Converter}>,\n options: MakeDialogFieldsOptions,\n) {\n const {initialValue, converter, ...res} = descriptionToDialogField<FormValues>(item, options);\n const {type} = res;\n\n dstInitialValues[item.name] = initialValue ?? converter.toFieldValue(item.current_value);\n dstConvertersByName[item.name] = {type: type!, converter};\n\n return res;\n}\n\ntype MakeDialogFieldsOptions = {\n allowEdit: boolean;\n unipikaSettings: UnipikaSettings;\n};\n\nexport function makeDialogFieldsFromDescription<\n FormValues extends Record<string, unknown> = Record<string, unknown>,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Record<string, any> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group) => {\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, initialValues, typeByName, options);\n });\n\n return {\n section: group.title,\n fields: sectionFields,\n collapsible: true,\n initialCollapsed: group.hidden,\n };\n }),\n };\n}\n\nexport function makeTabbedDialogFieldsFromDescription<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Partial<FormValues> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group, index) => {\n const group_name = `group_${index}`;\n const groupInitialValues = ((initialValues as any)[group_name] = {});\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, groupInitialValues, typeByName, options);\n });\n\n return {\n name: group_name,\n title: group.title,\n type: 'tab-vertical' as const,\n fields: sectionFields,\n };\n }),\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytOptionsData = (state: RootState) => state.chyt.options.data;\nexport const getChytOptionsDataAlias = (state: RootState) => state.chyt.options.dataAlias;\nexport const getChytOptionsError = (state: RootState) => state.chyt.options.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueSpecletAction} from '../../reducers/chyt/speclet';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {chytApiAction} from './api';\nimport {CHYT_SPECLET} from '../../../constants/chyt-page';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueSpecletAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueSpeclet(alias: string): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n dispatch({type: CHYT_SPECLET.REQUEST, data: {dataAlias: ''}});\n\n return chytApiAction(\n 'get_speclet',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_SPECLET.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_SPECLET.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {ChytListAttributes, ChytListResponseItem, chytApiAction} from './api';\nimport {CHYT_OPTIONS} from '../../../constants/chyt-page';\nimport {chytCliqueLoad} from './clique';\nimport {chytLoadCliqueSpeclet} from './speclet';\n\ntype OptionsThunkAction = ThunkAction<Promise<void>, RootState, unknown, ChytCliqueOptionsAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function chytLoadCliqueOptions(alias: string): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n dispatch({type: CHYT_OPTIONS.REQUEST, data: {dataAlias: ''}});\n\n return chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n )\n .then((data) => {\n dispatch({type: CHYT_OPTIONS.SUCCESS, data: {data: data.result, dataAlias: alias}});\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch({type: CHYT_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport function chytEditOptions(\n alias: string,\n options: Required<ChytListResponseItem>['$attributes'],\n): OptionsThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const isAdmin = isDeveloper(state);\n\n const options_to_remove: Array<ChytListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as ChytListAttributes;\n if (options[key] === undefined) {\n options_to_remove.push(key);\n } else {\n options_to_set[key] = options[key] as any;\n }\n });\n\n return chytApiAction(\n 'edit_options',\n cluster,\n {alias, options_to_set, options_to_remove},\n {isAdmin},\n ).then(() => {\n dispatch(chytLoadCliqueOptions(alias));\n dispatch(chytCliqueLoad(alias));\n dispatch(chytLoadCliqueSpeclet(alias));\n });\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytSpecletLoaded = (state: RootState) => state.chyt.speclet.loaded;\nexport const getChytSpecletData = (state: RootState) => state.chyt.speclet.data;\nexport const getChytSpecletDataAlias = (state: RootState) => state.chyt.speclet.dataAlias;\nexport const getChytSpecletError = (state: RootState) => state.chyt.speclet.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport reduce_ from 'lodash/reduce';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Button from '../../../components/Button/Button';\nimport Error from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {makeTabbedDialogFieldsFromDescription} from '../../../components/Dialog/df-dialog-utils';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {\n getChytOptionsData,\n getChytOptionsDataAlias,\n getChytOptionsError,\n} from '../../../store/selectors/chyt/options';\nimport {getEditJsonYsonSettings} from '../../../store/selectors/thor/unipika';\nimport {chytLoadCliqueSpeclet} from '../../../store/actions/chyt/speclet';\nimport {chytEditOptions, chytLoadCliqueOptions} from '../../../store/actions/chyt/options';\nimport {ChytCliqueOptionsState} from '../../../store/reducers/chyt/options';\nimport {\n getChytSpecletData,\n getChytSpecletDataAlias,\n getChytSpecletError,\n getChytSpecletLoaded,\n} from '../../../store/selectors/chyt/speclet';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\n\nimport './ChytPageCliqueSpeclet.scss';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData() {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias) {\n dispatch(chytLoadCliqueOptions(alias));\n }\n }, [alias, dispatch]);\n\n const specletData = useSelector(getChytOptionsData);\n const dataAlias = useSelector(getChytOptionsDataAlias);\n const error = useSelector(getChytOptionsError);\n const unipikaSettings = useSelector(getEditJsonYsonSettings);\n\n return {alias, specletData, dataAlias, error, unipikaSettings};\n}\n\nexport function ChytPageCliqueSpeclet() {\n const {error, alias, specletData, unipikaSettings} = useSpecletData();\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton />\n </div>\n <ChytSpeclet alias={alias} unipikaSettings={unipikaSettings} />\n </React.Fragment>\n )}\n </React.Fragment>\n );\n}\n\nfunction ChytSpeclet({alias, unipikaSettings}: {alias?: string; unipikaSettings: UnipikaSettings}) {\n const dispatch = useDispatch();\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n const data = useSelector(getChytSpecletData);\n const error = useSelector(getChytSpecletError);\n const dataAlias = useSelector(getChytSpecletDataAlias);\n const loaded = useSelector(getChytSpecletLoaded);\n\n return dataAlias !== alias ? null : (\n <div className={block()}>\n {error && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n}: {\n compact?: boolean;\n className?: string;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {error, specletData, dataAlias, alias, unipikaSettings} = useSpecletData();\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n {!visible || !specletData ? null : (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n />\n )}\n <Button\n size=\"m\"\n view={compact ? 'normal' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n >\n <Icon awesome={'pencil'} />\n {!compact && 'Edit speclet'}\n </Button>\n </React.Fragment>\n );\n}\n\nfunction ChytSpecletEditDialog({\n alias,\n data,\n allowEdit,\n unipikaSettings,\n onClose,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n return makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n });\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: (\n <span>\n Edit clique{' '}\n <Text ellipsis variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </span>\n ),\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport UIFactory from '../../../UIFactory';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {NoContent} from '../../../components/NoContent/NoContent';\n\nexport function ChytPageCliqueMonitoring() {\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const {component: MonitoginComponnet} = UIFactory.getMonitoringComponentForChyt() ?? {};\n if (!MonitoginComponnet) {\n return <NoContent />;\n }\n\n return <MonitoginComponnet cluster={cluster} alias={alias} />;\n}\n","import React from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {UserCard} from '../../../components/UserLink/UserLink';\n\nimport {useQueryWidgetSidePanel} from '../../../pages/query-tracker/QueryWidget/side-panel';\n\nimport {chytCliqueLoad, chytResetCurrentClique} from '../../../store/actions/chyt/clique';\nimport {\n getChytCliqueData,\n getChytCliqueError,\n getChytCliqueInitialLoading,\n getChytCliqueStartError,\n} from '../../../store/selectors/chyt/clique';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Page} from '../../../../shared/constants/settings';\n\nimport {CHYT_TABLE_TITLES} from '../../../constants/chyt-page';\nimport {CliqueState} from '../components/CliqueState';\nimport {ChytCliqueActions, useCliqueOnSqlAction} from '../ChytCliqueActions/ChytCliqueActions';\nimport {ChytPageCliqueTabs} from './ChytPageCliqueTabs';\nimport {ChytSpecletEditButton} from './ChytPageCliqueSpeclet';\n\nimport './ChytPageClique.scss';\n\nconst block = cn('chyt-page-clique');\n\nexport function ChytPageClique(props: RouteComponentProps<{alias: string}>) {\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const {alias} = props.match.params;\n const update = React.useCallback(() => {\n dispatch(chytCliqueLoad(alias));\n }, [alias, dispatch]);\n\n React.useEffect(() => {\n return () => {\n dispatch(chytResetCurrentClique());\n };\n }, [alias, dispatch]);\n\n const {pool} = useSelector(getChytCliqueData) ?? {};\n const initialLoading = useSelector(getChytCliqueInitialLoading);\n\n useUpdater(update);\n\n const {openWidget, widgetContent} = useQueryWidgetSidePanel();\n const onSqlClick = useCliqueOnSqlAction(openWidget);\n\n return (\n <div className={block()}>\n <div className={block('header')}>\n <Text variant=\"header-1\">\n CHYT clique{' '}\n <Text variant=\"header-1\" color=\"secondary\">\n {alias}\n </Text>\n </Text>\n {initialLoading && <Loader className={block('loader')} size=\"s\" />}\n <span className={block('spacer')} />\n\n <ChytCliqueActions\n alias={alias}\n pool={pool}\n showAllButtons\n onAction={(action) => {\n if (action === 'remove') {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else {\n update();\n }\n }}\n onSqlClick={onSqlClick}\n />\n <span className={block('edit')}>\n <ChytSpecletEditButton compact />\n </span>\n </div>\n <ChytCliqueErrors />\n <ChytCliqueMetaTable />\n <ChytPageCliqueTabs className={block('tabs')} />\n {widgetContent}\n </div>\n );\n}\n\nfunction ChytCliqueErrors() {\n const error = useSelector(getChytCliqueError);\n const startError = useSelector(getChytCliqueStartError);\n const {health_reason} = useSelector(getChytCliqueData) ?? {};\n\n return (\n <React.Fragment>\n {error ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <UserCard userName={creator} /> : format.NO_VALUE,\n },\n {\n key: CHYT_TABLE_TITLES['speclet_modification_time'],\n value: format.DateTime(speclet_modification_time),\n },\n {\n key: CHYT_TABLE_TITLES['strawberry_state_modification_time'],\n value: format.DateTime(strawberry_state_modification_time),\n },\n ],\n [\n {\n key: 'YT operation id',\n value: (\n <div className={block('operation-id')}>\n <OperationId id={id} cluster={cluster} />\n </div>\n ),\n },\n {\n key: 'YT operation state',\n value: yt_operation?.state\n ? format.ReadableField(yt_operation?.state)\n : format.NO_VALUE,\n },\n {\n key: 'Start time',\n value: format.DateTime(start_time),\n },\n {\n key: 'Finish time',\n value: format.DateTime(finish_time),\n },\n {\n key: 'Duration',\n value: duration ? format.TimeDuration(duration) : format.NO_VALUE,\n },\n ],\n ];\n }, [data, cluster]);\n\n return <MetaTable items={items} />;\n}\n","import React from 'react';\nimport {Route, Switch} from 'react-router';\n\nimport {Page} from '../../../shared/constants/settings';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {ChytPageList} from './ChytPageList/ChytPageList';\nimport {ChytPageClique} from './ChytPageClique/ChytPageClique';\n\nexport default function ChytPage() {\n return (\n <div className=\"elements-main-section\">\n <ErrorBoundary>\n <Switch>\n <Route path={`/:cluster/${Page.CHYT}/:alias`} component={ChytPageClique} />\n <Route path={`/:cluster/${Page.CHYT}`} component={ChytPageList} />\n </Switch>\n </ErrorBoundary>\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","ChytPageListToolbar","dispatch","useDispatch","onUpdate","React","filters","data","type","CHYT_LIST_FILTERS","_jsx","Toolbar","itemsToWrap","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","_ref","value","useSelector","getChytListFilterAlias","TextInput","placeholder","_ref2","getChytListFilterCreator","creators","getChytListAvailableCreators","items","map","item","text","SelectSingle","className","label","onChange","creator","_ref3","getChytListFilterHealth","choices","getChytListAvailableHealths","health","_ref4","getChytListFilterState","states","getChytListAvailableStates","state","_React$useState","_React$useState2","_slicedToArray","visible","setVisible","columns","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","format","ReadableField","checked","onConfirm","newColumns","filter","chytSetVisibleColumns","onCancel","_jsxs","children","Button","view","onClick","OperationId","id","cluster","color","allowCopy","operationId","Text","variant","Link","theme","url","concat","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","capitalize","ChytConfirmation","action","alias","pool","onClose","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","error","setError","YTDFDialog","pristineSubmittable","headerProps","title","_Fragment","footerProps","textApply","onAdd","chytListAction","then","undefined","fields","extras","_toConsumableArray","makeErrorFields","_React$useState3","_React$useState4","initialValues","form","getState","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","openWidget","getCluster","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","icon","Icon","awesome","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","withUndefined","sortState","getChytListTableSortStateByName","ColumnHeader","_objectSpread","allowUnordered","sortable","toggleSort","col","nextOrder","options","order","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","widgetContent","checkedColumns","getChytListVisibleColumns","columnsByName","header","render","row","OperationPool","tree","instance_count","Number","align","width","total_cpu","total_memory","Bytes","_ref5","Tooltip","content","health_reason","creation_time","_ref6","speclet_modification_time","_ref7","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","UserCard","userName","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","chytLoadList","useUpdater","WithStickyToolbar","toolbar","cancelHelper","CancelHelper","chytCliqueLoad","CHYT_CLIQUE","REQUEST","currentClique","isAdmin","isDeveloper","chytApiAction","cancelToken","removeAllAndGenerateNextToken","skipErrorToast","SUCCESS","result","isCancelled","FAILURE","getChytCliqueData","chyt","getChytCliqueError","getChytCliqueInitialLoading","_state$chyt$clique","loaded","loading","getChytCliqueStartError","_state$chyt$clique$da","ChytPageCliqueAcl","getChytCurrentAlias","AccessContentAcl","path","CONVERTER","number","toFieldValue","fromFieldValue","_oldV","json","JSON","stringify","oldV","parse","_unused","plain","string_with_choices","getChytOptionsData","getChytOptionsDataAlias","dataAlias","getChytOptionsError","chytLoadCliqueSpeclet","CHYT_SPECLET","chytLoadCliqueOptions","CHYT_OPTIONS","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","size","_React$useMemo","typeByName","fieldTypeByName","group","index","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","common","description","converter","disabled","default_value","String","_item$choices","length","hasClear","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","key","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","e","ellipsis","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","_defineProperty","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","props","_useSelector","history","useHistory","params","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","arguments","successTitle","wrapApiPromiseByToaster","axios","request","method","toasterName","skipSuccessToast","errorTitle","response","CHYT_LIST","extraColumns","indexOf","attributesSet","Set","attributes","_data$result","$value","_ref$$attributes","$attributes","skipLoadList","d","chytCliqueCreate","runAfterCreation","speclet_options","setSettingByKey"],"sourceRoot":""}