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 a5338af  Fix #228 delete of 'from' deletes the integration (#283)
a5338af is described below

commit a5338aff7349e00f71fc76ba1d4b02ed001f25df
Author: cgballance <[email protected]>
AuthorDate: Wed Apr 6 14:52:05 2022 -0400

    Fix #228 delete of 'from' deletes the integration (#283)
---
 karavan-designer/src/designer/route/DslElement.tsx |  2 +-
 .../src/designer/route/RouteDesigner.tsx           | 29 +++++++++++++++++++---
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/karavan-designer/src/designer/route/DslElement.tsx 
b/karavan-designer/src/designer/route/DslElement.tsx
index 875d928..078f037 100644
--- a/karavan-designer/src/designer/route/DslElement.tsx
+++ b/karavan-designer/src/designer/route/DslElement.tsx
@@ -201,7 +201,7 @@ export class DslElement extends React.Component<Props, 
State> {
                     {this.getHeaderTextWithTooltip(step)}
                 </div>
                 {showInsertButton && this.getInsertElementButton()}
-                {this.state.step.dslName !== 'FromDefinition' && 
this.getDeleteButton()}
+                {this.getDeleteButton()}
                 {showAddButton && this.getAddElementButton()}
             </div>
         )
diff --git a/karavan-designer/src/designer/route/RouteDesigner.tsx 
b/karavan-designer/src/designer/route/RouteDesigner.tsx
index fcdbe6b..3c82f43 100644
--- a/karavan-designer/src/designer/route/RouteDesigner.tsx
+++ b/karavan-designer/src/designer/route/RouteDesigner.tsx
@@ -31,7 +31,7 @@ import {DslSelector} from "./DslSelector";
 import {DslMetaModel} from "../utils/DslMetaModel";
 import {DslProperties} from "./DslProperties";
 import {CamelUtil} from "karavan-core/lib/api/CamelUtil";
-import {FromDefinition} from "karavan-core/lib/model/CamelDefinition";
+import {FromDefinition, RouteDefinition} from 
"karavan-core/lib/model/CamelDefinition";
 import {CamelElement, Integration} from 
"karavan-core/lib/model/IntegrationDefinition";
 import {CamelDefinitionApiExt} from 
"karavan-core/lib/api/CamelDefinitionApiExt";
 import {CamelDefinitionApi} from "karavan-core/lib/api/CamelDefinitionApi";
@@ -53,6 +53,7 @@ interface State {
     selectedStep?: CamelElement
     showSelector: boolean
     showDeleteConfirmation: boolean
+    deleteMessage: string
     parentId: string
     parentDsl?: string
     selectedPosition?: number
@@ -74,6 +75,7 @@ export class RouteDesigner extends React.Component<Props, 
State> {
         integration: this.props.integration,
         showSelector: false,
         showDeleteConfirmation: false,
+        deleteMessage: '',
         parentId: '',
         showSteps: true,
         selectedUuid: '',
@@ -149,7 +151,26 @@ export class RouteDesigner extends React.Component<Props, 
State> {
     }
 
     showDeleteConfirmation = (id: string) => {
-        this.setState({selectedUuid: id, showSelector: false, 
showDeleteConfirmation: true});
+        var message: string ;
+        
+        var ce: CamelElement ;
+        ce = CamelDefinitionApiExt.findElementInIntegration( 
this.state.integration, id )!;
+         if( ce.dslName === 'FromDefinition' ) { // Get the RouteDefinition 
for this.  Use its uuid.
+            var flows = this.state.integration.spec.flows!;
+            for( var i = 0 ; i < flows.length; i++ ) {
+                var routeDefinition : RouteDefinition = flows[i] ;
+                if( routeDefinition.from.uuid === id ) {
+                    id = routeDefinition.uuid ;
+                    break;
+                }
+            }
+            message = 'Deleting this Element will delete the entire 
integration. Ok?' ;
+         } else if( ce.dslName === 'RouteDefinition' ) {
+            message = 'Delete integration?' ;
+         } else {
+            message = 'Delete element from integration?';
+         }
+        this.setState({selectedUuid: id, showSelector: false, 
showDeleteConfirmation: true, deleteMessage: message});
     }
 
     deleteElement = () => {
@@ -159,6 +180,7 @@ export class RouteDesigner extends React.Component<Props, 
State> {
             integration: i,
             showSelector: false,
             showDeleteConfirmation: false,
+            deleteMessage: '',
             key: Math.random().toString(),
             selectedStep: undefined,
             selectedUuid: '',
@@ -264,6 +286,7 @@ export class RouteDesigner extends React.Component<Props, 
State> {
     }
 
     getDeleteConfirmation() {
+        var htmlContent: string = this.state.deleteMessage ;
         return (<Modal
             className="modal-delete"
             title="Confirmation"
@@ -276,7 +299,7 @@ export class RouteDesigner extends React.Component<Props, 
State> {
             ]}
             onEscapePress={e => this.setState({showDeleteConfirmation: 
false})}>
             <div>
-                Delete element from integration?
+                {htmlContent}
             </div>
         </Modal>)
     }

Reply via email to