From 2f259686d110ce786750688d2b0fcd3a4e889a1d Mon Sep 17 00:00:00 2001 From: vasavk Date: Mon, 29 Apr 2024 10:06:20 +0530 Subject: [PATCH] =?UTF-8?q?Digital=20ACT-191=20ONEAPP-7016=20story:=20Setu?= =?UTF-8?q?p=20form=20to=20pass=20values=20=E2=80=8B=E2=80=8Bto=20calendar?= =?UTF-8?q?=20properties.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CalendarViewController.swift | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/VDSSample/ViewControllers/CalendarViewController.swift b/VDSSample/ViewControllers/CalendarViewController.swift index 2fb4259..f43f7dc 100644 --- a/VDSSample/ViewControllers/CalendarViewController.swift +++ b/VDSSample/ViewControllers/CalendarViewController.swift @@ -13,7 +13,134 @@ import VDSTokens class CalendarViewController: BaseViewController { + var borderSwitch = Toggle() + var dateIndicatorSwitch = Toggle() + var transparentSwitch = Toggle() + var indicatorOneSwitch = Toggle() + var indicatorTwoSwitch = Toggle() + var indicatorThreeSwitch = Toggle() + var legendOneField = TextField() + var legendTwoField = TextField() + var legendThreeField = TextField() + private var minDateField: UIDatePicker = UIDatePicker() + private var maxDateField: UIDatePicker = UIDatePicker() + private var datePickerOne: UIDatePicker = UIDatePicker() + private var datePickerTwo: UIDatePicker = UIDatePicker() + private var datePickerThree: UIDatePicker = UIDatePicker() + var indicators: [CalendarBase.CalendarIndicatorModel] = [] + override func viewDidLoad() { super.viewDidLoad() + addContentTopView(view: component) + + setupPicker() + setupModel() + } + + override func setupForm() { + super.setupForm() + configurePicker(datePickerOne) + datePickerOne.tag = 1 + configurePicker(datePickerTwo) + datePickerTwo.tag = 2 + configurePicker(datePickerThree) + datePickerThree.tag = 3 + configurePicker(minDateField) + minDateField.tag = 4 + configurePicker(maxDateField) + maxDateField.tag = 5 + indicators = [ + .init(label: "Due Date", date: datePickerOne.date), + .init(label: "Auto Pay", date: datePickerTwo.date), + .init(label: "Scheduled", date: datePickerTwo.date), + ] + + //add form rows + addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Hide Container Border", view: borderSwitch) + addFormRow(label: "Hide Current Date Indicator", view: dateIndicatorSwitch) + addFormRow(label: "Min Date", view: minDateField) + addFormRow(label: "Max Date", view: maxDateField) + addFormRow(label: "Transparent Background", view: transparentSwitch) + addFormRow(label: "Indicator One", view: indicatorOneSwitch) + addFormRow(label: "Indicator Two", view: indicatorTwoSwitch) + addFormRow(label: "Indicator Three", view: indicatorThreeSwitch) + addFormRow(label: "Legend One", view: legendOneField) + addFormRow(label: "Legend Two", view: legendTwoField) + addFormRow(label: "Legend Three", view: legendThreeField) + addFormRow(label: "Indicator One Date", view: datePickerOne) + addFormRow(label: "Indicator Two Date", view: datePickerTwo) + addFormRow(label: "Indicator Three Date", view: datePickerThree) + + legendOneField + .textPublisher + .sink { + [weak self] text in + self?.updateIndicatorData(label: text, index: 0) + }.store(in: &subscribers) + + legendTwoField + .textPublisher + .sink { + [weak self] text in + self?.updateIndicatorData(label: text, index: 1) + }.store(in: &subscribers) + + legendThreeField + .textPublisher + .sink { + [weak self] text in + self?.updateIndicatorData(label: text, index: 2) + }.store(in: &subscribers) + } + + func setupPicker(){ + surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in + self?.component.surface = item + self?.contentTopView.backgroundColor = item.color + } + } + + func setupModel() { + legendOneField.text = "Due Date" + legendTwoField.text = "Auto Pay" + legendThreeField.text = "Scheduled" + } + + func updateIndicatorData(label: String = "", date: Date = Date(), index:Int) { + + print("Indicator data here >>> ") + } + + func configurePicker(_ sender:UIDatePicker) { + // Set some of UIDatePicker properties + sender.timeZone = NSTimeZone.local + sender.backgroundColor = UIColor.white + + // Add an event to call onDidChangeDate function when value is changed. + sender.addTarget(self, action: #selector(self.datePickerValueChanged(_:)), for: .valueChanged) + } + + @objc func datePickerValueChanged(_ sender: UIDatePicker){ + + // Create date formatter + let dateFormatter: DateFormatter = DateFormatter() + + // Set date format + dateFormatter.dateFormat = "MM/dd/yyyy hh:mm a" + + // Apply date format + let selectedDate: String = dateFormatter.string(from: sender.date) + + let date: Date = dateFormatter.date(from: selectedDate) ?? sender.date //TO DO: check is this required? + + switch sender.tag { + case 1: updateIndicatorData(date: sender.date, index: 0) + case 2: updateIndicatorData(date: sender.date, index: 1) + case 3: updateIndicatorData(date: sender.date, index: 2) + default: break + } + + print("Selected value \(selectedDate)") } }