Merge branch 'develop' into feature/list_threecolumn_billhistory

This commit is contained in:
Lekshmi S 2020-07-30 09:40:11 +05:30
commit bb35d28e32
2 changed files with 83 additions and 14 deletions

View File

@ -22,18 +22,16 @@ import UIKit
return calendar
}()
public var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
formatter.timeZone = NSTimeZone.system
formatter.locale = .current
formatter.formatterBehavior = .default
return formatter
}()
public var dateFormat: String? {
set {
guard let newValue = newValue else { return }
dateDropdownModel?.dateFormat = newValue
}
get { return dateDropdownModel?.dateFormat }
}
/// 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 dateDropdownModel: DateDropdownEntryFieldModel? {
return model as? DateDropdownEntryFieldModel
}
//--------------------------------------------------
@ -96,10 +94,12 @@ import UIKit
guard let date = date else { return }
dateDropdownModel?.date = date
if calendar.isDate(date, inSameDayAs: Date()) {
text = MVMCoreUIUtility.hardcodedString(withKey: "textfield_today_string")
} else {
text = dateFormatter.string(from: date)
text = dateDropdownModel?.dateFormatter.string(from: date)
}
}
@ -114,11 +114,35 @@ import UIKit
setTextWith(date: datePicker?.date)
}
//--------------------------------------------------
// MARK: - MoleculeViewProtocol
//--------------------------------------------------
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
super.set(with: model, delegateObject, additionalData)
guard let model = model as? DateDropdownEntryFieldModel else { return }
dateFormat = model.dateFormat
if let date = model.date {
datePicker?.date = date
setTextWith(date: datePicker?.date)
}
if let minDate = model.minDate {
datePicker?.minimumDate = minDate
}
if let maxDate = model.maxDate {
datePicker?.maximumDate = maxDate
}
}
public override func reset() {
super.reset()
datePicker?.minimumDate = nil
datePicker?.maximumDate = nil
datePicker?.date = Date()
text = nil
}
}

View File

@ -15,14 +15,33 @@
return "dateDropdownEntryField"
}
public var dateFormat: String = "MMM d, y"
public var dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateStyle = .medium
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 minDate: Date?
public var maxDate: Date?
//--------------------------------------------------
// MARK: - Keys
//--------------------------------------------------
private enum CodingKeys: String, CodingKey {
case date
case dateFormat
case minDate
case maxDate
}
//--------------------------------------------------
@ -35,6 +54,20 @@
if let dateFormat = try typeContainer.decodeIfPresent(String.self, forKey: .dateFormat) {
self.dateFormat = dateFormat
dateFormatter.dateFormat = dateFormat
}
if let date = try typeContainer.decodeIfPresent(String.self, forKey: .date) {
baseValue = date
self.date = dateFormatter.date(from: date)
}
if let minDate = try typeContainer.decodeIfPresent(String.self, forKey: .minDate) {
self.minDate = dateFormatter.date(from: minDate)
}
if let maxDate = try typeContainer.decodeIfPresent(String.self, forKey: .maxDate) {
self.maxDate = dateFormatter.date(from: maxDate)
}
}
@ -42,5 +75,17 @@
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(dateFormat, forKey: .dateFormat)
if let date = date {
try container.encode(dateFormatter.string(from: date), forKey: .date)
}
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)
}
}
}