Newer
Older
LaserMethane / LaserMethane / ViewController / Event / SingModeEventViewController.swift
//
//  SingModeEventViewController.swift
//  LaserMethane
//
//  Created by 203 on 2021/8/19.
//

import DefaultsKit
import MJRefresh
import UIKit

class SingModeEventViewController: UIViewController {
    @IBOutlet var startTimePicker: UIDatePicker!
    @IBOutlet var endTimePicker: UIDatePicker!
    @IBOutlet var keywordsView: UITextField!
    @IBOutlet var eventTableView: UITableView!

    private let defaults = Defaults.shared
    private let taskShared = EventTaskRealmManager.shared
    private var rowsArray: [EventRowModel] = []
    private var dformatter = DateFormatter()
    private var isUpdate: Bool = false
    private var startDate: String?
    private var endDate: String?
    private var keyWords: String?
    private var valueDelegate: TransferValueDelegate!

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "事件查询(单机模式)"
        navigationController?.navigationBar.isTranslucent = false
        navigationController?.navigationBar.barTintColor = .systemBlue
        let dict: [NSAttributedString.Key: Any] = [NSAttributedString.Key.foregroundColor: UIColor.white]
        navigationController?.navigationBar.titleTextAttributes = dict
        navigationController?.navigationBar.tintColor = .white
        // Do any additional setup after loading the view.
        setupTableView()
        // 默认加载数据
        loadData(startTime: "", keywords: "")
    }

    func setupTableView() {
        eventTableView.register(UINib(nibName: "ListCustomCell", bundle: nil), forCellReuseIdentifier: "listCustomCell")
        eventTableView.dataSource = self
        eventTableView.delegate = self

        eventTableView.mj_header = MJRefreshNormalHeader {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { [self] in
                isUpdate = true
                loadData(startTime: "", keywords: "")
                eventTableView.mj_header?.endRefreshing()
            })
        }

        eventTableView.mj_footer = MJRefreshBackNormalFooter {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: { [self] in
                isUpdate = false
                loadData(startTime: startDate ?? "", keywords: keyWords ?? "")
                eventTableView.mj_footer?.endRefreshing()
            })
        }
    }

    @IBAction func startSearchAction(_ sender: Any) {
        dformatter.dateFormat = "yyyy-MM-dd"
        startDate = dformatter.string(from: startTimePicker.date)
        keyWords = keywordsView.text
        loadData(startTime: startDate ?? "", keywords: keyWords ?? "")
    }

    func loadData(startTime: String, keywords: String) {
        if keywords != "" {
            let result = taskShared.queryTaskEventByName(name: keywords)
            if result.count == 0 {
                AlertHub.shared.showWaringAlert(controller: self, message: "查询失败,请重试")
                rowsArray.removeAll()
            } else {
                rowsArray = result
            }
        } else {
            rowsArray = taskShared.queryAllTaskEvent()
        }
        eventTableView.reloadData()
    }
}

extension SingModeEventViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        rowsArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell: ListCustomCell! = eventTableView.dequeueReusableCell(withIdentifier: "listCustomCell", for: indexPath) as? ListCustomCell
        cell.selectionStyle = .none
        let row = (indexPath as NSIndexPath).row
        let model = rowsArray[row]
        cell.nameLabel.text = model.name! + "-" + model.type!
        cell.dateLabel.text = model.createTime
        cell.userLabel.text = model.user
        return cell
    }
}

extension SingModeEventViewController: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let detailViewController = SingModeEventDetailViewController(nibName: "SingModeEventDetailViewController", bundle: nil)
        // 委托代理
        valueDelegate = detailViewController
        // 实现代理的方法,传值
        let row = (indexPath as NSIndexPath).row
        let model = rowsArray[row]
        let transferDic: NSDictionary = ["createTime": model.createTime!, "description": model.description!, "data": model.data!, "images": model.images!]
        valueDelegate.transfer(controller: self, dic: transferDic)
        navigationController?.pushViewController(detailViewController, animated: true)
    }
}