lincd
Version:
LINCD is a JavaScript library for building user interfaces with linked data (also known as 'structured data', or RDF)
50 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setQueryContext = exports.getQueryContext = exports.useQueryContext = void 0;
const react_1 = require("react");
const SelectQuery_js_1 = require("./SelectQuery.js");
const Shape_js_1 = require("../shapes/Shape.js");
const TraceShape_js_1 = require("../utils/TraceShape.js");
const queryContext = new Map();
function useQueryContext(name, initialData, shapeType) {
(0, react_1.useEffect)(() => {
setQueryContext(name, initialData, shapeType);
}, [initialData, name]);
}
exports.useQueryContext = useQueryContext;
function getQueryContext(name) {
if (!queryContext.has(name)) {
//TODO:should return something here so that the query still works and returns default values
// like NullQueryShape or similar
return null;
}
return queryContext.get(name);
}
exports.getQueryContext = getQueryContext;
function setQueryContext(name, value, shapeType) {
//if a QResult was provided
if (value &&
(typeof value.id === 'string' || typeof value.uri === 'string')) {
//convert to QShape
if (!shapeType) {
console.warn('setQueryContext: value is a QResult but no shapeType provided', value);
return;
}
const testNode = new TraceShape_js_1.TestNode();
testNode.targetID = value.id || value.uri;
const shape = new shapeType(testNode); //.getFromURI(value.id);
value = SelectQuery_js_1.QueryShape.create(shape);
//const converted = QueryBuilderObject.convertOriginal(shape,null,null);
}
if (value instanceof Shape_js_1.Shape) {
//convert to QShape
value = new SelectQuery_js_1.QueryShape(value);
}
else if (value && !(value instanceof SelectQuery_js_1.QueryShape)) {
console.warn('setQueryContext: value is not a QueryShape or Shape', value);
return;
}
queryContext.set(name, value);
}
exports.setQueryContext = setQueryContext;
//# sourceMappingURL=QueryContext.js.map