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 45df9b7e1d9c88fac1167efa71aab4a98f70c922
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Sat Nov 19 12:31:49 2022 -0500

    Project type filter for projects types
---
 .../src/main/webui/src/projects/CreateFileModal.tsx       |  7 +++++--
 karavan-app/src/main/webui/src/projects/ProjectPage.tsx   | 15 ++++++++++++++-
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/karavan-app/src/main/webui/src/projects/CreateFileModal.tsx 
b/karavan-app/src/main/webui/src/projects/CreateFileModal.tsx
index e2143f3..47d7cda 100644
--- a/karavan-app/src/main/webui/src/projects/CreateFileModal.tsx
+++ b/karavan-app/src/main/webui/src/projects/CreateFileModal.tsx
@@ -17,7 +17,8 @@ import {CamelDefinitionYaml} from 
"karavan-core/lib/api/CamelDefinitionYaml";
 interface Props {
     isOpen: boolean,
     project: Project,
-    onClose: any
+    onClose: any,
+    types: string[]
 }
 
 interface State {
@@ -59,6 +60,7 @@ export class CreateFileModal extends React.Component<Props, 
State> {
 
     render() {
         const {fileType} = this.state;
+        const {types} = this.props;
         const extension = ProjectFileTypes.filter(value => value.name === 
fileType)[0].extension;
         const filename = (extension !== 'java')
             ? CamelUi.nameFromTitle(this.state.name)
@@ -77,7 +79,8 @@ export class CreateFileModal extends React.Component<Props, 
State> {
                 <Form autoComplete="off" isHorizontal 
className="create-file-form">
                     <FormGroup label="Type" fieldId="type" isRequired>
                         <ToggleGroup aria-label="Type" isCompact>
-                            {ProjectFileTypes.filter(p => !['PROPERTIES', 
'LOG'].includes(p.name)).map(p => {
+                            {ProjectFileTypes.filter(p => 
types.includes(p.name))
+                                .map(p => {
                                 const title = p.title + ' (' + p.extension + 
')';
                                 return <ToggleGroupItem key={title} 
text={title} buttonId={p.name}
                                                         isSelected={fileType 
=== p.name}
diff --git a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx 
b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
index 8b71766..f19e053 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
+++ b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
@@ -104,6 +104,14 @@ export class ProjectPage extends React.Component<Props, 
State> {
         return ['kamelets', 
'templates'].includes(this.props.project.projectId);
     }
 
+    isKameletsProject():boolean {
+        return this.props.project.projectId === 'kamelets';
+    }
+
+    isTemplatesProject():boolean {
+        return this.props.project.projectId === 'templates';
+    }
+
     post = (file: ProjectFile) => {
         KaravanApi.postProjectFile(file, res => {
             if (res.status === 200) {
@@ -402,6 +410,9 @@ export class ProjectPage extends React.Component<Props, 
State> {
     render() {
         const {file, isDeleteModalOpen, fileToDelete, isUploadModalOpen, 
isCreateModalOpen} = this.state;
         const {project} = this.props;
+        const types = this.isBuildIn()
+            ? (this.isKameletsProject() ? ['KAMELET'] : ['JAVA'])
+            : ProjectFileTypes.filter(p => !['PROPERTIES', 'LOG', 
'KAMELET'].includes(p.name)).map(p => p.name);
         return (
             <PageSection className="kamelet-section project-page" 
padding={{default: 'noPadding'}}>
                 <PageSection className="tools-section" padding={{default: 
'noPadding'}}>
@@ -410,7 +421,9 @@ export class ProjectPage extends React.Component<Props, 
State> {
                 {file === undefined && this.getProjectPanel()}
                 {file !== undefined && this.getFilePanel()}
 
-                <CreateFileModal project={project} isOpen={isCreateModalOpen}
+                <CreateFileModal project={project}
+                                 isOpen={isCreateModalOpen}
+                                 types={types}
                                  onClose={this.closeModal}/>
                 <Modal
                     title="Confirmation"

Reply via email to