2024-06-18 19:26:45 +00:00
|
|
|
import React from "react";
|
|
|
|
|
|
|
|
|
|
import ReactTooltip from "react-tooltip";
|
|
|
|
|
import { COLORS } from "styles/var/colors";
|
|
|
|
|
import Icon from "components/Icon";
|
|
|
|
|
|
|
|
|
|
interface IIssuesIndicatorProps {
|
|
|
|
|
totalIssuesCount?: number;
|
|
|
|
|
failingPoliciesCount?: number;
|
|
|
|
|
/** Premium only */
|
|
|
|
|
criticalVulnerabilitiesCount?: number;
|
|
|
|
|
rowId?: number;
|
|
|
|
|
tooltipPosition?: "top" | "bottom";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const IssuesIndicator = ({
|
|
|
|
|
totalIssuesCount,
|
|
|
|
|
failingPoliciesCount,
|
|
|
|
|
criticalVulnerabilitiesCount,
|
|
|
|
|
rowId,
|
|
|
|
|
tooltipPosition = "top",
|
|
|
|
|
}: IIssuesIndicatorProps): JSX.Element => {
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<span
|
|
|
|
|
className="host-issue tooltip tooltip__tooltip-icon"
|
|
|
|
|
data-tip
|
|
|
|
|
data-for={`host-issue-count-${rowId}`}
|
|
|
|
|
data-tip-disable={false}
|
|
|
|
|
>
|
|
|
|
|
<Icon name="error-outline" color="ui-fleet-black-50" />{" "}
|
|
|
|
|
{totalIssuesCount}
|
|
|
|
|
</span>
|
|
|
|
|
<ReactTooltip
|
|
|
|
|
place={tooltipPosition}
|
|
|
|
|
effect="solid"
|
|
|
|
|
backgroundColor={COLORS["tooltip-bg"]}
|
|
|
|
|
id={`host-issue-count-${rowId}`}
|
|
|
|
|
data-html
|
|
|
|
|
>
|
|
|
|
|
<span className={`tooltip__tooltip-text`}>
|
2024-06-19 17:10:32 +00:00
|
|
|
{!!criticalVulnerabilitiesCount &&
|
2024-06-18 19:26:45 +00:00
|
|
|
`Critical vulnerabilities (${criticalVulnerabilitiesCount})`}
|
2024-06-19 17:10:32 +00:00
|
|
|
{!!criticalVulnerabilitiesCount && !!failingPoliciesCount && <br />}
|
|
|
|
|
{!!failingPoliciesCount &&
|
|
|
|
|
`Failing policies (${failingPoliciesCount})`}
|
2024-06-18 19:26:45 +00:00
|
|
|
</span>
|
|
|
|
|
</ReactTooltip>
|
|
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default IssuesIndicator;
|