Autoría | Ultima modificación | Ver Log |
//
// ProgressView.swift
// twogetskills
//
// Created by Efrain Yanez Recanatini on 5/5/22.
//
import Foundation
import SwiftUI
struct MyProgressView: View {
@EnvironmentObject private var networkMonitor : NetworkMonitor
@EnvironmentObject private var appNavigation : AppNavigation
@ObservedObject private var viewModel = ProgressViewModel()
init()
{
viewModel.load()
}
var body: some View {
GeometryReader { geometry in
VStack(spacing: 0) {
HStack {
Image("logo")
.resizable()
.frame(width: 32, height: 32, alignment: .center)
.aspectRatio(contentMode: .fit)
.foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground"))
.padding(.leading, 16)
Text(networkMonitor.status == .disconnected ? Config.LANG_ERROR_NETWORK_MESSAGE_SHORT : Config.LANG_TAB_BAR_BUTTON_PROGRESS)
.font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_APP_BAR_HEAD1 ))
.foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground"))
.padding(.leading, 4)
Spacer()
}
.edgesIgnoringSafeArea(.top)
.frame(height: 50)
.background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))
Divider().background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))
HStack {
Text("Cápsulas")
.font(.title3)
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.foregroundColor(Color("color_app_bar_foreground"))
Spacer()
}.padding([.top], 10)
.padding(.horizontal, 10)
HStack {
Spacer()
PieChartView(
values:[viewModel.percentajeCapsuleIncomplete, viewModel.percentajeCapsuleComplete],
names: ["", ""],
formatter: {value in String(format: "%.2f%%", value)},
colors: [
Color("color_progress_graph_background"),
Color("color_progress_graph_foreground")
],
backgroundColor: Color("color_window_background"),
widthFraction: 0.75,
innerRadiusFraction: 0.60,
chartSize : 250,
total : viewModel.percentajeCapsuleComplete
)
.frame(width: 190, height: 190, alignment: .center)
Spacer()
}
HStack {
Spacer()
VStack {
Text(String(viewModel.capsuleTotal))
.font(.subheadline)
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.foregroundColor(Color("color_textview_foreground"))
Text("Total")
.font(.subheadline)
.foregroundColor(.gray)
}
VStack {
Text(String(viewModel.capsuleTotalStarted))
.font(.subheadline)
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.foregroundColor(Color("color_textview_foreground"))
Text("Iniciadas")
.font(.subheadline)
.foregroundColor(.gray)
}
VStack {
Text(String(viewModel.capsuleTotalForStart))
.font(.subheadline)
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.foregroundColor(Color("color_textview_foreground"))
Text("Por realizar")
.font(.subheadline)
.foregroundColor(.gray)
}
VStack {
Text(String(viewModel.capsuleTotalCompleted))
.font(.subheadline)
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.foregroundColor(Color("color_textview_foreground"))
Text("Completadas")
.font(.subheadline)
.foregroundColor(.gray)
}
Spacer()
}.padding([.top], 5)
HStack {
Text("Retorno")
.fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
.font(.title3)
.foregroundColor(Color("color_textview_foreground"))
Spacer()
}.padding([.top], 5)
.padding(.horizontal, 10)
HStack {
Spacer()
PieChartView(
values:[
Double(viewModel.capsuleTotalWithoutReturning),
Double(viewModel.capsuleTotalWithReturning)
],
names: ["", ""],
formatter: {value in String(format: "%.0f", value)},
colors: [
Color("color_progress_graph_background"),
Color("color_progress_graph_foreground")
],
backgroundColor: Color("color_window_background"),
widthFraction: 0.75,
innerRadiusFraction: 0.60,
chartSize : 250,
total : Double(viewModel.capsuleTotalWithReturning)
)
.frame(width: 190, height: 190, alignment: .center)
Spacer()
}
Spacer()
}.onAppear {
viewModel.load()
}
.frame(width: geometry.size.width, height: geometry.size.height, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
.background(Color("color_window_background"))
.navigationTitle("Progreso")
.navigationBarTitleDisplayMode(.inline)
.navigationBarBackButtonHidden(true)
}
}
}
struct MyProgressView_Previews: PreviewProvider {
static var previews: some View {
MyProgressView()
}
}