@ytsaurus/ui 1.90.1 → 1.91.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 (48) hide show
  1. package/dist/public/build/assets-manifest.json +33 -33
  2. package/dist/public/build/css/2140.254b6ed2.chunk.css +2 -0
  3. package/dist/public/build/css/2140.254b6ed2.chunk.css.map +1 -0
  4. package/dist/public/build/css/{2747.49a10cfc.chunk.css → 2747.46d89bd1.chunk.css} +2 -2
  5. package/dist/public/build/css/2747.46d89bd1.chunk.css.map +1 -0
  6. package/dist/public/build/css/{yt-monaco-editor.35fedd61.chunk.css → yt-monaco-editor.f3c34bec.chunk.css} +2 -2
  7. package/dist/public/build/css/yt-monaco-editor.f3c34bec.chunk.css.map +1 -0
  8. package/dist/public/build/js/{8674.ba5cb9f1.chunk.js → 4330.37e8a0dd.chunk.js} +3 -3
  9. package/dist/public/build/js/4330.37e8a0dd.chunk.js.map +1 -0
  10. package/dist/public/build/js/9312.ce15a566.chunk.js +3 -0
  11. package/dist/public/build/js/9312.ce15a566.chunk.js.map +1 -0
  12. package/dist/public/build/js/acl.f80d2afa.chunk.js +2 -0
  13. package/dist/public/build/js/acl.f80d2afa.chunk.js.map +1 -0
  14. package/dist/public/build/js/{chyt.ca9dd200.chunk.js → chyt.a8612ac3.chunk.js} +2 -2
  15. package/dist/public/build/js/{chyt.ca9dd200.chunk.js.map → chyt.a8612ac3.chunk.js.map} +1 -1
  16. package/dist/public/build/js/{cluster-page-wrapper.96c4ce3a.chunk.js → cluster-page-wrapper.d6af732a.chunk.js} +2 -2
  17. package/dist/public/build/js/{cluster-page-wrapper.96c4ce3a.chunk.js.map → cluster-page-wrapper.d6af732a.chunk.js.map} +1 -1
  18. package/dist/public/build/js/main.376121e5.js +3 -0
  19. package/dist/public/build/js/main.376121e5.js.map +1 -0
  20. package/dist/public/build/js/{navigation.ac5ef83f.chunk.js → navigation.7e77d5e0.chunk.js} +2 -2
  21. package/dist/public/build/js/navigation.7e77d5e0.chunk.js.map +1 -0
  22. package/dist/public/build/js/{query-tracker.bd67de7b.chunk.js → query-tracker.b8789080.chunk.js} +2 -2
  23. package/dist/public/build/js/{query-tracker.bd67de7b.chunk.js.map → query-tracker.b8789080.chunk.js.map} +1 -1
  24. package/dist/public/build/js/{query-widget.e13e8196.chunk.js → query-widget.261b2836.chunk.js} +2 -2
  25. package/dist/public/build/js/{query-widget.e13e8196.chunk.js.map → query-widget.261b2836.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{runtime.1a91f59f.js → runtime.2e1b02e1.js} +2 -2
  27. package/dist/public/build/js/{runtime.1a91f59f.js.map → runtime.2e1b02e1.js.map} +1 -1
  28. package/dist/public/build/js/{yt-monaco-editor.46876bce.chunk.js → yt-monaco-editor.b3cf8d2a.chunk.js} +2 -2
  29. package/dist/public/build/js/yt-monaco-editor.b3cf8d2a.chunk.js.map +1 -0
  30. package/dist/public/build/manifest.json +28 -28
  31. package/dist/shared/constants/settings-types.d.ts +4 -2
  32. package/package.json +3 -3
  33. package/dist/public/build/css/2140.0fdc720d.chunk.css +0 -2
  34. package/dist/public/build/css/2140.0fdc720d.chunk.css.map +0 -1
  35. package/dist/public/build/css/2747.49a10cfc.chunk.css.map +0 -1
  36. package/dist/public/build/css/yt-monaco-editor.35fedd61.chunk.css.map +0 -1
  37. package/dist/public/build/js/8674.ba5cb9f1.chunk.js.map +0 -1
  38. package/dist/public/build/js/9312.ae95dc3d.chunk.js +0 -3
  39. package/dist/public/build/js/9312.ae95dc3d.chunk.js.map +0 -1
  40. package/dist/public/build/js/acl.45a0266b.chunk.js +0 -2
  41. package/dist/public/build/js/acl.45a0266b.chunk.js.map +0 -1
  42. package/dist/public/build/js/main.adf0339f.js +0 -3
  43. package/dist/public/build/js/main.adf0339f.js.map +0 -1
  44. package/dist/public/build/js/navigation.ac5ef83f.chunk.js.map +0 -1
  45. package/dist/public/build/js/yt-monaco-editor.46876bce.chunk.js.map +0 -1
  46. /package/dist/public/build/js/{8674.ba5cb9f1.chunk.js.LICENSE.txt → 4330.37e8a0dd.chunk.js.LICENSE.txt} +0 -0
  47. /package/dist/public/build/js/{9312.ae95dc3d.chunk.js.LICENSE.txt → 9312.ce15a566.chunk.js.LICENSE.txt} +0 -0
  48. /package/dist/public/build/js/{main.adf0339f.js.LICENSE.txt → main.376121e5.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"js/chyt.ca9dd200.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Suggest/Suggest.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global-pool-trees.ts","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts","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/pages/chyt/ChytPageTopRow.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/chaos_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/favourites.js"],"sourcesContent":["import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button\n className={block('edit-btn')}\n onClick={onClick}\n size={size}\n qa=\"qa:navigation:edit-path\"\n >\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport isNumber_ from 'lodash/isNumber';\nimport isObject_ from 'lodash/isObject';\nimport partition_ from 'lodash/partition';\n\nimport {Popup, PopupProps, TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nimport templates from '../../components/templates/utils';\n\nimport './Suggest.scss';\n\nconst b = block('suggest');\n\n// TODO add is scrolled into view logic\n// TODO support custom item height\n\nexport const itemsProps = PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n value: PropTypes.string,\n text: PropTypes.string,\n counter: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n ]),\n);\n\ninterface Item {\n value: string;\n text: string;\n counter?: string | number;\n}\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst ARROW_UP = 38;\nconst ARROW_DOWN = 40;\n\n/*const TAB = 9;\nconst CTRL = 16;\nconst ALT = 17;\nconst ARROW_LEFT = 37;\nconst ARROW_RIGHT = 39;\nconst COMMAND = 91;*/\n\nexport interface SuggestProps {\n className?: string;\n\n filter: (items: SuggestProps['items'], text?: string) => SuggestProps['items'];\n apply?: (value: SuggestItem) => void;\n onTextUpdate?: (text: string) => void;\n onItemClick?: (item: SuggestItem) => void;\n clear?: () => void;\n placeholder?: string;\n autoFocus?: boolean;\n text?: string;\n defaultText?: string;\n disabled?: boolean;\n template?: {\n key: string;\n };\n items: Array<SuggestItem>;\n maxItems?: number | {totalAmount: number; groupPredicate: () => void};\n\n zIndexGroupLevel?: number;\n onBlur?: () => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n pin?: TextInputProps['pin'];\n onOpenChange?: (p: {open: boolean}) => void;\n popupClassName?: string;\n popupPlacement?: PopupProps['placement'];\n\n renderItem?: (item: SuggestItem) => React.ReactNode;\n}\n\nexport type SuggestItem = string | Item;\n\ninterface State {\n text?: string;\n items: SuggestProps['items'];\n selectedIndex: number;\n popupVisible: boolean;\n\n prevItems: SuggestProps['items'];\n\n focused?: boolean;\n}\n\nexport default class Suggest extends Component<SuggestProps, State> {\n static defaultProps = {\n disable: false,\n text: '',\n autoFocus: false,\n items: [],\n zIndexGroupLevel: 1,\n onBlur: () => {},\n focused: false,\n };\n\n private input = React.createRef<HTMLInputElement>();\n private isClearClicked = false; // the flag for the correct render text-input view after clear button click\n private isUnmounting = false;\n private skipApplyForNextBlur = false;\n\n constructor(props: SuggestProps) {\n super(props);\n\n this.state = {\n text: 'text' in props ? props.text : props.defaultText,\n items: props.items,\n selectedIndex: 0,\n popupVisible: false,\n prevItems: [],\n };\n\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.hideSuggestions = this.hideSuggestions.bind(this);\n this.clearSuggestions = this.clearSuggestions.bind(this);\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: SuggestProps, prevState: State) {\n const text = !prevState.focused && 'text' in props ? props.text : prevState.text;\n\n if (props.items === prevState.prevItems && text === prevState.text) {\n return null;\n }\n\n const items = props.filter(props.items, text);\n const res = {items, prevItems: props.items, text};\n\n return res;\n }\n\n componentDidMount() {\n this.isClearClicked = false;\n }\n\n componentWillUnmount() {\n this.isUnmounting = true;\n }\n\n // eslint-disable-next-line react/sort-comp\n onTextUpdate = (text: string) => {\n const {clear, onTextUpdate} = this.props;\n\n this.setState({text});\n this.loadSuggestions(text);\n\n if (!text.length) {\n clear?.();\n }\n\n onTextUpdate?.(text);\n };\n\n onFocus() {\n // make sure that suggestions popup is visible only if onFocus() invocation was not followed\n // by onClearClick() invocation (which sets the flag to true afterwards), since onFocus event\n // always happen first when any action is made within text input\n this.setState({focused: true});\n\n this.isClearClicked = false;\n this.loadSuggestions(this.state.text);\n this.skipApplyForNextBlur = false;\n this.props.onFocus?.();\n }\n\n onBlur() {\n this.hideSuggestions();\n if (!this.isClearClicked) {\n this.props.onBlur?.();\n }\n if (!this.skipApplyForNextBlur) {\n this.applySuggestion(this.state.text ?? '');\n }\n this.setState({focused: false});\n }\n\n onKeyDown(evt: React.KeyboardEvent<HTMLElement>) {\n const key = evt.keyCode;\n\n if (key === ARROW_DOWN) {\n evt.preventDefault();\n this.selectNextSuggestion();\n } else if (key === ARROW_UP) {\n evt.preventDefault();\n this.selectPrevSuggestion();\n } else if (key === ENTER) {\n this.applyOrClearSuggestion();\n } else if (key === ESCAPE) {\n this.input.current?.blur();\n }\n }\n\n hideSuggestions() {\n this.setState({items: [], popupVisible: false, selectedIndex: 0});\n this.props.onOpenChange?.({open: false});\n }\n\n showSuggestions = (items: SuggestProps['items']) => {\n if (!this.isUnmounting) {\n this.setState({\n items,\n popupVisible: true,\n selectedIndex: 0,\n });\n this.props.onOpenChange?.({open: true});\n }\n };\n\n loadSuggestions(text?: string) {\n const {filter, items} = this.props;\n\n Promise.resolve(filter(items, text)).then(this.showSuggestions);\n }\n\n clearSuggestions() {\n const {clear} = this.props;\n\n clear?.();\n // update flag value not to show suggestions after function clear() have change input value for ''\n // and on input change event listener will call popup render\n this.isClearClicked = true;\n\n this.input.current?.blur();\n }\n\n applySuggestion(text: string) {\n const {apply} = this.props;\n this.setState({text});\n apply?.(text);\n this.input.current?.blur();\n }\n\n getItemIndex(selectedIndex: number) {\n return selectedIndex - 1;\n }\n\n getSelectedIndex(itemIndex: number) {\n return itemIndex + 1;\n }\n\n getItemValue(item: string | Item) {\n return typeof item === 'string' ? item : item.value;\n }\n\n applyOrClearSuggestion() {\n const {selectedIndex, items} = this.state;\n\n let item: SuggestItem | undefined;\n\n if (selectedIndex === 0) {\n if (items.length > 0) {\n item = items[0];\n }\n } else {\n item = items[this.getItemIndex(selectedIndex)];\n }\n\n if (item) {\n const value = this.getItemValue(item);\n this.applySuggestion(value);\n const {onItemClick} = this.props;\n onItemClick?.(item);\n }\n }\n\n selectPrevSuggestion() {\n const {selectedIndex, items} = this.state;\n const prevIndex =\n selectedIndex === 0 ? this.getSelectedIndex(items.length - 1) : selectedIndex - 1;\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, items} = this.state;\n const nextIndex =\n selectedIndex === this.getSelectedIndex(items.length - 1) ? 0 : selectedIndex + 1;\n this.setState({selectedIndex: nextIndex});\n }\n\n renderInput() {\n const {text} = this.state;\n const {placeholder, autoFocus, disabled, pin} = this.props;\n\n return (\n <TextInput\n hasClear\n value={text}\n className={b('control')}\n placeholder={placeholder}\n disabled={disabled}\n onUpdate={this.onTextUpdate}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n autoFocus={autoFocus}\n controlRef={this.input}\n pin={pin}\n onKeyDown={this.onKeyDown}\n />\n );\n }\n\n renderCounter(item: Item) {\n const counter = item.counter;\n\n return (\n typeof counter !== 'undefined' && <span className={b('item-counter')}>{counter}</span>\n );\n }\n\n renderSimpleItem(item: string | Item) {\n const text = typeof item === 'string' ? item : item.text;\n\n return (\n <span>\n {'string' !== typeof item && this.renderCounter(item)}\n {text}\n </span>\n );\n }\n\n renderItem(\n item: string | Item,\n index: number,\n key: number | string,\n className?: string,\n ): React.ReactElement {\n const {selectedIndex} = this.state;\n const itemClassName = b(\n 'item',\n {\n selected: selectedIndex === this.getSelectedIndex(index) ? 'yes' : undefined,\n },\n className,\n );\n\n const value = this.getItemValue(item);\n\n const {template, renderItem, onItemClick} = this.props;\n\n const renderer =\n renderItem ??\n (typeof template !== 'undefined'\n ? templates.get(template.key).__default__\n : this.renderSimpleItem.bind(this));\n\n return (\n <li\n key={key}\n title={value}\n className={itemClassName}\n onMouseDown={() => {\n this.skipApplyForNextBlur = true;\n onItemClick?.(item);\n this.applySuggestion(value);\n }}\n >\n {renderer(item)}\n </li>\n );\n }\n\n getInputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current ? this.input.current.offsetWidth - 2 : 0;\n }\n\n restrictItems(items: Array<string | Item>) {\n const {maxItems} = this.props;\n\n if (isNumber_(maxItems)) {\n return items.slice(0, maxItems || items.length);\n } else if (isObject_(maxItems)) {\n const {totalAmount, groupPredicate} = maxItems;\n const [positiveGroup, negativeGroup] = partition_(items, groupPredicate);\n if (positiveGroup.length && negativeGroup.length) {\n // NOTE: we don't want to one group to be omitted in case there is a large\n // bias towards another group - hence minimum value of 1\n const positiveGroupMaxItems = Math.round(\n Math.max((positiveGroup.length / items.length) * totalAmount, 1),\n );\n return positiveGroup\n .slice(0, positiveGroupMaxItems)\n .concat(negativeGroup.slice(0, totalAmount - positiveGroupMaxItems));\n } else {\n // one group is empty - same case as no groups\n return items.slice(0, totalAmount || items.length);\n }\n } else {\n return items;\n }\n }\n\n renderSuggestions(items: Array<SuggestItem>) {\n const className = b('wrapper');\n const listClassName = b('items');\n\n const itemRenderer = (index: number, key: number | string): JSX.Element =>\n this.renderItem(items[index], index, key);\n\n const showNoItemsMsg = items.length === 0 && this.state.text;\n return (\n items && (\n <div className={className}>\n {showNoItemsMsg && this.renderItem('No items', -1, 'no_items', b('no-items'))}\n <ul className={listClassName} style={{minWidth: this.getInputWidth()}}>\n <ReactList\n itemRenderer={itemRenderer}\n length={items.length}\n type=\"uniform\"\n />\n </ul>\n </div>\n )\n );\n }\n\n renderPopup() {\n const {popupClassName, popupPlacement} = this.props;\n const {popupVisible} = this.state;\n\n const items = this.restrictItems(this.state.items);\n return (\n <Popup\n className={popupClassName}\n placement={popupPlacement ?? ['bottom-start', 'top-start']}\n anchorRef={this.input}\n // don't show popup with suggestions after clear button click\n open={!this.isClearClicked && popupVisible && items.length > 0}\n onClose={this.hideSuggestions}\n >\n {this.renderSuggestions(items)}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n return (\n <div className={b(null, className)}>\n {this.renderInput()}\n {this.renderPopup()}\n </div>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nexport function usePoolTreesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadPoolTreesIfNotLoaded());\n }, [dispatch]);\n}\n\nexport function PoolTreesLoader() {\n usePoolTreesLoaded();\n return null;\n}\n\nexport function useDefaultPoolTree() {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>();\n\n React.useEffect(() => {\n loadDefaultPoolTree().then((value) => {\n setDefaultPoolTree(value);\n });\n }, []);\n\n return defaultPoolTree;\n}\n\nexport function WaitForDefaultPoolTree({\n children,\n}: {\n children: ({defaultPoolTree}: {defaultPoolTree: string}) => React.ReactNode;\n}) {\n const defaultPoolTree = useDefaultPoolTree();\n\n return defaultPoolTree ? children({defaultPoolTree}) : null;\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch, name]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\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} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {StrawberryApi, chytApiAction} from '../../../utils/strawberryControllerApi';\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 StrawberryApi['action'],\n ApiItem extends StrawberryApi & {action: T} = StrawberryApi & {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","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';\nimport Icon from '../../../components/Icon/Icon';\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 <Icon awesome=\"layout-columns-3\" />\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 {\n StrawberryCliqueHealthType,\n StrawberryCliqueStateType,\n} from '../../../utils/strawberryControllerApi';\n\nconst THEME_MAP: Partial<\n Record<\n StrawberryCliqueStateType | StrawberryCliqueHealthType,\n 'danger' | 'success' | 'info' | 'warning'\n >\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({\n state,\n}: {\n state?: StrawberryCliqueStateType | StrawberryCliqueHealthType;\n}) {\n return !state ? (\n format.NO_VALUE\n ) : (\n <Label text={state} theme={THEME_MAP[state]} hideTitle capitalize />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport capitalize_ from 'lodash/capitalize';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {Bold} from '../../../components/Text/Text';\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 size=\"s\"\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)} {alias}\n </>\n ),\n }}\n footerProps={{\n textApply: capitalize_(action),\n }}\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 <Bold>{alias}</Bold>?\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 size=\"s\"\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique <Bold>{alias}</Bold>\n </>\n ),\n }}\n footerProps={{\n textApply: 'Start',\n }}\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} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../../shared/constants/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 dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (!UIFactory.onChytAliasSqlClick) {\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, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n color,\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 color?: 'secondary';\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\n view={color === 'secondary' ? 'flat-secondary' : 'flat'}\n onClick={() => onSqlClick(alias)}\n >\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 view=\"outlined\"\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 view=\"outlined\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n view=\"outlined\"\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={color === 'secondary' ? 'flat-secondary' : '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';\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 {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\nimport {Secondary} from '../../../components/Text/Text';\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 className={block('pool')}\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n width: 320,\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('health', block('one-row-cell'))}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Secondary>\n &nbsp;\n <Icon\n className={block('warn-icon')}\n awesome={'exclamation-triangle'}\n />\n </Secondary>\n )}\n </Tooltip>\n );\n },\n width: 120,\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 width: 120,\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 <div className={block('one-row-cell', block('creator'))}>\n {!row.creator ? (\n format.NO_VALUE\n ) : (\n <SubjectCard className={block('full-width')} name={row.creator} />\n )}\n </div>\n );\n },\n width: 120,\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: 120,\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 color=\"secondary\"\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 {...sortState[column]}\n onSort={(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 (\n <WithStickyToolbar\n hideToolbarShadow\n toolbar={<ChytPageListToolbar />}\n content={<ChytPageListTable />}\n />\n );\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} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\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 '../../../containers/ACL';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return (\n Boolean(alias) && (\n <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />\n )\n );\n}\n","import {ControlField, 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 | Option<'pool_trees', 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, defaultPoolTree}: 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 {\n ...common,\n type: 'pool',\n extras: {...extras, allowEmpty: true},\n initialValue: item.current_value ?? item.default_value,\n };\n case 'pool_trees':\n return {\n ...common,\n type: 'pool-tree',\n extras,\n initialValue: item.current_value ?? item.default_value ?? [defaultPoolTree],\n };\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 defaultPoolTree: string;\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\nexport function linkPoolWithPoolTree<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: ReturnType<typeof makeTabbedDialogFieldsFromDescription>) {\n for (const group of data.fields) {\n type FieldType = (typeof data)['fields'][number]['fields'][number];\n type FieldPoolType = FieldType & {type: 'pool'};\n type FieldPoolTreesType = FieldType & {type: 'pool-tree'};\n\n let pool: undefined | FieldPoolType;\n let poolTrees: undefined | FieldPoolTreesType;\n\n group.fields.some((field) => {\n if (field.type === 'pool-tree') {\n poolTrees = field;\n }\n if (field.type === 'pool') {\n pool = field;\n }\n return Boolean(pool && poolTrees);\n });\n\n if (pool && poolTrees) {\n const extras = pool.extras;\n (pool as ControlField).extras = (values: FormValues) => ({\n ...extras,\n poolTrees: values[group.name].pool_trees,\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} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\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\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 {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {\n StrawberryListAttributes,\n StrawberryListResponseItem,\n chytApiAction,\n} from '../../../utils/strawberryControllerApi';\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(\n alias: string,\n showTooltipError?: boolean,\n): 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: alias}});\n\n return wrapApiPromiseByToaster(\n chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n ),\n {\n toasterName: 'chytLoadCliqueOptions_' + alias,\n skipSuccessToast: true,\n skipErrorToast: !showTooltipError,\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<StrawberryListResponseItem>['$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<StrawberryListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as StrawberryListAttributes;\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 Button from '../../../components/Button/Button';\nimport {YTErrorBlock} from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {\n linkPoolWithPoolTree,\n makeTabbedDialogFieldsFromDescription,\n} 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';\nimport {WaitForDefaultPoolTree} from '../../../hooks/global-pool-trees';\n\nimport './ChytPageCliqueSpeclet.scss';\nimport {YsonDownloadButton} from '../../../components/DownloadAttributesButton';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n showTooltipError,\n skipLoad,\n}: {showTooltipError?: boolean; skipLoad?: boolean} = {}) {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias && !skipLoad) {\n dispatch(chytLoadCliqueOptions(alias, showTooltipError));\n }\n }, [alias, skipLoad, showTooltipError, 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 dispatch = useDispatch();\n const {error, alias, specletData, unipikaSettings} = useSpecletData({skipLoad: true});\n\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n return (\n <React.Fragment>\n {error && <YTErrorBlock bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton skipLoad />\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 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 && (\n <YTErrorBlock className={block('raw-speclet-error')} error={error} bottomMargin />\n )}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n extraTools={\n <YsonDownloadButton\n value={data}\n settings={unipikaSettings}\n name={`chyt_speclet_${alias}`}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n skipLoad,\n}: {\n compact?: boolean;\n className?: string;\n skipLoad?: boolean;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {specletData, dataAlias, alias, unipikaSettings} = useSpecletData({\n showTooltipError: true,\n skipLoad,\n });\n\n return (\n <React.Fragment>\n {!visible || !specletData ? null : (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n defaultPoolTree={defaultPoolTree}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n <Button\n view={compact ? 'outlined' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n disabled={!specletData}\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 defaultPoolTree,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n defaultPoolTree: string;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n const groups = makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n defaultPoolTree,\n });\n\n linkPoolWithPoolTree(groups);\n\n return groups;\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <YTErrorBlock 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: <span>Edit clique {alias}</span>,\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, {useEffect, useState} 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';\nimport {ytApiV4} from '../../../rum/rum-wrap-api';\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 const [logsExist, setLogsExist] = useState(false);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const logsPath = `//sys/strawberry/chyt/${chytAlias}/artifacts/system_log_tables/query_log/latest`;\n\n useEffect(() => {\n const checkLogsExist = async () => {\n try {\n const {value} = await ytApiV4.exists({path: logsPath});\n setLogsExist(value);\n } catch {\n setLogsExist(false);\n }\n };\n\n if (chytAlias) {\n checkLogsExist();\n }\n }, [chytAlias]);\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 [ChytCliquePageTab.QUERY_LOGS]: {\n show: logsExist,\n external: true,\n url: `/${ytCluster}/navigation?path=${logsPath}`,\n routed: false,\n },\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 {YTAlertBlock} from '../../../components/Alert/Alert';\nimport {YTErrorBlock} 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 {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\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 ? <YTErrorBlock className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <YTErrorBlock\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <YTAlertBlock\n header=\"Health reason\"\n type=\"alert\"\n message={health_reason}\n bottomMargin\n />\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 ? <SubjectCard name={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 React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {Button, Text} from '@gravity-ui/uikit';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../components/Breadcrumbs';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {YTDFDialog, makeErrorFields} from '../../components/Dialog';\nimport Favourites, {FavouritesItem} from '../../components/Favourites/Favourites';\nimport {EditableAsText} from '../../components/EditableAsText/EditableAsText';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster} from '../../store/selectors/global';\nimport {isDeveloper} from '../../store/selectors/global/is-developer';\nimport {chytApiAction} from '../../utils/strawberryControllerApi';\nimport {chytCliqueCreate} from '../../store/actions/chyt/list';\nimport {chytToggleFavourite} from '../../store/actions/favourites';\nimport {useThunkDispatch} from '../../store/thunkDispatch';\nimport {YTError} from '../../../@types/types';\nimport {ChytCliquePageTab} from '../../constants/chyt-page';\n\nimport './ChytPageTopRow.scss';\n\nconst block = cn('chyt-page-top-row');\n\nexport default function ChytPageTopRow() {\n return (\n <RowWithName page={Page.CHYT} name=\"CHYT cliques\">\n <ChytFavourites />\n <ChytBreadcrumbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const items = React.useMemo(() => {\n const result = [\n <BreadcrumbsItem key=\"<Root>\" href={`/${cluster}/${Page.CHYT}`}>\n {'<Root>'}\n </BreadcrumbsItem>,\n ];\n\n if (alias) {\n result.push(\n <BreadcrumbsItem key={alias} href={`/${cluster}/${Page.CHYT}/${alias}`}>\n {alias}\n </BreadcrumbsItem>,\n );\n }\n\n return result;\n }, [alias, cluster]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs navigate={history.push} showRoot>\n {items}\n </Breadcrumbs>\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string[];\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTrees: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: [defaultPoolTree],\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport Loader from '../../../components/Loader/Loader';\nimport {useSidePanel} from '../../../hooks/use-side-panel';\n\nexport const QueryWidgetLazy = withLazyLoading(\n React.lazy(() => import(/* webpackChunkName: \"query-widget\" */ './index')),\n <Loader visible centered size=\"l\" />,\n);\n\nexport function useQueryWidgetSidePanel() {\n return useSidePanel('QueryWidget', {\n renderContent({onClose}) {\n return <QueryWidgetLazy onClose={onClose} />;\n },\n });\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport type {RootState} from '../../../store/reducers';\nimport type {ChaosBundle, ChaosCell} from '../../../store/reducers/chaos_cell_bundles';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n aggregateTotal,\n tabletActiveChaosBundleLink,\n tabletChaosBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {prepareHost} from '../../../utils';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\n\nexport const getChaosIsLoaded = (state: RootState) => state.chaos_cell_bundles.loaded;\nexport const getChaosIsLoading = (state: RootState) => state.chaos_cell_bundles.loading;\nexport const getChaosError = (state: RootState) => state.chaos_cell_bundles.error;\n\nexport const getChaosBundlesSortState = (state: RootState) => state.chaos_cell_bundles.bundlesSort;\n\nexport const getChaosBundlesNameFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesNameFilter;\nexport const getChaosBundlesAccountFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesAccountFilter;\nexport const getChaosBundlesTagNodeFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTagNodeFilter;\n\nexport const getChaosBundles = (state: RootState) => state.chaos_cell_bundles.bundles;\n\nexport const getChaosActiveBundle = (state: RootState) => state.chaos_cell_bundles.activeBundle;\n\nexport const getChaosBundlesTableMode = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTableMode;\n\nexport const getChaosActiveBundleData = createSelector(\n [getChaosBundles, getChaosActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getChaosBundlesTotal = createSelector(\n [getChaosBundles],\n (bundles): ChaosBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof ChaosBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getChaosBundlesFiltered = createSelector(\n [\n getChaosBundles,\n getChaosBundlesNameFilter,\n getChaosBundlesAccountFilter,\n getChaosBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: ChaosBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getChaosBundlesSorted = createSelector(\n [getChaosBundlesFiltered, getChaosBundlesSortState],\n (bundles, {column, order}) => {\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getChaosCells = (state: RootState) => state.chaos_cell_bundles.cells;\nexport const getChaosCellsSortState = (state: RootState) => state.chaos_cell_bundles.cellsSort;\n\nexport const getChaosCellsIdFilter = (state: RootState) => state.chaos_cell_bundles.cellsIdFilter;\nexport const getChaosCellsBundleFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsBundleFilter;\nexport const getChaosCellsHostFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsHostFilter;\n\nexport const getChaosCellsOfActiveAccount = createSelector(\n [getChaosCells, getChaosActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getChaosCellsFiltered = createSelector(\n [\n getChaosCellsOfActiveAccount,\n getChaosCellsIdFilter,\n getChaosCellsBundleFilter,\n getChaosCellsHostFilter,\n getChaosActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: ChaosCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterChaosCellsByBundle(bundle: string, cells: Array<ChaosCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getChaosCellsSorted = createSelector(\n [getChaosCellsFiltered, getChaosCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getChaosCellsBundles = createSelector([getChaosCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getChaosCellsHosts = createSelector([getChaosCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getChaosCellsHostsOfActiveBundle = createSelector(\n [getChaosActiveBundle, getChaosCellsFiltered],\n (activeBundle: string, cells: Array<ChaosCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<ChaosCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface ChaosCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getChaosBreadcrumbItems = createSelector(\n [getCluster, getChaosActiveBundle],\n (cluster, activeBundle): Array<ChaosCellBundlesBreadcrumbsItem> => {\n const res: Array<ChaosCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletChaosBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n if (activeBundle) {\n res.push({\n text: activeBundle,\n href: tabletActiveChaosBundleLink(cluster, activeBundle),\n });\n }\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\nimport uniq_ from 'lodash/uniq';\nimport compact_ from 'lodash/compact';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\n\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {SortState} from '../../../types';\nimport {multiSortBySortStateArray} from '../../../utils/sort-helpers';\nimport {StrawberryListAttributes} from '../../../utils/strawberryControllerApi';\nimport {getSettingsData} from '../../../store/selectors/settings/settings-base';\n\nexport const getChytListData = (state: RootState) => state.chyt.list.data;\n\nexport const getChytListAvailableCreators = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.creator!)).sort();\n});\n\nexport const getChytListAvailableHealths = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return compact_(uniq_(items.map((item) => item.health)).sort());\n});\n\nexport const getChytListAvailableStates = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.state!)).sort();\n});\n\nexport const getChytCurrentAlias = (state: RootState) => state.chyt.clique.currentClique;\n\nexport const getChytListFilterAlias = (state: RootState) => state.chyt.listFilters.name;\nexport const getChytListFilterHealth = (state: RootState) => state.chyt.listFilters.health;\nexport const getChytListFilterCreator = (state: RootState) => state.chyt.listFilters.creator;\nexport const getChytListFilterState = (state: RootState) => state.chyt.listFilters.state;\n\ntype ChytListColumns = Exclude<StrawberryListAttributes, 'yt_operation_id'>;\nconst CHYT_LIST_SELECTABLE_COLUMNS: Record<Exclude<ChytListColumns, 'health_reason'>, true> = {\n instance_count: true,\n total_cpu: true,\n total_memory: true,\n creation_time: true,\n stage: true,\n yt_operation_start_time: true,\n yt_operation_finish_time: true,\n speclet_modification_time: true,\n strawberry_state_modification_time: true,\n pool: true,\n health: true,\n creator: true,\n state: true,\n};\n\nexport type ChytSelectableColumn = keyof typeof CHYT_LIST_SELECTABLE_COLUMNS;\n\ntype ChytColumnItem = {checked: boolean; column: ChytListColumns};\n\nexport const getChytListColumnsFromSettings = (state: RootState) => {\n return (\n getSettingsData(state)['global::chyt::list_columns'] ??\n ([\n 'health',\n 'state',\n 'instance_count',\n 'total_cpu',\n 'total_memory',\n 'creator',\n 'creation_time',\n ] as const)\n );\n};\n\nexport const getChytListVisibleColumns = createSelector(\n [getChytListColumnsFromSettings],\n (columns): Array<ChytSelectableColumn> => {\n const userColumns = new Set(columns);\n return compact_(\n columns.map((k) => {\n return CHYT_LIST_SELECTABLE_COLUMNS[\n k as keyof typeof CHYT_LIST_SELECTABLE_COLUMNS\n ] && userColumns.has(k)\n ? (k as ChytSelectableColumn)\n : null;\n }),\n );\n },\n);\n\nexport const getChytListColumns = createSelector(\n [getChytListVisibleColumns],\n (columns): Array<ChytColumnItem> => {\n const userColumns = new Set(columns);\n const res = columns.map((column) => {\n return {checked: true, column};\n });\n\n Object.keys(CHYT_LIST_SELECTABLE_COLUMNS).forEach((k) => {\n const column = k as ChytSelectableColumn;\n if (!userColumns.has(column)) {\n res.push({checked: false, column});\n }\n });\n\n return res;\n },\n);\n\nexport const getChytListTableSortState = (state: RootState) => state.chyt.listFilters.sortState;\n\nexport const getChytListTableSortStateByName = createSelector(\n [getChytListTableSortState],\n (sortState) => {\n return sortState.reduce(\n (acc, item, index) => {\n if (item.column) {\n acc[item.column] = {\n ...item,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<keyof ChytInfo, SortState<keyof ChytInfo> & {multisortIndex?: number}>,\n );\n },\n);\n\nconst getChytFilterPredicate = createSelector(\n [\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterState,\n getChytListFilterHealth,\n ],\n (alias, creator, state, health) => {\n const predicates = compact_([\n alias ? (item: ChytInfo) => -1 !== item.alias.indexOf(alias) : undefined,\n creator !== undefined ? (item: ChytInfo) => creator === item.creator : undefined,\n state ? (item: ChytInfo) => state === item.state : undefined,\n health ? (item: ChytInfo) => health === item.health : undefined,\n ]);\n\n return predicates.length ? concatByAnd(...predicates) : undefined;\n },\n);\n\nexport const getChytListTableItems = createSelector(\n [getChytListData, getChytListTableSortState, getChytFilterPredicate],\n (data, sortState, predicate) => {\n const {items = []} = data;\n\n const filteredItems = !predicate ? items : items.filter(predicate);\n\n const sortedItems = multiSortBySortStateArray(filteredItems, sortState);\n\n return sortedItems;\n },\n);\n","import find_ from 'lodash/find';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChaosBundlesNS,\n getChytNS,\n getClusterNS,\n getSchedulingNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getPath} from '../../store/selectors/navigation';\nimport {getPool, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {getTabletsActiveBundle} from './tablet_cell_bundles';\nimport {getChaosActiveBundle} from './chaos_cell_bundles';\nimport {getChytCurrentAlias} from './chyt';\n\n//************* Selectors for Accounts *****************\n\nexport const getFavouriteAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareFavourites,\n);\n\nexport const getLastVisitedAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareLastVisited,\n);\n\nexport const getPopularAccounts = createSelector([getLastVisitedAccounts], preparePopulars);\n\nexport const isActiveAcountInFavourites = createSelector(\n [getActiveAccount, getFavouriteAccounts],\n prepareIsInFavourites,\n);\n\nexport const getFavouriteChyt = createSelector([makeGetSetting, getChytNS], prepareFavourites);\n\nexport const getLastVisitedChyt = createSelector([makeGetSetting, getChytNS], prepareLastVisited);\n\nexport const getPopularChyt = createSelector([getLastVisitedChyt], preparePopulars);\n\nexport const isActiveCliqueInFavourites = createSelector(\n [getChytCurrentAlias, getFavouriteChyt],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Navigation *****************\n\nexport const getFavouritePaths = createSelector([makeGetSetting, getClusterNS], prepareFavourites);\n\nexport const getLastVisitedPaths = createSelector(\n [makeGetSetting, getClusterNS],\n prepareLastVisited,\n);\n\nexport const getPopularPaths = createSelector([getLastVisitedPaths], preparePopulars);\n\nexport const isCurrentPathInFavourites = createSelector(\n [getPath, getFavouritePaths],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Scheduling *****************\n\nexport const getFavouritePools = createSelector(\n [makeGetSetting, getSchedulingNS],\n prepareFavourites,\n);\n\nexport const isActivePoolInFavourites = createSelector(\n [getPool, getTree, getFavouritePools],\n prepareIsPoolInFavourites,\n);\n\n//************* Selectors for Bundles *****************\n\nexport const getFavouriteBundles = createSelector(\n [makeGetSetting, getBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveBundleInFavourites = createSelector(\n [getTabletsActiveBundle, getFavouriteBundles],\n prepareIsInFavourites,\n);\n\n// ************ Selectors for Chaos bundles ***********\n\nexport const getFavouriteChaosBundles = createSelector(\n [makeGetSetting, getChaosBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveChaosBundleInFavourites = createSelector(\n [getChaosActiveBundle, getFavouriteChaosBundles],\n prepareIsInFavourites,\n);\n\n//********************** Helpers *************************\n\nfunction prepareFavourites(getSetting, parentNS) {\n const items = getSetting(SettingName.LOCAL.FAVOURITES, parentNS);\n return sortBy_(items, 'path');\n}\n\nfunction prepareLastVisited(settingGetter, parentNS) {\n return settingGetter(SettingName.LOCAL.LAST_VISITED, parentNS) || [];\n}\n\nfunction preparePopulars(lastVisited) {\n return sortBy_(lastVisited, (entry) => -entry.count);\n}\n\nfunction prepareIsInFavourites(value, favourites) {\n return Boolean(find_(favourites, ({path}) => path === value));\n}\n\nfunction prepareIsPoolInFavourites(pool, tree, favourites) {\n return Boolean(find_(favourites, ({path}) => path === `${pool}[${tree}]`));\n}\n"],"names":["block","cn","EditableAsText","props","children","onChange","text","className","withControls","size","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","_React$useState","React","_React$useState2","_slicedToArray","editMode","setEditMode","_React$useState3","_React$useState4","input","setInput","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","value","handleKeyDown","evt","key","controlSize","_jsx","onClick","_jsxs","_Fragment","onBlur","TextInput","autoFocus","onUpdate","onKeyDown","Button","view","extraProps","onMouseDown","Icon","awesome","type","EditButton","_ref","_ref$size","qa","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_this$props","order","allowUnordered","withUndefined","nextSortOrderValue","_createClass","_this$props2","this","label","hidden","icon","Tooltip","content","format","ReadableField","face","b","Suggest","PropTypes","counter","_Component","isClearClicked","isUnmounting","skipApplyForNextBlur","onTextUpdate","clear","setState","loadSuggestions","showSuggestions","items","_this$props$onOpenCha","popupVisible","selectedIndex","onOpenChange","open","state","defaultText","prevItems","onFocus","bind","_assertThisInitialized","hideSuggestions","clearSuggestions","_this$props$onFocus","_this$props3","focused","_this$props$onBlur","_this$props4","_this$state$text","applySuggestion","keyCode","preventDefault","selectNextSuggestion","selectPrevSuggestion","applyOrClearSuggestion","_this$input$current","current","blur","_this$props$onOpenCha2","_this$props5","_this$props6","filter","Promise","resolve","then","_this$input$current2","_this$input$current3","itemIndex","item","_this$state","getItemIndex","getItemValue","onItemClick","_this$state2","prevIndex","getSelectedIndex","_this$state3","nextIndex","_this$props7","placeholder","disabled","pin","hasClear","controlRef","renderCounter","index","_this2","itemClassName","selected","undefined","_this$props8","template","renderItem","renderer","templates","get","__default__","renderSimpleItem","title","offsetWidth","maxItems","isNumber_","slice","isObject_","totalAmount","groupPredicate","_partition_","partition_","_partition_2","positiveGroup","negativeGroup","positiveGroupMaxItems","Math","round","max","_this3","listClassName","showNoItemsMsg","style","minWidth","getInputWidth","ReactList","itemRenderer","_this$props9","popupClassName","popupPlacement","restrictItems","Popup","placement","anchorRef","onClose","renderSuggestions","renderInput","renderPopup","prevState","Component","defaultProps","disable","zIndexGroupLevel","Secondary","Bold","_ref2","SecondaryBold","_ref3","Warning","_ref4","WarningLight","_ref5","NoWrap","_ref6","Escaped","_ref7","textNode","unipika","prettyprint","_objectSpread","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","usePoolTreesLoaded","dispatch","useDispatch","loadPoolTreesIfNotLoaded","PoolTreesLoader","useDefaultPoolTree","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","SidePanelPortal","useSidePanel","name","renderContent","widgetOpened","setWidgetOpened","openWidget","splitScreen","mergeScreen","closeWidget","widgetContent","visible","cancelHelper","CancelHelper","chytLoadList","getState","cluster","getCluster","isAdmin","isDeveloper","columns","getChytListVisibleColumns","CHYT_LIST","REQUEST","extraColumns","indexOf","attributesSet","Set","_toConsumableArray","chytApiAction","attributes","cancelToken","removeAllAndGenerateNextToken","data","_data$result","result","map","$value","_ref$$attributes","$attributes","alias","SUCCESS","error","isCancelled","FAILURE","chytListAction","action","params","skipLoadList","d","ChytPageListToolbar","filters","CHYT_LIST_FILTERS","Toolbar","itemsToWrap","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","creator","getChytListFilterHealth","choices","getChytListAvailableHealths","health","getChytListFilterState","states","getChytListAvailableStates","setVisible","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","checked","onConfirm","newColumns","setSettingByKey","chytSetVisibleColumns","onCancel","OperationId","id","color","allowCopy","operationId","Text","variant","Link","theme","url","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","hideTitle","capitalize","ChytConfirmation","pool","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","setError","YTDFDialog","pristineSubmittable","headerProps","footerProps","textApply","capitalize_","onAdd","fields","extras","makeErrorFields","initialValues","form","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","UIFactory","onChytAliasSqlClick","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","sortState","getChytListTableSortStateByName","ColumnHeader","onSort","col","nextOrder","options","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","checkedColumns","columnsByName","header","render","row","OperationPool","tree","width","instance_count","Number","align","total_cpu","total_memory","Bytes","health_reason","creation_time","speclet_modification_time","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","SubjectCard","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","useUpdater","WithStickyToolbar","hideToolbarShadow","toolbar","chytCliqueLoad","CHYT_CLIQUE","currentClique","skipErrorToast","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","showTooltipError","CHYT_OPTIONS","wrapApiPromiseByToaster","toasterName","skipSuccessToast","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","skipLoad","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","YTErrorBlock","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","extraTools","YsonDownloadButton","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","_React$useMemo","groups","typeByName","fieldTypeByName","group","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","_item$current_value2","_item$current_value3","common","description","converter","default_value","String","_item$choices","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","_step","_iterator","_createForOfIteratorHelper","_loop","poolTrees","some","field","pool_trees","s","n","done","err","e","f","linkPoolWithPoolTree","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","_useState","useState","_useState2","logsExist","setLogsExist","chytMonitoring","logsPath","checkLogsExist","_asyncToGenerator","_regeneratorRuntime","_callee","_yield$ytApiV4$exists","_context","prev","next","ytApiV4","exists","sent","t0","tabProps","_makeTabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","MONITORING","show","external","formatByParams","QUERY_LOGS","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_useSelector","history","useHistory","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","YTAlertBlock","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","ChytPageTopRow","RowWithName","page","ChytFavourites","ChytBreadcrumbs","CreateChytButton","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","handleFavouriteItemClick","handleFavouriteToggle","chytToggleFavourite","Favourites","onToggle","toggleDisabled","BreadcrumbsItem","href","ChytAliasSuggest","Breadcrumbs","navigate","showRoot","setItems","ypath","getValue","_x","_React$useState5","_React$useState6","_form$getState$values","rest","runAfterCreation","speclet_options","successTitle","reject","required","minValue","maxValue","QueryWidgetLazy","withLazyLoading","centered","getChaosIsLoaded","chaos_cell_bundles","getChaosIsLoading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","createSelector","find_","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getChaosBundlesFiltered","nameFilter","accountFilter","tagNodeFilter","predicates","lowerNameFilter","toLowerCase","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","filter_","concatByAnd","getChaosBundlesSorted","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","uniq_","map_","sort","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","join","getChaosBreadcrumbItems","tabletChaosBundleRootLink","tabletActiveChaosBundleLink","getChytListData","list","_data$items","_data$items2","compact_","_data$items3","listFilters","CHYT_LIST_SELECTABLE_COLUMNS","_getSettingsData$glob","getSettingsData","userColumns","has","reduce","multisortIndex","getChytFilterPredicate","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","makeGetSetting","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getChytNS","getLastVisitedChyt","getFavouritePaths","getClusterNS","getLastVisitedPaths","getPopularPaths","isCurrentPathInFavourites","getPath","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","getTree","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","getSetting","parentNS","SettingName","LOCAL","FAVOURITES","sortBy_","settingGetter","LAST_VISITED","lastVisited","entry","count"],"sourceRoot":""}
