2021-09-01 22:08:20 +00:00
|
|
|
|
import React from "react";
|
|
|
|
|
|
import classnames from "classnames";
|
2022-12-07 17:59:38 +00:00
|
|
|
|
import { uniqueId } from "lodash";
|
2021-09-01 22:08:20 +00:00
|
|
|
|
|
|
|
|
|
|
import ReactTooltip from "react-tooltip";
|
|
|
|
|
|
|
|
|
|
|
|
interface IPillCellProps {
|
2022-12-07 17:59:38 +00:00
|
|
|
|
value: { indicator: string; id: number };
|
2021-09-29 04:04:58 +00:00
|
|
|
|
customIdPrefix?: string;
|
2022-02-15 16:19:01 +00:00
|
|
|
|
hostDetails?: boolean;
|
2021-09-01 22:08:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const generateClassTag = (rawValue: string): string => {
|
|
|
|
|
|
return rawValue.replace(" ", "-").toLowerCase();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2022-02-15 16:19:01 +00:00
|
|
|
|
const PillCell = ({
|
|
|
|
|
|
value,
|
|
|
|
|
|
customIdPrefix,
|
|
|
|
|
|
hostDetails,
|
|
|
|
|
|
}: IPillCellProps): JSX.Element => {
|
2022-12-07 17:59:38 +00:00
|
|
|
|
const { indicator, id } = value;
|
2021-09-01 22:08:20 +00:00
|
|
|
|
const pillClassName = classnames(
|
|
|
|
|
|
"data-table__pill",
|
2022-12-07 17:59:38 +00:00
|
|
|
|
`data-table__pill--${generateClassTag(indicator || "")}`,
|
2022-07-15 19:10:35 +00:00
|
|
|
|
"tooltip"
|
2021-09-01 22:08:20 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
const disable = () => {
|
2022-12-07 17:59:38 +00:00
|
|
|
|
switch (indicator) {
|
2021-09-01 22:08:20 +00:00
|
|
|
|
case "Minimal":
|
|
|
|
|
|
return false;
|
2021-09-10 20:22:15 +00:00
|
|
|
|
case "Considerable":
|
2021-09-01 22:08:20 +00:00
|
|
|
|
return false;
|
|
|
|
|
|
case "Excessive":
|
|
|
|
|
|
return false;
|
2022-02-15 16:19:01 +00:00
|
|
|
|
case "Undetermined":
|
|
|
|
|
|
return false;
|
2021-09-01 22:08:20 +00:00
|
|
|
|
default:
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const tooltipText = () => {
|
2022-12-07 17:59:38 +00:00
|
|
|
|
switch (indicator) {
|
2021-09-01 22:08:20 +00:00
|
|
|
|
case "Minimal":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<>
|
|
|
|
|
|
Running this query very <br />
|
|
|
|
|
|
frequently has little to no <br /> impact on your device’s <br />
|
|
|
|
|
|
performance.
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
2021-09-10 20:22:15 +00:00
|
|
|
|
case "Considerable":
|
2021-09-01 22:08:20 +00:00
|
|
|
|
return (
|
|
|
|
|
|
<>
|
|
|
|
|
|
Running this query <br /> frequently can have a <br /> noticeable
|
|
|
|
|
|
impact on your <br /> device’s performance.
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
|
|
|
|
|
case "Excessive":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<>
|
|
|
|
|
|
Running this query, even <br /> infrequently, can have a <br />
|
|
|
|
|
|
significant impact on your <br /> device’s performance.
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
|
|
|
|
|
case "Denylisted":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<>
|
|
|
|
|
|
This query has been <br /> stopped from running <br /> because of
|
|
|
|
|
|
excessive <br /> resource consumption.
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
2022-02-15 16:19:01 +00:00
|
|
|
|
case "Undetermined":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<>
|
|
|
|
|
|
To see performance <br /> impact, this query must <br /> run as a
|
|
|
|
|
|
scheduled query <br /> on {hostDetails ? "this" : "at least one"}{" "}
|
|
|
|
|
|
host.
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
2021-09-01 22:08:20 +00:00
|
|
|
|
default:
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
2022-12-07 17:59:38 +00:00
|
|
|
|
const tooltipId = uniqueId();
|
2021-09-01 22:08:20 +00:00
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|
<>
|
2021-09-29 04:04:58 +00:00
|
|
|
|
<span
|
|
|
|
|
|
data-tip
|
2022-12-07 17:59:38 +00:00
|
|
|
|
data-for={`${customIdPrefix || "pill"}__${id?.toString() || tooltipId}`}
|
2021-09-29 04:04:58 +00:00
|
|
|
|
data-tip-disable={disable()}
|
|
|
|
|
|
>
|
2022-12-07 17:59:38 +00:00
|
|
|
|
<span className={pillClassName}>{indicator}</span>
|
2021-09-29 04:04:58 +00:00
|
|
|
|
</span>
|
2021-09-01 22:08:20 +00:00
|
|
|
|
<ReactTooltip
|
2023-02-21 14:16:38 +00:00
|
|
|
|
place="top"
|
2021-09-01 22:08:20 +00:00
|
|
|
|
effect="solid"
|
|
|
|
|
|
backgroundColor="#3e4771"
|
2022-12-07 17:59:38 +00:00
|
|
|
|
id={`${customIdPrefix || "pill"}__${id?.toString() || tooltipId}`}
|
2021-09-01 22:08:20 +00:00
|
|
|
|
data-html
|
|
|
|
|
|
>
|
2022-12-07 17:59:38 +00:00
|
|
|
|
<span
|
|
|
|
|
|
className={`tooltip ${generateClassTag(
|
|
|
|
|
|
indicator || ""
|
|
|
|
|
|
)}__tooltip-text`}
|
|
|
|
|
|
>
|
2021-09-01 22:08:20 +00:00
|
|
|
|
{tooltipText()}
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</ReactTooltip>
|
|
|
|
|
|
</>
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export default PillCell;
|