diff --git a/internal/webui/src/containers/SourceFormDialog/components/SourceForm/components/SourceFormStepMetrics.tsx b/internal/webui/src/containers/SourceFormDialog/components/SourceForm/components/SourceFormStepMetrics.tsx index c9890ad6ee..ef3571a002 100644 --- a/internal/webui/src/containers/SourceFormDialog/components/SourceForm/components/SourceFormStepMetrics.tsx +++ b/internal/webui/src/containers/SourceFormDialog/components/SourceForm/components/SourceFormStepMetrics.tsx @@ -8,6 +8,12 @@ import { useMetrics } from "queries/Metric"; import { usePresets } from "queries/Preset"; import { SourceFormValues } from "../SourceForm.types"; +type PresetOption = { + label: string; + description?: string; +}; + + export const SourceFormStepMetrics = () => { const { control, register, watch, formState: { errors }, clearErrors } = useFormContext(); const metricsFields = useFieldArray({ control, name: "Metrics" }); @@ -35,10 +41,42 @@ export const SourceFormStepMetrics = () => { const presets = usePresets(); const metrics = useMetrics(); - const presetsOptions = useMemo( - () => presets.data ? Object.keys(presets.data).map((key) => ({ label: key })) : [], - [presets.data], - ); + +type PresetMeta = { + Description?: string; +}; + +const presetsOptions = useMemo(() => { + const PRESET_PRIORITY = ["minimal", "basic", "full", "exhaustive"]; + + if (!presets.data) { + return []; + } + + return Object.entries(presets.data) + .sort(([a], [b]) => { + const ia = PRESET_PRIORITY.indexOf(a); + const ib = PRESET_PRIORITY.indexOf(b); + + if (ia === -1 && ib === -1) { + return a.localeCompare(b); + } + if (ia === -1) { + return 1; + } + if (ib === -1) { + return -1; + } + return ia - ib; + }) + .map(([key, preset]) => { + const p = preset as PresetMeta; + return { + label: key, + description: p.Description ?? "", + }; + }); +}, [presets.data]); const metricsOptions = useMemo( () => metrics.data ? Object.keys(metrics.data).map((key) => ({ label: key })) : [], @@ -83,6 +121,7 @@ export const SourceFormStepMetrics = () => { loading={presets.isLoading} error={hasError("PresetMetrics")} /> + )} /> {getError("PresetMetrics")} @@ -162,6 +201,7 @@ export const SourceFormStepMetrics = () => { options={presetsOptions} loading={presets.isLoading} /> + )} />