Skip to content

Commit 7b4af25

Browse files
fix: amount textfield amount seperate (#67)
1 parent 6f6a88a commit 7b4af25

File tree

5 files changed

+60
-2
lines changed

5 files changed

+60
-2
lines changed

GoMoney.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@
6969
089CC756291A0C0A0070A108 /* BiometricService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089CC755291A0C0A0070A108 /* BiometricService.swift */; };
7070
08A272AB290FD780002B3574 /* GMFloatingButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08A272AA290FD780002B3574 /* GMFloatingButton.swift */; };
7171
08B48B7C290293AE00344650 /* UIBarButtonItem+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08B48B7B290293AE00344650 /* UIBarButtonItem+Extension.swift */; };
72+
08C0DB28292B6FA4005A8973 /* Double+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0875F3082927778000D122C3 /* Double+Extension.swift */; };
73+
08C0DB2A292B7608005A8973 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C0DB29292B7608005A8973 /* String+Extension.swift */; };
7274
08C1F24D28FE68A100590512 /* ChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C1F24A28FE68A000590512 /* ChartView.swift */; };
7375
08C1F24E28FE68A100590512 /* RecentExpenseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C1F24B28FE68A000590512 /* RecentExpenseCell.swift */; };
7476
08C1F24F28FE68A100590512 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C1F24C28FE68A000590512 /* HomeViewController.swift */; };
@@ -233,6 +235,7 @@
233235
089CC755291A0C0A0070A108 /* BiometricService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometricService.swift; sourceTree = "<group>"; };
234236
08A272AA290FD780002B3574 /* GMFloatingButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GMFloatingButton.swift; sourceTree = "<group>"; };
235237
08B48B7B290293AE00344650 /* UIBarButtonItem+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Extension.swift"; sourceTree = "<group>"; };
238+
08C0DB29292B7608005A8973 /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = "<group>"; };
236239
08C1F1C528FE662600590512 /* ChartView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartView.swift; sourceTree = "<group>"; };
237240
08C1F1C728FE662600590512 /* HomeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
238241
08C1F24228FE67CE00590512 /* HomeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
@@ -742,6 +745,7 @@
742745
08DB56E828F9035800170C60 /* StackView+Extension.swift */,
743746
08DB56EA28F9053700170C60 /* UIColor+Extension.swift */,
744747
0875F3082927778000D122C3 /* Double+Extension.swift */,
748+
08C0DB29292B7608005A8973 /* String+Extension.swift */,
745749
08C1F25C28FE93E900590512 /* DateFormatter+Extension.swift */,
746750
08C1F26928FFBAD500590512 /* UIImage+Extension.swift */,
747751
08DEE9C52900FC4C00EA9A2A /* Date+Extension.swift */,
@@ -1197,6 +1201,7 @@
11971201
085F753329124E390094A026 /* SettingsTableViewToggleCell.swift in Sources */,
11981202
088149242911682C00BB3A79 /* ToolsViewController.swift in Sources */,
11991203
089CC74C2919D9660070A108 /* FileHelper.swift in Sources */,
1204+
08C0DB2A292B7608005A8973 /* String+Extension.swift in Sources */,
12001205
08C872C828F6671B00DC859D /* UIView+Extension.swift in Sources */,
12011206
08C1F25D28FE93E900590512 /* DateFormatter+Extension.swift in Sources */,
12021207
08EEA00C291CC359003B35B8 /* UserDefaults+AppGroup.swift in Sources */,
@@ -1238,6 +1243,7 @@
12381243
08EEA017291CD39E003B35B8 /* IncomeWidget.swift in Sources */,
12391244
08EEA018291CD3E4003B35B8 /* UserDefaults+AppGroup.swift in Sources */,
12401245
08EEA016291CD397003B35B8 /* WidgetBundle.swift in Sources */,
1246+
08C0DB28292B6FA4005A8973 /* Double+Extension.swift in Sources */,
12411247
08EEA019291CD3E7003B35B8 /* Widget+Kind.swift in Sources */,
12421248
);
12431249
runOnlyForDeploymentPostprocessing = 0;

