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 93360d1 Delete confirmation (#170)
93360d1 is described below
commit 93360d1479e3dab14a699f76e0f04cf012dbd1ab
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Wed Feb 2 17:34:43 2022 -0500
Delete confirmation (#170)
---
karavan-designer/src/designer/KaravanDesigner.tsx | 84 ++++++++++++++++-------
karavan-designer/src/designer/karavan.css | 4 ++
karavan-designer/src/index.css | 2 +-
karavan-vscode/webview/index.css | 14 ++++
4 files changed, 77 insertions(+), 27 deletions(-)
diff --git a/karavan-designer/src/designer/KaravanDesigner.tsx
b/karavan-designer/src/designer/KaravanDesigner.tsx
index 0b2d0fc..60ce721 100644
--- a/karavan-designer/src/designer/KaravanDesigner.tsx
+++ b/karavan-designer/src/designer/KaravanDesigner.tsx
@@ -16,7 +16,7 @@
*/
import React from 'react';
import {
- Button, Gallery, Modal,
+ Button, Gallery, Modal, ModalVariant,
PageSection, Tab, Tabs, TabTitleText,
} from '@patternfly/react-core';
import './karavan.css';
@@ -47,6 +47,7 @@ interface State {
integration: Integration
selectedStep?: CamelElement
showSelector: boolean
+ showDeleteConfirmation: boolean
parentId: string
parentDsl?: string
showSteps: boolean
@@ -64,6 +65,7 @@ export class KaravanDesigner extends React.Component<Props,
State> {
? CamelDefinitionYaml.yamlToIntegration(this.props.filename,
this.props.yaml)
: Integration.createNew(this.props.filename),
showSelector: false,
+ showDeleteConfirmation: false,
parentId: '',
showSteps: true,
selectedUuid: '',
@@ -81,7 +83,7 @@ export class KaravanDesigner extends React.Component<Props,
State> {
window.removeEventListener('resize', this.handleResize);
}
- handleResize = ()=>{
+ handleResize = () => {
this.setState({key: Math.random().toString()});
}
@@ -109,18 +111,24 @@ export class KaravanDesigner extends
React.Component<Props, State> {
this.setState({integration: i, key: Math.random().toString()});
}
- deleteElement = (id: string) => {
+ showDeleteConfirmation = (id: string) => {
+ this.setState({selectedUuid:id, showSelector: false,
showDeleteConfirmation: true});
+ }
+
+ deleteElement = () => {
+ const id = this.state.selectedUuid;
const i =
CamelDefinitionApiExt.deleteStepFromIntegration(this.state.integration, id);
this.setState({
integration: i,
showSelector: false,
+ showDeleteConfirmation: false,
key: Math.random().toString(),
selectedStep: undefined,
selectedUuid: ''
});
const el = new CamelElement("");
el.uuid = id;
- EventBus.sendPosition("delete", el,undefined, new DOMRect(), new
DOMRect(), 0);
+ EventBus.sendPosition("delete", el, undefined, new DOMRect(), new
DOMRect(), 0);
}
selectElement = (element: CamelElement) => {
@@ -142,7 +150,7 @@ export class KaravanDesigner extends React.Component<Props,
State> {
this.addStep(from, parentId)
break;
case 'ToDefinition' :
- const to = CamelDefinitionApi.createStep(dsl.dsl, {uri:
dsl.uri});
+ const to = CamelDefinitionApi.createStep(dsl.dsl, {uri:
dsl.uri});
this.addStep(to, parentId)
break;
case 'ToDynamicDefinition' :
@@ -150,7 +158,7 @@ export class KaravanDesigner extends React.Component<Props,
State> {
this.addStep(toD, parentId)
break;
case 'KameletDefinition' :
- const kamelet = CamelDefinitionApi.createStep(dsl.dsl,{name:
dsl.name});
+ const kamelet = CamelDefinitionApi.createStep(dsl.dsl, {name:
dsl.name});
this.addStep(kamelet, parentId)
break;
default:
@@ -189,25 +197,61 @@ export class KaravanDesigner extends
React.Component<Props, State> {
});
}
- onResizePage(el: HTMLDivElement | null){
+ onResizePage(el: HTMLDivElement | null) {
const rect = el?.getBoundingClientRect();
- if (el && rect && (rect?.width !== this.state.width || rect.height !==
this.state.height || rect.top !== this.state.top)){
+ if (el && rect && (rect?.width !== this.state.width || rect.height !==
this.state.height || rect.top !== this.state.top)) {
this.setState({width: rect.width, height: rect.height, top:
rect.top});
}
}
+ getSelectorModal() {
+ return (
+ <Modal
+ title={this.state.parentDsl === undefined ? "Select
source/from" : "Select step"}
+ width={'90%'}
+ className='dsl-modal'
+ isOpen={this.state.showSelector}
+ onClose={() => this.closeDslSelector()}
+ actions={{}}>
+ <DslSelector
+ dark={this.props.dark}
+ parentId={this.state.parentId}
+ parentDsl={this.state.parentDsl}
+ showSteps={this.state.showSteps}
+ onDslSelect={this.onDslSelect}/>
+ </Modal>)
+ }
+
+ getDeleteConfirmation() {
+ return (<Modal
+ className="modal-delete"
+ title="Confirmation"
+ isOpen={this.state.showDeleteConfirmation}
+ onClose={() => this.setState({showDeleteConfirmation: false})}
+ actions={[
+ <Button key="confirm" variant="primary" onClick={e =>
this.deleteElement()}>Delete</Button>,
+ <Button key="cancel" variant="link"
+ onClick={e => this.setState({showDeleteConfirmation:
false})}>Cancel</Button>
+ ]}
+ onEscapePress={e => this.setState({showDeleteConfirmation:
false})}>
+ <div>
+ Delete element from integration?
+ </div>
+ </Modal>)
+ }
+
render() {
return (
<PageSection className="dsl-page" isFilled padding={{default:
'noPadding'}}>
<div className="dsl-page-columns">
- <div className="graph" onScroll={event => {}}>
+ <div className="graph">
<DslConnections height={this.state.height}
width={this.state.width} top={this.state.top}
integration={this.state.integration}/>
- <div className="flows" data-click="FLOWS"
onClick={event => this.unselectElement(event)}
+ <div className="flows" data-click="FLOWS"
onClick={event => this.unselectElement(event)}
ref={el => this.onResizePage(el)}>
- {this.state.integration.spec.flows?.map((from:any,
index: number) => (
+ {this.state.integration.spec.flows?.map((from:
any, index: number) => (
<DslElement key={from.uuid + this.state.key}
openSelector={this.openSelector}
- deleteElement={this.deleteElement}
+
deleteElement={this.showDeleteConfirmation}
selectElement={this.selectElement}
moveElement={this.moveElement}
selectedUuid={this.state.selectedUuid}
@@ -235,20 +279,8 @@ export class KaravanDesigner extends
React.Component<Props, State> {
onPropertyUpdate={this.onPropertyUpdate}
/>
</div>
- <Modal
- title={this.state.parentDsl === undefined ? "Select
source/from" : "Select step"}
- width={'90%'}
- className='dsl-modal'
- isOpen={this.state.showSelector}
- onClose={() => this.closeDslSelector()}
- actions={{}}>
- <DslSelector
- dark={this.props.dark}
- parentId={this.state.parentId}
- parentDsl={this.state.parentDsl}
- showSteps={this.state.showSteps}
- onDslSelect={this.onDslSelect}/>
- </Modal>
+ {this.getSelectorModal()}
+ {this.getDeleteConfirmation()}
</PageSection>
);
}
diff --git a/karavan-designer/src/designer/karavan.css
b/karavan-designer/src/designer/karavan.css
index 410f883..60cff7a 100644
--- a/karavan-designer/src/designer/karavan.css
+++ b/karavan-designer/src/designer/karavan.css
@@ -507,6 +507,10 @@
visibility: visible;
}
+.modal-delete {
+ width: 350px;
+}
+
.step-element .header {
height: 50px;
}
diff --git a/karavan-designer/src/index.css b/karavan-designer/src/index.css
index 33df02d..0338f83 100644
--- a/karavan-designer/src/index.css
+++ b/karavan-designer/src/index.css
@@ -7,7 +7,7 @@ body,
:root {
--pf-global--primary-color--100: #fca338 !important;
- --pf-global--primary-color--200: #fee3c3 !important;
+ --pf-global--primary-color--200: #fb8824 !important;
--pf-global--primary-color--light-100: #fca338 !important;
--pf-global--primary-color--dark-100: #fca338 !important;
diff --git a/karavan-vscode/webview/index.css b/karavan-vscode/webview/index.css
index 10893cb..bbfda18 100644
--- a/karavan-vscode/webview/index.css
+++ b/karavan-vscode/webview/index.css
@@ -7,6 +7,16 @@ body,
:root {
--pf-global--primary-color--100: rgb(239, 166, 79) !important;
+ --pf-global--primary-color--200: rgb(235, 146, 40) !important;
+ --pf-global--primary-color--light-100: rgb(239, 166, 79)!important;
+ --pf-global--primary-color--dark-100: rgb(239, 166, 79) !important;
+
+ --pf-global--link--Color: rgb(239, 166, 79) !important;
+ --pf-global--link--Color--hover: rgb(235, 146, 40) !important;
+ --pf-global--link--Color--light: rgb(239, 166, 79) !important;
+ --pf-global--link--Color--light--hover: rgb(239, 166, 79) !important;
+ --pf-global--link--Color--dark: rgb(239, 166, 79) !important;
+ --pf-global--link--Color--dark--hover: rgb(235, 146, 40) !important;
}
.vscode-dark .karavan {
@@ -194,4 +204,8 @@ body,
.vscode-dark .karavan .dsl-page .properties .dataformat,
.vscode-dark .karavan .dsl-page .properties .parameters {
border-style: none;
+}
+
+.vscode-dark .modal-delete {
+ width: 350px;
}
\ No newline at end of file