FlowChart.razor.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using Microsoft.AspNetCore.Components;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Dynamic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using wispro.sp.entity.workflowDefine;
  9. using wispro.sp.share.Utility;
  10. namespace wispro.sp.web.Components
  11. {
  12. public partial class FlowChart
  13. {
  14. share.Utility.FlowChartUtility flowChartUtility;
  15. [Parameter]
  16. public double TitleHeight { get; set; } = 100;
  17. [Parameter]
  18. public double ChartWidth { get; set; } = 1200;
  19. [Parameter]
  20. public double ChartHeight { get; set; } = 900;
  21. [Parameter]
  22. public double rectWidth { get; set; } = 150;
  23. [Parameter]
  24. public double rectHeight { get; set; } = 60;
  25. [Parameter]
  26. public double initRadius { get; set; } = 20;
  27. [Parameter]
  28. public double EndRadius { get; set; } = 20;
  29. [Parameter]
  30. public double hSeparation { get; set; } = 40;
  31. [Parameter]
  32. public string StepShapeColor { get; set; } = "green";
  33. [Parameter]
  34. public string EndShapColor { get; set; } = "gray";
  35. int rectFontSize { get; set; } = 18;
  36. [Parameter]
  37. public List<entity.workflowDefine.Step> Steps { get; set; }
  38. [Parameter]
  39. public List<entity.workflowDefine.TrasferCondition> Transfers { get; set; }
  40. [Parameter]
  41. public List<entity.workflowDefine.Action> Actions { get; set; }
  42. [Parameter]
  43. public entity.workflowDefine.Workflow workflow { get; set; }
  44. protected override void OnInitialized()
  45. {
  46. Refresh();
  47. }
  48. public void Refresh()
  49. {
  50. flowChartUtility = new share.Utility.FlowChartUtility();
  51. flowChartUtility.workflow = workflow;
  52. flowChartUtility.Actions = Actions;
  53. flowChartUtility.Steps = Steps;
  54. flowChartUtility.Transfers = Transfers;
  55. flowChartUtility.hSeparation = hSeparation;
  56. flowChartUtility.initRadius = initRadius;
  57. flowChartUtility.EndShapColor = EndShapColor;
  58. flowChartUtility.EndRadius = EndRadius;
  59. flowChartUtility.ChartHeight = ChartHeight;
  60. flowChartUtility.ChartWidth = ChartWidth;
  61. flowChartUtility.rectHeight = rectHeight;
  62. flowChartUtility.rectWidth = rectWidth;
  63. flowChartUtility.Refresh();
  64. StateHasChanged();
  65. }
  66. void InitAction()
  67. {
  68. }
  69. #region 单击/双击事件
  70. [Parameter]
  71. public EventCallback<entity.workflowDefine.Step> OnClickStep { get; set; }
  72. [Parameter]
  73. public EventCallback<entity.workflowDefine.Action> OnClickAction{ get; set; }
  74. [Parameter]
  75. public EventCallback<entity.workflowDefine.TrasferCondition> OnClickTransfer { get; set; }
  76. [Parameter]
  77. public EventCallback<entity.workflowDefine.Step> OnDoubleClickStep { get; set; }
  78. [Parameter]
  79. public EventCallback<entity.workflowDefine.Action> OnDoubleClickAction { get; set; }
  80. [Parameter]
  81. public EventCallback<entity.workflowDefine.TrasferCondition> OnDoubleClickTransfer { get; set; }
  82. public dynamic SelectedObject;
  83. void ClickNode(shapeNode node)
  84. {
  85. SelectedObject = node.NodeObject;
  86. flowChartUtility.SelectedShape = node;
  87. StateHasChanged();
  88. if (node.NodeObject is entity.workflowDefine.Step)
  89. {
  90. if (OnClickStep.HasDelegate)
  91. {
  92. OnClickStep.InvokeAsync((entity.workflowDefine.Step)node.NodeObject);
  93. }
  94. }
  95. if (node.NodeObject is entity.workflowDefine.Action)
  96. {
  97. if (OnClickAction.HasDelegate)
  98. {
  99. OnClickAction.InvokeAsync((entity.workflowDefine.Action)node.NodeObject);
  100. }
  101. }
  102. }
  103. void DoubleClickNode(shapeNode node)
  104. {
  105. SelectedObject = node.NodeObject;
  106. flowChartUtility.SelectedShape = node;
  107. Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(node.NodeObject));
  108. if (node.NodeObject is entity.workflowDefine.Step)
  109. {
  110. if (OnDoubleClickStep.HasDelegate)
  111. {
  112. OnDoubleClickStep.InvokeAsync((entity.workflowDefine.Step)node.NodeObject);
  113. }
  114. }
  115. if (node.NodeObject is entity.workflowDefine.Action)
  116. {
  117. if (OnDoubleClickAction.HasDelegate)
  118. {
  119. OnDoubleClickAction.InvokeAsync((entity.workflowDefine.Action)node.NodeObject);
  120. }
  121. }
  122. StateHasChanged();
  123. }
  124. void ClickTrasfer(entity.workflowDefine.TrasferCondition trasferCondition)
  125. {
  126. SelectedObject = trasferCondition;
  127. flowChartUtility.SelectedShape = null;
  128. if (OnClickTransfer.HasDelegate)
  129. {
  130. OnClickTransfer.InvokeAsync(trasferCondition);
  131. }
  132. }
  133. void DoubleClickTrasfer(entity.workflowDefine.TrasferCondition trasferCondition)
  134. {
  135. SelectedObject = trasferCondition;
  136. flowChartUtility.SelectedShape = null;
  137. if (OnDoubleClickTransfer.HasDelegate)
  138. {
  139. OnDoubleClickTransfer.InvokeAsync(trasferCondition);
  140. }
  141. }
  142. #endregion
  143. }
  144. }