import React from "react"; import classnames from "classnames"; import TooltipWrapper from "components/TooltipWrapper"; import { isPerformanceImpactIndicator, PerformanceImpactIndicatorValue, } from "interfaces/schedulable_query"; import { getPerformanceImpactIndicatorTooltip } from "utilities/helpers"; interface IPerformanceImpactCellValue { indicator: string; } interface IPerformanceImpactCellProps { value: IPerformanceImpactCellValue; isHostSpecific?: boolean; } const generateClassTag = (rawValue: string): string => { return rawValue.replace(" ", "-").toLowerCase(); }; const baseClass = "performance-impact-cell"; const PerformanceImpactCell = ({ value, isHostSpecific = false, }: IPerformanceImpactCellProps): JSX.Element => { const { indicator } = value; const pillClassName = classnames( "data-table__pill", `data-table__pill--${generateClassTag(indicator || "")}`, "tooltip" ); const disableTooltip = ![ "Minimal", "Considerable", "Excessive", "Undetermined", ].includes(indicator); const indicatorValue = isPerformanceImpactIndicator(indicator) ? indicator : PerformanceImpactIndicatorValue.UNDETERMINED; return ( {getPerformanceImpactIndicatorTooltip( indicatorValue, isHostSpecific )} } position="top" disableTooltip={disableTooltip} underline={false} showArrow // Pills require more gap from text to tooltip tipOffset={indicatorValue === "Undetermined" ? 8 : 12} > {indicatorValue} ); }; export default PerformanceImpactCell;