Add question bank mastery paths and gap questions
This commit is contained in:
@@ -9,6 +9,8 @@ var size_spin: SpinBox
|
||||
var mode_option: OptionButton
|
||||
var status_label: Label
|
||||
var start_button: Button
|
||||
var requested_count := 10
|
||||
var targeted_setup := false
|
||||
|
||||
func _ready() -> void:
|
||||
set_anchors_preset(Control.PRESET_FULL_RECT)
|
||||
@@ -67,7 +69,16 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func on_show(payload: Variant = null) -> void:
|
||||
selected_system = str(payload) if payload != null else "All Systems"
|
||||
if typeof(payload) == TYPE_DICTIONARY:
|
||||
targeted_setup = true
|
||||
selected_system = str(payload.get("step3_system", "All Systems"))
|
||||
requested_count = int(payload.get("question_count", 10))
|
||||
size_spin.value = requested_count
|
||||
QuestionBankService.load_targeted_questions(selected_system, requested_count,
|
||||
int(payload.get("difficulty_min", 0)), int(payload.get("difficulty_max", 0)))
|
||||
else:
|
||||
targeted_setup = false
|
||||
selected_system = str(payload) if payload != null else "All Systems"
|
||||
_refresh_setup()
|
||||
|
||||
|
||||
@@ -77,14 +88,17 @@ func _refresh_setup() -> void:
|
||||
system_label.text = "Zone: %s" % selected_system
|
||||
var available := QuestionBankService.get_questions_for_system(selected_system).size()
|
||||
size_spin.max_value = max(1, available)
|
||||
size_spin.value = min(size_spin.value, available)
|
||||
if not QuestionBankService.is_loading and available > 0:
|
||||
size_spin.value = min(requested_count, available) if targeted_setup else min(size_spin.value, available)
|
||||
targeted_setup = false
|
||||
start_button.disabled = available == 0 or QuestionBankService.is_loading
|
||||
if QuestionBankService.is_loading:
|
||||
status_label.text = "Question API unavailable. Retrying in %d seconds..." % QuestionBankService.next_retry_seconds if QuestionBankService.load_state == "retrying" else "Loading question bank..."
|
||||
elif available == 0:
|
||||
status_label.text = QuestionBankService.last_error if QuestionBankService.last_error != "" else "No questions are available for this zone yet."
|
||||
else:
|
||||
status_label.text = "%d questions available." % available
|
||||
status_label.text = "%d questions available.%s" % [available,
|
||||
" The requested difficulty range was broadened." if QuestionBankService.targeted_fallback_used else ""]
|
||||
|
||||
|
||||
func _start_block() -> void:
|
||||
|
||||
Reference in New Issue
Block a user