1
+ {"version":3,"file":"js/chyt.a8612ac3.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Suggest/Suggest.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global-pool-trees.ts","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/chyt/list.ts","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/pages/chyt/ChytPageTopRow.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/chaos_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/favourites.js"],"sourcesContent":["import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button\n className={block('edit-btn')}\n onClick={onClick}\n size={size}\n qa=\"qa:navigation:edit-path\"\n >\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport isNumber_ from 'lodash/isNumber';\nimport isObject_ from 'lodash/isObject';\nimport partition_ from 'lodash/partition';\n\nimport {Popup, PopupProps, TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nimport templates from '../../components/templates/utils';\n\nimport './Suggest.scss';\n\nconst b = block('suggest');\n\n// TODO add is scrolled into view logic\n// TODO support custom item height\n\nexport const itemsProps = PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n value: PropTypes.string,\n text: PropTypes.string,\n counter: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n ]),\n);\n\ninterface Item {\n value: string;\n text: string;\n counter?: string | number;\n}\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst ARROW_UP = 38;\nconst ARROW_DOWN = 40;\n\n/*const TAB = 9;\nconst CTRL = 16;\nconst ALT = 17;\nconst ARROW_LEFT = 37;\nconst ARROW_RIGHT = 39;\nconst COMMAND = 91;*/\n\nexport interface SuggestProps {\n className?: string;\n\n filter: (items: SuggestProps['items'], text?: string) => SuggestProps['items'];\n apply?: (value: SuggestItem) => void;\n onTextUpdate?: (text: string) => void;\n onItemClick?: (item: SuggestItem) => void;\n clear?: () => void;\n placeholder?: string;\n autoFocus?: boolean;\n text?: string;\n defaultText?: string;\n disabled?: boolean;\n template?: {\n key: string;\n };\n items: Array<SuggestItem>;\n maxItems?: number | {totalAmount: number; groupPredicate: () => void};\n\n zIndexGroupLevel?: number;\n onBlur?: () => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n pin?: TextInputProps['pin'];\n onOpenChange?: (p: {open: boolean}) => void;\n popupClassName?: string;\n popupPlacement?: PopupProps['placement'];\n\n renderItem?: (item: SuggestItem) => React.ReactNode;\n}\n\nexport type SuggestItem = string | Item;\n\ninterface State {\n text?: string;\n items: SuggestProps['items'];\n selectedIndex: number;\n popupVisible: boolean;\n\n prevItems: SuggestProps['items'];\n\n focused?: boolean;\n}\n\nexport default class Suggest extends Component<SuggestProps, State> {\n static defaultProps = {\n disable: false,\n text: '',\n autoFocus: false,\n items: [],\n zIndexGroupLevel: 1,\n onBlur: () => {},\n focused: false,\n };\n\n private input = React.createRef<HTMLInputElement>();\n private isClearClicked = false; // the flag for the correct render text-input view after clear button click\n private isUnmounting = false;\n private skipApplyForNextBlur = false;\n\n constructor(props: SuggestProps) {\n super(props);\n\n this.state = {\n text: 'text' in props ? props.text : props.defaultText,\n items: props.items,\n selectedIndex: 0,\n popupVisible: false,\n prevItems: [],\n };\n\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.hideSuggestions = this.hideSuggestions.bind(this);\n this.clearSuggestions = this.clearSuggestions.bind(this);\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: SuggestProps, prevState: State) {\n const text = !prevState.focused && 'text' in props ? props.text : prevState.text;\n\n if (props.items === prevState.prevItems && text === prevState.text) {\n return null;\n }\n\n const items = props.filter(props.items, text);\n const res = {items, prevItems: props.items, text};\n\n return res;\n }\n\n componentDidMount() {\n this.isClearClicked = false;\n }\n\n componentWillUnmount() {\n this.isUnmounting = true;\n }\n\n // eslint-disable-next-line react/sort-comp\n onTextUpdate = (text: string) => {\n const {clear, onTextUpdate} = this.props;\n\n this.setState({text});\n this.loadSuggestions(text);\n\n if (!text.length) {\n clear?.();\n }\n\n onTextUpdate?.(text);\n };\n\n onFocus() {\n // make sure that suggestions popup is visible only if onFocus() invocation was not followed\n // by onClearClick() invocation (which sets the flag to true afterwards), since onFocus event\n // always happen first when any action is made within text input\n this.setState({focused: true});\n\n this.isClearClicked = false;\n this.loadSuggestions(this.state.text);\n this.skipApplyForNextBlur = false;\n this.props.onFocus?.();\n }\n\n onBlur() {\n this.hideSuggestions();\n if (!this.isClearClicked) {\n this.props.onBlur?.();\n }\n if (!this.skipApplyForNextBlur) {\n this.applySuggestion(this.state.text ?? '');\n }\n this.setState({focused: false});\n }\n\n onKeyDown(evt: React.KeyboardEvent<HTMLElement>) {\n const key = evt.keyCode;\n\n if (key === ARROW_DOWN) {\n evt.preventDefault();\n this.selectNextSuggestion();\n } else if (key === ARROW_UP) {\n evt.preventDefault();\n this.selectPrevSuggestion();\n } else if (key === ENTER) {\n this.applyOrClearSuggestion();\n } else if (key === ESCAPE) {\n this.input.current?.blur();\n }\n }\n\n hideSuggestions() {\n this.setState({items: [], popupVisible: false, selectedIndex: 0});\n this.props.onOpenChange?.({open: false});\n }\n\n showSuggestions = (items: SuggestProps['items']) => {\n if (!this.isUnmounting) {\n this.setState({\n items,\n popupVisible: true,\n selectedIndex: 0,\n });\n this.props.onOpenChange?.({open: true});\n }\n };\n\n loadSuggestions(text?: string) {\n const {filter, items} = this.props;\n\n Promise.resolve(filter(items, text)).then(this.showSuggestions);\n }\n\n clearSuggestions() {\n const {clear} = this.props;\n\n clear?.();\n // update flag value not to show suggestions after function clear() have change input value for ''\n // and on input change event listener will call popup render\n this.isClearClicked = true;\n\n this.input.current?.blur();\n }\n\n applySuggestion(text: string) {\n const {apply} = this.props;\n this.setState({text});\n apply?.(text);\n this.input.current?.blur();\n }\n\n getItemIndex(selectedIndex: number) {\n return selectedIndex - 1;\n }\n\n getSelectedIndex(itemIndex: number) {\n return itemIndex + 1;\n }\n\n getItemValue(item: string | Item) {\n return typeof item === 'string' ? item : item.value;\n }\n\n applyOrClearSuggestion() {\n const {selectedIndex, items} = this.state;\n\n let item: SuggestItem | undefined;\n\n if (selectedIndex === 0) {\n if (items.length > 0) {\n item = items[0];\n }\n } else {\n item = items[this.getItemIndex(selectedIndex)];\n }\n\n if (item) {\n const value = this.getItemValue(item);\n this.applySuggestion(value);\n const {onItemClick} = this.props;\n onItemClick?.(item);\n }\n }\n\n selectPrevSuggestion() {\n const {selectedIndex, items} = this.state;\n const prevIndex =\n selectedIndex === 0 ? this.getSelectedIndex(items.length - 1) : selectedIndex - 1;\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, items} = this.state;\n const nextIndex =\n selectedIndex === this.getSelectedIndex(items.length - 1) ? 0 : selectedIndex + 1;\n this.setState({selectedIndex: nextIndex});\n }\n\n renderInput() {\n const {text} = this.state;\n const {placeholder, autoFocus, disabled, pin} = this.props;\n\n return (\n <TextInput\n hasClear\n value={text}\n className={b('control')}\n placeholder={placeholder}\n disabled={disabled}\n onUpdate={this.onTextUpdate}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n autoFocus={autoFocus}\n controlRef={this.input}\n pin={pin}\n onKeyDown={this.onKeyDown}\n />\n );\n }\n\n renderCounter(item: Item) {\n const counter = item.counter;\n\n return (\n typeof counter !== 'undefined' && <span className={b('item-counter')}>{counter}</span>\n );\n }\n\n renderSimpleItem(item: string | Item) {\n const text = typeof item === 'string' ? item : item.text;\n\n return (\n <span>\n {'string' !== typeof item && this.renderCounter(item)}\n {text}\n </span>\n );\n }\n\n renderItem(\n item: string | Item,\n index: number,\n key: number | string,\n className?: string,\n ): React.ReactElement {\n const {selectedIndex} = this.state;\n const itemClassName = b(\n 'item',\n {\n selected: selectedIndex === this.getSelectedIndex(index) ? 'yes' : undefined,\n },\n className,\n );\n\n const value = this.getItemValue(item);\n\n const {template, renderItem, onItemClick} = this.props;\n\n const renderer =\n renderItem ??\n (typeof template !== 'undefined'\n ? templates.get(template.key).__default__\n : this.renderSimpleItem.bind(this));\n\n return (\n <li\n key={key}\n title={value}\n className={itemClassName}\n onMouseDown={() => {\n this.skipApplyForNextBlur = true;\n onItemClick?.(item);\n this.applySuggestion(value);\n }}\n >\n {renderer(item)}\n </li>\n );\n }\n\n getInputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current ? this.input.current.offsetWidth - 2 : 0;\n }\n\n restrictItems(items: Array<string | Item>) {\n const {maxItems} = this.props;\n\n if (isNumber_(maxItems)) {\n return items.slice(0, maxItems || items.length);\n } else if (isObject_(maxItems)) {\n const {totalAmount, groupPredicate} = maxItems;\n const [positiveGroup, negativeGroup] = partition_(items, groupPredicate);\n if (positiveGroup.length && negativeGroup.length) {\n // NOTE: we don't want to one group to be omitted in case there is a large\n // bias towards another group - hence minimum value of 1\n const positiveGroupMaxItems = Math.round(\n Math.max((positiveGroup.length / items.length) * totalAmount, 1),\n );\n return positiveGroup\n .slice(0, positiveGroupMaxItems)\n .concat(negativeGroup.slice(0, totalAmount - positiveGroupMaxItems));\n } else {\n // one group is empty - same case as no groups\n return items.slice(0, totalAmount || items.length);\n }\n } else {\n return items;\n }\n }\n\n renderSuggestions(items: Array<SuggestItem>) {\n const className = b('wrapper');\n const listClassName = b('items');\n\n const itemRenderer = (index: number, key: number | string): JSX.Element =>\n this.renderItem(items[index], index, key);\n\n const showNoItemsMsg = items.length === 0 && this.state.text;\n return (\n items && (\n <div className={className}>\n {showNoItemsMsg && this.renderItem('No items', -1, 'no_items', b('no-items'))}\n <ul className={listClassName} style={{minWidth: this.getInputWidth()}}>\n <ReactList\n itemRenderer={itemRenderer}\n length={items.length}\n type=\"uniform\"\n />\n </ul>\n </div>\n )\n );\n }\n\n renderPopup() {\n const {popupClassName, popupPlacement} = this.props;\n const {popupVisible} = this.state;\n\n const items = this.restrictItems(this.state.items);\n return (\n <Popup\n className={popupClassName}\n placement={popupPlacement ?? ['bottom-start', 'top-start']}\n anchorRef={this.input}\n // don't show popup with suggestions after clear button click\n open={!this.isClearClicked && popupVisible && items.length > 0}\n onClose={this.hideSuggestions}\n >\n {this.renderSuggestions(items)}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n return (\n <div className={b(null, className)}>\n {this.renderInput()}\n {this.renderPopup()}\n </div>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nexport function usePoolTreesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadPoolTreesIfNotLoaded());\n }, [dispatch]);\n}\n\nexport function PoolTreesLoader() {\n usePoolTreesLoaded();\n return null;\n}\n\nexport function useDefaultPoolTree() {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>();\n\n React.useEffect(() => {\n loadDefaultPoolTree().then((value) => {\n setDefaultPoolTree(value);\n });\n }, []);\n\n return defaultPoolTree;\n}\n\nexport function WaitForDefaultPoolTree({\n children,\n}: {\n children: ({defaultPoolTree}: {defaultPoolTree: string}) => React.ReactNode;\n}) {\n const defaultPoolTree = useDefaultPoolTree();\n\n return defaultPoolTree ? children({defaultPoolTree}) : null;\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch, name]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\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} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport {getChytListVisibleColumns} from '../../../store/selectors/chyt';\n\nimport {StrawberryApi, chytApiAction} from '../../../utils/strawberryControllerApi';\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 StrawberryApi['action'],\n ApiItem extends StrawberryApi & {action: T} = StrawberryApi & {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","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';\nimport Icon from '../../../components/Icon/Icon';\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 <Icon awesome=\"layout-columns-3\" />\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 {\n StrawberryCliqueHealthType,\n StrawberryCliqueStateType,\n} from '../../../utils/strawberryControllerApi';\n\nconst THEME_MAP: Partial<\n Record<\n StrawberryCliqueStateType | StrawberryCliqueHealthType,\n 'danger' | 'success' | 'info' | 'warning'\n >\n> = {\n good: 'success',\n failed: 'danger',\n active: 'success',\n pending: 'info',\n untracked: 'warning',\n};\n\nexport function CliqueState({\n state,\n}: {\n state?: StrawberryCliqueStateType | StrawberryCliqueHealthType;\n}) {\n return !state ? (\n format.NO_VALUE\n ) : (\n <Label text={state} theme={THEME_MAP[state]} hideTitle capitalize />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport capitalize_ from 'lodash/capitalize';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {Bold} from '../../../components/Text/Text';\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 size=\"s\"\n pristineSubmittable\n headerProps={{\n title: (\n <>\n {format.ReadableField(action)} {alias}\n </>\n ),\n }}\n footerProps={{\n textApply: capitalize_(action),\n }}\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 <Bold>{alias}</Bold>?\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 size=\"s\"\n className={block('start')}\n headerProps={{\n title: (\n <>\n Start clique <Bold>{alias}</Bold>\n </>\n ),\n }}\n footerProps={{\n textApply: 'Start',\n }}\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} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../../shared/constants/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 dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (!UIFactory.onChytAliasSqlClick) {\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, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n color,\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 color?: 'secondary';\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\n view={color === 'secondary' ? 'flat-secondary' : 'flat'}\n onClick={() => onSqlClick(alias)}\n >\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 view=\"outlined\"\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 view=\"outlined\"\n onClick={() => {\n stop.action();\n }}\n >\n <Icon awesome=\"stop-circle\" />\n </Button>\n </span>\n\n <Button\n title=\"Remove\"\n view=\"outlined\"\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={color === 'secondary' ? 'flat-secondary' : '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';\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 {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\nimport {Secondary} from '../../../components/Text/Text';\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 className={block('pool')}\n cluster={cluster}\n pool={{pool: row.pool, tree: 'physical'}}\n />\n );\n },\n width: 320,\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('health', block('one-row-cell'))}\n content={format.ReadableField(row.health_reason)}\n >\n <CliqueState state={row.health} />\n {row.health_reason && (\n <Secondary>\n &nbsp;\n <Icon\n className={block('warn-icon')}\n awesome={'exclamation-triangle'}\n />\n </Secondary>\n )}\n </Tooltip>\n );\n },\n width: 120,\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 width: 120,\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 <div className={block('one-row-cell', block('creator'))}>\n {!row.creator ? (\n format.NO_VALUE\n ) : (\n <SubjectCard className={block('full-width')} name={row.creator} />\n )}\n </div>\n );\n },\n width: 120,\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: 120,\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 color=\"secondary\"\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 {...sortState[column]}\n onSort={(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 (\n <WithStickyToolbar\n hideToolbarShadow\n toolbar={<ChytPageListToolbar />}\n content={<ChytPageListTable />}\n />\n );\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} from '../../../store/selectors/global';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\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 '../../../containers/ACL';\n\nexport function ChytPageCliqueAcl() {\n const alias = useSelector(getChytCurrentAlias);\n return (\n Boolean(alias) && (\n <AccessContentAcl path={`//sys/access_control_object_namespaces/chyt/${alias}`} />\n )\n );\n}\n","import {ControlField, 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 | Option<'pool_trees', 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, defaultPoolTree}: 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 {\n ...common,\n type: 'pool',\n extras: {...extras, allowEmpty: true},\n initialValue: item.current_value ?? item.default_value,\n };\n case 'pool_trees':\n return {\n ...common,\n type: 'pool-tree',\n extras,\n initialValue: item.current_value ?? item.default_value ?? [defaultPoolTree],\n };\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 defaultPoolTree: string;\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\nexport function linkPoolWithPoolTree<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: ReturnType<typeof makeTabbedDialogFieldsFromDescription>) {\n for (const group of data.fields) {\n type FieldType = (typeof data)['fields'][number]['fields'][number];\n type FieldPoolType = FieldType & {type: 'pool'};\n type FieldPoolTreesType = FieldType & {type: 'pool-tree'};\n\n let pool: undefined | FieldPoolType;\n let poolTrees: undefined | FieldPoolTreesType;\n\n group.fields.some((field) => {\n if (field.type === 'pool-tree') {\n poolTrees = field;\n }\n if (field.type === 'pool') {\n pool = field;\n }\n return Boolean(pool && poolTrees);\n });\n\n if (pool && poolTrees) {\n const extras = pool.extras;\n (pool as ControlField).extras = (values: FormValues) => ({\n ...extras,\n poolTrees: values[group.name].pool_trees,\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} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {chytApiAction} from '../../../utils/strawberryControllerApi';\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\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 {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {ChytCliqueOptionsAction} from '../../reducers/chyt/options';\nimport {RootState} from '../../reducers';\nimport {getCluster} from '../../selectors/global';\nimport {isDeveloper} from '../../selectors/global/is-developer';\nimport {\n StrawberryListAttributes,\n StrawberryListResponseItem,\n chytApiAction,\n} from '../../../utils/strawberryControllerApi';\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(\n alias: string,\n showTooltipError?: boolean,\n): 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: alias}});\n\n return wrapApiPromiseByToaster(\n chytApiAction(\n 'describe_options',\n cluster,\n {alias},\n {\n isAdmin,\n cancelToken: cancelHelper.removeAllAndGenerateNextToken(),\n skipErrorToast: true,\n },\n ),\n {\n toasterName: 'chytLoadCliqueOptions_' + alias,\n skipSuccessToast: true,\n skipErrorToast: !showTooltipError,\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<StrawberryListResponseItem>['$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<StrawberryListAttributes> = [];\n const options_to_set: typeof options = {};\n\n Object.keys(options).forEach((k) => {\n const key = k as StrawberryListAttributes;\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 Button from '../../../components/Button/Button';\nimport {YTErrorBlock} from '../../../components/Error/Error';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTDFDialog} from '../../../components/Dialog';\nimport Yson from '../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {\n linkPoolWithPoolTree,\n makeTabbedDialogFieldsFromDescription,\n} 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';\nimport {WaitForDefaultPoolTree} from '../../../hooks/global-pool-trees';\n\nimport './ChytPageCliqueSpeclet.scss';\nimport {YsonDownloadButton} from '../../../components/DownloadAttributesButton';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n showTooltipError,\n skipLoad,\n}: {showTooltipError?: boolean; skipLoad?: boolean} = {}) {\n const dispatch = useDispatch();\n const alias = useSelector(getChytCurrentAlias);\n\n React.useMemo(() => {\n if (alias && !skipLoad) {\n dispatch(chytLoadCliqueOptions(alias, showTooltipError));\n }\n }, [alias, skipLoad, showTooltipError, 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 dispatch = useDispatch();\n const {error, alias, specletData, unipikaSettings} = useSpecletData({skipLoad: true});\n\n const update = React.useCallback(() => {\n if (alias) {\n dispatch(chytLoadCliqueSpeclet(alias));\n }\n }, [alias, dispatch]);\n\n useUpdater(update);\n\n return (\n <React.Fragment>\n {error && <YTErrorBlock bottomMargin error={error} />}\n {!specletData ? null : (\n <React.Fragment>\n <div className={block('edit')}>\n <ChytSpecletEditButton skipLoad />\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 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 && (\n <YTErrorBlock className={block('raw-speclet-error')} error={error} bottomMargin />\n )}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n extraTools={\n <YsonDownloadButton\n value={data}\n settings={unipikaSettings}\n name={`chyt_speclet_${alias}`}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n skipLoad,\n}: {\n compact?: boolean;\n className?: string;\n skipLoad?: boolean;\n}) {\n const [visible, setVisible] = React.useState(false);\n\n const {specletData, dataAlias, alias, unipikaSettings} = useSpecletData({\n showTooltipError: true,\n skipLoad,\n });\n\n return (\n <React.Fragment>\n {!visible || !specletData ? null : (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n defaultPoolTree={defaultPoolTree}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n <Button\n view={compact ? 'outlined' : undefined}\n className={className}\n title={'Edit speclet'}\n onClick={() => setVisible(!visible)}\n disabled={!specletData}\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 defaultPoolTree,\n}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n defaultPoolTree: string;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n const groups = makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n defaultPoolTree,\n });\n\n linkPoolWithPoolTree(groups);\n\n return groups;\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <YTErrorBlock 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: <span>Edit clique {alias}</span>,\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, {useEffect, useState} 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';\nimport {ytApiV4} from '../../../rum/rum-wrap-api';\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 const [logsExist, setLogsExist] = useState(false);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const logsPath = `//sys/strawberry/chyt/${chytAlias}/artifacts/system_log_tables/query_log/latest`;\n\n useEffect(() => {\n const checkLogsExist = async () => {\n try {\n const {value} = await ytApiV4.exists({path: logsPath});\n setLogsExist(value);\n } catch {\n setLogsExist(false);\n }\n };\n\n if (chytAlias) {\n checkLogsExist();\n }\n }, [chytAlias]);\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 [ChytCliquePageTab.QUERY_LOGS]: {\n show: logsExist,\n external: true,\n url: `/${ytCluster}/navigation?path=${logsPath}`,\n routed: false,\n },\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 {YTAlertBlock} from '../../../components/Alert/Alert';\nimport {YTErrorBlock} 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 {SubjectCard} from '../../../components/SubjectLink/SubjectLink';\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 ? <YTErrorBlock className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <YTErrorBlock\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <YTAlertBlock\n header=\"Health reason\"\n type=\"alert\"\n message={health_reason}\n bottomMargin\n />\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 ? <SubjectCard name={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 React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {Button, Text} from '@gravity-ui/uikit';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../components/Breadcrumbs';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {YTDFDialog, makeErrorFields} from '../../components/Dialog';\nimport Favourites, {FavouritesItem} from '../../components/Favourites/Favourites';\nimport {EditableAsText} from '../../components/EditableAsText/EditableAsText';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster} from '../../store/selectors/global';\nimport {isDeveloper} from '../../store/selectors/global/is-developer';\nimport {chytApiAction} from '../../utils/strawberryControllerApi';\nimport {chytCliqueCreate} from '../../store/actions/chyt/list';\nimport {chytToggleFavourite} from '../../store/actions/favourites';\nimport {useThunkDispatch} from '../../store/thunkDispatch';\nimport {YTError} from '../../../@types/types';\nimport {ChytCliquePageTab} from '../../constants/chyt-page';\n\nimport './ChytPageTopRow.scss';\n\nconst block = cn('chyt-page-top-row');\n\nexport default function ChytPageTopRow() {\n return (\n <RowWithName page={Page.CHYT} name=\"CHYT cliques\">\n <ChytFavourites />\n <ChytBreadcrumbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n\n const items = React.useMemo(() => {\n const result = [\n <BreadcrumbsItem key=\"<Root>\" href={`/${cluster}/${Page.CHYT}`}>\n {'<Root>'}\n </BreadcrumbsItem>,\n ];\n\n if (alias) {\n result.push(\n <BreadcrumbsItem key={alias} href={`/${cluster}/${Page.CHYT}/${alias}`}>\n {alias}\n </BreadcrumbsItem>,\n );\n }\n\n return result;\n }, [alias, cluster]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs navigate={history.push} showRoot>\n {items}\n </Breadcrumbs>\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string[];\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTrees: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: [defaultPoolTree],\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport Loader from '../../../components/Loader/Loader';\nimport {useSidePanel} from '../../../hooks/use-side-panel';\n\nexport const QueryWidgetLazy = withLazyLoading(\n React.lazy(() => import(/* webpackChunkName: \"query-widget\" */ './index')),\n <Loader visible centered size=\"l\" />,\n);\n\nexport function useQueryWidgetSidePanel() {\n return useSidePanel('QueryWidget', {\n renderContent({onClose}) {\n return <QueryWidgetLazy onClose={onClose} />;\n },\n });\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport type {RootState} from '../../../store/reducers';\nimport type {ChaosBundle, ChaosCell} from '../../../store/reducers/chaos_cell_bundles';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n aggregateTotal,\n tabletActiveChaosBundleLink,\n tabletChaosBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {prepareHost} from '../../../utils';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\n\nexport const getChaosIsLoaded = (state: RootState) => state.chaos_cell_bundles.loaded;\nexport const getChaosIsLoading = (state: RootState) => state.chaos_cell_bundles.loading;\nexport const getChaosError = (state: RootState) => state.chaos_cell_bundles.error;\n\nexport const getChaosBundlesSortState = (state: RootState) => state.chaos_cell_bundles.bundlesSort;\n\nexport const getChaosBundlesNameFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesNameFilter;\nexport const getChaosBundlesAccountFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesAccountFilter;\nexport const getChaosBundlesTagNodeFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTagNodeFilter;\n\nexport const getChaosBundles = (state: RootState) => state.chaos_cell_bundles.bundles;\n\nexport const getChaosActiveBundle = (state: RootState) => state.chaos_cell_bundles.activeBundle;\n\nexport const getChaosBundlesTableMode = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTableMode;\n\nexport const getChaosActiveBundleData = createSelector(\n [getChaosBundles, getChaosActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getChaosBundlesTotal = createSelector(\n [getChaosBundles],\n (bundles): ChaosBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof ChaosBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getChaosBundlesFiltered = createSelector(\n [\n getChaosBundles,\n getChaosBundlesNameFilter,\n getChaosBundlesAccountFilter,\n getChaosBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: ChaosBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getChaosBundlesSorted = createSelector(\n [getChaosBundlesFiltered, getChaosBundlesSortState],\n (bundles, {column, order}) => {\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getChaosCells = (state: RootState) => state.chaos_cell_bundles.cells;\nexport const getChaosCellsSortState = (state: RootState) => state.chaos_cell_bundles.cellsSort;\n\nexport const getChaosCellsIdFilter = (state: RootState) => state.chaos_cell_bundles.cellsIdFilter;\nexport const getChaosCellsBundleFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsBundleFilter;\nexport const getChaosCellsHostFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsHostFilter;\n\nexport const getChaosCellsOfActiveAccount = createSelector(\n [getChaosCells, getChaosActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getChaosCellsFiltered = createSelector(\n [\n getChaosCellsOfActiveAccount,\n getChaosCellsIdFilter,\n getChaosCellsBundleFilter,\n getChaosCellsHostFilter,\n getChaosActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: ChaosCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterChaosCellsByBundle(bundle: string, cells: Array<ChaosCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getChaosCellsSorted = createSelector(\n [getChaosCellsFiltered, getChaosCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getChaosCellsBundles = createSelector([getChaosCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getChaosCellsHosts = createSelector([getChaosCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getChaosCellsHostsOfActiveBundle = createSelector(\n [getChaosActiveBundle, getChaosCellsFiltered],\n (activeBundle: string, cells: Array<ChaosCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<ChaosCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface ChaosCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getChaosBreadcrumbItems = createSelector(\n [getCluster, getChaosActiveBundle],\n (cluster, activeBundle): Array<ChaosCellBundlesBreadcrumbsItem> => {\n const res: Array<ChaosCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletChaosBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n if (activeBundle) {\n res.push({\n text: activeBundle,\n href: tabletActiveChaosBundleLink(cluster, activeBundle),\n });\n }\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\nimport uniq_ from 'lodash/uniq';\nimport compact_ from 'lodash/compact';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\n\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {SortState} from '../../../types';\nimport {multiSortBySortStateArray} from '../../../utils/sort-helpers';\nimport {StrawberryListAttributes} from '../../../utils/strawberryControllerApi';\nimport {getSettingsData} from '../../../store/selectors/settings/settings-base';\n\nexport const getChytListData = (state: RootState) => state.chyt.list.data;\n\nexport const getChytListAvailableCreators = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.creator!)).sort();\n});\n\nexport const getChytListAvailableHealths = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return compact_(uniq_(items.map((item) => item.health)).sort());\n});\n\nexport const getChytListAvailableStates = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.state!)).sort();\n});\n\nexport const getChytCurrentAlias = (state: RootState) => state.chyt.clique.currentClique;\n\nexport const getChytListFilterAlias = (state: RootState) => state.chyt.listFilters.name;\nexport const getChytListFilterHealth = (state: RootState) => state.chyt.listFilters.health;\nexport const getChytListFilterCreator = (state: RootState) => state.chyt.listFilters.creator;\nexport const getChytListFilterState = (state: RootState) => state.chyt.listFilters.state;\n\ntype ChytListColumns = Exclude<StrawberryListAttributes, 'yt_operation_id'>;\nconst CHYT_LIST_SELECTABLE_COLUMNS: Record<Exclude<ChytListColumns, 'health_reason'>, true> = {\n instance_count: true,\n total_cpu: true,\n total_memory: true,\n creation_time: true,\n stage: true,\n yt_operation_start_time: true,\n yt_operation_finish_time: true,\n speclet_modification_time: true,\n strawberry_state_modification_time: true,\n pool: true,\n health: true,\n creator: true,\n state: true,\n};\n\nexport type ChytSelectableColumn = keyof typeof CHYT_LIST_SELECTABLE_COLUMNS;\n\ntype ChytColumnItem = {checked: boolean; column: ChytListColumns};\n\nexport const getChytListColumnsFromSettings = (state: RootState) => {\n return (\n getSettingsData(state)['global::chyt::list_columns'] ??\n ([\n 'health',\n 'state',\n 'instance_count',\n 'total_cpu',\n 'total_memory',\n 'creator',\n 'creation_time',\n ] as const)\n );\n};\n\nexport const getChytListVisibleColumns = createSelector(\n [getChytListColumnsFromSettings],\n (columns): Array<ChytSelectableColumn> => {\n const userColumns = new Set(columns);\n return compact_(\n columns.map((k) => {\n return CHYT_LIST_SELECTABLE_COLUMNS[\n k as keyof typeof CHYT_LIST_SELECTABLE_COLUMNS\n ] && userColumns.has(k)\n ? (k as ChytSelectableColumn)\n : null;\n }),\n );\n },\n);\n\nexport const getChytListColumns = createSelector(\n [getChytListVisibleColumns],\n (columns): Array<ChytColumnItem> => {\n const userColumns = new Set(columns);\n const res = columns.map((column) => {\n return {checked: true, column};\n });\n\n Object.keys(CHYT_LIST_SELECTABLE_COLUMNS).forEach((k) => {\n const column = k as ChytSelectableColumn;\n if (!userColumns.has(column)) {\n res.push({checked: false, column});\n }\n });\n\n return res;\n },\n);\n\nexport const getChytListTableSortState = (state: RootState) => state.chyt.listFilters.sortState;\n\nexport const getChytListTableSortStateByName = createSelector(\n [getChytListTableSortState],\n (sortState) => {\n return sortState.reduce(\n (acc, item, index) => {\n if (item.column) {\n acc[item.column] = {\n ...item,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<keyof ChytInfo, SortState<keyof ChytInfo> & {multisortIndex?: number}>,\n );\n },\n);\n\nconst getChytFilterPredicate = createSelector(\n [\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterState,\n getChytListFilterHealth,\n ],\n (alias, creator, state, health) => {\n const predicates = compact_([\n alias ? (item: ChytInfo) => -1 !== item.alias.indexOf(alias) : undefined,\n creator !== undefined ? (item: ChytInfo) => creator === item.creator : undefined,\n state ? (item: ChytInfo) => state === item.state : undefined,\n health ? (item: ChytInfo) => health === item.health : undefined,\n ]);\n\n return predicates.length ? concatByAnd(...predicates) : undefined;\n },\n);\n\nexport const getChytListTableItems = createSelector(\n [getChytListData, getChytListTableSortState, getChytFilterPredicate],\n (data, sortState, predicate) => {\n const {items = []} = data;\n\n const filteredItems = !predicate ? items : items.filter(predicate);\n\n const sortedItems = multiSortBySortStateArray(filteredItems, sortState);\n\n return sortedItems;\n },\n);\n","import find_ from 'lodash/find';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChaosBundlesNS,\n getChytNS,\n getClusterNS,\n getSchedulingNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getPath} from '../../store/selectors/navigation';\nimport {getPool, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {getTabletsActiveBundle} from './tablet_cell_bundles';\nimport {getChaosActiveBundle} from './chaos_cell_bundles';\nimport {getChytCurrentAlias} from './chyt';\n\n//************* Selectors for Accounts *****************\n\nexport const getFavouriteAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareFavourites,\n);\n\nexport const getLastVisitedAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareLastVisited,\n);\n\nexport const getPopularAccounts = createSelector([getLastVisitedAccounts], preparePopulars);\n\nexport const isActiveAcountInFavourites = createSelector(\n [getActiveAccount, getFavouriteAccounts],\n prepareIsInFavourites,\n);\n\nexport const getFavouriteChyt = createSelector([makeGetSetting, getChytNS], prepareFavourites);\n\nexport const getLastVisitedChyt = createSelector([makeGetSetting, getChytNS], prepareLastVisited);\n\nexport const getPopularChyt = createSelector([getLastVisitedChyt], preparePopulars);\n\nexport const isActiveCliqueInFavourites = createSelector(\n [getChytCurrentAlias, getFavouriteChyt],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Navigation *****************\n\nexport const getFavouritePaths = createSelector([makeGetSetting, getClusterNS], prepareFavourites);\n\nexport const getLastVisitedPaths = createSelector(\n [makeGetSetting, getClusterNS],\n prepareLastVisited,\n);\n\nexport const getPopularPaths = createSelector([getLastVisitedPaths], preparePopulars);\n\nexport const isCurrentPathInFavourites = createSelector(\n [getPath, getFavouritePaths],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Scheduling *****************\n\nexport const getFavouritePools = createSelector(\n [makeGetSetting, getSchedulingNS],\n prepareFavourites,\n);\n\nexport const isActivePoolInFavourites = createSelector(\n [getPool, getTree, getFavouritePools],\n prepareIsPoolInFavourites,\n);\n\n//************* Selectors for Bundles *****************\n\nexport const getFavouriteBundles = createSelector(\n [makeGetSetting, getBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveBundleInFavourites = createSelector(\n [getTabletsActiveBundle, getFavouriteBundles],\n prepareIsInFavourites,\n);\n\n// ************ Selectors for Chaos bundles ***********\n\nexport const getFavouriteChaosBundles = createSelector(\n [makeGetSetting, getChaosBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveChaosBundleInFavourites = createSelector(\n [getChaosActiveBundle, getFavouriteChaosBundles],\n prepareIsInFavourites,\n);\n\n//********************** Helpers *************************\n\nfunction prepareFavourites(getSetting, parentNS) {\n const items = getSetting(SettingName.LOCAL.FAVOURITES, parentNS);\n return sortBy_(items, 'path');\n}\n\nfunction prepareLastVisited(settingGetter, parentNS) {\n return settingGetter(SettingName.LOCAL.LAST_VISITED, parentNS) || [];\n}\n\nfunction preparePopulars(lastVisited) {\n return sortBy_(lastVisited, (entry) => -entry.count);\n}\n\nfunction prepareIsInFavourites(value, favourites) {\n return Boolean(find_(favourites, ({path}) => path === value));\n}\n\nfunction prepareIsPoolInFavourites(pool, tree, favourites) {\n return Boolean(find_(favourites, ({path}) => path === `${pool}[${tree}]`));\n}\n"],"names":["block","cn","EditableAsText","props","children","onChange","text","className","withControls","size","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","_React$useState","React","_React$useState2","_slicedToArray","editMode","setEditMode","_React$useState3","_React$useState4","input","setInput","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","value","handleKeyDown","evt","key","controlSize","_jsx","onClick","_jsxs","_Fragment","onBlur","TextInput","autoFocus","onUpdate","onKeyDown","Button","view","extraProps","onMouseDown","Icon","awesome","type","EditButton","_ref","_ref$size","qa","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","_this$props","order","allowUnordered","withUndefined","nextSortOrderValue","_createClass","_this$props2","this","label","hidden","icon","Tooltip","content","format","ReadableField","face","b","Suggest","PropTypes","counter","_Component","isClearClicked","isUnmounting","skipApplyForNextBlur","onTextUpdate","clear","setState","loadSuggestions","showSuggestions","items","_this$props$onOpenCha","popupVisible","selectedIndex","onOpenChange","open","state","defaultText","prevItems","onFocus","bind","_assertThisInitialized","hideSuggestions","clearSuggestions","_this$props$onFocus","_this$props3","focused","_this$props$onBlur","_this$props4","_this$state$text","applySuggestion","keyCode","preventDefault","selectNextSuggestion","selectPrevSuggestion","applyOrClearSuggestion","_this$input$current","current","blur","_this$props$onOpenCha2","_this$props5","_this$props6","filter","Promise","resolve","then","_this$input$current2","_this$input$current3","itemIndex","item","_this$state","getItemIndex","getItemValue","onItemClick","_this$state2","prevIndex","getSelectedIndex","_this$state3","nextIndex","_this$props7","placeholder","disabled","pin","hasClear","controlRef","renderCounter","index","_this2","itemClassName","selected","undefined","_this$props8","template","renderItem","renderer","templates","get","__default__","renderSimpleItem","title","offsetWidth","maxItems","isNumber_","slice","isObject_","totalAmount","groupPredicate","_partition_","partition_","_partition_2","positiveGroup","negativeGroup","positiveGroupMaxItems","Math","round","max","_this3","listClassName","showNoItemsMsg","style","minWidth","getInputWidth","ReactList","itemRenderer","_this$props9","popupClassName","popupPlacement","restrictItems","Popup","placement","anchorRef","onClose","renderSuggestions","renderInput","renderPopup","prevState","Component","defaultProps","disable","zIndexGroupLevel","Secondary","Bold","_ref2","SecondaryBold","_ref3","Warning","_ref4","WarningLight","_ref5","NoWrap","_ref6","Escaped","_ref7","textNode","unipika","prettyprint","_objectSpread","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","usePoolTreesLoaded","dispatch","useDispatch","loadPoolTreesIfNotLoaded","PoolTreesLoader","useDefaultPoolTree","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","SidePanelPortal","useSidePanel","name","renderContent","widgetOpened","setWidgetOpened","openWidget","splitScreen","mergeScreen","closeWidget","widgetContent","visible","cancelHelper","CancelHelper","chytLoadList","getState","cluster","getCluster","isAdmin","isDeveloper","columns","getChytListVisibleColumns","CHYT_LIST","REQUEST","extraColumns","indexOf","attributesSet","Set","_toConsumableArray","chytApiAction","attributes","cancelToken","removeAllAndGenerateNextToken","data","_data$result","result","map","$value","_ref$$attributes","$attributes","alias","SUCCESS","error","isCancelled","FAILURE","chytListAction","action","params","skipLoadList","d","ChytPageListToolbar","filters","CHYT_LIST_FILTERS","Toolbar","itemsToWrap","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","creator","getChytListFilterHealth","choices","getChytListAvailableHealths","health","getChytListFilterState","states","getChytListAvailableStates","setVisible","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","checked","onConfirm","newColumns","setSettingByKey","chytSetVisibleColumns","onCancel","OperationId","id","color","allowCopy","operationId","Text","variant","Link","theme","url","Page","OPERATIONS","routed","ClipboardButton","visibleOnRowHover","inlineMargins","NO_VALUE","THEME_MAP","good","failed","active","pending","untracked","CliqueState","Label","hideTitle","capitalize","ChytConfirmation","pool","onAction","ChytSimpleConfirmation","ChytStartConfirmation","useThunkDispatch","setError","YTDFDialog","pristineSubmittable","headerProps","footerProps","textApply","capitalize_","onAdd","fields","extras","makeErrorFields","initialValues","form","values","isApplyDisabled","_state$values","Boolean","caption","tooltip","visibilityCondition","when","isActive","v","useCliqueOnSqlAction","UIFactory","onChytAliasSqlClick","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","ChytCliqueActions","showAllButtons","allButtonsClassName","onSqlClick","visibleConfirmation","setVisibleConirmation","start","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","sortState","getChytListTableSortStateByName","ColumnHeader","onSort","col","nextOrder","options","prevSortState","getChytListTableSortState","updateSortStateArray","chytToggleSortState","DateTimeCell","_ref17","time","DateTime","lastSpace","lastIndexOf","substring","ChytPageListTable","getChytListTableItems","_useQueryWidgetSidePa","useQueryWidgetSidePanel","checkedColumns","columnsByName","header","render","row","OperationPool","tree","width","instance_count","Number","align","total_cpu","total_memory","Bytes","health_reason","creation_time","speclet_modification_time","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","SubjectCard","_ref13","res","_ref14","yt_operation_id","_ref15","useChytListColumns","DataTableYT","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR","useThemeYT","ChytPageList","update","useUpdater","WithStickyToolbar","hideToolbarShadow","toolbar","chytCliqueLoad","CHYT_CLIQUE","currentClique","skipErrorToast","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","showTooltipError","CHYT_OPTIONS","wrapApiPromiseByToaster","toasterName","skipSuccessToast","getChytSpecletLoaded","speclet","getChytSpecletData","getChytSpecletDataAlias","getChytSpecletError","useSpecletData","skipLoad","specletData","unipikaSettings","getEditJsonYsonSettings","ChytPageCliqueSpeclet","_useSpecletData","YTErrorBlock","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","extraTools","YsonDownloadButton","compact","_useSpecletData2","ChytSpecletEditDialog","allowEdit","_React$useMemo","groups","typeByName","fieldTypeByName","group","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","_item$current_value2","_item$current_value3","common","description","converter","default_value","String","_item$choices","initialValue","current_value","valueFormat","defaultFormatted","hidePrettyValue","min","min_value","max_value","integerOnly","showHint","fullWidth","minHeight","nullPreview","allowEmpty","descriptionToDialogField","_objectWithoutProperties","_excluded","makeDialogField","makeTabbedDialogFieldsFromDescription","_step","_iterator","_createForOfIteratorHelper","_loop","poolTrees","some","field","pool_trees","s","n","done","err","e","f","linkPoolWithPoolTree","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","_useState","useState","_useState2","logsExist","setLogsExist","chytMonitoring","logsPath","checkLogsExist","_asyncToGenerator","_regeneratorRuntime","_callee","_yield$ytApiV4$exists","_context","prev","next","ytApiV4","exists","sent","t0","tabProps","_makeTabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","MONITORING","show","external","formatByParams","QUERY_LOGS","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_useSelector","history","useHistory","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","YTAlertBlock","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","ChytPageTopRow","RowWithName","page","ChytFavourites","ChytBreadcrumbs","CreateChytButton","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","handleFavouriteItemClick","handleFavouriteToggle","chytToggleFavourite","Favourites","onToggle","toggleDisabled","BreadcrumbsItem","href","ChytAliasSuggest","Breadcrumbs","navigate","showRoot","setItems","ypath","getValue","_x","_React$useState5","_React$useState6","_form$getState$values","rest","runAfterCreation","speclet_options","successTitle","reject","required","minValue","maxValue","QueryWidgetLazy","withLazyLoading","centered","getChaosIsLoaded","chaos_cell_bundles","getChaosIsLoading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","createSelector","find_","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getChaosBundlesFiltered","nameFilter","accountFilter","tagNodeFilter","predicates","lowerNameFilter","toLowerCase","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","filter_","concatByAnd","getChaosBundlesSorted","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","uniq_","map_","sort","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","join","getChaosBreadcrumbItems","tabletChaosBundleRootLink","tabletActiveChaosBundleLink","getChytListData","list","_data$items","_data$items2","compact_","_data$items3","listFilters","CHYT_LIST_SELECTABLE_COLUMNS","_getSettingsData$glob","getSettingsData","userColumns","has","reduce","multisortIndex","getChytFilterPredicate","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","makeGetSetting","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getChytNS","getLastVisitedChyt","getFavouritePaths","getClusterNS","getLastVisitedPaths","getPopularPaths","isCurrentPathInFavourites","getPath","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","getTree","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","getSetting","parentNS","SettingName","LOCAL","FAVOURITES","sortBy_","settingGetter","LAST_VISITED","lastVisited","entry","count"],"sourceRoot":""}