@ytsaurus/ui 1.72.0 → 1.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/public/build/assets-manifest.json +26 -26
  2. package/dist/public/build/css/yt-monaco-editor.43c1d967.chunk.css +2 -0
  3. package/dist/public/build/css/yt-monaco-editor.43c1d967.chunk.css.map +1 -0
  4. package/dist/public/build/js/3302.dff164d9.chunk.js +3 -0
  5. package/dist/public/build/js/3302.dff164d9.chunk.js.map +1 -0
  6. package/dist/public/build/js/{chyt.eff6e270.chunk.js → chyt.8c82dc61.chunk.js} +2 -2
  7. package/dist/public/build/js/{chyt.eff6e270.chunk.js.map → chyt.8c82dc61.chunk.js.map} +1 -1
  8. package/dist/public/build/js/{cluster-page-wrapper.434bb4ef.chunk.js → cluster-page-wrapper.7c7301b9.chunk.js} +2 -2
  9. package/dist/public/build/js/{cluster-page-wrapper.434bb4ef.chunk.js.map → cluster-page-wrapper.7c7301b9.chunk.js.map} +1 -1
  10. package/dist/public/build/js/{components.233a938d.chunk.js → components.a4b032ee.chunk.js} +2 -2
  11. package/dist/public/build/js/components.a4b032ee.chunk.js.map +1 -0
  12. package/dist/public/build/js/main.afa006d1.js +3 -0
  13. package/dist/public/build/js/main.afa006d1.js.map +1 -0
  14. package/dist/public/build/js/{navigation.f5cf971c.chunk.js → navigation.0adc0583.chunk.js} +2 -2
  15. package/dist/public/build/js/{navigation.f5cf971c.chunk.js.map → navigation.0adc0583.chunk.js.map} +1 -1
  16. package/dist/public/build/js/{query-tracker.64472502.chunk.js → query-tracker.5f5e3683.chunk.js} +2 -2
  17. package/dist/public/build/js/{query-tracker.64472502.chunk.js.map → query-tracker.5f5e3683.chunk.js.map} +1 -1
  18. package/dist/public/build/js/{query-widget.2271e15c.chunk.js → query-widget.4bd0f75f.chunk.js} +2 -2
  19. package/dist/public/build/js/{query-widget.2271e15c.chunk.js.map → query-widget.4bd0f75f.chunk.js.map} +1 -1
  20. package/dist/public/build/js/{runtime.c88113bf.js → runtime.30501cea.js} +2 -2
  21. package/dist/public/build/js/{runtime.c88113bf.js.map → runtime.30501cea.js.map} +1 -1
  22. package/dist/public/build/js/yt-monaco-editor.00e55e53.chunk.js +2 -0
  23. package/dist/public/build/js/yt-monaco-editor.00e55e53.chunk.js.map +1 -0
  24. package/dist/public/build/manifest.json +22 -22
  25. package/package.json +2 -2
  26. package/dist/public/build/css/yt-monaco-editor.e7c3868b.chunk.css +0 -2
  27. package/dist/public/build/css/yt-monaco-editor.e7c3868b.chunk.css.map +0 -1
  28. package/dist/public/build/js/3337.31ee332d.chunk.js +0 -3
  29. package/dist/public/build/js/3337.31ee332d.chunk.js.map +0 -1
  30. package/dist/public/build/js/components.233a938d.chunk.js.map +0 -1
  31. package/dist/public/build/js/main.c46b0cfa.js +0 -3
  32. package/dist/public/build/js/main.c46b0cfa.js.map +0 -1
  33. package/dist/public/build/js/yt-monaco-editor.59382231.chunk.js +0 -2
  34. package/dist/public/build/js/yt-monaco-editor.59382231.chunk.js.map +0 -1
  35. /package/dist/public/build/js/{3337.31ee332d.chunk.js.LICENSE.txt → 3302.dff164d9.chunk.js.LICENSE.txt} +0 -0
  36. /package/dist/public/build/js/{main.c46b0cfa.js.LICENSE.txt → main.afa006d1.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"js/chyt.eff6e270.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/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","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts"],"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 className={block('edit-btn')} onClick={onClick} size={size}>\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>) {\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 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 {isQueryTrackerAllowed} from '../../../store/selectors/global/experimental-pages';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n 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 <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster} 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 Error 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';\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 && <Error 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 && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n 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 && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: <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 from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {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 ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <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';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../../../hocs/withSplit';\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport type {QueryWidgetProps} from './index';\nimport {mergeScreen, splitScreen} from '../../../store/actions/global';\nimport {SPLIT_TYPE} from '../../../constants/components/nodes/nodes';\nimport Loader from '../../../components/Loader/Loader';\n\nexport const QueryWidgetLazy = React.lazy(\n () => import(/* webpackChunkName: \"query-widget\" */ './index'),\n);\n\nexport const QueryWidgetPortal = withSplit(\n withLazyLoading<QueryWidgetProps>(QueryWidgetLazy, <Loader visible centered size=\"l\" />),\n);\n\nexport function useQueryWidgetSidePanel() {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(SPLIT_TYPE));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch]);\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 ? <QueryWidgetPortal onClose={onClose} /> : null,\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 '../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","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\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","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","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","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","creator","getChytListFilterHealth","choices","getChytListAvailableHealths","health","getChytListFilterState","states","getChytListAvailableStates","visible","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","openWidget","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","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","widgetContent","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","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","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","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","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_useSelector","history","useHistory","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","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","QueryWidgetPortal","withLazyLoading","centered","widgetOpened","setWidgetOpened","splitScreen","SPLIT_TYPE","mergeScreen","closeWidget","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","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","escapeWhitespace","binaryAsHex","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getTableYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getNavigationMountConfigYsonSettings","getNodeUnrecognizedOptionsYsonSettings","getPreviewCellYsonSettings","getFlowSpecYsonSettings"],"sourceRoot":""}
