Proyectos de Subversion Iphone Microlearning

Rev

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 {
    
    @ObservedObject private var viewModel = ProgressViewModel()

    private let colorTitle = UIColor(hex: Config.COLOR_TEXT_VIEW_TITLE)
    
    
    private let colorBackgroundTopic = UIColor(hex: Config.COLOR_BACKGROUND_TOPIC)
    
    private let colorAppBackground = UIColor(hex: Config.COLOR_APP_BAR)
    
    private let colorWindowBackground = UIColor(hex: Config.COLOR_WINDOW_BACKGROUND)
    
    init()
    {
        viewModel.load()
    }
    
    var body: some View {

        GeometryReader { geometry in
            VStack {
                HStack {
                    Text("Cápsulas")
                        .font(.title3)
                        .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
                        .foregroundColor(Color(colorTitle ?? .gray))
                    Spacer()
                }.padding([.top], 10)
                .padding(.horizontal, 10)


                HStack {
                    Spacer()


                    PieChartView(
                        values:[viewModel.percentajeCapsuleIncomplete, viewModel.percentajeCapsuleComplete],
                        names: ["", ""],
                        formatter: {value in String(format: "%.2f%%", value)},
                        colors: [
                            .gray,
                            Color(colorAppBackground ?? .green)
                        ],
                        backgroundColor: Color(colorBackgroundTopic ?? .gray),
                        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(colorTitle ?? .systemBlue))
                        
                        Text("Total")
                            .font(.subheadline)
                            .foregroundColor(.gray)
                    }
                    VStack {
                        Text(String(viewModel.capsuleTotalStarted))
                            .font(.subheadline)
                            .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
                            .foregroundColor(Color(colorTitle ?? .systemBlue))
                        
                        Text("Iniciadas")
                            .font(.subheadline)
                            .foregroundColor(.gray)
                    }
                    VStack {
                        Text(String(viewModel.capsuleTotalForStart))
                            .font(.subheadline)
                            .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
                            .foregroundColor(Color(colorTitle ?? .systemBlue))
                        
                        Text("Por realizar")
                            .font(.subheadline)
                            .foregroundColor(.gray)
                    }
                    VStack {
                        Text(String(viewModel.capsuleTotalCompleted))
                            .font(.subheadline)
                            .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
                            .foregroundColor(Color(colorTitle ?? .systemBlue))
                        
                        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(colorTitle ?? .gray))
                    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: [
                                .gray,
                                Color(colorAppBackground ?? .green)
                            ],
                            backgroundColor: Color(colorBackgroundTopic ?? .gray),
                            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(colorBackgroundTopic ?? .white))
            .navigationTitle("Progreso")
            .navigationBarTitleDisplayMode(.inline)
            .navigationBarBackButtonHidden(true)
           
        }
    }
}


struct MyProgressView_Previews: PreviewProvider {
    static var previews: some View {
        MyProgressView()
    }
}