{"version":3,"file":"BarGaugeCell.mjs","sources":["../../../../../src/components/Table/Cells/BarGaugeCell.tsx"],"sourcesContent":["import { isFunction } from 'lodash';\nimport { useState } from 'react';\n\nimport { ThresholdsConfig, ThresholdsMode, VizOrientation, getFieldConfigWithMinMax } from '@grafana/data';\nimport { BarGaugeDisplayMode, BarGaugeValueMode, TableCellDisplayMode } from '@grafana/schema';\n\nimport { BarGauge } from '../../BarGauge/BarGauge';\nimport { DataLinksActionsTooltip, renderSingleLink } from '../DataLinksActionsTooltip';\nimport { TableCellProps } from '../types';\nimport {\n  DataLinksActionsTooltipCoords,\n  getAlignmentFactor,\n  getCellOptions,\n  getDataLinksActionsTooltipUtils,\n} 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 alignmentFactors = getAlignmentFactor(field, displayValue, cell.row.index);\n\n  const renderComponent = () => {\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        itemSpacing={1}\n        lcdCellWidth={8}\n        displayMode={barGaugeMode}\n        valueDisplayMode={valueDisplayMode}\n      />\n    );\n  };\n\n  const [tooltipCoords, setTooltipCoords] = useState<DataLinksActionsTooltipCoords>();\n  const { shouldShowLink, hasMultipleLinksOrActions } = getDataLinksActionsTooltipUtils(getLinks());\n  const shouldShowTooltip = hasMultipleLinksOrActions && tooltipCoords !== undefined;\n\n  const links = getLinks();\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n    <div\n      {...cellProps}\n      className={tableStyles.cellContainer}\n      style={{ ...cellProps.style, cursor: hasMultipleLinksOrActions ? 'context-menu' : 'auto' }}\n      onClick={({ clientX, clientY }) => {\n        setTooltipCoords({ clientX, clientY });\n      }}\n    >\n      {shouldShowLink ? (\n        renderSingleLink(links[0], renderComponent())\n      ) : shouldShowTooltip ? (\n        <DataLinksActionsTooltip\n          links={links}\n          value={renderComponent()}\n          coords={tooltipCoords}\n          onTooltipClose={() => setTooltipCoords(undefined)}\n        />\n      ) : (\n        renderComponent()\n      )}\n    </div>\n  );\n};\n"],"names":[],"mappings":"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"}