/* eslint-disable react/require-default-props */ /* eslint-disable sonarjs/no-duplicate-string */ import InputWithLabel from 'components/InputWithLabel/InputWithLabel'; import cx from 'classnames'; import './TraceOperator.styles.scss'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import { useCallback, useMemo } from 'react'; import { IBuilderQuery, IBuilderTraceOperator, } from 'types/api/queryBuilder/queryBuilderData'; import QueryAddOns from '../QueryAddOns/QueryAddOns'; import QueryAggregation from '../QueryAggregation/QueryAggregation'; import { Button, Select, Tooltip, Typography } from 'antd'; import { Trash2 } from 'lucide-react'; import { DataSource } from 'types/common/queryBuilder'; import { useQueryOperations } from 'hooks/queryBuilder/useQueryBuilderOperations'; 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(() => { return ( traceOperator.returnSpansFrom || currentQuery.builder.queryData[0].queryName || '' ); }, [currentQuery.builder.queryData, traceOperator?.returnSpansFrom]); const spanSourceOptions = useMemo(() => { return currentQuery.builder.queryData.map((query) => ({ value: query.queryName, label: (
Query

{query.queryName}

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