Доработка. 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 pnames_scale: Dictionary[StringName, Dictionary]
#endregion
func _ready() -> void:
@@ -41,8 +44,8 @@ func _ready() -> void:
name_to_index[nm] = i
yems_data_info[nm] = {}
cnames_table[nm] = {}
var yems_scales = get_tree().get_nodes_in_group('ряд-шкалы')
for node in yems_scales:
var btns_scales = get_tree().get_nodes_in_group('кнопки-шкалы')
for node in btns_scales:
var nm = node.get_meta('unit_name')
name_to_scale[nm] = node
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 # Данных ещё нет
var ctable: GDTable = $'таблица/сетка'
var indexes: = cnames_table[nm] # Идексы строк таблицы для кластеров заданного устройства
var rows_changed: = false
# Обойти все кластеры устройства
for cls in unit_data.mcls:
# Строка для заполнения
@@ -95,8 +97,18 @@ func map_yems_data_to_table(nm: StringName):
else:
# Создать новый ряд
ctable.add_row(table_cell_row)
rows_changed = true
# Записать индекс строки в таблице для кластера
indexes[cls.cname] = indexes.size()
if rows_changed:
ctable.set_rows_min_hight(table_rows_hight)
var i_row: = indexes.size()
indexes[cls.cname] = i_row
# Установка высоты строки
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)
columns = 2
[node name="label0" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label0" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_vertical = 7
toggle_mode = true
@@ -115,7 +115,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label1" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label1" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -142,7 +142,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label2" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label2" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -171,7 +171,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label3" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label3" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -197,7 +197,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label4" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label4" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -225,7 +225,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label5" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label5" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -251,7 +251,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label6" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label6" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
size_flags_vertical = 7
@@ -279,7 +279,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
image_file = "uid://c6etralq2tvxg"
[node name="label7" type="Button" parent="шкала" groups=["ряд-шкалы"]]
[node name="label7" type="Button" parent="шкала" groups=["кнопки-шкалы"]]
layout_mode = 2
size_flags_horizontal = 5
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])
## [param i_row] - Индекс ряда.
## [param hight] - Высота ряда.
func set_rows_min_hight(hight: int) -> void:
var rows_count = get_rows_count()
for i_row in rows_count:
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)
set_row_min_hight(i_row, hight)
## [param i_row] - Индекс ряда.
## [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):