Proyectos de Subversion Iphone Microlearning

Rev

Autoría | Ultima modificación | Ver Log |

//
//  CardCapsuleView.swift
//  twogetskills
//
//  Created by Efrain Yanez Recanatini on 2/17/22.
//

import SwiftUI

struct CardCapsuleView: View {
    private var capsuleModel : CapsuleModel
   
    
    @State private var colorCardViewBackground = UIColor(hex: Config.COLOR_WINDOW_BACKGROUND)
    
    @State private var colorWindowBackground = UIColor(hex: Config.COLOR_WINDOW_BACKGROUND)
    
    @State private var colorCardViewBorder = UIColor(hex: Config.COLOR_CARD_VIEW_BORDER)
    
    @State private var colorBackgroundTopicFooter = UIColor(hex: Config.COLOR_BACKGROUND_TOPIC_FOOTER)
    
    @State private var colorForegroundTopicProgressBar = UIColor(hex: Config.COLOR_FOREGROUND_TOPIC_PROGRESS_BAR)
    
    @State private var colorTitle = UIColor(hex: Config.COLOR_TEXT_VIEW_TITLE);
    
    @State private var goToSlides : Bool = false

    
    init(capsuleModel : CapsuleModel)
    {
        self.capsuleModel = capsuleModel
        
        if self.capsuleModel.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {
            self.capsuleModel.name = String(Array(self.capsuleModel.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."
        }
        

    }
    
    var body: some View {
        Button(action: {
            let preference = Preference.sharedInstance
            preference.topicUuidActive = self.capsuleModel.topicUuid
            preference.capsuleUuidActive = self.capsuleModel.uuid
            preference.slideUuidActive = ""
            preference.save()
            
            
            self.goToSlides = true
        }) {
            NavigationLink("", destination: GridSlideView(capsuleUuid: self.capsuleModel.uuid), isActive: self.$goToSlides).frame( height: 0)

            
            VStack {
                Text(self.capsuleModel.name)
                .fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/)
                .font(.system(size: 11.0))
                .foregroundColor(Color(colorTitle ?? .red))
                .padding(.horizontal, 5)
                .padding(.top, 5)
                Spacer()
           
                HStack {
                    if self.capsuleModel.image.isEmpty {
                        
                        
                        Image(uiImage: UIImage(named: "logo") ?? UIImage())
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                           
                        
                    } else {
                        CustomAsyncImage(
                            url: URL(string: self.capsuleModel.image)!,
                            placeholder: { Text("Cargando...").font(.footnote).foregroundColor(.black)},
                            image: {
                                Image(uiImage: $0).resizable()
                            }
                        )
                    }
                }.padding(.horizontal, 5)
                
   
                Spacer()
                
                Group() {
                    HStack {
                        ProgressBar(
                            value: self.capsuleModel.progress,
                            maxValue: 100,
                            foregroundColor: Color(colorForegroundTopicProgressBar ?? .green)
                            )
                            .frame(height: 6)
                            .padding(10)
                        
                        Text( String(format: "%.1f", self.capsuleModel.progress) + "%")
                            .font(.system(size: 9.0))
                            .foregroundColor(Color(colorTitle ?? .red))
                            .padding(5)
                    }
                }
                .background(Color(colorBackgroundTopicFooter ?? .systemBlue))
                        
            }
            .background(Color(colorCardViewBackground ?? .gray))
            .cornerRadius(16)
            .overlay(
                RoundedRectangle(cornerRadius: 16)
                    .stroke(Color(colorCardViewBorder ?? .systemBlue), lineWidth:1)
            )
            .padding(.horizontal, 5)
        } .onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_CAPSULE))
        { data in
           // print("CardGalleryView  Receive " )
            
            if data.userInfo != nil {
                if let capsuleUuid = data.userInfo?["capsuleUuid"]! as? String {
                    if !capsuleUuid.isEmpty && capsuleUuid == self.capsuleModel.uuid {
                      // loadProgress()
                    }
                }
            }
        } .onAppear {
            print("CardCapsuleView")
        }
        .padding(.top, 5)
    }
    

    
 

}

struct CardCapsuleView_Previews: PreviewProvider {
    static var previews: some View {
        let capsule = CapsuleModel(
            uuid: "C123", topicUuid: "T123",
            name: "Capsula #1",
            description:  "",
            image: "https://dev.leaderslinked.com/images/ll-logo.png",
            position: 10,
            totalSlides: 20,
            viewSlides: 10,
            progress: 50,
            completed: 1)
        
        
        CardCapsuleView(capsuleModel:  capsule)
    }
}