index.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { register } from "@antv/x6-react-shape";
  2. import { NodeType } from "@/enum";
  3. import Start from "./Start";
  4. import And from "./And";
  5. import AutoHandle from "./AutoHandle";
  6. import Decision from "./Decision";
  7. import End from "./End";
  8. import Handle from "./Handle";
  9. import Link from "./Link";
  10. import PopoverNode from "./PopoverNode";
  11. // 通用连接桩
  12. const ports = {
  13. groups: {
  14. top: {
  15. position: 'top',
  16. attrs: {
  17. circle: {
  18. r: 4,
  19. magnet: true,
  20. stroke: '#5F95FF',
  21. strokeWidth: 1,
  22. fill: '#fff',
  23. style: {
  24. visibility: 'hidden',
  25. },
  26. },
  27. },
  28. },
  29. right: {
  30. position: 'right',
  31. attrs: {
  32. circle: {
  33. r: 4,
  34. magnet: true,
  35. stroke: '#5F95FF',
  36. strokeWidth: 1,
  37. fill: '#fff',
  38. style: {
  39. visibility: 'hidden',
  40. },
  41. },
  42. },
  43. },
  44. bottom: {
  45. position: 'bottom',
  46. attrs: {
  47. circle: {
  48. r: 4,
  49. magnet: true,
  50. stroke: '#5F95FF',
  51. strokeWidth: 1,
  52. fill: '#fff',
  53. style: {
  54. visibility: 'hidden',
  55. },
  56. },
  57. },
  58. },
  59. left: {
  60. position: 'left',
  61. attrs: {
  62. circle: {
  63. r: 4,
  64. magnet: true,
  65. stroke: '#5F95FF',
  66. strokeWidth: 1,
  67. fill: '#fff',
  68. style: {
  69. visibility: 'hidden',
  70. },
  71. },
  72. },
  73. },
  74. },
  75. items: [
  76. {
  77. group: 'top',
  78. },
  79. {
  80. group: 'right',
  81. },
  82. {
  83. group: 'bottom',
  84. },
  85. {
  86. group: 'left',
  87. },
  88. ],
  89. }
  90. export const nodes = [
  91. { name: "start-node", component: Start, type: NodeType.START, data: { name: '开始'} },
  92. { name: "and-node", component: And, type: NodeType.AND, data: { name: '与'} },
  93. { name: "autohandle-node", component: AutoHandle, type: NodeType.AUTO_PROCESS, data: { name: '自动处理'} },
  94. { name: "decision-node", component: Decision, type: NodeType.DECISION, data: { name: '判断'} },
  95. { name: "end-node", component: End, type: NodeType.END, data: { name: '结束'} },
  96. { name: "handle-node", component: Handle, type: NodeType.PROCESS, data: { name: '处理'} },
  97. { name: "link-node", component: Link, type: NodeType.LINK, data: { name: '连接'} },
  98. ];
  99. nodes.forEach((node) => {
  100. register({
  101. shape: node.name,
  102. width: 300,
  103. height: 108,
  104. effect: ["data"],
  105. component: node.component,
  106. ports: {...ports}
  107. });
  108. });
  109. register({
  110. shape: 'menu-popover',
  111. width: 304,
  112. height: 184,
  113. component: PopoverNode
  114. });