GoMoney.xcodeproj/xcshareddata/xcschemes/GoMoney.xcscheme

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@
5050
ReferencedContainer = "container:GoMoney.xcodeproj">
5151
</BuildableReference>
5252
</BuildableProductRunnable>
53+
<CommandLineArguments>
54+
<CommandLineArgument
55+
argument = "-FIRDebugDisabled"
56+
isEnabled = "YES">
57+
</CommandLineArgument>
58+
</CommandLineArguments>
5359
</LaunchAction>
5460
<ProfileAction
5561
buildConfiguration = "Release"

GoMoney/Extensions/Double+Extension.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ import Foundation
33
extension Double {
44
func formatWithCommas(minFraction: Int = 0, maxFraction: Int = 0) -> String {
55
let numberFormatter = NumberFormatter()
6-
numberFormatter.numberStyle = .decimal
6+
numberFormatter.numberStyle = .currency
77
numberFormatter.minimumFractionDigits = minFraction
88
numberFormatter.maximumFractionDigits = maxFraction
9+
numberFormatter.usesGroupingSeparator = true
10+
numberFormatter.locale = Locale.current
11+
numberFormatter.currencySymbol = ""
12+
913
if let formattedNumber = numberFormatter.string(from: NSNumber(value: self)) {
1014
return formattedNumber
1115
} else {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
extension String {
2+
func splitFromEnd(by length: Int) -> [String] {
3+
var endIndex = self.endIndex
4+
var results = [Substring]()
5+
6+
while endIndex > self.startIndex {
7+
let startIndex = self.index(endIndex, offsetBy: -length, limitedBy: self.startIndex) ?? self.startIndex
8+
results.append(self[startIndex ..< endIndex])
9+
endIndex = startIndex
10+
}
11+
12+
return results.map { String($0) }.reversed()
13+
}
14+
}

GoMoney/Scences/AddExpense/AddExpenseForm.swift

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,23 @@ class AddExpenseForm: UIView {
2929

3030
lazy var categoryField = AddExpenseField(name: "Category", placeHolder: "Enter Category")
3131

32+
private func setAmountField() {
33+
let field = amountField.inputField
34+
35+
guard let currency = SettingsManager.shared.getValue(for: .currencyUnit) as? String else {
36+
return
37+
}
38+
39+
let label = GMLabel(text: currency, style: .regularBold, isCenter: true)
40+
41+
label.anchor(width: 42, height: 42)
42+
field.rightView = label
43+
field.rightViewMode = .always
44+
45+
let selector = #selector(didChangeAmount)
46+
field.addTarget(self, action: selector, for: .editingChanged)
47+
}
48+
3249
private func setCategoryField() {
3350
let field = categoryField.inputField
3451

@@ -113,6 +130,7 @@ class AddExpenseForm: UIView {
113130

114131
setupView()
115132
setCategoryField()
133+
setAmountField()
116134
}
117135

118136
@available(*, unavailable)
@@ -139,7 +157,7 @@ class AddExpenseForm: UIView {
139157
// MARK: Actions
140158

141159
func getAmount() -> String {
142-
return amountField.inputField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
160+
return amountField.inputField.text?.replacingOccurrences(of: ",", with: "") ?? ""
143161
}
144162

145163
func getNote() -> String {
@@ -214,6 +232,16 @@ class AddExpenseForm: UIView {
214232
field.rightViewMode = .always
215233
}
216234
}
235+
236+
private let maxAmount: Double = 1_000_000_000
237+
238+
@objc
239+
private func didChangeAmount(sender: UITextField) {
240+
let text = sender.text ?? ""
241+
let amountString = text.replacingOccurrences(of: ",", with: "")
242+
let formated = amountString.splitFromEnd(by: 3).joined(separator: ",")
243+
sender.text = formated
244+
}
217245
}
218246

219247
extension AddExpenseForm {

0 commit comments

Comments
 (0)