import React from "react"; import classnames from "classnames"; import { uniqueId } from "lodash"; import ReactTooltip from "react-tooltip"; import { COLORS } from "styles/var/colors"; interface IPerformanceImpactCellValue { indicator: string; id?: number; } interface IPerformanceImpactCellProps { value: IPerformanceImpactCellValue; isHostSpecific?: boolean; customIdPrefix?: string; } const generateClassTag = (rawValue: string): string => { return rawValue.replace(" ", "-").toLowerCase(); }; const baseClass = "performance-impact-cell"; const PerformanceImpactCell = ({ value, isHostSpecific = false, customIdPrefix, }: IPerformanceImpactCellProps): JSX.Element => { const { indicator, id } = value; const pillClassName = classnames( "data-table__pill", `data-table__pill--${generateClassTag(indicator || "")}`, "tooltip" ); const disableTooltip = ![ "Minimal", "Considerable", "Excessive", "Undetermined", ].includes(indicator); const tooltipText = () => { switch (indicator) { case "Minimal": return ( <> Running this query very frequently has little to no
impact on your device's performance. ); case "Considerable": return ( <> Running this query frequently can have a noticeable
impact on your device's performance. ); case "Excessive": return ( <> Running this query, even infrequently, can have a
significant impact on your device's performance. ); case "Denylisted": return ( <> This query has been
stopped from running
because of excessive
resource consumption. ); case "Undetermined": return ( <> Performance impact will be available when{" "} {isHostSpecific ? "the" : "this"}
query runs{isHostSpecific && " on this host"}. ); default: return null; } }; const tooltipId = uniqueId(); return ( {indicator} {tooltipText()} ); }; export default PerformanceImpactCell;