| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- //
- // SearchDaftarSertifikatVC.swift
- // Sirani
- //
- // Created by Anhar Solehudin on 31/03/19.
- // Copyright © 2019 Anhar Solehudin. All rights reserved.
- //
- import UIKit
- protocol SearchDaftarSertifikatDelegate {
- func onSearch(search: String, parameter: String, jenis: String, jenisLabel: String)
- }
- class SearchDaftarSertifikatVC: UIViewController {
-
- // Outlets / Views
- @IBOutlet weak var inputSearch: RoundTextField!
- @IBOutlet weak var optionsLayoutTV: UITableView!
- @IBOutlet weak var optionsLayout: UIView!
- @IBOutlet weak var optionsBg: UIView!
- @IBOutlet weak var btnParameterOptions: UIButton!
- @IBOutlet weak var btnJenisSertifikatOptions: UIButton!
-
- // Initialize
- var delegate: SearchDaftarSertifikatDelegate?
-
- // constants vallue data
- private let parameterOptionItems = [
- OptionItem(label: "Nomor Sertifikat", value: "nomor"),
- OptionItem(label: "Nama Customer", value: "cust_name"),
- OptionItem(label: "Nama Perangkat", value: "eqp_name"),
- OptionItem(label: "Merk & Model", value: "models"),
- OptionItem(label: "PLG ID", value: "plg_id"),
- OptionItem(label: "Brand", value: "brand")
- ]
- private let jenisSertifikatOptionItems = [
- OptionItem(label: "Sertifikat Terbit", value: "1"),
- OptionItem(label: "Sertifikat Pencabutan", value: "2")
- ]
- private let OPTION_PARAMATER_ID = 1
- private let OPTION_JENIS_SERTIFIKAT_ID = 2
-
- // Others
- private var selectedOptions = 0
- private var selectedOptionItems = [OptionItem]()
- private var optionsShown = false
-
- // Result Values
- private var search = ""
- private var parameter = ""
- private var jenis = "1"
- private var jenisLabel = "Sertifikat Terbit"
-
- // 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
-
- btnJenisSertifikatOptions.layer.masksToBounds = false
- btnJenisSertifikatOptions.layer.shadowColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
- btnJenisSertifikatOptions.layer.shadowOpacity = 0.5
- btnJenisSertifikatOptions.layer.shadowOffset = CGSize(width: 1, height: 1)
- btnJenisSertifikatOptions.layer.shadowRadius = 1
- jenis = jenisSertifikatOptionItems[0].value as! String
- jenisLabel = jenisSertifikatOptionItems[0].label
- btnJenisSertifikatOptions.setTitle(jenisLabel, for: .normal)
-
- hideOptions()
- optionsLayoutTV.bringSubviewToFront(optionsBg)
- let onOptionsBgTapped = UITapGestureRecognizer(target: self, action: #selector(hideOptions))
- optionsBg.addGestureRecognizer(onOptionsBgTapped)
- }
- override func viewDidLoad() {
- super.viewDidLoad()
-
- optionsLayoutTV.delegate = self
- optionsLayoutTV.dataSource = self
- optionsLayoutTV.tableFooterView = UIView()
- }
-
- @IBAction func onInputSearchKeyTap(_ sender: Any) {
- view.endEditing(true)
- }
-
- @IBAction func unwindToDaftarSertifikat(_ sender: Any) {
- if optionsShown {
- hideOptions()
- } else {
- performSegue(withIdentifier: "unwindToDaftarSertifikat", sender: self)
- }
- }
-
- @IBAction func onParameterOptionsTapped(_ sender: Any) {
- selectedOptions = OPTION_PARAMATER_ID
- selectedOptionItems.removeAll()
- selectedOptionItems += parameterOptionItems
- optionsLayoutTV.reloadData()
- showOptions()
- }
-
- @IBAction func onJenisSertifikatOptionsTapped(_ sender: Any) {
- selectedOptions = OPTION_JENIS_SERTIFIKAT_ID
- selectedOptionItems.removeAll()
- selectedOptionItems += jenisSertifikatOptionItems
- optionsLayoutTV.reloadData()
- showOptions()
- }
-
- @IBAction func onResetTapped(_ sender: Any) {
- search = ""
- parameter = ""
- jenis = "1"
- jenisLabel = "Sertifikat Terbit"
-
- inputSearch.text = ""
- btnParameterOptions.setTitle("Pilih Parameter", for: .normal)
- btnJenisSertifikatOptions.setTitle(jenisLabel, for: .normal)
- }
-
- @IBAction func onSearchTapped(_ sender: Any) {
- if let searchText = inputSearch.getText() {
- search = searchText
- }
-
- self.delegate?.onSearch(search: search, parameter: parameter, jenis: jenis, jenisLabel: jenisLabel)
- performSegue(withIdentifier: "unwindToDaftarSertifikat", sender: self)
- }
-
- private func showOptions() {
- optionsLayout.show()
- optionsShown = true
- }
-
- @objc private func hideOptions() {
- optionsLayout.hide()
- optionsShown = false
- }
- }
- extension SearchDaftarSertifikatVC: 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: "OptionCell", 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_SERTIFIKAT_ID {
- jenis = selectedOptionItems[indexPath.row].value as! String
- jenisLabel = selectedOptionItems[indexPath.row].label
- btnJenisSertifikatOptions.setTitle(jenisLabel, for: .normal)
- }
-
- hideOptions()
- }
- }
|