import React from "react"; import classnames from "classnames"; import { IOsqueryTable } from "interfaces/osquery_table"; // @ts-ignore import { osqueryTableNames } from "utilities/osquery_tables"; // @ts-ignore import Dropdown from "components/forms/fields/Dropdown"; // @ts-ignore import FleetIcon from "components/icons/FleetIcon"; import TooltipWrapper from "components/TooltipWrapper"; // @ts-ignore import SecondarySidePanelContainer from "../SecondarySidePanelContainer"; import AppleIcon from "../../../../assets/images/icon-apple-dark-20x20@2x.png"; import LinuxIcon from "../../../../assets/images/icon-linux-dark-20x20@2x.png"; import WindowsIcon from "../../../../assets/images/icon-windows-dark-20x20@2x.png"; import CloseIcon from "../../../../assets/images/icon-close-black-50-8x8@2x.png"; interface IQuerySidePanel { selectedOsqueryTable: IOsqueryTable; onOsqueryTableSelect: (tableName: string) => void; onClose?: () => void; } const baseClass = "query-side-panel"; const QuerySidePanel = ({ selectedOsqueryTable, onOsqueryTableSelect, onClose, }: IQuerySidePanel): JSX.Element => { const displayTypeForDataType = (dataType: string) => { switch (dataType) { case "TEXT_TYPE": return "text"; case "BIGINT_TYPE": return "big int"; case "INTEGER_TYPE": return "integer"; default: return dataType; } }; const onSelectTable = (value: string) => { onOsqueryTableSelect(value); }; const renderColumns = () => { const columns = selectedOsqueryTable?.columns; const columnBaseClass = "query-column-list"; return columns?.map((column) => (
  • {column.name}
    {displayTypeForDataType(column.type)}
  • )); }; const renderTableSelect = () => { const tableNames = osqueryTableNames?.map((name: string) => { return { label: name, value: name }; }); if (!tableNames) { return null; } return ( ); }; const { description, platforms } = selectedOsqueryTable || {}; const iconClasses = classnames([`${baseClass}__icon`], "icon"); return (
    Close sidebar

    Tables

    {renderTableSelect()}

    {description}

    OS Availability

      {platforms?.map((platform) => { if (platform === "all") { return (
    • {platform}
    • ); } else if (platform === "freebsd") { return (
    • {platform}
    • ); } platform = platform.toLowerCase(); let icon = ( {`${platform} ); if (platform === "linux") { icon = ( {`${platform} ); } else if (platform === "windows") { icon = ( {`${platform} ); } return (
    • {icon} {platform}
    • ); })}

    Columns

      {renderColumns()}
    ); }; export default QuerySidePanel;