import React, { Component, PropTypes } from 'react'; import osqueryTableInterface from 'interfaces/osquery_table'; import { osqueryTableNames } from 'utilities/osquery_tables'; import Dropdown from 'components/forms/fields/Dropdown'; import Icon from 'components/Icon'; import SecondarySidePanelContainer from '../SecondarySidePanelContainer'; import Button from '../../buttons/Button'; import { availability, columnsToRender, displayTypeForDataType, numAdditionalColumns, shouldShowAllColumns, } from './helpers'; const baseClass = 'query-side-panel'; class QuerySidePanel extends Component { static propTypes = { onOsqueryTableSelect: PropTypes.func, onTextEditorInputChange: PropTypes.func, selectedOsqueryTable: osqueryTableInterface, }; componentWillMount () { const { selectedOsqueryTable } = this.props; const showAllColumns = shouldShowAllColumns(selectedOsqueryTable); this.setState({ showAllColumns }); } componentWillReceiveProps (nextProps) { const { selectedOsqueryTable } = nextProps; if (this.props.selectedOsqueryTable !== selectedOsqueryTable) { const showAllColumns = shouldShowAllColumns(selectedOsqueryTable); this.setState({ showAllColumns }); } return false; } onSelectTable = ({ value }) => { const { onOsqueryTableSelect } = this.props; onOsqueryTableSelect(value); return false; } onShowAllColumns = () => { this.setState({ showAllColumns: true }); } onSuggestedQueryClick = (query) => { return (evt) => { evt.preventDefault(); const { onTextEditorInputChange } = this.props; return onTextEditorInputChange(query); }; }; renderColumns = () => { const { selectedOsqueryTable } = this.props; const { showAllColumns } = this.state; const columns = columnsToRender(selectedOsqueryTable, showAllColumns); return columns.map((column) => { return (
Choose a Table
{renderTableSelect()}{description}
OS Availability
{availability(platform)}
Columns
{renderColumns()} {renderMoreColumns()}Joins
Suggested Queries
{renderSuggestedQueries()}