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 @@
-
-
+
+