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 2022/06/14 17:27:34 UTC

[camel-karavan] branch main updated: Saas fix4 (#368)

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 99a8616  Saas fix4 (#368)
99a8616 is described below

commit 99a8616db947c70e5f23565ea73e37e5357efd57
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Jun 14 13:27:29 2022 -0400

    Saas fix4 (#368)
    
    * Readonly properties
    
    * Improvements
---
 .../org/apache/camel/karavan/model/Project.java    |  4 ++--
 .../camel/karavan/service/InfinispanService.java   |  3 +++
 karavan-app/src/main/webapp/src/Main.tsx           |  2 +-
 .../main/webapp/src/builder/PropertiesTable.tsx    | 18 +++++++--------
 karavan-app/src/main/webapp/src/index.css          |  8 +++++++
 .../src/main/webapp/src/projects/ProjectsPage.tsx  |  4 +---
 karavan-designer/src/builder/PropertiesTable.tsx   | 26 ++++++++++++----------
 karavan-docker/Dockerfile                          |  1 -
 8 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java b/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java
index 97d77fd..6a13009 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java
@@ -46,12 +46,12 @@ public class Project {
         this.runtime = runtime;
     }
 
-    private String toFolder(String artifactId, String version){
+    public static String toFolder(String artifactId, String version){
         String folder = (artifactId+version).replaceAll("[^A-Za-z0-9 ]", "_");
         return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, folder);
     }
 
-    private String toKey(String groupId, String artifactId, String version){
+    public static String toKey(String groupId, String artifactId, String version){
         return groupId + ":" + artifactId + ":" + version;
     }
 
diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java
index b90fbca..a6f5e1c 100644
--- a/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java
+++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java
@@ -107,6 +107,9 @@ public class InfinispanService {
     public void saveProject(Project project) {
         GroupedKey key = GroupedKey.create(project.getKey(), project.getKey());
         boolean isNew = !projects.containsKey(key);
+        if (project.getFolder() == null || project.getFolder().trim().length() == 0) {
+            project.setFolder(Project.toFolder(project.getArtifactId(), project.getVersion()));
+        }
         projects.put(key, project);
         if (isNew){
             String filename = "application.properties";
diff --git a/karavan-app/src/main/webapp/src/Main.tsx b/karavan-app/src/main/webapp/src/Main.tsx
index 3e306e2..edc2b16 100644
--- a/karavan-app/src/main/webapp/src/Main.tsx
+++ b/karavan-app/src/main/webapp/src/Main.tsx
@@ -136,7 +136,7 @@ export class Main extends React.Component<Props, State> {
         ]
         return (<Flex className="nav-buttons" direction={{default: "column"}} style={{height:"100%"}} spaceItems={{default:"spaceItemsNone"}}>
             <FlexItem alignSelf={{default:"alignSelfCenter"}}>
-                <Tooltip content={"Apache Camel Karavan " + this.state.config.version} position={"right"}>
+                <Tooltip className="logo-tooltip" content={"Apache Camel Karavan " + this.state.config.version} position={"right"}>
                     {Icon()}
                 </Tooltip>
             </FlexItem>
diff --git a/karavan-app/src/main/webapp/src/builder/PropertiesTable.tsx b/karavan-app/src/main/webapp/src/builder/PropertiesTable.tsx
index ab05991..27d5a88 100644
--- a/karavan-app/src/main/webapp/src/builder/PropertiesTable.tsx
+++ b/karavan-app/src/main/webapp/src/builder/PropertiesTable.tsx
@@ -102,15 +102,15 @@ export class PropertiesTable extends React.Component<Props, State> {
                             {properties.map((property, idx: number) => {
                                 const readOnly = ["camel.jbang.gav", "camel.jbang.runtime"].includes(property.key);
                                 return (
-                                <Tr key={property.id}>
-                                    <Td noPadding width={20} dataLabel="key">{this.getTextInputField(property, "key", readOnly)}</Td>
-                                    <Td noPadding width={10} dataLabel="value">{this.getTextInputField(property, "value", readOnly)}</Td>
-                                    <Td noPadding isActionCell dataLabel="delete">
-                                        {!readOnly && <Button variant={"plain"} icon={<DeleteIcon/>} className={"delete-button"}
-                                                 onClick={event => this.startDelete(property.id)}/>}
-                                    </Td>
-                                </Tr>
-                            )})}
+                                    <Tr key={property.id}>
+                                        <Td noPadding width={20} dataLabel="key">{this.getTextInputField(property, "key", readOnly)}</Td>
+                                        <Td noPadding width={10} dataLabel="value">{this.getTextInputField(property, "value", readOnly)}</Td>
+                                        <Td noPadding isActionCell dataLabel="delete">
+                                            {!readOnly && <Button variant={"plain"} icon={<DeleteIcon/>} className={"delete-button"}
+                                                                  onClick={event => this.startDelete(property.id)}/>}
+                                        </Td>
+                                    </Tr>
+                                )})}
                         </Tbody>
                     </TableComposable>}
                 <Panel>
diff --git a/karavan-app/src/main/webapp/src/index.css b/karavan-app/src/main/webapp/src/index.css
index 15db8ba..b2a580b 100644
--- a/karavan-app/src/main/webapp/src/index.css
+++ b/karavan-app/src/main/webapp/src/index.css
@@ -104,6 +104,14 @@
   padding: 0;
 }
 
+.karavan .runtime-badge {
+  width: 75px;
+}
+
 .create-file-form .pf-c-form__group {
     grid-template-columns: 80px 1fr !important;
+}
+
+.logo-tooltip {
+  margin-left: 16px;
 }
\ No newline at end of file
diff --git a/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx b/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
index 66f2a93..c1bc9c3 100644
--- a/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
+++ b/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
@@ -183,9 +183,7 @@ export class ProjectsPage extends React.Component<Props, State> {
                             {projects.map(project => (
                                 <Tr key={project.artifactId}>
                                     <Td modifier={"fitContent"}>
-                                        <Tooltip content={project.runtime} position={"left"}>
-                                            <Badge>{project.runtime.charAt(0)}</Badge>
-                                        </Tooltip>
+                                        <Badge className="runtime-badge">{project.runtime}</Badge>
                                     </Td>
                                     <Td>{project.groupId}</Td>
                                     <Td>
diff --git a/karavan-designer/src/builder/PropertiesTable.tsx b/karavan-designer/src/builder/PropertiesTable.tsx
index 9ea6569..27d5a88 100644
--- a/karavan-designer/src/builder/PropertiesTable.tsx
+++ b/karavan-designer/src/builder/PropertiesTable.tsx
@@ -78,8 +78,8 @@ export class PropertiesTable extends React.Component<Props, State> {
         </Modal>)
     }
 
-    getTextInputField(property: ProjectProperty, field: "key" | "value") {
-        return (<TextInput isRequired={true} className="text-field" type={"text"} id={"key"} name={"key"}
+    getTextInputField(property: ProjectProperty, field: "key" | "value", readOnly: boolean) {
+        return (<TextInput isDisabled={readOnly} isRequired={true} className="text-field" type={"text"} id={"key"} name={"key"}
                            value={field === "key" ? property.key : property.value}
                            onChange={val => this.changeProperty(property, field, val)}/>)
     }
@@ -99,16 +99,18 @@ export class PropertiesTable extends React.Component<Props, State> {
                             </Tr>
                         </Thead>
                         <Tbody>
-                            {properties.map((property, idx: number) => (
-                                <Tr key={property.id}>
-                                    <Td noPadding width={20} dataLabel="key">{this.getTextInputField(property, "key")}</Td>
-                                    <Td noPadding width={10} dataLabel="value">{this.getTextInputField(property, "value")}</Td>
-                                    <Td noPadding isActionCell dataLabel="delete">
-                                        <Button variant={"plain"} icon={<DeleteIcon/>} className={"delete-button"}
-                                                onClick={event => this.startDelete(property.id)}/>
-                                    </Td>
-                                </Tr>
-                            ))}
+                            {properties.map((property, idx: number) => {
+                                const readOnly = ["camel.jbang.gav", "camel.jbang.runtime"].includes(property.key);
+                                return (
+                                    <Tr key={property.id}>
+                                        <Td noPadding width={20} dataLabel="key">{this.getTextInputField(property, "key", readOnly)}</Td>
+                                        <Td noPadding width={10} dataLabel="value">{this.getTextInputField(property, "value", readOnly)}</Td>
+                                        <Td noPadding isActionCell dataLabel="delete">
+                                            {!readOnly && <Button variant={"plain"} icon={<DeleteIcon/>} className={"delete-button"}
+                                                                  onClick={event => this.startDelete(property.id)}/>}
+                                        </Td>
+                                    </Tr>
+                                )})}
                         </Tbody>
                     </TableComposable>}
                 <Panel>
diff --git a/karavan-docker/Dockerfile b/karavan-docker/Dockerfile
index 912a86c..ff7357c 100644
--- a/karavan-docker/Dockerfile
+++ b/karavan-docker/Dockerfile
@@ -18,6 +18,5 @@ ENV JBANG_DIR="/jbang/.jbang"
 RUN jbang trust add -o --fresh --quiet https://github.com/apache/camel/blob/HEAD/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java && \
     jbang -Dcamel.jbang.version=3.18.0-SNAPSHOT camel@apache/camel --version 
 
-
 WORKDIR /ws
 ENTRYPOINT ["/jbang-0.95.0/bin/jbang"]
\ No newline at end of file