Merge branch 'develop' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/open_url_options

This commit is contained in:
Scott Pfeil 2022-01-21 10:29:46 -05:00
commit 54dd5351ed
4 changed files with 27 additions and 31 deletions

View File

@ -337,6 +337,7 @@ CGFloat const PanelAnimationDuration = 0.2;
}; };
void (^completion)(BOOL) = ^(BOOL finished){ void (^completion)(BOOL) = ^(BOOL finished){
self.leftView.hidden = true;
self.mainViewCoverView.hidden = YES; self.mainViewCoverView.hidden = YES;
[self panelDidDisappear:self.leftPanel animated:animated]; [self panelDidDisappear:self.leftPanel animated:animated];
self.mainView.accessibilityElementsHidden = NO; self.mainView.accessibilityElementsHidden = NO;
@ -360,6 +361,7 @@ CGFloat const PanelAnimationDuration = 0.2;
return; return;
} }
[MVMCoreDispatchUtility performBlockOnMainThread:^{ [MVMCoreDispatchUtility performBlockOnMainThread:^{
self.leftView.hidden = false;
if (self.mainViewLeading.constant < .1) { if (self.mainViewLeading.constant < .1) {
BOOL shouldExtendLeftPanel = [self shouldExtendLeftPanel]; BOOL shouldExtendLeftPanel = [self shouldExtendLeftPanel];
@ -540,6 +542,7 @@ CGFloat const PanelAnimationDuration = 0.2;
}; };
void (^completion)(BOOL) = ^(BOOL finished){ void (^completion)(BOOL) = ^(BOOL finished){
self.rightView.hidden = true;
self.mainViewCoverView.hidden = YES; self.mainViewCoverView.hidden = YES;
[self panelDidDisappear:self.rightPanel animated:animated]; [self panelDidDisappear:self.rightPanel animated:animated];
self.mainView.accessibilityElementsHidden = NO; self.mainView.accessibilityElementsHidden = NO;
@ -563,6 +566,7 @@ CGFloat const PanelAnimationDuration = 0.2;
return; return;
} }
[MVMCoreDispatchUtility performBlockOnMainThread:^{ [MVMCoreDispatchUtility performBlockOnMainThread:^{
self.rightView.hidden = false;
if (self.mainViewTrailing.constant < .1) { if (self.mainViewTrailing.constant < .1) {
BOOL shouldExtendRightPanel = [self shouldExtendRightPanel]; BOOL shouldExtendRightPanel = [self shouldExtendRightPanel];
@ -726,9 +730,9 @@ CGFloat const PanelAnimationDuration = 0.2;
[self addPanel:panel]; [self addPanel:panel];
self.leftView = panel.view; self.leftView = panel.view;
self.leftPanel = panel; self.leftPanel = panel;
self.leftView.hidden = YES;
self.leftView.translatesAutoresizingMaskIntoConstraints = NO; self.leftView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *leftPanelWidth = [NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270]; NSLayoutConstraint *leftPanelWidth = [NSLayoutConstraint constraintWithItem:self.leftView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270];
self.leftView.translatesAutoresizingMaskIntoConstraints = NO;
leftPanelWidth.active = YES; leftPanelWidth.active = YES;
self.leftPanelWidth = leftPanelWidth; self.leftPanelWidth = leftPanelWidth;
[NSLayoutConstraint constraintWithItem:self.mainView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES; [NSLayoutConstraint constraintWithItem:self.mainView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.leftView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0].active = YES;
@ -762,6 +766,7 @@ CGFloat const PanelAnimationDuration = 0.2;
[self addPanel:panel]; [self addPanel:panel];
self.rightView = panel.view; self.rightView = panel.view;
self.rightPanel = panel; self.rightPanel = panel;
self.rightView.hidden = YES;
self.rightView.translatesAutoresizingMaskIntoConstraints = NO; self.rightView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *rightPanelWidth = [NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270]; NSLayoutConstraint *rightPanelWidth = [NSLayoutConstraint constraintWithItem:self.rightView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:270];
rightPanelWidth.active = YES; rightPanelWidth.active = YES;

View File

@ -111,22 +111,6 @@ import MVMCore
/// - counter: keeps track of how many times causes another group validation /// - counter: keeps track of how many times causes another group validation
/// - Returns: validity for the FormGroupRule.rules /// - Returns: validity for the FormGroupRule.rules
public func validateGroup(_ group: FormGroupRule, counter: Int = 0) throws -> Bool { public func validateGroup(_ group: FormGroupRule, counter: Int = 0) throws -> Bool {
let tuple = group.validate(fields)
group.rules.forEach { rule in
for formKey in rule.fields {
guard let formField = fields[formKey] as? FormRuleWatcherFieldProtocol,
let fieldValidity = tuple.fieldValidity[formKey] else { continue }
formField.setValidity(fieldValidity, rule: rule)
}
}
// Notify the group watchers of validity.
for watcher in groupWatchers.filter({$0.groupName == group.groupName}) {
watcher.setValidity(tuple.valid)
}
var ruleChange = false
//loop the effects //loop the effects
group.effects?.forEach({ effect in group.effects?.forEach({ effect in
@ -140,24 +124,30 @@ import MVMCore
//update the group form rules //update the group form rules
if let ruleIds = effect.activatedRuleIds { if let ruleIds = effect.activatedRuleIds {
let didChange = self.updateRules(for: group, with: effectTuple.valid, for: effect.fieldKey, and: ruleIds) self.updateRules(for: group, with: effectTuple.valid, for: effect.fieldKey, and: ruleIds)
if(didChange) {
ruleChange = didChange
}
} }
} }
}) })
if ruleChange { //validate the form
if counter > 3 { let tuple = group.validate(fields)
throw ValidationError.other(error: "Effect caused validation loop error")
} else { //set the validity for the fields
return try self.validateGroup(group, counter: counter + 1) group.rules.forEach { rule in
for formKey in rule.fields {
guard let formField = fields[formKey] as? FormRuleWatcherFieldProtocol,
let fieldValidity = tuple.fieldValidity[formKey] else { continue }
formField.setValidity(fieldValidity, rule: rule)
} }
} else {
return tuple.valid
} }
// Notify the group watchers of validity.
for watcher in groupWatchers.filter({$0.groupName == group.groupName}) {
watcher.setValidity(tuple.valid)
}
return tuple.valid
} }
/// Updates the Fields in which a specific rule within a FormGroupRule validates against. /// Updates the Fields in which a specific rule within a FormGroupRule validates against.
@ -166,6 +156,7 @@ import MVMCore
/// - validity: If you the fieldKey should be added or removed from a rule /// - validity: If you the fieldKey should be added or removed from a rule
/// - fieldKey: FieldKey that will be added or removed from a rule /// - fieldKey: FieldKey that will be added or removed from a rule
/// - ruleIds: Array of ruleIds to add or remove the fieldKey into the rule.fields property /// - ruleIds: Array of ruleIds to add or remove the fieldKey into the rule.fields property
@discardableResult
public func updateRules(for group: FormGroupRule, with validity: Bool, for fieldKey: String, and ruleIds: [String]) -> Bool{ public func updateRules(for group: FormGroupRule, with validity: Bool, for fieldKey: String, and ruleIds: [String]) -> Bool{
//update the group rules based on the validation of this rule to show/hide //update the group rules based on the validation of this rule to show/hide
var ruleChange = false var ruleChange = false

View File

@ -50,7 +50,7 @@ public class RuleEqualsIgnoreCaseModel: RulesProtocol {
if let validity = previousFieldValidity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
previousValidity[formKey] = valid
break break
} }

View File

@ -43,6 +43,7 @@ public class RuleEqualsModel: RulesProtocol {
if compareValue != formField.formFieldValue() { if compareValue != formField.formFieldValue() {
valid = false valid = false
previousValidity[formKey] = valid
break break
} else { } else {
var fieldValidity = valid var fieldValidity = valid
@ -50,9 +51,8 @@ public class RuleEqualsModel: RulesProtocol {
if let validity = previousFieldValidity[formKey], !validity, fieldValidity { if let validity = previousFieldValidity[formKey], !validity, fieldValidity {
fieldValidity = false fieldValidity = false
} }
previousValidity[formKey] = valid
} }
previousValidity[formKey] = valid
} }
return (valid: valid, fieldValidity: previousValidity) return (valid: valid, fieldValidity: previousValidity)
} }