SBTScreenShootView.swift 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. //
  2. // SBTScreenShootView.swift
  3. // SolarBT
  4. //
  5. // Created by weclouds on 2019/5/15.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. class SBTScreenShootView: UIView {
  10. var arr0 : [Float]? = [Float]()
  11. var arr1 : [Float]? = [Float]()
  12. var arr2 : [Float]? = [Float]()
  13. var arr3 : [Float]? = [Float]()
  14. var arr4 : [Float]? = [Float]()
  15. var arr5 : [Float]? = [Float]()
  16. var weekData : [OneDayData]? {
  17. didSet{
  18. }
  19. }
  20. var dayArr :[String]?
  21. lazy var batteryChartView: DVBarChartView = {
  22. let chartView = DVBarChartView(frame: CGRect(x: 0, y: 50 , width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
  23. chartView.centerX = self.frame.width / 2
  24. chartView.barGap = 17
  25. chartView.barWidth = 33
  26. chartView.yAxisViewWidth = 50
  27. chartView.numberOfYAxisElements = 5
  28. chartView.xAxisTitleArray = self.dayArr
  29. chartView.backColor = UIColor.white
  30. chartView.axisColor = UIColor(hexString: "#E4E4E4")
  31. chartView.xValues = arr0 as? NSMutableArray
  32. chartView.xValues2 = arr1 as? NSMutableArray
  33. chartView.tag = 700000
  34. chartView.yAxisMaxValue = 7000 * 2;
  35. chartView.isHidden = true
  36. chartView.isLandspace = true
  37. chartView.isShotImage = true
  38. chartView.draw()
  39. return chartView
  40. }()
  41. lazy var chargeChartView: DVBarChartView = {
  42. let chartView = DVBarChartView(frame: CGRect(x: 0, y: 50, width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
  43. chartView.centerX = self.frame.width / 2
  44. chartView.barGap = 17
  45. chartView.barWidth = 33
  46. chartView.yAxisViewWidth = 50
  47. chartView.numberOfYAxisElements = 5
  48. chartView.xAxisTitleArray = self.dayArr
  49. chartView.backColor = UIColor.white
  50. chartView.axisColor = UIColor(hexString: "#E4E4E4")
  51. chartView.tag = 700001
  52. chartView.yAxisMaxValue = 2500;
  53. chartView.isHidden = true
  54. chartView.isLandspace = true
  55. chartView.isShotImage = true
  56. chartView.draw()
  57. return chartView
  58. }()
  59. lazy var dischargeChartView: DVBarChartView = {
  60. let chartView = DVBarChartView(frame: CGRect(x: 0, y: 70, width: KSCREENHEIGHT - 100, height: KSCREENWIDTH - 120))
  61. chartView.centerX = self.frame.width / 2
  62. chartView.barGap = 17
  63. chartView.barWidth = 33
  64. chartView.yAxisViewWidth = 50
  65. chartView.numberOfYAxisElements = 5
  66. chartView.xAxisTitleArray = self.dayArr
  67. chartView.backColor = UIColor.white
  68. chartView.axisColor = UIColor(hexString: "#E4E4E4")
  69. chartView.tag = 700002
  70. chartView.yAxisMaxValue = 2500;
  71. chartView.isHidden = true
  72. chartView.isLandspace = true
  73. chartView.isShotImage = true
  74. chartView.draw()
  75. return chartView
  76. }()
  77. lazy var toolbar: UIView = {
  78. let toolbar = UIView(frame: CGRect(x: 0 , y: self.frame.size.height - 50, width: 375, height: 30))
  79. toolbar.centerX = self.frame.width / 2
  80. toolbar.backgroundColor = UIColor.white
  81. toolbar.layer.masksToBounds = true
  82. toolbar.layer.cornerRadius = 15
  83. toolbar.layer.borderWidth = 1
  84. toolbar.layer.borderColor = UIColor(hexString: "#DEDEDE")?.cgColor
  85. return toolbar
  86. }()
  87. let btnTitles = ["Battery".da_localizedStr(),"Charge".da_localizedStr(),"Discharge".da_localizedStr()]
  88. override init(frame: CGRect) {
  89. super.init(frame: frame)
  90. self.backgroundColor = UIColor.white
  91. dayArr = [String]()
  92. let first = nowTime("yyyy-M-d")
  93. let second = getLastDay(first)
  94. let third = getLastDay(second)
  95. let foreth = getLastDay(third)
  96. let fifth = getLastDay(foreth)
  97. let sixth = getLastDay(fifth)
  98. let seventh = getLastDay(sixth)
  99. let eighth = getLastDay(seventh)
  100. dayArr?.append("Today".da_localizedStr())
  101. dayArr?.append("Yesterday".da_localizedStr())
  102. dayArr?.append(third.subString(start: 5))
  103. dayArr?.append(foreth.subString(start: 5))
  104. dayArr?.append(fifth.subString(start: 5))
  105. dayArr?.append(sixth.subString(start: 5))
  106. dayArr?.append(seventh.subString(start: 5))
  107. dayArr?.append(eighth.subString(start: 5))
  108. createUI()
  109. notificationChangeToolButton()
  110. }
  111. required init?(coder aDecoder: NSCoder) {
  112. fatalError("init(coder:) has not been implemented")
  113. }
  114. }
  115. extension SBTScreenShootView{
  116. @objc func notificationChangeToolButton() {
  117. for i in 0..<3 {
  118. let btn : UIButton = toolbar.viewWithTag((i + 8000)) as! UIButton
  119. btn.isSelected = false
  120. }
  121. let selectedIndex = AppShare.toolbarSelectedIndex
  122. let button : UIButton = toolbar.viewWithTag((selectedIndex! + 8000)) as! UIButton
  123. button.isSelected = true
  124. if selectedIndex == 0 {
  125. show(batteryChartView)
  126. }else if selectedIndex == 1 {
  127. show(chargeChartView)
  128. }else if selectedIndex == 2 {
  129. show(dischargeChartView)
  130. }
  131. }
  132. @objc func btnClick(_ button: UIButton) {
  133. for i in 0..<3 {
  134. let btn : UIButton = toolbar.viewWithTag((i + 8000)) as! UIButton
  135. btn.isSelected = false
  136. }
  137. button.isSelected = true
  138. let index = button.tag - 8000
  139. if index == 0 {
  140. show(batteryChartView)
  141. }else if index == 1 {
  142. show(chargeChartView)
  143. }else if index == 2 {
  144. show(dischargeChartView)
  145. }
  146. }
  147. func show(_ chartView:DVBarChartView) {
  148. batteryChartView.isHidden = true
  149. chargeChartView.isHidden = true
  150. dischargeChartView.isHidden = true
  151. chartView.isHidden = false
  152. }
  153. func createUI() {
  154. let buttonW : CGFloat = 375 / 3
  155. let buttonH : CGFloat = 30
  156. for i in 0..<3 {
  157. let btn = UIButton(type: .custom)
  158. btn.setTitle(btnTitles[i], for: .normal)
  159. btn.setTitleColor(UIColor(hexString: "#989898"), for: .normal)
  160. btn.setTitleColor(UIColor(hexString: "#FFFFFF"), for: .selected)
  161. btn.titleLabel?.font = UIFont(name: PingFangSC_Medium, size: 11)
  162. btn.setBackgroundImage(UIImage(named: "toorbar_normal"), for: .selected)
  163. btn.setBackgroundImage(UIImage(named: "toorbar_selected"), for: .selected)
  164. btn.frame = CGRect(x: CGFloat(i) * buttonW, y: 0, width: buttonW, height: CGFloat(buttonH))
  165. btn.tag = 8000 + i
  166. btn.layer.masksToBounds = true
  167. btn.layer.cornerRadius = 15
  168. btn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
  169. if i == 0 {
  170. btn.isSelected = true // 默认选择第一个
  171. show(batteryChartView)
  172. }
  173. toolbar.addSubview(btn)
  174. }
  175. //添加chartView
  176. self.addSubview(batteryChartView)
  177. self.addSubview(chargeChartView)
  178. self.addSubview(dischargeChartView)
  179. self.addSubview(toolbar)
  180. }
  181. }
  182. extension SBTScreenShootView{
  183. func fillChartsData(_ weekData : [OneDayData]?) {
  184. arr0?.removeAll()
  185. arr1?.removeAll()
  186. arr2?.removeAll()
  187. arr3?.removeAll()
  188. arr4?.removeAll()
  189. arr5?.removeAll()
  190. if let arr = weekData {
  191. for i in 0..<arr.count {
  192. let oneDay = arr[i]
  193. let his_batteryVoltageMin = Float(oneDay.his_batteryVoltageMin!)// 蓄电池最低电压
  194. arr0?.append(his_batteryVoltageMin!)
  195. let his_batteryVoltageMax = Float(oneDay.his_batteryVoltageMax!)// 蓄电池最高电压
  196. arr1?.append(his_batteryVoltageMax!)
  197. //充电
  198. let his_chargingCurrentMax = Float(oneDay.his_chargingCurrentMax!)// 充电最大电流
  199. arr2?.append(his_chargingCurrentMax!)
  200. let his_generationCapacity = String(format: "%.03f", Double(oneDay.his_generationCapacity!)! * 0.001)// // 发电量
  201. // arr8?.append(his_generationCapacity! * 0.001)
  202. arr3?.append(Float(his_generationCapacity) as! Float)
  203. //放电
  204. let his_dischargeCurrentmax = Float(oneDay.his_dischargeCurrentmax!) // 放电最大电流
  205. arr4?.append(his_dischargeCurrentmax!)
  206. let his_dischargeCapacity = String(format: "%.03f", Double(oneDay.his_dischargeCapacity!)! * 0.001)// 放电量
  207. arr5?.append(Float(his_dischargeCapacity) as! Float)
  208. }
  209. }
  210. configCharts()
  211. }
  212. //MARK : 设置数据
  213. func configCharts() {
  214. for i in 0..<3 {
  215. let ccc : DVBarChartView = viewWithTag(700000 + i) as! DVBarChartView
  216. ccc.removeAllPlot()
  217. ccc.reloadInputViews()
  218. if i == 0 {
  219. ccc.addPlot(arr0)
  220. ccc.addPlot2(arr1)
  221. var TitleArr0 = [String]()
  222. TitleArr0.removeAll()
  223. for value in arr0! {
  224. let title = String(format: "%@\n%.1fV","Minimum_battery_voltage".da_localizedStr(), value)
  225. TitleArr0.append(title)
  226. }
  227. var TitleArr1 = [String]()
  228. TitleArr1.removeAll()
  229. for value in arr1! {
  230. let title = String(format: "%@\n%.1fV","Maximum_battery_voltage".da_localizedStr(), value)
  231. TitleArr1.append(title)
  232. }
  233. ccc.xTitles = TitleArr0
  234. ccc.xTitles2 = TitleArr1
  235. ccc.legendTitle1 = "Maximum_battery_voltage".da_localizedStr()
  236. ccc.legendTitle2 = "Minimum_battery_voltage".da_localizedStr()
  237. }else if i == 1 {
  238. ccc.addPlot(arr2)
  239. ccc.addPlot2(arr3)
  240. var TitleArr0 = [String]()
  241. TitleArr0.removeAll()
  242. for value in arr2! {
  243. let title = String(format: "%@\n%.2fA","Maximum_current".da_localizedStr(), value)
  244. TitleArr0.append(title)
  245. }
  246. var TitleArr1 = [String]()
  247. TitleArr1.removeAll()
  248. for value in arr3! {
  249. let title = String(format: "%@\n%.3fkWh","Power_ge".da_localizedStr(), value)
  250. TitleArr1.append(title)
  251. }
  252. ccc.xTitles = TitleArr1
  253. ccc.xTitles2 = TitleArr0
  254. ccc.legendTitle1 = "Maximum_charge_current".da_localizedStr()
  255. ccc.legendTitle2 = "Power_ge".da_localizedStr()
  256. }else if i == 2 {
  257. ccc.addPlot(arr4)
  258. ccc.addPlot2(arr5)
  259. var TitleArr0 = [String]()
  260. TitleArr0.removeAll()
  261. for value in arr4! {
  262. let title = String(format: "%@\n%.2fA","Maximum_discharge_current".da_localizedStr(), value)
  263. TitleArr0.append(title)
  264. }
  265. var TitleArr1 = [String]()
  266. TitleArr1.removeAll()
  267. for value in arr5! {
  268. let title = String(format: "%@\n%.3fkWh","Discharge_amount".da_localizedStr(), value)
  269. TitleArr1.append(title)
  270. }
  271. ccc.xTitles = TitleArr1
  272. ccc.xTitles2 = TitleArr0
  273. ccc.legendTitle1 = "Maximum_discharge_current".da_localizedStr()
  274. ccc.legendTitle2 = "Discharge_amount".da_localizedStr()
  275. }
  276. ccc.draw()
  277. }
  278. }
  279. }