@grafana/ui
Version:
Grafana Components Library
1 lines • 6.56 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../src/components/MatchersUI/utils.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { DataFrame, Field, getFieldDisplayName, SelectableValue, FieldNamePickerBaseNameMode } from '@grafana/data';\n\nimport { getFieldTypeIcon } from '../../types/icon';\n\n/**\n * @internal\n */\nexport interface FrameFieldsDisplayNames {\n // The display names\n display: Set<string>;\n\n // raw field names (that are explicitly not visible)\n raw: Set<string>;\n\n // Field mappings (duplicates are not supported)\n fields: Map<string, Field>;\n}\n\n/**\n * @internal\n */\nexport function frameHasName(name: string | undefined, names: FrameFieldsDisplayNames) {\n if (!name) {\n return false;\n }\n return names.display.has(name) || names.raw.has(name);\n}\n\n/**\n * Returns the distinct names in a set of frames\n */\nexport function getFrameFieldsDisplayNames(\n data: DataFrame[],\n filter?: (field: Field) => boolean\n): FrameFieldsDisplayNames {\n const names: FrameFieldsDisplayNames = {\n display: new Set<string>(),\n raw: new Set<string>(),\n fields: new Map<string, Field>(),\n };\n\n for (const frame of data) {\n for (const field of frame.fields) {\n if (filter && !filter(field)) {\n continue;\n }\n const disp = getFieldDisplayName(field, frame, data);\n names.display.add(disp);\n names.fields.set(disp, field);\n if (field.name && disp !== field.name) {\n names.raw.add(field.name);\n names.fields.set(field.name, field);\n }\n }\n }\n return names;\n}\n\n/**\n * @internal\n */\nexport function useFieldDisplayNames(data: DataFrame[], filter?: (field: Field) => boolean): FrameFieldsDisplayNames {\n return useMemo(() => {\n return getFrameFieldsDisplayNames(data, filter);\n }, [data, filter]);\n}\n\n/**\n * @internal\n */\nexport function useSelectOptions(\n displayNames: FrameFieldsDisplayNames,\n currentName?: string,\n firstItem?: SelectableValue<string>,\n fieldType?: string,\n baseNameMode?: FieldNamePickerBaseNameMode\n): Array<SelectableValue<string>> {\n return useMemo(() => {\n let found = false;\n const options: Array<SelectableValue<string>> = [];\n if (firstItem) {\n options.push(firstItem);\n }\n if (baseNameMode === FieldNamePickerBaseNameMode.OnlyBaseNames) {\n for (const name of displayNames.raw) {\n if (!found && name === currentName) {\n found = true;\n }\n options.push({\n value: name,\n label: `${name} (base field name)`,\n });\n }\n } else {\n for (const name of displayNames.display) {\n if (!found && name === currentName) {\n found = true;\n }\n const field = displayNames.fields.get(name);\n if (!fieldType || fieldType === field?.type) {\n options.push({\n value: name,\n label: name,\n icon: field ? getFieldTypeIcon(field) : undefined,\n });\n }\n }\n\n if (baseNameMode !== FieldNamePickerBaseNameMode.ExcludeBaseNames) {\n for (const name of displayNames.raw) {\n if (!displayNames.display.has(name)) {\n if (!found && name === currentName) {\n found = true;\n }\n options.push({\n value: name,\n label: `${name} (base field name)`,\n });\n }\n }\n }\n }\n\n if (currentName && !found) {\n options.push({\n value: currentName,\n label: `${currentName} (not found)`,\n });\n }\n return options;\n }, [displayNames, currentName, firstItem, fieldType, baseNameMode]);\n}\n"],"names":[],"mappings":"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"}