/* 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 ROUTES from 'constants/routes'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { isFunction } from 'lodash-es'; import { ChevronDown, ChevronRight, Copy, Eye, EyeOff, Trash2, } from 'lucide-react'; import { useLocation } from 'react-router-dom'; import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData'; import { QueryFunction } from 'types/api/v5/queryRange'; import { DataSource } from 'types/common/queryBuilder'; import { DataSourceDropdown } from '..'; 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: QueryFunction[]) => void; showDeleteButton?: boolean; showCloneOption?: boolean; isListViewPanel?: boolean; index?: number; queryVariant?: 'dropdown' | 'static'; onChangeDataSource?: (value: DataSource) => void; } // eslint-disable-next-line sonarjs/cognitive-complexity export default function QBEntityOptions({ query, isMetricsDataSource, isCollapsed, showFunctions, entityType, entityData, onToggleVisibility, onCollapseEntity, onQueryFunctionsUpdates, isListViewPanel, onDelete, showDeleteButton, showCloneOption, onCloneQuery, index, queryVariant, onChangeDataSource, }: QBEntityOptionsProps): JSX.Element { const handleCloneEntity = (): void => { if (isFunction(onCloneQuery)) { onCloneQuery(entityType, entityData); } }; const { pathname } = useLocation(); const isLogsExplorerPage = pathname === ROUTES.LOGS_EXPLORER; const { lastUsedQuery } = useQueryBuilder(); const isLogsDataSource = query?.dataSource === DataSource.LOGS; return (
{entityType === 'query' && showCloneOption && ( )} {queryVariant === 'dropdown' && (
{ if (onChangeDataSource) { onChangeDataSource(value); } }} value={query?.dataSource || DataSource.METRICS} isListViewPanel={isListViewPanel} className="query-data-source-dropdown" />
)} {showFunctions && !isListViewPanel && (isMetricsDataSource || isLogsDataSource) && query && onQueryFunctionsUpdates && ( )}
{isCollapsed && (
{entityType} -{' '} {entityData.queryName}
)}
{showDeleteButton && !isListViewPanel && ( )}
); } QBEntityOptions.defaultProps = { isListViewPanel: false, query: undefined, isMetricsDataSource: false, onQueryFunctionsUpdates: undefined, showFunctions: false, onCloneQuery: noop, index: 0, onDelete: noop, showDeleteButton: false, showCloneOption: true, queryVariant: 'static', onChangeDataSource: noop, };