refactored out setting form field validity within validation
refactored validate method to return tuple and again not mess with setting formfield validity Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
df2b6b4db2
commit
7c05d9fcc7
@ -53,7 +53,6 @@ public extension RulesProtocol {
|
|||||||
if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
|
if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
|
||||||
fieldValidity = false
|
fieldValidity = false
|
||||||
}
|
}
|
||||||
(formField as? FormRuleWatcherFieldProtocol)?.setValidity(fieldValidity, rule: self)
|
|
||||||
valid = valid && fieldValidity
|
valid = valid && fieldValidity
|
||||||
previousValidity[formKey] = fieldValidity
|
previousValidity[formKey] = fieldValidity
|
||||||
}
|
}
|
||||||
@ -66,19 +65,28 @@ public protocol RulesContainerProtocol{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public extension RulesContainerProtocol {
|
public extension RulesContainerProtocol {
|
||||||
func validate(_ fields: [String: FormFieldProtocol]) -> Bool {
|
/// This validation for Rules for the Validation or for Effects.
|
||||||
|
/// - Parameters:
|
||||||
|
/// - fields: Fields for the group
|
||||||
|
/// - setValidity: Since this function is for validation, this bool determines if you should set the FormFields.setValidity for a rule.
|
||||||
|
/// this method can be called for Form Validation and Effect Validation (this doesn't affect the submital of the form)
|
||||||
|
/// - Returns: Tuple(valid, fieldValidity)
|
||||||
|
/// - valid: bool for all rules
|
||||||
|
/// - fieldValidity: accumulation of all fieldKey: valid
|
||||||
|
func validate(_ fields: [String: FormFieldProtocol]) -> (valid: Bool, fieldValidity: [String:Bool] ) {
|
||||||
// Validate each rule.
|
// Validate each rule.
|
||||||
var valid = true
|
var valid = true
|
||||||
var previousValidity: [String: Bool] = [:]
|
var previousValidity: [String: Bool] = [:]
|
||||||
for rule in self.rules {
|
for rule in self.rules {
|
||||||
|
|
||||||
//validate the rule against the fields
|
//validate the rule against the fields
|
||||||
let tuple = rule.validate(fields, previousValidity)
|
let tuple = rule.validate(fields, previousValidity)
|
||||||
|
if let ruleId = rule.ruleId {
|
||||||
|
print("validation ruleId: \(ruleId) value: \(tuple) \nfields: \(rule.fields)" )
|
||||||
|
}
|
||||||
//merge the fieldValidity
|
//merge the fieldValidity
|
||||||
previousValidity = previousValidity.merging(tuple.fieldValidity) { (_, new) in new }
|
previousValidity = previousValidity.merging(tuple.fieldValidity) { (_, new) in new }
|
||||||
valid = valid && tuple.valid
|
valid = valid && tuple.valid
|
||||||
}
|
}
|
||||||
return valid
|
return (valid: valid, fieldValidity: previousValidity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user