{"version":3,"file":"BarGaugeCell.mjs","sources":["../../../../../../src/components/Table/TableNG/Cells/BarGaugeCell.tsx"],"sourcesContent":["import { 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 { BarGaugeCellProps } from '../types';\nimport { extractPixelValue, getCellOptions, getAlignmentFactor, getCellLinks } 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 = ({ value, field, theme, height, width, rowIdx }: BarGaugeCellProps) => {\n  const displayValue = field.display!(value);\n  const cellOptions = getCellOptions(field);\n  const heightOffset = extractPixelValue(theme.spacing(1));\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 hasLinks = Boolean(getCellLinks(field, rowIdx)?.length);\n\n  const alignmentFactors = getAlignmentFactor(field, displayValue, rowIdx!);\n\n  const renderComponent = (menuProps: DataLinksContextMenuApi) => {\n    const { openMenu } = menuProps;\n\n    return (\n      <BarGauge\n        width={width}\n        height={height - heightOffset}\n        field={config}\n        display={field.display}\n        text={{ valueSize: 14 }}\n        value={displayValue}\n        orientation={VizOrientation.Horizontal}\n        theme={theme}\n        alignmentFactors={alignmentFactors}\n        onClick={openMenu}\n        itemSpacing={1}\n        lcdCellWidth={8}\n        displayMode={barGaugeMode}\n        valueDisplayMode={valueDisplayMode}\n      />\n    );\n  };\n\n  // @TODO: Actions\n  return (\n    <>\n      {hasLinks ? (\n        <DataLinksContextMenu\n          links={() => getCellLinks(field, rowIdx) || []}\n          style={{ display: 'flex', width: '100%' }}\n        >\n          {(api) => renderComponent(api)}\n        </DataLinksContextMenu>\n      ) : (\n        renderComponent({})\n      )}\n    </>\n  );\n};\n"],"names":[],"mappings":";;;;;;;AAQA,MAAM,YAAiC,GAAA;AAAA,EACrC,MAAM,cAAe,CAAA,QAAA;AAAA,EACrB,KAAO,EAAA;AAAA,IACL;AAAA,MACE,KAAO,EAAA,MAAA;AAAA,MACP,KAAO,EAAA,CAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,KAAO,EAAA,OAAA;AAAA,MACP,KAAO,EAAA;AAAA;AACT;AAEJ,CAAA;AAEa,MAAA,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,OAAO,KAAO,EAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAgC,KAAA;AAtBnG,EAAA,IAAA,EAAA,EAAA,EAAA;AAuBE,EAAM,MAAA,YAAA,GAAe,KAAM,CAAA,OAAA,CAAS,KAAK,CAAA;AACzC,EAAM,MAAA,WAAA,GAAc,eAAe,KAAK,CAAA;AACxC,EAAA,MAAM,YAAe,GAAA,iBAAA,CAAkB,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA;AAEvD,EAAI,IAAA,MAAA,GAAS,wBAAyB,CAAA,KAAA,EAAO,KAAK,CAAA;AAClD,EAAI,IAAA,CAAC,OAAO,UAAY,EAAA;AACtB,IAAS,MAAA,GAAA;AAAA,MACP,GAAG,MAAA;AAAA,MACH,UAAY,EAAA;AAAA,KACd;AAAA;AAKF,EAAA,IAAI,eAAoC,mBAAoB,CAAA,QAAA;AAC5D,EAAA,IAAI,gBAAkD,GAAA,KAAA,CAAA;AAEtD,EAAI,IAAA,WAAA,CAAY,IAAS,KAAA,oBAAA,CAAqB,KAAO,EAAA;AACnD,IAAe,YAAA,GAAA,CAAA,EAAA,GAAA,WAAA,CAAY,IAAZ,KAAA,IAAA,GAAA,EAAA,GAAoB,mBAAoB,CAAA,QAAA;AACvD,IAAA,gBAAA,GACE,WAAY,CAAA,gBAAA,KAAqB,KAAY,CAAA,GAAA,WAAA,CAAY,mBAAmB,iBAAkB,CAAA,IAAA;AAAA;AAGlG,EAAA,MAAM,WAAW,OAAQ,CAAA,CAAA,EAAA,GAAA,YAAA,CAAa,OAAO,MAAM,CAAA,KAA1B,mBAA6B,MAAM,CAAA;AAE5D,EAAA,MAAM,gBAAmB,GAAA,kBAAA,CAAmB,KAAO,EAAA,YAAA,EAAc,MAAO,CAAA;AAExE,EAAM,MAAA,eAAA,GAAkB,CAAC,SAAuC,KAAA;AAC9D,IAAM,MAAA,EAAE,UAAa,GAAA,SAAA;AAErB,IACE,uBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,QAAQ,MAAS,GAAA,YAAA;AAAA,QACjB,KAAO,EAAA,MAAA;AAAA,QACP,SAAS,KAAM,CAAA,OAAA;AAAA,QACf,IAAA,EAAM,EAAE,SAAA,EAAW,EAAG,EAAA;AAAA,QACtB,KAAO,EAAA,YAAA;AAAA,QACP,aAAa,cAAe,CAAA,UAAA;AAAA,QAC5B,KAAA;AAAA,QACA,gBAAA;AAAA,QACA,OAAS,EAAA,QAAA;AAAA,QACT,WAAa,EAAA,CAAA;AAAA,QACb,YAAc,EAAA,CAAA;AAAA,QACd,WAAa,EAAA,YAAA;AAAA,QACb;AAAA;AAAA,KACF;AAAA,GAEJ;AAGA,EAAA,uCAEK,QACC,EAAA,QAAA,mBAAA,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,OAAO,MAAM,YAAA,CAAa,KAAO,EAAA,MAAM,KAAK,EAAC;AAAA,MAC7C,KAAO,EAAA,EAAE,OAAS,EAAA,MAAA,EAAQ,OAAO,MAAO,EAAA;AAAA,MAEvC,QAAA,EAAA,CAAC,GAAQ,KAAA,eAAA,CAAgB,GAAG;AAAA;AAAA,GAG/B,GAAA,eAAA,CAAgB,EAAE,CAEtB,EAAA,CAAA;AAEJ;;;;"}