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


The following commit(s) were added to refs/heads/main by this push:
     new e03347ed Improved container management ui
e03347ed is described below

commit e03347ed5bce88a9a5fc2f582a4f1d959cb40be4
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Tue May 14 15:24:49 2024 -0400

    Improved container management ui
---
 .../src/main/webui/src/project/DevModeToolbar.tsx  | 29 +++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx 
b/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
index 4cb70dea..fbfb682c 100644
--- a/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
+++ b/karavan-app/src/main/webui/src/project/DevModeToolbar.tsx
@@ -16,7 +16,18 @@
  */
 
 import React, {useEffect, useState} from 'react';
-import {Badge, Button, Flex, FlexItem, Label, Switch, Tooltip, 
TooltipPosition} from '@patternfly/react-core';
+import {
+    Badge,
+    Button,
+    Flex,
+    FlexItem,
+    Label,
+    Skeleton,
+    Spinner,
+    Switch,
+    Tooltip,
+    TooltipPosition
+} from '@patternfly/react-core';
 import '../designer/karavan.css';
 import RocketIcon from "@patternfly/react-icons/dist/esm/icons/rocket-icon";
 import ReloadIcon from "@patternfly/react-icons/dist/esm/icons/bolt-icon";
@@ -39,6 +50,7 @@ export function DevModeToolbar(props: Props) {
     const [project, refreshTrace] = useProjectStore((state) => [state.project, 
state.refreshTrace], shallow)
     const [containers] = useStatusesStore((state) => [state.containers], 
shallow);
     const [verbose, setVerbose] = useState(false);
+    const [showSpinner, setShowSpinner] = useState(false);
     const [setShowLog] = useLogStore((s) => [s.setShowLog], shallow);
     const [currentContainerStatus, setCurrentContainerStatus] = 
useState<ContainerStatus>();
 
@@ -57,6 +69,14 @@ export function DevModeToolbar(props: Props) {
         return () => clearInterval(interval);
     }, [currentContainerStatus, containers]);
 
+    useEffect(() => {
+        if (showSpinner && currentContainerStatus === undefined && 
containerStatus === undefined) {
+            setShowSpinner(false);
+        // } else if (showSpinner && currentContainerStatus == undefined) {
+        //     setShowSpinner(false);
+        }
+    }, [currentContainerStatus]);
+
     function refreshContainer(){
         ProjectService.refreshContainerStatus(project.projectId, 
config.environment);
         ProjectService.refreshCamelStatus(project.projectId, 
config.environment);
@@ -68,6 +88,9 @@ export function DevModeToolbar(props: Props) {
     }
 
     return (<Flex className="toolbar" direction={{default: "row"}} 
alignItems={{default: "alignItemsCenter"}}>
+        {showSpinner && inDevMode && <FlexItem 
className="dev-action-button-place refresher">
+            <Spinner className="spinner" aria-label="Refresh"/>
+        </FlexItem>}
         {containerStatus?.containerId && <FlexItem>
             <Label icon={icon} color={color}>
                 <Tooltip content={"Show log"} 
position={TooltipPosition.bottom}>
@@ -96,8 +119,8 @@ export function DevModeToolbar(props: Props) {
                         variant={"primary"}
                         icon={<RocketIcon/>}
                         onClick={() => {
+                            setShowSpinner(true);
                             ProjectService.startDevModeContainer(project, 
verbose);
-                            // setPoll(true);
                         }}>
                     {"Run"}
                 </Button>
@@ -120,7 +143,7 @@ export function DevModeToolbar(props: Props) {
                         variant={"control"}
                         icon={<DeleteIcon/>}
                         onClick={() => {
-                            // setPoll(true);
+                            setShowSpinner(true);
                             ProjectService.deleteDevModeContainer(project);
                         }}>
                 </Button>

Reply via email to