Merge branch 'feature/multiprogress' into 'develop'
Feature/multiprogress See merge request BPHV_MIPS/mvm_core_ui!132
This commit is contained in:
commit
0e27266b85
@ -18,6 +18,7 @@
|
|||||||
01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; };
|
01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; };
|
||||||
01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; };
|
01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */; };
|
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */; };
|
||||||
|
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; };
|
||||||
B8200E152280C4CF007245F4 /* ProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E142280C4CF007245F4 /* ProgressBar.swift */; };
|
B8200E152280C4CF007245F4 /* ProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E142280C4CF007245F4 /* ProgressBar.swift */; };
|
||||||
B8200E192281DC1A007245F4 /* CornerLabels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E182281DC1A007245F4 /* CornerLabels.swift */; };
|
B8200E192281DC1A007245F4 /* CornerLabels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8200E182281DC1A007245F4 /* CornerLabels.swift */; };
|
||||||
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
@ -201,6 +202,7 @@
|
|||||||
01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = "<group>"; };
|
01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = "<group>"; };
|
||||||
01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = "<group>"; };
|
01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = "<group>"; };
|
||||||
0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionDetailWithImage.swift; sourceTree = "<group>"; };
|
0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionDetailWithImage.swift; sourceTree = "<group>"; };
|
||||||
|
948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; };
|
||||||
B8200E142280C4CF007245F4 /* ProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressBar.swift; sourceTree = "<group>"; };
|
B8200E142280C4CF007245F4 /* ProgressBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressBar.swift; sourceTree = "<group>"; };
|
||||||
B8200E182281DC1A007245F4 /* CornerLabels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CornerLabels.swift; sourceTree = "<group>"; };
|
B8200E182281DC1A007245F4 /* CornerLabels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CornerLabels.swift; sourceTree = "<group>"; };
|
||||||
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; };
|
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; };
|
||||||
@ -684,6 +686,7 @@
|
|||||||
D260D7B022D65BDD007E7233 /* MVMCoreUIPageControl.m */,
|
D260D7B022D65BDD007E7233 /* MVMCoreUIPageControl.m */,
|
||||||
D260D7B522D68509007E7233 /* MVMCoreUIPagingProtocol.h */,
|
D260D7B522D68509007E7233 /* MVMCoreUIPagingProtocol.h */,
|
||||||
B8200E142280C4CF007245F4 /* ProgressBar.swift */,
|
B8200E142280C4CF007245F4 /* ProgressBar.swift */,
|
||||||
|
948DB67D2326DCD90011F916 /* MultiProgress.swift */,
|
||||||
DBC4391622442196001AB423 /* CaretView.swift */,
|
DBC4391622442196001AB423 /* CaretView.swift */,
|
||||||
DBC4391722442197001AB423 /* DashLine.swift */,
|
DBC4391722442197001AB423 /* DashLine.swift */,
|
||||||
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */,
|
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */,
|
||||||
@ -1072,6 +1075,7 @@
|
|||||||
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
|
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
|
||||||
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */,
|
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */,
|
||||||
D29DF2AA21E7B2F9003B2FB9 /* MVMCoreUIConstants.m in Sources */,
|
D29DF2AA21E7B2F9003B2FB9 /* MVMCoreUIConstants.m in Sources */,
|
||||||
|
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */,
|
||||||
D2A5146122121FBF00345BFB /* MoleculeStackTemplate.swift in Sources */,
|
D2A5146122121FBF00345BFB /* MoleculeStackTemplate.swift in Sources */,
|
||||||
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
|
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
|
||||||
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */,
|
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */,
|
||||||
|
|||||||
93
MVMCoreUI/Atoms/Views/MultiProgress.swift
Normal file
93
MVMCoreUI/Atoms/Views/MultiProgress.swift
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
//
|
||||||
|
// MultiProgress.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Ryan on 9/9/19.
|
||||||
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@objcMembers open class ProgressBarObject {
|
||||||
|
///from 0.0 to 1.0. input progress should be [0 100]
|
||||||
|
var progress: CGFloat = 0.0
|
||||||
|
///default color is cerulean
|
||||||
|
var color: UIColor = UIColor.mfCerulean()
|
||||||
|
|
||||||
|
init(_ module: [AnyHashable: Any]?) {
|
||||||
|
progress = (module?.optionalCGFloatForKey("progress") ?? 0.0)/100
|
||||||
|
if let colorString = module?.optionalStringForKey("progressColor") {
|
||||||
|
color = UIColor.mfGet(forHex: colorString)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static func getProgressBarObjectList(_ list: [[AnyHashable: Any]]?) -> [ProgressBarObject]? {
|
||||||
|
guard list?.count ?? 0 > 0 else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
var progressList = [ProgressBarObject]()
|
||||||
|
for module in list! {
|
||||||
|
let progressObject = ProgressBarObject(module)
|
||||||
|
progressList.append(progressObject)
|
||||||
|
}
|
||||||
|
return progressList
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objcMembers open class MultiProgress: MFView {
|
||||||
|
///passing value to progressList creates corresponding progress bars
|
||||||
|
var progressList: Array<ProgressBarObject>? {
|
||||||
|
didSet {
|
||||||
|
for subview in subviews {
|
||||||
|
subview.removeFromSuperview()
|
||||||
|
}
|
||||||
|
guard (progressList?.count ?? 0) > 0 else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var previous: UIView?
|
||||||
|
for progressObject in progressList! {
|
||||||
|
guard progressObject.progress > 0.0 else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
let view = MFView(frame: .zero)
|
||||||
|
view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
addSubview(view)
|
||||||
|
view.backgroundColor = progressObject.color
|
||||||
|
view.widthAnchor.constraint(equalTo: widthAnchor, multiplier: progressObject.progress).isActive = true
|
||||||
|
view.leadingAnchor.constraint(equalTo: previous?.trailingAnchor ?? leadingAnchor).isActive = true
|
||||||
|
previous = view
|
||||||
|
NSLayoutConstraint.constraintPinSubview(view, pinTop: true, pinBottom: true, pinLeft: false, pinRight: false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var roundedRect: Bool = false {
|
||||||
|
didSet {
|
||||||
|
if roundedRect {
|
||||||
|
layer.cornerRadius = (thicknessConstraint?.constant ?? defaultHeight)/2
|
||||||
|
} else {
|
||||||
|
layer.cornerRadius = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var thicknessConstraint: NSLayoutConstraint?
|
||||||
|
let defaultHeight: CGFloat = 8
|
||||||
|
|
||||||
|
override open func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
backgroundColor = .mfSilver()
|
||||||
|
clipsToBounds = true
|
||||||
|
if thicknessConstraint == nil {
|
||||||
|
thicknessConstraint = heightAnchor.constraint(equalToConstant: defaultHeight)
|
||||||
|
thicknessConstraint?.isActive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override open func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
|
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
|
thicknessConstraint?.constant = json?.optionalCGFloatForKey("thickness") ?? defaultHeight
|
||||||
|
roundedRect = json?.optionalBoolForKey("roundedRect") ?? false
|
||||||
|
progressList = ProgressBarObject.getProgressBarObjectList(json?.optionalArrayForKey("progressList") as? [[AnyHashable: Any]])
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -41,6 +41,7 @@
|
|||||||
@"checkbox" : MVMCoreUICheckBox.class,
|
@"checkbox" : MVMCoreUICheckBox.class,
|
||||||
@"cornerLabels" : CornerLabels.class,
|
@"cornerLabels" : CornerLabels.class,
|
||||||
@"progressBar": ProgressBar.class,
|
@"progressBar": ProgressBar.class,
|
||||||
|
@"multiProgressBar": MultiProgress.class,
|
||||||
@"checkbox": MVMCoreUICheckBox.class,
|
@"checkbox": MVMCoreUICheckBox.class,
|
||||||
@"listItem": MoleculeTableViewCell.class,
|
@"listItem": MoleculeTableViewCell.class,
|
||||||
@"accordionListItem": AccordionMoleculeTableViewCell.class,
|
@"accordionListItem": AccordionMoleculeTableViewCell.class,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user