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>
