Доработка. WIP Шкала кластер

This commit is contained in:
sasha80
2026-03-20 11:15:51 +03:00
parent 731ce8b3dd
commit 959ef1192c
3 changed files with 39 additions and 21 deletions

View File

@@ -32,6 +32,9 @@ var yems_data_cmd: Dictionary[StringName, Dictionary] ## Команды
## Порядок следования кластеров в таблице. ## Порядок следования кластеров в таблице.
## {имя_устройства: { имя_кластера: индекс_в_таблице } } ## {имя_устройства: { имя_кластера: индекс_в_таблице } }
var cnames_table: Dictionary[StringName, Dictionary] var cnames_table: Dictionary[StringName, Dictionary]
## Порядок следования кластеров на шкале.
## {имя_устройства: { индекса_шкале } }
var pnames_scale: Dictionary[StringName, Dictionary]
#endregion #endregion
func _ready() -> void: func _ready() -> void:
@@ -41,8 +44,8 @@ func _ready() -> void:
name_to_index[nm] = i name_to_index[nm] = i
yems_data_info[nm] = {} yems_data_info[nm] = {}
cnames_table[nm] = {} cnames_table[nm] = {}
var yems_scales = get_tree().get_nodes_in_group('ряд-шкалы') var btns_scales = get_tree().get_nodes_in_group('кнопки-шкалы')
for node in yems_scales: for node in btns_scales:
var nm = node.get_meta('unit_name') var nm = node.get_meta('unit_name')
name_to_scale[nm] = node name_to_scale[nm] = node
node.connect('pressed', map_yems_data_to_table.bind(nm)) node.connect('pressed', map_yems_data_to_table.bind(nm))
@@ -81,7 +84,6 @@ func map_yems_data_to_table(nm: StringName):
if not unit_data: return # Данных ещё нет if not unit_data: return # Данных ещё нет
var ctable: GDTable = $'таблица/сетка' var ctable: GDTable = $'таблица/сетка'
var indexes: = cnames_table[nm] # Идексы строк таблицы для кластеров заданного устройства var indexes: = cnames_table[nm] # Идексы строк таблицы для кластеров заданного устройства
var rows_changed: = false
# Обойти все кластеры устройства # Обойти все кластеры устройства
for cls in unit_data.mcls: for cls in unit_data.mcls:
# Строка для заполнения # Строка для заполнения
@@ -95,8 +97,18 @@ func map_yems_data_to_table(nm: StringName):
else: else:
# Создать новый ряд # Создать новый ряд
ctable.add_row(table_cell_row) ctable.add_row(table_cell_row)
rows_changed = true
# Записать индекс строки в таблице для кластера # Записать индекс строки в таблице для кластера
indexes[cls.cname] = indexes.size() var i_row: = indexes.size()
if rows_changed: indexes[cls.cname] = i_row
ctable.set_rows_min_hight(table_rows_hight) # Установка высоты строки
ctable.set_row_min_hight(i_row, table_rows_hight)
func map_yems_data_to_scale(nm: StringName):
var unit_data = yems_data_info.get(nm)
if not unit_data: return # Данных ещё нет
var ctable: GDTable = $'таблица/сетка'
var indexes: = cnames_table[nm] # Идексы строк таблицы для кластеров заданного устройства
# Обойти все кластеры устройства
for cls in unit_data.mcls:
pass

View File

@@ -88,7 +88,7 @@ offset_bottom = 771.0
scale = Vector2(0.95, 0.95) scale = Vector2(0.95, 0.95)
columns = 2 columns = 2
[node name="label0" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label0" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 7 size_flags_vertical = 7
toggle_mode = true toggle_mode = true
@@ -115,7 +115,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label1" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label1" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -142,7 +142,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label2" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label2" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -171,7 +171,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label3" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label3" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -197,7 +197,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label4" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label4" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -225,7 +225,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label5" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label5" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -251,7 +251,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label6" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label6" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7
@@ -279,7 +279,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg" image_file = "uid://c6etralq2tvxg"
[node name="label7" type="Button" parent="шкала" groups=["ряд-шкалы"]] [node name="label7" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 5 size_flags_horizontal = 5
size_flags_vertical = 7 size_flags_vertical = 7

View File

@@ -609,15 +609,21 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_
node.set_deferred('size.x', sizes[i_col]) node.set_deferred('size.x', sizes[i_col])
## [param i_row] - Индекс ряда. ## [param hight] - Высота ряда.
func set_rows_min_hight(hight: int) -> void: func set_rows_min_hight(hight: int) -> void:
var rows_count = get_rows_count() var rows_count = get_rows_count()
for i_row in rows_count: for i_row in rows_count:
for i_col in columns: set_row_min_hight(i_row, hight)
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
var node = nodes[key]
node.custom_minimum_size.y = hight ## [param i_row] - Индекс ряда.
node.set_deferred('size.y', hight) ## [param hight] - Высота ряда.
func set_row_min_hight(i_row: int, hight: int) -> void:
for i_col in columns:
var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row)
var node = nodes[key]
node.custom_minimum_size.y = hight
node.set_deferred('size.y', hight)
func set_header_min_hight(hight: int): func set_header_min_hight(hight: int):