/* eslint-disable react/require-default-props */ /* eslint-disable sonarjs/no-duplicate-string */ import './TraceOperator.styles.scss'; import { Button, Select, Tooltip, Typography } from 'antd'; import cx from 'classnames'; import InputWithLabel from 'components/InputWithLabel/InputWithLabel'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useQueryOperations } from 'hooks/queryBuilder/useQueryBuilderOperations'; import { Trash2 } from 'lucide-react'; import { useCallback, useMemo } from 'react'; import { IBuilderQuery, IBuilderTraceOperator, } from 'types/api/queryBuilder/queryBuilderData'; import { DataSource } from 'types/common/queryBuilder'; import QueryAddOns from '../QueryAddOns/QueryAddOns'; import QueryAggregation from '../QueryAggregation/QueryAggregation'; export default function TraceOperator({ traceOperator, isListViewPanel = false, }: { traceOperator: IBuilderTraceOperator; isListViewPanel?: boolean; }): JSX.Element { const { panelType, currentQuery, removeTraceOperator } = useQueryBuilder(); const { handleChangeQueryData } = useQueryOperations({ index: 0, query: traceOperator, entityVersion: '', isForTraceOperator: true, }); const handleTraceOperatorChange = useCallback( (traceOperatorExpression: string) => { handleChangeQueryData('expression', traceOperatorExpression); }, [handleChangeQueryData], ); const handleChangeAggregateEvery = useCallback( (value: IBuilderQuery['stepInterval']) => { handleChangeQueryData('stepInterval', value); }, [handleChangeQueryData], ); const handleChangeAggregation = useCallback( (value: string) => { handleChangeQueryData('aggregations', [ { expression: value, }, ]); }, [handleChangeQueryData], ); const handleChangeSpanSource = useCallback( (value: string) => { handleChangeQueryData('returnSpansFrom', value); }, [handleChangeQueryData], ); const defaultSpanSource = useMemo( () => traceOperator.returnSpansFrom || currentQuery.builder.queryData[0].queryName || '', [currentQuery.builder.queryData, traceOperator?.returnSpansFrom], ); const spanSourceOptions = useMemo( () => currentQuery.builder.queryData.map((query) => ({ value: query.queryName, label: (
Query

{query.queryName}

), })), [currentQuery.builder.queryData], ); return (
{!isListViewPanel && (
Using spans from