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