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>)
}