From 4af38a021cfc5c3f63adb8455ed7d3ae0f12ce12 Mon Sep 17 00:00:00 2001 From: CortexCore <2630229280@qq.com> Date: Mon, 3 Jul 2023 03:02:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../工业互联网标识解析与注册.tscn | 20 +++- .../标识注册.tscn | 98 +++++++++++++++++++ Mods/教育平台/Scripts/SearchEngine.cs | 28 +++++- Mods/教育平台/Scripts/SearchRegister.cs | 35 +++++++ 4 files changed, 178 insertions(+), 3 deletions(-) create mode 100644 Mods/教育平台/Scripts/SearchRegister.cs diff --git a/Mods/工业数据采集与分析应用分享/工业互联网标识解析与注册.tscn b/Mods/工业数据采集与分析应用分享/工业互联网标识解析与注册.tscn index cdf8998..e504140 100644 --- a/Mods/工业数据采集与分析应用分享/工业互联网标识解析与注册.tscn +++ b/Mods/工业数据采集与分析应用分享/工业互联网标识解析与注册.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://cdivd7qml4dvu"] +[gd_scene load_steps=14 format=3 uid="uid://cdivd7qml4dvu"] [ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_im3hi"] [ext_resource type="Texture2D" uid="uid://b0f2b032lufnb" path="res://Mods/教育平台/Arts/Textures/ee680086375133.5d97558385c71.jpg" id="2_n24po"] @@ -10,6 +10,7 @@ [ext_resource type="PackedScene" uid="uid://bx4v3ofh4on5e" path="res://Mods/工业数据采集与分析应用分享/标识注册.tscn" id="6_nuph1"] [ext_resource type="PackedScene" uid="uid://yxubv8dgqnpa" path="res://Mods/工业数据采集与分析应用分享/标识解析.tscn" id="7_fapjq"] [ext_resource type="Script" path="res://Mods/教育平台/Scripts/SearchEngine.cs" id="12_m0fjq"] +[ext_resource type="Script" path="res://Mods/教育平台/Scripts/SearchRegister.cs" id="13_p3ia1"] [ext_resource type="Script" path="res://BITKit/Scripts/UX/UXServiceProxy.cs" id="16_qcre0"] [ext_resource type="Texture2D" uid="uid://c38luts5hc5fj" path="res://Artists/Art/Icons/Arrows/icon_chevron-left-rounded.png" id="16_s70sy"] @@ -118,7 +119,24 @@ quickSearchButton = NodePath("../TabContainer/标识解析/MarginContainer/VBoxC searchProgressBar = NodePath("../TabContainer/标识解析/MarginContainer/VBoxContainer/SearchProgressBar") searchLogLabel = NodePath("../TabContainer/标识解析/SearchLogLabel") +[node name="SearchRegister" type="Node" parent="." node_paths=PackedStringArray("keyLine", "valueLine", "nameLine", "idLine", "registryRecordLine", "registryButton")] +script = ExtResource("13_p3ia1") +keyLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer/keyLine") +valueLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2/valueLine") +nameLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3/nameLine") +idLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4/idLine") +registryRecordLine = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5/registryRecordLine") +registryButton = NodePath("../TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/register-button") + [connection signal="pressed" from="Return-Button" to="Return-Button" method="Return"] [editable path="教程Header"] +[editable path="TabContainer/标识注册"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement4"] +[editable path="TabContainer/标识注册/VBoxContainer/ScrollContainer/HFlowContainer/StepElement6"] [editable path="TabContainer/标识解析"] diff --git a/Mods/工业数据采集与分析应用分享/标识注册.tscn b/Mods/工业数据采集与分析应用分享/标识注册.tscn index e50d37b..32e466a 100644 --- a/Mods/工业数据采集与分析应用分享/标识注册.tscn +++ b/Mods/工业数据采集与分析应用分享/标识注册.tscn @@ -206,6 +206,103 @@ text = "注册标识" icon = ExtResource("2_1ml36") expand_icon = true +[node name="StepElement9" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")] +layout_mode = 2 + +[node name="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="0"] +text = "手动注册与更新标识" + +[node name="Label2" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="2"] +text = "你需要手动注册一些标识数据" + +[node name="RichTextLabel" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/BaseComponent" index="4"] +text = "在这里手动添加数据" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"] +layout_mode = 2 +theme_type_variation = &"HeaderSmall" +text = "标识码:" + +[node name="keyLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "88.123.99/02020220225008" +placeholder_text = "88.123.99/XXXXXXX" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"] +layout_mode = 2 +theme_type_variation = &"HeaderSmall" +text = "标识值:" + +[node name="valueLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "myProduct" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"] +layout_mode = 2 +theme_type_variation = &"HeaderSmall" +text = "标识名:" + +[node name="nameLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer3"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "我的产品" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HBoxContainer4" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"] +layout_mode = 2 +theme_type_variation = &"HeaderSmall" +text = "标识Id:" + +[node name="idLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer4"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "my.device" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HBoxContainer5" type="HBoxContainer" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"] +layout_mode = 2 +theme_type_variation = &"HeaderSmall" +text = "注册记录:" + +[node name="registryRecordLine" type="LineEdit" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9/HBoxContainer5"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "registry.my.device.record-001" +caret_blink = true +caret_blink_interval = 0.5 + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 + +[node name="register-button" type="Button" parent="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] +layout_mode = 2 +text = "手动注册" +icon = ExtResource("2_1ml36") +expand_icon = true + [node name="StepElement" parent="VBoxContainer/ScrollContainer/HFlowContainer" instance=ExtResource("1_6n8rk")] layout_mode = 2 @@ -420,6 +517,7 @@ layout_mode = 2 [connection signal="ready" from="VBoxContainer/ScrollContainer" to="VBoxContainer/ScrollContainer" method="set_horizontal_scroll_mode" binds= [1]] [editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement2"] +[editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement9"] [editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement"] [editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement5"] [editable path="VBoxContainer/ScrollContainer/HFlowContainer/StepElement3"] diff --git a/Mods/教育平台/Scripts/SearchEngine.cs b/Mods/教育平台/Scripts/SearchEngine.cs index f10bcee..5d696eb 100644 --- a/Mods/教育平台/Scripts/SearchEngine.cs +++ b/Mods/教育平台/Scripts/SearchEngine.cs @@ -8,6 +8,7 @@ using BITKit; using Godot; using Microsoft.EntityFrameworkCore; using Cysharp.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -19,9 +20,10 @@ public interface ISearchEntry string Value { get; } } [Serializable] -[Keyless] public class SearchResult:ISearchEntry { + [Key] + public Guid Guid { get; set; }= Guid.NewGuid(); public string Key { get; set; } public string Value { get; set; } public string Display { get; set; } @@ -31,7 +33,13 @@ public class SearchResult:ISearchEntry public DateTime CreateDate { get; set; }=DateTime.Now; } -public partial class SearchEngine:Node +public interface ISearchEngine +{ + SearchResult[] GetSearchResults(string key); + void Add(SearchResult result); + void Remove(string key, string id); +} +public partial class SearchEngine:Node,ISearchEngine { private static SqlLiteContext Context; [Export] private Node nodeContainer; @@ -44,8 +52,11 @@ public partial class SearchEngine:Node private readonly StringBuilder _logBuilder=new StringBuilder(); private SearchResult[] _currentSearchResults; + public override async void _Ready() { + BITApp.ServiceCollection.AddSingleton(this); + DI.Register(this); try { QueueContainerFree(); @@ -132,4 +143,17 @@ public partial class SearchEngine:Node x.QueueFree(); } } + + public SearchResult[] GetSearchResults(string key)=>Context.context.Where(x=>x.Key.Contains(key)).ToArray(); + + public void Add(SearchResult result) + { + Context.context.Add(result); + Context.SaveChanges(); + } + + public void Remove(string key, string id) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/Mods/教育平台/Scripts/SearchRegister.cs b/Mods/教育平台/Scripts/SearchRegister.cs new file mode 100644 index 0000000..c1b8ac7 --- /dev/null +++ b/Mods/教育平台/Scripts/SearchRegister.cs @@ -0,0 +1,35 @@ +using System; +using BITKit; +using Godot; +using Microsoft.Extensions.DependencyInjection; + +namespace BITFactory; + +public partial class SearchRegister:Node +{ + [Export] private LineEdit keyLine; + [Export] private LineEdit valueLine; + [Export] private LineEdit nameLine; + [Export] private LineEdit idLine; + [Export] private LineEdit registryRecordLine; + [Export] private Button registryButton; + public override void _Ready() + { + registryButton.Pressed += Create; + } + + private void Create() + { + var result = new SearchResult() + { + Key = keyLine.Text, + Value = valueLine.Text, + Display = nameLine.Text, + Id = idLine.Text, + RegistryRecord = registryRecordLine.Text, + CreateDate = DateTime.Now, + UpdateDate = DateTime.Now, + }; + DI.Get().Add(result); + } +} \ No newline at end of file