| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- //
- // SearchAplikasiDitolakVC.swift
- // Sirani
- //
- // Created by Anhar Solehudin on 21/04/19.
- // Copyright © 2019 Anhar Solehudin. All rights reserved.
- //
- import UIKit
- protocol SearchAplikasiDitolakDelegate {
- func onSearch(search: String, parameter: String, jenis: String)
- }
- class SearchAplikasiDitolakVC: UIViewController {
-
- // Outlets
- @IBOutlet weak var inputSearch: RoundTextField!
- @IBOutlet weak var optionsTV: UITableView!
- @IBOutlet weak var optionsLayout: UIView!
- @IBOutlet weak var optionsBg: UIView!
- @IBOutlet weak var btnParameterOptions: UIButton!
- @IBOutlet weak var btnJenisOptions: UIButton!
- // Initialize
- var delegate: SearchAplikasiDitolakDelegate?
-
- // id
- private let unwindSegueId = "unwindSearchToAplikasiDitolakSegueId"
- private let cellId = "searchAplikasiDitolakOptionCellId"
-
- // constants vallue data
- private let OPTION_PARAMATER_ID = 1
- private let OPTION_JENIS_ID = 2
- private let OPTION_PARAMATER_LABEL = "Pilih Parameter"
- private let OPTION_JENIS_LABEL = "Pilih Jenis"
- private let parameterOptionItems = [
- OptionItem(label: "Semua", value: ""),
- OptionItem(label: "Nomor Resi", value: "resi_cek"),
- OptionItem(label: "Tanggal Resi", value: "tgla"),
- OptionItem(label: "ID Customer", value: "cust_id"),
- OptionItem(label: "Nama Customer", value: "custs"),
- OptionItem(label: "Nama Perangkat", value: "eqp_name"),
- OptionItem(label: "Merk", value: "merk"),
- OptionItem(label: "Model", value: "model"),
- OptionItem(label: "Negara", value: "negara"),
- OptionItem(label: "ID Aplikasi", value: "apl_id")
- ]
- private let jenisOptionItems = [OptionItem]()
-
- // variables
- private var selectedOptions = 0
- private var selectedOptionItems = [OptionItem]()
- private var optionsShown = false
-
- // Result Values
- private var search = ""
- private var parameter = ""
- private var jenis = ""
-
- // View Lifecycles
- override var preferredStatusBarStyle: UIStatusBarStyle {
- return .lightContent
- }
-
- override func viewWillAppear(_ animated: Bool) {
- btnParameterOptions.layer.masksToBounds = false
- btnParameterOptions.layer.shadowColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
- btnParameterOptions.layer.shadowOpacity = 0.5
- btnParameterOptions.layer.shadowOffset = CGSize(width: 1, height: 1)
- btnParameterOptions.layer.shadowRadius = 1
-
- btnJenisOptions.layer.masksToBounds = false
- btnJenisOptions.layer.shadowColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
- btnJenisOptions.layer.shadowOpacity = 0.5
- btnJenisOptions.layer.shadowOffset = CGSize(width: 1, height: 1)
- btnJenisOptions.layer.shadowRadius = 1
-
- hideOptions()
- optionsTV.bringSubviewToFront(optionsBg)
- let onOptionsBgTapped = UITapGestureRecognizer(target: self, action: #selector(hideOptions))
- optionsBg.addGestureRecognizer(onOptionsBgTapped)
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- optionsTV.delegate = self
- optionsTV.dataSource = self
- optionsTV.tableFooterView = UIView()
- }
-
- // private functions
- private func showOptions() {
- optionsLayout.show()
- optionsShown = true
- }
-
- @objc private func hideOptions() {
- optionsLayout.hide()
- optionsShown = false
- }
-
- // actions
- @IBAction func onBtnBackTap(_ sender: Any) {
- performSegue(withIdentifier: unwindSegueId, sender: self)
- }
-
- @IBAction func onInputSearchKeyTap(_ sender: Any) {
- view.endEditing(true)
- }
-
- @IBAction func onParameterOptionsTapped(_ sender: Any) {
- selectedOptions = OPTION_PARAMATER_ID
- selectedOptionItems.removeAll()
- selectedOptionItems += parameterOptionItems
- optionsTV.reloadData()
- showOptions()
- }
-
- @IBAction func onJenisOptionsTapped(_ sender: Any) {
- // selectedOptions = OPTION_JENIS_ID
- // selectedOptionItems.removeAll()
- // selectedOptionItems += jenisOptionItems
- // optionsTV.reloadData()
- // showOptions()
- }
-
- @IBAction func onBtnResetTap(_ sender: Any) {
- search = ""
- parameter = ""
- jenis = ""
-
- inputSearch.text = ""
- btnParameterOptions.setTitle(OPTION_PARAMATER_LABEL, for: .normal)
- btnJenisOptions.setTitle(OPTION_JENIS_LABEL, for: .normal)
- }
-
- @IBAction func onBtnSearchTap(_ sender: Any) {
- if let searchText = inputSearch.getText() {
- search = searchText
- }
-
- self.delegate?.onSearch(search: search, parameter: parameter, jenis: jenis)
- performSegue(withIdentifier: unwindSegueId, sender: self)
- }
- }
- extension SearchAplikasiDitolakVC: UITableViewDelegate, UITableViewDataSource {
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return selectedOptionItems.count
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- if let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as? OptionsCell {
-
- let optionItem = selectedOptionItems[indexPath.row]
- cell.updateViews(item: optionItem)
-
- return cell
- } else {
- return OptionsCell()
- }
- }
-
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- if selectedOptions == OPTION_PARAMATER_ID {
- parameter = selectedOptionItems[indexPath.row].value as! String
- let parameterLabel = selectedOptionItems[indexPath.row].label
- btnParameterOptions.setTitle(parameterLabel, for: .normal)
- }
- // else if selectedOptions == OPTION_JENIS_ID {
- // jenis = selectedOptionItems[indexPath.row].value as! String
- // let jenisLabel = selectedOptionItems[indexPath.row].label
- // btnJenisOptions.setTitle(jenisLabel, for: .normal)
- // }
-
- hideOptions()
- }
- }
|