iFactory.Godot/Mods/工业数据采集与分析应用分享/Scripts/IDIS_UpdateService.cs

84 lines
2.0 KiB
C#
Raw Normal View History

using Godot;
using System;
2023-07-12 12:11:10 +08:00
using System.Collections.Generic;
using System.Linq;
using BITKit;
namespace BITFactory;
public partial class IDIS_UpdateService : Node
{
[ExportCategory("Service")]
[Export] private IDIS_Service service;
[Export] private IDIS_TemplateService templateService;
[ExportCategory("UI 绑定")]
[Export] private NodeBuilder indexBuilder;
[Export] private NodeBuilder templateBuilder;
[Export] private LineEdit handleEdit;
2023-07-12 12:11:10 +08:00
[Export] private Button submitButton;
[Export] private RichTextLabel hintsLabel;
private ButtonGroup _buttonGroup;
2023-07-12 12:11:10 +08:00
private readonly Dictionary<string,LineEdit> dataEdits = new();
public override void _Ready()
{
_buttonGroup = new ButtonGroup();
2023-07-12 12:11:10 +08:00
submitButton.Pressed += Submit;
submitButton.Disabled = true;
Refresh();
}
private void Refresh()
{
templateBuilder.Clear();
indexBuilder.Clear();
foreach (var x in templateService.templates)
{
var container = indexBuilder.Build<UXContainer>();
container.button.Text = x.TemplateName;
container.button.ButtonPressed = true;
container.button.ButtonGroup = _buttonGroup;
container.button.Pressed +=()=> Entry(x);
}
}
private void Entry(IDIS_Template template)
{
templateBuilder.Clear();
2023-07-12 12:11:10 +08:00
dataEdits.Clear();
foreach (var x in template.Formats)
{
var container = templateBuilder.Build<UXContainer>();
container.Text = x.format;
container.lineEdit.PlaceholderText = x.hint;
2023-07-12 12:11:10 +08:00
dataEdits.TryAdd(x.format, container.lineEdit);
}
submitButton.Disabled = false;
}
private void Submit()
{
if (string.IsNullOrEmpty(handleEdit.Text))
{
hintsLabel.Text="请填写标识码";
return;
}
var handle = handleEdit.Text;
var values = new Dictionary<string, string>(
dataEdits
.Where(x=>string.IsNullOrEmpty(x.Value.Text) is false)
.Select(x => new KeyValuePair<string, string>(x.Key, x.Value.Text))
);
foreach (var x in values)
{
service.Update(handle, x.Key, x.Value);
}
2023-07-12 12:11:10 +08:00
hintsLabel.Text=$"更新成功,已更新{values.Count}个值"+DateTime.Now;
}
}