import React, { useState } from "react"; import PropTypes from "prop-types"; import { push } from "react-router-redux"; import { filter, includes } from "lodash"; import PATHS from "router/paths"; import queryInterface from "interfaces/query"; import hostInterface from "interfaces/host"; import Button from "components/buttons/Button"; import Modal from "components/Modal"; import InputField from "components/forms/fields/InputField"; import OpenNewTabIcon from "../../../../../assets/images/open-new-tab-12x12@2x.png"; import ErrorIcon from "../../../../../assets/images/icon-error-16x16@2x.png"; const baseClass = "select-query-modal"; const onQueryHostCustom = (host, dispatch) => { return dispatch( push({ pathname: PATHS.NEW_QUERY, query: { host_ids: [host.id] }, }) ); }; const onQueryHostSaved = (host, selectedQuery, dispatch) => { return dispatch( push({ pathname: PATHS.EDIT_QUERY(selectedQuery), query: { host_ids: [host.id] }, }) ); }; const SelectQueryModal = ({ host, onCancel, dispatch, queries, queryErrors, isOnlyObserver, }) => { let queriesAvailableToRun = queries; if (isOnlyObserver) { queriesAvailableToRun = queries.filter( (query) => query.observer_can_run === true ); } const [queriesFilter, setQueriesFilter] = useState(""); const getQueries = () => { if (!queriesFilter) { return queriesAvailableToRun; } const lowerQueryFilter = queriesFilter.toLowerCase(); return filter(queriesAvailableToRun, (query) => { if (!query.name) { return false; } const lowerQueryName = query.name.toLowerCase(); return includes(lowerQueryName, lowerQueryFilter); }); }; const customQueryButton = () => { return ( ); }; const onFilterQueries = (event) => { setQueriesFilter(event); return false; }; const queriesFiltered = getQueries(); const queriesCount = queriesFiltered.length; const results = () => { if (queryErrors) { return (