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 72b6438861e42b70426f06c0f51d48e8567dcaec Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Sun Jun 25 11:21:11 2023 -0400 Redesign of folder stucture of code #809 --- karavan-app/src/main/webui/src/Main.tsx | 6 +-- karavan-app/src/main/webui/src/MainToolbar.tsx | 51 ------------------- karavan-app/src/main/webui/src/api/KaravanApi.tsx | 2 +- .../webui/src/{projects => api}/ProjectEventBus.ts | 0 .../webui/src/{projects => api}/ProjectModels.ts | 0 .../ProjectLogic.ts => api/ProjectService.ts} | 12 ++--- .../webui/src/{projects => api}/ProjectStore.ts | 0 .../src/main/webui/src/common/MainToolbar.tsx | 27 ++++++++++ .../main/webui/src/config/ConfigurationPage.tsx | 14 +---- .../src/main/webui/src/dashboard/DashboardPage.tsx | 4 +- .../modal => project}/CreateFileModal.tsx | 12 ++--- .../modal => project}/DeleteFileModal.tsx | 8 +-- .../webui/src/{projects => project}/ProjectLog.tsx | 4 +- .../src/{projects => project}/ProjectPage.tsx | 33 ++++++------ .../src/{projects => project}/ProjectStatus.tsx | 4 +- .../toolbar => project}/ProjectToolbar.tsx | 59 +++++++++++++++++++--- .../src/{projects => project}/PropertiesEditor.tsx | 2 +- .../src/{projects => project}/PropertiesTable.tsx | 0 .../src/{projects => project}/RunnerToolbar.tsx | 24 ++------- .../tabs => project/dashboard}/DashboardTab.tsx | 6 +-- .../dashboard}/RunnerInfoContext.tsx | 0 .../dashboard}/RunnerInfoMemory.tsx | 3 +- .../tabs => project/dashboard}/RunnerInfoPod.tsx | 4 +- .../files/FilesTab.tsx} | 20 ++++++-- .../{projects => project/files}/UploadModal.tsx | 4 +- .../pipeline}/ProjectPipelineTab.tsx | 2 +- .../tabs => project/trace}/RunnerInfoTrace.tsx | 4 +- .../trace}/RunnerInfoTraceModal.tsx | 0 .../tabs => project/trace}/RunnerInfoTraceNode.tsx | 0 .../{projects/tabs => project/trace}/TraceTab.tsx | 10 ++-- .../projects/{modal => }/CreateProjectModal.tsx | 17 +++---- .../projects/{modal => }/DeleteProjectModal.tsx | 8 +-- .../src/main/webui/src/projects/ProjectsPage.tsx | 17 +++---- .../main/webui/src/projects/ProjectsTableRow.tsx | 38 ++------------ 34 files changed, 182 insertions(+), 213 deletions(-) diff --git a/karavan-app/src/main/webui/src/Main.tsx b/karavan-app/src/main/webui/src/Main.tsx index 759e77d1..6b64d6e1 100644 --- a/karavan-app/src/main/webui/src/Main.tsx +++ b/karavan-app/src/main/webui/src/Main.tsx @@ -20,8 +20,6 @@ import Icon from "./Logo"; import {ComponentsPage} from "./components/ComponentsPage"; import {EipPage} from "./eip/EipPage"; import {ProjectsPage} from "./projects/ProjectsPage"; -import {Project} from "./projects/ProjectModels"; -import {ProjectPage} from "./projects/ProjectPage"; import UserIcon from "@patternfly/react-icons/dist/js/icons/user-icon"; import ProjectsIcon from "@patternfly/react-icons/dist/js/icons/repository-icon"; import KameletsIcon from "@patternfly/react-icons/dist/js/icons/registry-icon"; @@ -31,7 +29,9 @@ import ComponentsIcon from "@patternfly/react-icons/dist/js/icons/module-icon"; import {MainLogin} from "./MainLogin"; import {DashboardPage} from "./dashboard/DashboardPage"; import {Subscription} from "rxjs"; -import {ProjectEventBus} from "./projects/ProjectEventBus"; +import {ProjectEventBus} from "./api/ProjectEventBus"; +import {Project} from "./api/ProjectModels"; +import {ProjectPage} from "./project/ProjectPage"; class ToastMessage { id: string = '' diff --git a/karavan-app/src/main/webui/src/MainToolbar.tsx b/karavan-app/src/main/webui/src/MainToolbar.tsx deleted file mode 100644 index c312ae8c..00000000 --- a/karavan-app/src/main/webui/src/MainToolbar.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React, {useEffect, useState} from 'react'; -import { - PageSectionVariants, Flex, PageSection, FlexItem -} from '@patternfly/react-core'; -import './designer/karavan.css'; -import {ProjectEventBus} from "./projects/ProjectEventBus"; -import {Project, ProjectFile} from "./projects/ProjectModels"; - -interface Props { - title: React.ReactNode; - tools: React.ReactNode; - file?: ProjectFile; -} - -export const MainToolbar = (props: Props) => { - const {title, tools, file} = props; - - const [project, setProject] = useState<Project | undefined>(undefined); - const [mode, setMode] = useState<"design" | "code">("design"); - - useEffect(() => { - const sub1 = ProjectEventBus.onSelectProject()?.subscribe((result) => setProject(result)); - const sub2 = ProjectEventBus.onSetMode()?.subscribe((result) => setMode(result)); - return () => { - sub1.unsubscribe(); - sub2.unsubscribe(); - }; - }); - - function isKameletsProject(): boolean { - return project?.projectId === 'kamelets'; - } - - function isTemplatesProject(): boolean { - return project?.projectId === 'templates'; - } - - return ( - <PageSection className="tools-section" variant={PageSectionVariants.light}> - <Flex className="tools" justifyContent={{default: 'justifyContentSpaceBetween'}} - alignItems={{default: 'alignItemsCenter'}}> - <FlexItem> - {title} - </FlexItem> - <FlexItem> - {tools} - </FlexItem> - </Flex> - </PageSection> - ); -} diff --git a/karavan-app/src/main/webui/src/api/KaravanApi.tsx b/karavan-app/src/main/webui/src/api/KaravanApi.tsx index 7142c571..06811cb6 100644 --- a/karavan-app/src/main/webui/src/api/KaravanApi.tsx +++ b/karavan-app/src/main/webui/src/api/KaravanApi.tsx @@ -6,7 +6,7 @@ import { PodStatus, Project, ProjectFile, ServiceStatus -} from "../projects/ProjectModels"; +} from "./ProjectModels"; import {Buffer} from 'buffer'; import {SsoApi} from "./SsoApi"; diff --git a/karavan-app/src/main/webui/src/projects/ProjectEventBus.ts b/karavan-app/src/main/webui/src/api/ProjectEventBus.ts similarity index 100% rename from karavan-app/src/main/webui/src/projects/ProjectEventBus.ts rename to karavan-app/src/main/webui/src/api/ProjectEventBus.ts diff --git a/karavan-app/src/main/webui/src/projects/ProjectModels.ts b/karavan-app/src/main/webui/src/api/ProjectModels.ts similarity index 100% rename from karavan-app/src/main/webui/src/projects/ProjectModels.ts rename to karavan-app/src/main/webui/src/api/ProjectModels.ts diff --git a/karavan-app/src/main/webui/src/projects/ProjectLogic.ts b/karavan-app/src/main/webui/src/api/ProjectService.ts similarity index 92% rename from karavan-app/src/main/webui/src/projects/ProjectLogic.ts rename to karavan-app/src/main/webui/src/api/ProjectService.ts index 0b924478..e346c5bd 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectLogic.ts +++ b/karavan-app/src/main/webui/src/api/ProjectService.ts @@ -1,10 +1,10 @@ -import {KaravanApi} from "../api/KaravanApi"; +import {KaravanApi} from "./KaravanApi"; import {DeploymentStatus, Project, ProjectFile} from "./ProjectModels"; import {TemplateApi} from "karavan-core/lib/api/TemplateApi"; import {KubernetesAPI} from "../designer/utils/KubernetesAPI"; import {useDeploymentStatusesStore, useFilesStore, useProjectsStore, useProjectStore} from "./ProjectStore"; -export class ProjectLogic { +export class ProjectService { public static refreshProjects() { KaravanApi.getProjects((projects: Project[]) => { @@ -22,7 +22,7 @@ export class ProjectLogic { KaravanApi.deleteProject(project, res => { if (res.status === 204) { // this.props.toast?.call(this, "Success", "Project deleted", "success"); - ProjectLogic.refreshProjectData(); + ProjectService.refreshProjectData(); } else { // this.props.toast?.call(this, "Error", res.statusText, "danger"); } @@ -33,7 +33,7 @@ export class ProjectLogic { KaravanApi.postProject(project, res => { console.log(res.status) if (res.status === 200 || res.status === 201) { - ProjectLogic.refreshProjectData(); + ProjectService.refreshProjectData(); // this.props.toast?.call(this, "Success", "Project created", "success"); } else { // this.props.toast?.call(this, "Error", res.status + ", " + res.statusText, "danger"); @@ -45,7 +45,7 @@ export class ProjectLogic { KaravanApi.postProjectFile(file, res => { if (res.status === 200) { // console.log(res) //TODO show notification - ProjectLogic.refreshProjectData(); + ProjectService.refreshProjectData(); } else { // console.log(res) //TODO show notification } @@ -55,7 +55,7 @@ export class ProjectLogic { public static deleteFile(file: ProjectFile) { KaravanApi.deleteProjectFile(file, res => { if (res.status === 204) { - ProjectLogic.refreshProjectData(); + ProjectService.refreshProjectData(); } else { } }); diff --git a/karavan-app/src/main/webui/src/projects/ProjectStore.ts b/karavan-app/src/main/webui/src/api/ProjectStore.ts similarity index 100% rename from karavan-app/src/main/webui/src/projects/ProjectStore.ts rename to karavan-app/src/main/webui/src/api/ProjectStore.ts diff --git a/karavan-app/src/main/webui/src/common/MainToolbar.tsx b/karavan-app/src/main/webui/src/common/MainToolbar.tsx new file mode 100644 index 00000000..ed344840 --- /dev/null +++ b/karavan-app/src/main/webui/src/common/MainToolbar.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { + PageSectionVariants, Flex, PageSection, FlexItem +} from '@patternfly/react-core'; +import '../designer/karavan.css'; + +interface Props { + title: React.ReactNode; + tools: React.ReactNode; +} + +export const MainToolbar = (props: Props) => { + + return ( + <PageSection className="tools-section" variant={PageSectionVariants.light}> + <Flex className="tools" justifyContent={{default: 'justifyContentSpaceBetween'}} + alignItems={{default: 'alignItemsCenter'}}> + <FlexItem> + {props.title} + </FlexItem> + <FlexItem> + {props.tools} + </FlexItem> + </Flex> + </PageSection> + ); +} diff --git a/karavan-app/src/main/webui/src/config/ConfigurationPage.tsx b/karavan-app/src/main/webui/src/config/ConfigurationPage.tsx index c9efa9ff..0e796725 100644 --- a/karavan-app/src/main/webui/src/config/ConfigurationPage.tsx +++ b/karavan-app/src/main/webui/src/config/ConfigurationPage.tsx @@ -1,19 +1,9 @@ import React from 'react'; -import { - Badge, Bullseye, Button, EmptyState, EmptyStateIcon, EmptyStateVariant, Flex, FlexItem, - Gallery, OverflowMenu, OverflowMenuContent, OverflowMenuGroup, OverflowMenuItem, - PageSection, Tab, Tabs, TabTitleText, Text, TextContent, TextInput, Title, Toolbar, ToolbarContent, ToolbarItem, Tooltip +import {Button, PageSection, Tab, Tabs, TabTitleText, Text, TextContent, Toolbar, ToolbarContent, ToolbarItem } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {MainToolbar} from "../MainToolbar"; -import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; -import CopyIcon from "@patternfly/react-icons/dist/esm/icons/copy-icon"; -import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-icon"; -import SearchIcon from "@patternfly/react-icons/dist/esm/icons/search-icon"; +import {MainToolbar} from "../common/MainToolbar"; import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon"; -import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon"; -import {KaravanApi} from "../api/KaravanApi"; -import {DeploymentStatus, Project} from "../projects/ProjectModels"; interface Props { } diff --git a/karavan-app/src/main/webui/src/dashboard/DashboardPage.tsx b/karavan-app/src/main/webui/src/dashboard/DashboardPage.tsx index 2538efe6..8bc9be07 100644 --- a/karavan-app/src/main/webui/src/dashboard/DashboardPage.tsx +++ b/karavan-app/src/main/webui/src/dashboard/DashboardPage.tsx @@ -13,8 +13,7 @@ import { ToolbarItem, Tooltip } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {MainToolbar} from "../MainToolbar"; -import {CamelStatus, DeploymentStatus, Project, ServiceStatus} from "../projects/ProjectModels"; +import {CamelStatus, DeploymentStatus, Project, ServiceStatus} from "../api/ProjectModels"; import {TableComposable, TableVariant, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; import {camelIcon, CamelUi} from "../designer/utils/CamelUi"; import {KaravanApi} from "../api/KaravanApi"; @@ -23,6 +22,7 @@ import UpIcon from "@patternfly/react-icons/dist/esm/icons/check-circle-icon"; import DownIcon from "@patternfly/react-icons/dist/esm/icons/error-circle-o-icon"; import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon"; import SearchIcon from "@patternfly/react-icons/dist/esm/icons/search-icon"; +import {MainToolbar} from "../common/MainToolbar"; interface Props { config: any, diff --git a/karavan-app/src/main/webui/src/projects/modal/CreateFileModal.tsx b/karavan-app/src/main/webui/src/project/CreateFileModal.tsx similarity index 92% rename from karavan-app/src/main/webui/src/projects/modal/CreateFileModal.tsx rename to karavan-app/src/main/webui/src/project/CreateFileModal.tsx index fa29401c..79887096 100644 --- a/karavan-app/src/main/webui/src/projects/modal/CreateFileModal.tsx +++ b/karavan-app/src/main/webui/src/project/CreateFileModal.tsx @@ -7,13 +7,13 @@ import { Form, ToggleGroupItem, ToggleGroup, FormHelperText, HelperText, HelperTextItem, TextInput } from '@patternfly/react-core'; -import '../../designer/karavan.css'; -import {ProjectFile, ProjectFileTypes} from "../ProjectModels"; -import {CamelUi} from "../../designer/utils/CamelUi"; +import '../designer/karavan.css'; import {Integration} from "karavan-core/lib/model/IntegrationDefinition"; import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml"; -import {useFileStore, useProjectStore} from "../ProjectStore"; -import {ProjectLogic} from "../ProjectLogic"; +import {useFileStore, useProjectStore} from "../api/ProjectStore"; +import {ProjectFile, ProjectFileTypes} from "../api/ProjectModels"; +import {CamelUi} from "../designer/utils/CamelUi"; +import {ProjectService} from "../api/ProjectService"; interface Props { types: string[] @@ -44,7 +44,7 @@ export const CreateFileModal = (props: Props) => { : ''; if (filename && extension) { const file = new ProjectFile(filename + '.' + extension, project.projectId, code, Date.now()); - ProjectLogic.createFile(file); + ProjectService.createFile(file); useFileStore.setState({operation: "none"}); cleanValues(); } diff --git a/karavan-app/src/main/webui/src/projects/modal/DeleteFileModal.tsx b/karavan-app/src/main/webui/src/project/DeleteFileModal.tsx similarity index 84% rename from karavan-app/src/main/webui/src/projects/modal/DeleteFileModal.tsx rename to karavan-app/src/main/webui/src/project/DeleteFileModal.tsx index 85dc7acf..4ed433ea 100644 --- a/karavan-app/src/main/webui/src/projects/modal/DeleteFileModal.tsx +++ b/karavan-app/src/main/webui/src/project/DeleteFileModal.tsx @@ -4,9 +4,9 @@ import { Modal, ModalVariant, } from '@patternfly/react-core'; -import '../../designer/karavan.css'; -import {useFileStore, useProjectStore} from "../ProjectStore"; -import {ProjectLogic} from "../ProjectLogic"; +import '../designer/karavan.css'; +import {useFileStore} from "../api/ProjectStore"; +import {ProjectService} from "../api/ProjectService"; export const DeleteFileModal = () => { @@ -17,7 +17,7 @@ export const DeleteFileModal = () => { } function confirmAndCloseModal () { - if (file) ProjectLogic.deleteFile(file); + if (file) ProjectService.deleteFile(file); useFileStore.setState({operation: "none"}); } diff --git a/karavan-app/src/main/webui/src/projects/ProjectLog.tsx b/karavan-app/src/main/webui/src/project/ProjectLog.tsx similarity index 96% rename from karavan-app/src/main/webui/src/projects/ProjectLog.tsx rename to karavan-app/src/main/webui/src/project/ProjectLog.tsx index dea7aaad..ba674aaa 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectLog.tsx +++ b/karavan-app/src/main/webui/src/project/ProjectLog.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {Button, Checkbox, Label, PageSection, Text, Tooltip, TooltipPosition} from '@patternfly/react-core'; +import {Button, Checkbox, Label, PageSection, Tooltip, TooltipPosition} from '@patternfly/react-core'; import '../designer/karavan.css'; import CloseIcon from '@patternfly/react-icons/dist/esm/icons/times-icon'; import ExpandIcon from '@patternfly/react-icons/dist/esm/icons/expand-icon'; @@ -8,7 +8,7 @@ import CollapseIcon from '@patternfly/react-icons/dist/esm/icons/compress-icon'; import CleanIcon from '@patternfly/react-icons/dist/esm/icons/trash-alt-icon'; import {LogViewer} from '@patternfly/react-log-viewer'; import {Subscription} from "rxjs"; -import {ProjectEventBus, ShowLogCommand} from "./ProjectEventBus"; +import {ProjectEventBus, ShowLogCommand} from "../api/ProjectEventBus"; const INITIAL_LOG_HEIGHT = "50%"; diff --git a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx b/karavan-app/src/main/webui/src/project/ProjectPage.tsx similarity index 93% rename from karavan-app/src/main/webui/src/projects/ProjectPage.tsx rename to karavan-app/src/main/webui/src/project/ProjectPage.tsx index 77a0ce85..34c6c429 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx +++ b/karavan-app/src/main/webui/src/project/ProjectPage.tsx @@ -3,39 +3,36 @@ import { Badge, Breadcrumb, BreadcrumbItem, - Button, PageSection, Text, TextContent, - ModalVariant, - Modal, Flex, FlexItem, CodeBlockCode, CodeBlock, Skeleton, Tabs, Tab } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {MainToolbar} from "../MainToolbar"; import {KaravanApi} from "../api/KaravanApi"; -import {getProjectFileType, Project, ProjectFile, ProjectFileTypes} from "./ProjectModels"; import {KaravanDesigner} from "../designer/KaravanDesigner"; import FileSaver from "file-saver"; import Editor from "@monaco-editor/react"; -import {CreateFileModal} from "./modal/CreateFileModal"; import {PropertiesEditor} from "./PropertiesEditor"; import {ProjectModel, ProjectProperty} from "karavan-core/lib/model/ProjectModel"; import {ProjectModelApi} from "karavan-core/lib/api/ProjectModelApi"; -import {ProjectPipelineTab} from "./tabs/ProjectPipelineTab"; import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml"; -import {ProjectToolbar} from "./toolbar/ProjectToolbar"; -import {ProjectFilesTab} from "./tabs/ProjectFilesTab"; +import {ProjectToolbar} from "./ProjectToolbar"; +import {FilesTab} from "./files/FilesTab"; import {EventBus} from "../designer/utils/EventBus"; import {ProjectLog} from "./ProjectLog"; -import {ProjectLogic} from "./ProjectLogic"; -import {useProjectStore} from "./ProjectStore"; -import {DeleteFileModal} from "./modal/DeleteFileModal"; -import {DashboardTab} from "./tabs/DashboardTab"; -import {TraceTab} from "./tabs/TraceTab"; +import {getProjectFileType, ProjectFile, ProjectFileTypes} from "../api/ProjectModels"; +import {useProjectStore} from "../api/ProjectStore"; +import {ProjectService} from "../api/ProjectService"; +import {DashboardTab} from "./dashboard/DashboardTab"; +import {TraceTab} from "./trace/TraceTab"; +import {ProjectPipelineTab} from "./pipeline/ProjectPipelineTab"; +import {MainToolbar} from "../common/MainToolbar"; +import {CreateFileModal} from "./CreateFileModal"; +import {DeleteFileModal} from "./DeleteFileModal"; interface Props { config: any, @@ -75,7 +72,7 @@ export const ProjectPage = (props: Props) => { } function onRefresh () { - ProjectLogic.refreshProjectData(environment); + ProjectService.refreshProjectData(environment); } function post (file: ProjectFile) { @@ -339,10 +336,10 @@ export const ProjectPage = (props: Props) => { const buildIn = isBuildIn(); return ( <FlexItem> - {buildIn && tab === 'files' && <ProjectFilesTab/>} + {buildIn && tab === 'files' && <FilesTab/>} {!buildIn && <> - {tab === 'files' && <ProjectFilesTab/>} + {tab === 'files' && <FilesTab/>} {tab === 'dashboard' && project && <DashboardTab config={props.config}/>} {tab === 'trace' && project && <TraceTab config={props.config}/>} {tab === 'pipeline' && <ProjectPipelineTab project={project} @@ -377,7 +374,7 @@ export const ProjectPage = (props: Props) => { return ( <PageSection key={key} className="kamelet-section project-page" padding={{default: 'noPadding'}}> <PageSection className="tools-section" padding={{default: 'noPadding'}}> - <MainToolbar title={title()} tools={tools()} file={file}/> + <MainToolbar title={title()} tools={tools()}/> </PageSection> {file === undefined && getProjectPanel()} {/*{file !== undefined && getFilePanel()}*/} diff --git a/karavan-app/src/main/webui/src/projects/ProjectStatus.tsx b/karavan-app/src/main/webui/src/project/ProjectStatus.tsx similarity index 99% rename from karavan-app/src/main/webui/src/projects/ProjectStatus.tsx rename to karavan-app/src/main/webui/src/project/ProjectStatus.tsx index 9974e4db..3e57ebe9 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectStatus.tsx +++ b/karavan-app/src/main/webui/src/project/ProjectStatus.tsx @@ -8,14 +8,14 @@ import { } from '@patternfly/react-core'; import '../designer/karavan.css'; import {KaravanApi} from "../api/KaravanApi"; -import {DeploymentStatus, Project, PipelineStatus, CamelStatus, PodStatus} from "./ProjectModels"; import BuildIcon from "@patternfly/react-icons/dist/esm/icons/build-icon"; import RolloutIcon from "@patternfly/react-icons/dist/esm/icons/process-automation-icon"; import UpIcon from "@patternfly/react-icons/dist/esm/icons/check-circle-icon"; import DownIcon from "@patternfly/react-icons/dist/esm/icons/error-circle-o-icon"; import ClockIcon from "@patternfly/react-icons/dist/esm/icons/clock-icon"; import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/times-circle-icon"; -import {ProjectEventBus} from "./ProjectEventBus"; +import {CamelStatus, DeploymentStatus, PipelineStatus, PodStatus, Project} from "../api/ProjectModels"; +import {ProjectEventBus} from "../api/ProjectEventBus"; interface Props { project: Project, diff --git a/karavan-app/src/main/webui/src/projects/toolbar/ProjectToolbar.tsx b/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx similarity index 85% rename from karavan-app/src/main/webui/src/projects/toolbar/ProjectToolbar.tsx rename to karavan-app/src/main/webui/src/project/ProjectToolbar.tsx index 39cf4c84..1957f9d6 100644 --- a/karavan-app/src/main/webui/src/projects/toolbar/ProjectToolbar.tsx +++ b/karavan-app/src/main/webui/src/project/ProjectToolbar.tsx @@ -19,19 +19,19 @@ import { Tooltip, TooltipPosition } from '@patternfly/react-core'; -import '../../designer/karavan.css'; -import {Project, ProjectFile} from "../ProjectModels"; +import '../designer/karavan.css'; import UploadIcon from "@patternfly/react-icons/dist/esm/icons/upload-icon"; import DownloadIcon from "@patternfly/react-icons/dist/esm/icons/download-icon"; 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 PushIcon from "@patternfly/react-icons/dist/esm/icons/code-branch-icon"; -import {KaravanApi} from "../../api/KaravanApi"; +import {KaravanApi} from "../api/KaravanApi"; import ReloadIcon from "@patternfly/react-icons/dist/esm/icons/bolt-icon"; -import {RunnerToolbar} from "../RunnerToolbar"; -import {ProjectEventBus} from "../ProjectEventBus"; -import {useFileStore, useProjectStore} from "../ProjectStore"; +import {RunnerToolbar} from "./RunnerToolbar"; +import {Project, ProjectFile} from "../api/ProjectModels"; +import {ProjectEventBus} from "../api/ProjectEventBus"; +import {useFileStore} from "../api/ProjectStore"; interface Props { project: Project, @@ -57,16 +57,63 @@ export const ProjectToolbar = (props: Props) => { const [commitMessageIsOpen, setCommitMessageIsOpen] = useState(false); const [commitMessage, setCommitMessage] = useState(''); const [currentRunner, setCurrentRunner] = useState(''); + const [podName, setPodName] = useState(props.project.projectId + '-runner'); + const [isJbangRunning, setJbangIsRunning] = useState(false); + const [isRunning, setIsRunning] = useState(false); + const [isDeletingPod, setIsDeletingPod] = useState(false); + const [isReloadingPod, setIsReloadingPod] = useState(false); useEffect(() => { const sub1 = ProjectEventBus.onCurrentRunner()?.subscribe((result) => { setCurrentRunner(result || ''); + setJbangIsRunning(result === props.project.name); }); return () => { sub1.unsubscribe(); }; }); + function jbangRun() { + setJbangIsRunning(true); + KaravanApi.runProject(props.project, res => { + if (res.status === 200 || res.status === 201) { + ProjectEventBus.setCurrentRunner(props.project.name); + setJbangIsRunning(false); + setPodName(res.data); + ProjectEventBus.showLog('container', res.data, props.config.environment) + } else { + // Todo notification + setJbangIsRunning(false); + ProjectEventBus.setCurrentRunner(undefined); + } + }); + } + + function reloadRunner() { + setIsReloadingPod(true); + KaravanApi.getRunnerReload(props.project.projectId, res => { + if (res.status === 200 || res.status === 201) { + setIsReloadingPod(false); + } else { + // Todo notification + setIsReloadingPod(false); + } + }); + } + + function deleteRunner() { + ProjectEventBus.setCurrentRunner(undefined); + setIsDeletingPod(true); + KaravanApi.deleteRunner(podName, false, res => { + if (res.status === 202) { + setIsDeletingPod(false); + } else { + // Todo notification + setIsDeletingPod(false); + } + }); + } + function push () { setIsPushing(true); setCommitMessageIsOpen(false); diff --git a/karavan-app/src/main/webui/src/projects/PropertiesEditor.tsx b/karavan-app/src/main/webui/src/project/PropertiesEditor.tsx similarity index 96% rename from karavan-app/src/main/webui/src/projects/PropertiesEditor.tsx rename to karavan-app/src/main/webui/src/project/PropertiesEditor.tsx index 28cbcf40..bf2f4609 100644 --- a/karavan-app/src/main/webui/src/projects/PropertiesEditor.tsx +++ b/karavan-app/src/main/webui/src/project/PropertiesEditor.tsx @@ -3,10 +3,10 @@ import { PageSection, } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {ProjectFile} from "./ProjectModels"; import {PropertiesTable} from "./PropertiesTable"; import {ProjectModel} from "karavan-core/lib/model/ProjectModel"; import {ProjectModelApi} from "karavan-core/lib/api/ProjectModelApi"; +import {ProjectFile} from "../api/ProjectModels"; interface Props { file: ProjectFile, diff --git a/karavan-app/src/main/webui/src/projects/PropertiesTable.tsx b/karavan-app/src/main/webui/src/project/PropertiesTable.tsx similarity index 100% rename from karavan-app/src/main/webui/src/projects/PropertiesTable.tsx rename to karavan-app/src/main/webui/src/project/PropertiesTable.tsx diff --git a/karavan-app/src/main/webui/src/projects/RunnerToolbar.tsx b/karavan-app/src/main/webui/src/project/RunnerToolbar.tsx similarity index 83% rename from karavan-app/src/main/webui/src/projects/RunnerToolbar.tsx rename to karavan-app/src/main/webui/src/project/RunnerToolbar.tsx index 9b124372..4b63bf2b 100644 --- a/karavan-app/src/main/webui/src/projects/RunnerToolbar.tsx +++ b/karavan-app/src/main/webui/src/project/RunnerToolbar.tsx @@ -1,17 +1,16 @@ import React, {useEffect, useState} from 'react'; import { - Button, Label, Switch, Tab, Tabs, + Button, Tooltip, TooltipPosition } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {Project} from "./ProjectModels"; import RocketIcon from "@patternfly/react-icons/dist/esm/icons/rocket-icon"; import ReloadIcon from "@patternfly/react-icons/dist/esm/icons/bolt-icon"; -import TraceIcon from "@patternfly/react-icons/dist/esm/icons/list-icon"; import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/times-circle-icon"; import {KaravanApi} from "../api/KaravanApi"; -import {ProjectEventBus} from "./ProjectEventBus"; +import {Project} from "../api/ProjectModels"; +import {ProjectEventBus} from "../api/ProjectEventBus"; interface Props { @@ -28,7 +27,6 @@ export const RunnerToolbar = (props: Props) => { const [isRunning, setIsRunning] = useState(false); const [isDeletingPod, setIsDeletingPod] = useState(false); const [isReloadingPod, setIsReloadingPod] = useState(false); - const [isShowingTrace, setIsShowingTrace] = useState(false); useEffect(() => { const sub1 = ProjectEventBus.onCurrentRunner()?.subscribe((result) => { @@ -80,11 +78,6 @@ export const RunnerToolbar = (props: Props) => { }); } - function showTrace() { - ProjectEventBus.showTrace(props.project.projectId, !isShowingTrace); - setIsShowingTrace((prevState) => !prevState); - } - return ( <div className="runner-toolbar"> {!props.showConsole && !props.reloadOnly && @@ -127,17 +120,6 @@ export const RunnerToolbar = (props: Props) => { </Button> </Tooltip> </div> - <div className="row"> - <Tooltip content={isShowingTrace ? "Show runtime" : "Show trace"} position={TooltipPosition.left}> - <Button isSmall - variant={"secondary"} - className="project-button" - icon={ <TraceIcon/>} - onClick={() => showTrace()}> - {isShowingTrace ? "Runtime" : "Trace"} - </Button> - </Tooltip> - </div> <Tooltip content="Stop runner" position={TooltipPosition.left}> <Button isLoading={isDeletingPod ? true : undefined} isSmall diff --git a/karavan-app/src/main/webui/src/projects/tabs/DashboardTab.tsx b/karavan-app/src/main/webui/src/project/dashboard/DashboardTab.tsx similarity index 95% rename from karavan-app/src/main/webui/src/projects/tabs/DashboardTab.tsx rename to karavan-app/src/main/webui/src/project/dashboard/DashboardTab.tsx index a31954f2..7eddf0c6 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/DashboardTab.tsx +++ b/karavan-app/src/main/webui/src/project/dashboard/DashboardTab.tsx @@ -4,13 +4,13 @@ import { CardBody, Flex, FlexItem, Divider, PageSection } from '@patternfly/react-core'; import '../../designer/karavan.css'; -import {PodStatus} from "../ProjectModels"; import {RunnerInfoPod} from "./RunnerInfoPod"; import {RunnerInfoContext} from "./RunnerInfoContext"; import {RunnerInfoMemory} from "./RunnerInfoMemory"; import {KaravanApi} from "../../api/KaravanApi"; -import {ProjectEventBus} from "../ProjectEventBus"; -import {useProjectStore} from "../ProjectStore"; +import {PodStatus} from "../../api/ProjectModels"; +import {useProjectStore} from "../../api/ProjectStore"; +import {ProjectEventBus} from "../../api/ProjectEventBus"; export function isRunning(status: PodStatus): boolean { return status.phase === 'Running' && !status.terminating; diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoContext.tsx b/karavan-app/src/main/webui/src/project/dashboard/RunnerInfoContext.tsx similarity index 100% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoContext.tsx rename to karavan-app/src/main/webui/src/project/dashboard/RunnerInfoContext.tsx diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoMemory.tsx b/karavan-app/src/main/webui/src/project/dashboard/RunnerInfoMemory.tsx similarity index 98% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoMemory.tsx rename to karavan-app/src/main/webui/src/project/dashboard/RunnerInfoMemory.tsx index f2eb27ce..15c37bd0 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoMemory.tsx +++ b/karavan-app/src/main/webui/src/project/dashboard/RunnerInfoMemory.tsx @@ -1,6 +1,5 @@ -import React, {useEffect, useRef, useState} from 'react'; +import React from 'react'; import { - Button, DescriptionList, DescriptionListDescription, DescriptionListGroup, diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoPod.tsx b/karavan-app/src/main/webui/src/project/dashboard/RunnerInfoPod.tsx similarity index 97% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoPod.tsx rename to karavan-app/src/main/webui/src/project/dashboard/RunnerInfoPod.tsx index 0c31d40c..c55ae090 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoPod.tsx +++ b/karavan-app/src/main/webui/src/project/dashboard/RunnerInfoPod.tsx @@ -9,10 +9,10 @@ import { Tooltip } from '@patternfly/react-core'; import '../../designer/karavan.css'; -import {PodStatus} from "../ProjectModels"; -import {ProjectEventBus} from "../ProjectEventBus"; import DownIcon from "@patternfly/react-icons/dist/esm/icons/error-circle-o-icon"; import UpIcon from "@patternfly/react-icons/dist/esm/icons/check-circle-icon"; +import {PodStatus} from "../../api/ProjectModels"; +import {ProjectEventBus} from "../../api/ProjectEventBus"; export function isRunning(status: PodStatus): boolean { diff --git a/karavan-app/src/main/webui/src/projects/tabs/ProjectFilesTab.tsx b/karavan-app/src/main/webui/src/project/files/FilesTab.tsx similarity index 85% rename from karavan-app/src/main/webui/src/projects/tabs/ProjectFilesTab.tsx rename to karavan-app/src/main/webui/src/project/files/FilesTab.tsx index aafc1bc5..feb57616 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/ProjectFilesTab.tsx +++ b/karavan-app/src/main/webui/src/project/files/FilesTab.tsx @@ -6,17 +6,17 @@ import { EmptyState, EmptyStateVariant, EmptyStateIcon, - Title, PageSection, + Title, PageSection, PanelHeader, Flex, FlexItem, Panel, } from '@patternfly/react-core'; import '../../designer/karavan.css'; -import {getProjectFileType} from "../ProjectModels"; import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-icon"; import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon'; -import {useFilesStore, useFileStore, useProjectStore} from "../ProjectStore"; +import {useFilesStore, useFileStore} from "../../api/ProjectStore"; +import {getProjectFileType} from "../../api/ProjectModels"; -export const ProjectFilesTab = () => { +export const FilesTab = () => { const {files} = useFilesStore(); @@ -30,6 +30,18 @@ export const ProjectFilesTab = () => { } return ( <PageSection className="project-bottom" padding={{default: "padding"}}> + <Panel> + <PanelHeader> + <Flex direction={{default: "row"}} justifyContent={{default:"justifyContentFlexEnd"}}> + <FlexItem> + + </FlexItem> + <FlexItem> + + </FlexItem> + </Flex> + </PanelHeader> + </Panel> <TableComposable aria-label="Files" variant={"compact"} className={"table"}> <Thead> <Tr> diff --git a/karavan-app/src/main/webui/src/projects/UploadModal.tsx b/karavan-app/src/main/webui/src/project/files/UploadModal.tsx similarity index 98% rename from karavan-app/src/main/webui/src/projects/UploadModal.tsx rename to karavan-app/src/main/webui/src/project/files/UploadModal.tsx index fae83f8b..a2af3243 100644 --- a/karavan-app/src/main/webui/src/projects/UploadModal.tsx +++ b/karavan-app/src/main/webui/src/project/files/UploadModal.tsx @@ -4,8 +4,8 @@ import { Button, Modal, FormGroup, ModalVariant, Switch, Form, FileUpload, Radio } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {KaravanApi} from "../api/KaravanApi"; -import {ProjectFile} from "./ProjectModels"; +import {ProjectFile} from "../../api/ProjectModels"; +import {KaravanApi} from "../../api/KaravanApi"; interface Props { projectId: string, diff --git a/karavan-app/src/main/webui/src/projects/tabs/ProjectPipelineTab.tsx b/karavan-app/src/main/webui/src/project/pipeline/ProjectPipelineTab.tsx similarity index 95% rename from karavan-app/src/main/webui/src/projects/tabs/ProjectPipelineTab.tsx rename to karavan-app/src/main/webui/src/project/pipeline/ProjectPipelineTab.tsx index 7eb5ca69..54cd6f99 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/ProjectPipelineTab.tsx +++ b/karavan-app/src/main/webui/src/project/pipeline/ProjectPipelineTab.tsx @@ -1,8 +1,8 @@ import React from 'react'; import '../../designer/karavan.css'; -import {Project} from "../ProjectModels"; import {ProjectStatus} from "../ProjectStatus"; import {PageSection} from "@patternfly/react-core"; +import {Project} from "../../api/ProjectModels"; interface Props { diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTrace.tsx b/karavan-app/src/main/webui/src/project/trace/RunnerInfoTrace.tsx similarity index 98% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTrace.tsx rename to karavan-app/src/main/webui/src/project/trace/RunnerInfoTrace.tsx index a168b89e..8f0f655d 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTrace.tsx +++ b/karavan-app/src/main/webui/src/project/trace/RunnerInfoTrace.tsx @@ -9,11 +9,9 @@ import { PanelHeader, Text, Switch, TextContent, TextVariants, Title, - Tooltip, - TooltipPosition } from '@patternfly/react-core'; import '../../designer/karavan.css'; -import {ProjectEventBus} from "../ProjectEventBus"; +import {ProjectEventBus} from "../../api/ProjectEventBus"; import {RunnerInfoTraceModal} from "./RunnerInfoTraceModal"; import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; import SearchIcon from "@patternfly/react-icons/dist/esm/icons/search-icon"; diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTraceModal.tsx b/karavan-app/src/main/webui/src/project/trace/RunnerInfoTraceModal.tsx similarity index 100% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTraceModal.tsx rename to karavan-app/src/main/webui/src/project/trace/RunnerInfoTraceModal.tsx diff --git a/karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTraceNode.tsx b/karavan-app/src/main/webui/src/project/trace/RunnerInfoTraceNode.tsx similarity index 100% rename from karavan-app/src/main/webui/src/projects/tabs/RunnerInfoTraceNode.tsx rename to karavan-app/src/main/webui/src/project/trace/RunnerInfoTraceNode.tsx diff --git a/karavan-app/src/main/webui/src/projects/tabs/TraceTab.tsx b/karavan-app/src/main/webui/src/project/trace/TraceTab.tsx similarity index 89% rename from karavan-app/src/main/webui/src/projects/tabs/TraceTab.tsx rename to karavan-app/src/main/webui/src/project/trace/TraceTab.tsx index 46c26403..144c2b00 100644 --- a/karavan-app/src/main/webui/src/projects/tabs/TraceTab.tsx +++ b/karavan-app/src/main/webui/src/project/trace/TraceTab.tsx @@ -1,14 +1,12 @@ import React, {useEffect, useState} from 'react'; -import { - Card, - CardBody, PageSection +import { PageSection } from '@patternfly/react-core'; import '../../designer/karavan.css'; -import {PodStatus} from "../ProjectModels"; +import {PodStatus} from "../../api/ProjectModels"; import {KaravanApi} from "../../api/KaravanApi"; -import {ProjectEventBus} from "../ProjectEventBus"; +import {ProjectEventBus} from "../../api/ProjectEventBus"; import {RunnerInfoTrace} from "./RunnerInfoTrace"; -import {useProjectStore} from "../ProjectStore"; +import {useProjectStore} from "../../api/ProjectStore"; export function isRunning(status: PodStatus): boolean { return status.phase === 'Running' && !status.terminating; diff --git a/karavan-app/src/main/webui/src/projects/modal/CreateProjectModal.tsx b/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx similarity index 88% rename from karavan-app/src/main/webui/src/projects/modal/CreateProjectModal.tsx rename to karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx index 6312c117..19fa2cb5 100644 --- a/karavan-app/src/main/webui/src/projects/modal/CreateProjectModal.tsx +++ b/karavan-app/src/main/webui/src/projects/CreateProjectModal.tsx @@ -1,17 +1,16 @@ -import React, {useEffect, useState} from 'react'; +import React, {useState} from 'react'; import { Button, Form, FormGroup, Modal, ModalVariant, Radio, TextInput, } from '@patternfly/react-core'; -import '../../designer/karavan.css'; -import {useProjectStore} from "../ProjectStore"; -import {ProjectLogic} from "../ProjectLogic"; -import {QuarkusIcon, SpringIcon} from "../../designer/utils/KaravanIcons"; +import '../designer/karavan.css'; import {CamelUtil} from "karavan-core/lib/api/CamelUtil"; -import {CamelUi} from "../../designer/utils/CamelUi"; -import {Project} from "../ProjectModels"; -import {ProjectEventBus} from "../ProjectEventBus"; +import {useProjectStore} from "../api/ProjectStore"; +import {ProjectService} from "../api/ProjectService"; +import {Project} from "../api/ProjectModels"; +import {QuarkusIcon, SpringIcon} from "../designer/utils/KaravanIcons"; +import {CamelUi} from "../designer/utils/CamelUi"; interface Props { config: any, @@ -38,7 +37,7 @@ export const CreateProjectModal = (props: Props) => { } function confirmAndCloseModal () { - ProjectLogic.createProject(new Project({name: name, description: description, runtime: runtime, projectId: projectId})); + ProjectService.createProject(new Project({name: name, description: description, runtime: runtime, projectId: projectId})); useProjectStore.setState({operation: "none"}); cleanValues(); } diff --git a/karavan-app/src/main/webui/src/projects/modal/DeleteProjectModal.tsx b/karavan-app/src/main/webui/src/projects/DeleteProjectModal.tsx similarity index 91% rename from karavan-app/src/main/webui/src/projects/modal/DeleteProjectModal.tsx rename to karavan-app/src/main/webui/src/projects/DeleteProjectModal.tsx index ad07326c..5ae29dd4 100644 --- a/karavan-app/src/main/webui/src/projects/modal/DeleteProjectModal.tsx +++ b/karavan-app/src/main/webui/src/projects/DeleteProjectModal.tsx @@ -4,9 +4,9 @@ import { Modal, ModalVariant, } from '@patternfly/react-core'; -import '../../designer/karavan.css'; -import {useProjectStore} from "../ProjectStore"; -import {ProjectLogic} from "../ProjectLogic"; +import '../designer/karavan.css'; +import {useProjectStore} from "../api/ProjectStore"; +import {ProjectService} from "../api/ProjectService"; export const DeleteProjectModal = () => { @@ -17,7 +17,7 @@ export const DeleteProjectModal = () => { } function confirmAndCloseModal () { - ProjectLogic.deleteProject(project); + ProjectService.deleteProject(project); useProjectStore.setState({operation: "none"}); } diff --git a/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx b/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx index ff1423cc..dec4ea29 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectsPage.tsx @@ -15,18 +15,17 @@ import { Title, Spinner } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {MainToolbar} from "../MainToolbar"; import RefreshIcon from '@patternfly/react-icons/dist/esm/icons/sync-alt-icon'; import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon'; -import {Project} from "./ProjectModels"; import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon'; import {ProjectsTableRow} from "./ProjectsTableRow"; -import {useProjectStore} from "./ProjectStore"; -import {ProjectLogic} from "./ProjectLogic"; -import {useProjectsStore} from "./ProjectStore"; -import {DeleteProjectModal} from "./modal/DeleteProjectModal"; -import {CreateProjectModal} from "./modal/CreateProjectModal"; +import {DeleteProjectModal} from "./DeleteProjectModal"; +import {CreateProjectModal} from "./CreateProjectModal"; +import {useProjectsStore, useProjectStore} from "../api/ProjectStore"; +import {ProjectService} from "../api/ProjectService"; +import {MainToolbar} from "../common/MainToolbar"; +import {Project} from "../api/ProjectModels"; interface Props { @@ -44,7 +43,7 @@ export const ProjectsPage = (props: Props) => { useEffect(() => { const interval = setInterval(() => { if (projects.length === 0) setLoading(true); - if (!["create", "delete", "select", "copy"].includes(operation)) ProjectLogic.refreshProjects(); + if (!["create", "delete", "select", "copy"].includes(operation)) ProjectService.refreshProjects(); }, 1300); return () => { clearInterval(interval) @@ -56,7 +55,7 @@ export const ProjectsPage = (props: Props) => { <ToolbarContent> <ToolbarItem> <Button variant="link" icon={<RefreshIcon/>} onClick={e => - ProjectLogic.refreshProjects()}/> + ProjectService.refreshProjects()}/> </ToolbarItem> <ToolbarItem> <TextInput className="text-field" type="search" id="search" name="search" diff --git a/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx b/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx index 76d264a3..9ce6b07e 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectsTableRow.tsx @@ -1,45 +1,17 @@ import React from 'react'; import { - Toolbar, - ToolbarContent, - ToolbarItem, - TextInput, - PageSection, - TextContent, - Text, Button, - Modal, - FormGroup, - ModalVariant, - Form, Badge, Tooltip, - Bullseye, - EmptyState, - EmptyStateVariant, - EmptyStateIcon, - Title, - OverflowMenu, - OverflowMenuContent, - OverflowMenuGroup, - OverflowMenuItem, - Flex, FlexItem, Radio, Spinner + Flex, FlexItem } from '@patternfly/react-core'; import '../designer/karavan.css'; -import {MainToolbar} from "../MainToolbar"; -import RefreshIcon from '@patternfly/react-icons/dist/esm/icons/sync-alt-icon'; -import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon'; -import {DeploymentStatus, Project} from "./ProjectModels"; -import {TableComposable, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table"; +import { Td, Tr} from "@patternfly/react-table"; import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-icon"; -import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon'; import CopyIcon from "@patternfly/react-icons/dist/esm/icons/copy-icon"; -import {CamelUi} from "../designer/utils/CamelUi"; -import {KaravanApi} from "../api/KaravanApi"; -import {QuarkusIcon, SpringIcon} from "../designer/utils/KaravanIcons"; -import {CamelUtil} from "karavan-core/lib/api/CamelUtil"; -import {ProjectEventBus} from "./ProjectEventBus"; -import {useDeploymentStatusesStore, useProjectsStore, useProjectStore} from "./ProjectStore"; +import {DeploymentStatus, Project} from '../api/ProjectModels'; +import {useDeploymentStatusesStore, useProjectStore} from "../api/ProjectStore"; +import {ProjectEventBus} from "../api/ProjectEventBus"; interface Props { config: any,