Skip to content
Snippets Groups Projects
Commit df55c956 authored by Nico Vermaas's avatar Nico Vermaas
Browse files

Merge branch '64_multiple_archive_query' into 'master'

64 multiple archive query

See merge request astron-sdc/esap-gui!79
parents 4d718cf6 805eaf50
No related branches found
No related tags found
1 merge request!7964 multiple archive query
Pipeline #20855 passed
...@@ -22,18 +22,39 @@ import LoadingSpinner from "../LoadingSpinner"; ...@@ -22,18 +22,39 @@ import LoadingSpinner from "../LoadingSpinner";
export default function QueryMultipleArchives() { export default function QueryMultipleArchives() {
const { api_host, datasets, getDataset } = useContext(GlobalContext); const { api_host } = useContext(GlobalContext);
const { config, setConfigName, defaultConf, formData, setFormData } = useContext(QueryContext); const { config, setConfigName, defaultConf, formData, setFormData } = useContext(QueryContext);
const { const {
queryStep, setQueryStep,
selectedDatasets, setSelectedDatasets, selectedDatasets, setSelectedDatasets,
availableDatasets, setAvailableDatasets, availableDatasets, setAvailableDatasets,
selectedQueries, setSelectedQueries,
queryResults, setQueryResults, queryResults, setQueryResults,
status, setStatus } = useContext(MAQContext); status, setStatus } = useContext(MAQContext);
const maqContext = useContext(MAQContext); const maqContext = useContext(MAQContext);
// set confiugration for multi_archive query, execute once
useEffect(() => {
setConfigName("multiple_archives");
return () => {
console.log("cleaned up");
setFormData();
setConfigName(defaultConf);
};
}, []);
// execute when the status changes
useEffect(() => {
if (status === PREPARE_QUERIES) {
prepareQueries(config)
}
if (status === RUN_SELECTED_QUERIES) {
fetchRunQueries()
}
}, [status]);
// read from the config object which datasets should be queried // read from the config object which datasets should be queried
function prepareQueries(config) { function prepareQueries(config) {
...@@ -44,9 +65,8 @@ export default function QueryMultipleArchives() { ...@@ -44,9 +65,8 @@ export default function QueryMultipleArchives() {
if (config.datasets_enabled) { if (config.datasets_enabled) {
// convert the list of uri's to a list of available datasets which have all their properties // convert the list of uri's to a list of available datasets which have all their properties
// nv: 16nov2021, although this works and shows pretty names, it is noticably slow // nv: 16nov2021, although this works and shows pretty names, it is noticably slow when users click checkboxes.
// when users click checkboxes. // available_datasets.forEach((available_dataset) => {
//available_datasets.forEach((available_dataset) => {
// let dataset = getDataset(available_dataset)[0] // let dataset = getDataset(available_dataset)[0]
// available.push(dataset) // available.push(dataset)
//}) //})
...@@ -106,37 +126,12 @@ export default function QueryMultipleArchives() { ...@@ -106,37 +126,12 @@ export default function QueryMultipleArchives() {
}) })
} }
// set ConfigName for multi_archive query, execute once
useEffect(() => {
setConfigName("multiple_archives");
return () => {
console.log("cleaned up");
//queryMap.clear();
setFormData();
setConfigName(defaultConf);
};
}, []);
// execute when the form parameters or the queryStep changes
useEffect(() => {
if (status === PREPARE_QUERIES) {
prepareQueries(config)
}
if (status === RUN_SELECTED_QUERIES) {
fetchRunQueries()
}
}, [queryStep, formData]);
// executed when the 'Run Queries' button is clicked // executed when the 'Run Queries' button is clicked
function handleRunQueriesButton(formData) { function handleRunQueriesButton(formData) {
setFormData(formData) setFormData(formData)
setStatus(RUN_SELECTED_QUERIES) setStatus(RUN_SELECTED_QUERIES)
console.log('handleRunQueries: status = '+status) console.log('handleRunQueries: status = '+status)
setQueryStep('run-query')
} }
// texecuted when the 'Run Queries' button is clicked // texecuted when the 'Run Queries' button is clicked
...@@ -173,6 +168,7 @@ export default function QueryMultipleArchives() { ...@@ -173,6 +168,7 @@ export default function QueryMultipleArchives() {
// This is the 'conditional rendering' logic to construct the GUI based on the current status // This is the 'conditional rendering' logic to construct the GUI based on the current status
// todo: implement later, perhaps in a different way
let renderResolveNameButton let renderResolveNameButton
if (formData) { if (formData) {
renderResolveNameButton = <Button onClick={() => { renderResolveNameButton = <Button onClick={() => {
...@@ -194,6 +190,7 @@ export default function QueryMultipleArchives() { ...@@ -194,6 +190,7 @@ export default function QueryMultipleArchives() {
return ( return (
<Container fluid> <Container fluid>
<AvailableDatasets results={availableDatasets}/> <AvailableDatasets results={availableDatasets}/>
<Form <Form
schema={config.query_schema} schema={config.query_schema}
...@@ -207,6 +204,7 @@ export default function QueryMultipleArchives() { ...@@ -207,6 +204,7 @@ export default function QueryMultipleArchives() {
</Form> </Form>
{renderQueryResults} {renderQueryResults}
</Container> </Container>
); );
......
...@@ -14,18 +14,20 @@ export default function AvailableDatasets(props) { ...@@ -14,18 +14,20 @@ export default function AvailableDatasets(props) {
<Container fluid> <Container fluid>
<Card> <Card>
<Table> <Table>
<thead>
<th>Select Datasets to query</th>
</thead>
<tbody> <tbody>
<tr> <tr>
{props.results.map((result, index) => ( {props.results.map((result, index) => (
<td key={result.dataset}> <td key={result.dataset}>
<td> <Card>
<SelectDatasetCheckBox id={result.dataset} item={result} />
<td><SelectDatasetCheckBox id={result.dataset} item={result} />
{result.dataset} ({result.archive})
</td> </td>
<td>{result.dataset} ({result.archive})</td> </Card>
</td> </td>
))} ))}
</tr> </tr>
</tbody> </tbody>
......
...@@ -68,12 +68,12 @@ export function GlobalContextProvider({ children }) { ...@@ -68,12 +68,12 @@ export function GlobalContextProvider({ children }) {
}, [api_host]); }, [api_host]);
useEffect(() => { useEffect(() => {
axios axios
.get(api_host + "query/configuration?name=navbar") .get(api_host + "query/configuration?name=navbar")
.then((response) => { .then((response) => {
console.log("navbar response", response.data.configuration); console.log("navbar response", response.data.configuration);
setNavbar(response.data.configuration); setNavbar(response.data.configuration);
}); });
}, [api_host]); }, [api_host]);
// Zheng: "!!!!! Still need to look at sessionid and stuff" // Zheng: "!!!!! Still need to look at sessionid and stuff"
......
...@@ -21,18 +21,9 @@ export function MAQContextProvider({ children }) { ...@@ -21,18 +21,9 @@ export function MAQContextProvider({ children }) {
const [datasets, setDatasets] = useState([]); const [datasets, setDatasets] = useState([]);
const [selectedDatasets, setSelectedDatasets] = useState([]); const [selectedDatasets, setSelectedDatasets] = useState([]);
const [availableDatasets, setAvailableDatasets] = useState([]); const [availableDatasets, setAvailableDatasets] = useState([]);
const [queryStep, setQueryStep] = useState("create-queries");
const [archiveQueries, setArchiveQueries] = useState([]);
const [selectedQueries, setSelectedQueries] = useState([]);
const [queryResults, setQueryResults] = useState([]); const [queryResults, setQueryResults] = useState([]);
const [status, setStatus] = useState(PREPARE_QUERIES); const [status, setStatus] = useState(PREPARE_QUERIES);
/*
Multiple Archives Query steps:
1. create-query
2. run-query
*/
function handleAddDataset(access_url) { function handleAddDataset(access_url) {
setSelectedDatasets([...selectedDatasets, access_url]); setSelectedDatasets([...selectedDatasets, access_url]);
} }
...@@ -44,19 +35,6 @@ export function MAQContextProvider({ children }) { ...@@ -44,19 +35,6 @@ export function MAQContextProvider({ children }) {
setSelectedDatasets(copy); setSelectedDatasets(copy);
} }
function handleSelectQuery(query) {
setSelectedQueries([...selectedQueries, query]);
setStatus(QUERIES_SELECTED)
console.log(status)
}
function handleUnselectQuery(query) {
const copy = [...selectedQueries];
const index = copy.findIndex((q) => q === query);
copy.splice(index, 1);
setSelectedQueries(copy);
}
return ( return (
<MAQContext.Provider <MAQContext.Provider
value={{ value={{
...@@ -69,16 +47,8 @@ export function MAQContextProvider({ children }) { ...@@ -69,16 +47,8 @@ export function MAQContextProvider({ children }) {
selectDataset: handleAddDataset, selectDataset: handleAddDataset,
unselectDataset: handleRemoveDataset, unselectDataset: handleRemoveDataset,
queryStep,
setQueryStep,
status, status,
setStatus, setStatus,
selectedQueries,
setSelectedQueries,
selectQuery: handleSelectQuery,
unselectQuery: handleUnselectQuery,
queryResults, queryResults,
setQueryResults, setQueryResults,
}} }}
......
...@@ -100,7 +100,7 @@ export default function Routes() { ...@@ -100,7 +100,7 @@ export default function Routes() {
</Switch> </Switch>
<footer><small>esap-gui version 16 nov 2021 - 8:00</small></footer> <footer><small>esap-gui version 16 nov 2021 - 12:00</small></footer>
</Router> </Router>
); );
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment