This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 279db1ee Fix #1337
279db1ee is described below

commit 279db1eefe5414442329aa3c99f7ae360ee462f0
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Jul 11 11:34:08 2024 -0400

    Fix #1337
---
 .../src/main/webui/src/topology/CustomNode.tsx     | 22 ++++-
 .../src/main/webui/src/topology/topology.css       | 10 +++
 karavan-designer/public/example/demo.camel.yaml    | 95 ++++++----------------
 karavan-designer/src/topology/CustomNode.tsx       | 22 ++++-
 karavan-designer/src/topology/TopologyApi.tsx      |  2 +-
 karavan-designer/src/topology/topology.css         | 10 +++
 karavan-space/src/topology/CustomNode.tsx          | 22 ++++-
 karavan-space/src/topology/topology.css            | 10 +++
 8 files changed, 115 insertions(+), 78 deletions(-)

diff --git a/karavan-app/src/main/webui/src/topology/CustomNode.tsx 
b/karavan-app/src/main/webui/src/topology/CustomNode.tsx
index 44f6e068..e0a022d0 100644
--- a/karavan-app/src/main/webui/src/topology/CustomNode.tsx
+++ b/karavan-app/src/main/webui/src/topology/CustomNode.tsx
@@ -40,12 +40,27 @@ function getIcon(data: any) {
     return <RegionsIcon/>;
 }
 
