@grafana/ui
Version:
Grafana Components Library
1 lines • 5.3 kB
Source Map (JSON)
{"version":3,"file":"BarGaugeCell.mjs","sources":["../../../../../src/components/Table/Cells/BarGaugeCell.tsx"],"sourcesContent":["import { isFunction } from 'lodash';\n\nimport { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';\nimport { BarGaugeDisplayMode, BarGaugeValueMode, TableCellDisplayMode } from '@grafana/schema';\n\nimport { BarGauge } from '../../BarGauge/BarGauge';\nimport { DataLinksContextMenu, DataLinksContextMenuApi } from '../../DataLinks/DataLinksContextMenu';\nimport { TableCellProps } from '../types';\nimport { getAlignmentFactor, getCellOptions } from '../utils';\n\nconst defaultScale: ThresholdsConfig = {\n mode: ThresholdsMode.Absolute,\n steps: [\n {\n color: 'blue',\n value: -Infinity,\n },\n {\n color: 'green',\n value: 20,\n },\n ],\n};\n\nexport const BarGaugeCell = (props: TableCellProps) => {\n const { field, innerWidth, tableStyles, cell, cellProps, row } = props;\n const displayValue = field.display!(cell.value);\n const cellOptions = getCellOptions(field);\n\n let config = getFieldConfigWithMinMax(field, false);\n if (!config.thresholds) {\n config = {\n ...config,\n thresholds: defaultScale,\n };\n }\n\n // Set default display mode and update if defined\n // and update the valueMode if defined\n let barGaugeMode: BarGaugeDisplayMode = BarGaugeDisplayMode.Gradient;\n let valueDisplayMode: BarGaugeValueMode | undefined = undefined;\n\n if (cellOptions.type === TableCellDisplayMode.Gauge) {\n barGaugeMode = cellOptions.mode ?? BarGaugeDisplayMode.Gradient;\n valueDisplayMode =\n cellOptions.valueDisplayMode !== undefined ? cellOptions.valueDisplayMode : BarGaugeValueMode.Text;\n }\n\n const getLinks = () => {\n if (!isFunction(field.getLinks)) {\n return [];\n }\n\n return field.getLinks({ valueRowIndex: row.index });\n };\n\n const hasLinks = Boolean(getLinks().length);\n const alignmentFactors = getAlignmentFactor(field, displayValue, cell.row.index);\n\n const renderComponent = (menuProps: DataLinksContextMenuApi) => {\n const { openMenu, targetClassName } = menuProps;\n\n return (\n <BarGauge\n width={innerWidth}\n height={tableStyles.cellHeightInner}\n field={config}\n display={field.display}\n text={{ valueSize: 14 }}\n value={displayValue}\n orientation={VizOrientation.Horizontal}\n theme={tableStyles.theme}\n alignmentFactors={alignmentFactors}\n onClick={openMenu}\n className={targetClassName}\n itemSpacing={1}\n lcdCellWidth={8}\n displayMode={barGaugeMode}\n valueDisplayMode={valueDisplayMode}\n />\n );\n };\n\n return (\n <div {...cellProps} className={tableStyles.cellContainer}>\n {hasLinks ? (\n <DataLinksContextMenu links={getLinks} style={{ display: 'flex', width: '100%' }}>\n {(api) => renderComponent(api)}\n </DataLinksContextMenu>\n ) : (\n renderComponent({})\n )}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}