Skip to content
Snippets Groups Projects

merging esap-gui 0.6.2

Merged Nico Vermaas requested to merge esap-gui-dev into master
32 files
+ 447
219
Compare changes
  • Side-by-side
  • Inline
Files
32
@@ -3,63 +3,17 @@ import {Button } from 'react-bootstrap'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faShoppingCart } from '@fortawesome/free-solid-svg-icons'
import { get_backend_url } from '../../utils/web'
import { RunQuery } from '../../utils/query'
import { useGlobalReducer } from '../../Store';
import { useFetchRunQuery } from '../../hooks/useFetchRunQuery';
import { SET_DATASETS_TO_QUERY } from '../../reducers/GlobalStateReducer';
// show a clickable icon
export default function AddToBasketButton(props) {
// custom hooks
const [my_state, my_dispatch] = useGlobalReducer()
const fetchRunQuery = useFetchRunQuery(get_backend_url("/esap-api/run-query"), {})
const runQuery = (input_query) => {
let query = input_query.query
// if this is a VO query, then cut off everything but the ADQL itself so that the backend can parse it.
if (input_query.esap_service.toUpperCase()==='VO') {
//let query = input_query.query
let s = query.split('&QUERY=')
query = s[1]
}
let url = get_backend_url("/esap-api/run-query") + "?dataset_uri=" + input_query.dataset + "&query=" + query
// encode it
let s = encodeURI(url)
fetchRunQuery.fetchData(s, input_query.dataset)
}
// run all the queries in the selected list of queries
const runQueries = (queries) => {
let datasets_to_query = []
for (var i=0; i< queries.length; i++) {
datasets_to_query.push(queries[i].dataset)
}
// store the list of datasets to query. This can later be used as keys to iterate over the results
my_dispatch({type: SET_DATASETS_TO_QUERY, datasets_to_query: datasets_to_query})
// run the queries by firing a asyc request per query
queries.map(query => runQuery(query))
}
// only show the button when there is content
if (!props) {
return null
}
return (
<Button variant="outline-primary" onClick={() => runQueries(props.queries)}> <FontAwesomeIcon icon={faShoppingCart} /> Add To Basket</Button>
<Button variant="outline-primary" > <FontAwesomeIcon icon={faShoppingCart} /> Add To Basket</Button>
);
}
Loading