diff --git a/productMods/edit/forms/personHasPositionHistory.jsp b/productMods/edit/forms/personHasPositionHistory.jsp index a5331d1b..7404bde0 100644 --- a/productMods/edit/forms/personHasPositionHistory.jsp +++ b/productMods/edit/forms/personHasPositionHistory.jsp @@ -36,7 +36,10 @@ request.setAttribute("gYearDatatypeUriJson", MiscWebUtils.escape(XSD.gYear.toString())); %> - + +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.elements.DateTimeWithPrecision"%> +<%@page import="edu.cornell.mannlib.vitro.webapp.edit.n3editing.Field"%> + @@ -49,6 +52,16 @@ + + + + + + + + + + <%-- Assertions for adding a new role --%> @@ -93,6 +106,23 @@ ?org <${orgForPositionPred}> ?position . + + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToStart}> ?startNode . + ?startNode <${type}> <${dateTimeValueType}> . + ?startNode <${dateTimeValue}> ?startField.value . + ?startNode <${dateTimePrecision}> ?startField.precision . + + + + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToEnd}> ?endNode . + ?endNode <${type}> <${dateTimeValueType}> . + ?endNode <${dateTimeValue}> ?endField.value . + ?endNode <${dateTimePrecision}> ?endField.precision . + <%-- Queries for editing an existing role --%> @@ -125,14 +155,64 @@ ?position a ?existingPositionType . } - - SELECT ?existingStartYear WHERE { - ?position <${startYearPred}> ?existingStartYear . } + + + SELECT ?existingIntervalNode WHERE { + ?position <${positionToInterval}> ?existingIntervalNode . + ?existingIntervalNode <${type}> <${intervalType}> . } + + + + SELECT ?existingStartNode WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToStart}> ?existingStartNode . + ?existingStartNode <${type}> <${dateTimeValueType}> .} - - SELECT ?existingEndYear WHERE { - ?position <${endYearPred}> ?existingEndYear . } + + SELECT ?existingDateStart WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToStart}> ?startNode . + ?startNode <${type}> <${dateTimeValueType}> . + ?startNode <${dateTimeValue}> ?existingDateStart . } + + + + SELECT ?existingStartPrecision WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToStart}> ?startNode . + ?startNode <${type}> <${dateTimeValueType}> . + ?startNode <${dateTimePrecision}> ?existingStartPrecision . } + + + + + SELECT ?existingEndNode WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToEnd}> ?existingEndNode . + ?existingEndNode <${type}> <${dateTimeValueType}> .} + + + + SELECT ?existingEndDate WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToEnd}> ?endNode . + ?endNode <${type}> <${dateTimeValueType}> . + ?endNode <${dateTimeValue}> ?existingEndDate . } + + + + SELECT ?existingEndPrecision WHERE { + ?position <${positionToInterval}> ?intervalNode . + ?intervalNode <${type}> <${intervalType}> . + ?intervalNode <${intervalToEnd}> ?endNode . + ?endNode <${type}> <${dateTimeValueType}> . + ?endNode <${dateTimePrecision}> ?existingEndPrecision . } ${positionClass} @@ -173,28 +253,36 @@ "n3required" : [ "${n3ForNewPosition}", "${positionTitleAssertion}", "${positionTypeAssertion}", "${orgLabelAssertion}", "${orgTypeAssertion}" ], - "n3optional" : [ "${startYearAssertion}", "${endYearAssertion}" ], + "n3optional" : [ "${n3ForStart}", "${n3ForEnd}" ], "newResources" : { "position" : "${defaultNamespace}", - "org" : "${defaultNamespace}" }, + "org" : "${defaultNamespace}", + "intervalNode" : "${defaultNamespace}", + "startNode" : "${defaultNamespace}", + "endNode" : "${defaultNamespace}" }, "urisInScope" : { }, "literalsInScope": { }, "urisOnForm" : [ "org", "orgType", "positionType" ], - "literalsOnForm" : [ "positionTitle", "orgLabel", "startYear", "endYear" ], + "literalsOnForm" : [ "positionTitle", "orgLabel" ], "filesOnForm" : [ ], "sparqlForLiterals" : { }, "sparqlForUris" : { }, "sparqlForExistingLiterals" : { "orgLabel" : "${orgLabelQuery}", "positionTitle" : "${positionTitleQuery}", - "startYear" : "${startYearQuery}", - "endYear" : "${endYearQuery}" + "startField.value" : "${existingStartDateQuery}", + "endField.value" : "${existingEndDateQuery}" }, "sparqlForExistingUris" : { "org" : "${orgQuery}", "orgType" : "${orgTypeQuery}", - "positionType" : "${positionTypeQuery}" + "positionType" : "${positionTypeQuery}" , + "intervalNode" : "${existingIntervalNodeQuery}", + "startNode" : "${existingStartNodeQuery}", + "endNode" : "${existingEndNodeQuery}", + "startField.precision": "${existingStartPrecisionQuery}", + "endField.precision" : "${existingEndPrecisionQuery}" }, "fields" : { "positionTitle" : { @@ -252,27 +340,27 @@ "rangeLang" : "", "assertions" : [ "${orgTypeAssertion}" ] }, - "startYear" : { + "startField" : { "newResource" : "false", - "validators" : [ "datatype:${gYearDatatypeUriJson}" ], + "validators" : [ ], "optionsType" : "UNDEFINED", "literalOptions" : [ ], "predicateUri" : "", "objectClassUri" : "", - "rangeDatatypeUri" : "${gYearDatatypeUriJson}", + "rangeDatatypeUri" : "", "rangeLang" : "", - "assertions" : ["${startYearAssertion}"] + "assertions" : ["${n3ForStart}"] }, - "endYear" : { + "endField" : { "newResource" : "false", - "validators" : [ "datatype:${gYearDatatypeUriJson}" ], + "validators" : [ ], "optionsType" : "UNDEFINED", "literalOptions" : [ ], "predicateUri" : "", "objectClassUri" : "", - "rangeDatatypeUri" : "${gYearDatatypeUriJson}", + "rangeDatatypeUri" : "", "rangeLang" : "", - "assertions" : ["${endYearAssertion}"] + "assertions" : ["${n3ForEnd}"] } } } @@ -285,6 +373,12 @@ if (editConfig == null) { editConfig = new EditConfiguration((String) request.getAttribute("editjson")); EditConfiguration.putConfigInSession(editConfig,session); + + //setup date time edit elements + Field startField = editConfig.getField("startField"); + startField.setEditElement(new DateTimeWithPrecision(startField, VitroVocabulary.Precision.YEAR)); + Field endField = editConfig.getField("endField"); + endField.setEditElement(new DateTimeWithPrecision(endField, VitroVocabulary.Precision.YEAR)); } editConfig.addValidator(new StartYearBeforeEndYear("startYear","endYear") ); @@ -341,8 +435,8 @@ - - + +