reflecting changes to use Date type

This commit is contained in:
Kevin G Christiano 2020-07-28 17:02:21 -04:00
parent 282fcaea12
commit ca9afeef5d
2 changed files with 53 additions and 28 deletions

View File

@ -22,18 +22,16 @@ import UIKit
return calendar return calendar
}() }()
public var dateFormatter: DateFormatter = { public var dateFormat: String? {
let formatter = DateFormatter() set {
formatter.dateStyle = .medium guard let newValue = newValue else { return }
formatter.timeZone = NSTimeZone.system dateDropdownModel?.dateFormat = newValue
formatter.locale = .current }
formatter.formatterBehavior = .default get { return dateDropdownModel?.dateFormat }
return formatter }
}()
/// Update the property value to alter the format of how the date is presented. public var dateDropdownModel: DateDropdownEntryFieldModel? {
public var dateFormat: String = "MMM d, y" { return model as? DateDropdownEntryFieldModel
didSet { dateFormatter.dateFormat = dateFormat }
} }
//-------------------------------------------------- //--------------------------------------------------
@ -96,10 +94,12 @@ import UIKit
guard let date = date else { return } guard let date = date else { return }
dateDropdownModel?.date = date
if calendar.isDate(date, inSameDayAs: Date()) { if calendar.isDate(date, inSameDayAs: Date()) {
text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string") text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string")
} else { } else {
text = dateFormatter.string(from: date) text = dateDropdownModel?.dateFormatter.string(from: date)
} }
} }
@ -123,19 +123,18 @@ import UIKit
guard let model = model as? DateDropdownEntryFieldModel else { return } guard let model = model as? DateDropdownEntryFieldModel else { return }
dateFormat = model.dateFormat if model.date == nil, let initialDate = model.initialDate {
if let initialDate = model.initialDate, let date = dateFormatter.date(from: initialDate) { datePicker?.date = initialDate
datePicker?.date = date
setTextWith(date: datePicker?.date) setTextWith(date: datePicker?.date)
} }
if let minDate = model.minDate { if let minDate = model.minDate {
datePicker?.minimumDate = dateFormatter.date(from: minDate) datePicker?.minimumDate = minDate
} }
if let maxDate = model.maxDate { if let maxDate = model.maxDate {
datePicker?.maximumDate = dateFormatter.date(from: maxDate) datePicker?.maximumDate = maxDate
} }
} }

View File

@ -15,16 +15,31 @@
return "dateDropdownEntryField" return "dateDropdownEntryField"
} }
public var dateFormat: String = "MMM d, y" public var dateFormatter: DateFormatter = {
public var initialDate: String? let formatter = DateFormatter()
public var minDate: String? formatter.dateStyle = .medium
public var maxDate: String? formatter.timeZone = NSTimeZone.system
formatter.locale = .current
formatter.formatterBehavior = .default
return formatter
}()
/// Update the property value to alter the format of how the date is presented.
public var dateFormat: String = "MMM d, y" {
didSet { dateFormatter.dateFormat = dateFormat }
}
public var date: Date?
public var initialDate: Date?
public var minDate: Date?
public var maxDate: Date?
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Keys // MARK: - Keys
//-------------------------------------------------- //--------------------------------------------------
private enum CodingKeys: String, CodingKey { private enum CodingKeys: String, CodingKey {
case date
case dateFormat case dateFormat
case initialDate case initialDate
case minDate case minDate
@ -41,18 +56,19 @@
if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) { if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) {
self.dateFormat = dateFormat self.dateFormat = dateFormat
dateFormatter.dateFormat = dateFormat
} }
if let initialDate = try typeContainer.decodeIfPresent(String.self, forKey: .initialDate) { if let initialDate = try typeContainer.decodeIfPresent(String.self, forKey: .initialDate) {
self.initialDate = initialDate self.initialDate = dateFormatter.date(from: initialDate)
} }
if let minDate = try typeContainer.decodeIfPresent(String.self, forKey: .minDate) { if let minDate = try typeContainer.decodeIfPresent(String.self, forKey: .minDate) {
self.minDate = minDate self.minDate = dateFormatter.date(from: minDate)
} }
if let maxDate = try typeContainer.decodeIfPresent(String.self, forKey: .maxDate) { if let maxDate = try typeContainer.decodeIfPresent(String.self, forKey: .maxDate) {
self.maxDate = maxDate self.maxDate = dateFormatter.date(from: maxDate)
} }
} }
@ -60,8 +76,18 @@
try super.encode(to: encoder) try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self) var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(dateFormat, forKey: .dateFormat) try container.encode(dateFormat, forKey: .dateFormat)
try container.encode(initialDate, forKey: .initialDate) try container.encodeIfPresent(date, forKey: .date)
try container.encode(minDate, forKey: .minDate)
try container.encode(maxDate, forKey: .maxDate) if let initialDate = initialDate {
try container.encode(dateFormatter.string(from: initialDate), forKey: .initialDate)
}
if let minDate = minDate {
try container.encode(dateFormatter.string(from: minDate), forKey: .minDate)
}
if let maxDate = maxDate {
try container.encode(dateFormatter.string(from: maxDate), forKey: .maxDate)
}
} }
} }