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")
}
}