From 16ddcedd8093014966d915be6ff7189712f1bc43 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 22 Jul 2022 11:06:39 -0500 Subject: [PATCH 1/2] added new method for sending the server value Signed-off-by: Matt Bruce --- MVMCoreUI/FormUIHelpers/FormFieldProtocol.swift | 6 ++++++ MVMCoreUI/FormUIHelpers/FormValidator.swift | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/FormUIHelpers/FormFieldProtocol.swift b/MVMCoreUI/FormUIHelpers/FormFieldProtocol.swift index 01835ed9..7bd05047 100644 --- a/MVMCoreUI/FormUIHelpers/FormFieldProtocol.swift +++ b/MVMCoreUI/FormUIHelpers/FormFieldProtocol.swift @@ -23,11 +23,17 @@ public protocol FormFieldProtocol: FormItemProtocol { /// Returns the value of the field. Used for validations and possibly for sending to server. func formFieldValue() -> AnyHashable? + /// Returns the value of the field. Used sending to server. + func formFieldServerValue() -> AnyHashable? } public extension FormFieldProtocol { var baseValue: AnyHashable? { nil } + + func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } } public class FormFieldValidity{ diff --git a/MVMCoreUI/FormUIHelpers/FormValidator.swift b/MVMCoreUI/FormUIHelpers/FormValidator.swift index bf2f8c2f..3aa50030 100644 --- a/MVMCoreUI/FormUIHelpers/FormValidator.swift +++ b/MVMCoreUI/FormUIHelpers/FormValidator.swift @@ -209,7 +209,7 @@ public extension FormValidator { var extraParam: [String: Any] = [:] for (fieldKey, field) in fields { - if let formFieldValue = field.formFieldValue(), + if let formFieldValue = field.formFieldServerValue(), groupName == field.groupName { extraParam[fieldKey] = formFieldValue } From 1ed826b7efbc6b465ca76fb0d21a066ebbaa8faa Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Fri, 22 Jul 2022 11:07:37 -0500 Subject: [PATCH 2/2] implement an open method so this can be overridden if a class is subclassed. Signed-off-by: Matt Bruce --- .../Atoms/FormFields/TextFields/EntryFieldModel.swift | 4 ++++ MVMCoreUI/Atomic/Atoms/Selectors/CheckboxModel.swift | 7 +++++++ MVMCoreUI/Atomic/Atoms/Selectors/RadioBoxesModel.swift | 9 ++++++++- .../Atomic/Atoms/Selectors/RadioButtonModel.swift | 7 +++++++ .../Atoms/Selectors/RadioButtonSelectionHelper.swift | 4 ++++ .../Atomic/Atoms/Selectors/RadioSwatchesModel.swift | 9 ++++++--- MVMCoreUI/Atomic/Atoms/Selectors/ToggleModel.swift | 7 +++++++ .../Atomic/Molecules/Items/CarouselItemModel.swift | 10 ++++++++++ .../Atomic/Organisms/Carousel/CarouselModel.swift | 10 ++++++++++ 9 files changed, 63 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift index c3134e19..4e35ce30 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/EntryFieldModel.swift @@ -96,6 +96,10 @@ import Foundation return text } + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + public func setValidity(_ valid: Bool, errorMessage: String?) { if let ruleErrorMessage = errorMessage, fieldKey != nil { diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/CheckboxModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/CheckboxModel.swift index 063c322a..7b6b36d8 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/CheckboxModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/CheckboxModel.swift @@ -84,6 +84,13 @@ return selected } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Initializer //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioBoxesModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioBoxesModel.swift index b9cac95c..6348eac5 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioBoxesModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioBoxesModel.swift @@ -25,7 +25,7 @@ import MVMCore public var readOnly: Bool = false //-------------------------------------------------- - // MARK: - Methods + // MARK: - Form Validation //-------------------------------------------------- /// Returns the fieldValue of the selected box, otherwise the text of the selected box. @@ -37,6 +37,13 @@ import MVMCore return selectedBox?.fieldValue ?? selectedBox?.text } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Keys //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift index 79fcb9cb..8db46032 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonModel.swift @@ -64,6 +64,13 @@ open class RadioButtonModel: MoleculeModelProtocol, FormFieldProtocol { return fieldValue } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Codec //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonSelectionHelper.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonSelectionHelper.swift index da7ef0c2..2b6fa01d 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonSelectionHelper.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioButtonSelectionHelper.swift @@ -83,4 +83,8 @@ extension RadioButtonSelectionHelper { guard enabled else { return nil } return selectedRadioButtonModel?.fieldValue } + + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } } diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/RadioSwatchesModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/RadioSwatchesModel.swift index 21541d35..d5d3992a 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/RadioSwatchesModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/RadioSwatchesModel.swift @@ -21,11 +21,10 @@ import MVMCore public var baseValue: AnyHashable? public var enabled: Bool = true public var readOnly: Bool = false - + //-------------------------------------------------- - // MARK: - Methods + // MARK: - Form Validation //-------------------------------------------------- - /// Returns the fieldValue of the selected swatch, otherwise the text of selected swatch. public func formFieldValue() -> AnyHashable? { guard enabled else { return nil } @@ -35,6 +34,10 @@ import MVMCore return selectedSwatch?.fieldValue ?? selectedSwatch?.text } + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Keys //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Atoms/Selectors/ToggleModel.swift b/MVMCoreUI/Atomic/Atoms/Selectors/ToggleModel.swift index 4c860342..e8d50851 100644 --- a/MVMCoreUI/Atomic/Atoms/Selectors/ToggleModel.swift +++ b/MVMCoreUI/Atomic/Atoms/Selectors/ToggleModel.swift @@ -63,6 +63,13 @@ public class ToggleModel: MoleculeModelProtocol, FormFieldProtocol { return selected } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Initializer //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Molecules/Items/CarouselItemModel.swift b/MVMCoreUI/Atomic/Molecules/Items/CarouselItemModel.swift index 9858190d..79fe22ab 100644 --- a/MVMCoreUI/Atomic/Molecules/Items/CarouselItemModel.swift +++ b/MVMCoreUI/Atomic/Molecules/Items/CarouselItemModel.swift @@ -25,11 +25,21 @@ public var groupName: String = FormValidator.defaultGroupName public var baseValue: AnyHashable? + //-------------------------------------------------- + // MARK: - Validation + //-------------------------------------------------- public func formFieldValue() -> AnyHashable? { guard enabled else { return nil } return fieldValue } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Keys //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Organisms/Carousel/CarouselModel.swift b/MVMCoreUI/Atomic/Organisms/Carousel/CarouselModel.swift index 857984cf..bc3877e5 100644 --- a/MVMCoreUI/Atomic/Organisms/Carousel/CarouselModel.swift +++ b/MVMCoreUI/Atomic/Organisms/Carousel/CarouselModel.swift @@ -47,6 +47,9 @@ import UIKit self.molecules = molecules } + //-------------------------------------------------- + // MARK: - Validation + //-------------------------------------------------- public func formFieldValue() -> AnyHashable? { guard enabled else { return nil } @@ -63,6 +66,13 @@ import UIKit return fieldValue } + //-------------------------------------------------- + // MARK: - Server Value + //-------------------------------------------------- + open func formFieldServerValue() -> AnyHashable? { + return formFieldValue() + } + //-------------------------------------------------- // MARK: - Keys //--------------------------------------------------