@grafana/ui
Version:
Grafana Components Library
1 lines • 5.68 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":";;;;;;;;;;AAuBO,SAAS,sBAAA,CAAuB,QAA4B,IAAA,EAAmB;AACpF,EAAA,OAAO,MAAA,CAAO,SAAA,EAAU,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM;AAxBxC,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyBI,IAAA,MAAM,UAAA,GAAa,EAAE,KAAA,CAAM,mBAAA;AAE3B,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAQ,EAAA,GAAA,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,KAA1B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA6B,OAAO,UAAA,CAAW,UAAA,CAAA;AAE7D,IAAA,IAAI,CAAC,WAAS,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,MAAA,CAAO,WAAb,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,QAAA,KAArB,mBAA+B,MAAA,CAAA,EAAQ;AACnD,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,MAAM,UAAA,GAAa,IAAA;AAAA,EACxB,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,WAAW,KAAA,EAAO,WAAA,EAAa,GAAG,oBAAA,EAAqB,KAAuB;AAC7F,IAAA,MAAM,QAAQ,SAAA,EAAU;AACxB,IAAA,MAAM,cAAc,MAAA,CACjB,SAAA,EAAU,CACV,GAAA,CAA+B,CAAC,CAAA,KAAM;AA9C7C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+CQ,MAAA,MAAM,eAAe,CAAA,CAAE,KAAA;AACvB,MAAA,MAAM,aAAa,YAAA,CAAa,mBAAA;AAChC,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,gBAAA,CAAiB,CAAA,CAAE,MAAM,QAAQ,CAAA;AAE9D,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,OAAO,KAAA,CAAA;AAAA,MACT;AAEA,MAAA,MAAM,SAAQ,EAAA,GAAA,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,KAA1B,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAA6B,OAAO,UAAA,CAAW,UAAA,CAAA;AAE7D,MAAA,IAAI,CAAC,WAAS,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,MAAA,CAAO,WAAb,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,QAAA,KAArB,mBAA+B,MAAA,CAAA,EAAQ;AACnD,QAAA,OAAO,KAAA,CAAA;AAAA,MACT;AAEA,MAAA,MAAM,QAAQ,mBAAA,CAAoB,KAAA,EAAO,KAAK,UAAA,CAAW,UAAU,GAAI,IAAI,CAAA;AAC3E,MAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,KAAA,EAAO,KAAK,CAAA;AACnD,MAAA,MAAM,cAAc,UAAA,CAAW,KAAA;AAE/B,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,EAAA,CAAE,EAAA,GAAA,YAAA,CAAa,IAAA,KAAb,IAAA,GAAA,EAAA,GAAqB,IAAA,CAAA;AAAA,QACjC,UAAA;AAAA,QACA,KAAA,EAAO,WAAA;AAAA,QACP,KAAA;AAAA,QACA,OAAO,aAAA,KAAkB,aAAA,CAAc,QAAQ,aAAA,KAAkB,aAAA,CAAc,SAAS,CAAA,GAAI,CAAA;AAAA,QAC5F,gBAAA,EAAkB,MAAM,wBAAA,CAAyB,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,QACpE,UAAA,EAAY,MAAM,CAAA,EAAG,KAAK,IAAI,UAAA,CAAW,UAAU,CAAA,CAAA,EAAI,UAAA,CAAW,UAAU,CAAA,CAAA;AAAA,QAC5E,WAAW,YAAA,CAAa;AAAA,OAC1B;AAAA,IACF,CAAC,CAAA,CACA,MAAA,CAAO,CAAC,CAAA,KAA0B,MAAM,KAAA,CAAS,CAAA;AAEpD,IAAA,2BACG,SAAA,CAAU,MAAA,EAAV,EAAiB,SAAA,EAAuB,GAAG,oBAAA,EAC1C,QAAA,kBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,KAAA,EAAO,WAAA;AAAA,QACP,WAAA;AAAA,QACA,QAAQ,oBAAA,CAAqB,MAAA;AAAA,QAC7B,UAAU,oBAAA,CAAqB,QAAA;AAAA,QAC/B,UAAA,EAAY;AAAA;AAAA,KACd,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}