//
//  MPPositive_RecommendShowTypeView.swift
//  MusicPlayer
//
//  Created by Mr.Zhou on 2024/5/20.
//

import UIKit
import MJRefresh
class MPPositive_RecommendShowTypeView: UIView, JXSegmentedListContainerViewListDelegate {
    //tableView
    private lazy var tableView:UITableView = {
        let tableView = UITableView()
        if #available(iOS 15.0, *) {
            tableView.sectionHeaderTopPadding = 0
        }
        tableView.backgroundColor = .clear
        tableView.separatorStyle = .none
        tableView.estimatedRowHeight = 200
        tableView.rowHeight = UITableView.automaticDimension
        tableView.dataSource = self
        tableView.delegate = self
        tableView.register(MPPositive_ArtistShowSongTableViewCell.self, forCellReuseIdentifier: MPPositive_ArtistShowSongTableViewCellID)
        tableView.register(MPPositive_ArtistShowListableViewCell.self, forCellReuseIdentifier: MPPositive_ArtistShowListableViewCellID)
        return tableView
    }()
    private let MPPositive_ArtistShowSongTableViewCellID = "MPPositive_ArtistShowSongTableViewCell"
    private let MPPositive_ArtistShowListableViewCellID = "MPPositive_ArtistShowListableViewCell"
    private var sectionList:MPPositive_RecommendListViewModel!{
        didSet{
            //当前数据完整
            tableView.reloadData()
        }
    }
    //选中内容
    var chooseItemBlock:((MPPositive_BrowseItemViewModel) -> Void)?
                         
    init(_ frame:CGRect, list:MPPositive_RecommendListViewModel) {
        super.init(frame: frame)
        backgroundColor = .clear
        //赋值
        DispatchQueue.main.async {
            [weak self] in
            self?.sectionList = list
        }
        addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.left.top.right.bottom.equalToSuperview()
        }
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    //MARK: - 分页代理
    func listView() -> UIView {
        return self
    }

}
//MARK: - tableView
extension MPPositive_RecommendShowTypeView:UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if let first = sectionList?.items.first {
            switch first.browseItem.itemType {
            case .single:
                return sectionList.items.count
            case .list:
                return 1
            default:
                return 0
            }
        }else {
            return 0
        }
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let first = sectionList?.items.first {
            switch first.browseItem.itemType {
            case .single:
                let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_ArtistShowSongTableViewCellID) as! MPPositive_ArtistShowSongTableViewCell
                cell.itemView = sectionList.items[indexPath.row]
                return cell
            case .list:
                let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_ArtistShowListableViewCellID, for: indexPath) as! MPPositive_ArtistShowListableViewCell
                cell.itemViews = sectionList.items
                cell.chooseItemBlock = {
                    [weak self] item in
                    guard let self = self else {return}
                    if chooseItemBlock != nil {
                        chooseItemBlock!(item)
                    }
                }
                cell.showType = .List
                return cell
            default:
                let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_ArtistShowSongTableViewCellID) as! MPPositive_ArtistShowSongTableViewCell
                
                return cell
            }
        }else {
            let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_ArtistShowSongTableViewCellID) as! MPPositive_ArtistShowSongTableViewCell
            
            return cell
        }
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let first = sectionList?.items.first {
            switch first.browseItem.itemType {
            case .single:
                //当前是单曲分页，点击cell可以直接触发事件块
                if chooseItemBlock != nil {
                    chooseItemBlock!(sectionList.items[indexPath.row])
                }
            case .list:
                break
            default:
                break
            }
        }
    }
}
