From a87926a8107d14007be23a5d3ef87f091ee82e23 Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Mon, 10 Feb 2020 15:41:12 +0530 Subject: [PATCH 01/16] Story - 19072: List - Right Variable - Payments Initial Commit Added Molecule Class, Model Class --- MVMCoreUI.xcodeproj/project.pbxproj | 8 ++ .../RightVariablePaymentsList.swift | 106 ++++++++++++++++++ .../RightVariablePaymentsListModel.swift | 73 ++++++++++++ .../OtherHandlers/MoleculeObjectMapping.swift | 1 + 4 files changed, 188 insertions(+) create mode 100644 MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift create mode 100644 MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index f97e81aa..aacab776 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -123,6 +123,8 @@ 94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */; }; 94FB966223D797DA003D482B /* MFTextButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94FB966023D797DA003D482B /* MFTextButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; 94FB966323D797DA003D482B /* MFTextButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 94FB966123D797DA003D482B /* MFTextButton.m */; }; + AA11A41F23F15D3100D7962F /* RightVariablePaymentsList.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */; }; + AA11A42123F15D7000D7962F /* RightVariablePaymentsListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */; }; C003506123AA94CD00B6AC29 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = C003506023AA94CD00B6AC29 /* Button.swift */; }; C07065C42395677300FBF997 /* Link.swift in Sources */ = {isa = PBXBuildFile; fileRef = C07065C32395677300FBF997 /* Link.swift */; }; C695A67F23C9830600BFB94E /* UnOrderedListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C695A67E23C9830600BFB94E /* UnOrderedListModel.swift */; }; @@ -439,6 +441,8 @@ 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrimaryButtonView.m; sourceTree = ""; }; 94FB966023D797DA003D482B /* MFTextButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextButton.h; sourceTree = ""; }; 94FB966123D797DA003D482B /* MFTextButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFTextButton.m; sourceTree = ""; }; + AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RightVariablePaymentsList.swift; sourceTree = ""; }; + AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RightVariablePaymentsListModel.swift; sourceTree = ""; }; C003506023AA94CD00B6AC29 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; C07065C32395677300FBF997 /* Link.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Link.swift; sourceTree = ""; }; C695A67E23C9830600BFB94E /* UnOrderedListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnOrderedListModel.swift; sourceTree = ""; }; @@ -897,6 +901,8 @@ D28A839023CD4FD400DFE4FC /* CornerLabelsModel.swift */, 01509D902327ECE600EF99AA /* CornerLabels.swift */, D224798823142BF2003FCCF9 /* ToggleMolecules */, + AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */, + AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */, ); path = LeftRightViews; sourceTree = ""; @@ -1556,6 +1562,7 @@ DBC4391922442197001AB423 /* DashLine.swift in Sources */, 0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */, D2FB151D23A40F1500C20E10 /* MoleculeStackItem.swift in Sources */, + AA11A41F23F15D3100D7962F /* RightVariablePaymentsList.swift in Sources */, D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */, 0116A4E5228B19640094F3ED /* RadioButtonModel.swift in Sources */, 017BEB48236230DB0024EF95 /* MoleculeViewProtocol.swift in Sources */, @@ -1617,6 +1624,7 @@ D2755D7B23689C7500485468 /* TableViewCell.swift in Sources */, 0A21DB85235E06EF00C160A2 /* MFTextField.m in Sources */, 014AA72623C501E2006F3E93 /* ContainerModelProtocol.swift in Sources */, + AA11A42123F15D7000D7962F /* RightVariablePaymentsListModel.swift in Sources */, 01EB369223609801006832FA /* MoleculeStackModel.swift in Sources */, 012CA99E2385A2D3003F810F /* MFView+ModelExtension.swift in Sources */, D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */, diff --git a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift b/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift new file mode 100644 index 00000000..fe387ca2 --- /dev/null +++ b/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift @@ -0,0 +1,106 @@ +// +// RightVariablePaymentsList.swift +// MVMCoreUI +// +// Created by Lekshmi S on 10/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +@objcMembers public class RightVariablePaymentsList : TableViewCell { + + //----------------------------------------------------- + // MARK: - Outlets + //------------------------------------------------------- + + let leftLabel = Label.commonLabelB2(true) + let rightImage = MFLoadImageView() + let containerView = ViewConstrainingView() + + //------------------------------------------------------ + // MARK: - Properties + //------------------------------------------------------ + + let cellHeight: CGFloat = 65.0 + let leftPadding: CGFloat = 35.0 + let rightPadding: CGFloat = 54.0 + let spaceBetweenLabelAndImage: CGFloat = 40.0 + let imageWidth: CGFloat = 56.0 + let imageHeight: CGFloat = 16.0 + + //------------------------------------------------------ + // MARK: - Initialization + //-------------------------------------------------------- + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + setupView() + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setupView() + } + + //----------------------------------------------------- + // MARK: - View Lifecycle + //------------------------------------------------------- + + open override func updateView(_ size: CGFloat) { + super.updateView(size) + containerView.updateView(size) + leftLabel.updateView(size) + rightImage.updateView(size) + } + + override open func setupView() { + super.setupView() + guard leftLabel.superview == nil else { + return + } + + containerView.translatesAutoresizingMaskIntoConstraints = false + contentView.heightAnchor.constraint(equalToConstant: cellHeight).isActive = true + contentView.addSubview(containerView) + containerView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true + containerView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true + containerView.topAnchor.constraint(equalTo: topAnchor).isActive = true + containerView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true + + containerView.addSubview(leftLabel) + containerView.addSubview(rightImage) + + leftLabel.leadingAnchor.constraint(equalTo: containerView.leadingAnchor,constant: leftPadding).isActive = true + leftLabel.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true + leftLabel.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true + + rightImage.leadingAnchor.constraint(equalTo: leftLabel.leadingAnchor,constant: spaceBetweenLabelAndImage).isActive = true + rightImage.centerYAnchor.constraint(equalTo: leftLabel.centerYAnchor).isActive = true + rightImage.widthAnchor.constraint(equalToConstant: imageWidth).isActive = true + rightImage.heightAnchor.constraint(equalToConstant: imageHeight).isActive = true + containerView.trailingAnchor.constraint(equalTo: rightImage.trailingAnchor,constant: rightPadding).isActive = true + } + + //---------------------------------------------------- + // MARK: - Molecule + //------------------------------------------------------ + + override open func reset() { + super.reset() + + leftLabel.reset() + rightImage.reset() + } + + open func setAsMolecule() { + setupView() + } + + public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { + super.setWithModel(model, delegateObject, additionalData) + guard let model = model as? RightVariablePaymentsListModel else { return} + leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData) + rightImage.setWithModel(model.image, delegateObject, additionalData) + } +} diff --git a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift b/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift new file mode 100644 index 00000000..e3c9e889 --- /dev/null +++ b/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift @@ -0,0 +1,73 @@ +// +// RightVariablePaymentsListModel.swift +// MVMCoreUI +// +// Created by Lekshmi S on 10/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +public class RightVariablePaymentsListModel: ContainerModel, ListItemModelProtocol { + + public var line: LineModel? + public var hideArrow: Bool? + public var backgroundColor: Color? + public var action: ActionModelProtocol? + + public static var identifier: String = "listRVImg" + public var image: ImageViewModel + public var leftLabel: LabelModel + + func setDefaults() { + if useHorizontalMargins == nil { + useHorizontalMargins = true + } + if useVerticalMargins == nil { + useVerticalMargins = true + } + if topMarginPadding == nil { + topMarginPadding = 24 + } + if bottomMarginPadding == nil { + bottomMarginPadding = 0 + } + } + + public init(image: ImageViewModel, leftLabel: LabelModel) { + self.image = image + self.leftLabel = leftLabel + super.init() + setDefaults() + } + + private enum CodingKeys: String, CodingKey { + case moleculeName + case leftLabel + case image + case action + case hideArrow + } + + required public init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) + image = try typeContainer.decode(ImageViewModel.self, forKey: .image) + action = try typeContainer.decodeModelIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.actionType) + hideArrow = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideArrow) + try super.init(from: decoder) + setDefaults() + } + + + public override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(RightVariablePaymentsListModel.identifier, forKey: .moleculeName) + try container.encode(leftLabel, forKey: .leftLabel) + try container.encode(image, forKey: .image) + try container.encodeModelIfPresent(action, forKey: .action) + try container.encodeIfPresent(hideArrow, forKey: .hideArrow) + } + +} diff --git a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift index 8c1a36e3..4c384930 100644 --- a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift +++ b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift @@ -70,6 +70,7 @@ import Foundation MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBodyToggle.self, viewModelClass: HeadlineBodyToggleModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBodyLinkToggle.self, viewModelClass: HeadlineBodyLinkToggleModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ActionDetailWithImage.self, viewModelClass: ActionDetailWithImageModel.self) + MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: RightVariablePaymentsList.self, viewModelClass: RightVariablePaymentsListModel.self) // List items MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: MoleculeTableViewCell.self, viewModelClass: ListItemModel.self) From d683d420c8ee7eb19a37403340c36cbb22b5271f Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Tue, 11 Feb 2020 12:22:50 +0530 Subject: [PATCH 02/16] Code changes based on review: Modified class name according to Confluence Removed Initializers Removed extra spaces. --- MVMCoreUI.xcodeproj/project.pbxproj | 16 ++++----- ....swift => ListRightVariablePayments.swift} | 36 ++++++------------- ...t => ListRightVariablePaymentsModel.swift} | 13 ++----- .../OtherHandlers/MoleculeObjectMapping.swift | 2 +- 4 files changed, 22 insertions(+), 45 deletions(-) rename MVMCoreUI/Molecules/LeftRightViews/{RightVariablePaymentsList.swift => ListRightVariablePayments.swift} (78%) rename MVMCoreUI/Molecules/LeftRightViews/{RightVariablePaymentsListModel.swift => ListRightVariablePaymentsModel.swift} (83%) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index aacab776..aa416225 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -123,8 +123,8 @@ 94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */; }; 94FB966223D797DA003D482B /* MFTextButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94FB966023D797DA003D482B /* MFTextButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; 94FB966323D797DA003D482B /* MFTextButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 94FB966123D797DA003D482B /* MFTextButton.m */; }; - AA11A41F23F15D3100D7962F /* RightVariablePaymentsList.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */; }; - AA11A42123F15D7000D7962F /* RightVariablePaymentsListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */; }; + AA11A41F23F15D3100D7962F /* ListRightVariablePayments.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */; }; + AA11A42123F15D7000D7962F /* ListRightVariablePaymentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */; }; C003506123AA94CD00B6AC29 /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = C003506023AA94CD00B6AC29 /* Button.swift */; }; C07065C42395677300FBF997 /* Link.swift in Sources */ = {isa = PBXBuildFile; fileRef = C07065C32395677300FBF997 /* Link.swift */; }; C695A67F23C9830600BFB94E /* UnOrderedListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C695A67E23C9830600BFB94E /* UnOrderedListModel.swift */; }; @@ -441,8 +441,8 @@ 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrimaryButtonView.m; sourceTree = ""; }; 94FB966023D797DA003D482B /* MFTextButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextButton.h; sourceTree = ""; }; 94FB966123D797DA003D482B /* MFTextButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFTextButton.m; sourceTree = ""; }; - AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RightVariablePaymentsList.swift; sourceTree = ""; }; - AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RightVariablePaymentsListModel.swift; sourceTree = ""; }; + AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListRightVariablePayments.swift; sourceTree = ""; }; + AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListRightVariablePaymentsModel.swift; sourceTree = ""; }; C003506023AA94CD00B6AC29 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; C07065C32395677300FBF997 /* Link.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Link.swift; sourceTree = ""; }; C695A67E23C9830600BFB94E /* UnOrderedListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnOrderedListModel.swift; sourceTree = ""; }; @@ -901,8 +901,8 @@ D28A839023CD4FD400DFE4FC /* CornerLabelsModel.swift */, 01509D902327ECE600EF99AA /* CornerLabels.swift */, D224798823142BF2003FCCF9 /* ToggleMolecules */, - AA11A41E23F15D3100D7962F /* RightVariablePaymentsList.swift */, - AA11A42023F15D7000D7962F /* RightVariablePaymentsListModel.swift */, + AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */, + AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */, ); path = LeftRightViews; sourceTree = ""; @@ -1562,7 +1562,7 @@ DBC4391922442197001AB423 /* DashLine.swift in Sources */, 0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */, D2FB151D23A40F1500C20E10 /* MoleculeStackItem.swift in Sources */, - AA11A41F23F15D3100D7962F /* RightVariablePaymentsList.swift in Sources */, + AA11A41F23F15D3100D7962F /* ListRightVariablePayments.swift in Sources */, D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */, 0116A4E5228B19640094F3ED /* RadioButtonModel.swift in Sources */, 017BEB48236230DB0024EF95 /* MoleculeViewProtocol.swift in Sources */, @@ -1624,7 +1624,7 @@ D2755D7B23689C7500485468 /* TableViewCell.swift in Sources */, 0A21DB85235E06EF00C160A2 /* MFTextField.m in Sources */, 014AA72623C501E2006F3E93 /* ContainerModelProtocol.swift in Sources */, - AA11A42123F15D7000D7962F /* RightVariablePaymentsListModel.swift in Sources */, + AA11A42123F15D7000D7962F /* ListRightVariablePaymentsModel.swift in Sources */, 01EB369223609801006832FA /* MoleculeStackModel.swift in Sources */, 012CA99E2385A2D3003F810F /* MFView+ModelExtension.swift in Sources */, D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */, diff --git a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift b/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift similarity index 78% rename from MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift rename to MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift index fe387ca2..5eebb1e1 100644 --- a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsList.swift +++ b/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift @@ -1,5 +1,5 @@ // -// RightVariablePaymentsList.swift +// ListRightVariablePayments.swift // MVMCoreUI // // Created by Lekshmi S on 10/02/20. @@ -8,7 +8,7 @@ import Foundation -@objcMembers public class RightVariablePaymentsList : TableViewCell { +@objcMembers public class ListRightVariablePayments: TableViewCell { //----------------------------------------------------- // MARK: - Outlets @@ -16,7 +16,7 @@ import Foundation let leftLabel = Label.commonLabelB2(true) let rightImage = MFLoadImageView() - let containerView = ViewConstrainingView() + let containerView = Container() //------------------------------------------------------ // MARK: - Properties @@ -24,25 +24,11 @@ import Foundation let cellHeight: CGFloat = 65.0 let leftPadding: CGFloat = 35.0 - let rightPadding: CGFloat = 54.0 + let rightPadding: CGFloat = PaddingNine let spaceBetweenLabelAndImage: CGFloat = 40.0 let imageWidth: CGFloat = 56.0 let imageHeight: CGFloat = 16.0 - //------------------------------------------------------ - // MARK: - Initialization - //-------------------------------------------------------- - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - setupView() - } - - required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - setupView() - } - //----------------------------------------------------- // MARK: - View Lifecycle //------------------------------------------------------- @@ -59,10 +45,11 @@ import Foundation guard leftLabel.superview == nil else { return } - containerView.translatesAutoresizingMaskIntoConstraints = false contentView.heightAnchor.constraint(equalToConstant: cellHeight).isActive = true contentView.addSubview(containerView) + + //containerView constraints containerView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true containerView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true containerView.topAnchor.constraint(equalTo: topAnchor).isActive = true @@ -71,11 +58,13 @@ import Foundation containerView.addSubview(leftLabel) containerView.addSubview(rightImage) + //leftLabel constraints leftLabel.leadingAnchor.constraint(equalTo: containerView.leadingAnchor,constant: leftPadding).isActive = true leftLabel.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true leftLabel.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true - rightImage.leadingAnchor.constraint(equalTo: leftLabel.leadingAnchor,constant: spaceBetweenLabelAndImage).isActive = true + //rightImage constraints + rightImage.leadingAnchor.constraint(greaterThanOrEqualTo: leftLabel.trailingAnchor,constant: spaceBetweenLabelAndImage).isActive = true rightImage.centerYAnchor.constraint(equalTo: leftLabel.centerYAnchor).isActive = true rightImage.widthAnchor.constraint(equalToConstant: imageWidth).isActive = true rightImage.heightAnchor.constraint(equalToConstant: imageHeight).isActive = true @@ -88,18 +77,13 @@ import Foundation override open func reset() { super.reset() - leftLabel.reset() rightImage.reset() } - open func setAsMolecule() { - setupView() - } - public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { super.setWithModel(model, delegateObject, additionalData) - guard let model = model as? RightVariablePaymentsListModel else { return} + guard let model = model as? ListRightVariablePaymentsModel else { return} leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData) rightImage.setWithModel(model.image, delegateObject, additionalData) } diff --git a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift b/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift similarity index 83% rename from MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift rename to MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift index e3c9e889..db4dabc4 100644 --- a/MVMCoreUI/Molecules/LeftRightViews/RightVariablePaymentsListModel.swift +++ b/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift @@ -1,5 +1,5 @@ // -// RightVariablePaymentsListModel.swift +// ListRightVariablePaymentsModel.swift // MVMCoreUI // // Created by Lekshmi S on 10/02/20. @@ -8,13 +8,12 @@ import Foundation -public class RightVariablePaymentsListModel: ContainerModel, ListItemModelProtocol { +public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtocol { public var line: LineModel? public var hideArrow: Bool? public var backgroundColor: Color? public var action: ActionModelProtocol? - public static var identifier: String = "listRVImg" public var image: ImageViewModel public var leftLabel: LabelModel @@ -38,7 +37,6 @@ public class RightVariablePaymentsListModel: ContainerModel, ListItemModelProtoc self.image = image self.leftLabel = leftLabel super.init() - setDefaults() } private enum CodingKeys: String, CodingKey { @@ -46,7 +44,6 @@ public class RightVariablePaymentsListModel: ContainerModel, ListItemModelProtoc case leftLabel case image case action - case hideArrow } required public init(from decoder: Decoder) throws { @@ -54,20 +51,16 @@ public class RightVariablePaymentsListModel: ContainerModel, ListItemModelProtoc leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) image = try typeContainer.decode(ImageViewModel.self, forKey: .image) action = try typeContainer.decodeModelIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.actionType) - hideArrow = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideArrow) try super.init(from: decoder) setDefaults() } - public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(RightVariablePaymentsListModel.identifier, forKey: .moleculeName) + try container.encode(ListRightVariablePaymentsModel.identifier, forKey: .moleculeName) try container.encode(leftLabel, forKey: .leftLabel) try container.encode(image, forKey: .image) try container.encodeModelIfPresent(action, forKey: .action) - try container.encodeIfPresent(hideArrow, forKey: .hideArrow) } - } diff --git a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift index 4c384930..c3cf76be 100644 --- a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift +++ b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift @@ -70,7 +70,7 @@ import Foundation MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBodyToggle.self, viewModelClass: HeadlineBodyToggleModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBodyLinkToggle.self, viewModelClass: HeadlineBodyLinkToggleModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ActionDetailWithImage.self, viewModelClass: ActionDetailWithImageModel.self) - MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: RightVariablePaymentsList.self, viewModelClass: RightVariablePaymentsListModel.self) + MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListRightVariablePayments.self, viewModelClass: ListRightVariablePaymentsModel.self) // List items MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: MoleculeTableViewCell.self, viewModelClass: ListItemModel.self) From c9539814060ce0b2c17dff24c24f540b449e5bbc Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Thu, 13 Feb 2020 09:00:37 +0530 Subject: [PATCH 03/16] Removed container and added stackmodel --- MVMCoreUI.xcodeproj/project.pbxproj | 12 ++++- .../ListRightVariablePayments.swift | 49 +++++++------------ .../ListRightVariablePaymentsModel.swift | 13 +++-- 3 files changed, 35 insertions(+), 39 deletions(-) rename MVMCoreUI/Molecules/{LeftRightViews => DesignedComponents/List/RightVariable}/ListRightVariablePayments.swift (52%) rename MVMCoreUI/Molecules/{LeftRightViews => DesignedComponents/List/RightVariable}/ListRightVariablePaymentsModel.swift (86%) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 79fb28b4..b209d013 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -781,6 +781,15 @@ name = "Recovered References"; sourceTree = ""; }; + AA4FC2A323F4F69600E251DB /* RightVariable */ = { + isa = PBXGroup; + children = ( + AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */, + AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */, + ); + path = RightVariable; + sourceTree = ""; + }; D213347423842FE3008E41B3 /* Controllers */ = { isa = PBXGroup; children = ( @@ -909,8 +918,6 @@ D28A839023CD4FD400DFE4FC /* CornerLabelsModel.swift */, 01509D902327ECE600EF99AA /* CornerLabels.swift */, D224798823142BF2003FCCF9 /* ToggleMolecules */, - AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */, - AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */, ); path = LeftRightViews; sourceTree = ""; @@ -964,6 +971,7 @@ D22B38EA23F4E08B00490EF6 /* List */ = { isa = PBXGroup; children = ( + AA4FC2A323F4F69600E251DB /* RightVariable */, D22B38EB23F4E0AE00490EF6 /* LeftVariable */, ); path = List; diff --git a/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift similarity index 52% rename from MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift rename to MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 5eebb1e1..851a2137 100644 --- a/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -16,7 +16,7 @@ import Foundation let leftLabel = Label.commonLabelB2(true) let rightImage = MFLoadImageView() - let containerView = Container() + let stack = Stack(frame: .zero) //------------------------------------------------------ // MARK: - Properties @@ -35,9 +35,7 @@ import Foundation open override func updateView(_ size: CGFloat) { super.updateView(size) - containerView.updateView(size) - leftLabel.updateView(size) - rightImage.updateView(size) + stack.updateView(size) } override open func setupView() { @@ -45,30 +43,12 @@ import Foundation guard leftLabel.superview == nil else { return } - containerView.translatesAutoresizingMaskIntoConstraints = false - contentView.heightAnchor.constraint(equalToConstant: cellHeight).isActive = true - contentView.addSubview(containerView) - - //containerView constraints - containerView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true - containerView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true - containerView.topAnchor.constraint(equalTo: topAnchor).isActive = true - containerView.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true - - containerView.addSubview(leftLabel) - containerView.addSubview(rightImage) - - //leftLabel constraints - leftLabel.leadingAnchor.constraint(equalTo: containerView.leadingAnchor,constant: leftPadding).isActive = true - leftLabel.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true - leftLabel.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true - - //rightImage constraints - rightImage.leadingAnchor.constraint(greaterThanOrEqualTo: leftLabel.trailingAnchor,constant: spaceBetweenLabelAndImage).isActive = true - rightImage.centerYAnchor.constraint(equalTo: leftLabel.centerYAnchor).isActive = true - rightImage.widthAnchor.constraint(equalToConstant: imageWidth).isActive = true - rightImage.heightAnchor.constraint(equalToConstant: imageHeight).isActive = true - containerView.trailingAnchor.constraint(equalTo: rightImage.trailingAnchor,constant: rightPadding).isActive = true + stack.translatesAutoresizingMaskIntoConstraints = false + stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: rightImage)] + contentView.addSubview(stack) + containerHelper.constrainView(stack) + leftLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 901), for: .horizontal) + rightImage.setContentHuggingPriority(UILayoutPriority(rawValue: 902), for: .horizontal) } //---------------------------------------------------- @@ -77,8 +57,7 @@ import Foundation override open func reset() { super.reset() - leftLabel.reset() - rightImage.reset() + stack.reset() } public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { @@ -86,5 +65,15 @@ import Foundation guard let model = model as? ListRightVariablePaymentsModel else { return} leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData) rightImage.setWithModel(model.image, delegateObject, additionalData) + + // Create a stack model to use for the internal stack and set the alignment of label and image + let leftLabel = StackItemModel() + leftLabel.horizontalAlignment = .fill + let rightImage = StackItemModel() + rightImage.horizontalAlignment = .trailing + let stackModel = StackModel(molecules: [leftLabel,rightLabel]) + stackModel.axis = .horizontal + stack.model = stackModel + stack.restack() } } diff --git a/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift similarity index 86% rename from MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift rename to MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index db4dabc4..ef0693d0 100644 --- a/MVMCoreUI/Molecules/LeftRightViews/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -11,7 +11,8 @@ import Foundation public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtocol { public var line: LineModel? - public var hideArrow: Bool? + public var style: String? = "standard" + public var hideArrow: Bool? = false public var backgroundColor: Color? public var action: ActionModelProtocol? public static var identifier: String = "listRVImg" @@ -25,11 +26,8 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc if useVerticalMargins == nil { useVerticalMargins = true } - if topMarginPadding == nil { - topMarginPadding = 24 - } - if bottomMarginPadding == nil { - bottomMarginPadding = 0 + if image.height == nil { + image.height = 16.0 } } @@ -37,6 +35,7 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc self.image = image self.leftLabel = leftLabel super.init() + setDefaults() } private enum CodingKeys: String, CodingKey { @@ -58,7 +57,7 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) - try container.encode(ListRightVariablePaymentsModel.identifier, forKey: .moleculeName) + try container.encode(moleculeName, forKey: .moleculeName) try container.encode(leftLabel, forKey: .leftLabel) try container.encode(image, forKey: .image) try container.encodeModelIfPresent(action, forKey: .action) From d0d8fa54cad223846be705ced3d055a13f4b1959 Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Thu, 13 Feb 2020 12:12:12 +0530 Subject: [PATCH 04/16] Code fixes and removed unwanted code. --- .../ListRightVariablePayments.swift | 19 ++++++------------- .../ListRightVariablePaymentsModel.swift | 3 +++ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 851a2137..2fd75a66 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -15,20 +15,9 @@ import Foundation //------------------------------------------------------- let leftLabel = Label.commonLabelB2(true) - let rightImage = MFLoadImageView() + let rightImage = MFLoadImageView(pinnedEdges: .all) let stack = Stack(frame: .zero) - //------------------------------------------------------ - // MARK: - Properties - //------------------------------------------------------ - - let cellHeight: CGFloat = 65.0 - let leftPadding: CGFloat = 35.0 - let rightPadding: CGFloat = PaddingNine - let spaceBetweenLabelAndImage: CGFloat = 40.0 - let imageWidth: CGFloat = 56.0 - let imageHeight: CGFloat = 16.0 - //----------------------------------------------------- // MARK: - View Lifecycle //------------------------------------------------------- @@ -71,9 +60,13 @@ import Foundation leftLabel.horizontalAlignment = .fill let rightImage = StackItemModel() rightImage.horizontalAlignment = .trailing - let stackModel = StackModel(molecules: [leftLabel,rightLabel]) + let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal stack.model = stackModel stack.restack() } + + public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { + return 65 + } } diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index ef0693d0..08a6f3cb 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -29,6 +29,9 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc if image.height == nil { image.height = 16.0 } + if image.width == nil { + image.height = 56.0 + } } public init(image: ImageViewModel, leftLabel: LabelModel) { From 5b3e213ed61335b1ad2641d85a7da670faa44139 Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Thu, 13 Feb 2020 12:59:11 +0530 Subject: [PATCH 05/16] Removed constraints and prioritylevel as per review comments. --- .../List/RightVariable/ListRightVariablePayments.swift | 4 +--- .../List/RightVariable/ListRightVariablePaymentsModel.swift | 6 ------ 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 2fd75a66..34928e24 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -36,8 +36,6 @@ import Foundation stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: rightImage)] contentView.addSubview(stack) containerHelper.constrainView(stack) - leftLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 901), for: .horizontal) - rightImage.setContentHuggingPriority(UILayoutPriority(rawValue: 902), for: .horizontal) } //---------------------------------------------------- @@ -57,7 +55,7 @@ import Foundation // Create a stack model to use for the internal stack and set the alignment of label and image let leftLabel = StackItemModel() - leftLabel.horizontalAlignment = .fill + leftLabel.horizontalAlignment = .leading let rightImage = StackItemModel() rightImage.horizontalAlignment = .trailing let stackModel = StackModel(molecules: [leftLabel,rightImage]) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 08a6f3cb..3478cda1 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -26,12 +26,6 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc if useVerticalMargins == nil { useVerticalMargins = true } - if image.height == nil { - image.height = 16.0 - } - if image.width == nil { - image.height = 56.0 - } } public init(image: ImageViewModel, leftLabel: LabelModel) { From ca39be5643dfee4331c417ac7f5a7d8d66af519e Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Thu, 13 Feb 2020 19:41:11 +0530 Subject: [PATCH 06/16] Code Fixes after comments. --- .../List/RightVariable/ListRightVariablePayments.swift | 2 +- .../List/RightVariable/ListRightVariablePaymentsModel.swift | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 34928e24..626e8d42 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -14,7 +14,7 @@ import Foundation // MARK: - Outlets //------------------------------------------------------- - let leftLabel = Label.commonLabelB2(true) + let leftLabel = Label.commonLabelB1(true) let rightImage = MFLoadImageView(pinnedEdges: .all) let stack = Stack(frame: .zero) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 3478cda1..97f8e1d2 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -40,6 +40,7 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc case leftLabel case image case action + case backgroundColor } required public init(from decoder: Decoder) throws { @@ -47,6 +48,7 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) image = try typeContainer.decode(ImageViewModel.self, forKey: .image) action = try typeContainer.decodeModelIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.actionType) + backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) try super.init(from: decoder) setDefaults() } @@ -58,5 +60,7 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc try container.encode(leftLabel, forKey: .leftLabel) try container.encode(image, forKey: .image) try container.encodeModelIfPresent(action, forKey: .action) + try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) + } } From 23b2df3c825640d943ad9c1f6c3647a201152787 Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Fri, 14 Feb 2020 12:35:43 +0530 Subject: [PATCH 07/16] Code commit - Conforming to ListItemModel and MoleculeModelProtocol based on review comments. --- .../ListRightVariablePayments.swift | 4 +-- .../ListRightVariablePaymentsModel.swift | 25 +------------------ 2 files changed, 3 insertions(+), 26 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 626e8d42..5f2870ec 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -54,9 +54,9 @@ import Foundation rightImage.setWithModel(model.image, delegateObject, additionalData) // Create a stack model to use for the internal stack and set the alignment of label and image - let leftLabel = StackItemModel() + let leftLabel = StackItemModel(percent: 60) leftLabel.horizontalAlignment = .leading - let rightImage = StackItemModel() + let rightImage = StackItemModel(percent: 40) rightImage.horizontalAlignment = .trailing let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 97f8e1d2..23545142 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -8,49 +8,29 @@ import Foundation -public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtocol { +public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtocol { - public var line: LineModel? - public var style: String? = "standard" - public var hideArrow: Bool? = false - public var backgroundColor: Color? - public var action: ActionModelProtocol? public static var identifier: String = "listRVImg" public var image: ImageViewModel public var leftLabel: LabelModel - func setDefaults() { - if useHorizontalMargins == nil { - useHorizontalMargins = true - } - if useVerticalMargins == nil { - useVerticalMargins = true - } - } - public init(image: ImageViewModel, leftLabel: LabelModel) { self.image = image self.leftLabel = leftLabel super.init() - setDefaults() } private enum CodingKeys: String, CodingKey { case moleculeName case leftLabel case image - case action - case backgroundColor } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) image = try typeContainer.decode(ImageViewModel.self, forKey: .image) - action = try typeContainer.decodeModelIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.actionType) - backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) try super.init(from: decoder) - setDefaults() } public override func encode(to encoder: Encoder) throws { @@ -59,8 +39,5 @@ public class ListRightVariablePaymentsModel: ContainerModel, ListItemModelProtoc try container.encode(moleculeName, forKey: .moleculeName) try container.encode(leftLabel, forKey: .leftLabel) try container.encode(image, forKey: .image) - try container.encodeModelIfPresent(action, forKey: .action) - try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) - } } From 0d6322b69312171dac883de1baed58ea8d2dccae Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Fri, 14 Feb 2020 16:02:05 +0530 Subject: [PATCH 08/16] Removed percent for stackitems. --- .../List/RightVariable/ListRightVariablePayments.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 5f2870ec..626e8d42 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -54,9 +54,9 @@ import Foundation rightImage.setWithModel(model.image, delegateObject, additionalData) // Create a stack model to use for the internal stack and set the alignment of label and image - let leftLabel = StackItemModel(percent: 60) + let leftLabel = StackItemModel() leftLabel.horizontalAlignment = .leading - let rightImage = StackItemModel(percent: 40) + let rightImage = StackItemModel() rightImage.horizontalAlignment = .trailing let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal From 21fc9c1802385206368ec37e9768d77403524e69 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Fri, 14 Feb 2020 17:46:56 +0530 Subject: [PATCH 09/16] Adding up the percentages for stacks. --- .../List/RightVariable/ListRightVariablePayments.swift | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 626e8d42..e46cc469 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -37,16 +37,14 @@ import Foundation contentView.addSubview(stack) containerHelper.constrainView(stack) } - //---------------------------------------------------- // MARK: - Molecule //------------------------------------------------------ - override open func reset() { super.reset() stack.reset() } - +   public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { super.setWithModel(model, delegateObject, additionalData) guard let model = model as? ListRightVariablePaymentsModel else { return} @@ -54,9 +52,9 @@ import Foundation rightImage.setWithModel(model.image, delegateObject, additionalData) // Create a stack model to use for the internal stack and set the alignment of label and image - let leftLabel = StackItemModel() + let leftLabel = StackItemModel(percent: 70) leftLabel.horizontalAlignment = .leading - let rightImage = StackItemModel() + let rightImage = StackItemModel(percent: 30) rightImage.horizontalAlignment = .trailing let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal From 273b1317145fc83d7dcdf6c1890bc5e861b906a8 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Mon, 17 Feb 2020 22:50:43 +0530 Subject: [PATCH 10/16] Code commit - changes has to be done to model. --- MVMCoreUI/Atoms/Views/ImageViewModel.swift | 4 ++++ .../List/RightVariable/ListRightVariablePayments.swift | 5 +++-- .../RightVariable/ListRightVariablePaymentsModel.swift | 10 ++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI/Atoms/Views/ImageViewModel.swift b/MVMCoreUI/Atoms/Views/ImageViewModel.swift index ce46a930..c6eb9668 100644 --- a/MVMCoreUI/Atoms/Views/ImageViewModel.swift +++ b/MVMCoreUI/Atoms/Views/ImageViewModel.swift @@ -18,4 +18,8 @@ import Foundation public var imageFormat: String? public var width: CGFloat? public var height: CGFloat? + + public init(image: String) { + self.image = image + } } diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index e46cc469..91703fd7 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -36,6 +36,7 @@ import Foundation stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: rightImage)] contentView.addSubview(stack) containerHelper.constrainView(stack) + } //---------------------------------------------------- // MARK: - Molecule @@ -52,9 +53,9 @@ import Foundation rightImage.setWithModel(model.image, delegateObject, additionalData) // Create a stack model to use for the internal stack and set the alignment of label and image - let leftLabel = StackItemModel(percent: 70) + let leftLabel = StackItemModel() leftLabel.horizontalAlignment = .leading - let rightImage = StackItemModel(percent: 30) + let rightImage = StackItemModel() rightImage.horizontalAlignment = .trailing let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 23545142..422cd193 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -15,11 +15,17 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco public var leftLabel: LabelModel public init(image: ImageViewModel, leftLabel: LabelModel) { - self.image = image self.leftLabel = leftLabel + self.image = image super.init() } + func createPayPalImage() -> ImageViewModel { + let image = ImageViewModel(image: "imagename_paypal") + image.width = 30.0 + return image + } + private enum CodingKeys: String, CodingKey { case moleculeName case leftLabel @@ -29,7 +35,7 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) - image = try typeContainer.decode(ImageViewModel.self, forKey: .image) + image = try typeContainer.decodeIfPresent(ImageViewModel.self, forKey: .image) ?? createPayPalImage() try super.init(from: decoder) } From c43a3da712da4eeeed48e77f4c2547f722b6a459 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Tue, 18 Feb 2020 16:06:30 +0530 Subject: [PATCH 11/16] Code commit after adding a createPayPal function. --- .../List/RightVariable/ListRightVariablePayments.swift | 3 +-- .../List/RightVariable/ListRightVariablePaymentsModel.swift | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 91703fd7..046bc331 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -36,7 +36,6 @@ import Foundation stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: rightImage)] contentView.addSubview(stack) containerHelper.constrainView(stack) - } //---------------------------------------------------- // MARK: - Molecule @@ -45,7 +44,7 @@ import Foundation super.reset() stack.reset() } -   + public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { super.setWithModel(model, delegateObject, additionalData) guard let model = model as? ListRightVariablePaymentsModel else { return} diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 422cd193..681f2078 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -20,7 +20,7 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco super.init() } - func createPayPalImage() -> ImageViewModel { + static func createPayPalImage() -> ImageViewModel { let image = ImageViewModel(image: "imagename_paypal") image.width = 30.0 return image @@ -35,7 +35,7 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel) - image = try typeContainer.decodeIfPresent(ImageViewModel.self, forKey: .image) ?? createPayPalImage() + image = try typeContainer.decodeIfPresent(ImageViewModel.self, forKey: .image) ?? ListRightVariablePaymentsModel.createPayPalImage() try super.init(from: decoder) } From 72d0a24061f02ee27403f852d883c867823ba35e Mon Sep 17 00:00:00 2001 From: Lekshmi S Date: Tue, 18 Feb 2020 16:50:03 +0530 Subject: [PATCH 12/16] Modified code as image is optional. --- .../List/RightVariable/ListRightVariablePaymentsModel.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 681f2078..63719ec1 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -11,7 +11,7 @@ import Foundation public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtocol { public static var identifier: String = "listRVImg" - public var image: ImageViewModel + public var image: ImageViewModel? public var leftLabel: LabelModel public init(image: ImageViewModel, leftLabel: LabelModel) { @@ -44,6 +44,6 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(moleculeName, forKey: .moleculeName) try container.encode(leftLabel, forKey: .leftLabel) - try container.encode(image, forKey: .image) + try container.encodeIfPresent(image, forKey: .image) } } From fa0ec8ab4527a19774815df03911abe4b9150f2d Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 19 Feb 2020 09:40:17 -0500 Subject: [PATCH 13/16] minor fixes --- MVMCoreUI.xcodeproj/project.pbxproj | 2 +- .../List/RightVariable/ListRightVariablePayments.swift | 3 ++- .../List/RightVariable/ListRightVariablePaymentsModel.swift | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 698242f9..281a0672 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -789,8 +789,8 @@ AA4FC2A323F4F69600E251DB /* RightVariable */ = { isa = PBXGroup; children = ( - AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */, AA11A42023F15D7000D7962F /* ListRightVariablePaymentsModel.swift */, + AA11A41E23F15D3100D7962F /* ListRightVariablePayments.swift */, ); path = RightVariable; sourceTree = ""; diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 046bc331..42f0b7da 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -37,6 +37,7 @@ import Foundation contentView.addSubview(stack) containerHelper.constrainView(stack) } + //---------------------------------------------------- // MARK: - Molecule //------------------------------------------------------ @@ -47,7 +48,7 @@ import Foundation public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { super.setWithModel(model, delegateObject, additionalData) - guard let model = model as? ListRightVariablePaymentsModel else { return} + guard let model = model as? ListRightVariablePaymentsModel else { return } leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData) rightImage.setWithModel(model.image, delegateObject, additionalData) diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 63719ec1..681f2078 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -11,7 +11,7 @@ import Foundation public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtocol { public static var identifier: String = "listRVImg" - public var image: ImageViewModel? + public var image: ImageViewModel public var leftLabel: LabelModel public init(image: ImageViewModel, leftLabel: LabelModel) { @@ -44,6 +44,6 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(moleculeName, forKey: .moleculeName) try container.encode(leftLabel, forKey: .leftLabel) - try container.encodeIfPresent(image, forKey: .image) + try container.encode(image, forKey: .image) } } From 50d1d1a13a9af6b67fb50b5cc12171b765fb2d62 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 19 Feb 2020 17:12:50 -0500 Subject: [PATCH 14/16] Fixes to allow bundle improvements --- MVMCoreUI/Atoms/Views/ImageViewModel.swift | 14 +++++++++++++- MVMCoreUI/Atoms/Views/MFLoadImageView.swift | 6 +++--- .../RightVariable/ListRightVariablePayments.swift | 2 +- .../ListRightVariablePaymentsModel.swift | 7 +++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/MVMCoreUI/Atoms/Views/ImageViewModel.swift b/MVMCoreUI/Atoms/Views/ImageViewModel.swift index 97f31ad2..02140bf9 100644 --- a/MVMCoreUI/Atoms/Views/ImageViewModel.swift +++ b/MVMCoreUI/Atoms/Views/ImageViewModel.swift @@ -18,8 +18,20 @@ import Foundation public var width: CGFloat? public var height: CGFloat? public var contentMode: UIView.ContentMode? - + public var localBundle: Bundle? + public init(image: String) { self.image = image } + + private enum CodingKeys: String, CodingKey { + case backgroundColor + case image + case accessibilityText + case fallbackImage + case imageFormat + case width + case height + case contentMode + } } diff --git a/MVMCoreUI/Atoms/Views/MFLoadImageView.swift b/MVMCoreUI/Atoms/Views/MFLoadImageView.swift index 156e187d..0079d1a6 100644 --- a/MVMCoreUI/Atoms/Views/MFLoadImageView.swift +++ b/MVMCoreUI/Atoms/Views/MFLoadImageView.swift @@ -233,7 +233,7 @@ import UIKit if shouldLoadImage(withName: imageModel.image, width: width, height: height) { imageView.image = nil imageView.animatedImage = nil - loadImage(withName: imageModel.image, format: imageModel.imageFormat, width: width as NSNumber?, height: height as NSNumber?, customFallbackImage: imageModel.fallbackImage) + loadImage(withName: imageModel.image, format: imageModel.imageFormat, width: width as NSNumber?, height: height as NSNumber?, customFallbackImage: imageModel.fallbackImage, localBundle: imageModel.localBundle) } if let contentMode = imageModel.contentMode { @@ -276,7 +276,7 @@ import UIKit } // MARK: - load functions - public func loadImage(withName imageName: String?, format: String? = nil, width: NSNumber? = nil, height: NSNumber? = nil, customFallbackImage: String? = nil, allowServerParameters: Bool = false, completionHandler: MVMCoreGetImageBlock? = nil) { + public func loadImage(withName imageName: String?, format: String? = nil, width: NSNumber? = nil, height: NSNumber? = nil, customFallbackImage: String? = nil, allowServerParameters: Bool = false, localBundle: Bundle? = nil, completionHandler: MVMCoreGetImageBlock? = nil) { let completionBlock = completionHandler ?? defaultCompletionBlock() MVMCoreDispatchUtility.performBlock(onMainThread: { [unowned self] in @@ -308,7 +308,7 @@ import UIKit // Gifs aren't supported by default and need special handling MVMCoreCache.shared()?.getGif(imageName, useWidth: width != nil, widthForS7: width?.intValue ?? 0, useHeight: height != nil, heightForS7: height?.intValue ?? 0, format: format, localFallbackImageName: fallbackImageName, allowServerQueryParameters: allowServerParameters, completionHandler: finishedLoadingBlock) } else { - MVMCoreCache.shared()?.getImage(imageName, useWidth: width != nil, widthForS7: width?.intValue ?? 0, useHeight: height != nil, heightForS7: height?.intValue ?? 0, format: format, localFallbackImageName: fallbackImageName, allowServerQueryParameters: allowServerParameters, completionHandler: finishedLoadingBlock) + MVMCoreCache.shared()?.getImage(imageName, useWidth: width != nil, widthForS7: width?.intValue ?? 0, useHeight: height != nil, heightForS7: height?.intValue ?? 0, format: format, localFallbackImageName: fallbackImageName, allowServerQueryParameters: allowServerParameters, localBundle: localBundle, completionHandler: finishedLoadingBlock) } }) } diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift index 42f0b7da..2bfbc321 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePayments.swift @@ -56,7 +56,7 @@ import Foundation let leftLabel = StackItemModel() leftLabel.horizontalAlignment = .leading let rightImage = StackItemModel() - rightImage.horizontalAlignment = .trailing + rightImage.horizontalAlignment = .fill let stackModel = StackModel(molecules: [leftLabel,rightImage]) stackModel.axis = .horizontal stack.model = stackModel diff --git a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift index 681f2078..a8c6ff80 100644 --- a/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift +++ b/MVMCoreUI/Molecules/DesignedComponents/List/RightVariable/ListRightVariablePaymentsModel.swift @@ -21,8 +21,11 @@ public class ListRightVariablePaymentsModel: ListItemModel, MoleculeModelProtoco } static func createPayPalImage() -> ImageViewModel { - let image = ImageViewModel(image: "imagename_paypal") - image.width = 30.0 + let image = ImageViewModel(image: "imageName_PayPal_logo") + image.localBundle = MVMCoreUIUtility.bundleForMVMCoreUI() + image.width = 70.0 + image.height = 18.0 + image.contentMode = .scaleAspectFit return image } From 6563a14ff72c7d97a72a27f4ce6ca68f3bacbdf2 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 19 Feb 2020 17:19:36 -0500 Subject: [PATCH 15/16] moleculeName coddle --- MVMCoreUI/Atoms/Views/ImageViewModel.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/MVMCoreUI/Atoms/Views/ImageViewModel.swift b/MVMCoreUI/Atoms/Views/ImageViewModel.swift index 00694c69..0f585119 100644 --- a/MVMCoreUI/Atoms/Views/ImageViewModel.swift +++ b/MVMCoreUI/Atoms/Views/ImageViewModel.swift @@ -26,6 +26,7 @@ import Foundation } private enum CodingKeys: String, CodingKey { + case moleculeName case backgroundColor case image case accessibilityText From 0947ba93ef13dcfa7d33efd356fe9ae464e0e00c Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 19 Feb 2020 17:31:47 -0500 Subject: [PATCH 16/16] paypal image --- .../Contents.json | 23 ++++++++++++++++++ .../paypal_horiz_logo.jpeg | Bin 0 -> 1826 bytes .../paypal_horiz_logo@2x.jpeg | Bin 0 -> 3418 bytes .../paypal_horiz_logo@3x.jpeg | Bin 0 -> 4606 bytes 4 files changed, 23 insertions(+) create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/Contents.json create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo.jpeg create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo@2x.jpeg create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo@3x.jpeg diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/Contents.json b/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/Contents.json new file mode 100644 index 00000000..b4c381b8 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "paypal_horiz_logo.jpeg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "paypal_horiz_logo@2x.jpeg", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "paypal_horiz_logo@3x.jpeg", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo.jpeg b/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..95113ebf4001cf2eed20fbe23530dea3d1e475a9 GIT binary patch literal 1826 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 literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo@3x.jpeg b/MVMCoreUI/SupportingFiles/Media.xcassets/imageName_PayPal_logo.imageset/paypal_horiz_logo@3x.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..cbd78652ce3bdb9fb3e62b4b4522b2f40b1556a2 GIT binary patch literal 4606 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 literal 0 HcmV?d00001