Proyectos de Subversion Iphone Microlearning - Inconcert

Rev

Rev 19 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

//
//  CapsuleInProgressView.swift
//  twogetskills
//
//  Created by Efrain Yanez Recanatini on 7/27/22.
//

import SwiftUI
import HTMLEntities

struct MyCapsuleInProgressView: View {

    @EnvironmentObject var appNavigation : AppNavigation
    private var appData = Environment(\.appData).wrappedValue
    
    @ObservedObject  private var viewModel = MyCapsulesInProgressViewModel()
    private var capsuleTitle : String = ""
    
    init(capsuleUuid: String)
    {
        viewModel.fetch()
        
        if viewModel.capsule.uuid.isEmpty {
            self.capsuleTitle = Config.LANG_MY_CAPSULES_INPROGRESS_NOT_AVAILABLE
        } else {
            
            if  viewModel.capsule.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {
                self.capsuleTitle =  String(Array(viewModel.capsule.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."
            }  else {
                self.capsuleTitle = viewModel.capsule.name
            }
        
            
        }
        
        
        
    }
    
    var body: some View {
        Group {
            HStack {
                VStack(spacing: 0) {
                    HStack {
     
                        
                        
                        Text(Config.LANG_MY_CAPSULES_INPROGRESS_TITLE)
                            .font(Font.custom(Config.FONT_NAME_BOLD, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_TITLE))
                            .foregroundColor(Color("color_capsule_inprogress_foreground_title"))
                            
                        Spacer()
                    }
                    .padding(.top, 16)
                    .padding(.leading, 16)
                    
                    HStack {
                        Text(self.capsuleTitle)
                            .font(Font.custom(Config.FONT_NAME_BOLD, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_CAPSULE_NAME))
                            .foregroundColor(Color("color_capsule_inprogress_foreground_capsule_name"))
                            
                            .padding(.leading, 4)
                            .padding(.trailing, 4)
                        Spacer()
                    }
                    .padding(.top, 10)
                    .padding(.leading, 16)
                    
                    HStack {
                        ProgressBar(
                            value: self.viewModel.capsule.progress,
                            maxValue: 100,
                            backgroundColor: Color("color_capsule_inprogress_progress_bar_background"),
                            foregroundColor: Color("color_capsule_inprogress_progress_bar_foreground")
                            
                        )
                        .frame(height: 6)
                        .padding(10)
                        
                        Text( String(format: "%.1f", self.viewModel.capsule.progress) + "%")
                            .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_PROGRESS_LABEL ))
                            .foregroundColor(Color("color_capsule_inprogress_progress_label"))
                            .padding(5)
                    }
                    .padding(.leading, 10)
                    .padding(.trailing, 10)
                    
                    Spacer()
                    
                    if !self.viewModel.capsule.uuid.isEmpty {
                    
                        HStack {
                            Button(action: {
                                self.appData.topicUuidActive = viewModel.capsule.topicUuid
                                self.appData.capsuleUuidActive = viewModel.capsule.uuid
                                self.appData.slideUuidActive = ""
                                self.appData.save()
                                
                                withAnimation {
                                    appNavigation.subPageSource = .mycapsules
                                    appNavigation.subpageActive = .slides
                                }
                                
                                
                            }, label: {
                                Text(Config.LANG_MY_CAPSULES_INPROGRESS_BUTTON_CONTINUE)
                                    .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_BUTTON))
                                    .foregroundColor(Color("color_capsule_inprogress_button_foreground"))
                                    .padding(.vertical, 5)
                                    .padding(.horizontal, 10)
                                   
                            })
                            .background(Color("color_capsule_inprogress_button_background"))
                            .cornerRadius(3)
                            .overlay(
                                RoundedRectangle(cornerRadius: 3)
                                    .stroke(Color("color_capsule_inprogress_button_border"), lineWidth:1)
                            )

                     
                           
                            Spacer()
                      

                        }
                        .padding(.leading, 16)
                        .padding(.bottom, 10)
                    }
              
                    
                }
                Group {
                    if self.viewModel.capsule.image.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
                        
                        
                        Image(uiImage: UIImage(named: "logo") ?? UIImage())
                            .resizable()
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                               
                           
                        
                    } else {
                        CustomAsyncImage(
                            url: URL(string: self.viewModel.capsule.image.trimmingCharacters(in: .whitespacesAndNewlines))!,
                            placeholder: { Text(Config.LANG_COMMON_LOADING).font(.footnote).foregroundColor(.black)},
                            image: {
                                Image(uiImage: $0).resizable()
                              
                                       
                            }
                        )
                    }
                } . frame(width: 93, height: 140, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
                    .background(Color("color_window_background"))
                    .padding(.top, 16)
                    .padding(.bottom, 16)
                    .padding(.trailing, 16)
                
            }
        }
        .frame(width: UIScreen.main.bounds.width - 32, height: 151)
        .background(Color("color_capsule_inprogress_background"))
        .cornerRadius(8)
        .overlay(
            RoundedRectangle(cornerRadius: 8)
                .stroke(Color("color_capsule_comment_rating_image_border"), lineWidth:1)
        )
        .shadow(color: Color("color_capsule_inprogress_shadow"), radius:4, x: 5, y: 5)


    }
}

struct MyCapsuleInProgressView_Previews: PreviewProvider {
    static var previews: some View {
        MyCapsuleInProgressView(capsuleUuid: "C123")
    }
}