Skip to content
Snippets Groups Projects
Commit 949127cd authored by Zheng Meyer's avatar Zheng Meyer
Browse files

add query selected registry button

parent 456c51ae
No related branches found
No related tags found
1 merge request!3Esap gui dev
import React, { useContext, useEffect } from "react";
import { useParams } from "react-router-dom";
import axios from "axios";
import { Container, Button } from "react-bootstrap";
import { Container, Button, Row, Col } from "react-bootstrap";
import Form from "react-jsonschema-form";
import { GlobalContext } from "../../contexts/GlobalContext";
import { QueryContext } from "../../contexts/QueryContext";
import QueryResults from "./QueryResults";
import parseQueryForm from "../../utils/form/parseQueryForm";
import { IVOAContext } from "../../contexts/IVOAContext";
export default function QueryIVOARegistry() {
// queryMap is a map of dictionaries, where each dictionary consists of
......@@ -16,6 +17,7 @@ export default function QueryIVOARegistry() {
// "results": null}
const { queryMap, formData, setFormData } = useContext(QueryContext);
const { config, api_host, setConfigName } = useContext(GlobalContext);
const { selectedRegistry } = useContext(IVOAContext);
const { uri } = useParams();
console.log("uri:", uri);
......@@ -59,6 +61,7 @@ export default function QueryIVOARegistry() {
queries.forEach((query) => {
queryMap.set(query.catalog, {
catalog: query.catalog,
service_type: query.service_type,
esapquery: query.esapquery,
status: "fetching",
results: null,
......@@ -69,6 +72,7 @@ export default function QueryIVOARegistry() {
.then((queryResponse) => {
queryMap.set(query.catalog, {
catalog: query.catalog,
service_type: query.service_type,
esapquery: query.esapquery,
status: "fetched",
results: queryResponse.data,
......@@ -77,6 +81,7 @@ export default function QueryIVOARegistry() {
.catch(() => {
queryMap.set(query.catalog, {
catalog: query.catalog,
service_type: query.service_type,
esapquery: query.esapquery,
status: "error",
results: null,
......@@ -135,7 +140,18 @@ export default function QueryIVOARegistry() {
];
return (
<div key={catalog} className="mt-3">
<h4>List of registries</h4>
<Row>
<Col>
<h4>List of registries</h4>
</Col>
<Col>
{selectedRegistry.length === 0 ? (
<></>
) : (
<Button type="submit">Query selected registry</Button>
)}
</Col>
</Row>
<QueryResults catalog={catalog} />
</div>
);
......
......@@ -7,12 +7,18 @@ import { IVOAContext } from "../../contexts/IVOAContext";
export default function VORegistryResults({ catalog }) {
const { queryMap } = useContext(QueryContext);
const { registryList, add, remove } = useContext(IVOAContext);
const {
selectedRegistry,
addRegistry,
removeRegistry,
registryList,
setRegistryList,
} = useContext(IVOAContext);
// const [checkAll, setCheckAll] = useState("");
useEffect(() => {
console.log("RegistryList:", registryList);
}, [registryList]);
console.log("Selected Registry:", selectedRegistry);
}, [selectedRegistry]);
// useEffect(() => {
// console.log("checkAll:", checkAll);
......@@ -24,7 +30,10 @@ export default function VORegistryResults({ catalog }) {
if (queryMap.get(catalog).status === "fetched") {
if (queryMap.get(catalog).results.results.length === 0)
return <Alert variant="warning">No matching results found!</Alert>;
console.log("VO Registry results:", queryMap.get(catalog).results.results);
setRegistryList(queryMap.get(catalog).results.results);
console.log("Registry List:", registryList);
return (
<>
......@@ -40,12 +49,12 @@ export default function VORegistryResults({ catalog }) {
// ? queryMap
// .get(catalog)
// .results.results.map((result) => {
// add(result.access_url);
// addRegistry(result.access_url);
// })
// : queryMap
// .get(catalog)
// .results.results.map((result) => {
// remove(result.access_url);
// removeRegistry(result.access_url);
// });
// }}
/>
......@@ -70,8 +79,8 @@ export default function VORegistryResults({ catalog }) {
onChange={(event) => {
console.log(event.target.checked);
event.target.checked
? add(result.access_url)
: remove(result.access_url);
? addRegistry(result.access_url)
: removeRegistry(result.access_url);
}}
/>
</InputGroup>
......@@ -87,7 +96,7 @@ export default function VORegistryResults({ catalog }) {
})}
</tbody>
</Table>
<Paginate />
{/* <Paginate /> */}
</>
);
} else {
......
import React, { createContext, useState } from "react";
import useMap from "../hooks/useMap";
export const IVOAContext = createContext();
export function IVOAContextProvider({ children }) {
const [selectedRegistry, setSelectedRegistry] = useState([]);
const [registryList, setRegistryList] = useState([]);
function handleAddRegistry(access_url) {
setRegistryList([...registryList, access_url]);
setSelectedRegistry([...selectedRegistry, access_url]);
}
function handleRemoveRegistry(access_url) {
const copy = [...registryList];
const copy = [...selectedRegistry];
const index = copy.findIndex((url) => url === access_url);
copy.splice(index, 1);
setRegistryList(copy);
setSelectedRegistry(copy);
}
return (
<IVOAContext.Provider
value={{
selectedRegistry,
addRegistry: handleAddRegistry,
removeRegistry: handleRemoveRegistry,
registryList,
add: handleAddRegistry,
remove: handleRemoveRegistry,
setRegistryList,
}}
>
{children}
......
......@@ -22,12 +22,14 @@ export default function ParseIVOAForm(formData) {
// "status": "null|fetching|fetched",
// "results": null}
let catalog = formInput.find(([key]) => key === "catalog")[1];
let service_type = formInput.find(([key]) => key === "service_type")[1];
let esapquery =
"get-services/?" + query + `${`${query}` ? "&" : ""}dataset_uri=` + catalog;
queries.push({
catalog: catalog,
service_type: service_type,
esapquery: esapquery,
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment