added proof of concept to validate date fields in json schema form w/ burnettk

This commit is contained in:
jasquat 2023-01-16 17:01:15 -05:00
parent afa0256bc3
commit ccf64e5bcb
3 changed files with 47 additions and 4 deletions

View File

@ -46,6 +46,7 @@
"dmn-js": "^12.2.0", "dmn-js": "^12.2.0",
"dmn-js-properties-panel": "^1.1", "dmn-js-properties-panel": "^1.1",
"dmn-js-shared": "^12.1.1", "dmn-js-shared": "^12.1.1",
"jsonpath-plus": "^7.2.0",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"keycloak-js": "^18.0.1", "keycloak-js": "^18.0.1",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
@ -19192,6 +19193,14 @@
"graceful-fs": "^4.1.6" "graceful-fs": "^4.1.6"
} }
}, },
"node_modules/jsonpath-plus": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz",
"integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==",
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/jsonpointer": { "node_modules/jsonpointer": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
@ -45646,6 +45655,11 @@
"universalify": "^2.0.0" "universalify": "^2.0.0"
} }
}, },
"jsonpath-plus": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz",
"integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA=="
},
"jsonpointer": { "jsonpointer": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",

View File

@ -41,6 +41,7 @@
"dmn-js": "^12.2.0", "dmn-js": "^12.2.0",
"dmn-js-properties-panel": "^1.1", "dmn-js-properties-panel": "^1.1",
"dmn-js-shared": "^12.1.1", "dmn-js-shared": "^12.1.1",
"jsonpath-plus": "^7.2.0",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"keycloak-js": "^18.0.1", "keycloak-js": "^18.0.1",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",

View File

@ -184,12 +184,40 @@ export default function TaskShow() {
); );
} }
function customValidate(formData: any, errors: any) { const getFieldsWithDateValidations = (formData: any, errors: any) => {
if (formData.pass1 !== formData.pass2) { if ('properties' in jsonSchema) {
errors.pass2.addError("Passwords don't match"); Object.keys(jsonSchema.properties).forEach((propertyKey: string) => {
const propertyMetadata = jsonSchema.properties[propertyKey];
if ('minimum' in propertyMetadata) {
if (propertyMetadata.minimum === 'today') {
const dateToday = new Date();
const dateValue = formData[propertyKey];
if (dateValue) {
const dateValueObject = new Date(dateValue);
const dateValueString = dateValueObject
.toISOString()
.split('T')[0];
const dateTodayString = dateToday.toISOString().split('T')[0];
if (dateTodayString > dateValueString) {
errors[propertyKey].addError('must be today or after');
}
}
}
}
});
} }
return errors; return errors;
} };
const customValidate = (formData: any, errors: any) => {
console.log('formData', formData);
console.log('errors', errors);
return getFieldsWithDateValidations(formData, errors);
// if (formData.pass1 !== formData.pass2) {
// errors.pass2.addError("Passwords don't match");
// }
// return errors;
};
return ( return (
<Grid fullWidth condensed> <Grid fullWidth condensed>