diff --git a/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/QueryView.tsx b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/QueryView.tsx index 8ce26b747..2c740857a 100644 --- a/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/QueryView.tsx +++ b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/QueryView.tsx @@ -11,6 +11,7 @@ import Icon from "styles/Icons"; import { Box } from "@mui/material"; import QueryDataGrid from "components/ContentViews/QueryDataGrid"; import { QueryEditorTypes } from "components/ContentViews/QueryView/components/QueryOptions/QueryOptions"; +import ResultMeta from "components/ContentViews/QueryView/components/ResultMeta"; import QueryOptions from "./components/QueryOptions"; const QueryView = (): React.ReactElement => { @@ -103,9 +104,16 @@ const QueryView = (): React.ReactElement => { /> )} -
+ + -
+ ); diff --git a/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/ResultMeta.tsx b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/ResultMeta.tsx new file mode 100644 index 000000000..362d77937 --- /dev/null +++ b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/ResultMeta.tsx @@ -0,0 +1,42 @@ +import { Typography } from "@equinor/eds-core-react"; +import { QueryContext } from "contexts/queryContext"; +import { XMLParser } from "fast-xml-parser"; +import { FC, useContext } from "react"; +import styled from "styled-components"; + +const ResultMeta: FC = () => { + const { + queryState: { queries, tabIndex } + } = useContext(QueryContext); + + const { result } = queries[tabIndex]; + const parser = new XMLParser(); + const resultObj = parser.parse(result); + const templateObject = Object.keys(resultObj)?.[0]?.slice(0, -1); + const resultCount = countItemsAtDepth2(resultObj, templateObject); + + return ( + + {resultCount > 0 && ( + {`Number of ${templateObject}s: ${resultCount}`} + )} + + ); +}; + +const Layout = styled.div` + padding-left: 46px; +`; + +function countItemsAtDepth2(obj: any, templateObject: string) { + try { + const depth1object = Object.values(obj)[0] as any; + const depth2objects = depth1object[templateObject]; + const depth2length = depth2objects.length; + return depth2length; + } catch { + return null; + } +} + +export default ResultMeta; diff --git a/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/index.ts b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/index.ts new file mode 100644 index 000000000..25e8f3dec --- /dev/null +++ b/Src/WitsmlExplorer.Frontend/components/ContentViews/QueryView/components/ResultMeta/index.ts @@ -0,0 +1 @@ +export { default } from "./ResultMeta";