From 483a50dd98383744650eb1fac6d202d7fb732ff0 Mon Sep 17 00:00:00 2001 From: Damodaram Date: Wed, 16 Sep 2020 15:45:56 +0530 Subject: [PATCH 1/3] tagging changes implemented --- .../TextFields/BaseDropdownEntryField.swift | 23 +++++++++++++++++++ .../BaseDropdownEntryFieldModel.swift | 4 ++++ .../TextFields/DateDropdownEntryField.swift | 1 + .../TextFields/ItemDropdownEntryField.swift | 1 + MVMCoreUI/Utility/MVMCoreUIConstants.h | 2 ++ MVMCoreUI/Utility/MVMCoreUIConstants.m | 2 ++ 6 files changed, 33 insertions(+) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift index ee697a3e..815fe2d2 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift @@ -27,6 +27,10 @@ import UIKit return caret }() + public var baseDropdownEntryFieldModel: BaseDropdownEntryFieldModel? { + return model as? BaseDropdownEntryFieldModel + } + //-------------------------------------------------- // MARK: - Property Observers //-------------------------------------------------- @@ -39,6 +43,14 @@ import UIKit } } + public var isTextChanged: Bool = false { + didSet { + if(isTextChanged) { + performDropdownAction() + } + } + } + //-------------------------------------------------- // MARK: - Initializers //-------------------------------------------------- @@ -80,4 +92,15 @@ import UIKit dropDownCaretView.setOptional(with: model.caretView, delegateObject, additionalData) } + + private func performDropdownAction() { + if let actionModel = baseDropdownEntryFieldModel?.action, var actionMap = actionModel.toJSON() { + if var analyticsData = actionMap[KeyAnalyticsData] as? JSONDictionary { + let taggedValue = (analyticsData[KeyAdobeTrackerLinkName] as? String ?? "") + (text ?? "") + analyticsData[KeyAdobeTrackerLinkName] = taggedValue + actionMap[KeyAnalyticsData] = analyticsData + } + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: delegateObject) + } + } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryFieldModel.swift index e34183de..0bb17284 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryFieldModel.swift @@ -12,6 +12,7 @@ //-------------------------------------------------- public var caretView: CaretViewModel? + public var action: ActionModelProtocol? public override class var identifier: String { return "" @@ -24,6 +25,7 @@ private enum CodingKeys: String, CodingKey { case moleculeName case caretView + case action } //-------------------------------------------------- @@ -34,6 +36,7 @@ try super.init(from: decoder) let typeContainer = try decoder.container(keyedBy: CodingKeys.self) caretView = try typeContainer.decodeIfPresent(CaretViewModel.self, forKey: .caretView) + action = try typeContainer.decodeModelIfPresent(codingKey: .action) } public override func encode(to encoder: Encoder) throws { @@ -41,5 +44,6 @@ var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(moleculeName, forKey: .moleculeName) try container.encode(caretView, forKey: .caretView) + try container.encodeModelIfPresent(action, forKey: .action) } } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift index 6ff950f6..edf1423f 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/DateDropdownEntryField.swift @@ -101,6 +101,7 @@ import UIKit } else { text = dateDropdownModel?.dateFormatter.string(from: date) } + isTextChanged = true } @objc public override func dismissFieldInput(_ sender: Any?) { diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift index cc8a4c71..735628bb 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryField.swift @@ -138,6 +138,7 @@ extension ItemDropdownEntryField: UIPickerViewDelegate, UIPickerViewDataSource { observeDropdownChange?(text ?? "", pickerData[row]) text = pickerData[row] itemDropdownEntryFieldModel?.selectedIndex = row + isTextChanged = true } } diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.h b/MVMCoreUI/Utility/MVMCoreUIConstants.h index 4c0a3553..a76bbc97 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.h +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.h @@ -42,6 +42,8 @@ extern NSString * const KeyIsOpaque; extern NSString * const KeyFieldKey; extern NSString * const KeyRequired; +extern NSString * const KeyAnalyticsData; +extern NSString * const KeyAdobeTrackerLinkName; #pragma mark - Values diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.m b/MVMCoreUI/Utility/MVMCoreUIConstants.m index 5f5a9a45..3e6ac813 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.m +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.m @@ -40,6 +40,8 @@ NSString * const KeyTextColor = @"textColor"; NSString * const KeyIsHidden = @"isHidden"; NSString * const KeyIsOpaque = @"isOpaque"; +NSString * const KeyAnalyticsData = @"analyticsData"; +NSString * const KeyAdobeTrackerLinkName = @"vzwi.mvmapp.LinkName"; #pragma mark - Values From 88a6421a7ee4e4fb69f9ddfd06f8bb728d8f5b0c Mon Sep 17 00:00:00 2001 From: Damodaram Date: Wed, 16 Sep 2020 20:28:55 +0530 Subject: [PATCH 2/3] updated based on review comments --- .../FormFields/TextFields/BaseDropdownEntryField.swift | 9 ++------- MVMCoreUI/Utility/MVMCoreUIConstants.h | 2 -- MVMCoreUI/Utility/MVMCoreUIConstants.m | 2 -- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift index 815fe2d2..f50ee379 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift @@ -94,13 +94,8 @@ import UIKit } private func performDropdownAction() { - if let actionModel = baseDropdownEntryFieldModel?.action, var actionMap = actionModel.toJSON() { - if var analyticsData = actionMap[KeyAnalyticsData] as? JSONDictionary { - let taggedValue = (analyticsData[KeyAdobeTrackerLinkName] as? String ?? "") + (text ?? "") - analyticsData[KeyAdobeTrackerLinkName] = taggedValue - actionMap[KeyAnalyticsData] = analyticsData - } - MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: nil, delegateObject: delegateObject) + if let actionModel = baseDropdownEntryFieldModel?.action, let actionMap = actionModel.toJSON() { + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: baseDropdownEntryFieldModel?.toJSON(), delegateObject: delegateObject) } } } diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.h b/MVMCoreUI/Utility/MVMCoreUIConstants.h index a76bbc97..4c0a3553 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.h +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.h @@ -42,8 +42,6 @@ extern NSString * const KeyIsOpaque; extern NSString * const KeyFieldKey; extern NSString * const KeyRequired; -extern NSString * const KeyAnalyticsData; -extern NSString * const KeyAdobeTrackerLinkName; #pragma mark - Values diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.m b/MVMCoreUI/Utility/MVMCoreUIConstants.m index 3e6ac813..5f5a9a45 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.m +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.m @@ -40,8 +40,6 @@ NSString * const KeyTextColor = @"textColor"; NSString * const KeyIsHidden = @"isHidden"; NSString * const KeyIsOpaque = @"isOpaque"; -NSString * const KeyAnalyticsData = @"analyticsData"; -NSString * const KeyAdobeTrackerLinkName = @"vzwi.mvmapp.LinkName"; #pragma mark - Values From 81aa0da7cbb88305d9686b7eecfa4dfac7c05f00 Mon Sep 17 00:00:00 2001 From: Damodaram Date: Fri, 18 Sep 2020 12:34:57 +0530 Subject: [PATCH 3/3] sending source model to action --- .../FormFields/TextFields/BaseDropdownEntryField.swift | 7 +++++-- MVMCoreUI/Utility/MVMCoreUIConstants.h | 1 + MVMCoreUI/Utility/MVMCoreUIConstants.m | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift index f50ee379..9a0b6923 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/BaseDropdownEntryField.swift @@ -30,6 +30,7 @@ import UIKit public var baseDropdownEntryFieldModel: BaseDropdownEntryFieldModel? { return model as? BaseDropdownEntryFieldModel } + var additionalData: [AnyHashable: Any]? //-------------------------------------------------- // MARK: - Property Observers @@ -87,7 +88,7 @@ import UIKit public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { super.set(with: model, delegateObject, additionalData) - + self.additionalData = additionalData guard let model = model as? BaseDropdownEntryFieldModel else { return } dropDownCaretView.setOptional(with: model.caretView, delegateObject, additionalData) @@ -95,7 +96,9 @@ import UIKit private func performDropdownAction() { if let actionModel = baseDropdownEntryFieldModel?.action, let actionMap = actionModel.toJSON() { - MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: baseDropdownEntryFieldModel?.toJSON(), delegateObject: delegateObject) + var additionalData = self.additionalData ?? [:] + additionalData[KeySourceModel] = baseDropdownEntryFieldModel + MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: additionalData, delegateObject: delegateObject) } } } diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.h b/MVMCoreUI/Utility/MVMCoreUIConstants.h index 4c0a3553..684d6044 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.h +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.h @@ -42,6 +42,7 @@ extern NSString * const KeyIsOpaque; extern NSString * const KeyFieldKey; extern NSString * const KeyRequired; +extern NSString * const KeySourceModel; #pragma mark - Values diff --git a/MVMCoreUI/Utility/MVMCoreUIConstants.m b/MVMCoreUI/Utility/MVMCoreUIConstants.m index 5f5a9a45..e4954b01 100644 --- a/MVMCoreUI/Utility/MVMCoreUIConstants.m +++ b/MVMCoreUI/Utility/MVMCoreUIConstants.m @@ -40,6 +40,7 @@ NSString * const KeyTextColor = @"textColor"; NSString * const KeyIsHidden = @"isHidden"; NSString * const KeyIsOpaque = @"isOpaque"; +NSString * const KeySourceModel = @"sourceModel"; #pragma mark - Values