From c45775759af404ba6bafdef1da88fb61641199ee Mon Sep 17 00:00:00 2001 From: vasavk Date: Sat, 4 May 2024 15:03:23 +0530 Subject: [PATCH] Digital ACT-191 ONEAPP-7016 story: Hide/Show indicators by toggling on/off --- .../CalendarViewController.swift | 71 +++++++++++++++++-- 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/VDSSample/ViewControllers/CalendarViewController.swift b/VDSSample/ViewControllers/CalendarViewController.swift index 2c40971..680f9f2 100644 --- a/VDSSample/ViewControllers/CalendarViewController.swift +++ b/VDSSample/ViewControllers/CalendarViewController.swift @@ -31,12 +31,11 @@ class CalendarViewController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() - addContentTopView(view: component) - + addContentTopView(view: component) setupPicker() setupModel() } - + override func setupForm() { super.setupForm() configurePicker(datePickerOne) @@ -52,7 +51,7 @@ class CalendarViewController: BaseViewController { indicators = [ .init(label: "Due Date", date: datePickerOne.date), .init(label: "Auto Pay", date: datePickerTwo.date), - .init(label: "Scheduled", date: datePickerTwo.date), + .init(label: "Scheduled", date: datePickerTwo.date) ] //add form rows @@ -92,6 +91,41 @@ class CalendarViewController: BaseViewController { [weak self] text in self?.updateIndicatorData(label: text, date: self?.datePickerThree.date, index: 2) }.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(){ @@ -106,6 +140,9 @@ class CalendarViewController: BaseViewController { legendOneField.text = "Due Date" legendTwoField.text = "Auto Pay" legendThreeField.text = "Scheduled" + indicatorOneSwitch.isOn = true + indicatorTwoSwitch.isOn = true + indicatorThreeSwitch.isOn = true } func updateIndicatorData(label: String = "", date: Date?, index:Int) { @@ -113,7 +150,27 @@ class CalendarViewController: BaseViewController { indicators[index].date = date ?? Date() 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) { // Set some of UIDatePicker properties sender.timeZone = NSTimeZone.local @@ -132,7 +189,7 @@ class CalendarViewController: BaseViewController { dateFormatter.dateFormat = "MM/dd/yyyy hh:mm a" // Apply date format -// let selectedDate: String = dateFormatter.string(from: sender.date) + // let selectedDate: String = dateFormatter.string(from: sender.date) switch sender.tag { case 1: updateIndicatorData(label: legendOneField.text ?? "", date: sender.date, index: 0) @@ -140,6 +197,6 @@ class CalendarViewController: BaseViewController { case 3: updateIndicatorData(label: legendThreeField.text ?? "", date: sender.date, index: 2) default: break } -// print("Selected value \(selectedDate)") + // print("Selected value \(selectedDate)") } }