import React, { Component } from "react"; import PropTypes from "prop-types"; import classnames from "classnames"; import IconToolTip from "components/IconToolTip"; import osqueryTableInterface from "interfaces/osquery_table"; import { osqueryTableNames } from "utilities/osquery_tables"; import Dropdown from "components/forms/fields/Dropdown"; import FleetIcon from "components/icons/FleetIcon"; import SecondarySidePanelContainer from "../SecondarySidePanelContainer"; import displayTypeForDataType from "./helpers"; 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"; const baseClass = "query-side-panel"; class QuerySidePanel extends Component { static propTypes = { onOsqueryTableSelect: PropTypes.func, onTextEditorInputChange: PropTypes.func, selectedOsqueryTable: osqueryTableInterface, }; onSelectTable = (value) => { const { onOsqueryTableSelect } = this.props; onOsqueryTableSelect(value); return false; }; onSuggestedQueryClick = (query) => { return (evt) => { evt.preventDefault(); const { onTextEditorInputChange } = this.props; return onTextEditorInputChange(query); }; }; renderColumns = () => { const { selectedOsqueryTable } = this.props; const columns = selectedOsqueryTable.columns; const columnBaseClass = "query-column-list"; return columns.map((column) => { return (
  • {column.name}
    {displayTypeForDataType(column.type)}
  • ); }); }; renderTableSelect = () => { const { onSelectTable } = this; const { selectedOsqueryTable } = this.props; const tableNames = osqueryTableNames.map((name) => { return { label: name, value: name }; }); return ( ); }; render() { const { renderColumns, renderTableSelect } = this; const { selectedOsqueryTable: { description, platforms }, } = this.props; const iconClasses = classnames([`${baseClass}__icon`], "icon"); return (

    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;