diff --git a/frontend/src/container/ExplorerOrderBy/index.tsx b/frontend/src/container/ExplorerOrderBy/index.tsx new file mode 100644 index 0000000000..5374510084 --- /dev/null +++ b/frontend/src/container/ExplorerOrderBy/index.tsx @@ -0,0 +1,72 @@ +import { Select, Spin } from 'antd'; +import { OrderByFilterProps } from 'container/QueryBuilder/filters/OrderByFilter/OrderByFilter.interfaces'; +import { useOrderByFilter } from 'container/QueryBuilder/filters/OrderByFilter/useOrderByFilter'; +import { selectStyle } from 'container/QueryBuilder/filters/QueryBuilderSearch/config'; +import { useGetAggregateKeys } from 'hooks/queryBuilder/useGetAggregateKeys'; +import { memo, useMemo } from 'react'; +import { StringOperators } from 'types/common/queryBuilder'; + +function ExplorerOrderBy({ query, onChange }: OrderByFilterProps): JSX.Element { + const { + debouncedSearchText, + selectedValue, + aggregationOptions, + generateOptions, + createOptions, + handleChange, + handleSearchKeys, + } = useOrderByFilter({ query, onChange }); + + const { data, isFetching } = useGetAggregateKeys( + { + aggregateAttribute: query.aggregateAttribute.key, + dataSource: query.dataSource, + aggregateOperator: query.aggregateOperator, + searchText: debouncedSearchText, + }, + { + keepPreviousData: true, + }, + ); + + const options = useMemo(() => { + const keysOptions = createOptions(data?.payload?.attributeKeys || []); + + const customOptions = createOptions([ + { key: 'timestamp', isColumn: true, type: null, dataType: null }, + ]); + + const baseOptions = [ + ...customOptions, + ...(query.aggregateOperator === StringOperators.NOOP + ? [] + : aggregationOptions), + ...keysOptions, + ]; + + return generateOptions(baseOptions); + }, [ + aggregationOptions, + createOptions, + data?.payload?.attributeKeys, + generateOptions, + query.aggregateOperator, + ]); + + return ( +