import React from "react";
import {
AccordionItem,
AccordionHeader,
AccordionPanel,
Alert,
Box,
ButtonGroup,
css,
Flex,
Text,
useTheme,
useColorMode
} from "@chakra-ui/core";
import styled from "@emotion/styled";
import useAxios from "axios-hooks";
import strReplace from "react-string-replace";
import useConfig from "~/components/HyperglassProvider";
import CopyButton from "~/components/CopyButton";
import RequeryButton from "~/components/RequeryButton";
import ResultHeader from "~/components/ResultHeader";
const FormattedError = ({ keywords, message }) => {
const patternStr = `(${keywords.join("|")})`;
const pattern = new RegExp(patternStr, "gi");
const errorFmt = strReplace(message, pattern, match => (
{match}
));
return {errorFmt};
};
const AccordionHeaderWrapper = styled(Flex)`
justify-content: space-between;
&:hover {
background-color: ${props => props.hoverBg};
}
&:focus {
box-shadow: "outline";
}
`;
const Result = React.forwardRef(
({ device, timeout, queryLocation, queryType, queryVrf, queryTarget }, ref) => {
const config = useConfig();
const theme = useTheme();
const { colorMode } = useColorMode();
const bg = { dark: theme.colors.gray[800], light: theme.colors.blackAlpha[100] };
const color = { dark: theme.colors.white, light: theme.colors.black };
const selectionBg = { dark: theme.colors.white, light: theme.colors.black };
const selectionColor = { dark: theme.colors.black, light: theme.colors.white };
const [{ data, loading, error }, refetch] = useAxios({
url: "/api/query/",
method: "post",
data: {
query_location: queryLocation,
query_type: queryType,
query_vrf: queryVrf,
query_target: queryTarget
},
timeout: timeout
});
const cleanOutput =
data &&
data.output
.split("\\n")
.join("\n")
.replace(/\n\n/g, "");
const errorKw = (error && error.response?.data?.keywords) || [];
const errorMsg =
(error && error.response?.data?.output) ||
(error && error.message) ||
config.messages.general;
return (
{data && (
{cleanOutput}
)}
{error && (
)}
);
}
);
Result.displayName = "HyperglassQueryResult";
export default Result;