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/11/28 17:36:06 UTC
[camel-karavan] 10/10: Code templates in cloud app
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 <ma...@gmail.com>
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>