import React, { Component } from 'react'; import PropTypes from 'prop-types'; import AceEditor from 'react-ace'; import { isEqual, sortBy } from 'lodash'; import KolideIcon from 'components/icons/KolideIcon'; import queryInterface from 'interfaces/query'; import Dropdown from 'components/forms/fields/Dropdown'; const baseClass = 'search-pack-query'; class SearchPackQuery extends Component { static propTypes = { allQueries: PropTypes.arrayOf(queryInterface), onSelectQuery: PropTypes.func, selectedQuery: queryInterface, }; static defaultProps = { allQueries: [], }; constructor (props) { super(props); this.state = { queryDropdownOptions: [], }; } componentWillMount () { const { allQueries } = this.props; const queryDropdownOptions = allQueries.map((query) => { return { label: query.name, value: String(query.id) }; }); this.setState({ queryDropdownOptions: sortBy(queryDropdownOptions, ['label']), }); } componentWillReceiveProps (nextProps) { const { allQueries } = nextProps; if (!isEqual(allQueries, this.props.allQueries)) { const queryDropdownOptions = allQueries.map((query) => { return { label: query.name, value: String(query.id) }; }); this.setState({ queryDropdownOptions: sortBy(queryDropdownOptions, ['label']), }); } } renderHeader = () => { const { selectedQuery } = this.props; if (selectedQuery) { return (
{selectedQuery.description || No description available.}