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 c004fae040602fd299f563cfaba606ef2dd2766f Author: Marat Gubaidullin <[email protected]> AuthorDate: Thu Dec 7 17:07:38 2023 -0500 Check filenames --- .../src/main/webui/src/api/ProjectModels.ts | 2 - .../webui/src/project/files/CreateFileModal.tsx | 44 +++++++++++----------- .../src/main/webui/src/project/files/FilesTab.tsx | 4 +- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts index 0d6ab4fe..49beac67 100644 --- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts +++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts @@ -156,9 +156,7 @@ export const ProjectFileTypes: ProjectFileType[] = [ new ProjectFileType("PROPERTIES", "Properties", "properties"), new ProjectFileType("JSON", "JSON", "json"), new ProjectFileType("YAML", "YAML", "yaml"), - new ProjectFileType("LOG", "Log", "log"), new ProjectFileType("SH", "Script", "sh"), - new ProjectFileType("SQL", "SQL", "sql"), new ProjectFileType("OTHER", "Other", "*"), ]; diff --git a/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx b/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx index 1d65e5d7..c5c99037 100644 --- a/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx +++ b/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx @@ -93,19 +93,15 @@ export function CreateFileModal(props: Props) { } function confirmAndCloseModal() { - const extension = ProjectFileTypes.filter(value => value.name === fileType)[0].extension; - const filename = (extension !== 'java') ? fileNameCheck(name) : CamelUi.javaNameFromTitle(name); const code = getCode(); - if (filename && extension) { - const fullFileName = filename + (isKamelet ? '-' + kameletType : '') + '.' + extension; - const file = new ProjectFile(fullFileName, project.projectId, code, Date.now()); - ProjectService.createFile(file); - cleanValues(); - if (code) { - setFile('select', file, designerTab); - } else { - setFile("none"); - } + const fullFileName = getFullFileName(name, fileType); + const file = new ProjectFile(fullFileName, project.projectId, code, Date.now()); + ProjectService.createFile(file); + cleanValues(); + if (code) { + setFile('select', file, designerTab); + } else { + setFile("none"); } } @@ -118,7 +114,6 @@ export function CreateFileModal(props: Props) { } const isKamelet = props.isKameletsProject; - const extension = ProjectFileTypes.filter(value => value.name === fileType)[0]?.extension; const listOfValues: Value[] = KameletApi.getKamelets() .filter(k => k.metadata.labels["camel.apache.org/kamelet.type"] === kameletType) @@ -127,11 +122,20 @@ export function CreateFileModal(props: Props) { return v; }) - function getFullFileName(name: string) { + function getFullFileName(name: string, type?: string) { + let extension = ProjectFileTypes.filter(value => value.name === type)[0]?.extension; + extension = extension === '*' ? '' : '.' + extension; const filename = (extension !== 'java') ? fileNameCheck(name) : CamelUi.javaNameFromTitle(name); - return filename + (isKamelet ? '-' + kameletType : '') + '.' + extension; + return filename + (isKamelet ? '-' + kameletType : '') + extension; + } + + function update(value: string, type?: string) { + setName(value); + const exists = getExistingFilenames().findIndex(f => f === getFullFileName(value, type)) === -1; + setNameAvailable(exists); + setFileType(type); } return ( @@ -155,7 +159,7 @@ export function CreateFileModal(props: Props) { return <ToggleGroupItem key={title} text={title} buttonId={p.name} isSelected={fileType === p.name} onChange={(_, selected) => { - setFileType(p.name); + update(name, p.name); }}/> })} </ToggleGroup> @@ -177,15 +181,11 @@ export function CreateFileModal(props: Props) { <TextInput id="name" aria-label="name" value={name} - onChange={(_, value) => { - setName(value); - const exists = getExistingFilenames().findIndex(f => f === getFullFileName(value)) === -1; - setNameAvailable(exists); - }}/> + onChange={(_, value) => update(value, fileType)}/> <FormHelperText> <HelperText id="helper-text1"> <HelperTextItem variant={nameAvailable ? 'default' : 'error'}> - {!nameAvailable ? 'File ': ''}{getFullFileName(name)}{!nameAvailable ? ' already exists': ''} + {!nameAvailable ? 'File ': ''}{getFullFileName(name, fileType)}{!nameAvailable ? ' already exists': ''} </HelperTextItem> </HelperText> </FormHelperText> diff --git a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx index 4904d2aa..868cd0a0 100644 --- a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx +++ b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx @@ -15,7 +15,7 @@ * limitations under the License. */ -import React, {useEffect} from 'react'; +import React from 'react'; import { Badge, Bullseye, @@ -86,7 +86,7 @@ export function FilesTab () { const types = isBuildIn() ? (isKameletsProject() ? ['KAMELET'] : ['CODE', 'PROPERTIES']) - : ProjectFileTypes.filter(p => !['PROPERTIES', 'LOG', 'KAMELET'].includes(p.name)).map(p => p.name); + : ProjectFileTypes.filter(p => !['PROPERTIES', 'KAMELET'].includes(p.name)).map(p => p.name); return ( <PageSection className="project-tab-panel" padding={{default: "padding"}}>
