Cards shuffle correctly, remove statistics tabview
This commit is contained in:
		@@ -16,7 +16,6 @@
 | 
				
			|||||||
		7E28111D273302860063DC78 /* toki-dictionary.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E28111B273302860063DC78 /* toki-dictionary.json */; };
 | 
							7E28111D273302860063DC78 /* toki-dictionary.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E28111B273302860063DC78 /* toki-dictionary.json */; };
 | 
				
			||||||
		7E28112227330DD30063DC78 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E28112127330DD20063DC78 /* Constants.swift */; };
 | 
							7E28112227330DD30063DC78 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E28112127330DD20063DC78 /* Constants.swift */; };
 | 
				
			||||||
		7E716B3E273986E5009E2CF6 /* TokiLesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B3D273986E5009E2CF6 /* TokiLesson.swift */; };
 | 
							7E716B3E273986E5009E2CF6 /* TokiLesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B3D273986E5009E2CF6 /* TokiLesson.swift */; };
 | 
				
			||||||
		7E716B4027398ABD009E2CF6 /* toki-lessons.json in Resources */ = {isa = PBXBuildFile; fileRef = 7E716B3F27398ABD009E2CF6 /* toki-lessons.json */; };
 | 
					 | 
				
			||||||
		7E716B4227398CDF009E2CF6 /* FlashCardLessonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B4127398CDF009E2CF6 /* FlashCardLessonsView.swift */; };
 | 
							7E716B4227398CDF009E2CF6 /* FlashCardLessonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B4127398CDF009E2CF6 /* FlashCardLessonsView.swift */; };
 | 
				
			||||||
		7E716B4427398D3D009E2CF6 /* FlashCardLessonsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B4327398D3D009E2CF6 /* FlashCardLessonsViewModel.swift */; };
 | 
							7E716B4427398D3D009E2CF6 /* FlashCardLessonsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B4327398D3D009E2CF6 /* FlashCardLessonsViewModel.swift */; };
 | 
				
			||||||
		7E716B462739B968009E2CF6 /* FlashCardLessonResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B452739B968009E2CF6 /* FlashCardLessonResultsView.swift */; };
 | 
							7E716B462739B968009E2CF6 /* FlashCardLessonResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E716B452739B968009E2CF6 /* FlashCardLessonResultsView.swift */; };
 | 
				
			||||||
@@ -28,6 +27,7 @@
 | 
				
			|||||||
		7E943A28273211C300E7DDF4 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7E943A27273211C300E7DDF4 /* Preview Assets.xcassets */; };
 | 
							7E943A28273211C300E7DDF4 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7E943A27273211C300E7DDF4 /* Preview Assets.xcassets */; };
 | 
				
			||||||
		7E943A2A273211C300E7DDF4 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E943A29273211C300E7DDF4 /* Persistence.swift */; };
 | 
							7E943A2A273211C300E7DDF4 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E943A29273211C300E7DDF4 /* Persistence.swift */; };
 | 
				
			||||||
		7E943A2D273211C300E7DDF4 /* Toki_Trainer.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 7E943A2B273211C300E7DDF4 /* Toki_Trainer.xcdatamodeld */; };
 | 
							7E943A2D273211C300E7DDF4 /* Toki_Trainer.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 7E943A2B273211C300E7DDF4 /* Toki_Trainer.xcdatamodeld */; };
 | 
				
			||||||
 | 
							7EBAE6AA273D65FD00BCFA09 /* toki-lessons.json in Resources */ = {isa = PBXBuildFile; fileRef = 7EBAE6A9273D65FD00BCFA09 /* toki-lessons.json */; };
 | 
				
			||||||
		7EF546162737B8FB00537AE6 /* FlashCardResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF546152737B8FA00537AE6 /* FlashCardResultsView.swift */; };
 | 
							7EF546162737B8FB00537AE6 /* FlashCardResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EF546152737B8FA00537AE6 /* FlashCardResultsView.swift */; };
 | 
				
			||||||
