using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TeamAAS.FlowEditor;
using TeamAAS.FlowEditor.Models;
namespace TeamAAS.FlowEngine.Execution
{
[System.Serializable]
///
/// 流程 Tab 项
///
public class FlowTabItem : TeamAAS.BindableBase
{
private string _name;
[System.ComponentModel.DisplayName("1.流程名称")]
[System.ComponentModel.Category("I.基本信息")]
[System.ComponentModel.Description("流程的显示名称")]
public string Name
{
get => _name;
set => SetProperty(ref _name, value);
}
private bool _isActive;
[System.ComponentModel.Browsable(false)]
public bool IsActive
{
get => _isActive;
set => SetProperty(ref _isActive, value);
}
[System.ComponentModel.Browsable(false)]
[field: NonSerialized]
public FlowGraph Graph { get; set; }
[System.ComponentModel.Browsable(false)]
[field: NonSerialized]
public FlowEditorViewModel EditorVm { get; set; }
private int _loopCount = 1;
[System.ComponentModel.DisplayName("2.循环次数")]
[System.ComponentModel.Category("I.基本信息")]
[System.ComponentModel.Description("循环次数。-1=无限循环, 0=跳过不执行, 其他=按次数执行")]
public int LoopCount
{
get => _loopCount;
set => SetProperty(ref _loopCount, value);
}
private TriggerType _triggerType = TriggerType.MainFlow;
[System.ComponentModel.DisplayName("3.触发类型")]
[System.ComponentModel.Category("I.基本信息")]
[System.ComponentModel.Description("主流程触发:随主流程自动执行。事件触发:需外部事件触发。")]
public TriggerType TriggerType
{
get => _triggerType;
set => SetProperty(ref _triggerType, value);
}
private int _loopIntervalMs = 10;
[System.ComponentModel.DisplayName("4.循环间隔(ms)")]
[System.ComponentModel.Category("I.基本信息")]
[System.ComponentModel.Description("循环运行模式下,单轮流程结束后等待多少毫秒再开始下一轮。最小1ms,防止空流程卡CPU。")]
public int LoopIntervalMs
{
get => _loopIntervalMs;
set => SetProperty(ref _loopIntervalMs, value < 1 ? 1 : value);
}
[System.ComponentModel.Browsable(false)]
[field: NonSerialized]
public Dictionary ModuleOutputs { get; set; } = new Dictionary();
private double _canvasWidth = 5000;
[System.ComponentModel.DisplayName("1.画布宽度")]
[System.ComponentModel.Category("II.画布设置")]
[System.ComponentModel.Description("画布的宽度(像素)")]
public double CanvasWidth
{
get => _canvasWidth;
set
{
if (SetProperty(ref _canvasWidth, value))
EditorVm.CanvasWidth = value;
}
}
private double _canvasHeight = 3500;
[System.ComponentModel.DisplayName("2.画布高度")]
[System.ComponentModel.Category("II.画布设置")]
[System.ComponentModel.Description("画布的高度(像素)")]
public double CanvasHeight
{
get => _canvasHeight;
set
{
if (SetProperty(ref _canvasHeight, value))
EditorVm.CanvasHeight = value;
}
}
public FlowTabItem(string name)
{
_name = name;
Graph = new FlowGraph { GraphName = name };
EditorVm = new FlowEditorViewModel(Graph);
EditorVm.CanvasWidth = _canvasWidth;
EditorVm.CanvasHeight = _canvasHeight;
}
}
}