From 593bae7820b676f2ddfcbf6d3b52b063b8c4a5cb Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Mon, 10 Feb 2020 11:49:03 +0530 Subject: [PATCH 1/8] Molecule-ThreeColumnPlanDataDividerList --- MVMCoreUI.xcodeproj/project.pbxproj | 8 ++ .../ThreeColumnPlanDataDividerList.swift | 91 +++++++++++++++++++ .../ThreeColumnPlanDataDividerListModel.swift | 52 +++++++++++ .../OtherHandlers/MoleculeObjectMapping.swift | 2 + 4 files changed, 153 insertions(+) create mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift create mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index a35514cb..1ca8be9b 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -95,6 +95,8 @@ 0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; }; 31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */; }; 31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15CA23D8924C00452370 /* CheckboxModel.swift */; }; + 52DD6C6B23E97B040011ECB2 /* ThreeColumnPlanDataDividerListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DD6C6A23E97B040011ECB2 /* ThreeColumnPlanDataDividerListModel.swift */; }; + 52DD6C6D23E97B5E0011ECB2 /* ThreeColumnPlanDataDividerList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52DD6C6C23E97B5E0011ECB2 /* ThreeColumnPlanDataDividerList.swift */; }; 9432A79F23DB47BA00719041 /* EntryFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */; }; 943784F5236B77BB006A1E82 /* GraphView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F3236B77BB006A1E82 /* GraphView.swift */; }; 943784F6236B77BB006A1E82 /* GraphViewAnimationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F4236B77BB006A1E82 /* GraphViewAnimationHandler.swift */; }; @@ -408,6 +410,8 @@ 0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxLabelModel.swift; sourceTree = ""; }; 31BE15CA23D8924C00452370 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = ""; }; + 52DD6C6A23E97B040011ECB2 /* ThreeColumnPlanDataDividerListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerListModel.swift; sourceTree = ""; }; + 52DD6C6C23E97B5E0011ECB2 /* ThreeColumnPlanDataDividerList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerList.swift; sourceTree = ""; }; 9402C34F23A2CEA3004B974C /* LeftRightLabelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftRightLabelModel.swift; sourceTree = ""; }; 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntryFieldContainer.swift; sourceTree = ""; }; 943784F3236B77BB006A1E82 /* GraphView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GraphView.swift; sourceTree = ""; }; @@ -873,6 +877,8 @@ D28A837E23CCA96400DFE4FC /* TabsModel.swift */, 94F217B423E0BF6100A47C06 /* PrimaryButtonView.h */, 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */, + 52DD6C6A23E97B040011ECB2 /* ThreeColumnPlanDataDividerListModel.swift */, + 52DD6C6C23E97B5E0011ECB2 /* ThreeColumnPlanDataDividerList.swift */, ); path = HorizontalCombinationViews; sourceTree = ""; @@ -1636,6 +1642,7 @@ 0A7EF86723D8B0AE00B2AAD1 /* DateDropdownEntryFieldModel.swift in Sources */, 94FB966323D797DA003D482B /* MFTextButton.m in Sources */, D260105323CEA61600764D80 /* ToggleModel.swift in Sources */, + 52DD6C6B23E97B040011ECB2 /* ThreeColumnPlanDataDividerListModel.swift in Sources */, 014AA72523C501E2006F3E93 /* ContainerModel.swift in Sources */, 0A7EF86523D8AFFF00B2AAD1 /* ItemDropdownEntryFieldModel.swift in Sources */, D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */, @@ -1714,6 +1721,7 @@ D2E1FADF2268B8E700AEFD8C /* ThreeLayerTableViewController.swift in Sources */, 0A21DB83235DFBC500C160A2 /* MdnEntryField.swift in Sources */, D28A837D23CCA86A00DFE4FC /* TabsListItemModel.swift in Sources */, + 52DD6C6D23E97B5E0011ECB2 /* ThreeColumnPlanDataDividerList.swift in Sources */, 012A88C6238DA34000FE3DA1 /* ModuleMoleculeModel.swift in Sources */, 94C2D9A123872BCC0006CF46 /* LabelAttributeUnderlineModel.swift in Sources */, D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */, diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift new file mode 100644 index 00000000..1624095c --- /dev/null +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift @@ -0,0 +1,91 @@ +// +// ThreeColumnPlanDataDividerList.swift +// MVMCoreUI +// +// Created by Acharya, Subhankar on 04/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +@objcMembers open class ThreeColumnPlanDataDividerList: TableViewCell { + + let leftHeadlineBody = HeadlineBody(frame: .zero) + let centerHeadLineBody = HeadlineBody(frame: .zero) + let rightHeadLineBody = HeadlineBody(frame: .zero) + let containerView = ViewConstrainingView() + let betweenHeadlineBodyPaddingConstant: CGFloat = 18.0 + let headlineBodyTopPaddingConstant: CGFloat = 48.0 + let containerViewPaddingConstant: CGFloat = 30.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) + } + // MARK: - MFViewProtocol + open override func updateView(_ size: CGFloat) { + super.updateView(size) + containerView.updateView(size) + leftHeadlineBody.updateView(size) + centerHeadLineBody.updateView(size) + rightHeadLineBody.updateView(size) + } + open override func setupView() { + super.setupView() + selectionStyle = .default + guard leftHeadlineBody.superview == nil else { + return + } + containerView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerView) + contentView.heightAnchor.constraint(greaterThanOrEqualToConstant: 103.0).isActive = true + containerView.pinView(toSuperView: contentView) + containerView.addSubview(leftHeadlineBody) + containerView.addSubview(centerHeadLineBody) + containerView.addSubview(rightHeadLineBody) + //width calculation of headlinebody + let constraint = rightHeadLineBody.widthAnchor.constraint(equalTo: containerView.widthAnchor, multiplier: 0.25) + constraint.isActive = true + rightHeadLineBody.setContentHuggingPriority(UILayoutPriority(rawValue: 900), for: .horizontal) + centerHeadLineBody.widthAnchor.constraint(equalTo: rightHeadLineBody.widthAnchor).isActive = true + leftHeadlineBody.widthAnchor.constraint(equalTo: rightHeadLineBody.widthAnchor).isActive = true + //Constraints of headlinebody to superview + leftHeadlineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true + centerHeadLineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true + rightHeadLineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true + + containerView.bottomAnchor.constraint(equalTo: leftHeadlineBody.bottomAnchor).isActive = true + containerView.bottomAnchor.constraint(equalTo: centerHeadLineBody.bottomAnchor).isActive = true + containerView.bottomAnchor.constraint(equalTo: rightHeadLineBody.bottomAnchor).isActive = true + + leftHeadlineBody.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: containerViewPaddingConstant).isActive = true + centerHeadLineBody.leadingAnchor.constraint(equalTo: leftHeadlineBody.trailingAnchor, constant: betweenHeadlineBodyPaddingConstant).isActive = true + rightHeadLineBody.leadingAnchor.constraint(equalTo: centerHeadLineBody.trailingAnchor, constant: betweenHeadlineBodyPaddingConstant).isActive = true + rightHeadLineBody.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -containerViewPaddingConstant).isActive = true + + } + // MARK: - MVMCoreUIMoleculeViewProtocol + public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { + super.setWithModel(model, delegateObject, additionalData) + guard let model = model as? ThreeColumnPlanDataDividerListModel else { return } + leftHeadlineBody.setWithModel(model.leftHeadlineBody, delegateObject, additionalData) + centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData) + centerHeadLineBody.isHidden = model.centerHeadlineBody == nil + rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData) + } + open override func reset() { + super.reset() + containerView.reset() + leftHeadlineBody.reset() + centerHeadLineBody.reset() + rightHeadLineBody.reset() + } + public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { + return 103 + } +} + diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift new file mode 100644 index 00000000..b9a94288 --- /dev/null +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift @@ -0,0 +1,52 @@ +// +// ThreeColumnPlanDataDividerListModel.swift +// MVMCoreUI +// +// Created by Acharya, Subhankar on 04/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import UIKit + +public class ThreeColumnPlanDataDividerListModel: ContainerModel, ListItemModelProtocol { + public var hideArrow: Bool? + public var style: String? + public var line: LineModel? + public var backgroundColor: Color? + public static var identifier: String = "list3CHBDiv" + public var leftHeadlineBody: HeadlineBodyModel + public var centerHeadlineBody: HeadlineBodyModel? + public var rightHeadlineBody: HeadlineBodyModel + + init(leftheadlineBody: HeadlineBodyModel, rightHeadLineBody: HeadlineBodyModel) { + self.leftHeadlineBody = leftheadlineBody + self.rightHeadlineBody = rightHeadLineBody + super.init() + } + private enum CodingKeys: String, CodingKey { + case style + case moleculeName + case leftHeadlineBody + case centerHeadlineBody + case rightHeadlineBody + } + required public init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + style = try typeContainer.decodeIfPresent(String.self, forKey: .style) + leftHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .leftHeadlineBody) + centerHeadlineBody = try typeContainer.decodeIfPresent(HeadlineBodyModel.self, forKey: .centerHeadlineBody) + rightHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .rightHeadlineBody) + try super.init(from: decoder) + } + public override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encodeIfPresent(style, forKey: .style) + try container.encode(ThreeColumnPlanDataDividerListModel.identifier, forKey: .moleculeName) + try container.encode(leftHeadlineBody, forKey: .leftHeadlineBody) + try container.encodeIfPresent(centerHeadlineBody, forKey: .centerHeadlineBody) + try container.encode(rightHeadlineBody, forKey: .rightHeadlineBody) + } + +} + diff --git a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift index d3523ccf..cbfacbb7 100644 --- a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift +++ b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift @@ -55,6 +55,8 @@ import Foundation // Horizontal Combination Molecules MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: StringAndMoleculeView.self, viewModelClass: StringAndMoleculeModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ImageHeadlineBody.self, viewModelClass: ImageHeadlineBodyModel.self) + MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ThreeColumnPlanDataDividerList.self, viewModelClass: ThreeColumnPlanDataDividerListModel.self) + // Vertical Combination Molecules MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBody.self, viewModelClass: HeadlineBodyModel.self) From c94a440008a53977e4bd286aba9ba461b442a648 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Mon, 10 Feb 2020 11:54:45 +0530 Subject: [PATCH 2/8] ThreeColumnPlanDataDividerList reference file --- MVMCoreUI.xcodeproj/project.pbxproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index f97e81aa..e11334c6 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -95,6 +95,8 @@ 0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; }; 31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */; }; 31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15CA23D8924C00452370 /* CheckboxModel.swift */; }; + 5248BFEC23F12E350059236A /* ThreeColumnPlanDataDividerList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */; }; + 5248BFED23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */; }; 9432A79F23DB47BA00719041 /* EntryFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */; }; 943784F5236B77BB006A1E82 /* GraphView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F3236B77BB006A1E82 /* GraphView.swift */; }; 943784F6236B77BB006A1E82 /* GraphViewAnimationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F4236B77BB006A1E82 /* GraphViewAnimationHandler.swift */; }; @@ -412,6 +414,8 @@ 0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxLabelModel.swift; sourceTree = ""; }; 31BE15CA23D8924C00452370 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = ""; }; + 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerList.swift; sourceTree = ""; }; + 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerListModel.swift; sourceTree = ""; }; 9402C34F23A2CEA3004B974C /* LeftRightLabelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftRightLabelModel.swift; sourceTree = ""; }; 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntryFieldContainer.swift; sourceTree = ""; }; 943784F3236B77BB006A1E82 /* GraphView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GraphView.swift; sourceTree = ""; }; @@ -880,6 +884,8 @@ D224798E2316A995003FCCF9 /* HorizontalCombinationViews */ = { isa = PBXGroup; children = ( + 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */, + 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */, D2E2A99B23D8D975000B42E6 /* ImageHeadlineBodyModel.swift */, D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */, D28A838E23CCDEDE00DFE4FC /* TwoButtonViewModel.swift */, @@ -1541,6 +1547,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5248BFED23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift in Sources */, 0A5D59C223AD2F5700EFD9E9 /* AppleGuidelinesProtocol.swift in Sources */, 943784F5236B77BB006A1E82 /* GraphView.swift in Sources */, 31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */, @@ -1638,6 +1645,7 @@ 31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */, D260105523CEA7DC00764D80 /* MVMCoreUISwitch+Model.swift in Sources */, D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */, + 5248BFEC23F12E350059236A /* ThreeColumnPlanDataDividerList.swift in Sources */, 0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */, 0A7EF85B23D8A52800B2AAD1 /* EntryFieldModel.swift in Sources */, 94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */, From 05aaac573da65c1c83d502c023ad64cebba39646 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Tue, 11 Feb 2020 17:30:34 +0530 Subject: [PATCH 3/8] Code checkin after changing way of implementation. --- MVMCoreUI.xcodeproj/project.pbxproj | 16 ++--- .../ListThreeColumnPlanDataDivider.swift | 67 +++++++++++++++++++ .../ListThreeColumnPlanDataDividerModel.swift | 52 ++++++++++++++ .../OtherHandlers/MoleculeObjectMapping.swift | 2 +- 4 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift create mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index e11334c6..23257a31 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -95,8 +95,8 @@ 0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; }; 31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */; }; 31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15CA23D8924C00452370 /* CheckboxModel.swift */; }; - 5248BFEC23F12E350059236A /* ThreeColumnPlanDataDividerList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */; }; - 5248BFED23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */; }; + 5248BFEC23F12E350059236A /* ListThreeColumnPlanDataDivider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEA23F12E350059236A /* ListThreeColumnPlanDataDivider.swift */; }; + 5248BFED23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */; }; 9432A79F23DB47BA00719041 /* EntryFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */; }; 943784F5236B77BB006A1E82 /* GraphView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F3236B77BB006A1E82 /* GraphView.swift */; }; 943784F6236B77BB006A1E82 /* GraphViewAnimationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 943784F4236B77BB006A1E82 /* GraphViewAnimationHandler.swift */; }; @@ -414,8 +414,8 @@ 0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = ""; }; 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxLabelModel.swift; sourceTree = ""; }; 31BE15CA23D8924C00452370 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = ""; }; - 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerList.swift; sourceTree = ""; }; - 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThreeColumnPlanDataDividerListModel.swift; sourceTree = ""; }; + 5248BFEA23F12E350059236A /* ListThreeColumnPlanDataDivider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListThreeColumnPlanDataDivider.swift; sourceTree = ""; }; + 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListThreeColumnPlanDataDividerModel.swift; sourceTree = ""; }; 9402C34F23A2CEA3004B974C /* LeftRightLabelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LeftRightLabelModel.swift; sourceTree = ""; }; 9432A79E23DB47BA00719041 /* EntryFieldContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EntryFieldContainer.swift; sourceTree = ""; }; 943784F3236B77BB006A1E82 /* GraphView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GraphView.swift; sourceTree = ""; }; @@ -884,8 +884,8 @@ D224798E2316A995003FCCF9 /* HorizontalCombinationViews */ = { isa = PBXGroup; children = ( - 5248BFEA23F12E350059236A /* ThreeColumnPlanDataDividerList.swift */, - 5248BFEB23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift */, + 5248BFEA23F12E350059236A /* ListThreeColumnPlanDataDivider.swift */, + 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */, D2E2A99B23D8D975000B42E6 /* ImageHeadlineBodyModel.swift */, D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */, D28A838E23CCDEDE00DFE4FC /* TwoButtonViewModel.swift */, @@ -1547,7 +1547,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5248BFED23F12E350059236A /* ThreeColumnPlanDataDividerListModel.swift in Sources */, + 5248BFED23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift in Sources */, 0A5D59C223AD2F5700EFD9E9 /* AppleGuidelinesProtocol.swift in Sources */, 943784F5236B77BB006A1E82 /* GraphView.swift in Sources */, 31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */, @@ -1645,7 +1645,7 @@ 31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */, D260105523CEA7DC00764D80 /* MVMCoreUISwitch+Model.swift in Sources */, D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */, - 5248BFEC23F12E350059236A /* ThreeColumnPlanDataDividerList.swift in Sources */, + 5248BFEC23F12E350059236A /* ListThreeColumnPlanDataDivider.swift in Sources */, 0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */, 0A7EF85B23D8A52800B2AAD1 /* EntryFieldModel.swift in Sources */, 94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */, diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift new file mode 100644 index 00000000..c34c7a55 --- /dev/null +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift @@ -0,0 +1,67 @@ +// +// ThreeColumnPlanDataDividerList.swift +// MVMCoreUI +// +// Created by Acharya, Subhankar on 04/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import Foundation + +@objcMembers open class ListThreeColumnPlanDataDivider: TableViewCell { + + let leftHeadlineBody = HeadlineBody(frame: .zero) + let centerHeadLineBody = HeadlineBody(frame: .zero) + let rightHeadLineBody = HeadlineBody(frame: .zero) + private var stack = UIStackView() + + // MARK: - MFViewProtocol + open override func updateView(_ size: CGFloat) { + super.updateView(size) + leftHeadlineBody.updateView(size) + centerHeadLineBody.updateView(size) + rightHeadLineBody.updateView(size) + } + + open override func setupView() { + super.setupView() + guard leftHeadlineBody.superview == nil else { + return + } + //using stackView to align the three headlineBody + stack.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(stack) + stack.addArrangedSubview(leftHeadlineBody) + stack.addArrangedSubview(centerHeadLineBody) + stack.addArrangedSubview(rightHeadLineBody) + NSLayoutConstraint.constraintPinSubview(stack, pinTop: true, topConstant: 0, pinBottom: false, bottomConstant: 0, pinLeft: true, leftConstant: PaddingDefaultHorizontalSpacing, pinRight: true, rightConstant: PaddingDefaultHorizontalSpacing) + stack.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true + stack.axis = .horizontal + stack.spacing = 35 + stack.distribution = .fillProportionally + styleTallDivider() + } + + // MARK: - MVMCoreUIMoleculeViewProtocol + public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { + super.setWithModel(model, delegateObject, additionalData) + guard let model = model as? ListThreeColumnPlanDataDividerModel else { return } + leftHeadlineBody.setWithModel(model.leftHeadlineBody, delegateObject, additionalData) + centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData) + rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData) + } + + open override func reset() { + super.reset() + styleTallDivider() + leftHeadlineBody.reset() + centerHeadLineBody.reset() + rightHeadLineBody.reset() + } + + public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { + return 103 + } + +} + diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift new file mode 100644 index 00000000..0da1499d --- /dev/null +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift @@ -0,0 +1,52 @@ +// +// ThreeColumnPlanDataDividerListModel.swift +// MVMCoreUI +// +// Created by Acharya, Subhankar on 04/02/20. +// Copyright © 2020 Verizon Wireless. All rights reserved. +// + +import UIKit + +public class ListThreeColumnPlanDataDividerModel: ContainerModel, ListItemModelProtocol { + public var hideArrow: Bool? + public var style: String? = "tallDivider" + public var line: LineModel? + public var backgroundColor: Color? + public static var identifier: String = "list3CHBDiv" + public var leftHeadlineBody: HeadlineBodyModel + public var centerHeadlineBody: HeadlineBodyModel + public var rightHeadlineBody: HeadlineBodyModel + + public init(leftHeadlineBody: HeadlineBodyModel, centerHeadlineBody:HeadlineBodyModel, rightHeadlineBody: HeadlineBodyModel) { + self.leftHeadlineBody = leftHeadlineBody + self.centerHeadlineBody = centerHeadlineBody + self.rightHeadlineBody = rightHeadlineBody + super.init() + } + + private enum CodingKeys: String, CodingKey { + case moleculeName + case leftHeadlineBody + case centerHeadlineBody + case rightHeadlineBody + } + + required public init(from decoder: Decoder) throws { + let typeContainer = try decoder.container(keyedBy: CodingKeys.self) + leftHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .leftHeadlineBody) + centerHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .centerHeadlineBody) + rightHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .rightHeadlineBody) + try super.init(from: decoder) + } + + public override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(moleculeName, forKey: .moleculeName) + try container.encode(leftHeadlineBody, forKey: .leftHeadlineBody) + try container.encode(centerHeadlineBody, forKey: .centerHeadlineBody) + try container.encode(rightHeadlineBody, forKey: .rightHeadlineBody) + } +} + diff --git a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift index b029b352..94407366 100644 --- a/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift +++ b/MVMCoreUI/OtherHandlers/MoleculeObjectMapping.swift @@ -55,7 +55,7 @@ import Foundation // Horizontal Combination Molecules MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: StringAndMoleculeView.self, viewModelClass: StringAndMoleculeModel.self) MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ImageHeadlineBody.self, viewModelClass: ImageHeadlineBodyModel.self) - MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ThreeColumnPlanDataDividerList.self, viewModelClass: ThreeColumnPlanDataDividerListModel.self) + MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListThreeColumnPlanDataDivider.self, viewModelClass: ListThreeColumnPlanDataDividerModel.self) // Vertical Combination Molecules From fb65f9e9765576ac6957ed11f4249a2f7f207d2e Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Tue, 11 Feb 2020 17:31:28 +0530 Subject: [PATCH 4/8] Deleted the files after changing naming convention. --- .../ThreeColumnPlanDataDividerList.swift | 91 ------------------- .../ThreeColumnPlanDataDividerListModel.swift | 52 ----------- 2 files changed, 143 deletions(-) delete mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift delete mode 100644 MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift deleted file mode 100644 index 1624095c..00000000 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerList.swift +++ /dev/null @@ -1,91 +0,0 @@ -// -// ThreeColumnPlanDataDividerList.swift -// MVMCoreUI -// -// Created by Acharya, Subhankar on 04/02/20. -// Copyright © 2020 Verizon Wireless. All rights reserved. -// - -import Foundation - -@objcMembers open class ThreeColumnPlanDataDividerList: TableViewCell { - - let leftHeadlineBody = HeadlineBody(frame: .zero) - let centerHeadLineBody = HeadlineBody(frame: .zero) - let rightHeadLineBody = HeadlineBody(frame: .zero) - let containerView = ViewConstrainingView() - let betweenHeadlineBodyPaddingConstant: CGFloat = 18.0 - let headlineBodyTopPaddingConstant: CGFloat = 48.0 - let containerViewPaddingConstant: CGFloat = 30.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) - } - // MARK: - MFViewProtocol - open override func updateView(_ size: CGFloat) { - super.updateView(size) - containerView.updateView(size) - leftHeadlineBody.updateView(size) - centerHeadLineBody.updateView(size) - rightHeadLineBody.updateView(size) - } - open override func setupView() { - super.setupView() - selectionStyle = .default - guard leftHeadlineBody.superview == nil else { - return - } - containerView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerView) - contentView.heightAnchor.constraint(greaterThanOrEqualToConstant: 103.0).isActive = true - containerView.pinView(toSuperView: contentView) - containerView.addSubview(leftHeadlineBody) - containerView.addSubview(centerHeadLineBody) - containerView.addSubview(rightHeadLineBody) - //width calculation of headlinebody - let constraint = rightHeadLineBody.widthAnchor.constraint(equalTo: containerView.widthAnchor, multiplier: 0.25) - constraint.isActive = true - rightHeadLineBody.setContentHuggingPriority(UILayoutPriority(rawValue: 900), for: .horizontal) - centerHeadLineBody.widthAnchor.constraint(equalTo: rightHeadLineBody.widthAnchor).isActive = true - leftHeadlineBody.widthAnchor.constraint(equalTo: rightHeadLineBody.widthAnchor).isActive = true - //Constraints of headlinebody to superview - leftHeadlineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true - centerHeadLineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true - rightHeadLineBody.topAnchor.constraint(equalTo: containerView.topAnchor, constant: headlineBodyTopPaddingConstant).isActive = true - - containerView.bottomAnchor.constraint(equalTo: leftHeadlineBody.bottomAnchor).isActive = true - containerView.bottomAnchor.constraint(equalTo: centerHeadLineBody.bottomAnchor).isActive = true - containerView.bottomAnchor.constraint(equalTo: rightHeadLineBody.bottomAnchor).isActive = true - - leftHeadlineBody.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: containerViewPaddingConstant).isActive = true - centerHeadLineBody.leadingAnchor.constraint(equalTo: leftHeadlineBody.trailingAnchor, constant: betweenHeadlineBodyPaddingConstant).isActive = true - rightHeadLineBody.leadingAnchor.constraint(equalTo: centerHeadLineBody.trailingAnchor, constant: betweenHeadlineBodyPaddingConstant).isActive = true - rightHeadLineBody.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -containerViewPaddingConstant).isActive = true - - } - // MARK: - MVMCoreUIMoleculeViewProtocol - public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) { - super.setWithModel(model, delegateObject, additionalData) - guard let model = model as? ThreeColumnPlanDataDividerListModel else { return } - leftHeadlineBody.setWithModel(model.leftHeadlineBody, delegateObject, additionalData) - centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData) - centerHeadLineBody.isHidden = model.centerHeadlineBody == nil - rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData) - } - open override func reset() { - super.reset() - containerView.reset() - leftHeadlineBody.reset() - centerHeadLineBody.reset() - rightHeadLineBody.reset() - } - public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { - return 103 - } -} - diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift deleted file mode 100644 index b9a94288..00000000 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ThreeColumnPlanDataDividerListModel.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// ThreeColumnPlanDataDividerListModel.swift -// MVMCoreUI -// -// Created by Acharya, Subhankar on 04/02/20. -// Copyright © 2020 Verizon Wireless. All rights reserved. -// - -import UIKit - -public class ThreeColumnPlanDataDividerListModel: ContainerModel, ListItemModelProtocol { - public var hideArrow: Bool? - public var style: String? - public var line: LineModel? - public var backgroundColor: Color? - public static var identifier: String = "list3CHBDiv" - public var leftHeadlineBody: HeadlineBodyModel - public var centerHeadlineBody: HeadlineBodyModel? - public var rightHeadlineBody: HeadlineBodyModel - - init(leftheadlineBody: HeadlineBodyModel, rightHeadLineBody: HeadlineBodyModel) { - self.leftHeadlineBody = leftheadlineBody - self.rightHeadlineBody = rightHeadLineBody - super.init() - } - private enum CodingKeys: String, CodingKey { - case style - case moleculeName - case leftHeadlineBody - case centerHeadlineBody - case rightHeadlineBody - } - required public init(from decoder: Decoder) throws { - let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - style = try typeContainer.decodeIfPresent(String.self, forKey: .style) - leftHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .leftHeadlineBody) - centerHeadlineBody = try typeContainer.decodeIfPresent(HeadlineBodyModel.self, forKey: .centerHeadlineBody) - rightHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .rightHeadlineBody) - try super.init(from: decoder) - } - public override func encode(to encoder: Encoder) throws { - try super.encode(to: encoder) - var container = encoder.container(keyedBy: CodingKeys.self) - try container.encodeIfPresent(style, forKey: .style) - try container.encode(ThreeColumnPlanDataDividerListModel.identifier, forKey: .moleculeName) - try container.encode(leftHeadlineBody, forKey: .leftHeadlineBody) - try container.encodeIfPresent(centerHeadlineBody, forKey: .centerHeadlineBody) - try container.encode(rightHeadlineBody, forKey: .rightHeadlineBody) - } - -} - From d5ac7e3e6dabc7957e58c40f9ce0f2654f928890 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Tue, 11 Feb 2020 17:33:12 +0530 Subject: [PATCH 5/8] removed line break --- .../ListThreeColumnPlanDataDivider.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift index c34c7a55..0dadc8fa 100644 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift @@ -62,6 +62,5 @@ import Foundation public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { return 103 } - } From d92c5b5679b8ccce8b7ae26cf240e47d34fd36bb Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Tue, 11 Feb 2020 22:21:07 +0530 Subject: [PATCH 6/8] Code changes using the StackModel --- .../ListThreeColumnPlanDataDivider.swift | 32 ++++++++----------- .../Molecules/Items/StackItemModel.swift | 5 +++ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift index 0dadc8fa..9e821f25 100644 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift @@ -13,14 +13,13 @@ import Foundation let leftHeadlineBody = HeadlineBody(frame: .zero) let centerHeadLineBody = HeadlineBody(frame: .zero) let rightHeadLineBody = HeadlineBody(frame: .zero) - private var stack = UIStackView() + let stack = Stack(frame: .zero) // MARK: - MFViewProtocol open override func updateView(_ size: CGFloat) { super.updateView(size) - leftHeadlineBody.updateView(size) - centerHeadLineBody.updateView(size) - rightHeadLineBody.updateView(size) + styleTallDivider() + stack.updateView(size) } open override func setupView() { @@ -28,18 +27,11 @@ import Foundation guard leftHeadlineBody.superview == nil else { return } - //using stackView to align the three headlineBody + //using stackItems to align the three headlineBody stack.translatesAutoresizingMaskIntoConstraints = false + stack.stackItems = [StackItem(andContain: leftHeadlineBody),StackItem(andContain: centerHeadLineBody),StackItem(andContain: rightHeadLineBody)] contentView.addSubview(stack) - stack.addArrangedSubview(leftHeadlineBody) - stack.addArrangedSubview(centerHeadLineBody) - stack.addArrangedSubview(rightHeadLineBody) - NSLayoutConstraint.constraintPinSubview(stack, pinTop: true, topConstant: 0, pinBottom: false, bottomConstant: 0, pinLeft: true, leftConstant: PaddingDefaultHorizontalSpacing, pinRight: true, rightConstant: PaddingDefaultHorizontalSpacing) - stack.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true - stack.axis = .horizontal - stack.spacing = 35 - stack.distribution = .fillProportionally - styleTallDivider() + containerHelper.constrainView(stack) } // MARK: - MVMCoreUIMoleculeViewProtocol @@ -49,14 +41,18 @@ import Foundation leftHeadlineBody.setWithModel(model.leftHeadlineBody, delegateObject, additionalData) centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData) rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData) + + // Create a stack model to use for the internal stack. + let stackModel = StackModel(molecules: [StackItemModel(percent: 33),StackItemModel(percent: 33),StackItemModel(percent: 33)]) + stackModel.spacing = 0 + stackModel.axis = .horizontal + stack.model = stackModel + stack.restack() } open override func reset() { super.reset() - styleTallDivider() - leftHeadlineBody.reset() - centerHeadLineBody.reset() - rightHeadLineBody.reset() + stack.reset() } public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat { diff --git a/MVMCoreUI/Molecules/Items/StackItemModel.swift b/MVMCoreUI/Molecules/Items/StackItemModel.swift index f296986e..66c57809 100644 --- a/MVMCoreUI/Molecules/Items/StackItemModel.swift +++ b/MVMCoreUI/Molecules/Items/StackItemModel.swift @@ -19,4 +19,9 @@ import Foundation self.init() self.gone = gone } + + public convenience init(percent: Int) { + self.init() + self.percent = percent + } } From 394a5aba18a52dc8f87a04442c9860173e1df136 Mon Sep 17 00:00:00 2001 From: Subhankar Acharya Date: Wed, 12 Feb 2020 21:34:47 +0530 Subject: [PATCH 7/8] Code fixes for alignment and StackItemModel conformance change. --- .../ListThreeColumnPlanDataDivider.swift | 12 ++++++++---- .../ListThreeColumnPlanDataDividerModel.swift | 12 ++++++++++++ MVMCoreUI/Molecules/Items/StackItemModel.swift | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift index 9e821f25..84361c9c 100644 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDivider.swift @@ -18,7 +18,6 @@ import Foundation // MARK: - MFViewProtocol open override func updateView(_ size: CGFloat) { super.updateView(size) - styleTallDivider() stack.updateView(size) } @@ -42,9 +41,14 @@ import Foundation centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData) rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData) - // Create a stack model to use for the internal stack. - let stackModel = StackModel(molecules: [StackItemModel(percent: 33),StackItemModel(percent: 33),StackItemModel(percent: 33)]) - stackModel.spacing = 0 + // Create a stack model to use for the internal stack and set the alignment of models + let leftHeadlineBodyAlignment = StackItemModel(percent: 33) + leftHeadlineBodyAlignment.horizontalAlignment = .leading + let centerHeadLineBodyAlignment = StackItemModel(percent: 34) + centerHeadLineBodyAlignment.horizontalAlignment = .center + let rightHeadLineBodyAlignment = StackItemModel(percent: 33) + rightHeadLineBodyAlignment.horizontalAlignment = .trailing + let stackModel = StackModel(molecules: [leftHeadlineBodyAlignment,centerHeadLineBodyAlignment,rightHeadLineBodyAlignment]) stackModel.axis = .horizontal stack.model = stackModel stack.restack() diff --git a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift index 0da1499d..d03d8528 100644 --- a/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift +++ b/MVMCoreUI/Molecules/HorizontalCombinationViews/ListThreeColumnPlanDataDividerModel.swift @@ -23,6 +23,17 @@ public class ListThreeColumnPlanDataDividerModel: ContainerModel, ListItemModelP self.centerHeadlineBody = centerHeadlineBody self.rightHeadlineBody = rightHeadlineBody super.init() + setDefaults() + } + + /// Defaults to set + func setDefaults() { + if useHorizontalMargins == nil { + useHorizontalMargins = true + } + if useVerticalMargins == nil { + useVerticalMargins = true + } } private enum CodingKeys: String, CodingKey { @@ -38,6 +49,7 @@ public class ListThreeColumnPlanDataDividerModel: ContainerModel, ListItemModelP centerHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .centerHeadlineBody) rightHeadlineBody = try typeContainer.decode(HeadlineBodyModel.self, forKey: .rightHeadlineBody) try super.init(from: decoder) + setDefaults() } public override func encode(to encoder: Encoder) throws { diff --git a/MVMCoreUI/Molecules/Items/StackItemModel.swift b/MVMCoreUI/Molecules/Items/StackItemModel.swift index 66c57809..2058353c 100644 --- a/MVMCoreUI/Molecules/Items/StackItemModel.swift +++ b/MVMCoreUI/Molecules/Items/StackItemModel.swift @@ -8,7 +8,7 @@ import Foundation -@objcMembers public class StackItemModel: StackItemModelProtocol, MoleculeModelProtocol { +@objcMembers public class StackItemModel: ContainerModel, StackItemModelProtocol, MoleculeModelProtocol { public static var identifier: String = "simpleStackItem" public var backgroundColor: Color? public var spacing: CGFloat? From 5b898b1b215d629a2c2bd3ebcb66f5fc18de9eb1 Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Wed, 12 Feb 2020 20:56:05 -0500 Subject: [PATCH 8/8] small clean and reorg --- MVMCoreUI.xcodeproj/project.pbxproj | 48 ++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index c5ec4836..b1e42d4b 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -888,8 +888,6 @@ D224798E2316A995003FCCF9 /* HorizontalCombinationViews */ = { isa = PBXGroup; children = ( - 5248BFEA23F12E350059236A /* ListThreeColumnPlanDataDivider.swift */, - 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */, D2E2A99B23D8D975000B42E6 /* ImageHeadlineBodyModel.swift */, D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */, D28A838E23CCDEDE00DFE4FC /* TwoButtonViewModel.swift */, @@ -902,8 +900,6 @@ D224798F2316A99F003FCCF9 /* LeftRightViews */ = { isa = PBXGroup; children = ( - 8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */, - 8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */, D2E2A99723D8D63C000B42E6 /* ActionDetailWithImageModel.swift */, 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */, D28A839023CD4FD400DFE4FC /* CornerLabelsModel.swift */, @@ -950,6 +946,49 @@ path = Items; sourceTree = ""; }; + D22B38E923F4E07800490EF6 /* DesignedComponents */ = { + isa = PBXGroup; + children = ( + D22B38EC23F4E10700490EF6 /* SectionDividers */, + D22B38EA23F4E08B00490EF6 /* List */, + ); + path = DesignedComponents; + sourceTree = ""; + }; + D22B38EA23F4E08B00490EF6 /* List */ = { + isa = PBXGroup; + children = ( + D22B38EB23F4E0AE00490EF6 /* LeftVariable */, + ); + path = List; + sourceTree = ""; + }; + D22B38EB23F4E0AE00490EF6 /* LeftVariable */ = { + isa = PBXGroup; + children = ( + 8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */, + 8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */, + ); + path = LeftVariable; + sourceTree = ""; + }; + D22B38EC23F4E10700490EF6 /* SectionDividers */ = { + isa = PBXGroup; + children = ( + D22B38ED23F4E11100490EF6 /* ThreeColumn */, + ); + path = SectionDividers; + sourceTree = ""; + }; + D22B38ED23F4E11100490EF6 /* ThreeColumn */ = { + isa = PBXGroup; + children = ( + 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */, + 5248BFEA23F12E350059236A /* ListThreeColumnPlanDataDivider.swift */, + ); + path = ThreeColumn; + sourceTree = ""; + }; D22D1F582204D2590077CEC0 /* Legacy */ = { isa = PBXGroup; children = ( @@ -1052,6 +1091,7 @@ D29DF10E21E67A77003B2FB9 /* Molecules */ = { isa = PBXGroup; children = ( + D22B38E923F4E07800490EF6 /* DesignedComponents */, D22479912316A9EF003FCCF9 /* Items */, D224798F2316A99F003FCCF9 /* LeftRightViews */, D224798E2316A995003FCCF9 /* HorizontalCombinationViews */,