/* End PBXBuildFile section */
 | 
					/* End PBXBuildFile section */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +41,6 @@
 | 
				
			|||||||
		7E28111B273302860063DC78 /* toki-dictionary.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "toki-dictionary.json"; sourceTree = "<group>"; };
 | 
							7E28111B273302860063DC78 /* toki-dictionary.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "toki-dictionary.json"; sourceTree = "<group>"; };
 | 
				
			||||||
		7E28112127330DD20063DC78 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
 | 
							7E28112127330DD20063DC78 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
 | 
				
			||||||
		7E716B3D273986E5009E2CF6 /* TokiLesson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokiLesson.swift; sourceTree = "<group>"; };
 | 
							7E716B3D273986E5009E2CF6 /* TokiLesson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokiLesson.swift; sourceTree = "<group>"; };
 | 
				
			||||||
		7E716B3F27398ABD009E2CF6 /* toki-lessons.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "toki-lessons.json"; path = "../../../../../Desktop/toki-pona-dict-json/output/toki-lessons.json"; sourceTree = "<group>"; };
 | 
					 | 
				
			||||||
		7E716B4127398CDF009E2CF6 /* FlashCardLessonsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonsView.swift; sourceTree = "<group>"; };
 | 
							7E716B4127398CDF009E2CF6 /* FlashCardLessonsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonsView.swift; sourceTree = "<group>"; };
 | 
				
			||||||
		7E716B4327398D3D009E2CF6 /* FlashCardLessonsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonsViewModel.swift; sourceTree = "<group>"; };
 | 
							7E716B4327398D3D009E2CF6 /* FlashCardLessonsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonsViewModel.swift; sourceTree = "<group>"; };
 | 
				
			||||||
		7E716B452739B968009E2CF6 /* FlashCardLessonResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonResultsView.swift; sourceTree = "<group>"; };
 | 
							7E716B452739B968009E2CF6 /* FlashCardLessonResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardLessonResultsView.swift; sourceTree = "<group>"; };
 | 
				
			||||||
@@ -54,6 +53,7 @@
 | 
				
			|||||||
		7E943A27273211C300E7DDF4 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
 | 
							7E943A27273211C300E7DDF4 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
 | 
				
			||||||
		7E943A29273211C300E7DDF4 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; };
 | 
							7E943A29273211C300E7DDF4 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; };
 | 
				
			||||||
		7E943A2C273211C300E7DDF4 /* Toki_Trainer.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Toki_Trainer.xcdatamodel; sourceTree = "<group>"; };
 | 
							7E943A2C273211C300E7DDF4 /* Toki_Trainer.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Toki_Trainer.xcdatamodel; sourceTree = "<group>"; };
 | 
				
			||||||
 | 
							7EBAE6A9273D65FD00BCFA09 /* toki-lessons.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "toki-lessons.json"; sourceTree = "<group>"; };
 | 
				
			||||||
		7EF546152737B8FA00537AE6 /* FlashCardResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardResultsView.swift; sourceTree = "<group>"; };
 | 
							7EF546152737B8FA00537AE6 /* FlashCardResultsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlashCardResultsView.swift; sourceTree = "<group>"; };
 | 
				
			||||||
/* End PBXFileReference section */
 | 
					/* End PBXFileReference section */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -107,7 +107,7 @@
 | 
				
			|||||||
			isa = PBXGroup;
 | 
								isa = PBXGroup;
 | 
				
			||||||
			children = (
 | 
								children = (
 | 
				
			||||||
				7E28111B273302860063DC78 /* toki-dictionary.json */,
 | 
									7E28111B273302860063DC78 /* toki-dictionary.json */,
 | 
				
			||||||
				7E716B3F27398ABD009E2CF6 /* toki-lessons.json */,
 | 
									7EBAE6A9273D65FD00BCFA09 /* toki-lessons.json */,
 | 
				
			||||||
				7E28111A273302860063DC78 /* toki-partsofspeech.json */,
 | 
									7E28111A273302860063DC78 /* toki-partsofspeech.json */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			path = "JSON Data";
 | 
								path = "JSON Data";
 | 
				
			||||||
@@ -211,8 +211,8 @@
 | 
				
			|||||||
			isa = PBXResourcesBuildPhase;
 | 
								isa = PBXResourcesBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
			files = (
 | 
								files = (
 | 
				
			||||||
 | 
									7EBAE6AA273D65FD00BCFA09 /* toki-lessons.json in Resources */,
 | 
				
			||||||
				7E943A28273211C300E7DDF4 /* Preview Assets.xcassets in Resources */,
 | 
									7E943A28273211C300E7DDF4 /* Preview Assets.xcassets in Resources */,
 | 
				
			||||||
				7E716B4027398ABD009E2CF6 /* toki-lessons.json in Resources */,
 | 
					 | 
				
			||||||
				7E943A25273211C300E7DDF4 /* Assets.xcassets in Resources */,
 | 
									7E943A25273211C300E7DDF4 /* Assets.xcassets in Resources */,
 | 
				
			||||||
				7E28111D273302860063DC78 /* toki-dictionary.json in Resources */,
 | 
									7E28111D273302860063DC78 /* toki-dictionary.json in Resources */,
 | 
				
			||||||
				7E28111C273302860063DC78 /* toki-partsofspeech.json in Resources */,
 | 
									7E28111C273302860063DC78 /* toki-partsofspeech.json in Resources */,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1714
									
								
								Toki Trainer/JSON Data/toki-lessons.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1714
									
								
								Toki Trainer/JSON Data/toki-lessons.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -21,7 +21,7 @@ struct ContentView: View {
 | 
				
			|||||||
        TabView {
 | 
					        TabView {
 | 
				
			||||||
            TranslatorView()
 | 
					            TranslatorView()
 | 
				
			||||||
                .tabItem {
 | 
					                .tabItem {
 | 
				
			||||||
                    Image(systemName: "pencil")
 | 
					                    Image(systemName: "message")
 | 
				
			||||||
                    Text("Phrase Lookup")
 | 
					                    Text("Phrase Lookup")
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            FlashCardLessonsView()
 | 
					            FlashCardLessonsView()
 | 
				
			||||||
@@ -29,11 +29,11 @@ struct ContentView: View {
 | 
				
			|||||||
                    Image(systemName: "character.textbox")
 | 
					                    Image(systemName: "character.textbox")
 | 
				
			||||||
                    Text("Flash Cards")
 | 
					                    Text("Flash Cards")
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            FlashCardResultsView()
 | 
					//            FlashCardResultsView()
 | 
				
			||||||
                .tabItem {
 | 
					//                .tabItem {
 | 
				
			||||||
                    Image(systemName: "number.circle")
 | 
					//                    Image(systemName: "number.circle")
 | 
				
			||||||
                    Text("Flash Card Results")
 | 
					//                    Text("Flash Card Results")
 | 
				
			||||||
                }
 | 
					//                }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ struct FlashCardLessonsView: View {
 | 
				
			|||||||
    var body: some View {
 | 
					    var body: some View {
 | 
				
			||||||
        NavigationView {
 | 
					        NavigationView {
 | 
				
			||||||
            List(flashCardLessonsVM.lessons, id: \.lesson) { lesson in
 | 
					            List(flashCardLessonsVM.lessons, id: \.lesson) { lesson in
 | 
				
			||||||
                NavigationLink(destination: FlashCardView(lesson: lesson.lesson, passedDictionary: lesson.words)) {
 | 
					                NavigationLink(destination: FlashCardView(lesson: lesson.lesson, passedDictionary: lesson.words.shuffled())) {
 | 
				
			||||||
                    Text(lesson.lesson)
 | 
					                    Text(lesson.lesson)
 | 
				
			||||||
                        .bold()
 | 
					                        .bold()
 | 
				
			||||||
                        .onAppear {
 | 
					                        .onAppear {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,6 +61,7 @@ struct FlashCardStack: View {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    var currentLesson: String
 | 
					    var currentLesson: String
 | 
				
			||||||
    var dictionary: [TokiDictEntry]
 | 
					    var dictionary: [TokiDictEntry]
 | 
				
			||||||
 | 
					    @State private var shuffledDictionary: [TokiDictEntry] = []
 | 
				
			||||||
    @State private var flashCards: [FlashCard] = []
 | 
					    @State private var flashCards: [FlashCard] = []
 | 
				
			||||||
    @State private var topFlashCard: FlashCard? = nil
 | 
					    @State private var topFlashCard: FlashCard? = nil
 | 
				
			||||||
    @State private var flashCardsAreInteractive: [Bool] = []
 | 
					    @State private var flashCardsAreInteractive: [Bool] = []
 | 
				
			||||||
@@ -71,6 +72,11 @@ struct FlashCardStack: View {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    @State private var currentFlashCard = 0
 | 
					    @State private var currentFlashCard = 0
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    init(currentLesson: String, dictionary: [TokiDictEntry]) {
 | 
				
			||||||
 | 
					        self.currentLesson = currentLesson
 | 
				
			||||||
 | 
					        self.dictionary = dictionary
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    var body: some View {
 | 
					    var body: some View {
 | 
				
			||||||
        VStack {
 | 
					        VStack {
 | 
				
			||||||
            ZStack {
 | 
					            ZStack {
 | 
				
			||||||
@@ -99,10 +105,12 @@ struct FlashCardStack: View {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    func initFlashCards() {
 | 
					    func initFlashCards() {
 | 
				
			||||||
        flashCards = []
 | 
					        flashCards = []
 | 
				
			||||||
        for index in dictionary.indices {
 | 
					        shuffledDictionary = dictionary
 | 
				
			||||||
 | 
					        shuffledDictionary.shuffle()
 | 
				
			||||||
 | 
					        for index in shuffledDictionary.indices {
 | 
				
			||||||
            flashCardsAreInteractive.append(false)
 | 
					            flashCardsAreInteractive.append(false)
 | 
				
			||||||
            flashCardsResults.append(FlashCardResult.Unanswered)
 | 
					            flashCardsResults.append(FlashCardResult.Unanswered)
 | 
				
			||||||
            flashCards.append(FlashCard(isInteractive: $flashCardsAreInteractive[index], result: $flashCardsResults[index].onChange(cardAnswerReceived), dictionaryEntry: dictionary[index]))
 | 
					            flashCards.append(FlashCard(isInteractive: $flashCardsAreInteractive[index], result: $flashCardsResults[index].onChange(cardAnswerReceived), dictionaryEntry: shuffledDictionary[index]))
 | 
				
			||||||
            flashCardsVertOffset.append(370)
 | 
					            flashCardsVertOffset.append(370)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if flashCards.count - currentFlashCard >= 3 {
 | 
					        if flashCards.count - currentFlashCard >= 3 {
 | 
				
			||||||
@@ -134,7 +142,7 @@ struct FlashCardStack: View {
 | 
				
			|||||||
    func setFlashCardAnswersCoreData(_ correct: Bool) {
 | 
					    func setFlashCardAnswersCoreData(_ correct: Bool) {
 | 
				
			||||||
        var cardInDatabase = false
 | 
					        var cardInDatabase = false
 | 
				
			||||||
        for answer in flashCardAnswers {
 | 
					        for answer in flashCardAnswers {
 | 
				
			||||||
            if answer.word == dictionary[currentFlashCard].word {
 | 
					            if answer.word == shuffledDictionary[currentFlashCard].word {
 | 
				
			||||||
                print("word in database: \(answer.word)")
 | 
					                print("word in database: \(answer.word)")
 | 
				
			||||||
                print("tries: \(answer.triesCount)")
 | 
					                print("tries: \(answer.triesCount)")
 | 
				
			||||||
                print("correct`: \(answer.correctCount)")
 | 
					                print("correct`: \(answer.correctCount)")
 | 
				
			||||||
@@ -171,7 +179,7 @@ struct FlashCardStack: View {
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        if cardInDatabase == false {
 | 
					        if cardInDatabase == false {
 | 
				
			||||||
            let answer = FlashCardAnswer(context: viewContext)
 | 
					            let answer = FlashCardAnswer(context: viewContext)
 | 
				
			||||||
            answer.word = dictionary[currentFlashCard].word
 | 
					            answer.word = shuffledDictionary[currentFlashCard].word
 | 
				
			||||||
            answer.triesCount = 1
 | 
					            answer.triesCount = 1
 | 
				
			||||||
            if correct {
 | 
					            if correct {
 | 
				
			||||||
                answer.correctCount = 1
 | 
					                answer.correctCount = 1
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user