Доработка. WIP Отработка истекания времени кластера
This commit is contained in:
@@ -39,8 +39,8 @@ var table_cell_row: Array
|
||||
#endregion
|
||||
|
||||
#region Заполняется во время работы
|
||||
var yems_data_info: Dictionary[StringName, Dictionary] ## Доклады
|
||||
var yems_data_cmd: Dictionary[StringName, Dictionary] ## Команды
|
||||
var yems_info: Dictionary[StringName, Dictionary] ## Доклады
|
||||
var yems_cmd: Dictionary[StringName, Dictionary] ## Команды
|
||||
## Порядок следования кластеров в таблице.
|
||||
## {имя_устройства: { имя_кластера: индекс_в_таблице } }
|
||||
var cnames_table: Dictionary[StringName, Dictionary]
|
||||
@@ -50,12 +50,18 @@ var pnames_scale: Dictionary[StringName, int]
|
||||
#endregion
|
||||
|
||||
|
||||
enum CalsterStatus {
|
||||
CLASTER_DELETED,
|
||||
CLASTER_RUNNING
|
||||
}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
# Инициализировать переменные
|
||||
for i in index_to_unit_names.size():
|
||||
var nm: = index_to_unit_names[i]
|
||||
name_to_index[nm] = i
|
||||
yems_data_info[nm] = {}
|
||||
yems_info[nm] = {}
|
||||
cnames_table[nm] = {}
|
||||
var btns_scales = get_tree().get_nodes_in_group('кнопки-шкалы')
|
||||
for node in btns_scales:
|
||||
@@ -75,7 +81,7 @@ func _ready() -> void:
|
||||
node.get_node('panel_tx').back_color = color_even
|
||||
|
||||
# Подключить обработчик для приёма данных
|
||||
for nm in yems_data_info:
|
||||
for nm in yems_info:
|
||||
var yems_unit = network.get_unit_instance(nm)
|
||||
yems_unit.connect('data_received', on_data_received.bind(nm))
|
||||
|
||||
@@ -99,7 +105,7 @@ func _ready() -> void:
|
||||
|
||||
## Обрабатывает событие [b]data_received[/b]
|
||||
func on_data_received(data: Dictionary, nm: StringName):
|
||||
var unit_data: = yems_data_info[nm]
|
||||
var unit_data: = yems_info[nm]
|
||||
unit_data.merge(data, true)
|
||||
if not unit_data:
|
||||
return
|
||||
@@ -108,8 +114,36 @@ func on_data_received(data: Dictionary, nm: StringName):
|
||||
var indexes: = cnames_table[nm] # Идексы строк в таблице
|
||||
map_yems_data_to_table(unit_data, ctable, indexes)
|
||||
map_yems_data_to_scale(unit_data, claster_scale)
|
||||
var inters: = find_inters(yems_data_info)
|
||||
var inters: = find_inters(yems_info)
|
||||
map_inters_to_matrix(inters, $'матрица')
|
||||
set_timeouts(yems_info)
|
||||
|
||||
|
||||
func set_timeouts(info: Dictionary):
|
||||
for nm in info: # nm - имя устройства
|
||||
var unit_data = info[nm]
|
||||
if not unit_data: continue
|
||||
for cls in unit_data.mcls: # cls - один кластер
|
||||
var timer_name = NodePath('%s_%s' % [nm, cls.cname])
|
||||
var timer = get_node_or_null(timer_name)
|
||||
if not timer:
|
||||
timer = Timer.new()
|
||||
timer.name = timer_name
|
||||
timer.one_shot = true
|
||||
timer.connect('timeout', _on_timeout_ttl.bind(nm, cls.cname))
|
||||
add_child(timer)
|
||||
print_debug('создан: %s' % timer_name)
|
||||
timer.start(cls.ttl)
|
||||
print_debug('пуск: %s' % timer_name)
|
||||
|
||||
|
||||
func _on_timeout_ttl(nm, cname):
|
||||
var timer_name = NodePath('%s_%s' % [nm, cname])
|
||||
var timer = get_node_or_null(timer_name)
|
||||
if timer:
|
||||
remove_child(timer)
|
||||
timer.queue_free()
|
||||
print_debug('удалён: %s' % timer_name)
|
||||
|
||||
|
||||
func map_inters_to_matrix(inters: Array, matrix: GridContainer) -> void:
|
||||
@@ -174,7 +208,8 @@ func find_inters(info: Dictionary) -> Array:
|
||||
if not unit_data: continue
|
||||
for cls in unit_data.mcls:
|
||||
# cls - один кластер
|
||||
print_debug([cls.cname, cls.wfb, cls.cfb, cls.txe, cls.rxe])
|
||||
#print_debug([cls.cname, cls.wfb, cls.cfb, cls.txe, cls.rxe])
|
||||
pass
|
||||
# заглушка для возвращаемых данных
|
||||
return [['эмс-ор63', 'эмс-ор63', 'Кластер-0', 'Кластер-0', 1600.0, 2400.0]]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user