| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- //
- // SearchTarifSertifikatVC.swift
- // Sirani
- //
- // Created by Anhar Solehudin on 31/03/19.
- // Copyright © 2019 Anhar Solehudin. All rights reserved.
- //
- import UIKit
- protocol SearchTarifSertifikatDelegate {
- func onSearch(search: String, parameter: String, jenis: String, jenisLabel: String)
- }
- class SearchTarifSertifikatVC: 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: SearchTarifSertifikatDelegate?
-
- // constants vallue data
- private let parameterOptionItems = [
- OptionItem(label: "Keterangan", value: "ket")
- ]
- private let jenisSertifikatOptionItems = [
- OptionItem(label: "Tarif Sertifikat", value: "1"),
- OptionItem(label: "Tarif Pengujian SDPPI", value: "2"),
- OptionItem(label: "Tarif Pengujian RDC", value: "0"),
- OptionItem(label: "Tarif Pengujian BV", value: "7"),
- OptionItem(label: "Tarif Pengujian POLYTRON", value: "5")
- ]
- 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 = "Tarif Sertifikat"
-
- // 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
- parameter = parameterOptionItems[0].value as! String
- let parameterLabel = parameterOptionItems[0].label
- btnParameterOptions.setTitle(parameterLabel, for: .normal)
-
- 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 unwindToTarifSertifikat(_ sender: Any) {
- if optionsShown {
- hideOptions()
- } else {
- performSegue(withIdentifier: "unwindToTarifSertifikat", sender: self)
- }
- }
-
- @IBAction func onInputSearchKeyTap(_ sender: Any) {
- view.endEditing(true)
- }
-
- @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 = ""
- inputSearch.text = ""
-
- parameter = parameterOptionItems[0].value as! String
- let parameterLabel = parameterOptionItems[0].label
- btnParameterOptions.setTitle(parameterLabel, for: .normal)
-
- jenis = jenisSertifikatOptionItems[0].value as! String
- jenisLabel = jenisSertifikatOptionItems[0].label
- 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: "unwindToTarifSertifikat", sender: self)
- }
-
- private func showOptions() {
- optionsLayout.show()
- optionsShown = true
- }
-
- @objc private func hideOptions() {
- optionsLayout.hide()
- optionsShown = false
- }
- }
- extension SearchTarifSertifikatVC: 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: "SearchTarifOptionCell", 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()
- }
- }
|