@grafana/ui
Version:
Grafana Components Library
1 lines • 6.23 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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"}