Complete CCS results and rating flow
This commit is contained in:
@@ -8,6 +8,8 @@ signal attempt_changed
|
||||
signal orders_changed
|
||||
signal history_changed
|
||||
signal prediction_changed
|
||||
signal rating_changed
|
||||
signal attempt_abandoned
|
||||
signal report_submitted(report_id: String)
|
||||
signal report_failed(message: String)
|
||||
signal request_failed(message: String)
|
||||
@@ -23,6 +25,7 @@ var attempt := {}
|
||||
var orders: Array = []
|
||||
var history: Array = []
|
||||
var prediction := {}
|
||||
var rating := {"elo": 1000, "ratedCaseCount": 0}
|
||||
var is_loading := false
|
||||
var pending_action := ""
|
||||
var queue: Array = []
|
||||
@@ -78,6 +81,10 @@ func load_prediction() -> void:
|
||||
_send("prediction", HTTPClient.METHOD_GET, "/prediction")
|
||||
|
||||
|
||||
func load_rating() -> void:
|
||||
_send("rating", HTTPClient.METHOD_GET, "/ratings/me")
|
||||
|
||||
|
||||
func submit_report(attempt_id: String, category: String, details: String) -> void:
|
||||
_send("report", HTTPClient.METHOD_POST, "/reports", {"attemptId": attempt_id, "category": category, "details": details})
|
||||
|
||||
@@ -89,12 +96,21 @@ func adjust_text_scale(delta: float) -> void:
|
||||
func toggle_highlight(attempt_id: String, region_id: String, start: int, end: int) -> void:
|
||||
var key := "%s:%s" % [attempt_id, region_id]
|
||||
var ranges: Array = highlights.get(key, [])
|
||||
var removed := false
|
||||
var changed := false
|
||||
for index in range(ranges.size() - 1, -1, -1):
|
||||
var item: Dictionary = ranges[index]
|
||||
if start < int(item.get("end", 0)) and end > int(item.get("start", 0)):
|
||||
ranges.remove_at(index); removed = true
|
||||
if not removed: ranges.append({"start": start, "end": end})
|
||||
var highlight_start := int(item.get("start", 0))
|
||||
var highlight_end := int(item.get("end", 0))
|
||||
if start < highlight_end and end > highlight_start:
|
||||
ranges.remove_at(index)
|
||||
if highlight_start < start:
|
||||
ranges.insert(index, {"start": highlight_start, "end": start})
|
||||
index += 1
|
||||
if end < highlight_end:
|
||||
ranges.insert(index, {"start": end, "end": highlight_end})
|
||||
changed = true
|
||||
if not changed:
|
||||
ranges.append({"start": start, "end": end})
|
||||
highlights[key] = ranges
|
||||
|
||||
|
||||
@@ -124,7 +140,7 @@ func abandon() -> void:
|
||||
|
||||
func deadline_unix() -> float:
|
||||
var value := str(attempt.get("finalOrdersDeadlineUtc", attempt.get("deadlineUtc", "")))
|
||||
return 0.0 if value.is_empty() or value == "<null>" else Time.get_unix_time_from_datetime_string(value)
|
||||
return 0.0 if value.is_empty() or value == "<null>" else float(Time.get_unix_time_from_datetime_string(value))
|
||||
|
||||
|
||||
func _send(action: String, method: int, suffix: String, payload: Dictionary = {}) -> void:
|
||||
@@ -160,7 +176,8 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri
|
||||
return
|
||||
if response_code == 204:
|
||||
attempt = {}
|
||||
attempt_changed.emit()
|
||||
if action == "abandon": attempt_abandoned.emit()
|
||||
else: attempt_changed.emit()
|
||||
return
|
||||
var parsed: Variant = JSON.parse_string(body.get_string_from_utf8())
|
||||
if action in ["cases", "orders", "history"] and typeof(parsed) != TYPE_ARRAY:
|
||||
@@ -174,6 +191,7 @@ func _on_request_completed(result: int, response_code: int, _headers: PackedStri
|
||||
"orders": orders = parsed; orders_changed.emit()
|
||||
"history": history = parsed; history_changed.emit()
|
||||
"prediction": prediction = parsed; prediction_changed.emit()
|
||||
"rating": rating = parsed; rating_changed.emit()
|
||||
"report": report_submitted.emit(str(parsed.get("id", "")))
|
||||
_:
|
||||
attempt = parsed
|
||||
|
||||
Reference in New Issue
Block a user