-const CustomNode: React.FC<any> = observer(({ element, ...rest }) => {
+function getAttachments(data: any) {
+    if (data?.step?.dslName === 'RouteDefinition' && data?.step?.autoStartup 
!== false) {
+        const x = 0;
+        const y = 0;
+        const rx = x + 9;
+        const ry = y + 9;
+        return (
+            <g className="pf-topology__node__label__badge auto-start" 
transform="translate(-4, -4)">
+                <rect className="badge" x={x} width="22" y={y} height="17" 
rx={rx} ry={ry}></rect>
+                <text className='text' x={rx + 2} y={ry} textAnchor="middle" 
dy="0.35em">A</text>
+            </g>
+        )
+    } else <></>
+}
+
+const CustomNode: React.FC<any> = observer(({element, ...rest}) => {
 
     const data = element.getData();
-    const badge:string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0,1).toUpperCase();
+    const badge: string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0, 1).toUpperCase();
     if (element.getLabel()?.length > 30) {
-        element.setLabel(element.getLabel()?.substring(0,30) + '...');
+        element.setLabel(element.getLabel()?.substring(0, 30) + '...');
     }
 
     return (
@@ -55,6 +70,7 @@ const CustomNode: React.FC<any> = observer(({ element, 
...rest }) => {
             className="common-node"
             scaleLabel={false}
             element={element}
+            attachments={getAttachments(data)}
             {...rest}
         >
             {getIcon(data)}
diff --git a/karavan-app/src/main/webui/src/topology/topology.css 
b/karavan-app/src/main/webui/src/topology/topology.css
index 0521a9a9..1828bd1e 100644
--- a/karavan-app/src/main/webui/src/topology/topology.css
+++ b/karavan-app/src/main/webui/src/topology/topology.css
@@ -105,4 +105,14 @@
 
 .karavan .topology-panel .pf-topology__group 
.pf-topology__node__label__background {
     opacity: 0.5;
+}
+
+.karavan .topology-panel .auto-start .badge {
+    fill: var(--pf-topology__node__label__background--Fill);
+    stroke-width: var(--pf-topology__node__label__background--StrokeWidth);
+    stroke: var(--pf-topology__node__label__background--Stroke);
+}
+
+.karavan .topology-panel .auto-start .text {
+    fill: var(--pf-topology__node__label__text--Fill);
 }
\ No newline at end of file
diff --git a/karavan-designer/public/example/demo.camel.yaml 
b/karavan-designer/public/example/demo.camel.yaml
index c41432b0..f4456979 100644
--- a/karavan-designer/public/example/demo.camel.yaml
+++ b/karavan-designer/public/example/demo.camel.yaml
@@ -1,76 +1,35 @@
 - route:
-    id: route-654e
-    description: Error Handler
-    nodePrefixId: route-a06
+    id: route-b0b7
+    nodePrefixId: route-dfc
     from:
-      id: from-6dd1
-      description: DLQ
-      uri: direct
-      parameters:
-        name: dlq
-      steps:
-        - log:
-            id: log-bf00
-            message: "ERROR: ${exception}"
-- route:
-    id: route-c11a
-    description: From
-    nodePrefixId: route-ae1
-    autoStartup: true
-    from:
-      id: from-b6f1
-      description: Command received
-      uri: kamelet:kafka-not-secured-source
+      id: from-70b1
+      uri: kamelet:timer-source
       parameters:
-        topic: wh_commands
-        bootstrapServers: kafka:9092
-        autoCommitEnable: true
-        consumerGroup: lightstep
+        message: Hello
+        period: 1
       steps:
-        - setVariable:
-            id: setVariable-61a9
-            description: Set command
-            name: command
-            expression:
-              simple:
-                id: simple-965d
-                expression: ${body}
-        - setBody:
-            id: setBody-0515
-            description: Prepare message
-            expression:
-              groovy:
-                id: groovy-bb4f
-                expression: >-
-
-        - log:
-            id: log-7190
-            description: Log message
-            message: "Message: ${body}"
+        - aggregate:
+            id: aggregate-46cb
+            completionSize: 1
+        - to:
+            id: to-df39
+            uri: amqp
+        - aggregate:
+            id: aggregate-1193
+            completionSize: 121212
+            completionTimeout: "{{bean:beanName.method}}"
         - to:
-            id: to-bb55
-            description: Call
-            uri: netty
-            parameters:
-              protocol: tcp
+            id: to-1600
+            uri: kamelet:kafka-sink
+- rest:
+    id: rest-d262
+    get:
+      - id: get-7de4
+        to: direct:test
 - route:
-    id: route-42e3
-    description: Events from box
-    nodePrefixId: route-de0
-    autoStartup: false
+    id: test
     from:
-      id: from-5b8a
-      description: Event received
-      uri: netty
+      id: from-aeed
+      uri: direct
       parameters:
-        protocol: tcp
-
-      steps:
-        - log:
-            id: log-63db
-            message: ${body}
-- routeConfiguration:
-    errorHandler:
-      deadLetterChannel:
-        id: deadLetterChannel-3bf9
-        deadLetterUri: direct:dlq
+        name: test
diff --git a/karavan-designer/src/topology/CustomNode.tsx 
b/karavan-designer/src/topology/CustomNode.tsx
index 44f6e068..e0a022d0 100644
--- a/karavan-designer/src/topology/CustomNode.tsx
+++ b/karavan-designer/src/topology/CustomNode.tsx
@@ -40,12 +40,27 @@ function getIcon(data: any) {
     return <RegionsIcon/>;
 }
 
-const CustomNode: React.FC<any> = observer(({ element, ...rest }) => {
+function getAttachments(data: any) {
+    if (data?.step?.dslName === 'RouteDefinition' && data?.step?.autoStartup 
!== false) {
+        const x = 0;
+        const y = 0;
+        const rx = x + 9;
+        const ry = y + 9;
+        return (
+            <g className="pf-topology__node__label__badge auto-start" 
transform="translate(-4, -4)">
+                <rect className="badge" x={x} width="22" y={y} height="17" 
rx={rx} ry={ry}></rect>
+                <text className='text' x={rx + 2} y={ry} textAnchor="middle" 
dy="0.35em">A</text>
+            </g>
+        )
+    } else <></>
+}
+
+const CustomNode: React.FC<any> = observer(({element, ...rest}) => {
 
     const data = element.getData();
-    const badge:string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0,1).toUpperCase();
+    const badge: string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0, 1).toUpperCase();
     if (element.getLabel()?.length > 30) {
-        element.setLabel(element.getLabel()?.substring(0,30) + '...');
+        element.setLabel(element.getLabel()?.substring(0, 30) + '...');
     }
 
     return (
@@ -55,6 +70,7 @@ const CustomNode: React.FC<any> = observer(({ element, 
...rest }) => {
             className="common-node"
             scaleLabel={false}
             element={element}
+            attachments={getAttachments(data)}
             {...rest}
         >
             {getIcon(data)}
diff --git a/karavan-designer/src/topology/TopologyApi.tsx 
b/karavan-designer/src/topology/TopologyApi.tsx
index b297b186..174ad6a6 100644
--- a/karavan-designer/src/topology/TopologyApi.tsx
+++ b/karavan-designer/src/topology/TopologyApi.tsx
@@ -82,13 +82,13 @@ export function getRoutes(tins: TopologyRouteNode[]): 
NodeModel[] {
             width: NODE_DIAMETER,
             height: NODE_DIAMETER,
             shape: NodeShape.rect,
+            status: NodeStatus.default,
             data: {
                 isAlternate: false,
                 type: 'route',
                 icon: 'route',
                 step: tin.route,
                 routeId: tin.routeId,
-                autoStartup: tin.route.autoStartup !== false,
                 fileName: tin.fileName,
             }
         }
diff --git a/karavan-designer/src/topology/topology.css 
b/karavan-designer/src/topology/topology.css
index 0521a9a9..1828bd1e 100644
--- a/karavan-designer/src/topology/topology.css
+++ b/karavan-designer/src/topology/topology.css
@@ -105,4 +105,14 @@
 
 .karavan .topology-panel .pf-topology__group 
.pf-topology__node__label__background {
     opacity: 0.5;
+}
+
+.karavan .topology-panel .auto-start .badge {
+    fill: var(--pf-topology__node__label__background--Fill);
+    stroke-width: var(--pf-topology__node__label__background--StrokeWidth);
+    stroke: var(--pf-topology__node__label__background--Stroke);
+}
+
+.karavan .topology-panel .auto-start .text {
+    fill: var(--pf-topology__node__label__text--Fill);
 }
\ No newline at end of file
diff --git a/karavan-space/src/topology/CustomNode.tsx 
b/karavan-space/src/topology/CustomNode.tsx
index 44f6e068..e0a022d0 100644
--- a/karavan-space/src/topology/CustomNode.tsx
+++ b/karavan-space/src/topology/CustomNode.tsx
@@ -40,12 +40,27 @@ function getIcon(data: any) {
     return <RegionsIcon/>;
 }
 
-const CustomNode: React.FC<any> = observer(({ element, ...rest }) => {
+function getAttachments(data: any) {
+    if (data?.step?.dslName === 'RouteDefinition' && data?.step?.autoStartup 
!== false) {
+        const x = 0;
+        const y = 0;
+        const rx = x + 9;
+        const ry = y + 9;
+        return (
+            <g className="pf-topology__node__label__badge auto-start" 
transform="translate(-4, -4)">
+                <rect className="badge" x={x} width="22" y={y} height="17" 
rx={rx} ry={ry}></rect>
+                <text className='text' x={rx + 2} y={ry} textAnchor="middle" 
dy="0.35em">A</text>
+            </g>
+        )
+    } else <></>
+}
+
+const CustomNode: React.FC<any> = observer(({element, ...rest}) => {
 
     const data = element.getData();
-    const badge:string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0,1).toUpperCase();
+    const badge: string = data.badge === 'REST' ? data.badge : 
data.badge?.substring(0, 1).toUpperCase();
     if (element.getLabel()?.length > 30) {
-        element.setLabel(element.getLabel()?.substring(0,30) + '...');
+        element.setLabel(element.getLabel()?.substring(0, 30) + '...');
     }
 
     return (
@@ -55,6 +70,7 @@ const CustomNode: React.FC<any> = observer(({ element, 
...rest }) => {
             className="common-node"
             scaleLabel={false}
             element={element}
+            attachments={getAttachments(data)}
             {...rest}
         >
             {getIcon(data)}
diff --git a/karavan-space/src/topology/topology.css 
b/karavan-space/src/topology/topology.css
index 0521a9a9..1828bd1e 100644
--- a/karavan-space/src/topology/topology.css
+++ b/karavan-space/src/topology/topology.css
@@ -105,4 +105,14 @@
 
 .karavan .topology-panel .pf-topology__group 
.pf-topology__node__label__background {
     opacity: 0.5;
+}
+
+.karavan .topology-panel .auto-start .badge {
+    fill: var(--pf-topology__node__label__background--Fill);
+    stroke-width: var(--pf-topology__node__label__background--StrokeWidth);
+    stroke: var(--pf-topology__node__label__background--Stroke);
+}
+
+.karavan .topology-panel .auto-start .text {
+    fill: var(--pf-topology__node__label__text--Fill);
 }
\ No newline at end of file

Reply via email to