2023-02-28 23:04:16 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
2023-03-05 23:22:34 +08:00
|
|
|
|
using AIStudio.Wpf.DiagramDesigner;
|
2023-02-28 23:04:16 +08:00
|
|
|
|
using AIStudio.Wpf.DiagramModels;
|
|
|
|
|
|
using AIStudio.Wpf.DiagramModels.ViewModels;
|
|
|
|
|
|
using AIStudio.Wpf.Flowchart.ViewModels;
|
|
|
|
|
|
|
|
|
|
|
|
namespace AIStudio.Wpf.Flowchart.Models
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
///
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <seealso cref="AIStudio.Util.DiagramEntity.DiagramNode" />
|
|
|
|
|
|
public class FlowchartNode : DiagramNode
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the kind.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <value>
|
|
|
|
|
|
/// The kind.
|
|
|
|
|
|
/// </value>
|
|
|
|
|
|
public NodeKinds Kind
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the user ids.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <value>
|
|
|
|
|
|
/// The user ids.
|
|
|
|
|
|
/// </value>
|
|
|
|
|
|
public IEnumerable<string> UserIds
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the role ids.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <value>
|
|
|
|
|
|
/// The role ids.
|
|
|
|
|
|
/// </value>
|
|
|
|
|
|
public IEnumerable<string> RoleIds
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the type of the act.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <value>
|
|
|
|
|
|
/// The type of the act.
|
|
|
|
|
|
/// </value>
|
|
|
|
|
|
public string ActType
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-03-10 12:09:13 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Gets or sets the color.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <value>
|
|
|
|
|
|
/// The color.
|
|
|
|
|
|
/// </value>
|
|
|
|
|
|
public string StatusColor
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-03-05 23:22:34 +08:00
|
|
|
|
public override DiagramItemViewModel ToNodel(IDiagramViewModel diagramViewModel)
|
2023-02-28 23:04:16 +08:00
|
|
|
|
{
|
|
|
|
|
|
FlowNode flowNode = null;
|
|
|
|
|
|
switch (Kind)
|
|
|
|
|
|
{
|
|
|
|
|
|
case NodeKinds.Start:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
flowNode = new StartFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
case NodeKinds.End:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
flowNode = new EndFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case NodeKinds.Decide:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
flowNode = new DecideFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case NodeKinds.COBegin:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
flowNode = new COBeginFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case NodeKinds.COEnd:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
flowNode = new COEndFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case NodeKinds.Middle:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
var flowchartNodelModel = new MiddleFlowNode(diagramViewModel);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
flowNode = flowchartNodelModel;
|
|
|
|
|
|
flowchartNodelModel.UserIds = UserIds?.ToList();
|
|
|
|
|
|
flowchartNodelModel.RoleIds = RoleIds?.ToList();
|
|
|
|
|
|
flowchartNodelModel.ActType = ActType;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
default:
|
|
|
|
|
|
{
|
2023-03-05 23:22:34 +08:00
|
|
|
|
var flowNodelModel = new FlowNode(diagramViewModel, NodeKinds.Normal);
|
2023-02-28 23:04:16 +08:00
|
|
|
|
flowNode = flowNodelModel;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-03-10 12:09:13 +08:00
|
|
|
|
flowNode.StatusColor = StatusColor;
|
2023-02-28 23:04:16 +08:00
|
|
|
|
flowNode.Kind = Kind;
|
|
|
|
|
|
|
|
|
|
|
|
return flowNode;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|