diff --git a/scenes/pribor-afsp/pribor-afsp-1.tscn b/scenes/pribor-afsp/pribor-afsp-1.tscn index 3addb11..5ce1421 100644 --- a/scenes/pribor-afsp/pribor-afsp-1.tscn +++ b/scenes/pribor-afsp/pribor-afsp-1.tscn @@ -13,16 +13,13 @@ func _ready(): wait_time = ProjectSettings.get_setting('application/config/unit_ [node name="pribor_afsp" type="Control"] layout_mode = 3 anchors_preset = 0 -offset_top = 40.0 -offset_bottom = 40.0 scale = Vector2(0.9, 0.9) script = ExtResource("1_151rh") [node name="lbl_header" type="Label" parent="."] layout_mode = 0 -offset_top = -44.0 offset_right = 578.0 -offset_bottom = -17.0 +offset_bottom = 28.0 theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора" horizontal_alignment = 1 @@ -37,6 +34,9 @@ autostart = true script = SubResource("GDScript_yhnwg") [node name="bort" parent="." instance=ExtResource("3_d7iti")] +layout_mode = 0 +offset_top = 27.7778 +offset_bottom = 1216.78 metadata/DeviceName = &"Устройство РР левого борта" [connection signal="child_entered_tree" from="request_rtr" to="request_rtr" method="_on_child_entered_tree"] diff --git a/scenes/pribor-afsp/pribor-afsp-2.tscn b/scenes/pribor-afsp/pribor-afsp-2.tscn index fbc5f32..44d117a 100644 --- a/scenes/pribor-afsp/pribor-afsp-2.tscn +++ b/scenes/pribor-afsp/pribor-afsp-2.tscn @@ -21,7 +21,7 @@ scale = Vector2(0.9, 0.9) script = ExtResource("1_tfses") [node name="lbl_header" type="Label" parent="."] -layout_mode = 0 +layout_mode = 1 offset_left = -11.0 offset_top = -87.0 offset_right = 567.0 @@ -40,10 +40,11 @@ autostart = true script = SubResource("GDScript_yhnwg") [node name="bort" parent="." instance=ExtResource("3_xpxb5")] -offset_left = -11.1111 -offset_top = -39.4444 -offset_right = 568.889 -offset_bottom = 1190.56 +layout_mode = 0 +offset_left = -11.0 +offset_top = -59.0 +offset_right = 569.0 +offset_bottom = 1130.0 metadata/DeviceName = &"Устройство РР правого борта" [connection signal="child_entered_tree" from="request" to="request" method="_on_child_entered_tree"] diff --git a/scenes/pribor-afsp/pribor-afsp.gd b/scenes/pribor-afsp/pribor-afsp.gd index 38c827c..5ad7a28 100644 --- a/scenes/pribor-afsp/pribor-afsp.gd +++ b/scenes/pribor-afsp/pribor-afsp.gd @@ -34,7 +34,7 @@ func map_solid_to_array(solid: String, paths: Array, tokens: Array = ['[', ']', func _on_request_rtr_request_completed(result, _response_code, headers, body: PackedByteArray): if result != 0: - var rs = $request_rtr.get_result_string(result) + var rs = $request.get_result_string(result) log.error('\"%s\"' % rs) return diff --git a/scenes/pribor-rtr/pribor-rtr.gd b/scenes/pribor-rtr/pribor-rtr.gd index 3972995..12f04cd 100644 --- a/scenes/pribor-rtr/pribor-rtr.gd +++ b/scenes/pribor-rtr/pribor-rtr.gd @@ -1,135 +1,3 @@ class_name pribor_rtr extends 'res://scenes/контроль/прибор.gd' @export var prefix_path: String = '' - -static var json_conv: JSON = JSON.new() - -## Преобразует путь в виде целой строки в массив отдельных элементов пути.[br] -## [param solid] - Входная строка содержащая путь, которая имеет следующий примерный вид:[br] -## [code]SelfTest[1].DevList[2]['CurrentValue'][/code][br] -## [param paths] - Массив содержащий отдельные элементы пути.[br] -## [param tokens] - Разделители используемые во входной строке для разделения элементов пути.[br] -func map_solid_to_array(solid: String, paths: Array, tokens: Array = ['[', ']', '.']) -> void: - paths.clear() - var i_chs = [] - for sep in tokens: - var i = 0 - while i != -1: - i = solid.find(sep, i + 1) - i_chs.append(i) - i_chs.pop_back() - i_chs.sort() - - var i0 = 0 - for i1 in i_chs: - var ss: = [String()] - tools.get_string_slice(solid, ss, i0, i1) - if ss[0].is_valid_int(): - paths.append(ss[0].to_int()) - else: - if ss[0]: - paths.append(ss[0]) - i0 = i1 + 1 - - -func _on_request_rtr_request_completed(result, _response_code, headers, body: PackedByteArray): - if result != 0: - var rs = $request_rtr.get_result_string(result) - log.error('\"%s\"' % rs) - return - - var json_str: String = body.get_string_from_utf8() - if not json_str: - push_error('не удаётся получить строку utf8 из данных (%s)' % headers) - return - - var rc = json_conv.parse(json_str) - if rc != Error.OK: - var err = json_conv.get_error_message() - push_error('разбор json прерван - \"%s\" (%s)' % [err, headers]) - return - - - var pp = ['DeviceDescripton', 'DeviceName'] - var ppp = [] - map_solid_to_array(prefix_path, ppp) - var ret_val = [null, false, 0] - var pp_copy = pp.duplicate(true) - tools.get_value_by_path(json_conv.data, pp, ret_val) - if not ret_val[1]: - push_error('путь %s не найден (%s)' % [pp_copy, ret_val[2]]) - return - - var bort_rtr_name_left: StringName = $left.get_meta('DeviceName', '') - var bort_rtr_name_right: StringName = $right.get_meta('DeviceName', '') - var bb = {bort_rtr_name_left: $left, bort_rtr_name_right: $right} - if not bb.has(ret_val[0]): - return - - var bort_rtr = bb[ret_val[0]] - for child in bort_rtr.get_node('konverter/grid').get_children(): - map_value_to_item(json_conv.data, child, 'value0') - map_value_to_item(json_conv.data, child, 'value1') - map_value_to_item(json_conv.data, child, 'value2') - map_error_codes_to_item(json_conv.data, child, 'state', 0) - for child in bort_rtr.get_node('antenna1/grid').get_children(): - map_value_to_item(json_conv.data, child, 'value0') - map_value_to_item(json_conv.data, child, 'value1') - map_error_codes_to_item(json_conv.data, child, 'state', 0) - for child in bort_rtr.get_node('antenna2/grid').get_children(): - map_value_to_item(json_conv.data, child, 'value0') - map_value_to_item(json_conv.data, child, 'value1') - map_error_codes_to_item(json_conv.data, child, 'state', 0) - for child in bort_rtr.get_children(): - map_value_to_item(json_conv.data, child, 'value0') - map_value_to_item(json_conv.data, child, 'value1') - map_error_codes_to_item(json_conv.data, child, 'state', 0) - - -func map_value_to_item(data, item, value_name: StringName): - var meta = item.get_meta(value_name, '') - if meta == '': - return - if not (meta is String): - return - var paths: = Array() - map_solid_to_array(meta, paths) - var ret_val: = [null, false, 0] - var paths_copy = paths.duplicate(true) - tools.get_value_by_path(data, paths, ret_val) - if ret_val[1]: - item.set(value_name, ret_val[0]) - else: - push_error('не найденпуть %s (%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text]) - - -func map_error_codes_to_item(data, item, value_name: StringName, value_init: int): - var metas = item.get_meta(value_name, '') - if not (metas is Array): - return - var paths: = Array() - var values: = Array() - for meta in metas: - map_solid_to_array(meta, paths) - var ret_val: = [null, false, 0] - var paths_copy = paths.duplicate(true) - tools.get_value_by_path(data, paths, ret_val) - if ret_val[1]: - values.append(ret_val[0]) - else: - push_error('не найден путь %s(%s) для $%s.%s (%s)' % [paths_copy, ret_val[2], item.name, value_name, item.tooltip_text]) - if values.size() == metas.size(): - var test_res = 1 if values.count(true) == values.size() else 2 - item.set(value_name, test_res) - else: - item.set(value_name, value_init) - - -## Вызывается при клике мыши на элементе контроля. -## [param block_a] - Кликнутый элемент контроля. -func _on_item_pressed(block_a: Control): - var metas = block_a.get_meta_list() - print_debug(block_a) - for n in metas: - var v = block_a.get_meta(n) - print_debug('%s:%s' % [n, v]) diff --git a/scenes/pribor-rtr/pribor-rtr.tscn b/scenes/pribor-rtr/pribor-rtr.tscn index 80da2f2..fa36444 100644 --- a/scenes/pribor-rtr/pribor-rtr.tscn +++ b/scenes/pribor-rtr/pribor-rtr.tscn @@ -1,13 +1,6 @@ -[gd_scene load_steps=4 format=3 uid="uid://5uv1idl3lqea"] +[gd_scene load_steps=2 format=3 uid="uid://5uv1idl3lqea"] [ext_resource type="Script" uid="uid://d0jwv5opi3mrk" path="res://scenes/pribor-rtr/pribor-rtr.gd" id="1_sqyma"] -[ext_resource type="Script" uid="uid://bux47vkw71w1t" path="res://scenes/pribor-afsp/request.gd" id="6_iwtoo"] - -[sub_resource type="GDScript" id="GDScript_yhnwg"] -script/source = "extends Timer - -func _ready(): wait_time = ProjectSettings.get_setting('application/config/unit_rr_request_period') -" [node name="pribor_rtr" type="Control"] layout_mode = 3 @@ -28,39 +21,3 @@ theme_override_font_sizes/font_size = 22 text = "Контроль исправности прибора" horizontal_alignment = 1 vertical_alignment = 1 - -[node name="request_rtr" type="HTTPRequest" parent="."] -script = ExtResource("6_iwtoo") - -[node name="timer" type="Timer" parent="request_rtr"] -wait_time = 4.168 -autostart = true -script = SubResource("GDScript_yhnwg") - -[node name="lbl_left" type="Label" parent="."] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 0 -offset_left = 217.0 -offset_top = -18.6666 -offset_right = 306.0 -offset_bottom = 3.33341 -theme_override_font_sizes/font_size = 17 -text = "левый борт" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="lbl_right" type="Label" parent="."] -self_modulate = Color(1, 1, 1, 0.627451) -layout_mode = 0 -offset_left = 739.0 -offset_top = -18.6666 -offset_right = 833.0 -offset_bottom = 3.33341 -theme_override_font_sizes/font_size = 17 -text = "правый борт" -horizontal_alignment = 1 -vertical_alignment = 1 - -[connection signal="child_entered_tree" from="request_rtr" to="request_rtr" method="_on_child_entered_tree"] -[connection signal="request_completed" from="request_rtr" to="." method="_on_request_rtr_request_completed"] -[connection signal="timeout" from="request_rtr/timer" to="request_rtr" method="_on_request_timer"] diff --git a/scenes/контроль/элемент-в.tscn b/scenes/контроль/элемент-в.tscn index 9c8c4ca..ba1d3bc 100644 --- a/scenes/контроль/элемент-в.tscn +++ b/scenes/контроль/элемент-в.tscn @@ -55,7 +55,6 @@ func _on_nine_patch_rect_resized() -> void: func _on_resized() -> void: $np_rect.size = size - self_size = size _resize_children() @@ -93,9 +92,9 @@ vertical_alignment = 1 [node name="lbl_fname" type="Label" parent="."] self_modulate = Color(1, 1, 1, 0.627451) layout_mode = 0 -offset_top = 123.0 +offset_top = 122.0 offset_right = 94.0 -offset_bottom = 173.0 +offset_bottom = 172.0 rotation = -1.5708 theme_override_font_sizes/font_size = 17 text = "Ячейка"