mirror of
https://github.com/fleetdm/fleet
synced 2026-04-24 23:17:43 +00:00
## Addresses second major part of #15011 (item 3) – Host query report _Note for reviewers: The most important files here are:_ - HostQueryReport.tsx - HQRTable.tsx - HQRTableConfig.tsx _The rest are associated API services, interfaces, helpers, routes, styles, and miscellanious code improvements I made along the way._ ____________ ### See linked issue for enumeration of feature-related tasks <img width="1230" alt="Screenshot 2023-12-08 at 4 23 50 PM" src="https://github.com/fleetdm/fleet/assets/61553566/4ae4b41b-9209-4afa-ae50-8844d01ff8fd"> <img width="1230" alt="collecting" src="https://github.com/fleetdm/fleet/assets/61553566/061ac2bc-899f-4b29-91ba-36ebecf5ce58"> <img width="1230" alt="Screenshot 2023-12-08 at 4 24 39 PM" src="https://github.com/fleetdm/fleet/assets/61553566/f8b25e01-fe3b-47e6-b980-eba9538b1a01"> <img width="1230" alt="Screenshot 2023-12-08 at 4 25 01 PM" src="https://github.com/fleetdm/fleet/assets/61553566/46360274-8500-494c-8fb7-3a1d45347ce0"> Re-routes to host details > queries if: - query reports are globally disabled: https://github.com/fleetdm/fleet/assets/61553566/ac67da8c-57bc-4d9b-96be-daf3b198e704 - query has `Discard data` enabled: https://github.com/fleetdm/fleet/assets/61553566/b797dd24-9893-4360-bf40-b80298848864 - [x] Manual QA for all new/changed functionality --------- Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import React from "react";
|
|
import { uniqueId } from "lodash";
|
|
import classnames from "classnames";
|
|
|
|
import ReactTooltip from "react-tooltip";
|
|
import { DEFAULT_EMPTY_CELL_VALUE } from "utilities/constants";
|
|
import { COLORS } from "styles/var/colors";
|
|
|
|
interface ITooltipTruncatedTextCellProps {
|
|
value: string | number | boolean;
|
|
/** If set to `true` the text inside the tooltip will break on words instead of any character.
|
|
* By default the tooltip text breaks on any character.
|
|
* Default is `false`.
|
|
*/
|
|
tooltipBreakOnWord?: boolean;
|
|
classes?: string;
|
|
}
|
|
|
|
const baseClass = "tooltip-truncated-cell";
|
|
|
|
const TooltipTruncatedTextCell = ({
|
|
value,
|
|
tooltipBreakOnWord = false,
|
|
classes = "w250",
|
|
}: ITooltipTruncatedTextCellProps): JSX.Element => {
|
|
const classNames = classnames(baseClass, classes, {
|
|
"tooltip-break-on-word": tooltipBreakOnWord,
|
|
});
|
|
|
|
const tooltipId = uniqueId();
|
|
const isDefaultValue = value === DEFAULT_EMPTY_CELL_VALUE;
|
|
return (
|
|
<div className={classNames}>
|
|
<div
|
|
className={"data-table__tooltip-truncated-text"}
|
|
data-tip
|
|
data-for={tooltipId}
|
|
>
|
|
<span
|
|
className={`data-table__tooltip-truncated-text--cell ${
|
|
isDefaultValue ? "text-muted" : ""
|
|
} `}
|
|
>
|
|
{value}
|
|
</span>
|
|
</div>
|
|
<ReactTooltip
|
|
place="top"
|
|
effect="solid"
|
|
backgroundColor={COLORS["tooltip-bg"]}
|
|
id={tooltipId}
|
|
data-html
|
|
className={"truncated-tooltip"} // responsive widths
|
|
clickable
|
|
delayHide={200} // need delay set to hover using clickable
|
|
>
|
|
<>
|
|
{value}
|
|
<div className="safari-hack"> </div>
|
|
{/* Fixes triple click selecting next element in Safari */}
|
|
</>
|
|
</ReactTooltip>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default TooltipTruncatedTextCell;
|