forked from joey/godottest
68 lines
2.0 KiB
GDScript
68 lines
2.0 KiB
GDScript
@tool
|
|
extends VBoxContainer
|
|
|
|
# UI references will be set from the scene
|
|
@export var queues_tree: Tree
|
|
@export var jobs_tree: Tree
|
|
@export var job_details_text: TextEdit
|
|
@export var refresh_button: Button
|
|
|
|
var plugin
|
|
|
|
func _ready() -> void:
|
|
if refresh_button:
|
|
refresh_button.pressed.connect(_on_refresh_pressed)
|
|
|
|
# Set column titles for the queues tree
|
|
queues_tree.set_column_titles_visible(true)
|
|
queues_tree.set_column_title(0, "Queue")
|
|
queues_tree.set_column_title(1, "Jobs")
|
|
|
|
# Set column titles for the jobs tree
|
|
jobs_tree.set_column_titles_visible(true)
|
|
jobs_tree.set_column_title(0, "ID")
|
|
jobs_tree.set_column_title(1, "Queue")
|
|
jobs_tree.set_column_title(2, "Status")
|
|
|
|
func set_plugin(p) -> void:
|
|
plugin = p
|
|
|
|
func _on_refresh_pressed() -> void:
|
|
if plugin:
|
|
# This assumes the main dashboard has an instance selector
|
|
var selected_id = get_parent().get_parent().instance_selector.get_item_id(get_parent().get_parent().instance_selector.selected)
|
|
var session_id = plugin.get_current_session_id()
|
|
if session_id != -1:
|
|
plugin._fetch_keys_for_selected_instance(session_id)
|
|
|
|
func update_queues(data: Dictionary) -> void:
|
|
queues_tree.clear()
|
|
var root = queues_tree.create_item()
|
|
queues_tree.hide_root = true
|
|
|
|
for queue_name in data:
|
|
var queue_item = queues_tree.create_item(root)
|
|
queue_item.set_text(0, queue_name)
|
|
queue_item.set_text(1, str(data[queue_name].size()))
|
|
|
|
func update_jobs(jobs: Array) -> void:
|
|
jobs_tree.clear()
|
|
var root = jobs_tree.create_item()
|
|
jobs_tree.hide_root = true
|
|
|
|
for job in jobs:
|
|
var job_item = jobs_tree.create_item(root)
|
|
job_item.set_text(0, job.id)
|
|
job_item.set_text(1, job.queue_name)
|
|
job_item.set_text(2, job.status)
|
|
job_item.set_meta("data", job.data)
|
|
|
|
func _on_jobs_tree_item_selected() -> void:
|
|
var selected_item = jobs_tree.get_selected()
|
|
if selected_item:
|
|
job_details_text.text = selected_item.get_meta("data")
|
|
|
|
func _on_queues_tree_item_selected() -> void:
|
|
# TODO: should filter out jobs not the selected queue
|
|
pass
|