Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 11 | Rev 36 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  CapsuleInProgressView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 7/27/22.
6
//
7
 
8
import SwiftUI
9
import HTMLEntities
10
 
11
struct MyCapsuleInProgressView: View {
12
 
13
    @EnvironmentObject var appNavigation : AppNavigation
17 efrain 14
    private var appData = AppData.sharedInstance
1 efrain 15
 
16
    private var capsuleModel : CapsuleModel
17
    private var capsuleTitle : String
18
 
19
    init(capsuleUuid: String)
20
    {
21
        let capsuleDao = CapsuleDao.sharedInstance
22
        capsuleModel = capsuleDao.selectByUuid(uuid: capsuleUuid)
23
 
24
        if capsuleModel.uuid.isEmpty {
25
            self.capsuleTitle = Config.LANG_MY_CAPSULES_INPROGRESS_NOT_AVAILABLE
26
        } else {
27
 
28
            if  capsuleModel.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {
29
                self.capsuleTitle =  String(Array(capsuleModel.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."
30
            }  else {
31
                self.capsuleTitle = capsuleModel.name
32
            }
33
 
34
 
35
        }
36
 
37
 
38
 
39
    }
40
 
41
    var body: some View {
42
        Group {
43
            HStack {
44
                VStack(spacing: 0) {
45
                    HStack {
46
 
47
 
48
 
49
                        Text(Config.LANG_MY_CAPSULES_INPROGRESS_TITLE)
50
                            .font(Font.custom(Config.FONT_NAME_BOLD, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_TITLE))
51
                            .foregroundColor(Color("color_capsule_inprogress_foreground_title"))
52
 
53
                        Spacer()
54
                    }
55
                    .padding(.top, 16)
56
                    .padding(.leading, 16)
57
 
58
                    HStack {
59
                        Text(self.capsuleTitle)
60
                            .font(Font.custom(Config.FONT_NAME_BOLD, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_CAPSULE_NAME))
61
                            .foregroundColor(Color("color_capsule_inprogress_foreground_capsule_name"))
62
 
63
                            .padding(.leading, 4)
64
                            .padding(.trailing, 4)
65
                        Spacer()
66
                    }
67
                    .padding(.top, 10)
68
                    .padding(.leading, 16)
69
 
70
                    HStack {
71
                        ProgressBar(
72
                            value: self.capsuleModel.progress,
73
                            maxValue: 100,
74
                            backgroundColor: Color("color_capsule_inprogress_progress_bar_background"),
75
                            foregroundColor: Color("color_capsule_inprogress_progress_bar_foreground")
76
 
77
                        )
78
                        .frame(height: 6)
79
                        .padding(10)
80
 
81
                        Text( String(format: "%.1f", self.capsuleModel.progress) + "%")
82
                            .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_PROGRESS_LABEL ))
83
                            .foregroundColor(Color("color_capsule_inprogress_progress_label"))
84
                            .padding(5)
85
                    }
86
                    .padding(.leading, 10)
87
                    .padding(.trailing, 10)
88
 
89
                    Spacer()
90
 
91
                    if !self.capsuleModel.uuid.isEmpty {
92
 
93
                        HStack {
94
                            Button(action: {
17 efrain 95
                                self.appData.topicUuidActive = capsuleModel.topicUuid
96
                                self.appData.capsuleUuidActive = capsuleModel.uuid
97
                                self.appData.slideUuidActive = ""
98
                                self.appData.save()
1 efrain 99
 
100
                                withAnimation {
11 efrain 101
                                    appNavigation.subPageSource = .mycapsules
8 efrain 102
                                    appNavigation.subpageActive = .slides
1 efrain 103
                                }
104
 
105
 
106
                            }, label: {
107
                                Text(Config.LANG_MY_CAPSULES_INPROGRESS_BUTTON_CONTINUE)
108
                                    .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_MY_CAPSULES_INPROGRESS_BUTTON))
109
                                    .foregroundColor(Color("color_capsule_inprogress_button_foreground"))
110
                                    .padding(.vertical, 5)
111
                                    .padding(.horizontal, 10)
112
 
113
                            })
114
                            .background(Color("color_capsule_inprogress_button_background"))
115
                            .cornerRadius(3)
116
                            .overlay(
117
                                RoundedRectangle(cornerRadius: 3)
118
                                    .stroke(Color("color_capsule_inprogress_button_border"), lineWidth:1)
119
                            )
120
 
121
 
122
 
123
                            Spacer()
124
 
125
 
126
                        }
127
                        .padding(.leading, 16)
128
                        .padding(.bottom, 10)
129
                    }
130
 
131
 
132
                }
133
                Group {
134
                    if self.capsuleModel.image.isEmpty {
135
 
136
 
137
                        Image(uiImage: UIImage(named: "logo") ?? UIImage())
138
                            .resizable()
139
                            .resizable()
140
                            .aspectRatio(contentMode: .fit)
141
 
142
 
143
 
144
                    } else {
145
                        CustomAsyncImage(
146
                            url: URL(string: self.capsuleModel.image)!,
147
                            placeholder: { Text(Config.LANG_COMMON_LOADING).font(.footnote).foregroundColor(.black)},
148
                            image: {
149
                                Image(uiImage: $0).resizable()
150
 
151
 
152
                            }
153
                        )
154
                    }
155
                } . frame(width: 93, height: 140, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
156
                    .background(Color("color_window_background"))
157
                    .padding(.top, 16)
158
                    .padding(.bottom, 16)
159
                    .padding(.trailing, 16)
160
 
161
            }
162
        }
163
        .frame(width: UIScreen.main.bounds.width - 32, height: 151)
164
        .background(Color("color_capsule_inprogress_background"))
165
        .cornerRadius(8)
166
        .overlay(
167
            RoundedRectangle(cornerRadius: 8)
168
                .stroke(Color("color_capsule_comment_rating_image_border"), lineWidth:1)
169
        )
170
        .shadow(color: Color("color_capsule_inprogress_shadow"), radius:4, x: 5, y: 5)
171
 
172
 
173
    }
174
}
175
 
176
struct MyCapsuleInProgressView_Previews: PreviewProvider {
177
    static var previews: some View {
178
        MyCapsuleInProgressView(capsuleUuid: "C123")
179
    }
180
}