-
Notifications
You must be signed in to change notification settings - Fork 95
Expand file tree
/
Copy pathOverallStatiscticView.swift
More file actions
144 lines (116 loc) · 3.54 KB
/
OverallStatiscticView.swift
File metadata and controls
144 lines (116 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//
// OverallStatiscticView.swift
// Lockdown
//
// Created by Aliaksandr Dvoineu on 18.04.23.
// Copyright © 2023 Confirmed Inc. All rights reserved.
//
import UIKit
struct OverallStatiscticViewModel {
let enabled: Int
let disabled: Int
let requests: Int
let blocked: Int
}
final class BoxLabelView: UIView {
// MARK: - Properties
lazy var boxView: UIView = {
let view = UIView()
view.layer.cornerRadius = 4
view.layer.borderColor = UIColor.lightGray.cgColor
view.layer.borderWidth = 1
view.anchors.height.equal(85)
return view
}()
lazy var numberLabel: UILabel = {
let label = UILabel()
label.textColor = .label
label.font = fontBold24
label.textAlignment = .center
return label
}()
lazy var boxTitle: UILabel = {
let label = UILabel()
label.textColor = .label
label.font = fontRegular14
label.textAlignment = .center
return label
}()
private lazy var stackView: UIStackView = {
let stackView = UIStackView()
stackView.addArrangedSubview(boxView)
stackView.addArrangedSubview(boxTitle)
stackView.axis = .vertical
stackView.distribution = .fillProportionally
stackView.spacing = 8
return stackView
}()
// MARK: - Initializer
override init(frame: CGRect) {
super.init(frame: frame)
configureUI()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Functions
private func configureUI() {
addSubview(stackView)
stackView.anchors.edges.pin()
boxView.addSubview(numberLabel)
numberLabel.anchors.centerX.align()
numberLabel.anchors.centerY.align()
}
}
final class OverallStatiscticView: UIView {
// MARK: - Properties
lazy var enabledBoxView: BoxLabelView = {
let box = BoxLabelView()
box.numberLabel.text = "7"
box.boxTitle.text = "Enabled"
return box
}()
lazy var disabledBoxView: BoxLabelView = {
let box = BoxLabelView()
box.numberLabel.text = "3"
box.boxTitle.text = "Disabled"
return box
}()
lazy var blockedBoxView: BoxLabelView = {
let box = BoxLabelView()
box.numberLabel.text = "0.2K"
box.boxTitle.text = "Blocked"
return box
}()
private lazy var stackView: UIStackView = {
let stackView = UIStackView()
stackView.addArrangedSubview(enabledBoxView)
stackView.addArrangedSubview(disabledBoxView)
stackView.addArrangedSubview(blockedBoxView)
stackView.axis = .horizontal
stackView.distribution = .fillEqually
stackView.alignment = .center
stackView.spacing = 8
return stackView
}()
// MARK: - Initializer
override init(frame: CGRect) {
super.init(frame: frame)
configureUI()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - Functions
private func configureUI() {
addSubview(stackView)
stackView.anchors.top.marginsPin()
stackView.anchors.bottom.marginsPin()
stackView.anchors.leading.pin()
stackView.anchors.trailing.pin()
}
func configure(with model: OverallStatiscticViewModel) {
}
}