12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //
- // RoomCard.swift
- // fiveConstant
- //
- // Created by 李建 on 2023/1/31.
- //
- import SwiftUI
- struct RoomCard: View {
- var roomData: RoomInfo
- @State private var rotating = false
- var body: some View {
- HStack {
- ZStack(alignment: .top) {
- RoundedRectangle(cornerRadius: 20)
- .fill(roomData.power! ? Color("MainColor") : Color(hex: 0xF0F5F6, alpha: 1))
-
- VStack(alignment: .leading, spacing: 40) {
- // 标题
- HStack {
- Text("\(roomData.name!)")
- .bold()
- Spacer()
- Image(systemName: roomData.power! ? "fanblades.fill": "fanblades.slash.fill").font(.title2)
- .foregroundColor(roomData.power! ? .white : .gray)
- .rotationEffect(.degrees(rotating ? 360 : 0))
- .onAppear {
- if roomData.power! {
- withAnimation(.linear(duration: 1).repeatForever(autoreverses: false)) {
- self.rotating = true
- }
- }
- }
- .onTapGesture {
- let data = PowerControlReq(controlNumber: roomData.control_number!, gateway: "YX-SS", power: !roomData.power!)
- HttpRequest<String>.loadData(target: RoomControlApi.power(data: data)) { returnData in
-
- }
- }
-
- }
- VStack(spacing: 10) {
- HStack {
- Image(systemName: "thermometer.medium")
- .foregroundColor(roomData.power! ? .white : Color(hex: 0xEE9898, alpha: 1))
- Text("\(roomData.temperature!)℃")
- .font(.callout)
- Spacer()
- Image(systemName: "aqi.medium")
- .foregroundColor(roomData.power! ? .white : Color(hex: 0xf0932b, alpha: 1))
- Text("\(roomData.air_quality!)")
- .font(.callout)
- }
- HStack{
- Image(systemName: "drop.fill")
- .foregroundColor(roomData.power! ? .white : Color(hex: 0x68B2FC, alpha: 1))
- Text("\(roomData.humidity!)%")
- .font(.callout)
- Spacer()
- Image(systemName: "carbon.dioxide.cloud")
- .foregroundColor(roomData.power! ? .white : Color(hex: 0x34495e, alpha: 1))
- Text("\(roomData.co2)")
- .font(.callout)
- }
- }
- }
- .foregroundColor(roomData.power! ? .white : Color("SecondColor"))
- .padding()
- }
- .frame(width: 160, height: 170)
- }
- }
- }
- struct RoomCard_Previews: PreviewProvider {
- static let json = """
- {"record_id":"1t7svi03170copjp9iimtd3z005isbfj","name":"样板间","home_id":"1t7svi01jj7copaplj7q47n170kd6hw6","home_name":"李建的家","is_master":true,"control_number":"1","user_id":"","power":false,"set_temp":27,"air_quality":0,"co2":0,"temperature":7,"humidity":0,"mode":2,"fan_speed":4,"fan_value":1,"timer_status":false,"duration":0}
- """.data(using: .utf8)!
- static var previews: some View {
- let decoder = JSONDecoder()
- let product = try? decoder.decode(RoomInfo.self, from: json)
- RoomCard(roomData: product!)
- }
- }
|