import { Button, Tabs } from 'antd'; import { ALERTS_DATA_SOURCE_MAP } from 'constants/alerts'; import { PANEL_TYPES } from 'constants/queryBuilder'; import { QueryBuilder } from 'container/QueryBuilder'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { AlertTypes } from 'types/api/alerts/alertTypes'; import { EQueryType } from 'types/common/dashboard'; import ChQuerySection from './ChQuerySection'; import PromqlSection from './PromqlSection'; import { FormContainer, StepHeading } from './styles'; function QuerySection({ queryCategory, setQueryCategory, alertType, runQuery, }: QuerySectionProps): JSX.Element { // init namespace for translations const { t } = useTranslation('alerts'); const handleQueryCategoryChange = (queryType: string): void => { setQueryCategory(queryType as EQueryType); }; const renderPromqlUI = (): JSX.Element => ; const renderChQueryUI = (): JSX.Element => ; const renderMetricUI = (): JSX.Element => ( ); const tabs = [ { label: t('tab_qb'), key: EQueryType.QUERY_BUILDER, }, { label: t('tab_chquery'), key: EQueryType.CLICKHOUSE, }, ]; const items = useMemo( () => [ { label: t('tab_qb'), key: EQueryType.QUERY_BUILDER }, { label: t('tab_chquery'), key: EQueryType.CLICKHOUSE }, { label: t('tab_promql'), key: EQueryType.PROM }, ], [t], ); const renderTabs = (typ: AlertTypes): JSX.Element | null => { switch (typ) { case AlertTypes.TRACES_BASED_ALERT: case AlertTypes.LOGS_BASED_ALERT: case AlertTypes.EXCEPTIONS_BASED_ALERT: return ( } items={tabs} /> ); case AlertTypes.METRICS_BASED_ALERT: default: return ( } items={items} /> ); } }; const renderQuerySection = (c: EQueryType): JSX.Element | null => { switch (c) { case EQueryType.PROM: return renderPromqlUI(); case EQueryType.CLICKHOUSE: return renderChQueryUI(); case EQueryType.QUERY_BUILDER: return renderMetricUI(); default: return null; } }; return ( <> {t('alert_form_step1')}
{renderTabs(alertType)}
{renderQuerySection(queryCategory)}
); } interface QuerySectionProps { queryCategory: EQueryType; setQueryCategory: (n: EQueryType) => void; alertType: AlertTypes; runQuery: VoidFunction; } export default QuerySection;