UNPKG

kns-checkpoint

Version:

checkpoint kinda object control

152 lines (136 loc) 5.16 kB
/** * * Error object * * error = { * fieldConfigName: { * label: * message: * } * * } */ var errors; var record; var fieldsConfig; var payload; var ines; module.exports = function (FieldsConfig, Payload, Ines, modelInstance) { errors = {}; record = {}; fieldsConfig = FieldsConfig || {}; payload = Payload || {}; ines = Ines || "n"; Object.keys(fieldsConfig).forEach(function (fieldConfigName) { var fieldConfig = fieldsConfig[fieldConfigName]; var validationRules = fieldConfig.validate || {}; if ( fieldConfig.type !== "image" || fieldConfig !== "file" ) { record[fieldConfigName] = payload[fieldConfigName] || null; } if ( fieldConfig.ines.indexOf(ines) == -1 ) { return; } if ( !validationRules ) { errors["Developer"] = { label: fieldConfigName, i18n: { message: "ERROR_DEVELOPER_FIELD_MUST_HAVE", arguments: [fieldConfigName, "validation object"] } }; } else if ( validationRules.noteditable && ( modelInstance[fieldConfigName] !== payload[fieldConfigName] ) ) { errors[fieldConfigName] = { label: fieldConfigName.label, i18n: { message: "ERROR_FORM_FIELD_CANT_BE_EDITED" } }; } else { // check validation.required if ( ( validationRules.required && !payload[fieldConfigName] ) && !( modelInstance && modelInstance[fieldConfigName] && fieldConfig.type === "image" ) && !( modelInstance && modelInstance[fieldConfigName] && fieldConfig.type === "file" ) && !( modelInstance && modelInstance[fieldConfigName] && fieldConfig.type === "relation" ) && !( fieldConfig.type === "checkbox" ) ) { errors[fieldConfigName] = { label: fieldConfig.label, i18n: { message: "ERROR_FORM_FIELD_CANT_BE_BLANK" } }; } else if ( payload[fieldConfigName] ) { // continue with types. if ( fieldConfig.type === "text" || fieldConfig.type === "textfield" || fieldConfig.type === "password" ) { _stringCheck(fieldConfigName, validationRules); } if ( fieldConfig.type === "number" ) { _numberCheck(fieldConfigName, validationRules); } } } }); return { "errors": errors, "record": record }; }; function _stringCheck(fieldConfigName, validationRules) { var payloadString = payload[fieldConfigName]; Object.keys(validationRules).forEach(function (validationRuleName) { if ( validationRuleName === "min" && payloadString.length < ~~validationRules["min"] ) { errors[fieldConfigName] = { label: fieldsConfig[fieldConfigName].label, i18n: { message: "ERROR_FORM_FIELD_CONTAIN_FEW_CHARACTER", arguments: [validationRules["min"]] } }; } else if ( validationRuleName === "max" && payloadString.length > ~~validationRules["max"] ) { errors[fieldConfigName] = { label: fieldsConfig[fieldConfigName].label, i18n: { message: "ERROR_FORM_FIELD_CONTAIN_MORE_CHARACTER", arguments: [validationRules["max"]] } }; } else if ( validationRuleName === "same" && payloadString !== payload[validationRules["same"]] ) { errors[fieldConfigName] = { label: fieldsConfig[fieldConfigName].label, i18n: { message: "ERROR_FORM_FIELD_MUST_HAVE_SAME_CONTENT", arguments: [fieldsConfig[[validationRules["same"]]].label] } }; } }); } function _numberCheck(fieldConfigName, validationRules) { var payloadNumber = ~~payload[fieldConfigName]; Object.keys(validationRules).forEach(function (validationRuleName) { if ( validationRuleName === "min" && payloadNumber.length < ~~validationRules["min"] ) { errors[fieldConfigName] = { label: fieldsConfig[fieldConfigName].label, i18n: { message: "ERROR_FORM_MUST_BE_SMALLER_THAN", arguments: [validationRules["min"]] } }; } else if ( validationRuleName === "max" && payloadNumber.length > ~~validationRules["max"] ) { errors[fieldConfigName] = { label: fieldsConfig[fieldConfigName].label, i18n: { message: "ERROR_FORM_MUST_BE_GREATER_THAN", arguments: [validationRules["max"]] } }; } }); }