Доработка. WIP Шкала кластер
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user