| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- //
- // SBTScreenShootView.swift
- // SolarBT
- //
- // Created by weclouds on 2019/5/15.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- class SBTScreenShootView: UIView {
- var arr0 : [Float]? = [Float]()
- var arr1 : [Float]? = [Float]()
- var arr2 : [Float]? = [Float]()
- var arr3 : [Float]? = [Float]()
- var arr4 : [Float]? = [Float]()
- var arr5 : [Float]? = [Float]()
- var weekData : [OneDayData]? {
- didSet{
-
- }
- }
-
- var dayArr :[String]?
- lazy var batteryChartView: DVBarChartView = {
- let chartView = DVBarChartView(frame: CGRect(x: 0, y: 50 , width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
- chartView.centerX = self.frame.width / 2
- chartView.barGap = 17
- chartView.barWidth = 33
- chartView.yAxisViewWidth = 50
- chartView.numberOfYAxisElements = 5
- chartView.xAxisTitleArray = self.dayArr
- chartView.backColor = UIColor.white
- chartView.axisColor = UIColor(hexString: "#E4E4E4")
- chartView.xValues = arr0 as? NSMutableArray
- chartView.xValues2 = arr1 as? NSMutableArray
- chartView.tag = 700000
- chartView.yAxisMaxValue = 7000 * 2;
- chartView.isHidden = true
- chartView.isLandspace = true
- chartView.isShotImage = true
- chartView.draw()
- return chartView
- }()
-
- lazy var chargeChartView: DVBarChartView = {
- let chartView = DVBarChartView(frame: CGRect(x: 0, y: 50, width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
- chartView.centerX = self.frame.width / 2
- chartView.barGap = 17
- chartView.barWidth = 33
- chartView.yAxisViewWidth = 50
- chartView.numberOfYAxisElements = 5
- chartView.xAxisTitleArray = self.dayArr
- chartView.backColor = UIColor.white
- chartView.axisColor = UIColor(hexString: "#E4E4E4")
- chartView.tag = 700001
- chartView.yAxisMaxValue = 2500;
- chartView.isHidden = true
- chartView.isLandspace = true
- chartView.isShotImage = true
- chartView.draw()
- return chartView
- }()
-
- lazy var dischargeChartView: DVBarChartView = {
- let chartView = DVBarChartView(frame: CGRect(x: 0, y: 70, width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
- chartView.centerX = self.frame.width / 2
- chartView.barGap = 17
- chartView.barWidth = 33
- chartView.yAxisViewWidth = 50
- chartView.numberOfYAxisElements = 5
- chartView.xAxisTitleArray = self.dayArr
- chartView.backColor = UIColor.white
- chartView.axisColor = UIColor(hexString: "#E4E4E4")
- chartView.tag = 700002
- chartView.yAxisMaxValue = 2500;
- chartView.isHidden = true
- chartView.isLandspace = true
- chartView.isShotImage = true
- chartView.draw()
- return chartView
- }()
-
- lazy var toolbar: UIView = {
- let toolbar = UIView(frame: CGRect(x: 0 , y: self.frame.size.height - 50, width: 375, height: 30))
- toolbar.centerX = self.frame.width / 2
- toolbar.backgroundColor = UIColor.white
- toolbar.layer.masksToBounds = true
- toolbar.layer.cornerRadius = 15
- toolbar.layer.borderWidth = 1
- toolbar.layer.borderColor = UIColor(hexString: "#DEDEDE")?.cgColor
- return toolbar
- }()
- let btnTitles = ["Battery".da_localizedStr(),"Charge".da_localizedStr(),"Discharge".da_localizedStr()]
-
- override init(frame: CGRect) {
- super.init(frame: frame)
- self.backgroundColor = UIColor.white
- dayArr = [String]()
-
- let first = nowTime("yyyy-M-d")
- let second = getLastDay(first)
- let third = getLastDay(second)
- let foreth = getLastDay(third)
- let fifth = getLastDay(foreth)
- let sixth = getLastDay(fifth)
- let seventh = getLastDay(sixth)
- let eighth = getLastDay(seventh)
- dayArr?.append("Today".da_localizedStr())
- dayArr?.append("Yesterday".da_localizedStr())
- dayArr?.append(third.subString(start: 5))
- dayArr?.append(foreth.subString(start: 5))
- dayArr?.append(fifth.subString(start: 5))
- dayArr?.append(sixth.subString(start: 5))
- dayArr?.append(seventh.subString(start: 5))
- dayArr?.append(eighth.subString(start: 5))
- createUI()
- notificationChangeToolButton()
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension SBTScreenShootView{
-
- @objc func notificationChangeToolButton() {
- for i in 0..<3 {
- let btn : UIButton = toolbar.viewWithTag((i + 8000)) as! UIButton
- btn.isSelected = false
- }
-
- let selectedIndex = AppShare.toolbarSelectedIndex
- let button : UIButton = toolbar.viewWithTag((selectedIndex! + 8000)) as! UIButton
- button.isSelected = true
-
- if selectedIndex == 0 {
-
- show(batteryChartView)
- }else if selectedIndex == 1 {
- show(chargeChartView)
- }else if selectedIndex == 2 {
- show(dischargeChartView)
- }
- }
-
- @objc func btnClick(_ button: UIButton) {
- for i in 0..<3 {
- let btn : UIButton = toolbar.viewWithTag((i + 8000)) as! UIButton
- btn.isSelected = false
- }
- button.isSelected = true
-
- let index = button.tag - 8000
-
-
- if index == 0 {
-
- show(batteryChartView)
- }else if index == 1 {
- show(chargeChartView)
- }else if index == 2 {
- show(dischargeChartView)
- }
-
- }
-
-
- func show(_ chartView:DVBarChartView) {
- batteryChartView.isHidden = true
- chargeChartView.isHidden = true
- dischargeChartView.isHidden = true
-
- chartView.isHidden = false
- }
- func createUI() {
- let buttonW : CGFloat = 375 / 3
- let buttonH : CGFloat = 30
-
- for i in 0..<3 {
- let btn = UIButton(type: .custom)
- btn.setTitle(btnTitles[i], for: .normal)
- btn.setTitleColor(UIColor(hexString: "#989898"), for: .normal)
- btn.setTitleColor(UIColor(hexString: "#FFFFFF"), for: .selected)
- btn.titleLabel?.font = UIFont(name: PingFangSC_Medium, size: 11)
- btn.setBackgroundImage(UIImage(named: "toorbar_normal"), for: .selected)
- btn.setBackgroundImage(UIImage(named: "toorbar_selected"), for: .selected)
- btn.frame = CGRect(x: CGFloat(i) * buttonW, y: 0, width: buttonW, height: CGFloat(buttonH))
- btn.tag = 8000 + i
- btn.layer.masksToBounds = true
- btn.layer.cornerRadius = 15
- btn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
- if i == 0 {
- btn.isSelected = true // 默认选择第一个
- show(batteryChartView)
- }
- toolbar.addSubview(btn)
-
- }
-
- //添加chartView
- self.addSubview(batteryChartView)
- self.addSubview(chargeChartView)
- self.addSubview(dischargeChartView)
- self.addSubview(toolbar)
- }
- }
- extension SBTScreenShootView{
- func fillChartsData(_ weekData : [OneDayData]?) {
-
- arr0?.removeAll()
- arr1?.removeAll()
- arr2?.removeAll()
- arr3?.removeAll()
- arr4?.removeAll()
- arr5?.removeAll()
-
- if let arr = weekData {
- for i in 0..<arr.count {
- let oneDay = arr[i]
- let his_batteryVoltageMin = Float(oneDay.his_batteryVoltageMin!)// 蓄电池最低电压
- arr0?.append(his_batteryVoltageMin!)
- let his_batteryVoltageMax = Float(oneDay.his_batteryVoltageMax!)// 蓄电池最高电压
- arr1?.append(his_batteryVoltageMax!)
- //充电
- let his_chargingCurrentMax = Float(oneDay.his_chargingCurrentMax!)// 充电最大电流
- arr2?.append(his_chargingCurrentMax!)
-
- let his_generationCapacity = String(format: "%.03f", Double(oneDay.his_generationCapacity!)! * 0.001)// // 发电量
- // arr8?.append(his_generationCapacity! * 0.001)
- arr3?.append(Float(his_generationCapacity) as! Float)
-
- //放电
- let his_dischargeCurrentmax = Float(oneDay.his_dischargeCurrentmax!) // 放电最大电流
- arr4?.append(his_dischargeCurrentmax!)
- let his_dischargeCapacity = String(format: "%.03f", Double(oneDay.his_dischargeCapacity!)! * 0.001)// 放电量
- arr5?.append(Float(his_dischargeCapacity) as! Float)
-
- }
- }
- configCharts()
- }
-
- //MARK : 设置数据
- func configCharts() {
- for i in 0..<3 {
- let ccc : DVBarChartView = viewWithTag(700000 + i) as! DVBarChartView
- ccc.removeAllPlot()
- ccc.reloadInputViews()
-
-
- if i == 0 {
- ccc.addPlot(arr0)
- ccc.addPlot2(arr1)
-
- var TitleArr0 = [String]()
- TitleArr0.removeAll()
- for value in arr0! {
- let title = String(format: "%@\n%.1fV","Minimum_battery_voltage".da_localizedStr(), value)
- TitleArr0.append(title)
- }
-
- var TitleArr1 = [String]()
- TitleArr1.removeAll()
- for value in arr1! {
- let title = String(format: "%@\n%.1fV","Maximum_battery_voltage".da_localizedStr(), value)
- TitleArr1.append(title)
- }
-
- ccc.xTitles = TitleArr0
- ccc.xTitles2 = TitleArr1
-
- ccc.legendTitle1 = "Maximum_battery_voltage".da_localizedStr()
- ccc.legendTitle2 = "Minimum_battery_voltage".da_localizedStr()
- }else if i == 1 {
- ccc.addPlot(arr2)
- ccc.addPlot2(arr3)
-
- var TitleArr0 = [String]()
- TitleArr0.removeAll()
- for value in arr2! {
- let title = String(format: "%@\n%.2fA","Maximum_current".da_localizedStr(), value)
- TitleArr0.append(title)
- }
-
- var TitleArr1 = [String]()
- TitleArr1.removeAll()
- for value in arr3! {
- let title = String(format: "%@\n%.3fkWh","Power_ge".da_localizedStr(), value)
- TitleArr1.append(title)
- }
-
- ccc.xTitles = TitleArr1
- ccc.xTitles2 = TitleArr0
-
- ccc.legendTitle1 = "Maximum_charge_current".da_localizedStr()
- ccc.legendTitle2 = "Power_ge".da_localizedStr()
- }else if i == 2 {
- ccc.addPlot(arr4)
- ccc.addPlot2(arr5)
-
- var TitleArr0 = [String]()
- TitleArr0.removeAll()
- for value in arr4! {
- let title = String(format: "%@\n%.2fA","Maximum_discharge_current".da_localizedStr(), value)
- TitleArr0.append(title)
- }
-
- var TitleArr1 = [String]()
- TitleArr1.removeAll()
- for value in arr5! {
- let title = String(format: "%@\n%.3fkWh","Discharge_amount".da_localizedStr(), value)
- TitleArr1.append(title)
- }
- ccc.xTitles = TitleArr1
- ccc.xTitles2 = TitleArr0
-
- ccc.legendTitle1 = "Maximum_discharge_current".da_localizedStr()
- ccc.legendTitle2 = "Discharge_amount".da_localizedStr()
- }
- ccc.draw()
- }
- }
- }
|