How the below code works for Date Validation
Accepted answer
This is not at all a RTC API Question, this is a JavaScript question and you should likely ask Google and not this forum. Stackoverflow and other language related forums usually provide hints if you just search for e.g. in this case "JavaScript date compare".
Here an example script I created after searching the internet:
/*******************************************************************************
* Licensed Materials - Property of IBM
* (c) Copyright IBM Corporation 2011. All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* Use, duplication or disclosure restricted by GSA ADP Schedule
* Contract with IBM Corp.
*******************************************************************************/
dojo.provide("org.example.DateValidator");
dojo.require("com.ibm.team.workitem.api.common.Severity");
dojo.require("com.ibm.team.workitem.api.common.Status");
dojo.require("dojo.date"); // We need the date class from Dojo to compare two dates
dojo.require("dojo.date.stamp"); // We need the stamp class to work with ISO date strings
/*
*
* You need to configure this script in the Process Configuration Source:
* <validator id="dateval" name="Date Validator" providerId="com.ibm.team.workitem.shared.common.internal.valueProviders.ScriptAttributeValueProvider">
* <script class="org.example.DateValidator" path="/workitem/scripts/common/DateValidator.js"/>
* <parameters beginDateAttributeId="startdate" message="The completion date can not be earlier than the start date" severity="ERROR"/>
* </validator>
*
*/
(function() {
var Severity = com.ibm.team.workitem.api.common.Severity;
var Status = com.ibm.team.workitem.api.common.Status;
var DateValidator = dojo.declare("org.example.DateValidator", null, {
validate: function(attributeId, workItem, configuration) {
// Get the configuration parameters about the severity and error message of this validator
var severity= configuration.getChild("parameters").getStringDefault("severity", Severity.ERROR.name);
var message= configuration.getChild("parameters").getStringDefault("message", "");
// Get the begin date attribute from the configuration and make a Date object from it
var beginDateId = configuration.getChild("parameters").getStringDefault("beginDateAttributeId", "");
var beginDate = dojo.date.stamp.fromISOString(workItem.getValue(beginDateId));
// Get the current attribute's value and make a Date object from it
var endDate= dojo.date.stamp.fromISOString(workItem.getValue(attributeId));
// Compare the two dates and make sure endDate is not earlier than beginDate
if (dojo.date.compare(endDate, beginDate) >= 0) {
return Status.OK_STATUS;
} else {
return new Status(Severity[severity], message);
}
}
});
})();
Here an example script I created after searching the internet:
/*******************************************************************************
* Licensed Materials - Property of IBM
* (c) Copyright IBM Corporation 2011. All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* Use, duplication or disclosure restricted by GSA ADP Schedule
* Contract with IBM Corp.
*******************************************************************************/
dojo.provide("org.example.DateValidator");
dojo.require("com.ibm.team.workitem.api.common.Severity");
dojo.require("com.ibm.team.workitem.api.common.Status");
dojo.require("dojo.date"); // We need the date class from Dojo to compare two dates
dojo.require("dojo.date.stamp"); // We need the stamp class to work with ISO date strings
/*
*
* You need to configure this script in the Process Configuration Source:
* <validator id="dateval" name="Date Validator" providerId="com.ibm.team.workitem.shared.common.internal.valueProviders.ScriptAttributeValueProvider">
* <script class="org.example.DateValidator" path="/workitem/scripts/common/DateValidator.js"/>
* <parameters beginDateAttributeId="startdate" message="The completion date can not be earlier than the start date" severity="ERROR"/>
* </validator>
*
*/
(function() {
var Severity = com.ibm.team.workitem.api.common.Severity;
var Status = com.ibm.team.workitem.api.common.Status;
var DateValidator = dojo.declare("org.example.DateValidator", null, {
validate: function(attributeId, workItem, configuration) {
// Get the configuration parameters about the severity and error message of this validator
var severity= configuration.getChild("parameters").getStringDefault("severity", Severity.ERROR.name);
var message= configuration.getChild("parameters").getStringDefault("message", "");
// Get the begin date attribute from the configuration and make a Date object from it
var beginDateId = configuration.getChild("parameters").getStringDefault("beginDateAttributeId", "");
var beginDate = dojo.date.stamp.fromISOString(workItem.getValue(beginDateId));
// Get the current attribute's value and make a Date object from it
var endDate= dojo.date.stamp.fromISOString(workItem.getValue(attributeId));
// Compare the two dates and make sure endDate is not earlier than beginDate
if (dojo.date.compare(endDate, beginDate) >= 0) {
return Status.OK_STATUS;
} else {
return new Status(Severity[severity], message);
}
}
});
})();
Comments
showing 5 of 8
show 3 more comments