Skip to content
Snippets Groups Projects
Select Git revision
  • a795a90d8c45cd71b80cf7d88e53a95a5bf61c58
  • main default protected
  • 65_async_query
  • 169_codemeta
  • issue/152_cleaning_up
  • adex-main protected
  • sdc380-aladin-cone-search
  • sdc-222_multi_archive_query_review
  • 69_add_diracIAM
  • dev-nico
  • dev-dirac
  • acceptance
  • dev-zooniverse
13 results

ApertifResults.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ApertifResults.js 4.27 KiB
    import React, { useContext, useState, useEffect } from "react";
    import { Table, Alert } from "react-bootstrap";
    import axios from "axios";
    import { QueryContext } from "../../contexts/QueryContext";
    import { GlobalContext } from "../../contexts/GlobalContext";
    import LoadingSpinner from "../LoadingSpinner";
    import Paginate from "../Paginate";
    import HandlePreview from "./HandlePreview";
    import Preview from "./Preview";
    
    export default function ApertifResults({ catalog }) {
      const { queryMap, preview } = useContext(QueryContext);
      const { api_host } = useContext(GlobalContext);
      const [page, setPage] = useState(queryMap.get(catalog).page);
    
      useEffect(() => {
        queryMap.set(catalog, {
          catalog: catalog,
          page: page,
          esapquery: queryMap.get(catalog).esapquery + `&page=${page}`,
        });
        const url = api_host + "query/query/?" + queryMap.get(catalog).esapquery;
        axios
          .get(url)
          .then((queryResponse) => {
            queryMap.set(catalog, {
              catalog: catalog,
              esapquery: queryMap.get(catalog).esapquery,
              page: page,
              status: "fetched",
              results: queryResponse.data,
            });
          })
          .catch(() => {
            queryMap.set(catalog, {
              catalog: catalog,
              esapquery: queryMap.get(catalog).esapquery,
              page: page,
              status: "error",
              results: null,
            });
          });
      }, [page])
    
      if (!queryMap) return null;
      if (queryMap.get(catalog).status === "fetched") {
        if (!("results" in queryMap.get(catalog).results))
          return <Alert variant="warning">{queryMap.get(catalog).results}</Alert>;
        if (queryMap.get(catalog).results.results.length === 0)
          return <Alert variant="warning">No matching results found!</Alert>;
    
        const numPages = queryMap.get(catalog).results.pages;
        console.log("Query results:", queryMap.get(catalog).results.results);
        return (
          <>
            <Paginate
              getNewPage={(args) => {
                return args.target ? setPage(parseInt(args.target.text)) : null;
              }}
              currentPage={queryMap.get(catalog).page}
              numAdjacent={3}
              numPages={numPages}
            />
            <Table className="mt-3" responsive>
              <thead>
                <tr className="bg-light">
                  {/* <th>
                  <InputGroup>
                    <InputGroup.Checkbox />
                  </InputGroup>