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
//  GridSlideView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/17/22.
6
//
7
 
8
import SwiftUI
9
 
10
 
11
struct GridSlideView: View {
12
 
13
    @EnvironmentObject private var appNavigation : AppNavigation
14
    @State private var scrollToIndex : Int = 0
15
 
16
    private let appData = AppData.sharedInstance
17
    private let capsuleDao : CapsuleDao = CapsuleDao.sharedInstance
18
 
19
    private var capsuleModel : CapsuleModel = CapsuleModel()
20
    private var viewModel : SlideGridViewModel = SlideGridViewModel()
21
    private var capsuleTitle : String = ""
22
 
23
    private let config = [
24
        GridItem(.fixed(Constants.CARD_WIDTH)),
25
        GridItem(.fixed(Constants.CARD_WIDTH))
26
    ]
27
 
28
 
29
 
30
    //init(capsuleUuid : String)
31
    init()
32
    {
33
 
34
        self.capsuleModel = capsuleDao.selectByUuid(uuid: appData.capsuleUuidActive)
35
        viewModel.fetch(capsuleUuid: self.capsuleModel.uuid, userUuid: appData.userUuid)
36
 
37
        if self.capsuleModel.name.count > Constants.APP_BAR_TITLE_MAX_LENGTH {
38
            capsuleTitle = String(Array(self.capsuleModel.name)[0...Constants.APP_BAR_TITLE_MAX_LENGTH]) + "..."
39
        } else {
40
            capsuleTitle = self.capsuleModel.name
41
        }
42
    }
43
 
44
    var body: some View {
45
 
46
            VStack(spacing: 0) {
47
                HStack {
48
                    Button(action: {
49
                        appData.slideUuidActive = ""
50
                        appData.save()
51
 
52
                        appNavigation.subpageActive = .capsules
53
 
54
 
55
                    }, label: {
56
 
57
 
58
                        Image(systemName: "chevron.backward")
59
                        .frame(width: 32, height: 32, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
60
                        .aspectRatio(contentMode: .fit)
61
                        .foregroundColor(Color("color_app_bar_foreground"))
62
                    })
63
                    .padding(.leading, 16)
64
 
65
                    Text(capsuleTitle)
66
                    .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_APP_BAR_HEAD1 ))
67
                    .foregroundColor(Color("color_app_bar_foreground"))
68
                        .padding(.leading, 4)
69
 
70
                    Spacer()
71
                }
72
                .background(Color("color_app_bar_background"))
73
                .edgesIgnoringSafeArea(.top)
74
                .frame(height: 50)
75
 
76
                Divider()
77
 
78
                ScrollView() {
79
                    ScrollViewReader { proxy in
80
                        LazyVGrid(columns: config, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/, spacing: /*@START_MENU_TOKEN@*/nil/*@END_MENU_TOKEN@*/, pinnedViews: /*@START_MENU_TOKEN@*/[]/*@END_MENU_TOKEN@*/, content: {
81
 
82
                            ForEach(0..<self.viewModel.slides.count) { index in
83
                                CardSlideView(
84
                                    slideUuid: self.viewModel.slides[index].uuid,
85
                                    position: index
86
                                )
87
                                .environmentObject(appNavigation)
88
                                .frame(
89
                                    width: Constants.CARD_WIDTH,
90
                                    height: Constants.CARD_HEIGHT,
91
                                    alignment: .center
92
                                )
93
                                .id(index)
94
 
95
                            }
96
                            /*}.onChange(of:  scrollToIndex, perform: { value in
97
                                print("onChange")
98
                                proxy.scrollTo(value, anchor: nil)
99
                            })*/
100
                        })
101
                    }
102
 
103
                }
104
                /*.onAppear {
105
                    var i : Int = 0
106
                    while i < self.viewModel.slides.count {
107
                        if appData.slideUuidActive == self.viewModel.slides[i].uuid {
108
                            self.scrollToIndex = i
109
                        }
110
                        i += 1
111
                    }
112
 
113
                }*/
114
                .padding(.top, 5)
115
 
116
 
117
 
118
 
119
        }
120
    }
121
}
122
 
123
struct GridSlideView_Previews: PreviewProvider {
124
    static var previews: some View {
125
        //GridSlideView(capsuleUuid: "C123")
126
        GridSlideView()
127
    }
128
}
129
 
130