bug fixed

This commit is contained in:
CortexCore 2023-07-18 20:57:02 +08:00
parent 37f46e6d16
commit e7e80c982a
16 changed files with 323 additions and 134 deletions

View File

@ -0,0 +1,30 @@
[gd_scene load_steps=2 format=3 uid="uid://w41eggledyvq"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_0gyse"]
[node name="LineEditTemplate_Lite" type="PanelContainer" node_paths=PackedStringArray("label", "labels", "buttons", "lineEdit", "lineEdits", "optionButtons")]
script = ExtResource("1_0gyse")
label = NodePath("")
labels = []
buttons = []
lineEdit = NodePath("")
lineEdits = []
optionButtons = []
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
text = "Label"
[node name="LineEdit" type="LineEdit" parent="MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3

View File

@ -18,6 +18,8 @@ public partial class FormBuilder : Node
[Export] private Button submitButton;
[Export] private RichTextLabel logLabel;
public override void _Ready()
{
try

View File

@ -1,5 +1,7 @@
using Godot;
using System;
using System.Collections.Generic;
// ReSharper disable MemberCanBePrivate.Global
namespace BITKit;
@ -12,6 +14,10 @@ public partial class NodeBuilder : Node
[Export] private Control emptyHints;
[ExportCategory("Template")]
[Export] private PackedScene template;
public Node[] Instances => _instances.ToArray();
private readonly List<Node> _instances = new List<Node>();
public override void _Ready()
{
if (clearOnStart)
@ -45,11 +51,14 @@ public partial class NodeBuilder : Node
}
emptyHints?.Hide();;
_instances.Add(instance);
return instance as T;
}
public void Clear()
{
_instances.Clear();
emptyHints?.Show();
if (clearTemplateOnly)
{

View File

@ -12,8 +12,15 @@ public partial class ScriptableTemplate : TemplateResource
public override string[] GetTemplateNames() => templates.Select(x => x.Name).ToArray();
public override FormResource GetTemplate(string name) => templates.Single(x => x.Name == name);
public override bool IsSupportCreateTemplate => true;
public override void CreateTemplate()
public override FormResource CreateTemplate()
{
templates.Add(new ExampleFormResource("New Template" + DateTime.Now));
var @new = new ExampleFormResource("New Template" + DateTime.Now);
templates.Add(@new);
return @new;
}
public override void DeleteTemplate(string name)
{
throw new NotImplementedException();
}
}

View File

@ -1,8 +1,12 @@
using Godot;
using System;
using System.Collections.Generic;
using System.Linq;
// ReSharper disable MemberCanBePrivate.Global
namespace BITKit;
public partial class TemplateBuilder : Node
{
[Export] public TemplateResource template;
@ -13,19 +17,26 @@ public partial class TemplateBuilder : Node
[ExportCategory("Weaver")]
[Export] private FormBuilder formBuilder;
[ExportCategory("UI 绑定")] [Export]
private Button createTemplateButton;
[ExportCategory("UI 绑定")]
[Export] private Button createTemplateButton;
[Export] private Control templateBody;
public FormResource CurrentTemplate { get; private set; }
private ButtonGroup _buttonGroup;
private readonly Dictionary<string, Button> indexDictionary = new();
public override void _Ready()
{
_buttonGroup = new ButtonGroup();
if (template.IsSupportCreateTemplate && createTemplateButton is not null)
{
createTemplateButton.Pressed += template.CreateTemplate;
createTemplateButton.Pressed += Rebuild;
createTemplateButton.Pressed += () =>
{
CurrentTemplate = template.CreateTemplate();
Rebuild();
};
}
Rebuild();
@ -45,10 +56,23 @@ public partial class TemplateBuilder : Node
{
indexBuilder.Clear();
templateBody.Hide();
if (CurrentTemplate is not null && template.GetTemplateNames().Any(x => x == CurrentTemplate.Name))
{
}
else
{
CurrentTemplate = null;
}
foreach (var name in template.GetTemplateNames())
{
var container = indexBuilder.Build<UXContainer>();
var _template = this.template.GetTemplate(name);
var guid = Guid.NewGuid().ToString();
container.button.Text = name;
container.button.ButtonGroup = _buttonGroup;
@ -56,11 +80,22 @@ public partial class TemplateBuilder : Node
container.button.Pressed += () =>
{
CurrentTemplate = _template;
formBuilder.Build(_template);
Entry(_template);
};
_template.SetMeta("RuntimeId",guid);
indexDictionary.Add(guid,container.button);
}
if(CurrentTemplate is not null)
formBuilder.Build(CurrentTemplate);
if (CurrentTemplate is null) return;
Entry(CurrentTemplate);
if(indexDictionary.TryGetValue(CurrentTemplate.GetMeta("RuntimeId").AsString(),out var _currentButton))
_currentButton.ButtonPressed = true;
}
public void Entry(FormResource _template)
{
CurrentTemplate = _template;
formBuilder.Build(_template);
templateBody.Show();
}
}

View File

@ -10,7 +10,8 @@ public abstract partial class TemplateResource : Resource, IStart, IStop
public abstract string[] GetTemplateNames();
public abstract FormResource GetTemplate(string name);
public abstract bool IsSupportCreateTemplate { get; }
public abstract void CreateTemplate();
public abstract FormResource CreateTemplate();
public abstract void DeleteTemplate(string name);
public virtual void OnStart(){}
public virtual void OnStop(){}
public virtual void ManualSave(){}

View File

@ -14,10 +14,18 @@ public partial class IDIS_RegisterDB : FormDBProvider
var jObject = JsonConvert.DeserializeObject<JObject>(data);
var handle = jObject["handle"]!.ToObject<string>();
var values = jObject["values"]!.ToObject<List<IDIS_Data>>();
var references = jObject["references"]!.ToObject<List<string>>();
var createUser = jObject["createUser"]!.ToObject<string>();
IDIS_Service.Singleton.Register(handle, createUser);
foreach (var x in values)
{
IDIS_Service.Singleton.Register(handle,x.Name, x.Format, x.Value,x.Category);
}
foreach (var x in references)
{
IDIS_Service.Singleton.RegisterReference(handle,x);
}
}
}

View File

@ -9,11 +9,18 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
{
[Export] private NodePath handleEditPath;
[Export] private NodePath generateButtonPath;
[Export] private NodePath addReferenceButtonPath;
[Export] private NodePath referenceEditBuilderPath;
[Export] private NodePath templateBuilderPath;
private LineEdit handleEdit=>formBuilder.GetNode<LineEdit>(handleEditPath);
private Button generateButton=>formBuilder.GetNode<Button>(generateButtonPath);
private Button addReferenceButton=>formBuilder.GetNode<Button>(addReferenceButtonPath);
private NodeBuilder referenceEditBuilder=>formBuilder.GetNode<NodeBuilder>(referenceEditBuilderPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private readonly List<IDIS_Data> _values=new();
private readonly List<string> _references=new();
public override void Weaver(Control container, IFormField formField)
{
var field = (IDIS_TemplateForm)formField;
@ -40,6 +47,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
data.Category = field.Category;
data.Handle = handleEdit.Text;
data.Format = field.Type;
data.Name = field.Name;
valueEdit.TextChanged += x => data.Value = x;
}
@ -55,6 +63,8 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
{
{ "handle", handleEdit.Text },
{ "values",_values},
{ "references",_references},
{"createUser",templateBuilder.CurrentTemplate.Name}
};
var json = JsonHelper.Get(value);
@ -65,6 +75,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
public override void Clear()
{
_values.Clear();
_references.Clear();
}
public override void OnStart()
@ -73,5 +84,17 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
{
handleEdit.Text = IDIS_Service.GenerateHandle();
};
addReferenceButton.Pressed += AddReference;
}
private void AddReference()
{
var container = referenceEditBuilder.Build<UXContainer>();
var myIndex = _references.Count;
_references.Add("");
container.lineEdit.Text = string.Empty;
container.label.Text = "引用标识码:";
container.lineEdit.PlaceholderText = "8.123.99/xxxxxxxx";
container.lineEdit.TextChanged += x => _references[myIndex] = x;
}
}

View File

@ -31,17 +31,34 @@ public partial class IDIS_TemplateResource : TemplateResource
return Templates.Single(x => x.Name == name);
}
public override bool IsSupportCreateTemplate => true;
public override void CreateTemplate()
public override FormResource CreateTemplate()
{
Templates.Add(new IDIS_TemplateFormResource()
var newResource =
new IDIS_TemplateFormResource()
{
Name = "新的标识模板:"+Guid.NewGuid(),
Fields = new IFormField[]
{
new IDIS_TemplateForm()
{
Name = "新的标识字段:",
Type = "string",
DefaultValue = "new",
Category = "默认分类"
}
}
});
};
Templates.Add(newResource);
return newResource;
}
public override void DeleteTemplate(string name)
{
var index = Templates.FindIndex(x => x.Name == name);
if (index == -1) return;
Templates.RemoveAt(index);
}
private void EnsureCreated()
{
if (state != InitializationState.None) return;

View File

@ -8,14 +8,18 @@ namespace BITFactory;
[GlobalClass]
public partial class IDIS_TemplateWeaver : FormWeaverResource
{
[Export] private IDIS_TemplateResource templateResource;
[ExportCategory(nameof(NodePath))]
[Export] private NodePath addFieldsButtonPath;
[Export] private NodePath templateBuilderPath;
[Export] private NodePath templateNameEditPath;
[Export] private NodePath saveTemplateNameButtonPath;
[Export] private NodePath deleteTemplateButtonPath;
private Button addFieldsButton => formBuilder.GetNode<Button>(addFieldsButtonPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private LineEdit templateNameEdit => formBuilder.GetNode<LineEdit>(templateNameEditPath);
private Button saveTemplateNameButton => formBuilder.GetNode<Button>(saveTemplateNameButtonPath);
private Button deleteTemplateButton => formBuilder.GetNode<Button>(deleteTemplateButtonPath);
private readonly List<IDIS_TemplateForm> fields = new();
public override void Weaver(Control container, IFormField formField)
@ -99,24 +103,30 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
public override void Clear()
{
fields.Clear();
if (templateBuilder.CurrentTemplate is null) return;
templateNameEdit.Text = templateBuilder.CurrentTemplate?.Name;
}
public override void OnStart()
{
addFieldsButton.Pressed+=AddFields;
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
deleteTemplateButton.Pressed += DeleteCurrentTemplate;
saveTemplateNameButton.Pressed+=()=>
{
ChangeCurrentTemplateName(templateNameEdit.Text);
};
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
}
private void AddFields()
{
if (templateBuilder.CurrentTemplate is null) return;
var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Add(new IDIS_TemplateForm()
{
Name = "新字段",
Type = "string",
DefaultValue = "",
Category = ""
});
templateBuilder.CurrentTemplate.Fields = current.ToArray();
@ -127,7 +137,7 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
{
if(templateBuilder.CurrentTemplate==null) return;
if (templateBuilder.template.GetTemplates().Any(x => x.Name == newName))
if (templateBuilder.template.GetTemplates().Any(x => x.Name == newName))
// ReSharper disable once StringLiteralTypo
newName+=DateTime.Now.ToString("mmss");
@ -136,11 +146,11 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
templateBuilder.template.ManualSave();
templateBuilder.Rebuild();
UXContextMenu
.Create()
.AddAction("New PopopMenu",null)
.Build();
}
private void DeleteCurrentTemplate()
{
if(templateBuilder.CurrentTemplate==null) return;
templateResource.DeleteTemplate(templateBuilder.CurrentTemplate.Name);
templateBuilder.Rebuild();
}
}

View File

@ -16,6 +16,8 @@ public partial class IDIS_SearchService : Node
[Export] private Control searchCandidateContainer;
[Export] private StringResource searchButtonVariation;
[Export] private Control searchEditPadding;
[Export] private Button searchButton;
[Export] private Button copyHandleButton;
[ExportCategory("Query 绑定")]
[Export] private Label handleLabel;
@ -30,6 +32,8 @@ public partial class IDIS_SearchService : Node
[Export] private PackedScene referenceTemplate;
[Export] private PackedScene categoryTemplate;
private string currentHandle;
public override void _Ready()
{
MathNode.ClearChild(searchCandidateContainer);
@ -37,6 +41,8 @@ public partial class IDIS_SearchService : Node
searchEdit.TextChanged += Search;
//searchEdit.FocusExited += Clear;
searchButton.Pressed+=Search;
copyHandleButton.Pressed += CopyCurrentHandle;
}
private void Search()
@ -47,7 +53,11 @@ public partial class IDIS_SearchService : Node
{
MathNode.ClearChild(searchCandidateContainer);
if (service.Query(word, out IDIS_Query[] queries) is false) return;
if(queries.Length is 1 && queries.First().Handle == word)return;
if (queries.Length is 1 && queries.First().Handle == word)
{
QueryIDIS(queries.First());
return;
}
foreach (var query in queries.Take(3))
{
var button = new Button();
@ -56,7 +66,7 @@ public partial class IDIS_SearchService : Node
searchCandidateContainer.AddChild(button);
button.Text = query.Handle;
button.Text = $"{query.Handle}:{query.CreateUser}";
button.Pressed+=OnButtonOnPressed;
@ -81,8 +91,10 @@ public partial class IDIS_SearchService : Node
handleLabel.Text = query.Handle;
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss");
createTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss");
currentHandle = query.Handle;
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
updateTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
MathNode.ClearChild(valueContainer);
MathNode.ClearChild(referenceContainer);
@ -120,6 +132,11 @@ public partial class IDIS_SearchService : Node
referenceContainer.AddChild(container);
}
}
private void CopyCurrentHandle()
{
DisplayServer.ClipboardSet(currentHandle);
}
}

View File

@ -36,6 +36,10 @@ public class IDIS_Value:IDIS_Base
/// </summary>
[Key]
public string Handle { get; set; }
/// <summary>
/// 创建用户,例如:模板名称,用户名称
/// </summary>
public string CreateUser { get; set; }
}
// ReSharper disable once IdentifierTypo
public class IDIS_Query : IDIS_Value
@ -147,12 +151,13 @@ public class IDIS_DBContext:DbContext
ChangeTracker.DetectChanges();
ChangeTracker.Clear();
queries = Values
.Where(x => x.Handle.Contains(key))
.Where(x => x.Handle.Contains(key) || x.CreateUser.Contains(key))
.Select(x => new IDIS_Query()
{
Handle = x.Handle,
CreateTime = x.CreateTime,
UpdateTime = x.UpdateTime,
CreateUser = x.CreateUser,
Datas = Datas.Where(data => data.Handle == x.Handle).ToArray(),
References = References.Where(reference => reference.Handle == x.Handle).ToArray()
}).ToArray();
@ -171,7 +176,7 @@ public class IDIS_DBContext:DbContext
query = queries.FirstOrDefault();
return queries.Any();
}
public bool Register(string handle)
public bool Register(string handle,string createUser = Constant.System.Internal)
{
var handleExists = Values.Any(x => x.Handle == handle);
if (handleExists)
@ -180,7 +185,8 @@ public class IDIS_DBContext:DbContext
}
var value = new IDIS_Value()
{
Handle = handle
Handle = handle,
CreateUser = createUser,
};
Values.Add(value);
SaveChangesAsync();
@ -252,7 +258,7 @@ public partial class IDIS_Service:Node
}
public bool Query(string word,out IDIS_Query[] queries) => Context.Query(word, out queries);
public bool Register(string handle) => Context.Register(handle);
public bool Register(string handle,string createUser=Constant.System.Internal) => Context.Register(handle,createUser);
public void Register(string handle,string name, string format, string value,string category) => Context.Register(handle,name, format, value,category);
public void RegisterReference(string handle,string refenceHandle) => Context.RegisterReference(handle,refenceHandle);
public static string GenerateHandle() => $"88.123.99/{Mathf.Abs(Guid.NewGuid().GetHashCode())}";

