//
// OrdersStepOneVC.swift
// iOSMindizorApp
//
// Created by AHMAD NASER on 2/10/17.
// Copyright © 2017 Ahmad Naser Turnkey Solutions LLC. All rights reserved.
//
import UIKit
import Eureka
import Alamofire
import SwiftSpinner
class OrdersStepOneVC: FormViewController {
let screenHeight = UIScreen.main.bounds.height
let screenWidth = UIScreen.main.bounds.width
// Colors
let lightGray = UIColor(red: 239/255, green: 239/255, blue: 244/255, alpha: 1)
let darkGray = UIColor(red: 146/255, green: 146/255, blue: 146/255, alpha: 1)
let blue = UIColor(red: 0, green: 122/255, blue:1, alpha:1)
let green = UIColor(red: 0, green: 155/255, blue: 0, alpha: 1)
let white = UIColor.white
let black = UIColor.black
let benuGreen = UIColor(red: 88/255, green: 166/255, blue: 24/255, alpha: 1)
let skyBlue = UIColor(red: 162/255, green: 222/255, blue: 248/255, alpha: 1)
let appTintColor = UIColor(red: 88/255, green: 166/255, blue: 24/255, alpha: 1)
override func viewDidLoad() {
super.viewDidLoad()
Section(){ section in
section.header = {
var header = HeaderFooterView<UIView>(.callback({
let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
view.backgroundColor = .red
return view
}))
header.height = { 100 }
return header
}()
}
form +++ Section("Section1")
<<< TextRow(){ row in
row.title = "Text Row"
row.placeholder = "Enter text here"
}
<<< SegmentedRow<String>("gender"){
$0.options = ["male", "female"]
$0.title = "m"
$0.value = "f"
}.onChange{ row in
print(row.value)
}
<<< PhoneRow(){
$0.title = "Phone Row"
$0.placeholder = "And numbers here"
}
+++ Section("Section2")
<<< DateRow(){
$0.title = "Date Row"
$0.value = NSDate(timeIntervalSinceReferenceDate: 0) as Date
}
<<< SwitchRow("switchRowTag"){
$0.title = "Show message"
}
<<< LabelRow(){
$0.hidden = Condition.function(["switchRowTag"], { form in
return !((form.rowBy(tag: "switchRowTag") as? SwitchRow)?.value ?? false)
})
$0.title = "Switch is on!"
form +++ Section("Multiple Choices")
<<< MultipleSelectorRow<String>() {
$0.title = "Favourite Foods"
$0.options = ["🍝", "🍟", "🍕", "🍚"]
$0.value = ["🍝", "🍕" ]
}
form +++ Section("اختر لغات البطاقات")
<<< MultipleSelectorRow<String>("languages") {
$0.title = "Choosed langs"
$0.options = ["العربية","الفرنسية", "الألمانية",
"الروسية","البرتغالية", "الأندونسية",
"اليابانية","الفلبينية", "الانجليزية",]
$0.value = ["العربية", "الانجليزية" ]
}.onPresent { from, to in
}.onChange {_ in
let values = self.form.values() as? [String : Any?]
var languages = self.getSelectedLanguages(languages: values?["languages"] as! Set<String>)
print(languages[0])
print(languages.count)
}
form +++ Section("Login Form")
<<< TextRow() { $0.placeholder = "Username" }
<<< PasswordRow() { $0.placeholder = "Password" }
<<< ButtonRow() {
$0.title = "Login"
$0.onCellSelection { cell, row in
// self.presentAlert(message: "Will login")
}
}
}
addFormWithToggle(toForm: form)
let continents = ["Africa", "Antarctica", "Asia", "Australia", "Europe", "North America", "South America"]
form +++ SelectableSection<ListCheckRow<String>>("Where do you live", selectionType: .multipleSelection)
for option in continents {
form.last! <<< ListCheckRow<String>(option){ listRow in
listRow.title = option
listRow.selectableValue = option
listRow.value = nil
}
}
self.AddLanguagesTexts(toForm: self.form)
self.AddBottomPart(toForm: self.form)
}
private func AddBottomPart(toForm form: Form) {
// Error and Buttons section
form +++ Section() { section in
section.tag = "error"
var header = HeaderFooterView<UIView>(.class)
header.height = { 50 }
let label = UILabel(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 50))
label.textColor = UIColor.red
label.textAlignment = .center
header.onSetupView = { view, section in
label.removeFromSuperview()
// view.addSubview(label)
label.text = "error"
// label.isHidden = !self.showError
}
section.header = header
}
<<< ButtonRow() {
$0.title = "#next"
}.cellSetup() {cell, row in
cell.backgroundColor = self.appTintColor
cell.tintColor = UIColor.white
let bgColorView = UIView()
bgColorView.backgroundColor = self.appTintColor
cell.selectedBackgroundView = bgColorView
}.onCellSelection { cell, row in
// self.nextButtonTapped()
}
}
private func AddLanguagesTexts(toForm form: Form) {
let itemNames = ["one","two","three"]
var i = 1
let values = form.values()
if let v = values["item1"] {
/*
for itemName in itemNames{
var r = form.rowBy(tag: "item \(i)")
r?.title = "changed"
i = i + 1
}
*/
}else {
// Eureka From Set-up
form
+++ Section("vvvv")
i = 1
for itemName in itemNames{
form.last!
<<< TextRow("item \(i)") {
$0.title = itemName
$0.placeholder = itemName
//$0.hidden = true
i = i + 1
}
}
}
// Eureka From Set-up
/*
form
+++ Section("Select item values")
for itemName in itemNames{
form.last!
<<< StepperRow() {
$0.tag = itemName
$0.title = itemName
$0.value = 0
}
}
*/
}
private func addFormWithToggle(toForm form: Form) {
let switchRowTag = "switch_row"
let setStartDateRowTag = "set_start_date_time"
let setEndDateRowTag = "set_end_date_time"
let switchRow = SwitchRow(switchRowTag) {
$0.title = "All Day Event"
$0.value = true
}
let hiddenCondition = Condition.function([switchRowTag]) { form in
guard let switchCell = form.rowBy(tag:switchRowTag) as? SwitchRow else {
return false
}
return switchCell.value == true
}
let s = Section()
s.append(switchRow)
s.append(DateTimeInlineRow(setStartDateRowTag) {
$0.title = "Starts"
$0.value = NSDate.oneHourFromNow() as Date
$0.hidden = hiddenCondition
})
s.append(DateTimeInlineRow(setEndDateRowTag) {
$0.title = "Ends"
$0.value = NSDate.hoursFormNow(numberOfHours: 4) as Date
$0.hidden = hiddenCondition
})
form.append(s)
}
private func presentAlert(title: String? = nil, message: String) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alertController, animated: true, completion: nil)
}
func getSelectedLanguages(languages: Set<String>) -> [String] {
var result = [String]()
for lang in languages {
result.append(lang)
}
return result
}
}
extension NSDate {
static func oneHourFromNow() -> NSDate {
return NSDate.hoursFormNow(numberOfHours: 1)
}
static func hoursFormNow(numberOfHours: Int) -> NSDate {
let interval = Double(numberOfHours) * 60
return NSDate().addingTimeInterval(interval)
}
}
Leave a Reply