From d2fc5a6202fef5c261076fb9930e53e9cc6a7f8f Mon Sep 17 00:00:00 2001 From: Nico Vermaas <vermaas@astron.nl> Date: Mon, 1 Nov 2021 15:54:39 +0100 Subject: [PATCH] adding multiple archive query (under construction) --- src/components/query/QueryCatalogs.js | 1 + src/components/query/QueryMultipleArchives.js | 46 +++++++------------ src/utils/form/parseMultipleArchivesForm.js | 1 + 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/components/query/QueryCatalogs.js b/src/components/query/QueryCatalogs.js index bc5a17e..6bd0909 100644 --- a/src/components/query/QueryCatalogs.js +++ b/src/components/query/QueryCatalogs.js @@ -70,6 +70,7 @@ export default function QueryCatalogs() { queryMap.clear(); const gui = config.query_schema.name; + const queries = parseQueryForm(gui, formData); queries.forEach((query) => { queryMap.set(query.catalog, { diff --git a/src/components/query/QueryMultipleArchives.js b/src/components/query/QueryMultipleArchives.js index b4405f9..99f06a1 100644 --- a/src/components/query/QueryMultipleArchives.js +++ b/src/components/query/QueryMultipleArchives.js @@ -140,8 +140,7 @@ export default function QueryMultipleArchives() { console.log('status = '+status) } - // set ConfigName for archive - // load the GUI for this configuration + // set ConfigName for multi_archive query useEffect(() => { setConfigName("multiple_archives"); @@ -154,6 +153,7 @@ export default function QueryMultipleArchives() { }, []); + // execute when the form useEffect(() => { if (status === CREATE_QUERIES) { @@ -164,7 +164,6 @@ export default function QueryMultipleArchives() { fetchRunQueries() } - //alert('archiveQueries: ',archiveQueries) }, [queryStep, formData]); @@ -182,6 +181,14 @@ export default function QueryMultipleArchives() { setQueryStep('run-query') } + // submit the form, and create the queries based on the parameters + function submitFormData(formData) { + setFormData(formData) + + setStatus(CREATE_QUERIES) + setQueryStep('create-query') + } + // https://react-jsonschema-form.readthedocs.io/en/latest/advanced-customization/custom-templates/#objectfieldtemplate function myObjectFieldTemplate({ TitleField, properties, title, description }) { return ( @@ -201,30 +208,11 @@ export default function QueryMultipleArchives() { // RENDER if (!config) return <LoadingSpinner /> + // load the GUI for this configuration const uiSchemaProp = config.ui_schema ? { uiSchema: config.ui_schema } : {}; - console.log("Form Data:", formData); - //alert('render: '+status) - - if (status === CREATE_QUERIES) { - //fetchCreateQueries() - } - - if (status === RUN_SELECTED_QUERIES) { - //fetchRunQueries() - } - - - let renderForm - if (status === QUERY_FORM) { - renderForm=<h1>Render Form</h1> - } - // the logic to construct the GUI - let renderCreateQueryButton - //if (status === CREATE_QUERIES) { - renderCreateQueryButton = <Button type="submit" onClick={() => {handleCreateQueries();}}>{getQueryIcon()} Create Queries</Button> - //} + let renderCreateQueryButton = <Button type="submit" onClick={() => {handleCreateQueries();}}>{getQueryIcon()} Create Queries</Button> let renderRunQueryButton if (status === QUERIES_SELECTED) { @@ -249,18 +237,18 @@ export default function QueryMultipleArchives() { return ( <Container fluid> - <h2>Status - {status}</h2> - {renderForm} + <Form schema={config.query_schema} ObjectFieldTemplate={myObjectFieldTemplate} formData={formData} - onSubmit={({ formData }) => setFormData(formData)} + onSubmit={({ formData }) => submitFormData(formData)} {...uiSchemaProp} > - {renderCreateQueryButton} - {renderRunQueryButton} + </Form> + {renderCreateQueryButton} + {renderRunQueryButton} {renderCreateQueryResults} {renderQueryResults} </Container> diff --git a/src/utils/form/parseMultipleArchivesForm.js b/src/utils/form/parseMultipleArchivesForm.js index aed34e1..6dc536a 100644 --- a/src/utils/form/parseMultipleArchivesForm.js +++ b/src/utils/form/parseMultipleArchivesForm.js @@ -8,6 +8,7 @@ export default function parseMultipleArchivesForm(formData) { let base_query = ""; let formInput = Object.entries(formData); + // construct the base esap_query by iterating over all the fields in the form for (let [key, value] of formInput) { base_query += `${`${base_query}` ? "&" : ""}` + key + "=" + value; -- GitLab