bug fixed
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
@@ -28,7 +35,7 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
|
||||
|
||||
var myIndex = _values.Count;
|
||||
_values.Add(data);
|
||||
|
||||
|
||||
label.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
|
||||
typeLabel.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
|
||||
valueEdit.SizeFlagsHorizontal = Control.SizeFlags.ExpandFill;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
@@ -80,9 +90,11 @@ public partial class IDIS_SearchService : Node
|
||||
searchEditPadding.Hide();
|
||||
|
||||
handleLabel.Text = query.Handle;
|
||||
|
||||
currentHandle = query.Handle;
|
||||
|
||||
createTimeLabel.Text = query.CreateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
createTimeLabel.Text = query.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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())}";
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user