21224: restored mstoolbar single input functionality Arvados-DCO-1.1-Signed-off-by...
[arvados.git] / services / workbench2 / src / lib / cwl-svg / graph / io-port.ts
1 export class IOPort {
2
3     static radius = 7;
4
5     /**
6      * @param x1
7      * @param y1
8      * @param x2
9      * @param y2
10      * @param {"right" | "left" | string} forceDirection
11      * @returns {string}
12      */
13     public static makeConnectionPath(x1: any, y1: any, x2: any, y2: any, forceDirection: "right" | "left" | string = "right"): string | undefined {
14
15         if (!forceDirection) {
16             return `M ${x1} ${y1} C ${(x1 + x2) / 2} ${y1} ${(x1 + x2) / 2} ${y2} ${x2} ${y2}`;
17         } else if (forceDirection === "right") {
18             const outDir = x1 + Math.abs(x1 - x2) / 2;
19             const inDir  = x2 - Math.abs(x1 - x2) / 2;
20
21             return `M ${x1} ${y1} C ${outDir} ${y1} ${inDir} ${y2} ${x2} ${y2}`;
22         } else if (forceDirection === "left") {
23             const outDir = x1 - Math.abs(x1 - x2) / 2;
24             const inDir  = x2 + Math.abs(x1 - x2) / 2;
25
26             return `M ${x1} ${y1} C ${outDir} ${y1} ${inDir} ${y2} ${x2} ${y2}`;
27         }
28
29         return undefined;
30     }
31 }