diff --git a/src/components/FitsViewer.js b/src/components/FitsViewer.js new file mode 100644 index 0000000000000000000000000000000000000000..75a69d8963050adcf0ca540cb66b1572b1fbf2a5 --- /dev/null +++ b/src/components/FitsViewer.js @@ -0,0 +1,20 @@ +import React, { useContext } from "react"; +import { QueryContext } from "../contexts/QueryContext"; + +export default function FitsViewer() { + const { fits } = useContext(QueryContext) + const url = "https://js9.si.edu/js9/js9.html?url="+JSON.parse(JSON.stringify(fits))+"&colormap=viridis&scale=log" + + console.log(fits); + console.log("fits url: ", url); + + return ( + <div class="embed-responsive embed-responsive-16by9"> + <iframe + class="embed-responsive-item" + src={url} + allowfullscreen + ></iframe> + </div> + ); +} diff --git a/src/components/query/VOServiceResults.js b/src/components/query/VOServiceResults.js index 5617ff91dc7a2720e4fcce1f6c0720459fd46233..2aa93cc13ce885c4f567257aecf7cdabbfc9697f 100644 --- a/src/components/query/VOServiceResults.js +++ b/src/components/query/VOServiceResults.js @@ -1,11 +1,13 @@ import React, { useContext } from "react"; -import { Alert, Table } from "react-bootstrap"; +import { Redirect, useHistory } from "react-router-dom"; +import { Alert, Table, Button } from "react-bootstrap"; import { QueryContext } from "../../contexts/QueryContext"; import LoadingSpinner from "../LoadingSpinner"; import Paginate from "../Paginate"; export default function VORegistryResults({ catalog }) { - const { queryMap, page, setPage } = useContext(QueryContext); + const { queryMap, page, setPage, setFits } = useContext(QueryContext); + const history = useHistory(); if (!queryMap.get(catalog)) return null; console.log("VO service queryMap:", queryMap.get(catalog)); @@ -46,6 +48,18 @@ export default function VORegistryResults({ catalog }) { {result.result} </a> </td> + <td> + {/* if results is in .fits format + display it with js9 */} + {(result.result.endsWith('.fits')) && + <Button + value={result.result} + onClick={(event) => { + setFits(event.target.value); + history.push('/fitsviewer'); + }} + >View fits</Button>} + </td> </tr> ); })} diff --git a/src/contexts/QueryContext.js b/src/contexts/QueryContext.js index 057b2313cc14ca53d8c251f830228441daae2117..a2a38ee59ab9e56e6ee49a305149055c63df216c 100644 --- a/src/contexts/QueryContext.js +++ b/src/contexts/QueryContext.js @@ -7,6 +7,7 @@ export function QueryContextProvider({ children }) { const queryMap = useMap(); const [formData, setFormData] = useState(); const [page, setPage] = useState(1); + const [fits, setFits] = useState("https://uilennest.net/astrobase/data/191231001/3836665.fits"); // const [category, setCategory] = useState(); // const [level, setLevel] = useState(); @@ -18,6 +19,8 @@ export function QueryContextProvider({ children }) { queryMap, formData, setFormData, + fits, + setFits, }} > {children} diff --git a/src/routes/Routes.js b/src/routes/Routes.js index fc77e31c2912295350f16f1254404f6f01c8ae3c..ab5c04b9795aa146dc0a54304eb50f5d7bef3289 100644 --- a/src/routes/Routes.js +++ b/src/routes/Routes.js @@ -11,6 +11,7 @@ import { QueryContextProvider } from "../contexts/QueryContext"; import Rucio from "../components/Rucio"; import Interactive from "../components/Interactive"; import { IVOAContextProvider } from "../contexts/IVOAContext"; +import FitsViewer from "../components/FitsViewer"; export default function Routes() { const { config, handleLogin, handleLogout, handleError } = useContext(GlobalContext); @@ -26,29 +27,29 @@ export default function Routes() { <Route exact path="/archives"> <Archives /> </Route> - <Route exact path="/query"> - <QueryContextProvider> - <QueryCatalogs /> - </QueryContextProvider> - </Route> <Route exact path="/rucio"> <Rucio /> </Route> <Route exact path="/interactive"> <Interactive /> </Route> + <Route exact path="/fitsviewer"> + <QueryContextProvider> + <FitsViewer /> + </QueryContextProvider> + </Route> <Route exact path="/login" component={handleLogin} /> <Route exact path="/logout" component={handleLogout} /> <Route exact path="/error" component={handleError} /> <Route exact path="/archives/:uri" component={ArchiveDetails} /> - <Route exact path="/archives/ivoa/query"> + <Route exact path={["/vo-query", "/archives/ivoa/query"]}> <QueryContextProvider> <IVOAContextProvider> <QueryIVOARegistry /> </IVOAContextProvider> </QueryContextProvider> </Route> - <Route exact path="/archives/:uri/query"> + <Route exact path={["/adex-query", "/archives/:uri/query"]}> <QueryContextProvider> <QueryCatalogs /> </QueryContextProvider>