Skip to content

Commit

Permalink
allowing resource template for new resources
Browse files Browse the repository at this point in the history
  • Loading branch information
ali1k committed Dec 22, 2018
1 parent a17a481 commit 6d8c64d
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 14 deletions.
6 changes: 5 additions & 1 deletion components/dataset/Dataset.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,15 @@ class Dataset extends React.Component {
let self = this;
let createResourceDIV = '';
let dcnf = this.state.config;
let templateResource = '';
if(dcnf && !this.props.readOnly && dcnf.allowResourceNew){
if(dcnf.templateResource){
templateResource = dcnf.templateResource[0];
}
createResourceDIV =
<div className="ui list">
<div className="item">
<div className="medium ui basic icon labeled button" onClick={this.props.onCreateResource.bind(this, this.props.datasetURI)}>
<div className="medium ui basic icon labeled button" onClick={this.props.onCreateResource.bind(this, this.props.datasetURI, templateResource)}>
<i className="cube square large blue icon "></i> <i className="add black icon"></i> Add a New Resource
</div>
</div>
Expand Down
5 changes: 3 additions & 2 deletions components/reactors/DatasetReactor.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ class DatasetReactor extends React.Component {
resourceURI: resourceURI
});
}
handleCreateResource(datasetURI) {
handleCreateResource(datasetURI, templateResource) {
this.context.executeAction(createResource, {
dataset: datasetURI
dataset: datasetURI,
templateResource: templateResource
});
}
//removes properties from an object
Expand Down
5 changes: 5 additions & 0 deletions configs/reactor.sample.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ export default {
isHidden: 0,
shortenURI: 0
},
'https://github.com/ali1k/ld-reactor/blob/master/vocabulary/index.ttl#templateResource': {
label: ['The Template Resource'],
hint: ['If set, this resource will be used as template for new resources.'],
allowNewValue: 0
},
'https://github.com/ali1k/ld-reactor/blob/master/vocabulary/index.ttl#scope': {
hint: ['Determines the type of scope in LD-R'],
objectIEditor: ['BasicOptionInput'],
Expand Down
1 change: 1 addition & 0 deletions data/autocompletes.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ module.exports = {
{title: 'ldr:resourceImageProperty'},
{title: 'ldr:resourceLabelProperty'},
{title: 'ldr:maxNumberOfResourcesOnPage'},
{title: 'ldr:templateResource'},
{title: 'ldr:readOnly'},
{title: 'ldr:readOnlyProperty'},
{title: 'ldr:readOnlyResource'},
Expand Down
2 changes: 1 addition & 1 deletion services/resource.js
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ export default {
}
getDynamicEndpointParameters(user, datasetURI, (endpointParameters)=>{
graphName = endpointParameters.graphName;
query = queryObject.getPrefixes() + queryObject.newResource(endpointParameters, user, graphName, newResourceURI);
query = queryObject.getPrefixes() + queryObject.newResource(endpointParameters, user, graphName, newResourceURI, params.templateResource);
HTTPQueryObject = getHTTPQuery('update', query, endpointParameters, outputFormat);
rp.post({uri: HTTPQueryObject.uri, form: HTTPQueryObject.params}).then(function(res){
if(enableLogs){
Expand Down
41 changes: 31 additions & 10 deletions services/sparql/ResourceQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class ResourceQuery{
`;
return this.query;
}
newResource(endpointParameters, user, graphName, newResourceURI) {
newResource(endpointParameters, user, graphName, newResourceURI, templateResourceURI) {
//todo: consider different value types
let {gStart, gEnd} = this.prepareGraphName(graphName);
let userSt = '';
Expand All @@ -88,16 +88,37 @@ class ResourceQuery{
}
let date = new Date();
let currentDate = date.toISOString(); //"2011-12-19T15:28:46.493Z"
this.query = `
INSERT DATA {
${gStart}
<${newResourceURI}> a ldr:Resource ;
ldr:createdOn "${currentDate}"^^xsd:dateTime;
${userSt}
rdfs:label "New Resource" .
${gEnd}
// use a template for resource if set
if(templateResourceURI){
this.query = `
INSERT {
${gStart}
<${newResourceURI}> ?p ?o ;
ldr:createdOn "${currentDate}"^^xsd:dateTime;
${userSt}
${gEnd}
} WHERE {
${gStart}
<${templateResourceURI}> ?p ?o .
FILTER (?p != ldr:cloneOf && ?p != ldr:createdOn && ?p != ldr:createdBy)
${gEnd}
}
`;
} else {
// create an empty resource
this.query = `
INSERT DATA {
${gStart}
<${newResourceURI}> a ldr:Resource ;
ldr:createdOn "${currentDate}"^^xsd:dateTime;
${userSt}
rdfs:label "New Resource" .
${gEnd}
}
`;
}
`;


return this.query;
}
annotateResource(endpointParameters, user, datasetURI, graphName, resourceURI, propertyURI, annotations, inNewDataset) {
Expand Down

0 comments on commit 6d8c64d

Please sign in to comment.