Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 8 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  CardCapsuleView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/17/22.
6
//
7
 
8
import SwiftUI
9
 
10
struct CardCapsuleView: View {
11
 
12
    private let appData = AppData.sharedInstance
13
    private var capsuleTitle : String = ""
14
 
15
    @EnvironmentObject private var appNavigation : AppNavigation
16
    @ObservedObject private var viewModel = CapsuleCardViewModel()
17
 
18
    @State private var goToSlides : Bool = false
19
 
20
 
21
    init(capsuleUuid : String)
22
    {
23
        viewModel.fetch(capsuleUuid: capsuleUuid, userUuid: appData.userUuid)
24
 
25
        if viewModel.capsule.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {
26
            capsuleTitle =  String(Array(viewModel.capsule.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."
27
        } else {
28
            capsuleTitle = viewModel.capsule.name
29
        }
30
    }
31
 
32
    var body: some View {
33
 
34
        Button(action: {
35
 
36
            appData.topicUuidActive = self.viewModel.capsule.topicUuid
37
            appData.capsuleUuidActive = self.viewModel.capsule.uuid
38
            appData.slideUuidActive = ""
39
            appData.save()
40
 
41
            appNavigation.subpageActive = .slides
42
 
43
        }) {
44
            VStack {
45
                Text(self.capsuleTitle)
46
                .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_CARD_VIEW_TITLE))
47
                .foregroundColor(Color("color_textview"))
48
                .padding(.horizontal, 5)
49
                .padding(.top, 5)
50
                .multilineTextAlignment(/*@START_MENU_TOKEN@*/.leading/*@END_MENU_TOKEN@*/)
51
 
52
                HStack {
53
                    if self.viewModel.capsule.image.isEmpty {
54
                        Image(uiImage: UIImage(named: "logo") ?? UIImage())
55
                            .resizable()
56
                            .aspectRatio(contentMode: .fit)
57
                    } else {
58
                        CustomAsyncImage(
59
                            url: URL(string: self.viewModel.capsule.image)!,
60
                            placeholder: { Text(Config.LANG_COMMON_LOADING).font(.footnote).foregroundColor(.black)},
61
                            image: {
62
                                Image(uiImage: $0).resizable()
63
                            }
64
                        )
65
                    }
66
                }.padding(.horizontal, 5)
67
 
68
 
69
                Spacer()
70
 
71
                Group() {
72
                    HStack {
73
                        ProgressBar(
74
                            value: self.viewModel.capsule.progress,
75
                            maxValue: 100,
76
                            backgroundColor: Color("color_card_view_progress_background"),
77
                            foregroundColor: Color("color_card_view_progress_foreground")
78
 
79
                        )
80
                        .frame(height: 6)
81
                        .padding(10)
82
 
83
                        Text( String(format: "%.1f", self.viewModel.capsule.progress) + "%")
84
                            .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_CARD_VIEW_FOOTER ))
85
                            .foregroundColor(Color("color_textview"))
86
                            .padding(5)
87
                    }
88
                }
89
                .background(Color("color_card_view_background_footer"))
90
 
91
            }
92
            .background(Color("color_card_view_background"))
93
            .cornerRadius(16)
94
            .overlay(
95
                RoundedRectangle(cornerRadius: 16)
96
                    .stroke(Color("color_card_view_border"), lineWidth:1)
97
            )
98
            .padding(.horizontal, 5)
99
        }
100
        /*.onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_CAPSULE))
101
        { data in
102
            if data.userInfo != nil {
103
                if let capsuleUuid = data.userInfo?["capsuleUuid"]! as? String {
104
                    if !capsuleUuid.isEmpty && capsuleUuid == self.viewModel.capsule.uuid {
105
 
106
                        self.viewModel.fetchProgress(capsuleUuid: capsuleUuid, userUuid: appData.userUuid)
107
 
108
                    }
109
                }
110
            }
111
        }*/
112
        .padding(.top, 5)
113
    }
114
 
115
 
116
 
117
 
118
 
119
}
120
 
121
struct CardCapsuleView_Previews: PreviewProvider {
122
    static var previews: some View {
123
       CardCapsuleView(capsuleUuid: "C123")
124
    }
125
}
126
 
127