1
+ {"version":3,"file":"js/chyt.8c82dc61.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/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","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts"],"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 className={block('edit-btn')} onClick={onClick} size={size}>\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>) {\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 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 {isQueryTrackerAllowed} from '../../../store/selectors/global/experimental-pages';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n 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 <WithStickyToolbar toolbar={<ChytPageListToolbar />} content={<ChytPageListTable />} />;\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport {CHYT_CLIQUE} from '../../../constants/chyt-page';\nimport {RootState} from '../../../store/reducers';\nimport {ChytCliqueAction} from '../../../store/reducers/chyt/clique';\nimport {getCluster} 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 Error 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';\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 && <Error 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 && <Error className={block('raw-speclet-error')} error={error} bottomMargin />}\n {loaded && (\n <Yson\n className={block('raw-speclet')}\n value={data}\n settings={unipikaSettings}\n folding\n />\n )}\n </div>\n );\n}\n\nexport function ChytSpecletEditButton({\n compact,\n className,\n 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 && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: <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 from 'react';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\nimport {useSelector} from 'react-redux';\n\nimport {ChytCliquePageTab} from '../../../constants/chyt-page';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {getCluster} from '../../../store/selectors/global';\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytPageCliqueAcl} from './ChytPageCliqueAcl';\nimport {ChytPageCliqueSpeclet} from './ChytPageCliqueSpeclet';\nimport {ChytPageCliqueMonitoring} from './ChytPageCliqueMonitoring';\n\nexport function ChytPageCliqueTabs({className}: {className?: string}) {\n const match = useRouteMatch();\n\n const ytCluster = useSelector(getCluster);\n const chytAlias = useSelector(getChytCurrentAlias);\n\n const chytMonitoring = UIFactory.getMonitoringComponentForChyt();\n\n const tabProps = React.useMemo(() => {\n const {component, urlTemplate, title} = chytMonitoring ?? {};\n const useTemplate = urlTemplate && !component;\n return makeTabProps(\n match.url,\n ChytCliquePageTab,\n {\n [ChytCliquePageTab.MONITORING]: useTemplate\n ? {\n show: true,\n external: true,\n url: formatByParams(urlTemplate, {ytCluster, chytAlias}),\n title,\n }\n : {show: Boolean(component)},\n },\n undefined,\n );\n }, [ytCluster, chytAlias, match.url, chytMonitoring]);\n\n const allowMonitoring = Boolean(chytMonitoring?.component);\n return (\n <React.Fragment>\n <Tabs className={className} {...tabProps} routed />\n <Switch>\n {allowMonitoring && (\n <Route\n path={`${match.url}/${ChytCliquePageTab.MONITORING}`}\n component={ChytPageCliqueMonitoring}\n />\n )}\n <Route\n path={`${match.url}/${ChytCliquePageTab.SPECLET}`}\n component={ChytPageCliqueSpeclet}\n />\n <Route\n path={`${match.url}/${ChytCliquePageTab.ACL}`}\n component={ChytPageCliqueAcl}\n />\n <Redirect\n to={`${match.url}/${\n allowMonitoring ? ChytCliquePageTab.MONITORING : ChytCliquePageTab.SPECLET\n }`}\n />\n </Switch>\n </React.Fragment>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {RouteComponentProps, useHistory} from 'react-router';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Loader, Text} from '@gravity-ui/uikit';\n\nimport format from '../../../common/hammer/format';\n\nimport {useUpdater} from '../../../hooks/use-updater';\nimport Alert from '../../../components/Alert/Alert';\nimport Error from '../../../components/Error/Error';\nimport Label from '../../../components/Label/Label';\nimport {OperationPool} from '../../../components/OperationPool/OperationPool';\nimport MetaTable, {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {OperationId} from '../../../components/OperationId/OperationId';\nimport {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 ? <Error className={block('error')} error={error} bottomMargin /> : null}\n {startError ? (\n <Error\n header=\"Failed to start\"\n className={block('error')}\n error={{message: startError}}\n bottomMargin\n />\n ) : null}\n {health_reason ? (\n <Alert header=\"Health reason\" type=\"alert\" message={health_reason} bottomMargin />\n ) : null}\n </React.Fragment>\n );\n}\n\nfunction ChytCliqueMetaTable() {\n const cluster = useSelector(getCluster);\n const data = useSelector(getChytCliqueData);\n\n const items: Array<Array<MetaTableItem>> = React.useMemo(() => {\n const {\n pool,\n state,\n stage,\n ctl_attributes,\n yt_operation,\n health,\n incarnation_index,\n creator,\n speclet_modification_time,\n strawberry_state_modification_time,\n } = data ?? {};\n\n const {start_time, finish_time, id} = yt_operation ?? {};\n\n const start_time_number = start_time ? moment(start_time).valueOf() : undefined;\n const finish_time_number = finish_time\n ? moment(finish_time).valueOf()\n : start_time_number\n ? Date.now()\n : undefined;\n\n const duration =\n !start_time_number || !finish_time_number\n ? undefined\n : finish_time_number - start_time_number;\n\n return [\n [\n {key: 'Health', value: <CliqueState state={health} />},\n {key: 'State', value: <CliqueState state={state} />},\n {\n key: 'Pool',\n value: pool ? (\n <OperationPool cluster={cluster} pool={{pool, tree: 'physical'}} />\n ) : (\n format.NO_VALUE\n ),\n },\n {key: 'Instances', value: format.Number(ctl_attributes?.instance_count)},\n {key: 'Cores', value: format.Number(ctl_attributes?.total_cpu)},\n {key: 'Memory', value: format.Bytes(ctl_attributes?.total_memory)},\n ],\n [\n {key: 'Stage', value: stage ? <Label capitalize text={stage} /> : format.NO_VALUE},\n {key: 'Incarnation index', value: format.Number(incarnation_index)},\n {\n key: 'Creator',\n value: creator ? <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';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../../../hocs/withSplit';\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport type {QueryWidgetProps} from './index';\nimport {mergeScreen, splitScreen} from '../../../store/actions/global';\nimport {SPLIT_TYPE} from '../../../constants/components/nodes/nodes';\nimport Loader from '../../../components/Loader/Loader';\n\nexport const QueryWidgetLazy = React.lazy(\n () => import(/* webpackChunkName: \"query-widget\" */ './index'),\n);\n\nexport const QueryWidgetPortal = withSplit(\n withLazyLoading<QueryWidgetProps>(QueryWidgetLazy, <Loader visible centered size=\"l\" />),\n);\n\nexport function useQueryWidgetSidePanel() {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(SPLIT_TYPE));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch]);\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 ? <QueryWidgetPortal onClose={onClose} /> : null,\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 '../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","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\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","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","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","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","creator","getChytListFilterHealth","choices","getChytListAvailableHealths","health","getChytListFilterState","states","getChytListAvailableStates","visible","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","openWidget","allowQueryTracker","isQueryTrackerAllowed","setTimeout","updateQueryDraft","engine","QueryEngine","CHYT","query","settings","clique","UIFactory","onChytAliasSqlClick","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","widgetContent","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","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","Error","bottomMargin","ChytSpecletEditButton","ChytSpeclet","Yson","folding","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","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_useSelector","history","useHistory","PARTITION","initialLoading","Loader","ChytCliqueErrors","ChytCliqueMetaTable","_useSelector2","startError","message","Alert","ctl_attributes","yt_operation","incarnation_index","start_time","finish_time","start_time_number","moment","valueOf","finish_time_number","Date","now","duration","TimeDuration","MetaTable","ChytPage","ErrorBoundary","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","QueryWidgetPortal","withLazyLoading","centered","widgetOpened","setWidgetOpened","splitScreen","SPLIT_TYPE","mergeScreen","closeWidget","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","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","escapeWhitespace","binaryAsHex","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getTableYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getNavigationMountConfigYsonSettings","getNodeUnrecognizedOptionsYsonSettings","getPreviewCellYsonSettings","getFlowSpecYsonSettings"],"sourceRoot":""}