View File

@ -111,6 +111,12 @@ public partial class 温湿度Reader : Node
await UniTask.SwitchToTaskPool();
try
{
if (_modbus is null)
{
hintsLabel.SetTextAsync("Modbus未初始化");
return;
}
_CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "正在读取温湿度数据..."+DateTime.Now);

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=66 format=3 uid="uid://cngf2h2a5ne4a"]
[gd_scene load_steps=68 format=3 uid="uid://cngf2h2a5ne4a"]
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXPanel.cs" id="1_c78kh"]
[ext_resource type="PackedScene" uid="uid://d1po2qljd0jh2" path="res://Mods/教育平台/教程header.tscn" id="2_mn1rn"]
@ -36,6 +36,7 @@
[ext_resource type="PackedScene" uid="uid://cccx8fmmfttth" path="res://Mods/工业数据采集与分析应用分享/Templates/标识数据模板.tscn" id="20_kicyn"]
[ext_resource type="VideoStream" path="res://Mods/工业数据采集与分析应用分享/Arts/Videos/生产过程模拟.ogv" id="27_laoxb"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/温湿度Reader.cs" id="27_q8j7q"]
[ext_resource type="PackedScene" uid="uid://w41eggledyvq" path="res://Artists/Templates/LineEditTemplate_Lite.tscn" id="30_d5241"]
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_THService.cs" id="30_jn688"]
[ext_resource type="Script" path="res://BITKit/Scripts/Video/VideoPlayer.cs" id="31_0moq5"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/Form/FormBuilder.cs" id="37_pcw20"]
@ -78,12 +79,17 @@ value = "Panel"
[sub_resource type="Resource" id="Resource_flu4x"]
script = ExtResource("39_p2ycf")
[sub_resource type="Resource" id="Resource_0cbl3"]
script = ExtResource("39_p2ycf")
[sub_resource type="Resource" id="Resource_l4b2n"]
script = ExtResource("41_48x07")
addFieldsButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
templateResource = SubResource("Resource_0cbl3")
addFieldsButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/add_field-button")
templateBuilderPath = NodePath("..")
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/LineEdit")
saveTemplateNameButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/Button")
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/templateName-edit")
saveTemplateNameButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/save_template-button")
deleteTemplateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/deleteTemplate-button")
[sub_resource type="Resource" id="Resource_qa6b3"]
script = ExtResource("39_p2ycf")
@ -92,6 +98,9 @@ script = ExtResource("39_p2ycf")
script = ExtResource("42_2r83e")
handleEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/LineEdit")
generateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/Button")
addReferenceButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
referenceEditBuilderPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Reference-Layout")
templateBuilderPath = NodePath("..")
[sub_resource type="Resource" id="Resource_3wa3y"]
script = ExtResource("39_d5jaq")
@ -136,8 +145,8 @@ layout_mode = 2
layout_mode = 2
size_flags_vertical = 3
script = ExtResource("3_sfip0")
tabs = [NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板-button"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/注册标识"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/更新标识"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识解析"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/温湿度传感器"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板生成"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板注册"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/自动注册标识")]
windows = [NodePath("Horizontal Layout/内容/MarginContainer/标识模板"), NodePath("Horizontal Layout/内容/MarginContainer/标注注册"), NodePath("Horizontal Layout/内容/MarginContainer/标识更新"), NodePath("Horizontal Layout/内容/MarginContainer/标识解析"), NodePath("Horizontal Layout/内容/MarginContainer/温湿度传感器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板生成器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板注册器"), NodePath("Horizontal Layout/内容/MarginContainer/自动注册标识")]
tabs = [NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识解析"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/温湿度传感器"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板生成"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/标识模板注册"), NodePath("Horizontal Layout/导航栏/MarginContainer/Layout/VBoxContainer/自动注册标识")]
windows = [NodePath("Horizontal Layout/内容/MarginContainer/标识解析"), NodePath("Horizontal Layout/内容/MarginContainer/温湿度传感器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板生成器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板注册器"), NodePath("Horizontal Layout/内容/MarginContainer/自动注册标识")]
[node name="Horizontal Layout" type="HBoxContainer" parent="Layout/UX Window Service"]
layout_mode = 2
@ -723,6 +732,7 @@ horizontal_scroll_mode = 0
[node name="NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12
script = ExtResource("14_q0cb2")
emptyHints = NodePath("Label2")
@ -1006,7 +1016,14 @@ layout_mode = 2
theme_type_variation = &"HeaderSmall"
text = "标识码:"
[node name="label[0]" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer"]
layout_mode = 2
[node name="copy-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/HBoxContainer"]
layout_mode = 2
text = "复制"
[node name="label[0]" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_type_variation = &"HeaderSmall"
@ -1315,6 +1332,14 @@ layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "列表"
[node name="add_field-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "创建模板"
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "已创建额度模板列表"
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
size_flags_vertical = 3
@ -1322,9 +1347,10 @@ horizontal_scroll_mode = 0
[node name="Index-NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12
script = ExtResource("14_q0cb2")
emptyHints = NodePath("../../../../../标识模板/VBoxContainer/HBoxContainer/VBoxContainer3/ScrollContainer/NodeBuilder/Label2")
emptyHints = NodePath("Label2")
template = ExtResource("14_pcoc2")
[node name="Option-Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder" node_paths=PackedStringArray("button", "buttons", "optionButtons") instance=ExtResource("14_pcoc2")]
@ -1361,110 +1387,92 @@ optionButtons = []
layout_mode = 2
text = "oops,没有找到模板,快去创建吧!"
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "创建模板"
[node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer"]
visible = false
layout_mode = 2
theme_override_constants/separation = 64
[node name="VBoxContainer2" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer"]
[node name="标识模板-body" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2"]
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body"]
layout_mode = 2
size_flags_vertical = 3
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer"]
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "表单"
[node name="HSeparator" type="HSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer"]
[node name="HSeparator" type="HSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer"]
visible = false
layout_mode = 2
theme_type_variation = &"HSeparator_8px"
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer"]
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer"]
[node name="VBoxContainer" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TemelateName" type="PanelContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
[node name="TemelateName" type="PanelContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName"]
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 8
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "模板名称:"
[node name="LineEdit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
[node name="templateName-edit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "新的标识注册模板"
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "保存新的名称"
[node name="Node Builder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
[node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"VSeparator_16px"
[node name="deleteTemplate-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "删除模板"
[node name="Node Builder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("14_q0cb2")
[node name="PanelContainer" type="PanelContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "Label:"
[node name="LineEdit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="add-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
[node name="add-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
text = "添加属性"
[node name="LogLabel" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2"]
[node name="LogLabel" type="RichTextLabel" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body"]
layout_mode = 2
bbcode_enabled = true
text = "等待操作中"
fit_content = true
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2"]
[node name="save_template-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body"]
layout_mode = 2
text = "保存"
[node name="标识模板注册器" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"]
visible = false
layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器" instance=ExtResource("13_7vm0l")]
@ -1493,6 +1501,14 @@ layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "列表"
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "刷新"
[node name="Label2" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "已创建的标识模板"
[node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
size_flags_vertical = 3
@ -1500,9 +1516,10 @@ horizontal_scroll_mode = 0
[node name="Index-NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12
script = ExtResource("14_q0cb2")
emptyHints = NodePath("../../../../../标识模板/VBoxContainer/HBoxContainer/VBoxContainer3/ScrollContainer/NodeBuilder/Label2")
emptyHints = NodePath("Label2")
template = ExtResource("14_pcoc2")
[node name="Option-Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder" node_paths=PackedStringArray("button", "buttons", "optionButtons") instance=ExtResource("14_pcoc2")]
@ -1539,10 +1556,6 @@ optionButtons = []
layout_mode = 2
text = "oops,没有找到模板,快去创建吧!"
[node name="Button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3"]
layout_mode = 2
text = "刷新"
[node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer"]
visible = false
layout_mode = 2
@ -1605,32 +1618,23 @@ layout_mode = 2
size_flags_horizontal = 3
script = ExtResource("14_q0cb2")
[node name="PanelContainer" type="PanelContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder"]
[node name="LineEditTemplate_Lite" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder" instance=ExtResource("30_d5241")]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
text = "Label"
[node name="LineEdit" type="LineEdit" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder/PanelContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="Label3" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "引用标识"
[node name="Reference-Layout" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
script = ExtResource("14_q0cb2")
clearTemplateOnly = false
template = ExtResource("16_il4as")
[node name="LineEditTemplate_Lite" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Reference-Layout" instance=ExtResource("30_d5241")]
layout_mode = 2
[node name="add-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2
text = "添加引用"
@ -1646,6 +1650,7 @@ layout_mode = 2
text = "注册"
[node name="自动注册标识" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"]
visible = false
layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/自动注册标识" instance=ExtResource("13_7vm0l")]
@ -1858,14 +1863,16 @@ layout_mode = 2
[node name="标识解析服务" type="Node" parent="."]
script = ExtResource("3_xbtmk")
[node name="标识搜索服务" type="Node" parent="." node_paths=PackedStringArray("service", "searchEdit", "searchCandidateContainer", "searchEditPadding", "handleLabel", "createTimeLabel", "updateTimeLabel", "valueContainer", "referenceContainer")]
[node name="标识搜索服务" type="Node" parent="." node_paths=PackedStringArray("service", "searchEdit", "searchCandidateContainer", "searchEditPadding", "searchButton", "copyHandleButton", "handleLabel", "createTimeLabel", "updateTimeLabel", "valueContainer", "referenceContainer")]
script = ExtResource("16_14syv")
service = NodePath("../标识解析服务")
searchEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/SearchEdit")
searchCandidateContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/PanelContainer/Control")
searchButtonVariation = SubResource("Resource_ktam2")
searchEditPadding = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/占位符")
handleLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/label[0]")
searchButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/SearchEdit/HBoxContainer/refresh-button")
copyHandleButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/HBoxContainer/copy-button")
handleLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/HBoxContainer/label[0]")
createTimeLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/label[1]")
updateTimeLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析结果/VBoxContainer/UXContainer/Margin/GridContainer/label[2]")
valueContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/ScrollContainer/Layout/标识解析数据")
@ -1895,25 +1902,27 @@ ipEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginCo
portEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/温湿度传感器/VBoxContainer/VBoxContainer/GridContainer2/LineEdit2")
hintsLabel = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/温湿度传感器/VBoxContainer/VBoxContainer/RichTextLabel")
[node name="标识模板生成器" type="Node" parent="." node_paths=PackedStringArray("indexBuilder", "formBuilder", "createTemplateButton")]
[node name="标识模板生成器" type="Node" parent="." node_paths=PackedStringArray("indexBuilder", "formBuilder", "createTemplateButton", "templateBody")]
script = ExtResource("38_fhmdw")
template = SubResource("Resource_flu4x")
indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder")
formBuilder = NodePath("FormBuilder")
createTemplateButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/Button")
createTemplateButton = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/add_field-button")
templateBody = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body")
[node name="FormBuilder" type="Node" parent="标识模板生成器" node_paths=PackedStringArray("nodeBuilder", "submitButton", "logLabel")]
script = ExtResource("37_pcw20")
formWeaver = SubResource("Resource_l4b2n")
nodeBuilder = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder")
submitButton = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/Button")
logLabel = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/LogLabel")
nodeBuilder = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder")
submitButton = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/save_template-button")
logLabel = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/LogLabel")
[node name="标识模板注册器" type="Node" parent="." node_paths=PackedStringArray("indexBuilder", "formBuilder")]
[node name="标识模板注册器" type="Node" parent="." node_paths=PackedStringArray("indexBuilder", "formBuilder", "templateBody")]
script = ExtResource("38_fhmdw")
template = SubResource("Resource_qa6b3")
indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder")
formBuilder = NodePath("FormBuilder")
templateBody = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2")
[node name="FormBuilder" type="Node" parent="标识模板注册器" node_paths=PackedStringArray("nodeBuilder", "submitButton", "logLabel")]
script = ExtResource("37_pcw20")
@ -1951,7 +1960,6 @@ templateName = "订单信息"
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button" to="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button" method="Execute"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button5" to="Layout/UX Window Service/Horizontal Layout/导航栏/MarginContainer/Layout/Button5" method="Return"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/SearchEdit/HBoxContainer/refresh-button" to="标识搜索服务" method="Search"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/温湿度传感器/VBoxContainer/VBoxContainer/HBoxContainer/生成数据-button" to="温湿度数据生成" method="Excute"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/Button" to="标识模板注册器" method="Rebuild"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/自动注册标识/HFlowContainer/VBoxContainer/start-button" to="自动注册标识" method="Register"]

View File

@ -93,11 +93,16 @@
- [ ] 给出错误提示和原因
## 更改记录
### 新增issue date:2023年7月18日
- [ ] 添加完成的引导,告诉用户下一步具体该点击什么按钮
- [ ] 添加可以删除模板的按钮
- [ ] 添加模板后自动进入新创建的模板
- [ ] 修复NodeBuilder的空提示
- [ ] 添加根据标识模板搜索已注册的标识的功能
- [ ] 修复标识解析的搜索框`搜索按钮`无效的问题
- [ ] `动画`添加基于`标识节点`连线的标识解析动画
- [x] `引导`编辑标识模板名称后,需要点击保存
- [x] `引导`强调在`标识注册`中需要点击刷新按钮
- [ ] `引导`添加完整的引导,告诉用户下一步具体该点击什么按钮
- [x] `注册标识`修复点击引用标识无效的问题
- [x] `标识模板`修复`类型下拉框`中默认值为空的问题
- [x] `标识模板`添加可以删除模板的按钮
- [x] `标识模板`添加模板后自动进入新创建的模板
- [x] `内部`修复NodeBuilder的空提示
- [x] `标识解析`添加根据标识模板搜索已注册的标识的功能
- [x] `标识解析`修复标识解析的搜索框`搜索按钮`无效的问题
### 完成部分功能
### 创建文档

View File

@ -53,7 +53,7 @@
## 🔥详细步骤
### 订单信息
* 点击`创建标识模板`
* 输入模板名称,例如:`订单标识模板`
* 输入模板名称,例如:`订单标识模板`,然后点击右侧的`保存`按钮
* 接下来创建以下值
* `订单单号` `string` `123456` `订单信息`
* `订单数量` `int` `100` `订单信息`
@ -68,7 +68,7 @@
* 点击保存
### 温湿度传感器本身标识
* 点击`创建标识模板`
* 输入模板名称,例如:`温湿度传感器模板`
* 输入模板名称,例如:`温湿度传感器模板`,然后点击右侧的`保存`按钮
* 接下来创建以下值
* `温度` `float` `42.0` `环境`
* `湿度` `float` `50.0` `环境`
@ -78,13 +78,13 @@
* `产品图片` `url` `https://www.baidu.com/img/bd_logo1.png` `出厂参数`
### 温湿度记录
* 点击`创建标识模板`
* 输入模板名称,例如:`温湿度记录模板`
* 输入模板名称,例如:`温湿度记录模板`,然后点击右侧的`保存`按钮
* 接下来创建以下值
* `温度` `float` `42.0` `环境`
* `湿度` `float` `50.0` `环境`
### AGV的电量和电流
* 点击`创建标识模板`
* 输入模板名称,例如:`AGV注册模板`
* 输入模板名称,例如:`AGV注册模板`,然后点击右侧的`保存`按钮
* 接下来创建以下值
* `型号` `string` `AGV-001` `出厂参数`
* `生产厂家` `string` `Intelli工业` `出厂参数`
@ -93,7 +93,7 @@
* `电流` `float` `10.0` `能源`
### 设备注册模板
* 点击`创建标识模板`
* 输入模板名称,例如:`机械臂注册模板`
* 输入模板名称,例如:`设备-机械臂`,然后点击右侧的`保存`按钮
* 接下来创建以下值
* `型号` `string` `SR7C1L` `出厂参数`
* `备注` `string` `测试机械臂` `生产参数`
@ -104,8 +104,13 @@
### 注册标识
打开`注册标识`页面,并点击`刷新`
### ⚠️自动注册所有标识(可选)
当你不想手动注册所有标识时,可以点击`自动注册所有标识`,并等待一段时间,所有标识都会自动注册
### ⚠️模拟生产/自动注册标识
我们现在是工作人员,需要为所有设备,物料或工序等注册标识
我们可以根据任务,按照指示一步一步创建标识模板并注册标识
也可以直接点击"自动生产"按钮,系统会自动为我们创建标识模板并注册
### 注册订单
* 点击`订单标识模板`,并在下方输入框中输入需要的数据,或者默认的数据,并提交
### 注册温湿度传感器