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

@@ -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;
@@ -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;
}
}

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;
@@ -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);
}
}

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);