import React, { useState, useCallback } from "react";
import { filter, includes } from "lodash";
import { IQuery } from "interfaces/query";
import Button from "components/buttons/Button";
import Modal from "components/Modal";
// @ts-ignore
import InputField from "components/forms/fields/InputField";
import DataError from "components/DataError";
export interface ISelectQueryModalProps {
onCancel: () => void;
onQueryHostCustom: () => void;
onQueryHostSaved: (selectedQuery: IQuery) => void;
queries: IQuery[] | [];
queryErrors: Error | null;
isOnlyObserver: boolean | undefined;
}
const baseClass = "select-query-modal";
const SelectQueryModal = ({
onCancel,
onQueryHostCustom,
onQueryHostSaved,
queries,
queryErrors,
isOnlyObserver,
}: ISelectQueryModalProps): JSX.Element => {
let queriesAvailableToRun = queries;
const [queriesFilter, setQueriesFilter] = useState("");
if (isOnlyObserver) {
queriesAvailableToRun = queries.filter(
(query) => query.observer_can_run === true
);
}
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 onFilterQueries = useCallback(
(filterString: string): void => {
setQueriesFilter(filterString);
},
[setQueriesFilter]
);
const queriesFiltered = getQueries();
const queriesCount = queriesFiltered.length;
const customQueryButton = () => {
return (
);
};
const results = (): JSX.Element => {
if (queryErrors) {
return