| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- //
- // SearchSertifikatNewVC.swift
- // Sirani
- //
- // Created by Hendi on 19/06/23.
- // Copyright © 2023 PT. Mitra Sinerji Teknoindo. All rights reserved.
- //
- import UIKit
- protocol SearchSertifikatNewDelegate {
- func onSearch(search: String, status: String, jenisLabel: String)
- }
- class SearchSertifikatNewVC: 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 btnStatusOptions: UIButton!
-
- // Initialize
- var delegate: SearchSertifikatNewDelegate?
-
- // constants vallue data
- private let jenisSertifikatOptionItems = [
- OptionItem(label: "Semua", value: ""),
- OptionItem(label: "Berlaku", value: "sertifkat_berlaku"),
- OptionItem(label: "Tidak Berlaku", value: "sertifikat_tidak_berlaku"),
- OptionItem(label: "Revisi", value: "sertifikat_revisi")
- ]
- private let OPTION_JENIS_SERTIFIKAT_ID = 1
-
- // Others
- private var selectedOptions = 0
- private var selectedOptionItems = [OptionItem]()
- private var optionsShown = false
-
- // Result Values
- private var search = ""
- private var status = ""
- private var jenisLabel = "Semua"
-
- // View Lifecycles
- override var preferredStatusBarStyle: UIStatusBarStyle {
- return .lightContent
- }
-
- override func viewWillAppear(_ animated: Bool) {
- btnStatusOptions.layer.masksToBounds = false
- btnStatusOptions.layer.shadowColor = #colorLiteral(red: 0.6000000238, green: 0.6000000238, blue: 0.6000000238, alpha: 1)
- btnStatusOptions.layer.shadowOpacity = 0.5
- btnStatusOptions.layer.shadowOffset = CGSize(width: 1, height: 1)
- btnStatusOptions.layer.shadowRadius = 1
- status = jenisSertifikatOptionItems[0].value as! String
- jenisLabel = jenisSertifikatOptionItems[0].label
- btnStatusOptions.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 unwindToSertifikatNew(_ sender: Any) {
- if optionsShown {
- hideOptions()
- } else {
- performSegue(withIdentifier: "unwindSearchToSertifikatSegueId", sender: self)
- }
- }
-
- @IBAction func onJenisSertifikatOptionsTapped(_ sender: Any) {
- selectedOptions = OPTION_JENIS_SERTIFIKAT_ID
- selectedOptionItems.removeAll()
- selectedOptionItems += jenisSertifikatOptionItems
- optionsLayoutTV.reloadData()
- showOptions()
- }
-
- @IBAction func onResetTapped(_ sender: Any) {
- search = ""
- status = ""
- jenisLabel = "Semua"
-
- inputSearch.text = ""
- btnStatusOptions.setTitle(jenisLabel, for: .normal)
- }
-
- @IBAction func onSearchTapped(_ sender: Any) {
- if let searchText = inputSearch.getText() {
- search = searchText
- }
- print("TEST : ")
- print("SEARCH \(search)")
- print("STATUS \(status)")
- print("JENIS \(jenisLabel)")
-
- self.delegate?.onSearch(search: search, status: status, jenisLabel: jenisLabel)
- performSegue(withIdentifier: "unwindSearchToSertifikatSegueId", sender: self)
- }
-
- private func showOptions() {
- optionsLayout.show()
- optionsShown = true
- }
-
- @objc private func hideOptions() {
- optionsLayout.hide()
- optionsShown = false
- }
- }
- extension SearchSertifikatNewVC: 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: "searchSertifikatNewCell", 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_JENIS_SERTIFIKAT_ID {
- status = selectedOptionItems[indexPath.row].value as! String
- jenisLabel = selectedOptionItems[indexPath.row].label
- btnStatusOptions.setTitle(jenisLabel, for: .normal)
- }
-
- hideOptions()
- }
- }
|