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 c8baca3659b574a25384dd29cc456ef25472e8e4
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Wed Sep 13 15:30:03 2023 -0400

    UI Consistency for #885
---
 .../src/main/webui/src/designer/MainToolbar.tsx    | 10 ++-
 .../webui/src/project/ImageDownloadToolbar.tsx     | 50 ++++++++++++++
 .../src/main/webui/src/project/ProjectPage.tsx     |  3 +-
 .../src/main/webui/src/project/ProjectToolbar.tsx  | 78 ++++++----------------
 4 files changed, 78 insertions(+), 63 deletions(-)

diff --git 
a/karavan-web/karavan-app/src/main/webui/src/designer/MainToolbar.tsx 
b/karavan-web/karavan-app/src/main/webui/src/designer/MainToolbar.tsx
index 8923b70c..0b69aeda 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/MainToolbar.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/MainToolbar.tsx
@@ -6,6 +6,7 @@ import '../designer/karavan.css';
 
 interface Props {
     title: React.ReactNode;
+    toolsStart?: React.ReactNode;
     tools: React.ReactNode;
 }
 
@@ -13,12 +14,15 @@ export function MainToolbar(props: Props) {
 
     return (
         <PageSection className="tools-section" 
variant={PageSectionVariants.light}>
-            <Flex className="tools" justifyContent={{default: 
'justifyContentSpaceBetween'}}
+            <Flex className="tools" justifyContent={{default: 
'justifyContentFlexStart'}}
                   alignItems={{default: 'alignItemsCenter'}}>
-                <FlexItem>
+                <FlexItem flex={{default: "flexNone"}}>
                     {props.title}
                 </FlexItem>
-                <FlexItem>
+                <FlexItem align={{default: 'alignLeft'}}>
+                    {props.toolsStart}
+                </FlexItem>
+                <FlexItem align={{default: 'alignRight'}}>
                     {props.tools}
                 </FlexItem>
             </Flex>
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/project/ImageDownloadToolbar.tsx 
b/karavan-web/karavan-app/src/main/webui/src/project/ImageDownloadToolbar.tsx
new file mode 100644
index 00000000..1939037b
--- /dev/null
+++ 
b/karavan-web/karavan-app/src/main/webui/src/project/ImageDownloadToolbar.tsx
@@ -0,0 +1,50 @@
+import React, {useEffect} from 'react';
+import {
+    Button,
+    FlexItem,
+    Toolbar,
+    ToolbarContent,
+    Tooltip
+} from '@patternfly/react-core';
+import '../designer/karavan.css';
+import DownloadImageIcon from 
"@patternfly/react-icons/dist/esm/icons/image-icon";
+import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml";
+import {useFileStore, useProjectStore} from "../api/ProjectStore";
+import {EventBus} from "../designer/utils/EventBus";
+import {shallow} from "zustand/shallow";
+
+export function ImageDownloadToolbar() {
+
+    const [project] = useProjectStore((s) => [s.project], shallow)
+    const [file] = useFileStore((state) => [state.file], shallow)
+
+    useEffect(() => {
+    }, [file]);
+
+    function isYaml(): boolean {
+        return file !== undefined && file.name.endsWith("yaml");
+    }
+
+    function isIntegration(): boolean {
+        return isYaml() && file?.code !== undefined && 
CamelDefinitionYaml.yamlIsIntegration(file.code);
+    }
+
+    function downloadImage() {
+        EventBus.sendCommand("downloadImage");
+    }
+
+    return (
+        <Toolbar id="toolbar-group-types">
+            <ToolbarContent>
+                {isIntegration() &&
+                    <FlexItem>
+                        <Tooltip content="Download image" 
position={"bottom-end"}>
+                            <Button size="sm" variant="control" 
icon={<DownloadImageIcon/>}
+                                    onClick={e => downloadImage()}/>
+                        </Tooltip>
+                    </FlexItem>
+                }
+            </ToolbarContent>
+        </Toolbar>
+    )
+}
diff --git a/karavan-web/karavan-app/src/main/webui/src/project/ProjectPage.tsx 
b/karavan-web/karavan-app/src/main/webui/src/project/ProjectPage.tsx
index c53cd2ef..c207900a 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/ProjectPage.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/ProjectPage.tsx
@@ -17,6 +17,7 @@ import {shallow} from "zustand/shallow";
 import {useParams} from "react-router-dom";
 import {KaravanApi} from "../api/KaravanApi";
 import {ProjectDataPoller} from "./ProjectDataPoller";
+import {ImageDownloadToolbar} from "./ImageDownloadToolbar";
 
 export function ProjectPage() {
 
@@ -52,7 +53,7 @@ export function ProjectPage() {
     return (
         <PageSection className="project-page" padding={{default: 'noPadding'}}>
             <PageSection className="tools-section" padding={{default: 
'noPadding'}}>
-                <MainToolbar title={<ProjectTitle/>} 
tools={<ProjectToolbar/>}/>
+                <MainToolbar title={<ProjectTitle/>} tools={<ProjectToolbar/>} 
toolsStart={<ImageDownloadToolbar/>}/>
             </PageSection>
             <PageSection className="tools-section" padding={{default: 
'noPadding'}}>
                 <Flex direction={{default: "column"}} spaceItems={{default: 
"spaceItemsNone"}}>
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx 
b/karavan-web/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx
index 7a14f166..24dfa531 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx
@@ -1,35 +1,20 @@
 import React, {useEffect} from 'react';
 import {
-    Button,
-    Checkbox, Divider,
     Flex,
     FlexItem,
-    ToggleGroup,
-    ToggleGroupItem,
     Toolbar,
     ToolbarContent,
-    Tooltip
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
-import DownloadImageIcon from 
"@patternfly/react-icons/dist/esm/icons/image-icon";
-import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon";
-import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml";
 import {DevModeToolbar} from "./DevModeToolbar";
 import {useFileStore, useProjectStore} from "../api/ProjectStore";
-import {EventBus} from "../designer/utils/EventBus";
-import {ProjectService} from "../api/ProjectService";
 import {shallow} from "zustand/shallow";
-import {ProjectModelApi} from "karavan-core/lib/api/ProjectModelApi";
-import {ProjectModel, ProjectProperty} from 
"karavan-core/lib/model/ProjectModel";
 import {BuildToolbar} from "./BuildToolbar";
 
+export function ProjectToolbar() {
 
-export function ProjectToolbar () {
-
-    const [project, isPushing, tabIndex] = useProjectStore((s) => [s.project, 
s.isPushing, s.tabIndex], shallow )
-    const [file, editAdvancedProperties, setEditAdvancedProperties, 
setAddProperty]
-        = useFileStore((state) =>
-        [state.file, state.editAdvancedProperties, 
state.setEditAdvancedProperties, state.setAddProperty], shallow )
+    const [project, tabIndex] = useProjectStore((s) => [s.project, 
s.tabIndex], shallow)
+    const [file] = useFileStore((state) => [state.file], shallow)
 
     useEffect(() => {
     }, [project, file]);
@@ -38,42 +23,22 @@ export function ProjectToolbar () {
         return file !== undefined;
     }
 
-    function isYaml(): boolean {
-        return file !== undefined && file.name.endsWith("yaml");
-    }
-
-    function isIntegration(): boolean {
-        return isYaml() && file?.code !== undefined && 
CamelDefinitionYaml.yamlIsIntegration(file.code);
-    }
-
-    function isProperties(): boolean {
-        return file !== undefined && file.name.endsWith("properties");
-    }
-
-    function isJava(): boolean {
-        return file !== undefined && file.name.endsWith("java");
-    }
-
-    function downloadImage () {
-        EventBus.sendCommand("downloadImage");
-    }
-
-
-
     function getFileToolbar() {
-        return <Toolbar id="toolbar-group-types">
-            <ToolbarContent>
-                <Flex className="toolbar" direction={{default: "row"}} 
alignItems={{default: "alignItemsCenter"}}>
-                    {isRunnable() && <DevModeToolbar reloadOnly={true}/>}
-
-                    {isIntegration() && <FlexItem>
-                        <Tooltip content="Download image" 
position={"bottom-end"}>
-                            <Button size="sm" variant="control" 
icon={<DownloadImageIcon/>} onClick={e => downloadImage()}/>
-                        </Tooltip>
-                    </FlexItem>}
-                </Flex>
-            </ToolbarContent>
-        </Toolbar>
+        return (
+            <Toolbar id="toolbar-group-types">
+                <ToolbarContent>
+                    <Flex className="" direction={{default: "row"}}
+                          justifyContent={{default: 
'justifyContentSpaceBetween'}}
+                          alignItems={{default: "alignItemsCenter"}}>
+                        {isRunnable() &&
+                            <FlexItem align={{default: 'alignRight'}}>
+                                <DevModeToolbar reloadOnly={true}/>
+                            </FlexItem>
+                        }
+                    </Flex>
+                </ToolbarContent>
+            </Toolbar>
+        )
     }
 
     function getProjectToolbar() {
@@ -105,10 +70,5 @@ export function ProjectToolbar () {
         return !isKameletsProject() && !isTemplatesProject() && 
!isServicesProject() && ['build', 'container'].includes(tabIndex.toString());
     }
 
-    function allowAddFiles(): boolean {
-        return !isTemplatesProject() && !isServicesProject();
-    }
-
-    const isTemplates = isTemplatesProject();
-    return  isFile() ? getFileToolbar() : getProjectToolbar()
+    return isFile() ? getFileToolbar() : getProjectToolbar()
 }

Reply via email to