index.d.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * 路径插件,此插件支持获取绘制的图中所有的路径。
  3. * 需要指定开始节点类型。
  4. */
  5. import LogicFlow from '@logicflow/core';
  6. declare type Path = {
  7. routeId: string;
  8. name: string;
  9. elements: string[];
  10. type: number;
  11. };
  12. declare type RawPath = Path & {
  13. similarElement: RawPath;
  14. weight: number;
  15. };
  16. declare class FlowPath {
  17. lf: LogicFlow;
  18. pathes: RawPath[];
  19. startNodeType: string;
  20. static pluginName: string;
  21. constructor({ lf }: {
  22. lf: any;
  23. });
  24. setPathes(pathes: any): void;
  25. getPathes(): any[];
  26. private findPathElements;
  27. /**
  28. * 设置路径id
  29. * 如果存在原始路径Id, 则需要比较新路径是否在原始路径中存在相似路径
  30. * 如果有,则尽量使用原始路径。
  31. * 相似路径
  32. * 1. 如果所有的节点都相同,则必定为同一路径。(包括顺序不同)
  33. * 2. 如果新路径比原来路径少了或者多了部分节点,则记录为相似路径。基于不同的差异,标记不同的权重。
  34. * 3. 基于新路径在旧路径占用权限,设置新路径Id.
  35. * 4. 如果某一条旧路径被多条新路径标记为相同的权重,则这两条新路径都使用新Id.
  36. */
  37. private getNewPathes;
  38. private similar2Path;
  39. private getNewId;
  40. /**
  41. * 判断是否为循环路径
  42. * 由于前面进行了特殊处理,将循环部分单独提出来作为路径
  43. * 所有循环路径必定开始节点等于结束节点。
  44. */
  45. private isLoopPath;
  46. }
  47. export { FlowPath, };