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 Button submitButton;
[Export] private RichTextLabel logLabel; [Export] private RichTextLabel logLabel;
public override void _Ready() public override void _Ready()
{ {
try try

View File

@ -1,5 +1,7 @@
using Godot; using Godot;
using System; using System;
using System.Collections.Generic;
// ReSharper disable MemberCanBePrivate.Global // ReSharper disable MemberCanBePrivate.Global
namespace BITKit; namespace BITKit;
@ -12,6 +14,10 @@ public partial class NodeBuilder : Node
[Export] private Control emptyHints; [Export] private Control emptyHints;
[ExportCategory("Template")] [ExportCategory("Template")]
[Export] private PackedScene template; [Export] private PackedScene template;
public Node[] Instances => _instances.ToArray();
private readonly List<Node> _instances = new List<Node>();
public override void _Ready() public override void _Ready()
{ {
if (clearOnStart) if (clearOnStart)
@ -45,11 +51,14 @@ public partial class NodeBuilder : Node
} }
emptyHints?.Hide();; emptyHints?.Hide();;
_instances.Add(instance);
return instance as T; return instance as T;
} }
public void Clear() public void Clear()
{ {
_instances.Clear();
emptyHints?.Show(); emptyHints?.Show();
if (clearTemplateOnly) 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 string[] GetTemplateNames() => templates.Select(x => x.Name).ToArray();
public override FormResource GetTemplate(string name) => templates.Single(x => x.Name == name); public override FormResource GetTemplate(string name) => templates.Single(x => x.Name == name);
public override bool IsSupportCreateTemplate => true; 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,33 +1,44 @@
using Godot; using Godot;
using System; using System;
using System.Collections.Generic;
using System.Linq;
// ReSharper disable MemberCanBePrivate.Global // ReSharper disable MemberCanBePrivate.Global
namespace BITKit; namespace BITKit;
public partial class TemplateBuilder : Node public partial class TemplateBuilder : Node
{ {
[Export] public TemplateResource template; [Export] public TemplateResource template;
[ExportCategory("Index")] [ExportCategory("Index")]
[Export] private NodeBuilder indexBuilder; [Export] private NodeBuilder indexBuilder;
[ExportCategory("Weaver")] [ExportCategory("Weaver")]
[Export] private FormBuilder formBuilder; [Export] private FormBuilder formBuilder;
[ExportCategory("UI 绑定")] [Export] [ExportCategory("UI 绑定")]
private Button createTemplateButton; [Export] private Button createTemplateButton;
[Export] private Control templateBody;
public FormResource CurrentTemplate { get; private set; } public FormResource CurrentTemplate { get; private set; }
private ButtonGroup _buttonGroup; private ButtonGroup _buttonGroup;
private readonly Dictionary<string, Button> indexDictionary = new();
public override void _Ready() public override void _Ready()
{ {
_buttonGroup = new ButtonGroup(); _buttonGroup = new ButtonGroup();
if (template.IsSupportCreateTemplate && createTemplateButton is not null) if (template.IsSupportCreateTemplate && createTemplateButton is not null)
{ {
createTemplateButton.Pressed += template.CreateTemplate; createTemplateButton.Pressed += () =>
createTemplateButton.Pressed += Rebuild; {
CurrentTemplate = template.CreateTemplate();
Rebuild();
};
} }
Rebuild(); Rebuild();
} }
@ -44,23 +55,47 @@ public partial class TemplateBuilder : Node
public void Rebuild() public void Rebuild()
{ {
indexBuilder.Clear(); 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()) foreach (var name in template.GetTemplateNames())
{ {
var container = indexBuilder.Build<UXContainer>(); var container = indexBuilder.Build<UXContainer>();
var _template = this.template.GetTemplate(name); var _template = this.template.GetTemplate(name);
var guid = Guid.NewGuid().ToString();
container.button.Text = name; container.button.Text = name;
container.button.ButtonGroup = _buttonGroup; container.button.ButtonGroup = _buttonGroup;
container.button.ToggleMode = true; container.button.ToggleMode = true;
container.button.Pressed += () => container.button.Pressed += () =>
{ {
CurrentTemplate = _template; Entry(_template);
formBuilder.Build(_template);
}; };
_template.SetMeta("RuntimeId",guid);
indexDictionary.Add(guid,container.button);
} }
if(CurrentTemplate is not null) if (CurrentTemplate is null) return;
formBuilder.Build(CurrentTemplate);
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 string[] GetTemplateNames();
public abstract FormResource GetTemplate(string name); public abstract FormResource GetTemplate(string name);
public abstract bool IsSupportCreateTemplate { get; } 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 OnStart(){}
public virtual void OnStop(){} public virtual void OnStop(){}
public virtual void ManualSave(){} public virtual void ManualSave(){}

View File

@ -14,10 +14,18 @@ public partial class IDIS_RegisterDB : FormDBProvider
var jObject = JsonConvert.DeserializeObject<JObject>(data); var jObject = JsonConvert.DeserializeObject<JObject>(data);
var handle = jObject["handle"]!.ToObject<string>(); var handle = jObject["handle"]!.ToObject<string>();
var values = jObject["values"]!.ToObject<List<IDIS_Data>>(); 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) foreach (var x in values)
{ {
IDIS_Service.Singleton.Register(handle,x.Name, x.Format, x.Value,x.Category); 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 handleEditPath;
[Export] private NodePath generateButtonPath; [Export] private NodePath generateButtonPath;
[Export] private NodePath addReferenceButtonPath;
[Export] private NodePath referenceEditBuilderPath;
[Export] private NodePath templateBuilderPath;
private LineEdit handleEdit=>formBuilder.GetNode<LineEdit>(handleEditPath); private LineEdit handleEdit=>formBuilder.GetNode<LineEdit>(handleEditPath);
private Button generateButton=>formBuilder.GetNode<Button>(generateButtonPath); 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<IDIS_Data> _values=new();
private readonly List<string> _references=new();
public override void Weaver(Control container, IFormField formField) public override void Weaver(Control container, IFormField formField)
{ {
var field = (IDIS_TemplateForm)formField; var field = (IDIS_TemplateForm)formField;
@ -28,7 +35,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
var myIndex = _values.Count; var myIndex = _values.Count;
_values.Add(data); _values.Add(data);
label.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; label.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
typeLabel.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; typeLabel.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
valueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill; valueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
@ -40,6 +47,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
data.Category = field.Category; data.Category = field.Category;
data.Handle = handleEdit.Text; data.Handle = handleEdit.Text;
data.Format = field.Type; data.Format = field.Type;
data.Name = field.Name;
valueEdit.TextChanged += x => data.Value = x; valueEdit.TextChanged += x => data.Value = x;
} }
@ -55,6 +63,8 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
{ {
{ "handle", handleEdit.Text }, { "handle", handleEdit.Text },
{ "values",_values}, { "values",_values},
{ "references",_references},
{"createUser",templateBuilder.CurrentTemplate.Name}
}; };
var json = JsonHelper.Get(value); var json = JsonHelper.Get(value);
@ -65,6 +75,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
public override void Clear() public override void Clear()
{ {
_values.Clear(); _values.Clear();
_references.Clear();
} }
public override void OnStart() public override void OnStart()
@ -73,5 +84,17 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
{ {
handleEdit.Text = IDIS_Service.GenerateHandle(); 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); return Templates.Single(x => x.Name == name);
} }
public override bool IsSupportCreateTemplate => true; 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(), Name = "新的标识模板:"+Guid.NewGuid(),
Fields = new IFormField[] Fields = new IFormField[]
{ {
new IDIS_TemplateForm() 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() private void EnsureCreated()
{ {
if (state != InitializationState.None) return; if (state != InitializationState.None) return;

View File

@ -8,14 +8,18 @@ namespace BITFactory;
[GlobalClass] [GlobalClass]
public partial class IDIS_TemplateWeaver : FormWeaverResource public partial class IDIS_TemplateWeaver : FormWeaverResource
{ {
[Export] private IDIS_TemplateResource templateResource;
[ExportCategory(nameof(NodePath))]
[Export] private NodePath addFieldsButtonPath; [Export] private NodePath addFieldsButtonPath;
[Export] private NodePath templateBuilderPath; [Export] private NodePath templateBuilderPath;
[Export] private NodePath templateNameEditPath; [Export] private NodePath templateNameEditPath;
[Export] private NodePath saveTemplateNameButtonPath; [Export] private NodePath saveTemplateNameButtonPath;
[Export] private NodePath deleteTemplateButtonPath;
private Button addFieldsButton => formBuilder.GetNode<Button>(addFieldsButtonPath); private Button addFieldsButton => formBuilder.GetNode<Button>(addFieldsButtonPath);
private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath); private TemplateBuilder templateBuilder => formBuilder.GetNode<TemplateBuilder>(templateBuilderPath);
private LineEdit templateNameEdit => formBuilder.GetNode<LineEdit>(templateNameEditPath); private LineEdit templateNameEdit => formBuilder.GetNode<LineEdit>(templateNameEditPath);
private Button saveTemplateNameButton => formBuilder.GetNode<Button>(saveTemplateNameButtonPath); private Button saveTemplateNameButton => formBuilder.GetNode<Button>(saveTemplateNameButtonPath);
private Button deleteTemplateButton => formBuilder.GetNode<Button>(deleteTemplateButtonPath);
private readonly List<IDIS_TemplateForm> fields = new(); private readonly List<IDIS_TemplateForm> fields = new();
public override void Weaver(Control container, IFormField formField) public override void Weaver(Control container, IFormField formField)
@ -99,24 +103,30 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
public override void Clear() public override void Clear()
{ {
fields.Clear(); fields.Clear();
if (templateBuilder.CurrentTemplate is null) return;
templateNameEdit.Text = templateBuilder.CurrentTemplate?.Name; templateNameEdit.Text = templateBuilder.CurrentTemplate?.Name;
} }
public override void OnStart() public override void OnStart()
{ {
addFieldsButton.Pressed+=AddFields; addFieldsButton.Pressed+=AddFields;
deleteTemplateButton.Pressed += DeleteCurrentTemplate;
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
saveTemplateNameButton.Pressed+=()=> saveTemplateNameButton.Pressed+=()=>
{ {
ChangeCurrentTemplateName(templateNameEdit.Text); ChangeCurrentTemplateName(templateNameEdit.Text);
}; };
templateNameEdit.TextSubmitted+=ChangeCurrentTemplateName;
} }
private void AddFields() private void AddFields()
{ {
if (templateBuilder.CurrentTemplate is null) return;
var current = templateBuilder.CurrentTemplate.Fields.ToList(); var current = templateBuilder.CurrentTemplate.Fields.ToList();
current.Add(new IDIS_TemplateForm() current.Add(new IDIS_TemplateForm()
{ {
Name = "新字段",
Type = "string",
DefaultValue = "",
Category = ""
}); });
templateBuilder.CurrentTemplate.Fields = current.ToArray(); templateBuilder.CurrentTemplate.Fields = current.ToArray();
@ -127,7 +137,7 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
{ {
if(templateBuilder.CurrentTemplate==null) return; 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 // ReSharper disable once StringLiteralTypo
newName+=DateTime.Now.ToString("mmss"); newName+=DateTime.Now.ToString("mmss");
@ -136,11 +146,11 @@ public partial class IDIS_TemplateWeaver : FormWeaverResource
templateBuilder.template.ManualSave(); templateBuilder.template.ManualSave();
templateBuilder.Rebuild(); templateBuilder.Rebuild();
}
UXContextMenu private void DeleteCurrentTemplate()
.Create() {
.AddAction("New PopopMenu",null) if(templateBuilder.CurrentTemplate==null) return;
.Build(); 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 Control searchCandidateContainer;
[Export] private StringResource searchButtonVariation; [Export] private StringResource searchButtonVariation;
[Export] private Control searchEditPadding; [Export] private Control searchEditPadding;
[Export] private Button searchButton;
[Export] private Button copyHandleButton;
[ExportCategory("Query 绑定")] [ExportCategory("Query 绑定")]
[Export] private Label handleLabel; [Export] private Label handleLabel;
@ -30,6 +32,8 @@ public partial class IDIS_SearchService : Node
[Export] private PackedScene referenceTemplate; [Export] private PackedScene referenceTemplate;
[Export] private PackedScene categoryTemplate; [Export] private PackedScene categoryTemplate;
private string currentHandle;
public override void _Ready() public override void _Ready()
{ {
MathNode.ClearChild(searchCandidateContainer); MathNode.ClearChild(searchCandidateContainer);
@ -37,6 +41,8 @@ public partial class IDIS_SearchService : Node
searchEdit.TextChanged += Search; searchEdit.TextChanged += Search;
//searchEdit.FocusExited += Clear; //searchEdit.FocusExited += Clear;
searchButton.Pressed+=Search;
copyHandleButton.Pressed += CopyCurrentHandle;
} }
private void Search() private void Search()
@ -47,7 +53,11 @@ public partial class IDIS_SearchService : Node
{ {
MathNode.ClearChild(searchCandidateContainer); MathNode.ClearChild(searchCandidateContainer);
if (service.Query(word, out IDIS_Query[] queries) is false) return; 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)) foreach (var query in queries.Take(3))
{ {
var button = new Button(); var button = new Button();
@ -56,7 +66,7 @@ public partial class IDIS_SearchService : Node
searchCandidateContainer.AddChild(button); searchCandidateContainer.AddChild(button);
button.Text = query.Handle; button.Text = $"{query.Handle}:{query.CreateUser}";
button.Pressed+=OnButtonOnPressed; button.Pressed+=OnButtonOnPressed;
@ -80,9 +90,11 @@ public partial class IDIS_SearchService : Node
searchEditPadding.Hide(); searchEditPadding.Hide();
handleLabel.Text = query.Handle; handleLabel.Text = query.Handle;
currentHandle = query.Handle;
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"); createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
createTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"); updateTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
MathNode.ClearChild(valueContainer); MathNode.ClearChild(valueContainer);
MathNode.ClearChild(referenceContainer); MathNode.ClearChild(referenceContainer);
@ -120,6 +132,11 @@ public partial class IDIS_SearchService : Node
referenceContainer.AddChild(container); referenceContainer.AddChild(container);
} }
} }
private void CopyCurrentHandle()
{
DisplayServer.ClipboardSet(currentHandle);
}
} }

View File

@ -36,6 +36,10 @@ public class IDIS_Value:IDIS_Base
/// </summary> /// </summary>
[Key] [Key]
public string Handle { get; set; } public string Handle { get; set; }
/// <summary>
/// 创建用户,例如:模板名称,用户名称
/// </summary>
public string CreateUser { get; set; }
} }
// ReSharper disable once IdentifierTypo // ReSharper disable once IdentifierTypo
public class IDIS_Query : IDIS_Value public class IDIS_Query : IDIS_Value
@ -147,12 +151,13 @@ public class IDIS_DBContext:DbContext
ChangeTracker.DetectChanges(); ChangeTracker.DetectChanges();
ChangeTracker.Clear(); ChangeTracker.Clear();
queries = Values queries = Values
.Where(x => x.Handle.Contains(key)) .Where(x => x.Handle.Contains(key) || x.CreateUser.Contains(key))
.Select(x => new IDIS_Query() .Select(x => new IDIS_Query()
{ {
Handle = x.Handle, Handle = x.Handle,
CreateTime = x.CreateTime, CreateTime = x.CreateTime,
UpdateTime = x.UpdateTime, UpdateTime = x.UpdateTime,
CreateUser = x.CreateUser,
Datas = Datas.Where(data => data.Handle == x.Handle).ToArray(), Datas = Datas.Where(data => data.Handle == x.Handle).ToArray(),
References = References.Where(reference => reference.Handle == x.Handle).ToArray() References = References.Where(reference => reference.Handle == x.Handle).ToArray()
}).ToArray(); }).ToArray();
@ -171,7 +176,7 @@ public class IDIS_DBContext:DbContext
query = queries.FirstOrDefault(); query = queries.FirstOrDefault();
return queries.Any(); 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); var handleExists = Values.Any(x => x.Handle == handle);
if (handleExists) if (handleExists)
@ -180,7 +185,8 @@ public class IDIS_DBContext:DbContext
} }
var value = new IDIS_Value() var value = new IDIS_Value()
{ {
Handle = handle Handle = handle,
CreateUser = createUser,
}; };
Values.Add(value); Values.Add(value);
SaveChangesAsync(); 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 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 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 void RegisterReference(string handle,string refenceHandle) => Context.RegisterReference(handle,refenceHandle);
public static string GenerateHandle() => $"88.123.99/{Mathf.Abs(Guid.NewGuid().GetHashCode())}"; 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(); await UniTask.SwitchToTaskPool();
try try
{ {
if (_modbus is null)
{
hintsLabel.SetTextAsync("Modbus未初始化");
return;
}
_CancellationTokenSource.Token.ThrowIfCancellationRequested(); _CancellationTokenSource.Token.ThrowIfCancellationRequested();
hintsLabel.SetTextAsync( "正在读取温湿度数据..."+DateTime.Now); 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="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"] [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="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="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="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://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/Video/VideoPlayer.cs" id="31_0moq5"]
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/Form/FormBuilder.cs" id="37_pcw20"] [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"] [sub_resource type="Resource" id="Resource_flu4x"]
script = ExtResource("39_p2ycf") script = ExtResource("39_p2ycf")
[sub_resource type="Resource" id="Resource_0cbl3"]
script = ExtResource("39_p2ycf")
[sub_resource type="Resource" id="Resource_l4b2n"] [sub_resource type="Resource" id="Resource_l4b2n"]
script = ExtResource("41_48x07") 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("..") templateBuilderPath = NodePath("..")
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/LineEdit") 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/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/Button") 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"] [sub_resource type="Resource" id="Resource_qa6b3"]
script = ExtResource("39_p2ycf") script = ExtResource("39_p2ycf")
@ -92,6 +98,9 @@ script = ExtResource("39_p2ycf")
script = ExtResource("42_2r83e") script = ExtResource("42_2r83e")
handleEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/LineEdit") 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") 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"] [sub_resource type="Resource" id="Resource_3wa3y"]
script = ExtResource("39_d5jaq") script = ExtResource("39_d5jaq")
@ -136,8 +145,8 @@ layout_mode = 2
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
script = ExtResource("3_sfip0") 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/自动注册标识")] 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/温湿度传感器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板生成器"), NodePath("Horizontal Layout/内容/MarginContainer/标识模板注册器"), NodePath("Horizontal Layout/内容/MarginContainer/自动注册标识")] 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"] [node name="Horizontal Layout" type="HBoxContainer" parent="Layout/UX Window Service"]
layout_mode = 2 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")] [node name="NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识更新/Layout/HBoxContainer/VBoxContainer2/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12 theme_override_constants/separation = 12
script = ExtResource("14_q0cb2") script = ExtResource("14_q0cb2")
emptyHints = NodePath("Label2") emptyHints = NodePath("Label2")
@ -1006,7 +1016,14 @@ layout_mode = 2
theme_type_variation = &"HeaderSmall" theme_type_variation = &"HeaderSmall"
text = "标识码:" 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 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
theme_type_variation = &"HeaderSmall" theme_type_variation = &"HeaderSmall"
@ -1315,6 +1332,14 @@ layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = "列表" 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"] [node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 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")] [node name="Index-NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12 theme_override_constants/separation = 12
script = ExtResource("14_q0cb2") script = ExtResource("14_q0cb2")
emptyHints = NodePath("../../../../../标识模板/VBoxContainer/HBoxContainer/VBoxContainer3/ScrollContainer/NodeBuilder/Label2") emptyHints = NodePath("Label2")
template = ExtResource("14_pcoc2") 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")] [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 layout_mode = 2
text = "oops,没有找到模板,快去创建吧!" 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"] [node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer"]
visible = false visible = false
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 64 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 layout_mode = 2
size_flags_horizontal = 3 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 layout_mode = 2
size_flags_vertical = 3 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 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = "表单" 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 visible = false
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HSeparator_8px" 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 layout_mode = 2
size_flags_vertical = 3 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 layout_mode = 2
size_flags_horizontal = 3 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 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 layout_mode = 2
theme_override_constants/margin_left = 16 theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16 theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16 theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 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 layout_mode = 2
theme_override_constants/separation = 8 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 layout_mode = 2
text = "模板名称:" 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 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
placeholder_text = "新的标识注册模板" 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 layout_mode = 2
text = "保存新的名称" 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 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
script = ExtResource("14_q0cb2") 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="add-button" type="Button" 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/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"]
layout_mode = 2 layout_mode = 2
text = "添加属性" 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 layout_mode = 2
bbcode_enabled = true bbcode_enabled = true
text = "等待操作中" text = "等待操作中"
fit_content = true 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 layout_mode = 2
text = "保存" text = "保存"
[node name="标识模板注册器" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"] [node name="标识模板注册器" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"]
visible = false
layout_mode = 2 layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器" instance=ExtResource("13_7vm0l")] [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" theme_type_variation = &"HeaderLarge"
text = "列表" 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"] [node name="ScrollContainer" type="ScrollContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 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")] [node name="Index-NodeBuilder" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer" node_paths=PackedStringArray("emptyHints")]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 12 theme_override_constants/separation = 12
script = ExtResource("14_q0cb2") script = ExtResource("14_q0cb2")
emptyHints = NodePath("../../../../../标识模板/VBoxContainer/HBoxContainer/VBoxContainer3/ScrollContainer/NodeBuilder/Label2") emptyHints = NodePath("Label2")
template = ExtResource("14_pcoc2") 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")] [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 layout_mode = 2
text = "oops,没有找到模板,快去创建吧!" 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"] [node name="VSeparator" type="VSeparator" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer"]
visible = false visible = false
layout_mode = 2 layout_mode = 2
@ -1605,32 +1618,23 @@ layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
script = ExtResource("14_q0cb2") 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 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"] [node name="Label3" type="Label" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderLarge" theme_type_variation = &"HeaderLarge"
text = "引用标识" 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"] [node name="add-button" type="Button" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer"]
layout_mode = 2 layout_mode = 2
text = "添加引用" text = "添加引用"
@ -1646,6 +1650,7 @@ layout_mode = 2
text = "注册" text = "注册"
[node name="自动注册标识" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"] [node name="自动注册标识" type="VBoxContainer" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer"]
visible = false
layout_mode = 2 layout_mode = 2
[node name="标题栏Template" parent="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/自动注册标识" instance=ExtResource("13_7vm0l")] [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="."] [node name="标识解析服务" type="Node" parent="."]
script = ExtResource("3_xbtmk") 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") script = ExtResource("16_14syv")
service = NodePath("../标识解析服务") service = NodePath("../标识解析服务")
searchEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/SearchEdit") searchEdit = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/SearchEdit")
searchCandidateContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/PanelContainer/Control") searchCandidateContainer = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/Search/PanelContainer/Control")
searchButtonVariation = SubResource("Resource_ktam2") searchButtonVariation = SubResource("Resource_ktam2")
searchEditPadding = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识解析/占位符") 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]") 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]") 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/标识解析数据") 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") 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") 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") script = ExtResource("38_fhmdw")
template = SubResource("Resource_flu4x") template = SubResource("Resource_flu4x")
indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder") indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder")
formBuilder = NodePath("FormBuilder") 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")] [node name="FormBuilder" type="Node" parent="标识模板生成器" node_paths=PackedStringArray("nodeBuilder", "submitButton", "logLabel")]
script = ExtResource("37_pcw20") script = ExtResource("37_pcw20")
formWeaver = SubResource("Resource_l4b2n") formWeaver = SubResource("Resource_l4b2n")
nodeBuilder = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Node Builder") 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/VBoxContainer2/Button") submitButton = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/save_template-button")
logLabel = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/VBoxContainer2/LogLabel") 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") script = ExtResource("38_fhmdw")
template = SubResource("Resource_qa6b3") template = SubResource("Resource_qa6b3")
indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder") indexBuilder = NodePath("../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer3/ScrollContainer/Index-NodeBuilder")
formBuilder = NodePath("FormBuilder") 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")] [node name="FormBuilder" type="Node" parent="标识模板注册器" node_paths=PackedStringArray("nodeBuilder", "submitButton", "logLabel")]
script = ExtResource("37_pcw20") 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/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/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/温湿度传感器/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/标识模板注册器/HBoxContainer/VBoxContainer3/Button" to="标识模板注册器" method="Rebuild"]
[connection signal="pressed" from="Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/自动注册标识/HFlowContainer/VBoxContainer/start-button" to="自动注册标识" method="Register"] [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日 ### 新增issue date:2023年7月18日
- [ ] 添加完成的引导,告诉用户下一步具体该点击什么按钮 - [ ] `动画`添加基于`标识节点`连线的标识解析动画
- [ ] 添加可以删除模板的按钮 - [x] `引导`编辑标识模板名称后,需要点击保存
- [ ] 添加模板后自动进入新创建的模板 - [x] `引导`强调在`标识注册`中需要点击刷新按钮
- [ ] 修复NodeBuilder的空提示 - [ ] `引导`添加完整的引导,告诉用户下一步具体该点击什么按钮
- [ ] 添加根据标识模板搜索已注册的标识的功能 - [x] `注册标识`修复点击引用标识无效的问题
- [ ] 修复标识解析的搜索框`搜索按钮`无效的问题 - [x] `标识模板`修复`类型下拉框`中默认值为空的问题
- [x] `标识模板`添加可以删除模板的按钮
- [x] `标识模板`添加模板后自动进入新创建的模板
- [x] `内部`修复NodeBuilder的空提示
- [x] `标识解析`添加根据标识模板搜索已注册的标识的功能
- [x] `标识解析`修复标识解析的搜索框`搜索按钮`无效的问题
### 完成部分功能 ### 完成部分功能
### 创建文档 ### 创建文档

View File

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