import React, { Component } from "react"; import PropTypes from "prop-types"; import AceEditor from "react-ace"; import { isEqual, sortBy } from "lodash"; import FleetIcon from "components/icons/FleetIcon"; 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.>}