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 a7a1df0165874b080c1288f7447c44b8bf44e9ac
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Aug 9 15:37:06 2024 -0400

    UI improvements
---
 karavan-app/src/main/webui/src/api/KaravanApi.tsx    | 13 +++++++++++--
 karavan-app/src/main/webui/src/api/ProjectService.ts | 20 ++++++++++++--------
 .../src/main/webui/src/project/ProjectPage.tsx       |  4 ++--
 .../src/main/webui/src/project/files/FilesTab.tsx    | 15 +++++++++++++--
 .../main/webui/src/project/files/FilesToolbar.tsx    |  7 +++++++
 .../main/webui/src/project/files/UploadFileModal.tsx |  2 +-
 6 files changed, 46 insertions(+), 15 deletions(-)

diff --git a/karavan-app/src/main/webui/src/api/KaravanApi.tsx 
b/karavan-app/src/main/webui/src/api/KaravanApi.tsx
index 6b283473..9a8e0f34 100644
--- a/karavan-app/src/main/webui/src/api/KaravanApi.tsx
+++ b/karavan-app/src/main/webui/src/api/KaravanApi.tsx
@@ -573,8 +573,17 @@ export class KaravanApi {
         });
     }
 
-    static async rolloutDeployment(name: string, environment: string, after: 
(res: AxiosResponse<any>) => void) {
-        instance.post('/ui/infrastructure/deployment/rollout/' + environment + 
'/' + name, "")
+    static async rolloutDeployment(projectId: string, environment: string, 
after: (res: AxiosResponse<any>) => void) {
+        instance.post('/ui/infrastructure/deployment/rollout/' + environment + 
'/' + projectId, "")
+            .then(res => {
+                after(res);
+            }).catch(err => {
+            after(err);
+        });
+    }
+
+    static async startDeployment(projectId: string, environment: string, 
after: (res: AxiosResponse<any>) => void) {
+        instance.post('/ui/infrastructure/deployment/start/' + environment + 
'/' + projectId, "")
             .then(res => {
                 after(res);
             }).catch(err => {
diff --git a/karavan-app/src/main/webui/src/api/ProjectService.ts 
b/karavan-app/src/main/webui/src/api/ProjectService.ts
index 97a33b3d..62cdfe7a 100644
--- a/karavan-app/src/main/webui/src/api/ProjectService.ts
+++ b/karavan-app/src/main/webui/src/api/ProjectService.ts
@@ -277,6 +277,17 @@ export class ProjectService {
         ProjectService.refreshAllCamelStatuses();
     }
 
+    public static refreshProjectFiles(projectId: string) {
+        KaravanApi.getFiles(projectId, (files: ProjectFile[]) => {
+            useFilesStore.setState({files: files});
+            ProjectService.reloadKamelets(projectId);
+        });
+
+        KaravanApi.getFilesDiff(projectId, (diff: any) => {
+            useFilesStore.setState({diff: diff});
+        });
+    }
+
     public static refreshProjectData(projectId: string) {
         KaravanApi.getProject(projectId, (project: Project) => {
             // ProjectEventBus.selectProject(project);
@@ -288,14 +299,7 @@ export class ProjectService {
                     })
             });
         });
-        KaravanApi.getFiles(projectId, (files: ProjectFile[]) => {
-            useFilesStore.setState({files: files});
-            ProjectService.reloadKamelets(projectId);
-        });
-
-        KaravanApi.getFilesDiff(projectId, (diff: any) => {
-            useFilesStore.setState({diff: diff});
-        });
+        ProjectService.refreshProjectFiles(projectId);
 
         KaravanApi.getConfigMaps((any: []) => {
             InfrastructureAPI.setConfigMaps(any);
diff --git a/karavan-app/src/main/webui/src/project/ProjectPage.tsx 
b/karavan-app/src/main/webui/src/project/ProjectPage.tsx
index ac757f40..06537f5f 100644
--- a/karavan-app/src/main/webui/src/project/ProjectPage.tsx
+++ b/karavan-app/src/main/webui/src/project/ProjectPage.tsx
@@ -24,7 +24,7 @@ import {
 import './ProjectPage.css';
 import {ProjectToolbar} from "./ProjectToolbar";
 import {ProjectLogPanel} from "../log/ProjectLogPanel";
-import {BUILD_IN_PROJECTS, Project, ProjectType} from "../api/ProjectModels";
+import {BUILD_IN_PROJECTS, Project} from "../api/ProjectModels";
 import {useAppConfigStore, useFilesStore, useFileStore, useProjectsStore, 
useProjectStore} from "../api/ProjectStore";
 import {MainToolbar} from "../designer/MainToolbar";
 import {ProjectTitle} from "./ProjectTitle";
@@ -90,7 +90,7 @@ export function ProjectPage() {
 
     const showFilePanel = file !== undefined && operation === 'select';
     const isKubernetes = config.infrastructure === 'kubernetes'
-    const containerTabName = isKubernetes ? "Pods" : "Containers"
+    const containerTabName = isKubernetes ? "Deployment" : "Container"
     const isDevEnvironment = config.environment === 'dev';
     const showBuildTab = isKubernetes || isDevEnvironment;
     return (
diff --git a/karavan-app/src/main/webui/src/project/files/FilesTab.tsx 
b/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
index da6ab20b..86814d6a 100644
--- a/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
+++ b/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-import React, {useState} from 'react';
+import React, {useEffect, useState} from 'react';
 import {
     Badge,
     Bullseye,
@@ -52,6 +52,7 @@ import {UploadFileModal} from "./UploadFileModal";
 import {shallow} from "zustand/shallow";
 import {CreateIntegrationModal} from "./CreateIntegrationModal";
 import {DiffFileModal} from "./DiffFileModal";
+import {ProjectService} from "../../api/ProjectService";
 
 export function FilesTab () {
 
@@ -66,7 +67,17 @@ export function FilesTab () {
         .map(name => diff[name] === 'DELETED' ? name: '')
         .filter(name => name !== '' && !filenames.includes(name));
     const deletedFiles: ProjectFile[] =  deletedFilenames.map(d => new 
ProjectFile(d, project.projectId, '', 0))
-    const allFiles =  files.concat(deletedFiles)
+    const allFiles =  files.concat(deletedFiles);
+
+    useEffect(() => {
+        onRefresh();
+    }, []);
+
+    function onRefresh() {
+        if (project.projectId) {
+            ProjectService.refreshProjectFiles(project.projectId);
+        }
+    }
 
     function needCommit(filename: string): boolean {
         return diff && diff[filename] !== undefined;
diff --git a/karavan-app/src/main/webui/src/project/files/FilesToolbar.tsx 
b/karavan-app/src/main/webui/src/project/files/FilesToolbar.tsx
index d2125d32..2ac4c01c 100644
--- a/karavan-app/src/main/webui/src/project/files/FilesToolbar.tsx
+++ b/karavan-app/src/main/webui/src/project/files/FilesToolbar.tsx
@@ -37,6 +37,7 @@ import {useFilesStore, useFileStore, useProjectStore} from 
"../../api/ProjectSto
 import {shallow} from "zustand/shallow";
 import {ProjectService} from "../../api/ProjectService";
 import PushIcon from "@patternfly/react-icons/dist/esm/icons/code-branch-icon";
+import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon";
 import {getShortCommit, isEmpty} from "../../util/StringUtils";
 
 export function FileToolbar () {
@@ -163,6 +164,12 @@ export function FileToolbar () {
     }
 
     return <Flex className="toolbar" direction={{default: "row"}} 
justifyContent={{default: "justifyContentFlexEnd"}}>
+        <FlexItem>
+            <Button icon={<RefreshIcon/>}
+                    variant={"link"}
+                    onClick={() => 
ProjectService.refreshProjectFiles(project.projectId)}
+            />
+        </FlexItem>
         <FlexItem>{getLastUpdatePanel()}</FlexItem>
         <FlexItem>
             <Tooltip content="Pull from git" position={"bottom-end"}>
diff --git a/karavan-app/src/main/webui/src/project/files/UploadFileModal.tsx 
b/karavan-app/src/main/webui/src/project/files/UploadFileModal.tsx
index 63cd29c8..2b3e90d8 100644
--- a/karavan-app/src/main/webui/src/project/files/UploadFileModal.tsx
+++ b/karavan-app/src/main/webui/src/project/files/UploadFileModal.tsx
@@ -87,7 +87,7 @@ export function UploadFileModal() {
         setFile("none");
     }
 
-    const handleFileInputChange = (file: File) => setValue('name',file.name);
+    const handleFileInputChange = (file: File) => setValue('name', file.name);
     const handleFileReadStarted = (fileHandle: File) => setIsLoading(true);
     const handleFileReadFinished = (fileHandle: File) => setIsLoading(false);
     const handleTextOrDataChange = (data: string) => setValue('code', data);

Reply via email to