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

commit 7f1fb7328da41c1a4805d67efd95215a124ac889
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Mon Nov 28 12:35:17 2022 -0500

    Code templates in cloud app
---
 karavan-app/src/main/webui/src/api/KaravanApi.tsx  |  2 +-
 .../main/webui/src/designer/KaravanDesigner.tsx    |  2 +-
 .../designer/route/property/DslPropertyField.tsx   | 28 +++++++++++-----------
 .../src/main/webui/src/projects/ProjectPage.tsx    | 15 ++++++++++--
 .../src/main/webui/src/projects/ProjectsPage.tsx   |  2 +-
 karavan-designer/src/designer/KaravanDesigner.tsx  |  2 +-
 .../designer/route/property/DslPropertyField.tsx   |  6 ++---
 7 files changed, 34 insertions(+), 23 deletions(-)

diff --git a/karavan-app/src/main/webui/src/api/KaravanApi.tsx 
b/karavan-app/src/main/webui/src/api/KaravanApi.tsx
index 78feec2..230fd6b 100644
--- a/karavan-app/src/main/webui/src/api/KaravanApi.tsx
+++ b/karavan-app/src/main/webui/src/api/KaravanApi.tsx
@@ -278,7 +278,7 @@ export class KaravanApi {
     }
 
     static async getTemplatesFiles( after: (files: []) => void) {
-        instance.get('/api/template/files')
+        instance.get('/api/file/templates')
             .then(res => {
                 if (res.status === 200) {
                     after(res.data);
diff --git a/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx 
b/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
index 4b43ff4..b215192 100644
--- a/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
+++ b/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
@@ -33,7 +33,7 @@ import {getDesignerIcon} from "./utils/KaravanIcons";
 interface Props {
     onSave: (filename: string, yaml: string, propertyOnly: boolean) => void
     onSaveCustomCode: (name: string, code: string) => void
-    onGetCustomCode: (name: string) => Promise<string | undefined>
+    onGetCustomCode: (name: string, javaType: string) => Promise<string | 
undefined>
     filename: string
     yaml: string
     dark: boolean
diff --git 
a/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx 
b/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
index 369f4ee..c958bb6 100644
--- 
a/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
+++ 
b/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
@@ -245,9 +245,9 @@ export class DslPropertyField extends 
React.Component<Props, State> {
         </InputGroup>)
     }
 
-    showCode = (name: string) => {
+    showCode = (name: string, javaType: string) => {
         const {property} = this.props;
-        KaravanInstance.getProps().onGetCustomCode.call(this, name).then(value 
=> {
+        KaravanInstance.getProps().onGetCustomCode.call(this, name, 
property.javaType).then(value => {
             if (value === undefined) {
                 const code = TemplateApi.generateCode(property.javaType, name);
                 this.setState({customCode: code, showEditor: true})
@@ -269,21 +269,21 @@ export class DslPropertyField extends 
React.Component<Props, State> {
                 value={value?.toString()}
                 onChange={e => this.propertyChanged(property.name, 
CamelUtil.capitalizeName(e?.replace(/\s/g, '')))}/>
             <Tooltip position="bottom-end" content={"Create Java Class"}>
-                <Button variant="control" onClick={e => this.showCode(value)}>
+                <Button variant="control" onClick={e => this.showCode(value, 
property.javaType)}>
                     <PlusIcon/>
                 </Button>
             </Tooltip>
-                <ModalEditor property={property}
-                             value={customCode}
-                             showEditor={showEditor}
-                             dark={dark}
-                             dslLanguage={dslLanguage}
-                             title="Java Class"
-                             onSave={(fieldId, value1) => {
-                                 this.propertyChanged(fieldId, value);
-                                 
KaravanInstance.getProps().onSaveCustomCode?.call(this, value, value1);
-                                 this.setState({showEditor: false});
-                             }}/>
+            <ModalEditor property={property}
+                         value={customCode}
+                         showEditor={showEditor}
+                         dark={dark}
+                         dslLanguage={dslLanguage}
+                         title="Java Class"
+                         onSave={(fieldId, value1) => {
+                             this.propertyChanged(fieldId, value);
+                             
KaravanInstance.getProps().onSaveCustomCode?.call(this, value, value1);
+                             this.setState({showEditor: false});
+                         }}/>
         </InputGroup>)
     }
 
diff --git a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx 
b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
index f998586..3713c35 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
+++ b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
@@ -32,6 +32,7 @@ import {ProjectOperations} from "./ProjectOperations";
 import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml";
 import {ProjectPageToolbar} from "./ProjectPageToolbar";
 import {ProjectFilesTable} from "./ProjectFilesTable";
+import {TemplateApi} from "karavan-core/lib/api/TemplateApi";
 
 interface Props {
     project: Project,
@@ -80,11 +81,20 @@ export class ProjectPage extends React.Component<Props, 
State> {
     onRefresh = () => {
         if (this.props.project) {
             KaravanApi.getProject(this.props.project.projectId, (project: 
Project) => {
-                this.setState({project: project})
+                this.setState({project: project});
+                KaravanApi.getTemplatesFiles((files: ProjectFile[]) => {
+                    files.filter(f => f.name.endsWith("java"))
+                        .filter(f => f.name.startsWith(project.runtime))
+                        .forEach(f => {
+                            const name = f.name.replace(project.runtime+"-", 
'').replace(".java", '');
+                            TemplateApi.saveTemplate(name, f.code);
+                        })
+                });
             });
             KaravanApi.getFiles(this.props.project.projectId, (files: []) => {
                 this.setState({files: files})
             });
+
             KubernetesAPI.inKubernetes = true;
             if (!this.isBuildIn()){
                 KaravanApi.getConfigMaps(this.state.environment, (any: []) => {
@@ -253,7 +263,8 @@ export class ProjectPage extends React.Component<Props, 
State> {
                 yaml={file.code}
                 onSave={(name, yaml) => this.save(name, yaml)}
                 onSaveCustomCode={(name, code) => this.post(new 
ProjectFile(name+".java", project.projectId, code, Date.now()))}
-                onGetCustomCode={name => {
+                onGetCustomCode={(name, javaType) => {
+                    console.log(name);
                     return new Promise<string | undefined>(resolve => 
resolve(files.filter(f => f.name === name + ".java")?.at(0)?.code))
                 }}
             />
diff --git a/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx 
b/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
index 8b052e8..ea39653 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
+++ b/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx
@@ -200,7 +200,7 @@ export class ProjectsPage extends React.Component<Props, 
State> {
                                    }}
                                    body={
                                        <div className="runtime-radio">
-                                           {runtime === 'quarkus' ? 
QuarkusIcon() : SpringIcon()}
+                                           {r === 'quarkus' ? QuarkusIcon() : 
SpringIcon()}
                                            <div 
className="runtime-label">{CamelUtil.capitalizeName(r)}</div>
                                        </div>}
                             />
diff --git a/karavan-designer/src/designer/KaravanDesigner.tsx 
b/karavan-designer/src/designer/KaravanDesigner.tsx
index 4b43ff4..b215192 100644
--- a/karavan-designer/src/designer/KaravanDesigner.tsx
+++ b/karavan-designer/src/designer/KaravanDesigner.tsx
@@ -33,7 +33,7 @@ import {getDesignerIcon} from "./utils/KaravanIcons";
 interface Props {
     onSave: (filename: string, yaml: string, propertyOnly: boolean) => void
     onSaveCustomCode: (name: string, code: string) => void
-    onGetCustomCode: (name: string) => Promise<string | undefined>
+    onGetCustomCode: (name: string, javaType: string) => Promise<string | 
undefined>
     filename: string
     yaml: string
     dark: boolean
diff --git a/karavan-designer/src/designer/route/property/DslPropertyField.tsx 
b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
index 773b36d..c958bb6 100644
--- a/karavan-designer/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
@@ -245,9 +245,9 @@ export class DslPropertyField extends 
React.Component<Props, State> {
         </InputGroup>)
     }
 
-    showCode = (name: string) => {
+    showCode = (name: string, javaType: string) => {
         const {property} = this.props;
-        KaravanInstance.getProps().onGetCustomCode.call(this, name).then(value 
=> {
+        KaravanInstance.getProps().onGetCustomCode.call(this, name, 
property.javaType).then(value => {
             if (value === undefined) {
                 const code = TemplateApi.generateCode(property.javaType, name);
                 this.setState({customCode: code, showEditor: true})
@@ -269,7 +269,7 @@ export class DslPropertyField extends 
React.Component<Props, State> {
                 value={value?.toString()}
                 onChange={e => this.propertyChanged(property.name, 
CamelUtil.capitalizeName(e?.replace(/\s/g, '')))}/>
             <Tooltip position="bottom-end" content={"Create Java Class"}>
-                <Button variant="control" onClick={e => this.showCode(value)}>
+                <Button variant="control" onClick={e => this.showCode(value, 
property.javaType)}>
                     <PlusIcon/>
                 </Button>
             </Tooltip>

Reply via email to