import React from "react"; import CustomLink from "components/CustomLink"; import EmptyTable from "components/EmptyTable"; import { IEmptyTableProps } from "interfaces/empty_table"; import { getVulnFilterRenderDetails, ISoftwareDropdownFilterVal, ISoftwareVulnFiltersParams, } from "pages/SoftwarePage/SoftwareTitles/SoftwareTable/helpers"; export interface IEmptySoftwareTableProps { softwareFilter?: ISoftwareDropdownFilterVal; vulnFilters?: ISoftwareVulnFiltersParams; tableName?: string; isSoftwareDisabled?: boolean; noSearchQuery?: boolean; installableSoftwareExists?: boolean; } const generateTypeText = ( tableName: string, softwareFilter?: ISoftwareDropdownFilterVal, vulnFilters?: ISoftwareVulnFiltersParams ) => { if (softwareFilter === "installableSoftware") { return "installable software"; } if (vulnFilters?.vulnerable) { return "vulnerable software"; } return tableName; }; const EmptySoftwareTable = ({ softwareFilter = "allSoftware", vulnFilters, tableName = "software", isSoftwareDisabled, noSearchQuery, installableSoftwareExists, }: IEmptySoftwareTableProps): JSX.Element => { const softwareTypeText = generateTypeText( tableName, softwareFilter, vulnFilters ); const { filterCount: vulnFiltersCount } = getVulnFilterRenderDetails( vulnFilters ); const isFiltered = vulnFiltersCount > 0 || !noSearchQuery || softwareFilter !== "allSoftware"; const getEmptySoftwareInfo = (): IEmptyTableProps => { if (isSoftwareDisabled) { return { header: "Software inventory disabled", info: ( <> Users with the admin role can{" "} . ), }; } if (!isFiltered) { if (softwareFilter === "allSoftware") { if (installableSoftwareExists) { return { header: `No ${tableName} detected`, info: "Install software on your hosts to see versions.", }; } return { header: `No ${tableName} detected`, info: `Expecting to see ${softwareTypeText}? Check back later.`, }; } } return { header: "No items match the current search criteria", info: `Expecting to see ${softwareTypeText}? Check back later.`, }; }; const emptySoftware = getEmptySoftwareInfo(); return ( ); }; export default EmptySoftwareTable;