Digital ACT-191 ONEAPP-7016 story: Hide/Show indicators by toggling on/off

This commit is contained in:
vasavk 2024-05-04 15:03:23 +05:30
parent a6b06f5076
commit c45775759a

View File

@ -31,12 +31,11 @@ class CalendarViewController: BaseViewController<CalendarBase> {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
addContentTopView(view: component) addContentTopView(view: component)
setupPicker() setupPicker()
setupModel() setupModel()
} }
override func setupForm() { override func setupForm() {
super.setupForm() super.setupForm()
configurePicker(datePickerOne) configurePicker(datePickerOne)
@ -52,7 +51,7 @@ class CalendarViewController: BaseViewController<CalendarBase> {
indicators = [ indicators = [
.init(label: "Due Date", date: datePickerOne.date), .init(label: "Due Date", date: datePickerOne.date),
.init(label: "Auto Pay", date: datePickerTwo.date), .init(label: "Auto Pay", date: datePickerTwo.date),
.init(label: "Scheduled", date: datePickerTwo.date), .init(label: "Scheduled", date: datePickerTwo.date)
] ]
//add form rows //add form rows
@ -92,6 +91,41 @@ class CalendarViewController: BaseViewController<CalendarBase> {
[weak self] text in [weak self] text in
self?.updateIndicatorData(label: text, date: self?.datePickerThree.date, index: 2) self?.updateIndicatorData(label: text, date: self?.datePickerThree.date, index: 2)
}.store(in: &subscribers) }.store(in: &subscribers)
indicatorOneSwitch.onChange = { [weak self] sender in
guard let self else { return }
if !sender.isOn {
component.indicators.removeAll()
} else {
self.setIndicatorsData()
}
}
indicatorTwoSwitch.onChange = { [weak self] sender in
guard let self else { return }
if !sender.isOn {
if component.indicators.count > 2 {
component.indicators.removeLast()
component.indicators.removeLast()
} else if component.indicators.count == 2 {
component.indicators.removeLast()
}
} else {
self.setIndicatorsData()
}
}
indicatorThreeSwitch.onChange = { [weak self] sender in
guard let self else { return }
if !sender.isOn {
if component.indicators.count > 2 {
component.indicators.removeLast()
}
} else {
self.setIndicatorsData()
}
}
} }
func setupPicker(){ func setupPicker(){
@ -106,6 +140,9 @@ class CalendarViewController: BaseViewController<CalendarBase> {
legendOneField.text = "Due Date" legendOneField.text = "Due Date"
legendTwoField.text = "Auto Pay" legendTwoField.text = "Auto Pay"
legendThreeField.text = "Scheduled" legendThreeField.text = "Scheduled"
indicatorOneSwitch.isOn = true
indicatorTwoSwitch.isOn = true
indicatorThreeSwitch.isOn = true
} }
func updateIndicatorData(label: String = "", date: Date?, index:Int) { func updateIndicatorData(label: String = "", date: Date?, index:Int) {
@ -113,7 +150,27 @@ class CalendarViewController: BaseViewController<CalendarBase> {
indicators[index].date = date ?? Date() indicators[index].date = date ?? Date()
component.indicators = indicators component.indicators = indicators
} }
func setIndicatorsData() {
if indicatorOneSwitch.isOn && indicatorTwoSwitch.isOn && indicatorThreeSwitch.isOn {
component.indicators = [
.init(label: self.legendOneField.text ?? "", date: datePickerOne.date),
.init(label: self.legendTwoField.text ?? "", date: datePickerTwo.date),
.init(label: self.legendThreeField.text ?? "", date: datePickerTwo.date)
]
} else if indicatorOneSwitch.isOn && indicatorTwoSwitch.isOn && !indicatorThreeSwitch.isOn {
component.indicators = [
.init(label: self.legendOneField.text ?? "", date: datePickerOne.date),
.init(label: self.legendTwoField.text ?? "", date: datePickerTwo.date),
]
} else if indicatorOneSwitch.isOn && !indicatorTwoSwitch.isOn {
component.indicators = [
.init(label: self.legendOneField.text ?? "", date: datePickerOne.date),
]
}
}
func configurePicker(_ sender:UIDatePicker) { func configurePicker(_ sender:UIDatePicker) {
// Set some of UIDatePicker properties // Set some of UIDatePicker properties
sender.timeZone = NSTimeZone.local sender.timeZone = NSTimeZone.local
@ -132,7 +189,7 @@ class CalendarViewController: BaseViewController<CalendarBase> {
dateFormatter.dateFormat = "MM/dd/yyyy hh:mm a" dateFormatter.dateFormat = "MM/dd/yyyy hh:mm a"
// Apply date format // Apply date format
// let selectedDate: String = dateFormatter.string(from: sender.date) // let selectedDate: String = dateFormatter.string(from: sender.date)
switch sender.tag { switch sender.tag {
case 1: updateIndicatorData(label: legendOneField.text ?? "", date: sender.date, index: 0) case 1: updateIndicatorData(label: legendOneField.text ?? "", date: sender.date, index: 0)
@ -140,6 +197,6 @@ class CalendarViewController: BaseViewController<CalendarBase> {
case 3: updateIndicatorData(label: legendThreeField.text ?? "", date: sender.date, index: 2) case 3: updateIndicatorData(label: legendThreeField.text ?? "", date: sender.date, index: 2)
default: break default: break
} }
// print("Selected value \(selectedDate)") // print("Selected value \(selectedDate)")
} }
} }