diff --git a/src/components/CONCORDIA.js b/src/components/CONCORDIA.js new file mode 100644 index 0000000000000000000000000000000000000000..a8783542665e262ed55ce2c75acb54af55fd98a4 --- /dev/null +++ b/src/components/CONCORDIA.js @@ -0,0 +1,13 @@ +import React from "react"; + +export default function CONCORDIA() { + return ( + <div className="embed-responsive embed-responsive-16by9"> + <iframe + title="concordia" + className="embed-responsive-item" + allowFullScreen + ></iframe> + </div> + ); +} diff --git a/src/components/query/QueryCatalogs.js b/src/components/query/QueryCatalogs.js index 6bd0909f9b4caa37b175ed5c8ab63dc3bf00cc2c..1a5833929cec95b27fe1a84d6c48b86000114527 100644 --- a/src/components/query/QueryCatalogs.js +++ b/src/components/query/QueryCatalogs.js @@ -48,6 +48,9 @@ export default function QueryCatalogs() { case "ivoa": setConfigName("esap_ivoa"); break; + case "esap_concordia": + setConfigName("esap_concordia"); + break; default: break; diff --git a/src/components/services/query_results/CONCORDIAResults.js b/src/components/services/query_results/CONCORDIAResults.js new file mode 100644 index 0000000000000000000000000000000000000000..61cf088a7007accf873c878b47999d7e1029570c --- /dev/null +++ b/src/components/services/query_results/CONCORDIAResults.js @@ -0,0 +1,50 @@ +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 === "concordia") { + const concordiaResults = queryMap.get("concordia").results.results.map((hits, counter) => ( + + <> + Job submitted: + <br/> + JobID: {hits.JobID} + <br/> + Status: {hits.Status} + <br/> + Minor Status: {hits.MinorStatus} + <br/> + Site: {hits.Site} + </> + + + )); + + return ( + + <> + {concordiaResults} + </> + + ); + + } + } + else { + return <LoadingSpinner />; + } +} + diff --git a/src/components/services/query_results/QueryResults.js b/src/components/services/query_results/QueryResults.js index 79c2e3529ed97674df5fa37b9043d0a1d64c5c36..ed8c7ecb702c14f48e6077c4b7ab5c2033d1758f 100644 --- a/src/components/services/query_results/QueryResults.js +++ b/src/components/services/query_results/QueryResults.js @@ -7,6 +7,7 @@ import LOFARResults from "./LOFARResults"; import RucioResults from "./RucioResults"; import ZenodoResults from "./ZenodoResults"; import SampResults from "./SampResults"; +import CONCORDIAResults from "./CONCORDIAResults"; export default function QueryResults({ catalog }) { switch (catalog) { @@ -26,6 +27,8 @@ export default function QueryResults({ catalog }) { return <RucioResults catalog={catalog} />; case "zenodo": return <ZenodoResults catalog={catalog} />; + case "concordia": + return <CONCORDIAResults catalog={catalog} />; case "samp": return <SampResults catalog={catalog} />; default: diff --git a/src/utils/form/parseCONCORDIAForm.js b/src/utils/form/parseCONCORDIAForm.js new file mode 100644 index 0000000000000000000000000000000000000000..4b860e7cd6772a2c78eec319ee8823b6fb9eb663 --- /dev/null +++ b/src/utils/form/parseCONCORDIAForm.js @@ -0,0 +1,21 @@ +export default function parseCONCORDIAForm(formData) { + let formInput = Object.entries(formData); + + let query = ""; + + for (let [key, value] of formInput) { + query += `${`${query}` ? "&" : ""}` + key + "=" + value; + } + + let esapquery = [ + query, + "archive_uri=esap_concordia", + `catalog=concordia`, + ].join("&"); + + console.log("CONCORDIA Job Submission (helloworld):", query); + return [{ + catalog: "concordia", + esapquery: esapquery + }]; +} diff --git a/src/utils/form/parseQueryForm.js b/src/utils/form/parseQueryForm.js index 9a8b196c84180601e0040c99c96bd6d7378d7310..d2cf0892219975cbef5b45c09ce45ef42d42507c 100644 --- a/src/utils/form/parseQueryForm.js +++ b/src/utils/form/parseQueryForm.js @@ -7,6 +7,7 @@ import parseASTRONVOForm from "./parseASTRONVOForm"; import parseRucioForm from "./parseRucioForm"; import parseZenodoForm from "./parseZenodoForm"; import parseMultipleArchivesForm from "./parseMultipleArchivesForm"; +import parseCONCORDIAForm from "./parseCONCORDIAForm"; export default function parseQueryForm(gui, formData) { switch (gui) { @@ -28,6 +29,8 @@ export default function parseQueryForm(gui, formData) { return parseZenodoForm(formData); case "multiple_archives": return parseMultipleArchivesForm(formData); + case "concordia": + return parseCONCORDIAForm(formData); default: return null; }