diff --git a/src/components/InputTabs.js b/src/components/InputTabs.js
index 33d5619..9b6cbac 100644
--- a/src/components/InputTabs.js
+++ b/src/components/InputTabs.js
@@ -24,7 +24,7 @@ function InputTabs(props) {
return (
{props.name}
-
+
{
dispatch({ type: reducerTypes.rdf, value: rdfData }),
addRdfData: (rdfData) => {
const newIndex = applicationData.rdfData.length; // new Data index based on current context data
- const newData = rdfData // New data object, use InitialData if no data was provided
- ? { index: newIndex, ...rdfData }
- : {
- index: newIndex,
- ...InitialData,
- };
+ // New data object, use InitialData if no data was provided
+ const newData = {
+ index: newIndex,
+ ...(rdfData || InitialData),
+ };
dispatch({ type: reducerTypes.addRdf, value: newData }); // Update state and return new data
return newData;
},
diff --git a/src/data/Data.js b/src/data/Data.js
index e1a5f0d..be64ea7 100644
--- a/src/data/Data.js
+++ b/src/data/Data.js
@@ -77,7 +77,7 @@ export function mkDataTabs(
setData({ ...data, activeSource: value });
}
function handleDataByTextChange(value, y, change) {
- onTextChange(value, y, change);
+ // onTextChange(value, y, change);
setData({ ...data, textArea: value });
}
function handleDataUrlChange(value) {
diff --git a/src/data/DataConvert.js b/src/data/DataConvert.js
index a8fdb5c..c33de1c 100644
--- a/src/data/DataConvert.js
+++ b/src/data/DataConvert.js
@@ -17,30 +17,34 @@ import ResultDataConvert from "../results/ResultDataConvert";
import { mkError } from "../utils/ResponseError";
import {
getDataText,
- InitialData,
mkDataTabs,
paramsFromStateData,
updateStateData
} from "./Data";
function DataConvert(props) {
+ const {
+ rdfData: [ctxData],
+ addRdfData,
+ } = useContext(ApplicationContext);
+
+ const [data, setData] = useState(ctxData || addRdfData());
+ const [dataTargetFormat, setDataTargetFormat] = useState(
+ API.formats.defaultData
+ );
const [result, setResult] = useState("");
+
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
+
const [permalink, setPermalink] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
- const [data, setData] = useState(InitialData);
- const [dataTargetFormat, setDataTargetFormat] = useState(
- API.formats.defaultData
- );
+
const [progressPercent, setProgressPercent] = useState(0);
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user input data from context, if any. Use first item of the data array
- const { rdfData: ctxData } = useContext(ApplicationContext);
-
const url = API.routes.server.dataConvert;
function handleTargetDataFormatChange(value) {
@@ -74,8 +78,6 @@ function DataConvert(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else if (ctxData && typeof ctxData === "object") {
- setData(ctxData);
}
}, [props.location?.search]);
diff --git a/src/data/DataExtract.js b/src/data/DataExtract.js
index 3e99635..06afd81 100644
--- a/src/data/DataExtract.js
+++ b/src/data/DataExtract.js
@@ -17,16 +17,20 @@ import ResultDataExtract from "../results/ResultDataExtract";
import NodeSelector from "../shex/NodeSelector";
import { mkError } from "../utils/ResponseError";
import {
- getDataText,
- InitialData,
- mkDataTabs,
+ getDataText, mkDataTabs,
paramsFromStateData,
updateStateData
} from "./Data";
import { getNodesFromForm } from "./TurtleForm";
function DataExtract(props) {
- const [data, setData] = useState(InitialData);
+ // Recover user input data and query from context, if any. Use first item of the data array
+ const {
+ rdfData: [ctxData],
+ addRdfData,
+ } = useContext(ApplicationContext);
+
+ const [data, setData] = useState(ctxData || addRdfData());
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
const [loading, setLoading] = useState(false);
@@ -41,11 +45,6 @@ function DataExtract(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user input data and query from context, if any. Use first item of the data array
- const {
- rdfData: [ctxData],
- } = useContext(ApplicationContext);
-
const urlServerExtract = API.routes.server.dataExtract;
const urlServerVisualize = API.routes.server.schemaConvert;
@@ -65,8 +64,6 @@ function DataExtract(props) {
setParams(newParams);
setLastParams(newParams);
} else setError(API.texts.errorParsingUrl);
- } else {
- if (ctxData && typeof ctxData === "object") setData(ctxData);
}
}, [props.location?.search]);
diff --git a/src/data/DataInfo.js b/src/data/DataInfo.js
index 6c0f1e3..6aea056 100644
--- a/src/data/DataInfo.js
+++ b/src/data/DataInfo.js
@@ -16,15 +16,20 @@ import ResultDataInfo from "../results/ResultDataInfo";
import { processDotData } from "../utils/dot/dotUtils";
import { mkError } from "../utils/ResponseError";
import {
- getDataText,
- InitialData,
- mkDataTabs,
+ getDataText, mkDataTabs,
paramsFromStateData,
updateStateData
} from "./Data";
function DataInfo(props) {
- const [data, setData] = useState(InitialData);
+ // Recover user input data from context, if any. Use first item of the data array
+ const {
+ rdfData: [ctxData],
+ addRdfData,
+ } = useContext(ApplicationContext);
+
+ // Set initial data from context, if possible
+ const [data, setData] = useState(ctxData || addRdfData());
const [result, setResult] = useState(null);
@@ -41,9 +46,6 @@ function DataInfo(props) {
const urlInfo = API.routes.server.dataInfo;
const urlVisual = API.routes.server.dataConvert;
- // Recover user input data from context, if any. Use first item of the data array
- const { rdfData: ctxData } = useContext(ApplicationContext);
-
// Try to autofill user data, first from the query string then from context
useEffect(() => {
if (props.location?.search) {
@@ -61,8 +63,6 @@ function DataInfo(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else if (ctxData && typeof ctxData === "object") {
- setData(ctxData); // Set the data in context so that UI changes
}
}, [props.location?.search]);
diff --git a/src/data/DataMerge.js b/src/data/DataMerge.js
index 5fe079a..30846b1 100644
--- a/src/data/DataMerge.js
+++ b/src/data/DataMerge.js
@@ -18,15 +18,19 @@ import { mkError } from "../utils/ResponseError";
import { getFileContents } from "../utils/Utils";
import {
getDataText,
- InitialData,
mkDataTabs,
paramsFromStateData,
updateStateData
} from "./Data";
function DataMerge(props) {
- const [data1, setData1] = useState(InitialData);
- const [data2, setData2] = useState(InitialData);
+ // Recover user input data from context, if any. Use 2 items of the data array
+ const { rdfData: rdfDataSet, addRdfData } = useContext(ApplicationContext);
+ const [ctxData1, ctxData2] = rdfDataSet;
+
+ const [data1, setData1] = useState(ctxData1 || addRdfData());
+ const [data2, setData2] = useState(ctxData2 || addRdfData());
+
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
const [dataTargetFormat, setDataTargetFormat] = useState(
@@ -40,9 +44,6 @@ function DataMerge(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user input data from context, if any. Use 2 items of the data array
- const { rdfData: ctxData1, addRdfData } = useContext(ApplicationContext);
-
const url = API.routes.server.dataConvert;
function handleTargetDataFormatChange(value) {
@@ -88,13 +89,6 @@ function DataMerge(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else if (ctxData1 && typeof ctxData1 === "object") {
- // Set the data in context so that UI changes
- setData1(ctxData1);
- // If there's no "data2" because it is the first time in the page, add a new data element
- // to the data array in context
- // setData2(ctxData2 || addRdfData());
- setData2(InitialData);
}
}, [props.location?.search]);
diff --git a/src/data/DataQuery.js b/src/data/DataQuery.js
index d5ee145..dc45b57 100644
--- a/src/data/DataQuery.js
+++ b/src/data/DataQuery.js
@@ -23,16 +23,21 @@ import {
import ResultSparqlQuery from "../results/ResultSparqlQuery";
import { mkError } from "../utils/ResponseError";
import {
- getDataText,
- InitialData,
- mkDataTabs,
+ getDataText, mkDataTabs,
paramsFromStateData,
updateStateData
} from "./Data";
function DataQuery(props) {
- const [data, setData] = useState(InitialData);
- const [query, setQuery] = useState(InitialQuery);
+ // Recover user input data and query from context, if any. Use first item of the data array
+ const {
+ rdfData: [ctxData],
+ sparqlQuery: ctxQuery,
+ addRdfData,
+ } = useContext(ApplicationContext);
+
+ const [data, setData] = useState(ctxData || addRdfData());
+ const [query, setQuery] = useState(ctxQuery || InitialQuery);
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
@@ -46,12 +51,6 @@ function DataQuery(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user input data and query from context, if any. Use first item of the data array
- const {
- rdfData: [ctxData],
- sparqlQuery: ctxQuery,
- } = useContext(ApplicationContext);
-
const url = API.routes.server.dataQuery;
useEffect(() => {
@@ -74,9 +73,6 @@ function DataQuery(props) {
setParams(params);
setLastParams(params);
- } else {
- if (ctxData && typeof ctxData === "object") setData(ctxData);
- if (ctxQuery && typeof ctxQuery === "object") setQuery(ctxQuery);
}
}, [props.location?.search]);
diff --git a/src/data/DataTabs.js b/src/data/DataTabs.js
index 12d101d..c59ddce 100644
--- a/src/data/DataTabs.js
+++ b/src/data/DataTabs.js
@@ -1,5 +1,5 @@
import PropTypes from "prop-types";
-import React, { useContext, useEffect, useState } from "react";
+import React, { useContext, useEffect } from "react";
import API from "../API";
import InputTabsWithFormat from "../components/InputTabsWithFormat";
import { ApplicationContext } from "../context/ApplicationContext";
@@ -10,37 +10,40 @@ function DataTabs(props) {
ApplicationContext
);
- const [dataIndex] = useState(props?.data?.index);
+ const dataIndex = props?.data?.index;
// Change context when the contained data changes
useEffect(() => {
- // const newDataset = ctxDataSet.reduce(
- // (acc, curr, idx) =>
- // dataIndex === idx ? [...acc, props.data] : [...acc, curr],
- // []
- // );
- setCtxDataSet(props.data);
+ if (props.data) {
+ // Reducer, insert the modified data in the corresponding index
+ const newDataset = ctxDataSet.reduce(
+ (acc, curr) =>
+ dataIndex === curr.index ? [...acc, props.data] : [...acc, curr],
+ []
+ );
+ setCtxDataSet(newDataset);
+ }
}, [props.data]);
return (
diff --git a/src/data/SelectInferenceEngine.js b/src/data/SelectInferenceEngine.js
index f3c0ff4..1c7ac79 100644
--- a/src/data/SelectInferenceEngine.js
+++ b/src/data/SelectInferenceEngine.js
@@ -14,6 +14,9 @@ function SelectInferenceEngine(props) {
? inferenceTargets.shacl
: inferenceTargets.rdf;
+ // In case we are manipulating data, the index in the data array that we are manipulating
+ const dataIndex = props?.data?.index;
+
// Get potentially necessary data from context
const {
rdfData: ctxDataSet,
@@ -25,14 +28,15 @@ function SelectInferenceEngine(props) {
useEffect(() => {
switch (inferenceTarget) {
case inferenceTargets.rdf:
- setCtxDataSet(props.data);
- // setCtxDataSet(
- // ctxDataSet.reduce(
- // (acc, curr, idx) =>
- // props.data.index === idx ? [...acc, props.data] : [...acc, curr],
- // []
- // )
- // );
+ // setCtxDataSet(props.data);
+ // setCtxDataSet([props.data]);
+ setCtxDataSet(
+ ctxDataSet.reduce(
+ (acc, curr) =>
+ dataIndex === curr.index ? [...acc, props.data] : [...acc, curr],
+ []
+ )
+ );
case inferenceTargets.shacl:
setCtxShacl(props.shacl);
default:
@@ -40,9 +44,6 @@ function SelectInferenceEngine(props) {
}
}, [props.data, props.shacl]);
- // In case we are manipulating data, the index in the data array that we are manipulating
- const dataIndex = props?.data?.index || 0;
-
return (
{
@@ -43,9 +43,6 @@ function EndpointInfo(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else {
- if (ctxEndpoint && typeof ctxEndpoint === "string")
- setEndpoint(ctxEndpoint);
}
}, [props.location?.search]);
diff --git a/src/endpoint/EndpointQuery.js b/src/endpoint/EndpointQuery.js
index db21c4d..b8c4eeb 100644
--- a/src/endpoint/EndpointQuery.js
+++ b/src/endpoint/EndpointQuery.js
@@ -24,22 +24,26 @@ import { mkError } from "../utils/ResponseError";
import EndpointInput from "./EndpointInput";
function EndpointQuery(props) {
- const [endpoint, setEndpoint] = useState("");
+ // Recover user endpoint and query from context, if any
+ const { sparqlEndpoint: ctxEndpoint, sparqlQuery: ctxQuery } = useContext(
+ ApplicationContext
+ );
+
+ const [endpoint, setEndpoint] = useState(ctxEndpoint || "");
+ const [query, setQuery] = useState(ctxQuery || InitialQuery);
+
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
+
const [result, setResult] = useState("");
const [error, setError] = useState("");
- const [query, setQuery] = useState(InitialQuery);
+
const [permalink, setPermalink] = useState(null);
const [loading, setLoading] = useState(false);
+
const [progressPercent, setProgressPercent] = useState(0);
const [controlPressed, setControlPressed] = useState(false);
- // Recover user endpoint and query from context, if any
- const { sparqlEndpoint: ctxEndpoint, sparqlQuery: ctxQuery } = useContext(
- ApplicationContext
- );
-
const url = API.routes.server.wikibaseQuery;
useEffect(() => {
@@ -58,10 +62,6 @@ function EndpointQuery(props) {
setParams(newParams);
setLastParams(newParams);
- } else {
- if (ctxEndpoint && typeof ctxEndpoint === "string")
- setEndpoint(ctxEndpoint);
- if (ctxQuery && typeof ctxQuery === "object") setQuery(ctxQuery);
}
}, [props.location?.search]);
diff --git a/src/shacl/ShaclConvert.js b/src/shacl/ShaclConvert.js
index 9d7982e..7461634 100644
--- a/src/shacl/ShaclConvert.js
+++ b/src/shacl/ShaclConvert.js
@@ -25,6 +25,10 @@ import {
} from "./Shacl";
function ShaclConvert(props) {
+ const { shaclSchema: ctxShacl } = useContext(ApplicationContext);
+
+ const [shacl, setShacl] = useState(ctxShacl || InitialShacl);
+
const [targetSchemaFormat, setTargetSchemaFormat] = useState(
API.formats.defaultShacl
);
@@ -33,8 +37,6 @@ function ShaclConvert(props) {
API.engines.shaclex
);
- const [shacl, setShacl] = useState(InitialShacl);
-
const [result, setResult] = useState("");
const [params, setParams] = useState(null);
@@ -47,8 +49,6 @@ function ShaclConvert(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- const { shaclSchema: ctxShacl } = useContext(ApplicationContext);
-
const urlConvert = API.routes.server.schemaConvert;
useEffect(() => {
@@ -80,8 +80,6 @@ function ShaclConvert(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else {
- if (ctxShacl && typeof ctxShacl === "object") setShacl(ctxShacl);
}
}, [props.location?.search]);
diff --git a/src/shacl/ShaclInfo.js b/src/shacl/ShaclInfo.js
index 3988b86..56a421f 100644
--- a/src/shacl/ShaclInfo.js
+++ b/src/shacl/ShaclInfo.js
@@ -23,7 +23,9 @@ import {
} from "./Shacl";
function ShaclInfo(props) {
- const [shacl, setShacl] = useState(InitialShacl);
+ const { shaclSchema: ctxShacl } = useContext(ApplicationContext);
+
+ const [shacl, setShacl] = useState(ctxShacl || InitialShacl);
const [result, setResult] = useState("");
@@ -37,8 +39,6 @@ function ShaclInfo(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- const { shaclSchema: ctxShacl } = useContext(ApplicationContext);
-
const urlInfo = API.routes.server.schemaInfo;
const urlVisual = API.routes.server.schemaConvert;
@@ -57,8 +57,6 @@ function ShaclInfo(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else {
- if (ctxShacl && typeof ctxShacl === "object") setShacl(ctxShacl);
}
}, [props.location?.search]);
diff --git a/src/shacl/ShaclValidate.js b/src/shacl/ShaclValidate.js
index 9d24165..cfed461 100644
--- a/src/shacl/ShaclValidate.js
+++ b/src/shacl/ShaclValidate.js
@@ -12,9 +12,7 @@ import API from "../API";
import PageHeader from "../components/PageHeader";
import { ApplicationContext } from "../context/ApplicationContext";
import {
- getDataText,
- InitialData,
- mkDataTabs,
+ getDataText, mkDataTabs,
paramsFromStateData,
updateStateData
} from "../data/Data";
@@ -31,11 +29,19 @@ import {
} from "./Shacl";
function ShaclValidate(props) {
- const [shacl, setShacl] = useState(InitialShacl);
- const [data, setData] = useState(InitialData);
+ // Get all required data from state: data, schema
+ const {
+ rdfData: [ctxData],
+ addRdfData,
+ shaclSchema: ctxShacl,
+ validationEndpoint: ctxValidationEndpoint,
+ } = useContext(ApplicationContext);
+
+ const [data, setData] = useState(ctxData || addRdfData());
+ const [shacl, setShacl] = useState(ctxShacl || InitialShacl);
- const [endpoint, setEndpoint] = useState("");
- const [withEndpoint, setWithEndpoint] = useState(false);
+ const [endpoint, setEndpoint] = useState(ctxValidationEndpoint || "");
+ const [withEndpoint, setWithEndpoint] = useState(!!ctxValidationEndpoint);
const [result, setResult] = useState("");
@@ -49,13 +55,6 @@ function ShaclValidate(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Get all required data from state: data, schema, shapemap
- const {
- rdfData: [ctxData],
- shaclSchema: ctxShacl,
- validationEndpoint: ctxValidationEndpoint,
- } = useContext(ApplicationContext);
-
const url = API.routes.server.schemaValidate;
useEffect(() => {
@@ -79,13 +78,6 @@ function ShaclValidate(props) {
const newParams = mkParams(finalData, finalShacl, finalEndpoint);
setParams(newParams);
setLastParams(newParams);
- } else {
- if (ctxData && typeof ctxData === "object") setData(ctxData);
- if (ctxShacl && typeof ctxShacl === "object") setShacl(ctxShacl);
- if (ctxValidationEndpoint && typeof ctxValidationEndpoint === "string") {
- setEndpoint(ctxValidationEndpoint);
- setWithEndpoint(!!ctxValidationEndpoint);
- }
}
}, [props.location?.search]);
diff --git a/src/shapeMap/ShapeMapInfo.js b/src/shapeMap/ShapeMapInfo.js
index cea45ef..ec78e03 100644
--- a/src/shapeMap/ShapeMapInfo.js
+++ b/src/shapeMap/ShapeMapInfo.js
@@ -22,20 +22,24 @@ import {
} from "./ShapeMap";
function ShapeMapInfo(props) {
- const [shapemap, setShapemap] = useState(InitialShapeMap);
+ // Recover user shapeMap from context, if any
+ const { shapeMap: ctxShapeMap } = useContext(ApplicationContext);
+
+ const [shapemap, setShapemap] = useState(ctxShapeMap || InitialShapeMap);
+
const [result, setResult] = useState(null);
+
const [params, setParams] = useState(null);
const [lastParams, setLastParams] = useState(null);
+
const [error, setError] = useState(null);
const [loading, setLoading] = useState(false);
const [permalink, setPermalink] = useState(null);
+
const [progressPercent, setProgressPercent] = useState(0);
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user shapeMap from context, if any
- const { shapeMap: ctxShapeMap } = useContext(ApplicationContext);
-
const url = API.routes.server.shapeMapInfo;
useEffect(() => {
@@ -50,9 +54,6 @@ function ShapeMapInfo(props) {
setParams(params);
setLastParams(params);
} else setError(API.texts.errorParsingUrl);
- } else {
- if (ctxShapeMap && typeof ctxShapeMap === "object")
- setShapemap(ctxShapeMap);
}
}, [props.location?.search]);
diff --git a/src/shex/ShexConvert.js b/src/shex/ShexConvert.js
index a57f101..5b2564d 100644
--- a/src/shex/ShexConvert.js
+++ b/src/shex/ShexConvert.js
@@ -35,6 +35,10 @@ import {
} from "./Shex";
function ShexConvert(props) {
+ const { shexSchema: ctxShex } = useContext(ApplicationContext);
+
+ const [shex, setShex] = useState(ctxShex || InitialShex);
+
const [targetSchemaFormat, setTargetSchemaFormat] = useState(
API.formats.defaultShex
);
@@ -42,7 +46,6 @@ function ShexConvert(props) {
const [targetSchemaEngine, setTargetSchemaEngine] = useState(
API.engines.shex
);
- const [shex, setShex] = useState(InitialShex);
const [result, setResult] = useState("");
@@ -56,8 +59,6 @@ function ShexConvert(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- const { shexSchema: ctxShex } = useContext(ApplicationContext);
-
const urlConvert = API.routes.server.schemaConvert;
// Store the current result type as one of these to know which result component to render
@@ -112,8 +113,6 @@ function ShexConvert(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else {
- if (ctxShex && typeof ctxShex === "object") setShex(ctxShex);
}
}, [props.location?.search]);
diff --git a/src/shex/ShexInfo.js b/src/shex/ShexInfo.js
index 724d977..ed6138c 100644
--- a/src/shex/ShexInfo.js
+++ b/src/shex/ShexInfo.js
@@ -23,7 +23,9 @@ import {
} from "./Shex";
function ShexInfo(props) {
- const [shex, setShEx] = useState(InitialShex);
+ const { shexSchema: ctxShex } = useContext(ApplicationContext);
+
+ const [shex, setShEx] = useState(ctxShex || InitialShex);
const [result, setResult] = useState("");
@@ -37,8 +39,6 @@ function ShexInfo(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- const { shexSchema: ctxShex } = useContext(ApplicationContext);
-
const urlInfo = API.routes.server.schemaInfo;
const urlVisual = API.routes.server.schemaConvert;
@@ -57,8 +57,6 @@ function ShexInfo(props) {
} else {
setError(API.texts.errorParsingUrl);
}
- } else {
- if (ctxShex && typeof ctxShex === "object") setShEx(ctxShex);
}
}, [props.location?.search]);
diff --git a/src/shex/ShexValidate.js b/src/shex/ShexValidate.js
index 36849f4..6daaca7 100644
--- a/src/shex/ShexValidate.js
+++ b/src/shex/ShexValidate.js
@@ -12,9 +12,7 @@ import API from "../API";
import PageHeader from "../components/PageHeader";
import { ApplicationContext } from "../context/ApplicationContext";
import {
- getDataText,
- InitialData,
- mkDataTabs,
+ getDataText, mkDataTabs,
paramsFromStateData,
updateStateData
} from "../data/Data";
@@ -38,9 +36,17 @@ import {
} from "./Shex";
function ShexValidate(props) {
- const [data, setData] = useState(InitialData);
- const [shex, setShEx] = useState(InitialShex);
- const [shapeMap, setShapeMap] = useState(InitialShapeMap);
+ // Get all required data from state: data, schema, shapemap
+ const {
+ rdfData: [ctxData],
+ shexSchema: ctxShex,
+ shapeMap: ctxShapeMap,
+ addRdfData,
+ } = useContext(ApplicationContext);
+
+ const [data, setData] = useState(ctxData || addRdfData());
+ const [shex, setShEx] = useState(ctxShex || InitialShex);
+ const [shapeMap, setShapeMap] = useState(ctxShapeMap || InitialShapeMap);
const [endpoint, setEndpoint] = useState("");
const [withEndpoint, setWithEndpoint] = useState(false); // UI reference
@@ -57,13 +63,6 @@ function ShexValidate(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Get all required data from state: data, schema, shapemap
- const {
- rdfData: [ctxData],
- shexSchema: ctxShex,
- shapeMap: ctxShapeMap,
- } = useContext(ApplicationContext);
-
const url = API.routes.server.schemaValidate;
useEffect(() => {
@@ -101,11 +100,6 @@ function ShexValidate(props) {
setParams(newParams);
setLastParams(newParams);
- } else {
- if (ctxData && typeof ctxData === "object") setData(ctxData);
- if (ctxShex && typeof ctxShex === "object") setShEx(ctxShex);
- if (ctxShapeMap && typeof ctxShapeMap === "object")
- setShapeMap(ctxShapeMap);
}
}, [props.location?.search]);
diff --git a/src/shex/Xmi2Shex.js b/src/shex/Xmi2Shex.js
index bbf3aab..8a10652 100644
--- a/src/shex/Xmi2Shex.js
+++ b/src/shex/Xmi2Shex.js
@@ -25,7 +25,10 @@ import { mkError } from "../utils/ResponseError";
import { getConverterInput } from "../utils/xmiUtils/shumlexUtils";
export default function Xmi2Shex(props) {
- const [uml, setUml] = useState(InitialUML);
+ // Recover user input data from context, if any. Use first item of the data array
+ const { umlData: ctxUml } = useContext(ApplicationContext);
+
+ const [uml, setUml] = useState(ctxUml || InitialUML);
const [result, setResult] = useState(null);
@@ -39,9 +42,6 @@ export default function Xmi2Shex(props) {
const [disabledLinks, setDisabledLinks] = useState(false);
- // Recover user input data from context, if any. Use first item of the data array
- const { umlData: ctxUml } = useContext(ApplicationContext);
-
useEffect(() => {
if (props.location?.search) {
const queryParams = qs.parse(props.location.search);
@@ -72,8 +72,6 @@ export default function Xmi2Shex(props) {
setUpHistory();
doRequest();
}
- } else {
- if (ctxUml && typeof ctxUml === "object") setUml(ctxUml);
}
}, [params]);
diff --git a/src/uml/UMLTabs.js b/src/uml/UMLTabs.js
index bbb85ea..0bdac89 100644
--- a/src/uml/UMLTabs.js
+++ b/src/uml/UMLTabs.js
@@ -20,22 +20,22 @@ function UMLTabs(props) {