From 14ef775ba26846ba889ee9b8314d893eaeee7924 Mon Sep 17 00:00:00 2001 From: CTomlyn Date: Fri, 28 Jun 2024 22:16:42 -0700 Subject: [PATCH] #2033 Support new link line types (part 2) (#2042) Signed-off-by: CTomlyn --- .../constants/canvas-constants.js | 5 +- .../src/common-canvas/svg-canvas-renderer.js | 11 +- .../common-canvas/svg-canvas-utils-links.js | 6 +- .../src/object-model/config-utils.js | 1 + .../src/object-model/layout-dimensions.js | 57 +- .../harness/cypress/e2e/canvas/links.cy.js | 34 +- canvas_modules/harness/src/client/App.js | 35 +- .../all-ports/all-ports-canvas.jsx | 17 +- .../all-ports/all-ports-palette.json | 64 +- .../custom-canvases/all-ports/all-ports.scss | 6 +- .../network/network-canvas.jsx | 89 ++ .../custom-canvases/network/network-flow.json | 878 ++++++++++++++ .../network/network-palette.json | 138 +++ .../custom-canvases/network/network.png | Bin 0 -> 217569 bytes .../custom-canvases/network/network.scss | 71 ++ .../parallax/parallax-canvas.jsx | 105 ++ .../parallax/parallax-flow.json | 1077 +++++++++++++++++ .../parallax/parallax-palette.json | 898 ++++++++++++++ .../custom-canvases/parallax/parallax.scss | 101 ++ .../sidepanel/canvas/sidepanel-canvas.jsx | 106 +- .../harness/src/client/constants/constants.js | 13 +- .../harness/src/styles/custom-canvases.scss | 4 +- docs/pages/01.01.02-links.md | 4 +- docs/pages/03.02.01-canvas-config.md | 26 +- docs/pages/03.06.01-node-customization.md | 165 +-- .../assets/cc-link-multi-ports-quadrants.png | Bin 65996 -> 74860 bytes .../assets/cc-node-port-custom-resize.png | Bin 0 -> 9709 bytes docs/pages/assets/cc-node-port-custom.png | Bin 0 -> 8835 bytes 28 files changed, 3705 insertions(+), 206 deletions(-) create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/network/network-canvas.jsx create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/network/network-flow.json create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/network/network-palette.json create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/network/network.png create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/network/network.scss create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-canvas.jsx create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-flow.json create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-palette.json create mode 100644 canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax.scss create mode 100644 docs/pages/assets/cc-node-port-custom-resize.png create mode 100644 docs/pages/assets/cc-node-port-custom.png diff --git a/canvas_modules/common-canvas/src/common-canvas/constants/canvas-constants.js b/canvas_modules/common-canvas/src/common-canvas/constants/canvas-constants.js index 11400d61ab..cd3a49858e 100644 --- a/canvas_modules/common-canvas/src/common-canvas/constants/canvas-constants.js +++ b/canvas_modules/common-canvas/src/common-canvas/constants/canvas-constants.js @@ -42,8 +42,11 @@ export const LINK_TYPE_ELBOW = "Elbow"; export const LINK_TYPE_STRAIGHT = "Straight"; export const LINK_TYPE_PARALLAX = "Parallax"; +// Values for enableLinkMethod config parameter +export const LINK_METHOD_PORTS = "Ports"; +export const LINK_METHOD_FREEFORM = "Freeform"; + // Values for enableLinkDirection config parameter -export const LINK_DIR_FREEFORM = "Freeform"; export const LINK_DIR_LEFT_RIGHT = "LeftRight"; export const LINK_DIR_RIGHT_LEFT = "RightLeft"; export const LINK_DIR_TOP_BOTTOM = "TopBottom"; diff --git a/canvas_modules/common-canvas/src/common-canvas/svg-canvas-renderer.js b/canvas_modules/common-canvas/src/common-canvas/svg-canvas-renderer.js index bde3feaf20..50a4dd71db 100644 --- a/canvas_modules/common-canvas/src/common-canvas/svg-canvas-renderer.js +++ b/canvas_modules/common-canvas/src/common-canvas/svg-canvas-renderer.js @@ -33,7 +33,8 @@ import { escape as escapeText, forOwn, get } from "lodash"; import { ASSOC_RIGHT_SIDE_CURVE, ASSOCIATION_LINK, NODE_LINK, COMMENT_LINK, ASSOC_VAR_CURVE_LEFT, ASSOC_VAR_CURVE_RIGHT, ASSOC_VAR_DOUBLE_BACK_RIGHT, LINK_TYPE_ELBOW, LINK_TYPE_STRAIGHT, - LINK_DIR_LEFT_RIGHT, LINK_DIR_RIGHT_LEFT, LINK_DIR_TOP_BOTTOM, LINK_DIR_BOTTOM_TOP, LINK_DIR_FREEFORM, + LINK_DIR_LEFT_RIGHT, LINK_DIR_RIGHT_LEFT, LINK_DIR_TOP_BOTTOM, LINK_DIR_BOTTOM_TOP, + LINK_METHOD_FREEFORM, LINK_SELECTION_NONE, LINK_SELECTION_HANDLES, LINK_SELECTION_DETACHABLE, CONTEXT_MENU_BUTTON, DEC_LINK, DEC_NODE, EDIT_ICON, NODE_MENU_ICON, SUPER_NODE_EXPAND_ICON, PORT_OBJECT_IMAGE, @@ -4514,7 +4515,7 @@ export default class SVGCanvasRenderer { let linksArray = []; - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM) { + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM) { this.updateFreeformLinksForNodes(); } @@ -4616,7 +4617,7 @@ export default class SVGCanvasRenderer { coords.srcDir = this.getSrcDirForDetachedLink(link, coords.x1, coords.y1); } else { - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM) { + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM) { const endPos = { x: link.trgPos.x_pos, y: link.trgPos.y_pos }; const startPos = this.linkUtils.getNewFreeformNodeLinkStartPos(srcObj, endPos, link.srcOriginInfo); coords.x1 = startPos.x; @@ -4646,7 +4647,7 @@ export default class SVGCanvasRenderer { coords.trgDir = this.getTrgDirForDetachedLink(link, coords.x2, coords.y2); } else { - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM) { + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM) { const endPos = { x: link.srcPos.x_pos, y: link.srcPos.y_pos }; const startPos = this.linkUtils.getNewFreeformNodeLinkStartPos(trgNode, endPos, link.trgOriginInfo); coords.x2 = startPos.x; @@ -5174,7 +5175,7 @@ export default class SVGCanvasRenderer { getArrowHeadTransform(link) { let angle = 0; - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM) { + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM) { angle = this.getAngleBasedForFreeformLink(link); } else { diff --git a/canvas_modules/common-canvas/src/common-canvas/svg-canvas-utils-links.js b/canvas_modules/common-canvas/src/common-canvas/svg-canvas-utils-links.js index 6ffba8c91e..58d5e8efa8 100644 --- a/canvas_modules/common-canvas/src/common-canvas/svg-canvas-utils-links.js +++ b/canvas_modules/common-canvas/src/common-canvas/svg-canvas-utils-links.js @@ -21,7 +21,7 @@ import CanvasUtils from "./common-canvas-utils.js"; import { ASSOC_RIGHT_SIDE_CURVE, ASSOCIATION_LINK, COMMENT_LINK, NODE_LINK, ASSOC_VAR_CURVE_LEFT, ASSOC_VAR_CURVE_RIGHT, ASSOC_VAR_DOUBLE_BACK_LEFT, ASSOC_VAR_DOUBLE_BACK_RIGHT, LINK_TYPE_ELBOW, LINK_TYPE_STRAIGHT, LINK_TYPE_PARALLAX, - LINK_DIR_FREEFORM, + LINK_METHOD_FREEFORM, NORTH, SOUTH, EAST, WEST } from "./constants/canvas-constants"; @@ -89,7 +89,7 @@ export default class SvgCanvasLinks { getLinkCoords(link, srcObj, srcPortId, trgNode, trgPortId, assocLinkVariation) { let coords = null; if (link.type === NODE_LINK) { - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM) { + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM) { coords = this.getNodeLinkCoordsForFreeform(srcObj, trgNode, link); } else { coords = this.getNodeLinkCoordsForPortsConnection(srcObj, srcPortId, trgNode, trgPortId); @@ -434,7 +434,7 @@ export default class SvgCanvasLinks { const minInitialLine = this.getMinInitialLine(link, drawingNewLinkMinInitialLine); if (link.type === NODE_LINK) { - if (this.canvasLayout.linkDirection === LINK_DIR_FREEFORM && + if (this.canvasLayout.linkMethod === LINK_METHOD_FREEFORM && this.canvasLayout.linkType === LINK_TYPE_STRAIGHT) { return this.getStraightPath(link, minInitialLine); } diff --git a/canvas_modules/common-canvas/src/object-model/config-utils.js b/canvas_modules/common-canvas/src/object-model/config-utils.js index 6e00a61486..7c81e16232 100644 --- a/canvas_modules/common-canvas/src/object-model/config-utils.js +++ b/canvas_modules/common-canvas/src/object-model/config-utils.js @@ -54,6 +54,7 @@ export default class ConfigUtils { enableNodeFormatType: "Horizontal", enableLinkType: "Curve", enableStraightLinksAsFreeform: false, // TODO - Remove in next major release. + enableLinkMethod: "Ports", enableLinkDirection: "LeftRight", enableLinkSelection: LINK_SELECTION_NONE, enableLinkReplaceOnNewConnection: false, diff --git a/canvas_modules/common-canvas/src/object-model/layout-dimensions.js b/canvas_modules/common-canvas/src/object-model/layout-dimensions.js index 017ababa5b..a01ab79fee 100644 --- a/canvas_modules/common-canvas/src/object-model/layout-dimensions.js +++ b/canvas_modules/common-canvas/src/object-model/layout-dimensions.js @@ -15,12 +15,18 @@ */ import { cloneDeep } from "lodash"; -import { LINK_DIR_FREEFORM, LINK_TYPE_STRAIGHT } from "../common-canvas/constants/canvas-constants"; +import { + LINK_METHOD_FREEFORM, + LINK_METHOD_PORTS, + LINK_TYPE_STRAIGHT, + LINK_DIR_LEFT_RIGHT +} from "../common-canvas/constants/canvas-constants"; const portsHorizontalDefaultLayout = { nodeLayout: { - // Default node sizes. The height might be overridden for nodes with more ports - // than will fit in the default size. + // Default node sizes. These dimensions might be overridden for nodes that have + // more ports than will fit in the default size if inputPortAutoPosition is. + // set to true and outputPortAutoPosition is set to true. (See below). defaultNodeWidth: 160, defaultNodeHeight: 40, @@ -126,7 +132,7 @@ const portsHorizontalDefaultLayout = { nodeCornerResizeArea: 10, // What point to draw the data links from and to when enableLinkType is set - // to "Straight" and enableLinkDirection is set to "Freeform". + // to "Straight" and enableLinkMethod is set to "Freeform". // Possible values are "image_center" or "node_center". drawNodeLinkLineFromTo: "node_center", @@ -291,8 +297,12 @@ const portsHorizontalDefaultLayout = { // --------------------------------------------------------------------------- // Layout values for links // --------------------------------------------------------------------------- - // Specifies which direction the nodes will be linked up - linkDirection: "LeftRight", + // Specifies which method the links will use. Either: "Ports" or "Freeform" + linkMethod: LINK_METHOD_PORTS, + + // TODO - this should be changed to be a node layout property called 'portPlacement' + // in the next major release. + linkDirection: LINK_DIR_LEFT_RIGHT, // Whether to display a link line when linked node/comments overlap. For // straight links we don't want to show the link when objects overlap but @@ -423,8 +433,9 @@ const portsHorizontalDefaultLayout = { const portsVerticalDefaultLayout = { nodeLayout: { - // Default node sizes. The height might be overridden for nodes with more ports - // than will fit in the default size. + // Default node sizes. These dimensions might be overridden for nodes that have + // more ports than will fit in the default size if inputPortAutoPosition is. + // set to true and outputPortAutoPosition is set to true. (See below). defaultNodeWidth: 70, defaultNodeHeight: 75, @@ -530,7 +541,7 @@ const portsVerticalDefaultLayout = { nodeCornerResizeArea: 10, // What point to draw the data links from and to when enableLinkType is set - // to "Straight" and enableLinkDirection is set to "Freeform". + // to "Straight" and enableLinkMethod is set to "Freeform". // Possible values are "image_center" or "node_center". drawNodeLinkLineFromTo: "node_center", @@ -695,8 +706,13 @@ const portsVerticalDefaultLayout = { // --------------------------------------------------------------------------- // Layout values for links // --------------------------------------------------------------------------- - // Specifies which direction the nodes will be linked up - linkDirection: "LeftRight", + // Specifies which method the links will use. Either: "Ports" or "Freeform" + linkMethod: LINK_METHOD_PORTS, + + // Specifies the default placement of ports on a node. + // TODO - this should be changed to be a node layout property called 'portPlacement' + // in the next major release. + linkDirection: LINK_DIR_LEFT_RIGHT, // Whether to display a link line when linked node/comments overlap. For // straight links we don't want to show the link when objects overlap but @@ -862,12 +878,14 @@ export default class LayoutDimensions { static overrideCanvasLayout(layout, config, overlayLayout) { // TODO - In a future major release the enableStraightLinksAsFreeform field should be // removed and this ovverride code should be returned to its original behavior where - // config.enableLinkDirection should directly override linkDirection in the canvasLayout. - const linkDirection = (config.enableLinkType === "Straight" && config.enableStraightLinksAsFreeform) - ? "Freeform" - : config.enableLinkDirection; + // config.enableLinkMethod should directly override linkMethod in the canvasLayout. + const linkMethod = (config.enableLinkType === "Straight" && config.enableStraightLinksAsFreeform) + ? LINK_METHOD_FREEFORM + : config.enableLinkMethod; + + const linkDirection = config.enableLinkDirection; - layout.canvasLayout = Object.assign({}, layout.canvasLayout, { linkDirection }, overlayLayout.canvasLayout || {}); + layout.canvasLayout = Object.assign({}, layout.canvasLayout, { linkMethod, linkDirection }, overlayLayout.canvasLayout || {}); return layout; } @@ -963,10 +981,11 @@ export default class LayoutDimensions { // Sets the default arrow head for node (data) links to true for freeform links. // TODO -- the second part of this if should be removed when enableStraightLinksAsFreeform - // in the next major release. + // is removed in the next major release. static overrideArrowHead(layout, config) { - if (config.enableLinkDirection === LINK_DIR_FREEFORM || - (config.enableStraightLinksAsFreeform && config.enableLinkType === LINK_TYPE_STRAIGHT)) { + if ((config.enableLinkMethod === LINK_METHOD_FREEFORM || + (config.enableStraightLinksAsFreeform && config.enableLinkType === LINK_TYPE_STRAIGHT)) && + !layout.canvasLayout.dataLinkArrowHead) { layout.canvasLayout.dataLinkArrowHead = true; } return layout; diff --git a/canvas_modules/harness/cypress/e2e/canvas/links.cy.js b/canvas_modules/harness/cypress/e2e/canvas/links.cy.js index a9d6e0d440..77d63edfd9 100644 --- a/canvas_modules/harness/cypress/e2e/canvas/links.cy.js +++ b/canvas_modules/harness/cypress/e2e/canvas/links.cy.js @@ -111,31 +111,31 @@ describe("Test basic link construction", function() { cy.openCanvasDefinition("allTypesCanvas.json"); }); - it("Test all 8 combinations of link type and link direction", function() { + it("Test all 8 combinations of link type and link method", function() { // Test the 4 Ports (LeftRight) combinations - cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkMethod": "Ports" }); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 159 128.5 C 228 128.5 228 167.5 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 159 128.5 L 179 128.5 Q 189 128.5 189 138.5 L 189 157.5 Q 189 167.5 199 167.5 L 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 159 128.5 L 189 128.5 L 267 167.5 L 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", @@ -144,28 +144,28 @@ describe("Test basic link construction", function() { // Test the 4 Freeform combinations - cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 166 137 C 228 137 228 176 290 176" ); - cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 166 137 L 186 137 Q 196 137 196 147 L 196 166 Q 196 176 206 176 L 290 176" ); - cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", "M 166 137 L 196 137 L 260 176 L 290 176" ); - cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Binding (entry) node", "outPort", "Execution node", "inPort", @@ -175,7 +175,7 @@ describe("Test basic link construction", function() { it("Test 8 cominations of creation and construction of self-referencing link", function() { - cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkDirection": "LeftRight", + cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkMethod": "Ports", "selectedSelfRefLinks": true, "selectedLinkSelection": "LinkOnly" }); // Delete the two links connected to the Execution node @@ -198,7 +198,7 @@ describe("Test basic link construction", function() { "118.5 Q 267 118.5 267 143 Q 267 167.5 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", @@ -207,14 +207,14 @@ describe("Test basic link construction", function() { "167.5 277 167.5 L 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", "M 367 167.5 L 397 167.5 L 397 118.5 L 267 118.5 L 267 167.5 L 297 167.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkDirection": "LeftRight" }); + cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkMethod": "Ports" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", @@ -223,13 +223,13 @@ describe("Test basic link construction", function() { // Test the 4 Freeform combinations - cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Curve", "selectedLinkMethod": "Freeform" }); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", "M 374 176 L 404 101.5 332 101.5 332 131.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Elbow", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", @@ -237,14 +237,14 @@ describe("Test basic link construction", function() { "L 342 101.5 Q 332 101.5 332 111.5 L 332 131.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Parallax", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", "M 374 176 L 404 176 L 404 101.5 L 332 101.5 L 332 131.5" ); - cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkDirection": "Freeform" }); + cy.setCanvasConfig({ "selectedLinkType": "Straight", "selectedLinkMethod": "Freeform" }); cy.wait(10); cy.verifyLinkPath( "Execution node", "outPort", "Execution node", "inPort", diff --git a/canvas_modules/harness/src/client/App.js b/canvas_modules/harness/src/client/App.js index 994193465c..aa9f2238cb 100644 --- a/canvas_modules/harness/src/client/App.js +++ b/canvas_modules/harness/src/client/App.js @@ -53,6 +53,8 @@ import Explain2Canvas from "./components/custom-canvases/explain2/explain2-canva import StreamsCanvas from "./components/custom-canvases/streams/streams-canvas"; import JsxIconsCanvas from "./components/custom-canvases/jsx-icons/jsx-icons-canvas"; import AllPortsCanvas from "./components/custom-canvases/all-ports/all-ports-canvas"; +import ParallaxCanvas from "./components/custom-canvases/parallax/parallax-canvas"; +import NetworkCanvas from "./components/custom-canvases/network/network-canvas"; import ReactNodesCarbonCanvas from "./components/custom-canvases/react-nodes-carbon/react-nodes-carbon"; import ReactNodesMappingCanvas from "./components/custom-canvases/react-nodes-mapping/react-nodes-mapping"; @@ -98,10 +100,7 @@ import { INTERACTION_MOUSE, VERTICAL_FORMAT, NONE_SAVE_ZOOM, - CURVE_LINKS, - DIRECTION_LEFT_RIGHT, IMAGE_DISPLAY_SVG_INLINE, - LINK_SELECTION_NONE, ASSOC_STRAIGHT, UNDERLAY_NONE, EXAMPLE_APP_NONE, @@ -117,6 +116,8 @@ import { EXAMPLE_APP_PROGRESS, EXAMPLE_APP_JSX_ICONS, EXAMPLE_APP_ALL_PORTS, + EXAMPLE_APP_PARALLAX, + EXAMPLE_APP_NETWORK, EXAMPLE_APP_REACT_NODES_CARBON, EXAMPLE_APP_REACT_NODES_MAPPING, CUSTOM, @@ -140,7 +141,13 @@ import { CATEGORY_VIEW_ACCORDIONS } from "./constants/constants.js"; -import { STATE_TAG_NONE } from "../../../common-canvas/src/common-canvas/constants/canvas-constants.js"; +import { + STATE_TAG_NONE, + LINK_TYPE_CURVE, + LINK_DIR_LEFT_RIGHT, + LINK_METHOD_PORTS, + LINK_SELECTION_NONE +} from "../../../common-canvas/src/common-canvas/constants/canvas-constants.js"; import EXTERNAL_SUB_FLOW_CANVAS_1 from "../../test_resources/diagrams/externalSubFlowCanvas1.json"; import EXTERNAL_SUB_FLOW_CANVAS_2 from "../../test_resources/diagrams/externalSubFlowCanvas2.json"; @@ -192,8 +199,9 @@ class App extends React.Component { selectedZoomIntoSubFlows: false, selectedSingleOutputPortDisplay: false, selectedImageDisplay: IMAGE_DISPLAY_SVG_INLINE, - selectedLinkType: CURVE_LINKS, - selectedLinkDirection: DIRECTION_LEFT_RIGHT, + selectedLinkType: LINK_TYPE_CURVE, + selectedLinkMethod: LINK_METHOD_PORTS, + selectedLinkDirection: LINK_DIR_LEFT_RIGHT, selectedLinkSelection: LINK_SELECTION_NONE, selectedLinkReplaceOnNewConnection: false, selectedStraightLinksAsFreeform: true, @@ -2045,6 +2053,7 @@ class App extends React.Component { enableNodeFormatType: this.state.selectedNodeFormatType, enableImageDisplay: this.state.selectedImageDisplay, enableLinkType: this.state.selectedLinkType, + enableLinkMethod: this.state.selectedLinkMethod, enableLinkDirection: this.state.selectedLinkDirection, enableAssocLinkType: this.state.selectedAssocLinkType, enableParentClass: this.getParentClass(), @@ -2637,6 +2646,20 @@ class App extends React.Component { config={commonCanvasConfig} /> ); + } else if (this.state.selectedExampleApp === EXAMPLE_APP_PARALLAX) { + firstCanvas = ( + + ); + } else if (this.state.selectedExampleApp === EXAMPLE_APP_NETWORK) { + firstCanvas = ( + + ); } else if (this.state.selectedExampleApp === EXAMPLE_APP_REACT_NODES_CARBON) { firstCanvas = ( ), - subMenu: subMenuLinkDirection, enable: true, closeSubAreaOnClick: true }, + subMenu: subMenuLinkMethod, enable: true, closeSubAreaOnClick: true }, { divider: true }, { action: "linkType", label: this.state.linkType, incLabelWithIcon: "after", iconEnabled: (), @@ -156,8 +155,8 @@ export default class AllPortsCanvas extends React.Component { if (data.editType === "Curve" || data.editType === "Elbow" || data.editType === "Straight" || data.editType === "Parallax") { this.setState({ linkType: data.editType }); - } else if (data.editType === "LeftRight" || data.editType === "Freeform") { - this.setState({ linkDirection: data.editType }); + } else if (data.editType === "Ports" || data.editType === "Freeform") { + this.setState({ linkMethod: data.editType }); } else if (data.editType === "North" || data.editType === "South" || data.editType === "East" || data.editType === "West") { this.changePortsLocation(data.editType); diff --git a/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports-palette.json b/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports-palette.json index 0dd0826133..2b1077b097 100644 --- a/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports-palette.json +++ b/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports-palette.json @@ -32,6 +32,20 @@ } } } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "North Output Port" + } + } + } ] }, { @@ -60,6 +74,20 @@ } } } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "North Output Port" + } + } + } ] }, { @@ -88,6 +116,20 @@ } } } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "North Output Port" + } + } + } ] }, { @@ -116,6 +158,20 @@ } } } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "North Output Port" + } + } + } ] } ] @@ -264,7 +320,7 @@ "ui_data": { "cardinality": { "min": 0, - "max": 1 + "max": -1 }, "label": "Input Port 1" } @@ -278,7 +334,7 @@ "ui_data": { "cardinality": { "min": 0, - "max": 1 + "max": -1 }, "label": "Input Port 2" } @@ -292,7 +348,7 @@ "ui_data": { "cardinality": { "min": 0, - "max": 1 + "max": -1 }, "label": "Input Port 3" } @@ -306,7 +362,7 @@ "ui_data": { "cardinality": { "min": 0, - "max": 1 + "max": -1 }, "label": "Input Port 4" } diff --git a/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports.scss b/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports.scss index 19a57e70cf..b9fe9e0c27 100644 --- a/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports.scss +++ b/canvas_modules/harness/src/client/components/custom-canvases/all-ports/all-ports.scss @@ -27,7 +27,11 @@ stroke: $background-inverse; } - + .d3-node-selection-highlight[data-selected="yes"], + .d3-comment-selection-highlight[data-selected="yes"] { + stroke-dasharray: 5, 5; + stroke-width: 2; + } } // ---------------------------------------------------- diff --git a/canvas_modules/harness/src/client/components/custom-canvases/network/network-canvas.jsx b/canvas_modules/harness/src/client/components/custom-canvases/network/network-canvas.jsx new file mode 100644 index 0000000000..f9a2c56dbc --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/network/network-canvas.jsx @@ -0,0 +1,89 @@ +/* + * Copyright 2024 Elyra Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from "react"; +import PropTypes from "prop-types"; + +import { CommonCanvas, CanvasController } from "common-canvas"; // eslint-disable-line import/no-unresolved + +import networkFlow from "./network-flow.json"; +import networkPalette from "./network-palette.json"; + +export default class NetworkCanvas extends React.Component { + constructor(props) { + super(props); + + this.canvasController = new CanvasController(); + this.canvasController.setPipelineFlow(networkFlow); + this.canvasController.setPipelineFlowPalette(networkPalette); + this.canvasController.openPaletteCategory("items-nodes"); + + this.getConfig = this.getConfig.bind(this); + } + + getConfig() { + const config = Object.assign({}, this.props.config, { + enableParentClass: "network-canvas", + enableNodeFormatType: "Vertical", + enableLinkType: "Elbow", + enableLinkMethod: "Freeform", + enableMarkdownInComments: true, + enableContextToolbar: true, + enableSaveZoom: "LocalStorage", + enableSnapToGridType: "During", + tipConfig: { + palette: true, + nodes: true, + ports: false, + links: false + }, + enableNodeLayout: { + nodeHighlightGap: 6, + + nodeShapeDisplay: false, + + labelEditable: true, + labelWidth: 200, + + inputPortDisplay: false, + outputPortDisplay: true, + + outputPortGuideObject: "image", + outputPortGuideImage: "/images/custom-canvases/flows/decorations/dragStateArrow.svg", + outputPortGuideImageRotate: true + }, + enableCanvasLayout: { + dataLinkArrowHead: "M 0 0 L -5 -2 -5 2 Z" + } + }); + return config; + } + + render() { + const config = this.getConfig(); + + return ( + + ); + } +} + +NetworkCanvas.propTypes = { + config: PropTypes.object +}; diff --git a/canvas_modules/harness/src/client/components/custom-canvases/network/network-flow.json b/canvas_modules/harness/src/client/components/custom-canvases/network/network-flow.json new file mode 100644 index 0000000000..ce9d4b309a --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/network/network-flow.json @@ -0,0 +1,878 @@ +{ + "doc_type": "pipeline", + "version": "3.0", + "json_schema": "https://api.dataplatform.ibm.com/schemas/common-pipeline/pipeline-flow/pipeline-flow-v3-schema.json", + "id": "all-ports-123", + "primary_pipeline": "54321", + "pipelines": [ + { + "id": "54321", + "nodes": [ + { + "id": "7c3c5c9e-11c0-4d23-9a7d-1a0f87bc1b7a", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 4", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": -735, + "y_pos": 540, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "eb916832-1392-4f12-aa9a-0b8aad168928", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 6", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": -735, + "y_pos": 810, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "f20e375b-486b-4116-af08-1e0361415f8a", + "node_id_ref": "2d9d4e07-afc8-4200-bc96-3267c5ef7318", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "2d9d4e07-afc8-4200-bc96-3267c5ef7318", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 8", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -735, + "y_pos": 645, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "d1f30c76-b7f5-4f09-a655-31083af25bee", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 5", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": -542.5, + "y_pos": 645, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "19fe00d8-5564-4fc7-8f13-6340a9c0043d", + "node_id_ref": "2d9d4e07-afc8-4200-bc96-3267c5ef7318", + "port_id_ref": "outPort1" + }, + { + "id": "5a3a7c33-2d00-4dbe-b8d5-8c1305b905fc", + "node_id_ref": "26b2b823-2e93-4275-a62d-f84888bd8977", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "f1b999ee-eed5-49da-8a11-fb208e2fe72e", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Commissions Calculator", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -402.5, + "y_pos": 495, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "48ef30bb-6ec7-4ed9-af7e-86995689616a", + "node_id_ref": "f9d3e9b7-f8c9-4d82-8479-e141ebd47350", + "port_id_ref": "outPort1" + }, + { + "id": "68c1e542-f101-4e31-b4ad-9dd687814af6", + "node_id_ref": "7c3c5c9e-11c0-4d23-9a7d-1a0f87bc1b7a", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "45eccbfb-a502-4d7b-877c-e23539e9929d", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 2", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": -227.5, + "y_pos": 495, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "0210f715-ec84-4713-9a93-6cba103a9783", + "node_id_ref": "26b2b823-2e93-4275-a62d-f84888bd8977", + "port_id_ref": "outPort1" + }, + { + "id": "5d8f1247-aa22-4f1d-be3c-b7fab7d935b4", + "node_id_ref": "2a99033c-0db7-4666-95b5-95de5d4fb308", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "f9d3e9b7-f8c9-4d82-8479-e141ebd47350", + "type": "execution_node", + "op": "queue-manager", + "app_data": { + "ui_data": { + "label": "Queue Manager - 1", + "image": "images/custom-canvases/flows/palette/icons/userinput.svg", + "x_pos": -402.5, + "y_pos": 810, + "description": "Queue Manager node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "1e25361c-d544-4193-be5b-fb13cfedc34b", + "node_id_ref": "f1b999ee-eed5-49da-8a11-fb208e2fe72e", + "port_id_ref": "outPort1" + }, + { + "id": "508c629d-8074-4714-9b64-9e1e9f7e3224", + "node_id_ref": "79adff0f-7286-457c-9ac2-41aa52119579", + "port_id_ref": "outPort1" + }, + { + "id": "bb96895c-5cbc-45a3-a505-e484e3c6f12c", + "node_id_ref": "26b2b823-2e93-4275-a62d-f84888bd8977", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "2a99033c-0db7-4666-95b5-95de5d4fb308", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 6", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -227.5, + "y_pos": 735, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "26b2b823-2e93-4275-a62d-f84888bd8977", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 3", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -70, + "y_pos": 645, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "0b3b25ee-8ef5-4843-ae09-32fbfb9f1852", + "node_id_ref": "d1f30c76-b7f5-4f09-a655-31083af25bee", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "fba04d26-ba48-40a0-af92-37ae59cacaaa", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 2", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -35, + "y_pos": 315, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "31f49b03-0b83-40fb-a4a6-a6abb4f54a94", + "node_id_ref": "45eccbfb-a502-4d7b-877c-e23539e9929d", + "port_id_ref": "outPort1" + }, + { + "id": "abf2d4ee-46c9-435d-8937-5a11cc18849b", + "node_id_ref": "a6c1fcd7-3d8b-4d7b-8990-0261a6c9fda6", + "port_id_ref": "outPort1" + }, + { + "id": "b696f1fb-6adc-4357-9d77-24629d851ce3", + "node_id_ref": "29bcfe48-3a35-4145-9957-3e7e7fda4e54", + "port_id_ref": "outPort1" + }, + { + "id": "c6d1b9a7-afc7-4660-8ab3-6776bc61fb26", + "node_id_ref": "db525d21-1ad7-4f87-a073-ff185e3ca89e", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "a6c1fcd7-3d8b-4d7b-8990-0261a6c9fda6", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 1", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": -192.5, + "y_pos": 165, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "60ec3823-3144-41d0-b924-113aacfbb3b4", + "node_id_ref": "fba04d26-ba48-40a0-af92-37ae59cacaaa", + "port_id_ref": "outPort1" + }, + { + "id": "442a9874-6c31-45a3-b214-3fc9d3a871f2", + "node_id_ref": "29bcfe48-3a35-4145-9957-3e7e7fda4e54", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "29bcfe48-3a35-4145-9957-3e7e7fda4e54", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 5", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": 122.5, + "y_pos": 165, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "a2c1f2dc-dc81-4b6e-bc66-c47aa74d6d4a", + "node_id_ref": "a6c1fcd7-3d8b-4d7b-8990-0261a6c9fda6", + "port_id_ref": "outPort1" + }, + { + "id": "f8305809-2115-4ef9-a6bf-906b53d603e8", + "node_id_ref": "fba04d26-ba48-40a0-af92-37ae59cacaaa", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "db525d21-1ad7-4f87-a073-ff185e3ca89e", + "type": "execution_node", + "op": "queue-manager", + "app_data": { + "ui_data": { + "label": "Queue Manager - 2", + "image": "images/custom-canvases/flows/palette/icons/userinput.svg", + "x_pos": 140, + "y_pos": 435, + "description": "Queue Manager node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "7d242fe3-1719-42c9-8208-61ddf44dc2bc", + "node_id_ref": "cd14647c-b6f1-4b3b-a726-8e5f48fb8fb1", + "port_id_ref": "outPort1" + }, + { + "id": "94f432f0-8650-453e-8cc4-14d5dfd2d909", + "node_id_ref": "fba04d26-ba48-40a0-af92-37ae59cacaaa", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "cd14647c-b6f1-4b3b-a726-8e5f48fb8fb1", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 7", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -35, + "y_pos": 465, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "06a50396-219a-4ad0-bdf3-2d2b5710de35", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database - 3", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": 140, + "y_pos": 600, + "description": "Database node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "f5e6a4de-9893-4526-b5c2-b22025a42ee6", + "node_id_ref": "cd14647c-b6f1-4b3b-a726-8e5f48fb8fb1", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "14634b4b-355f-44fe-97c3-ab9a07a45d73", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application - 4", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": -70, + "y_pos": 825, + "description": "Application node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + }, + { + "id": "79adff0f-7286-457c-9ac2-41aa52119579", + "type": "execution_node", + "op": "queue-manager", + "app_data": { + "ui_data": { + "label": "Queue Manager - 3", + "image": "images/custom-canvases/flows/palette/icons/userinput.svg", + "x_pos": 70, + "y_pos": 810, + "description": "Queue Manager node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ] + } + ], + "app_data": { + "ui_data": { + "comments": [ + { + "id": "e6381626-0d9e-4e22-9943-80ccaaee4ebb", + "x_pos": -735, + "y_pos": 165, + "width": 350, + "height": 180, + "class_name": "bkg-col-teal-20", + "content": "# Network Canvas\n\n### This shows a network of nodes using the \"Freeform\" Link Method and the \"Elbow\" Link Type", + "associated_id_refs": [] + } + ] + } + }, + "runtime_ref": "" + } + ], + "schemas": [] +} diff --git a/canvas_modules/harness/src/client/components/custom-canvases/network/network-palette.json b/canvas_modules/harness/src/client/components/custom-canvases/network/network-palette.json new file mode 100644 index 0000000000..a256821e49 --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/network/network-palette.json @@ -0,0 +1,138 @@ +{ + "version": "3.0", + "categories": [ + { + "label": "Items", + "image": "/images/palette-categories/sources_open.svg", + "id": "items-nodes", + "node_types": [ + { + "id": "queue-manager-node", + "type": "execution_node", + "op": "queue-manager", + "app_data": { + "ui_data": { + "label": "Queue Manager", + "image": "images/custom-canvases/flows/palette/icons/userinput.svg", + "x_pos": 89, + "y_pos": 99.5, + "description": "Queue Manager node" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ] + }, + { + "id": "application-node", + "type": "execution_node", + "op": "application", + "app_data": { + "ui_data": { + "label": "Application", + "image": "images/custom-canvases/flows/palette/icons/autodataprep.svg", + "x_pos": 0, + "y_pos": 0, + "description": "Application node" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ] + }, + { + "id": "database-node", + "type": "execution_node", + "op": "database", + "app_data": { + "ui_data": { + "label": "Database", + "image": "images/custom-canvases/flows/palette/icons/table.svg", + "x_pos": 0, + "y_pos": 0, + "description": "Database node" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + } + ] + } + ] + } + ] +} diff --git a/canvas_modules/harness/src/client/components/custom-canvases/network/network.png b/canvas_modules/harness/src/client/components/custom-canvases/network/network.png new file mode 100644 index 0000000000000000000000000000000000000000..9080b1520a3e51a59cc56bfb265848b6560ddbf0 GIT binary patch literal 217569 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 literal 0 HcmV?d00001 diff --git a/canvas_modules/harness/src/client/components/custom-canvases/network/network.scss b/canvas_modules/harness/src/client/components/custom-canvases/network/network.scss new file mode 100644 index 0000000000..d8ccaffc6b --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/network/network.scss @@ -0,0 +1,71 @@ +/* + * Copyright 2024 Elyra Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.network-canvas { + + // ---------------------------------------------------- + // Node Styles + // ---------------------------------------------------- + .d3-node-group { + + .d3-node-port-input { + stroke: $background-inverse; + } + + .d3-node-port-output { + opacity: 0; + transform: translateX(-8px); + transition: opacity 0.1s cubic-bezier(0.4, 0.14, 0.3, 1), transform 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition-delay: 0.125s; + } + + &:hover { + .d3-node-port-output { + opacity: 1; + transform: translateX(0); + transition: opacity 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275), transform 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition-delay: 0.125s; + } + } + + .d3-node-selection-highlight[data-selected="yes"], + .d3-comment-selection-highlight[data-selected="yes"] { + stroke-dasharray: 5, 5; + stroke-width: 2; + } + } + + // ---------------------------------------------------- + // Link Styles + // ---------------------------------------------------- + + .d3-link-group { + .d3-link-line { + stroke: #8C8C8C; + stroke-width: 2; + } + .d3-link-line-arrow-head { + stroke: #8C8C8C; + stroke-width: 2; + fill: #8C8C8C; + } + } + + // ---------------------------------------------------- + // Comment Styles + // ---------------------------------------------------- + +} diff --git a/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-canvas.jsx b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-canvas.jsx new file mode 100644 index 0000000000..1ce93892e0 --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-canvas.jsx @@ -0,0 +1,105 @@ +/* + * Copyright 2024 Elyra Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from "react"; +import PropTypes from "prop-types"; + +import { CommonCanvas, CanvasController } from "common-canvas"; // eslint-disable-line import/no-unresolved + +import parallaxFlow from "./parallax-flow.json"; +import parallaxPalette from "./parallax-palette.json"; + +export default class ParallaxCanvas extends React.Component { + constructor(props) { + super(props); + + this.canvasController = new CanvasController(); + this.canvasController.setPipelineFlow(parallaxFlow); + this.canvasController.setPipelineFlowPalette(parallaxPalette); + this.canvasController.openPalette(); + + this.getConfig = this.getConfig.bind(this); + } + + getConfig() { + const config = Object.assign({}, this.props.config, { + enableParentClass: "parallax-canvas", + enableNodeFormatType: "Horizontal", + enableLinkType: "Parallax", + enableSelfRefLinks: true, + enableMarkdownInComments: true, + enableContextToolbar: true, + enableSaveZoom: "LocalStorage", + enableSnapToGridType: "During", + tipConfig: { + palette: true, + nodes: true, + ports: false, + links: false + }, + enableNodeLayout: { + nodeHighlightGap: 6, + + nodeShape: "rectangle", + + defaultNodeWidth: 250, + defaultNodeHeight: 25, + + autoSizeNode: false, + + labelPosX: 20, + labelPosY: 5, + + inputPortDisplay: false, + inputPortAutoPosition: false, + inputPortPositions: [ + { x_pos: 0, y_pos: 5, pos: "topLeft" }, + { x_pos: 0, y_pos: -5, pos: "bottomRight" } + ], + + outputPortDisplay: true, + outputPortAutoPosition: false, + outputPortPositions: [ + { x_pos: 0, y_pos: 5, pos: "topRight" }, + { x_pos: 0, y_pos: -5, pos: "bottomLeft" } + ], + + outputPortGuideObject: "image", + outputPortGuideImage: "/images/custom-canvases/flows/decorations/dragStateArrow.svg", + outputPortGuideImageRotate: true + }, + enableCanvasLayout: { + dataLinkArrowHead: "M 0 0 L -5 -4 -5 4 Z" + } + }); + return config; + } + + render() { + const config = this.getConfig(); + + return ( + + ); + } +} + +ParallaxCanvas.propTypes = { + config: PropTypes.object +}; diff --git a/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-flow.json b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-flow.json new file mode 100644 index 0000000000..e50460597c --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-flow.json @@ -0,0 +1,1077 @@ +{ + "doc_type": "pipeline", + "version": "3.0", + "json_schema": "https://api.dataplatform.ibm.com/schemas/common-pipeline/pipeline-flow/pipeline-flow-v3-schema.json", + "id": "parallax-flow-123", + "primary_pipeline": "54321", + "pipelines": [ + { + "id": "54321", + "nodes": [ + { + "id": "3c366de0-22c9-4afa-9caf-6a9ac2215abb", + "type": "execution_node", + "op": "oracle", + "app_data": { + "ui_data": { + "label": "Oracle", + "x_pos": 50, + "y_pos": 297, + "class_name": "blue", + "description": "Oracle node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "42d05696-9b1d-4635-877d-15d27b67e207", + "node_id_ref": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "port_id_ref": "outPort2" + }, + { + "id": "535c092e-3792-4e9f-a672-0be5d248e7f1", + "node_id_ref": "3c366de0-22c9-4afa-9caf-6a9ac2215abb", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "type": "execution_node", + "op": "IFPC", + "app_data": { + "ui_data": { + "label": "IFPC", + "x_pos": 450, + "y_pos": 297, + "class_name": "red", + "description": "IFPC node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "ee7f5420-f7ec-488b-b681-3adca4610509", + "node_id_ref": "3c366de0-22c9-4afa-9caf-6a9ac2215abb", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "8450f347-e884-4b2b-b754-fa58050666fa", + "node_id_ref": "7c4acc3e-1002-41d3-9075-a95b61f57bc9", + "port_id_ref": "outPort2" + }, + { + "id": "c23b3931-74cc-4a55-891e-a6eaa532d9d0", + "node_id_ref": "3aa72ed1-b7c6-437c-bf0a-de10a86268f8", + "port_id_ref": "outPort2" + }, + { + "id": "dd4e64ea-62f6-4568-854d-c0d3c4a48e41", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort2" + }, + { + "id": "500d21fc-08fa-407b-b300-f6365a9a5d79", + "node_id_ref": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "7c4acc3e-1002-41d3-9075-a95b61f57bc9", + "type": "execution_node", + "op": "filesystem", + "app_data": { + "ui_data": { + "label": "Filesystem", + "x_pos": 850, + "y_pos": 264, + "class_name": "blue", + "description": "Filesyatem node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "b76249c4-a2f3-4f34-ba9f-26b619e88bd1", + "node_id_ref": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "3aa72ed1-b7c6-437c-bf0a-de10a86268f8", + "type": "execution_node", + "op": "terradata", + "app_data": { + "ui_data": { + "label": "Terradata", + "x_pos": 850, + "y_pos": 297, + "class_name": "blue", + "description": "Terradata node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "189ec41e-5e56-47ec-81a8-81794cd63989", + "node_id_ref": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "3b2d2214-da31-47ef-b6b5-e9a7e92043ff", + "node_id_ref": "0d8c48ba-faf7-4dca-970c-8b7326847e68", + "port_id_ref": "outPort2" + }, + { + "id": "e0169876-438c-4d80-83e3-f212ccbef29b", + "node_id_ref": "c4470e31-714e-46d0-a57b-6526b0cc0ee5", + "port_id_ref": "outPort2" + }, + { + "id": "a76fde58-7e3e-4932-b834-a0f9ffa24ad3", + "node_id_ref": "63dccaa7-a4b7-4581-a905-2da0084264e7", + "port_id_ref": "outPort2" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "0d8c48ba-faf7-4dca-970c-8b7326847e68", + "type": "execution_node", + "op": "Teradata TPT", + "app_data": { + "ui_data": { + "label": "Teradata TPT", + "x_pos": 1250, + "y_pos": 264, + "class_name": "salmon", + "description": "Teradata TPT node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "b33d4dda-46e5-4397-aca1-782add8ddbed", + "node_id_ref": "3aa72ed1-b7c6-437c-bf0a-de10a86268f8", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "e4a7b527-4d8a-4894-8353-e6ff8d196735", + "node_id_ref": "0d8c48ba-faf7-4dca-970c-8b7326847e68", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "63dccaa7-a4b7-4581-a905-2da0084264e7", + "type": "execution_node", + "op": "Teradata BTEQ", + "app_data": { + "ui_data": { + "label": "Teradata BTEQ", + "x_pos": 1250, + "y_pos": 330, + "class_name": "salmon", + "description": "Teradata BTEQ node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "dc6e203a-e8af-4553-976d-56b0b247838a", + "node_id_ref": "3aa72ed1-b7c6-437c-bf0a-de10a86268f8", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "5ab98430-be8d-4ee0-84b0-fedc4ae9659d", + "type": "execution_node", + "op": "SSRS", + "app_data": { + "ui_data": { + "label": "SSRS", + "x_pos": 1250, + "y_pos": 396, + "class_name": "teal", + "description": "SSRS node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "cffb9e45-02f6-492b-9add-68ef8cfbc2da", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "1f2d86c2-6b7f-4f76-b6d1-7f5104f45088", + "node_id_ref": "5ab98430-be8d-4ee0-84b0-fedc4ae9659d", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "a940d0fc-41b0-4006-8374-6617744f55bf", + "type": "execution_node", + "op": "ssis", + "app_data": { + "ui_data": { + "label": "SSIS", + "x_pos": 1250, + "y_pos": 429, + "class_name": "red", + "description": "SSIS node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "41651a26-4e10-4294-94f8-a9ae02f644ba", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "d6f5088b-51bd-4e28-b5cc-78a87808bc0f", + "node_id_ref": "a940d0fc-41b0-4006-8374-6617744f55bf", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "d91a78e4-6328-4383-b02b-2d4064ea6304", + "type": "execution_node", + "op": "SSAS", + "app_data": { + "ui_data": { + "label": "SSAS", + "x_pos": 1250, + "y_pos": 462, + "class_name": "gray", + "description": "SSAS node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "5d03af16-5ae1-4ecc-aa39-df00361c0261", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "6318079d-23d5-40b0-ba00-6bd6ddac4c3a", + "node_id_ref": "d91a78e4-6328-4383-b02b-2d4064ea6304", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "27394209-d34d-4b8e-bcec-96caeef99157", + "type": "execution_node", + "op": "excel", + "app_data": { + "ui_data": { + "label": "Excel", + "x_pos": 1250, + "y_pos": 495, + "class_name": "teal", + "description": "Excel node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "f7294f45-af0b-47b9-ad28-aed3cd55dcc8", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "71ce7ed6-eea4-4b7b-9f42-9cbd8d357513", + "node_id_ref": "27394209-d34d-4b8e-bcec-96caeef99157", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "type": "execution_node", + "op": "mssql", + "app_data": { + "ui_data": { + "label": "MSSql", + "x_pos": 850, + "y_pos": 429, + "class_name": "blue", + "description": "MSSql node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "f83e3ace-491e-41ca-b9db-2742a66a67be", + "node_id_ref": "8e272b44-0015-48ce-af5c-141b4fd6d8e5", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + }, + "links": [ + { + "id": "54c84072-1782-4bab-a92f-56257433c190", + "node_id_ref": "a940d0fc-41b0-4006-8374-6617744f55bf", + "port_id_ref": "outPort2" + }, + { + "id": "8f426090-1ca1-442b-b457-b1979b36521b", + "node_id_ref": "d92680d2-2e8f-4da3-8242-18ea1b298796", + "port_id_ref": "outPort2" + }, + { + "id": "e6fde1d2-5654-4e0c-bb33-1c13c3c21587", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "d92680d2-2e8f-4da3-8242-18ea1b298796", + "type": "execution_node", + "op": "mssql-ddl", + "app_data": { + "ui_data": { + "label": "MSSQL DDL", + "x_pos": 1250, + "y_pos": 363, + "class_name": "salmon", + "description": "MSSQL DDL node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "85972e2d-0a6e-4685-8480-cb51beec07bf", + "node_id_ref": "4be9518e-c0b4-4417-b721-3dfc80a3d0f7", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + }, + { + "id": "c4470e31-714e-46d0-a57b-6526b0cc0ee5", + "type": "execution_node", + "op": "Teradata DDL", + "app_data": { + "ui_data": { + "label": "Teradata DDL", + "x_pos": 1250, + "y_pos": 297, + "class_name": "salmon", + "description": "Teradata DDL node" + } + }, + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + }, + "links": [ + { + "id": "8dddb527-2763-40f6-817d-d0766234c49b", + "node_id_ref": "3aa72ed1-b7c6-437c-bf0a-de10a86268f8", + "port_id_ref": "outPort1" + } + ] + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ], + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ] + } + ], + "app_data": { + "ui_data": { + "comments": [ + { + "id": "123", + "x_pos": 50, + "y_pos": 49.5, + "width": 350, + "height": 190, + "class_name": "d3-comment-rect bkg-col-green-20", + "content": "## Parallax Canvas\n\n### This canvas shows a flow using the Paralax link type with some customized 'horizontal' layout nodes. Some of the nodes have self-referencing links that loop back on themselves. ", + "associated_id_refs": [] + } + ] + } + }, + "runtime_ref": "" + } + ], + "schemas": [] +} diff --git a/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-palette.json b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-palette.json new file mode 100644 index 0000000000..7f6471882a --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax-palette.json @@ -0,0 +1,898 @@ +{ + "version": "3.0", + "categories": [ + { + "label": "Blue Nodes", + "image": "/images/palette-categories/sources_open.svg", + "id": "blue-nodes", + "node_types": [ + { + "id": "oracle-node", + "type": "execution_node", + "op": "oracle", + "app_data": { + "ui_data": { + "label": "Oracle", + "x_pos": 89, + "y_pos": 99.5, + "description": "Oracle node", + "class_name": "blue" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "filesystem-node", + "type": "execution_node", + "op": "filesystem", + "app_data": { + "ui_data": { + "label": "Filesystem", + "x_pos": 89, + "y_pos": 99.5, + "description": "Filesyatem node", + "class_name": "blue" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "terradata-node", + "type": "execution_node", + "op": "terradata", + "app_data": { + "ui_data": { + "label": "Terradata", + "x_pos": 89, + "y_pos": 99.5, + "description": "Terradata node", + "class_name": "blue" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "mssql-node", + "type": "execution_node", + "op": "mssql", + "app_data": { + "ui_data": { + "label": "MSSql", + "x_pos": 89, + "y_pos": 99.5, + "description": "MSSql node", + "class_name": "blue" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + } + ] + }, + { + "label": "Red Nodes", + "image": "/images/palette-categories/sources_open.svg", + "id": "red-nodes", + "node_types": [ + { + "id": "ifpc-node", + "type": "execution_node", + "op": "IFPC", + "app_data": { + "ui_data": { + "label": "IFPC", + "x_pos": 89, + "y_pos": 99.5, + "description": "IFPC node", + "class_name": "red" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "ssis-node", + "type": "execution_node", + "op": "ssis", + "app_data": { + "ui_data": { + "label": "SSIS", + "x_pos": 89, + "y_pos": 99.5, + "description": "SSIS node", + "class_name": "red" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + } + ] + }, + { + "label": "Salmon Nodes", + "image": "/images/palette-categories/sources_open.svg", + "id": "salmon-nodes", + "node_types": [ + { + "id": "teradata-tpt-node", + "type": "execution_node", + "op": "Teradata TPT", + "app_data": { + "ui_data": { + "label": "Teradata TPT", + "x_pos": 89, + "y_pos": 99.5, + "description": "Teradata TPT node", + "class_name": "salmon" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "teradata-ddl-node", + "type": "execution_node", + "op": "Teradata DDL", + "app_data": { + "ui_data": { + "label": "Teradata DDL", + "x_pos": 89, + "y_pos": 99.5, + "description": "Teradata DDL node", + "class_name": "salmon" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "teradata-bteq-node", + "type": "execution_node", + "op": "Teradata BTEQ", + "app_data": { + "ui_data": { + "label": "Teradata BTEQ", + "x_pos": 89, + "y_pos": 99.5, + "description": "Teradata BTEQ node", + "class_name": "salmon" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "mssql-ddl-node", + "type": "execution_node", + "op": "mssql-ddl", + "app_data": { + "ui_data": { + "label": "MSSQL DDL", + "x_pos": 89, + "y_pos": 99.5, + "description": "MSSQL DDL node", + "class_name": "salmon" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + } + ] + }, + { + "label": "Teal Nodes", + "image": "/images/palette-categories/sources_open.svg", + "id": "teal-nodes", + "node_types": [ + { + "id": "ssrs-node", + "type": "execution_node", + "op": "SSRS", + "app_data": { + "ui_data": { + "label": "SSRS", + "x_pos": 89, + "y_pos": 99.5, + "description": "SSRS node", + "class_name": "teal" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + }, + { + "id": "excel-node", + "type": "execution_node", + "op": "excel", + "app_data": { + "ui_data": { + "label": "Excel", + "x_pos": 89, + "y_pos": 99.5, + "description": "Excel node", + "class_name": "teal" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + } + ] + }, + { + "label": "Gray Nodes", + "image": "/images/palette-categories/sources_open.svg", + "id": "gray-nodes", + "node_types": [ + { + "id": "ssas-node", + "type": "execution_node", + "op": "SSAS", + "app_data": { + "ui_data": { + "label": "SSAS", + "x_pos": 89, + "y_pos": 99.5, + "description": "SSAS node", + "class_name": "gray" + } + }, + "outputs": [ + { + "id": "outPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 1" + } + } + }, + { + "id": "outPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Output Port 2" + } + } + } + ], + "inputs": [ + { + "id": "inPort1", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 1" + } + } + }, + { + "id": "inPort2", + "app_data": { + "ui_data": { + "cardinality": { + "min": 0, + "max": -1 + }, + "label": "Input Port 2" + } + } + } + ] + } + ] + } + ] +} diff --git a/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax.scss b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax.scss new file mode 100644 index 0000000000..606e93b792 --- /dev/null +++ b/canvas_modules/harness/src/client/components/custom-canvases/parallax/parallax.scss @@ -0,0 +1,101 @@ +/* + * Copyright 2024 Elyra Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.parallax-canvas { + + // ---------------------------------------------------- + // Node Styles + // ---------------------------------------------------- + .d3-node-group { + + .d3-node-port-input { + stroke: $background-inverse; + } + + &.blue { + .d3-node-body-outline { + fill: #DCE2F4; + } + } + + &.red { + .d3-node-body-outline { + fill: #F3CED1; + } + } + + &.salmon { + .d3-node-body-outline { + fill: #F7E3D9; + } + } + + &.teal { + .d3-node-body-outline { + fill: #D5FBFA; + } + } + + &.gray { + .d3-node-body-outline { + fill: #EEEEEE; + } + } + + .d3-node-port-output { + opacity: 0; + transform: translateX(-8px); + transition: opacity 0.1s cubic-bezier(0.4, 0.14, 0.3, 1), transform 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition-delay: 0.125s; + } + + &:hover { + .d3-node-port-output { + opacity: 1; + transform: translateX(0); + transition: opacity 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275), transform 0.1s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition-delay: 0.125s; + } + } + + .d3-node-selection-highlight[data-selected="yes"], + .d3-comment-selection-highlight[data-selected="yes"] { + stroke-dasharray: 5, 5; + stroke-width: 2; + } + } + + // ---------------------------------------------------- + // Link Styles + // ---------------------------------------------------- + + .d3-link-group { + .d3-link-line { + stroke: #8C8C8C; + stroke-width: 2; + } + .d3-link-line-arrow-head { + stroke: #8C8C8C; + stroke-width: 2; + fill: #FEFCFC; + } + } + + // ---------------------------------------------------- + // Comment Styles + // ---------------------------------------------------- + +} diff --git a/canvas_modules/harness/src/client/components/sidepanel/canvas/sidepanel-canvas.jsx b/canvas_modules/harness/src/client/components/sidepanel/canvas/sidepanel-canvas.jsx index 6d446f6406..fc63c87730 100644 --- a/canvas_modules/harness/src/client/components/sidepanel/canvas/sidepanel-canvas.jsx +++ b/canvas_modules/harness/src/client/components/sidepanel/canvas/sidepanel-canvas.jsx @@ -36,22 +36,9 @@ import { INTERACTION_MOUSE, INTERACTION_TRACKPAD, INTERACTION_CARBON, - CURVE_LINKS, - ELBOW_LINKS, - STRAIGHT_LINKS, - PARALLAX_LINKS, - DIRECTION_FREEFORM, - DIRECTION_LEFT_RIGHT, - DIRECTION_RIGHT_LEFT, - DIRECTION_TOP_BOTTOM, - DIRECTION_BOTTOM_TOP, IMAGE_DISPLAY_SVG_INLINE, IMAGE_DISPLAY_LOAD_SVG_TO_DEFS, IMAGE_DISPLAY_SVG_AS_IMAGE, - LINK_SELECTION_NONE, - LINK_SELECTION_LINK_ONLY, - LINK_SELECTION_HANDLES, - LINK_SELECTION_DETACHABLE, ASSOC_RIGHT_SIDE_CURVE, ASSOC_STRAIGHT, UNDERLAY_NONE, @@ -69,6 +56,8 @@ import { EXAMPLE_APP_PROGRESS, EXAMPLE_APP_JSX_ICONS, EXAMPLE_APP_ALL_PORTS, + EXAMPLE_APP_PARALLAX, + EXAMPLE_APP_NETWORK, EXAMPLE_APP_REACT_NODES_CARBON, EXAMPLE_APP_REACT_NODES_MAPPING, PALETTE_FLYOUT, @@ -93,8 +82,21 @@ import { TOOLBAR_TYPE_OVERRIDE_AUTO_ENABLE_DISABLE } from "../../../constants/constants.js"; -import { STATE_TAG_NONE, STATE_TAG_LOCKED, STATE_TAG_READ_ONLY } - from "@elyra/canvas/src/common-canvas/constants/canvas-constants.js"; +import { STATE_TAG_NONE, STATE_TAG_LOCKED, STATE_TAG_READ_ONLY, + LINK_METHOD_FREEFORM, LINK_METHOD_PORTS, + LINK_DIR_LEFT_RIGHT, + LINK_DIR_RIGHT_LEFT, + LINK_DIR_TOP_BOTTOM, + LINK_DIR_BOTTOM_TOP, + LINK_TYPE_CURVE, + LINK_TYPE_ELBOW, + LINK_TYPE_STRAIGHT, + LINK_TYPE_PARALLAX, + LINK_SELECTION_NONE, + LINK_SELECTION_LINK_ONLY, + LINK_SELECTION_HANDLES, + LINK_SELECTION_DETACHABLE +} from "@elyra/canvas/src/common-canvas/constants/canvas-constants.js"; import FormsService from "../../../services/FormsService"; @@ -1098,28 +1100,52 @@ export default class SidePanelForms extends React.Component { orientation="vertical" > ); + var linkMethod = (); + + var linkDirection = (