@ytsaurus/ui 1.63.1 → 1.64.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.
- package/README.md +11 -10
- package/dist/public/build/assets-manifest.json +35 -35
- package/dist/public/build/css/main.b2af1626.css +10 -0
- package/dist/public/build/css/main.b2af1626.css.map +1 -0
- package/dist/public/build/js/{4364.aa1ab5fb.chunk.js → 2081.56ca6548.chunk.js} +2 -2
- package/dist/public/build/js/2081.56ca6548.chunk.js.map +1 -0
- package/dist/public/build/js/4016.03291f63.chunk.js +3 -0
- package/dist/public/build/js/4016.03291f63.chunk.js.map +1 -0
- package/dist/public/build/js/6729.91ef11dc.chunk.js +2 -0
- package/dist/public/build/js/6729.91ef11dc.chunk.js.map +1 -0
- package/dist/public/build/js/{8460.2b27e2b7.chunk.js → 8460.a458b9c6.chunk.js} +2 -2
- package/dist/public/build/js/8460.a458b9c6.chunk.js.map +1 -0
- package/dist/public/build/js/{chyt.125f3e77.chunk.js → chyt.fa2fdae2.chunk.js} +2 -2
- package/dist/public/build/js/chyt.fa2fdae2.chunk.js.map +1 -0
- package/dist/public/build/js/{cluster-page-wrapper.c9e6c27c.chunk.js → cluster-page-wrapper.eddde18f.chunk.js} +2 -2
- package/dist/public/build/js/{cluster-page-wrapper.c9e6c27c.chunk.js.map → cluster-page-wrapper.eddde18f.chunk.js.map} +1 -1
- package/dist/public/build/js/main.693c4cb1.js +3 -0
- package/dist/public/build/js/main.693c4cb1.js.map +1 -0
- package/dist/public/build/js/{manage-tokens.e9106aad.chunk.js → manage-tokens.1c4ee171.chunk.js} +2 -2
- package/dist/public/build/js/manage-tokens.1c4ee171.chunk.js.map +1 -0
- package/dist/public/build/js/{navigation-flow.91ee109f.chunk.js → navigation-flow.f7bcba21.chunk.js} +2 -2
- package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js.map +1 -0
- package/dist/public/build/js/navigation.c8c7b9cc.chunk.js +2 -0
- package/dist/public/build/js/navigation.c8c7b9cc.chunk.js.map +1 -0
- package/dist/public/build/js/{query-results.4c207fef.chunk.js → query-results.4e6d702e.chunk.js} +2 -2
- package/dist/public/build/js/query-results.4e6d702e.chunk.js.map +1 -0
- package/dist/public/build/js/{query-tracker.badbc586.chunk.js → query-tracker.dd388474.chunk.js} +2 -2
- package/dist/public/build/js/{query-tracker.badbc586.chunk.js.map → query-tracker.dd388474.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.f98c3e55.js → runtime.7752c183.js} +2 -2
- package/dist/public/build/js/{runtime.f98c3e55.js.map → runtime.7752c183.js.map} +1 -1
- package/dist/public/build/js/system.57ed0f9d.chunk.js +2 -0
- package/dist/public/build/js/system.57ed0f9d.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +30 -30
- package/dist/server/configs/e2e/local.js +1 -0
- package/dist/shared/constants/settings-types.d.ts +6 -3
- package/dist/shared/ui-settings.d.ts +5 -0
- package/package.json +2 -2
- package/dist/public/build/css/main.070fd473.css +0 -10
- package/dist/public/build/css/main.070fd473.css.map +0 -1
- package/dist/public/build/js/4016.80b4ae08.chunk.js +0 -3
- package/dist/public/build/js/4016.80b4ae08.chunk.js.map +0 -1
- package/dist/public/build/js/4364.aa1ab5fb.chunk.js.map +0 -1
- package/dist/public/build/js/6729.54f0fda8.chunk.js +0 -2
- package/dist/public/build/js/6729.54f0fda8.chunk.js.map +0 -1
- package/dist/public/build/js/8460.2b27e2b7.chunk.js.map +0 -1
- package/dist/public/build/js/chyt.125f3e77.chunk.js.map +0 -1
- package/dist/public/build/js/main.61fc9935.js +0 -3
- package/dist/public/build/js/main.61fc9935.js.map +0 -1
- package/dist/public/build/js/manage-tokens.e9106aad.chunk.js.map +0 -1
- package/dist/public/build/js/navigation-flow.91ee109f.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.22bd542f.chunk.js +0 -2
- package/dist/public/build/js/navigation.22bd542f.chunk.js.map +0 -1
- package/dist/public/build/js/query-results.4c207fef.chunk.js.map +0 -1
- package/dist/public/build/js/system.25e9136a.chunk.js +0 -2
- package/dist/public/build/js/system.25e9136a.chunk.js.map +0 -1
- /package/dist/public/build/js/{4016.80b4ae08.chunk.js.LICENSE.txt → 4016.03291f63.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.61fc9935.js.LICENSE.txt → main.693c4cb1.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"js/chyt.fa2fdae2.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/Suggest/Suggest.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"],"sourcesContent":["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 {useDispatch} from 'react-redux';\n\nimport {loadPoolTreesIfNotLoaded} from '../store/actions/global';\nimport {loadDefaultPoolTree} from '../utils/poolTrees';\n\nfunction 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 usePoolTreeOrLoadDefault(poolTree?: string) {\n const [defaultPoolTree, setDefaultPoolTree] = React.useState<string | undefined>(poolTree);\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 = usePoolTreeOrLoadDefault();\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, isDeveloper} from '../../../store/selectors/global';\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, isQueryTrackerAllowed} from '../../../store/selectors/global';\nimport {updateQueryDraft} from '../../../pages/query-tracker/module/query/actions';\nimport {QueryEngine} from '../../../pages/query-tracker/module/engines';\nimport UIFactory from '../../../UIFactory';\n\nimport {ChytConfirmation} from '../ChytConfirmation/ChytConfirmation';\n\nimport './ChytCliqueActions.scss';\n\nconst block = cn('chyt-clique-actions');\n\nexport function useCliqueOnSqlAction(openWidget: () => void) {\n const cluster = useSelector(getCluster);\n const allowQueryTracker = useSelector(isQueryTrackerAllowed);\n const dispatch = useDispatch();\n\n return React.useCallback(\n (alias: string) => {\n if (allowQueryTracker) {\n setTimeout(() => {\n dispatch(\n updateQueryDraft({\n engine: QueryEngine.CHYT,\n query: `SELECT 1;`,\n settings: {cluster, clique: alias},\n }),\n );\n }, 500);\n openWidget();\n } else {\n UIFactory.onChytAliasSqlClick({alias, cluster});\n }\n },\n [cluster, openWidget, allowQueryTracker, dispatch],\n );\n}\n\nexport function ChytCliqueActions({\n alias,\n pool,\n showAllButtons,\n allButtonsClassName,\n onAction,\n onSqlClick,\n 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 \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, isDeveloper} from '../../../store/selectors/global';\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 {DialogField} from './Dialog';\n\nimport format from '../../common/hammer/format';\nimport {UnipikaSettings} from '../Yson/StructuredYson/StructuredYsonTypes';\n\nexport type OptionsGroup = {\n title: string;\n options: Array<OptionDescription>;\n hidden: boolean;\n};\n\nexport type OptionDescription =\n | (Option<'string', string> & {choices?: Array<string>})\n | Option<'bool', boolean>\n | (Option<'uint64' | 'int64' | 'byte_count', number> & {\n max_value?: number;\n min_value?: number;\n })\n | Option<'yson', JsonAsString>\n | Option<'path' | 'pool', string>;\n\nexport type JsonAsString = string;\n\nexport type Option<TypeName extends string, T> = {\n name: string;\n type: TypeName;\n current_value?: T | null;\n default_value?: T;\n description?: string;\n};\n\nexport function descriptionToDialogField<T = unknown>(\n item: OptionDescription,\n {unipikaSettings, allowEdit}: MakeDialogFieldsOptions,\n): DialogField<T> & {initialValue?: unknown; converter: Converter} {\n const common = {\n name: item.name,\n caption: format.ReadableField(item.name),\n tooltip: item.description,\n converter: makeConverter<any>(),\n };\n const {default_value} = item;\n const extras = {\n disabled: !allowEdit,\n placeholder:\n default_value !== null && default_value !== undefined\n ? String(item.default_value)\n : undefined,\n };\n\n switch (item.type) {\n case 'string': {\n if (!item.choices?.length) {\n return {...common, type: 'text', extras};\n } else {\n return {\n ...common,\n type: 'select',\n extras: {\n ...extras,\n width: 'max',\n options: item.choices.map((value) => {\n return {value, content: value};\n }),\n hasClear: true,\n },\n converter: CONVERTER.string_with_choices,\n };\n }\n }\n case 'bool':\n return {\n ...common,\n type: 'tumbler',\n extras,\n initialValue: item.current_value ?? item.default_value,\n };\n case 'int64':\n case 'uint64':\n case 'byte_count': {\n const valueFormat = item.type === 'byte_count' ? 'Bytes' : undefined;\n const defaultFormatted =\n valueFormat === 'Bytes'\n ? format.Bytes(item.default_value)\n : format.Number(item.default_value);\n return {\n ...common,\n type: 'number',\n extras: {\n ...extras,\n hidePrettyValue: true,\n placeholder: item.default_value !== undefined ? defaultFormatted : undefined,\n min: item.min_value,\n max: item.max_value,\n format: valueFormat,\n integerOnly: true,\n showHint: true,\n },\n converter: CONVERTER.number,\n };\n }\n case 'yson':\n return {\n ...common,\n type: 'json',\n fullWidth: true,\n extras: {\n ...extras,\n unipikaSettings,\n minHeight: 200,\n nullPreview: item.default_value,\n },\n converter: CONVERTER.json,\n };\n case 'path':\n return {...common, type: 'path', extras};\n case 'pool':\n return {...common, type: 'pool', extras: {...extras, allowEmpty: true}};\n default:\n return {...common, type: 'plain'};\n }\n}\n\nfunction makeConverter<T>() {\n return {\n toFieldValue(value: any) {\n return value as T;\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value;\n },\n };\n}\n\nconst CONVERTER: Record<string, ReturnType<typeof makeConverter>> = {\n number: {\n toFieldValue(value: unknown) {\n return {value: value === null ? undefined : (value as number | undefined)};\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value?.value;\n },\n },\n json: {\n toFieldValue(value: unknown) {\n return {value: value !== undefined ? JSON.stringify(value, null, 2) : undefined};\n },\n fromFieldValue(value: any, oldV?: any) {\n try {\n return JSON.parse(value.value);\n } catch {\n return oldV;\n }\n },\n },\n plain: {\n toFieldValue(value: unknown) {\n return JSON.stringify(value);\n },\n fromFieldValue(value: any, _oldV?: any) {\n return value !== undefined ? JSON.parse(value) : undefined;\n },\n },\n string_with_choices: {\n toFieldValue(value: string) {\n return value ? [value] : [];\n },\n fromFieldValue(value: Array<string>, _oldV?: any) {\n return value?.[0];\n },\n },\n};\n\nfunction converterByType(item: OptionDescription) {\n return CONVERTER[item.type] ?? makeConverter<any>();\n}\n\ntype Converter = ReturnType<typeof converterByType>;\n\nfunction makeDialogField<FormValues = any>(\n item: OptionDescription,\n dstInitialValues: any,\n dstConvertersByName: Record<string, {type: DialogField['type']; converter: Converter}>,\n options: MakeDialogFieldsOptions,\n) {\n const {initialValue, converter, ...res} = descriptionToDialogField<FormValues>(item, options);\n const {type} = res;\n\n dstInitialValues[item.name] = initialValue ?? converter.toFieldValue(item.current_value);\n dstConvertersByName[item.name] = {type: type!, converter};\n\n return res;\n}\n\ntype MakeDialogFieldsOptions = {\n allowEdit: boolean;\n unipikaSettings: UnipikaSettings;\n};\n\nexport function makeDialogFieldsFromDescription<\n FormValues extends Record<string, unknown> = Record<string, unknown>,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Record<string, any> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group) => {\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, initialValues, typeByName, options);\n });\n\n return {\n section: group.title,\n fields: sectionFields,\n collapsible: true,\n initialCollapsed: group.hidden,\n };\n }),\n };\n}\n\nexport function makeTabbedDialogFieldsFromDescription<\n FormValues extends Record<string, Record<string, unknown>> = Record<\n string,\n Record<string, unknown>\n >,\n>(data: Array<OptionsGroup>, options: MakeDialogFieldsOptions) {\n const initialValues: Partial<FormValues> = {};\n const typeByName: Record<\n string,\n {type: DialogField['type']; converter: ReturnType<typeof makeConverter>}\n > = {};\n return {\n fieldTypeByName: typeByName,\n initialValues: initialValues,\n fields: data?.map((group, index) => {\n const group_name = `group_${index}`;\n const groupInitialValues = ((initialValues as any)[group_name] = {});\n const sectionFields: Array<DialogField<FormValues>> = group.options.map((item) => {\n return makeDialogField(item, groupInitialValues, typeByName, options);\n });\n\n return {\n name: group_name,\n title: group.title,\n type: 'tab-vertical' as const,\n fields: sectionFields,\n };\n }),\n };\n}\n","import {RootState} from '../../reducers';\n\nexport const getChytOptionsData = (state: RootState) => state.chyt.options.data;\nexport const getChytOptionsDataAlias = (state: RootState) => state.chyt.options.dataAlias;\nexport const getChytOptionsError = (state: RootState) => state.chyt.options.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {ChytCliqueSpecletAction} from '../../reducers/chyt/speclet';\nimport {RootState} from '../../reducers';\nimport {getCluster, isDeveloper} from '../../selectors/global';\nimport {chytApiAction} from '../../../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, isDeveloper} from '../../selectors/global';\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 {makeTabbedDialogFieldsFromDescription} from '../../../components/Dialog/df-dialog-utils';\n\nimport {useUpdater} from '../../../hooks/use-updater';\n\nimport {getChytCurrentAlias} from '../../../store/selectors/chyt';\nimport {\n getChytOptionsData,\n getChytOptionsDataAlias,\n getChytOptionsError,\n} from '../../../store/selectors/chyt/options';\nimport {getEditJsonYsonSettings} from '../../../store/selectors/thor/unipika';\nimport {chytLoadCliqueSpeclet} from '../../../store/actions/chyt/speclet';\nimport {chytEditOptions, chytLoadCliqueOptions} from '../../../store/actions/chyt/options';\nimport {ChytCliqueOptionsState} from '../../../store/reducers/chyt/options';\nimport {\n getChytSpecletData,\n getChytSpecletDataAlias,\n getChytSpecletError,\n getChytSpecletLoaded,\n} from '../../../store/selectors/chyt/speclet';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\n\nimport './ChytPageCliqueSpeclet.scss';\n\nconst block = cn('yt-chyt-clique-speclet');\n\nfunction useSpecletData({\n 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 <ChytSpecletEditDialog\n key={dataAlias}\n data={specletData}\n alias={alias}\n unipikaSettings={unipikaSettings}\n allowEdit={dataAlias === alias}\n onClose={() => setVisible(false)}\n />\n )}\n <Button\n 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}: {\n allowEdit: boolean;\n alias: string;\n data: ChytCliqueOptionsState['data'];\n unipikaSettings: UnipikaSettings;\n onClose: () => void;\n}) {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const {fields, initialValues, fieldTypeByName} = React.useMemo(() => {\n return makeTabbedDialogFieldsFromDescription(data ?? [], {\n allowEdit,\n unipikaSettings,\n });\n }, [data, allowEdit, unipikaSettings]);\n\n return (\n <React.Fragment>\n {error && <Error bottomMargin error={error} />}\n <YTDFDialog\n className={block('dialog')}\n size=\"l\"\n visible\n onClose={onClose}\n onAdd={(form) => {\n const {values: formValues} = form.getState();\n const values = reduce_(\n formValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n\n const {restart_on_speclet_change} = values as any;\n const initials = reduce_(\n initialValues,\n (acc, tabValues) => {\n return {...acc, ...tabValues};\n },\n {},\n );\n const diff = reduce_(\n values as any,\n (acc, value, key) => {\n const oldValue = initials[key as keyof typeof initials];\n const {converter} = fieldTypeByName[key];\n const oldV = converter.fromFieldValue(oldValue);\n const v = converter.fromFieldValue(value, oldV);\n if (v !== oldV) {\n if (v !== null && v !== undefined && v !== '') {\n acc[key] = v;\n } else {\n acc[key] = undefined;\n }\n }\n return acc;\n },\n {restart_on_speclet_change} as Record<string, unknown>,\n );\n\n return dispatch(chytEditOptions(alias, diff))\n .then(() => {\n setError(undefined);\n })\n .catch((e: any) => setError(e));\n }}\n fields={fields}\n initialValues={initialValues}\n headerProps={{\n title: <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 {Breadcrumbs, BreadcrumbsItem, Button, Text} from '@gravity-ui/uikit';\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 Link from '../../components/Link/Link';\nimport Suggest from '../../components/Suggest/Suggest';\nimport {Page} from '../../constants';\nimport {RowWithName} from '../../containers/AppNavigation/TopRowContent/SectionName';\nimport {WaitForDefaultPoolTree} from '../../hooks/global-pool-trees';\nimport {getFavouriteChyt, isActiveCliqueInFavourites} from '../../store/selectors/favourites';\nimport {getChytCurrentAlias} from '../../store/selectors/chyt';\nimport {getCluster, isDeveloper} from '../../store/selectors/global';\nimport {chytApiAction} from '../../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 <ChytBreadcrumsbs />\n <CreateChytButton />\n </RowWithName>\n );\n}\n\nfunction ChytFavourites() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const isActiveInFavourites = useSelector(isActiveCliqueInFavourites);\n const favourites = useSelector(getFavouriteChyt);\n const dispatch = useDispatch();\n const currentClique = useSelector(getChytCurrentAlias);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n history.push(`/${cluster}/${Page.CHYT}/${item.path}`);\n },\n [history, cluster],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(chytToggleFavourite(currentClique));\n }, [dispatch, currentClique]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!currentClique}\n theme={'clear'}\n />\n );\n}\n\nfunction ChytBreadcrumsbs() {\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const alias = useSelector(getChytCurrentAlias);\n const items = React.useMemo(() => {\n const res: Array<BreadcrumbsItem & {url: string}> = [\n {\n text: '<Root>',\n url: `/${cluster}/${Page.CHYT}`,\n action: () => {},\n },\n ];\n if (alias) {\n res.push({text: alias, url: `/${cluster}/${Page.CHYT}/${alias}`, action: () => {}});\n }\n return res;\n }, [alias]);\n\n return (\n <div className={block('breadcrumbs')}>\n <EditableAsText\n className={block('editable')}\n onChange={(text) => {\n if (!text) {\n history.push(`/${cluster}/${Page.CHYT}`);\n } else if (text !== alias) {\n history.push(`/${cluster}/${Page.CHYT}/${text}`);\n }\n }}\n text={alias}\n disableEdit={Boolean(!alias)}\n renderEditor={(props) => <ChytAliasSuggest cluster={cluster} {...props} />}\n >\n <Breadcrumbs\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={(item, isCurrent) => {\n return (\n <Link url={item.url} theme={isCurrent ? 'primary' : 'secondary'} routed>\n {item.text}\n </Link>\n );\n }}\n />\n </EditableAsText>\n {alias && <ClipboardButton text={alias} />}\n </div>\n );\n}\n\nfunction ChytAliasSuggest({\n value,\n onChange,\n className,\n onApply,\n cluster,\n onBlur,\n}: {\n cluster: string;\n value?: string;\n onChange: (value?: string) => void;\n className?: string;\n onBlur: () => void;\n onApply: (value?: string) => void;\n}) {\n const [items, setItems] = React.useState<Array<string>>([]);\n\n const isAdmin = useSelector(isDeveloper);\n\n React.useEffect(() => {\n chytApiAction('list', cluster, {}, {isAdmin}).then((data) => {\n setItems(data.result.map((item) => ypath.getValue(item)));\n });\n }, [isAdmin]);\n\n return (\n <Suggest\n autoFocus\n className={`${block('alias-suggest')} ${className}`}\n text={value}\n filter={(_x, text) => {\n if (!text) {\n return items;\n }\n return items.filter((item) => {\n return -1 !== item.indexOf(text);\n });\n }}\n apply={(item) => {\n if ('string' === typeof item) {\n onChange(item);\n } else {\n onChange(item.value);\n }\n }}\n onItemClick={(item) => {\n onApply(typeof item === 'string' ? item : item.value);\n }}\n onBlur={onBlur}\n />\n );\n}\n\ntype FormValues = {\n alias: string;\n instance_count: number;\n tree: string;\n pool: string;\n runAfterCreation: boolean;\n};\n\nfunction CreateChytButton() {\n const dispatch = useThunkDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n const [visible, setVisible] = React.useState(false);\n\n const [error, setError] = React.useState<YTError | undefined>();\n\n return (\n <div className={block('create-clique')}>\n <Button view=\"action\" onClick={() => setVisible(!visible)}>\n Create clique\n </Button>\n {visible && (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible\n className={block('create-dialog')}\n headerProps={{title: 'Create clique'}}\n onClose={() => setVisible(false)}\n onAdd={(form) => {\n const {\n values: {instance_count, ...rest},\n } = form.getState();\n return dispatch(\n chytCliqueCreate({\n ...rest,\n instance_count: instance_count || 1,\n }),\n )\n .then(() => {\n setError(undefined);\n history.push(\n `/${cluster}/chyt/${rest.alias}/${ChytCliquePageTab.SPECLET}`,\n );\n })\n .catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n }}\n fields={[\n {\n name: 'alias',\n type: 'text',\n caption: 'Alias name',\n required: true,\n },\n {\n name: 'instance_count',\n type: 'range-input-picker',\n caption: 'Instance count',\n extras: {\n minValue: 1,\n maxValue: 100,\n },\n required: true,\n },\n {\n name: 'tree',\n type: 'pool-tree',\n caption: 'Pool tree',\n extras: {\n disabled: true,\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n extras: ({tree}: FormValues) => {\n return {\n poolTree: tree,\n placeholder: 'Pool name...',\n allowEmpty: true,\n };\n },\n },\n {\n name: 'poolNotice',\n type: 'block',\n visibilityCondition: {\n when: 'pool',\n isActive(pool) {\n return !pool;\n },\n },\n extras: {\n children: (\n <Text color=\"info-heavy\" variant=\"body-2\">\n Select a pool to start the clique after creation.\n </Text>\n ),\n },\n },\n {\n name: 'runAfterCreation',\n type: 'tumbler',\n caption: 'Start after creation',\n visibilityCondition: {\n when: 'pool',\n isActive(v) {\n return Boolean(v);\n },\n },\n },\n ...makeErrorFields([error]),\n ]}\n initialValues={{\n instance_count: 1,\n tree: defaultPoolTree,\n runAfterCreation: true,\n }}\n />\n )}\n </WaitForDefaultPoolTree>\n )}\n </div>\n );\n}\n"],"names":["b","block","Suggest","PropTypes","value","text","counter","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","input","React","isClearClicked","isUnmounting","skipApplyForNextBlur","onTextUpdate","_this$props","clear","setState","loadSuggestions","length","showSuggestions","items","_this$props$onOpenCha","_this$props2","popupVisible","selectedIndex","onOpenChange","open","state","defaultText","prevItems","onFocus","bind","_assertThisInitialized","onBlur","onKeyDown","hideSuggestions","clearSuggestions","_createClass","key","this","_this$props$onFocus","_this$props3","focused","_this$props$onBlur","_this$props4","_this$state$text","applySuggestion","evt","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","apply","itemIndex","item","_this$state","getItemIndex","getItemValue","onItemClick","_this$state2","prevIndex","getSelectedIndex","_this$state3","nextIndex","_this$props7","placeholder","autoFocus","disabled","pin","_jsx","TextInput","hasClear","className","onUpdate","controlRef","children","_jsxs","renderCounter","index","_this2","itemClassName","selected","undefined","_this$props8","template","renderItem","renderer","templates","get","__default__","renderSimpleItem","title","onMouseDown","offsetWidth","maxItems","isNumber_","slice","isObject_","totalAmount","groupPredicate","_partition_","partition_","_partition_2","_slicedToArray","positiveGroup","negativeGroup","positiveGroupMaxItems","Math","round","max","concat","_this3","listClassName","showNoItemsMsg","style","minWidth","getInputWidth","ReactList","itemRenderer","type","_this$props9","popupClassName","popupPlacement","restrictItems","Popup","placement","anchorRef","onClose","renderSuggestions","renderInput","renderPopup","prevState","Component","defaultProps","disable","zIndexGroupLevel","PoolTreesLoader","dispatch","useDispatch","loadPoolTreesIfNotLoaded","usePoolTreeOrLoadDefault","poolTree","_React$useState","_React$useState2","defaultPoolTree","setDefaultPoolTree","loadDefaultPoolTree","WaitForDefaultPoolTree","_ref","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","_objectSpread","alias","SUCCESS","error","isCancelled","FAILURE","chytListAction","action","params","skipLoadList","arguments","d","cn","ChytPageListToolbar","filters","CHYT_LIST_FILTERS","Toolbar","itemsToWrap","name","node","NameIdFilter","growable","wrapperClassName","CreatorFilter","StateFilter","HealthFilter","ChytListColumnsButton","useSelector","getChytListFilterAlias","_ref2","getChytListFilterCreator","creators","getChytListAvailableCreators","SelectSingle","label","onChange","creator","_ref3","getChytListFilterHealth","choices","getChytListAvailableHealths","health","_ref4","getChytListFilterState","states","getChytListAvailableStates","visible","setVisible","getChytListColumns","dialog","ColumnSelectorModal","isVisible","i","_CHYT_TABLE_TITLES$i$","CHYT_TABLE_TITLES","column","format","ReadableField","checked","onConfirm","newColumns","setSettingByKey","chytSetVisibleColumns","onCancel","Button","view","onClick","Icon","awesome","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","size","pristineSubmittable","headerProps","_Fragment","footerProps","textApply","capitalize_","onAdd","fields","extras","Bold","makeErrorFields","_React$useState3","_React$useState4","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","icon","stop","remove","menuItems","sqlButton","DropdownMenu","switcher","ChytListHeader","_ref16","_CHYT_TABLE_TITLES$co","withUndefined","sortState","getChytListTableSortStateByName","ColumnHeader","allowUnordered","onSort","col","nextOrder","options","order","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","_ref5","Tooltip","content","health_reason","Secondary","creation_time","_ref6","speclet_modification_time","_ref7","stage","_ref8","strawberry_state_modification_time","_ref9","yt_operation_finish_time","_ref10","yt_operation_start_time","_ref11","_ref12","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","typeByName","fieldTypeByName","group","group_name","groupInitialValues","sectionFields","dstInitialValues","dstConvertersByName","_descriptionToDialogF","_item$current_value","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","formValues","reduce_","acc","tabValues","restart_on_speclet_change","initials","diff","oldValue","options_to_remove","options_to_set","Object","keys","forEach","k","push","chytEditOptions","e","ChytPageCliqueMonitoring","_UIFactory$getMonitor","MonitoginComponnet","getMonitoringComponentForChyt","component","NoContent","ChytPageCliqueTabs","match","useRouteMatch","ytCluster","chytAlias","chytMonitoring","tabProps","urlTemplate","useTemplate","makeTabProps","ChytCliquePageTab","_defineProperty","MONITORING","show","external","formatByParams","allowMonitoring","Tabs","Switch","Route","SPECLET","ACL","Redirect","to","ChytPageClique","_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","ChytBreadcrumsbs","CreateChytButton","isActiveInFavourites","isActiveCliqueInFavourites","favourites","getFavouriteChyt","handleFavouriteItemClick","handleFavouriteToggle","chytToggleFavourite","Favourites","onToggle","toggleDisabled","EditableAsText","disableEdit","renderEditor","ChytAliasSuggest","Breadcrumbs","lastDisplayedItemsCount","firstDisplayedItemsCount","renderItemContent","isCurrent","onApply","setItems","ypath","getValue","_x","_React$useState5","_React$useState6","_form$getState$values","rest","runAfterCreation","speclet_options","successTitle","reject","required","minValue","maxValue"],"sourceRoot":""}
|