How to configure field validation so that a user cannot enter a number smaller than the value in another field on the page?
"PDS_UsrActualFuelRemaining_s06444m": {
"modelConfig": {
"path": "PDS.UsrActualFuelRemaining"
},
"validators": {
"MyNumberValidator": {
"type": "usr.MonthNumberValidator",
"params": {
"minValue": "0",
"message": "Допустимі значення від 0 до 500",
"maxValue": "500"
}
}
}
},
If I specify a range, the validator works. But when I try to use var OldWorkHour = await request.$context.PDS_UsrWorkHours_sjx2srh;, I get an error.
Could you please help me figure out why this happens and how to fix it?
"usr.MonthNumberValidator": {
validator: function(config) {
return function(control) {
var controlValue = control.value !== undefined ? parseFloat(control.value) : null;
var minValue = config.minValue !== undefined ? parseFloat(config.minValue) : Number.MIN_SAFE_INTEGER;
var maxValue = config.maxValue !== undefined ? parseFloat(config.maxValue) : Number.MAX_SAFE_INTEGER;
var OldWorkHour = await request.$context.PDS_UsrWorkHours_sjx2srh;
var isValueValid = controlValue >= minValue && controlValue <= maxValue;
if (!isValueValid) {
return {
"invalid": {
message: config.message || "Введене значення не відповідає умовам"
}
};
}
// Якщо все добре, повертаємо null (успішна валідація)
return null;
};
},
params: [
{
name: "minValue"
},
{
name: "maxValue"
},
{
name: "message"
}
],
async: false
},Like
Hi,
And what is the datatype for the PDS_UsrWorkHours_sjx2srh and UsrActualFuelRemaining? And what is the error message you receive?
Hello,
The ability to add dynamic parameters to a validator is still under development, as a way around you can try using global variables like window. For example
handlers: /**SCHEMA_HANDLERS*/[
{
request: "dw.StartDateChange",
handler: async (request, next) => {
window.StartDate = await request.$context.DateTimeAttribute_lpcf566;
if(request.$context.IsStartDateInited) {
request.$context.validate();
}
request.$context.IsStartDateInited = true;
return next?.handle(request);
}
}]
...
"dw.StartDateIsNotNotLessThanProjectStartDate": {
"validator": function (config) {
return function (control) {
return (!control.value || control.value >= window.StartDate)
? null
: {"dw.StartDateValidator": {message: config.message}};
};
},
"params": [
{
"name": "message"
}
],
"async": false
}
Michael Osborne,
Yes, you are correct. This functionality is still under development.