You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2021/11/13 01:49:08 UTC

[camel-karavan] branch main updated: Fixed #79 (#88)

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 6f2f7cf  Fixed #79 (#88)
6f2f7cf is described below

commit 6f2f7cf1b86677785f193a08747b2ca2fea48628
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Fri Nov 12 20:49:00 2021 -0500

    Fixed #79 (#88)
---
 .../src/main/resources/application.properties      |  2 +-
 karavan-app/src/main/webapp/src/Main.tsx           | 22 +++++++++------
 .../main/webapp/src/integrations/DesignerPage.tsx  |  6 ++--
 .../webapp/src/integrations/IntegrationCard.tsx    |  4 +--
 .../webapp/src/integrations/IntegrationPage.tsx    | 32 ++++++++++++++++------
 5 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/karavan-app/src/main/resources/application.properties b/karavan-app/src/main/resources/application.properties
index 14a6625..0c59944 100644
--- a/karavan-app/src/main/resources/application.properties
+++ b/karavan-app/src/main/resources/application.properties
@@ -1,4 +1,4 @@
-karavan.version=0.0.3
+karavan.version=0.0.6
 
 karavan.folder.kamelets=kamelets
 karavan.folder.components=components
diff --git a/karavan-app/src/main/webapp/src/Main.tsx b/karavan-app/src/main/webapp/src/Main.tsx
index 94bf84f..ed33daf 100644
--- a/karavan-app/src/main/webapp/src/Main.tsx
+++ b/karavan-app/src/main/webapp/src/Main.tsx
@@ -117,8 +117,9 @@ export class Main extends React.Component<Props, State> {
 
     toolBar = (version: string) => (
         <div className="top-toolbar">
-            <Flex direction={{default: "row"}} justifyContent={{default: "justifyContentSpaceBetween"}} style={{width:"100%"}}>
-                <FlexItem style={{marginTop: "auto", marginBottom:"auto"}}>
+            <Flex direction={{default: "row"}} justifyContent={{default: "justifyContentSpaceBetween"}}
+                  style={{width: "100%"}}>
+                <FlexItem style={{marginTop: "auto", marginBottom: "auto"}}>
                     <Flex direction={{default: "row"}}>
                         <FlexItem>
                             <TextContent>
@@ -132,7 +133,7 @@ export class Main extends React.Component<Props, State> {
                         </FlexItem>
                     </Flex>
                 </FlexItem>
-                <FlexItem style={{marginTop: "auto", marginBottom:"auto"}}>
+                <FlexItem style={{marginTop: "auto", marginBottom: "auto"}}>
                     <PageHeaderTools>
                         <PageHeaderToolsGroup>
                             <PageHeaderToolsItem>
@@ -142,9 +143,11 @@ export class Main extends React.Component<Props, State> {
                                 <Dropdown
                                     isPlain
                                     position="right"
-                                    onSelect={event => {}}
+                                    onSelect={event => {
+                                    }}
                                     isOpen={false}
-                                    toggle={<DropdownToggle onToggle={isOpen => {}}>cameleer</DropdownToggle>}
+                                    toggle={<DropdownToggle onToggle={isOpen => {
+                                    }}>cameleer</DropdownToggle>}
                                     // dropdownItems={userDropdownItems}
                                 />
                             </PageHeaderToolsItem>
@@ -208,11 +211,11 @@ export class Main extends React.Component<Props, State> {
         this.setState({alerts: mess})
     }
 
-    onIntegrationSelect = (name: string) => {
-        KaravanApi.getIntegration(name, res => {
+    onIntegrationSelect = (filename: string) => {
+        KaravanApi.getIntegration(filename, res => {
             if (res.status === 200) {
                 const code: string = res.data;
-                const i = CamelYaml.yamlToIntegration(code);
+                const i = CamelYaml.yamlToIntegration(filename, code);
                 this.setState({isNavOpen: false, pageId: 'designer', integration: i});
             } else {
                 this.toast("Error", res.statusText, "danger");
@@ -241,7 +244,8 @@ export class Main extends React.Component<Props, State> {
                                  onCreate={this.onIntegrationCreate}/>}
                 {this.state.pageId === 'configuration' && <ConfigurationPage/>}
                 {this.state.pageId === 'kamelets' && <KameletsPage/>}
-                {this.state.pageId === 'designer' && <DesignerPage mode={this.state.mode} integration={this.state.integration}/>}
+                {this.state.pageId === 'designer' &&
+                <DesignerPage mode={this.state.mode} integration={this.state.integration}/>}
                 <Modal
                     title="Confirmation"
                     variant={ModalVariant.small}
diff --git a/karavan-app/src/main/webapp/src/integrations/DesignerPage.tsx b/karavan-app/src/main/webapp/src/integrations/DesignerPage.tsx
index cfd2e3e..48ad968 100644
--- a/karavan-app/src/main/webapp/src/integrations/DesignerPage.tsx
+++ b/karavan-app/src/main/webapp/src/integrations/DesignerPage.tsx
@@ -40,7 +40,7 @@ export class DesignerPage extends React.Component<Props, State> {
     }
 
     post = () => {
-        KaravanApi.postIntegrations(this.state.integration.metadata.name + ".yaml", this.state.yaml, res => {
+        KaravanApi.postIntegrations(this.state.integration.metadata.name, this.state.yaml, res => {
             if (res.status === 200) {
                 console.log(res) //TODO show notification
             } else {
@@ -50,7 +50,7 @@ export class DesignerPage extends React.Component<Props, State> {
     }
 
     publish = () => {
-        KaravanApi.publishIntegration(this.state.integration.metadata.name + ".yaml", this.state.yaml, res => {
+        KaravanApi.publishIntegration(this.state.integration.metadata.name, this.state.yaml, res => {
             if (res.status === 200) {
                 console.log(res) //TODO show notification
             } else {
@@ -131,7 +131,7 @@ export class DesignerPage extends React.Component<Props, State> {
                     <KaravanDesigner
                         dark={false}
                         key={this.state.key}
-                        name={this.state.name}
+                        filename={this.state.name}
                         yaml={this.state.yaml}
                         onSave={(name, yaml) => this.save(name, yaml)}
                         borderColor="#fb8824"
diff --git a/karavan-app/src/main/webapp/src/integrations/IntegrationCard.tsx b/karavan-app/src/main/webapp/src/integrations/IntegrationCard.tsx
index 27273e3..4467772 100644
--- a/karavan-app/src/main/webapp/src/integrations/IntegrationCard.tsx
+++ b/karavan-app/src/main/webapp/src/integrations/IntegrationCard.tsx
@@ -1,6 +1,6 @@
 import React from 'react';
 import {
-    CardHeader, Card, CardTitle, CardBody, Button, CardActions,
+    CardHeader, Card, CardTitle, CardBody, Button, CardActions, CardFooter,
 } from '@patternfly/react-core';
 import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-icon";
 import '../designer/karavan.css';
@@ -46,4 +46,4 @@ export class IntegrationCard extends React.Component<Props, State> {
             </Card>
         );
     }
-};
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/karavan-app/src/main/webapp/src/integrations/IntegrationPage.tsx b/karavan-app/src/main/webapp/src/integrations/IntegrationPage.tsx
index 091ebf4..3442629 100644
--- a/karavan-app/src/main/webapp/src/integrations/IntegrationPage.tsx
+++ b/karavan-app/src/main/webapp/src/integrations/IntegrationPage.tsx
@@ -8,7 +8,7 @@ import {
     PageSection,
     TextContent,
     Text,
-    Button, Modal, FormGroup, ModalVariant
+    Button, Modal, FormGroup, ModalVariant, Switch, Form
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
 import {IntegrationCard} from "./IntegrationCard";
@@ -16,6 +16,8 @@ import {MainToolbar} from "../MainToolbar";
 import RefreshIcon from '@patternfly/react-icons/dist/esm/icons/sync-alt-icon';
 import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
 import {Integration} from "../designer/model/CamelModel";
+import {CamelApi} from "../designer/api/CamelApi";
+import {CamelUi} from "../designer/api/CamelUi";
 
 interface Props {
     integrations: []
@@ -31,6 +33,7 @@ interface State {
     integrations: [],
     isModalOpen: boolean,
     newName: string
+    crd: boolean
 }
 
 export class IntegrationPage extends React.Component<Props, State> {
@@ -40,7 +43,8 @@ export class IntegrationPage extends React.Component<Props, State> {
         path: '',
         integrations: this.props.integrations,
         isModalOpen: false,
-        newName: ''
+        newName: '',
+        crd: true
     };
 
     tools = () => (<Toolbar id="toolbar-group-types">
@@ -66,7 +70,9 @@ export class IntegrationPage extends React.Component<Props, State> {
         this.setState({isModalOpen:false, newName:""});
     }
     saveAndCloseModal = () => {
-        const i = Integration.createNew(this.state.newName);
+        const name = CamelUi.nameFromTitle(this.state.newName) + ".yaml";
+        const i = Integration.createNew(name);
+        i.crd = this.state.crd;
         this.props.onCreate.call(this, i);
         this.setState({isModalOpen:false, newName:""});
     }
@@ -93,11 +99,21 @@ export class IntegrationPage extends React.Component<Props, State> {
                         <Button key="cancel" variant="secondary" onClick={this.closeModal}>Cancel</Button>
                     ]}
                 >
-                    <FormGroup label="Title" fieldId="title" isRequired>
-                        <TextInput className="text-field" type="text" id="title" name="title"
-                                   value={this.state.newName}
-                                   onChange={e => this.setState({newName: e})}/>
-                    </FormGroup>
+                    <Form isHorizontal={true}>
+                        <FormGroup label="Title" fieldId="title" isRequired>
+                            <TextInput className="text-field" type="text" id="title" name="title"
+                                       value={this.state.newName}
+                                       onChange={e => this.setState({newName: e})}/>
+                        </FormGroup>
+                        <FormGroup label="CRD" fieldId="crd" isRequired>
+                            <Switch
+                                id="crd" name="crd"
+                                value={this.state.crd.toString()}
+                                aria-label="crd"
+                                isChecked={this.state.crd}
+                                onChange={e => this.setState({crd: e})}/>
+                        </FormGroup>
+                    </Form>
                 </Modal>
             </PageSection>
         );