diff --git a/src/components/DIRAC.js b/src/components/DIRAC.js new file mode 100644 index 0000000000000000000000000000000000000000..6ab4fe56b54f42df6bd3b8bcf3371d40ed406d47 --- /dev/null +++ b/src/components/DIRAC.js @@ -0,0 +1,13 @@ +import React from "react"; + +export default function DIRAC() { + return ( + <div className="embed-responsive embed-responsive-16by9"> + <iframe + title="dirac" + className="embed-responsive-item" + allowFullScreen + ></iframe> + </div> + ); +} diff --git a/src/components/query/QueryCatalogs.js b/src/components/query/QueryCatalogs.js index bc5a17e5d6e40e11b2d9711329406b3f09daacb5..43b6bd51673b14d828f035dc84bb8dbc471ca960 100644 --- a/src/components/query/QueryCatalogs.js +++ b/src/components/query/QueryCatalogs.js @@ -39,6 +39,9 @@ export default function QueryCatalogs() { case "esap_zenodo": setConfigName("esap_zenodo"); break; + case "esap_dirac": + setConfigName("esap_dirac"); + break; case "astron_vo": setConfigName("astron_vo"); break; diff --git a/src/components/services/query_results/DIRACResults.js b/src/components/services/query_results/DIRACResults.js new file mode 100644 index 0000000000000000000000000000000000000000..4a55c7cc514371d80da114802e53f1dc6dbc7877 --- /dev/null +++ b/src/components/services/query_results/DIRACResults.js @@ -0,0 +1,48 @@ +import React, { useContext } from "react"; +import { Table, Alert, Form } from "react-bootstrap"; +import { QueryContext } from "../../../contexts/QueryContext"; +import LoadingSpinner from "../../LoadingSpinner"; +import Paginate from "../../Paginate"; +import AddToBasket from "../../basket/AddToBasketCheckBox"; + +export default function DIRACResults({ catalog }) { + const context = useContext(QueryContext); + const { queryMap, page, setPage } = context; + const regex = /(<([^>]+)>)/ig; + + if (!context.queryMap) return null; + + if (context.queryMap.get(catalog).status === "fetched") { + if (context.queryMap.get(catalog).length === 0) + return <Alert variant="warning">No matching results found!</Alert>; + else if (catalog === "dirac") { + const diracResults = queryMap.get("dirac").map((hits, counter) => ( +/* + <> + <br/> + <br/> + <h4><a href={hits.links.latest_html} target="_blank"> {hits.metadata.title.replaceAll(regex, '')} </a></h4> + <a href={hits.links.conceptdoi} target="_blank"> <img src={hits.links.badge} alt="DOI"/> </a> + <br/> + {hits.metadata.description.replaceAll(regex, '').substring(0,200)}... + </> +*/ +<> +</> + )); + + return ( + + <> + {diracResults} + </> + + ); + + } + } + else { + return <LoadingSpinner />; + } +} + diff --git a/src/components/services/query_results/QueryResults.js b/src/components/services/query_results/QueryResults.js index 79c2e3529ed97674df5fa37b9043d0a1d64c5c36..c98f36f9273f87510c547a01b5b029742f9f53f1 100644 --- a/src/components/services/query_results/QueryResults.js +++ b/src/components/services/query_results/QueryResults.js @@ -6,6 +6,7 @@ import VORegListResults from "./VORegListResults"; import LOFARResults from "./LOFARResults"; import RucioResults from "./RucioResults"; import ZenodoResults from "./ZenodoResults"; +import DIRACResults from "./DIRACResults"; import SampResults from "./SampResults"; export default function QueryResults({ catalog }) { @@ -26,6 +27,8 @@ export default function QueryResults({ catalog }) { return <RucioResults catalog={catalog} />; case "zenodo": return <ZenodoResults catalog={catalog} />; + case "dirac": + return <DIRACResults catalog={catalog} />; case "samp": return <SampResults catalog={catalog} />; default: diff --git a/src/utils/form/parseDIRACForm.js b/src/utils/form/parseDIRACForm.js new file mode 100644 index 0000000000000000000000000000000000000000..7440fbe9fa276649a2142f8ba83dac0d721c8acb --- /dev/null +++ b/src/utils/form/parseDIRACForm.js @@ -0,0 +1,21 @@ +export default function parseDIRACForm(formData) { + let formInput = Object.entries(formData); + + let query = ""; + + for (let [key, value] of formInput) { + query += `${`${query}` ? "&" : ""}` + key + "=" + value; + } + + let esapquery = [ + query, + "archive_uri=esap_dirac", + `catalog=dirac`, + ].join("&"); + + console.log("DIRAC Job Submission (helloworld):", query); + return [{ + catalog: "dirac", + esapquery: esapquery + }]; +} diff --git a/src/utils/form/parseQueryForm.js b/src/utils/form/parseQueryForm.js index 5e94a0e40eccacd584d4afab05cae3edadff1948..5b524136a8ba4c675f167baa15cb1657a04cc6f8 100644 --- a/src/utils/form/parseQueryForm.js +++ b/src/utils/form/parseQueryForm.js @@ -6,6 +6,7 @@ import parseApertifForm from "./parseApertifForm"; import parseASTRONVOForm from "./parseASTRONVOForm"; import parseRucioForm from "./parseRucioForm"; import parseZenodoForm from "./parseZenodoForm"; +import parseDIRACForm from "./parseDIRACForm"; export default function parseQueryForm(gui, formData) { switch (gui) { @@ -25,6 +26,8 @@ export default function parseQueryForm(gui, formData) { return parseRucioForm(formData); case "zenodo": return parseZenodoForm(formData); + case "dirac": + return parseDIRACForm(formData); default: return null; }