Files
Kalulu/sources/language_tool/lesson_exercises_container.gd
T

96 lines
3.6 KiB
GDScript

extends PanelContainer
@export var lesson_number: = -1:
set = _set_lesson_number
@onready var lesson_id_label: Label = %LessonIDLabel
@onready var lesson_gps: HBoxContainer = %LessonGPs
@onready var exercise_buttons: Array[OptionButton] = [%ExerciseButton1, %ExerciseButton2, %ExerciseButton3]
@onready var ok_texture: TextureRect = %OKTexture
@onready var number_of_g_ps: Label = %NumberOfGPs
@onready var number_of_syllables: Label = %NumberOfSyllables
@onready var number_of_words: Label = %NumberOfWords
@onready var number_of_sentences: Label = %NumberOfSentences
var sentences_by_lesson: Dictionary = {}
func _ready() -> void:
Database.db.query("Select * FROM ExerciseTypes")
for element: Dictionary in Database.db.query_result:
for exercise_button: OptionButton in exercise_buttons:
exercise_button.add_item(element.Type, element.ID)
func _set_lesson_number(value: int) -> void:
if value == lesson_number:
return
lesson_number = value
lesson_id_label.text = str(lesson_number)
for gp: Label in lesson_gps.get_children():
gp.queue_free()
Database.db.query("Select Grapheme, Phoneme, LessonNb, GPID FROM Lessons
INNER JOIN GPsInLessons ON GPsInLessons.LessonID = Lessons.ID
INNER JOIN GPs ON GPsInLessons.GPID = GPs.ID
WHERE LessonNb = " + str(lesson_number))
for element: Dictionary in Database.db.query_result:
var gp: = Label.new()
gp.text = element.Grapheme + "-" + element.Phoneme
lesson_gps.add_child(gp)
Database.db.query("Select Exercise1, Exercise2, Exercise3, LessonNb FROM LessonsExercises
INNER JOIN Lessons ON Lessons.ID = LessonsExercises.LessonID
WHERE LessonNb = " + str(lesson_number))
for element: Dictionary in Database.db.query_result:
exercise_buttons[0].select(exercise_buttons[0].get_item_index(element.Exercise1))
exercise_buttons[1].select(exercise_buttons[0].get_item_index(element.Exercise2))
exercise_buttons[2].select(exercise_buttons[0].get_item_index(element.Exercise3))
var gps_in_lesson: = Database.get_GP_for_lesson(lesson_number, true)
var syllables_in_lesson: = Database.get_syllables_for_lesson(lesson_number)
var words_in_lesson: = Database.get_words_for_lesson(lesson_number)
var sentences_in_lesson: = Database.get_sentences(lesson_number, false, sentences_by_lesson)
number_of_g_ps.text = str(gps_in_lesson.size())
number_of_syllables.text = str(syllables_in_lesson.size())
number_of_words.text = str(words_in_lesson.size())
number_of_sentences.text = str(sentences_in_lesson.size())
ok_texture.visible = true
func _on_exercise_button_1_item_selected(_index: int) -> void:
ok_texture.visible = false
func _on_exercise_button_2_item_selected(_index: int) -> void:
ok_texture.visible = false
func _on_exercise_button_3_item_selected(_index: int) -> void:
ok_texture.visible = false
func _on_save_button_pressed() -> void:
Database.db.query("Select * FROM Lessons WHERE LessonNb = " + str(lesson_number))
var lesson_id: int = Database.db.query_result[0].ID
var exercise1: = exercise_buttons[0].get_item_id(exercise_buttons[0].selected)
var exercise2: = exercise_buttons[1].get_item_id(exercise_buttons[1].selected)
var exercise3: = exercise_buttons[2].get_item_id(exercise_buttons[2].selected)
var lesson_dict: = {Exercise1= exercise1, Exercise2= exercise2, Exercise3= exercise3}
Database.db.query("Select * FROM LessonsExercises WHERE LessonID = " + str(lesson_id))
if Database.db.query_result.is_empty():
lesson_dict["LessonID"] = lesson_id
Database.db.insert_row("LessonsExercises", lesson_dict)
else:
Database.db.update_rows("LessonsExercises", "LessonID=" + str(lesson_id), lesson_dict)
ok_texture.visible = true