/* eslint-disable sonarjs/no-duplicate-string */ import './QBEntityOptions.styles.scss'; import { Button, Col, Tooltip } from 'antd'; import { noop } from 'antd/lib/_util/warning'; import cx from 'classnames'; import { isFunction } from 'lodash-es'; import { ChevronDown, ChevronRight, Copy, Eye, EyeOff, Trash2, } from 'lucide-react'; import { IBuilderQuery, QueryFunctionProps, } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource } from 'types/common/queryBuilder'; import QueryFunctions from '../QueryFunctions/QueryFunctions'; interface QBEntityOptionsProps { query?: IBuilderQuery; isMetricsDataSource?: boolean; showFunctions?: boolean; isCollapsed: boolean; entityType: string; entityData: any; onDelete: () => void; onCloneQuery?: (type: string, query: IBuilderQuery) => void; onToggleVisibility: () => void; onCollapseEntity: () => void; onQueryFunctionsUpdates?: (functions: QueryFunctionProps[]) => void; showDeleteButton: boolean; isListViewPanel?: boolean; } export default function QBEntityOptions({ query, isMetricsDataSource, isCollapsed, showFunctions, entityType, entityData, onDelete, onCloneQuery, onToggleVisibility, onCollapseEntity, showDeleteButton, onQueryFunctionsUpdates, isListViewPanel, }: QBEntityOptionsProps): JSX.Element { const handleCloneEntity = (): void => { if (isFunction(onCloneQuery)) { onCloneQuery(entityType, entityData); } }; const isLogsDataSource = query?.dataSource === DataSource.LOGS; return (
{entityType === 'query' && ( )} {showFunctions && (isMetricsDataSource || isLogsDataSource) && query && onQueryFunctionsUpdates && ( )}
{isCollapsed && (
{entityType} -{' '} {entityData.queryName}
)}
{showDeleteButton && ( )}
); } QBEntityOptions.defaultProps = { isListViewPanel: false, query: undefined, isMetricsDataSource: false, onQueryFunctionsUpdates: undefined, showFunctions: false, onCloneQuery: noop, };