@grafana/ui
Version:
Grafana Components Library
1 lines • 5.64 kB
Source Map (JSON)
{"version":3,"file":"PlotLegend.mjs","sources":["../../../../src/components/uPlot/PlotLegend.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport { DataFrame, getFieldDisplayName, getFieldSeriesColor } from '@grafana/data';\nimport { VizLegendOptions, AxisPlacement } from '@grafana/schema';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { VizLayout, VizLayoutLegendProps } from '../VizLayout/VizLayout';\nimport { VizLegend } from '../VizLegend/VizLegend';\nimport { VizLegendItem } from '../VizLegend/types';\n\nimport { UPlotConfigBuilder } from './config/UPlotConfigBuilder';\nimport { getDisplayValuesForCalcs } from './utils';\n\ninterface PlotLegendProps extends VizLegendOptions, Omit<VizLayoutLegendProps, 'children'> {\n data: DataFrame[];\n config: UPlotConfigBuilder;\n}\n\n/**\n * mostly duplicates logic in PlotLegend below :(\n *\n * @internal\n */\nexport function hasVisibleLegendSeries(config: UPlotConfigBuilder, data: DataFrame[]) {\n return config.getSeries().some((s) => {\n const fieldIndex = s.props.dataFrameFieldIndex;\n\n if (!fieldIndex) {\n return false;\n }\n\n const field = data[fieldIndex.frameIndex]?.fields[fieldIndex.fieldIndex];\n\n if (!field || field.config.custom?.hideFrom?.legend) {\n return false;\n }\n\n return true;\n });\n}\n\nexport const PlotLegend = memo(\n ({ data, config, placement, calcs, displayMode, ...vizLayoutLegendProps }: PlotLegendProps) => {\n const theme = useTheme2();\n const legendItems = config\n .getSeries()\n .map<VizLegendItem | undefined>((s) => {\n const seriesConfig = s.props;\n const fieldIndex = seriesConfig.dataFrameFieldIndex;\n const axisPlacement = config.getAxisPlacement(s.props.scaleKey);\n\n if (!fieldIndex) {\n return undefined;\n }\n\n const field = data[fieldIndex.frameIndex]?.fields[fieldIndex.fieldIndex];\n\n if (!field || field.config.custom?.hideFrom?.legend) {\n return undefined;\n }\n\n const label = getFieldDisplayName(field, data[fieldIndex.frameIndex]!, data);\n const scaleColor = getFieldSeriesColor(field, theme);\n const seriesColor = scaleColor.color;\n\n return {\n disabled: !(seriesConfig.show ?? true),\n fieldIndex,\n color: seriesColor,\n label,\n yAxis: axisPlacement === AxisPlacement.Left || axisPlacement === AxisPlacement.Bottom ? 1 : 2,\n getDisplayValues: () => getDisplayValuesForCalcs(calcs, field, theme),\n getItemKey: () => `${label}-${fieldIndex.frameIndex}-${fieldIndex.fieldIndex}`,\n lineStyle: seriesConfig.lineStyle,\n };\n })\n .filter((i): i is VizLegendItem => i !== undefined);\n\n return (\n <VizLayout.Legend placement={placement} {...vizLayoutLegendProps}>\n <VizLegend\n placement={placement}\n items={legendItems}\n displayMode={displayMode}\n sortBy={vizLayoutLegendProps.sortBy}\n sortDesc={vizLayoutLegendProps.sortDesc}\n isSortable={true}\n />\n </VizLayout.Legend>\n );\n }\n);\n\nPlotLegend.displayName = 'PlotLegend';\n"],"names":[],"mappings":"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"}