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 3f1f4fd SHow correct file and project lastUpdates 3f1f4fd is described below commit 3f1f4fd89c1b8f2930dad4e0d3aef4a9798573e6 Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Mon Dec 19 21:31:01 2022 -0500 SHow correct file and project lastUpdates --- .../camel/karavan/api/ProjectFileResource.java | 1 + .../org/apache/camel/karavan/model/GitRepo.java | 49 ++++++++++++++++++++++ .../apache/camel/karavan/model/GitRepoFile.java | 37 ++++++++++++++++ .../org/apache/camel/karavan/model/Project.java | 15 ++++++- .../apache/camel/karavan/service/GitService.java | 47 +++++++++++++++------ .../camel/karavan/service/ImportService.java | 32 +++++++------- .../camel/karavan/service/InfinispanService.java | 1 - .../main/webui/src/projects/ProjectFilesTable.tsx | 35 +--------------- .../src/main/webui/src/projects/ProjectInfo.tsx | 41 +++++++++++++----- .../src/main/webui/src/projects/ProjectModels.ts | 2 + .../src/main/webui/src/projects/ProjectPage.tsx | 14 ++++--- .../main/webui/src/projects/ProjectPageToolbar.tsx | 5 --- 12 files changed, 196 insertions(+), 83 deletions(-) diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java b/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java index 747e34d..02dc7ad 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/api/ProjectFileResource.java @@ -60,6 +60,7 @@ public class ProjectFileResource { @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public ProjectFile save(ProjectFile file) throws Exception { + file.setLastUpdate(Instant.now().toEpochMilli()); infinispanService.saveProjectFile(file); return file; } diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepo.java b/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepo.java new file mode 100644 index 0000000..25d222f --- /dev/null +++ b/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepo.java @@ -0,0 +1,49 @@ +package org.apache.camel.karavan.model; + +import java.util.List; + +public class GitRepo { + private String name; + private String commitId; + private Long lastCommitTimestamp; + private List<GitRepoFile> files; + + public GitRepo(String name, String commitId, Long lastCommitTimestamp, List<GitRepoFile> files) { + this.name = name; + this.commitId = commitId; + this.lastCommitTimestamp = lastCommitTimestamp; + this.files = files; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCommitId() { + return commitId; + } + + public void setCommitId(String commitId) { + this.commitId = commitId; + } + + public Long getLastCommitTimestamp() { + return lastCommitTimestamp; + } + + public void setLastCommitTimestamp(Long lastCommitTimestamp) { + this.lastCommitTimestamp = lastCommitTimestamp; + } + + public List<GitRepoFile> getFiles() { + return files; + } + + public void setFiles(List<GitRepoFile> files) { + this.files = files; + } +} diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepoFile.java b/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepoFile.java new file mode 100644 index 0000000..8505200 --- /dev/null +++ b/karavan-app/src/main/java/org/apache/camel/karavan/model/GitRepoFile.java @@ -0,0 +1,37 @@ +package org.apache.camel.karavan.model; + +public class GitRepoFile { + private String name; + private Long lastCommitTimestamp; + private String body; + + public GitRepoFile(String name, Long lastCommitTimestamp, String body) { + this.name = name; + this.lastCommitTimestamp = lastCommitTimestamp; + this.body = body; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getLastCommitTimestamp() { + return lastCommitTimestamp; + } + + public void setLastCommitTimestamp(Long lastCommitTimestamp) { + this.lastCommitTimestamp = lastCommitTimestamp; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java b/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java index 2626356..0325952 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/model/Project.java @@ -3,6 +3,8 @@ package org.apache.camel.karavan.model; import org.infinispan.protostream.annotations.ProtoFactory; import org.infinispan.protostream.annotations.ProtoField; +import java.time.Instant; + public class Project { public static final String CACHE = "projects"; @@ -19,15 +21,18 @@ public class Project { String runtime; @ProtoField(number = 5) String lastCommit; + @ProtoField(number = 6) + Long lastCommitTimestamp; @ProtoFactory - public Project(String projectId, String name, String description, String runtime, String lastCommit) { + public Project(String projectId, String name, String description, String runtime, String lastCommit, Long lastCommitTimestamp) { this.projectId = projectId; this.name = name; this.description = description; this.runtime = runtime; this.lastCommit = lastCommit; + this.lastCommitTimestamp = lastCommitTimestamp; } public Project(String projectId, String name, String description, String runtime) { @@ -35,6 +40,7 @@ public class Project { this.name = name; this.description = description; this.runtime = runtime; + this.lastCommitTimestamp = Instant.now().toEpochMilli(); } public Project() { @@ -80,4 +86,11 @@ public class Project { this.lastCommit = lastCommit; } + public Long getLastCommitTimestamp() { + return lastCommitTimestamp; + } + + public void setLastCommitTimestamp(Long lastCommitTimestamp) { + this.lastCommitTimestamp = lastCommitTimestamp; + } } diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java index 13498ef..c52e00d 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/GitService.java @@ -21,6 +21,8 @@ import io.quarkus.runtime.StartupEvent; import io.smallrye.mutiny.tuples.Tuple2; import io.vertx.core.Vertx; import org.apache.camel.karavan.model.GitConfig; +import org.apache.camel.karavan.model.GitRepo; +import org.apache.camel.karavan.model.GitRepoFile; import org.apache.camel.karavan.model.Project; import org.apache.camel.karavan.model.ProjectFile; import org.eclipse.jgit.api.*; @@ -44,7 +46,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.time.LocalDate; +import java.time.Instant; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Base64; @@ -96,13 +98,16 @@ public class GitService { public Project commitAndPushProject(Project project) throws Exception { Project p = infinispanService.getProject(project.getProjectId()); List<ProjectFile> files = infinispanService.getProjectFiles(project.getProjectId()); - String commitId = commitAndPushProject(p, files); + RevCommit commit = commitAndPushProject(p, files); + String commitId = commit.getId().getName(); + Long lastUpdate = commit.getCommitTime() * 1000L; p.setLastCommit(commitId); + p.setLastCommitTimestamp(lastUpdate); infinispanService.saveProject(p, false); return p; } - public String commitAndPushProject(Project project, List<ProjectFile> files) throws GitAPIException, IOException, URISyntaxException { + public RevCommit commitAndPushProject(Project project, List<ProjectFile> files) throws GitAPIException, IOException, URISyntaxException { LOGGER.info("Commit and push project " + project.getProjectId()); GitConfig gitConfig = getGitConfig(); CredentialsProvider cred = new UsernamePasswordCredentialsProvider(gitConfig.getUsername(), gitConfig.getPassword()); @@ -121,10 +126,10 @@ public class GitService { } writeProjectToFolder(folder, project, files); addDeletedFilesToIndex(git, folder, project, files); - return commitAddedAndPush(git, gitConfig.getBranch(), cred, project.getProjectId()).getId().getName(); + return commitAddedAndPush(git, gitConfig.getBranch(), cred, project.getProjectId()); } - public List<Tuple2<String, Map<String, String>>> readProjectsFromRepository() { + public List<GitRepo> readProjectsFromRepository() { LOGGER.info("Read projects..."); GitConfig gitConfig = getGitConfig(); LOGGER.info("Read projects from repository " + gitConfig.getUri()); @@ -132,16 +137,25 @@ public class GitService { String uuid = UUID.randomUUID().toString(); String folder = vertx.fileSystem().createTempDirectoryBlocking(uuid); LOGGER.infof("Temp folder created: %s", folder); - List<Tuple2<String, Map<String, String>>> result = new ArrayList<>(); + List<GitRepo> result = new ArrayList<>(); Git git = null; try { git = clone(folder, gitConfig.getUri(), gitConfig.getBranch(), cred); checkout(git, false, null, null, gitConfig.getBranch()); List<String> projects = readProjectsFromFolder(folder); - projects.forEach(project -> { - Map<String, String> files = readProjectFilesFromFolder(folder, project); - result.add(Tuple2.of(project, files)); - }); + for (String project : projects) { + Map<String, String> filesRead = readProjectFilesFromFolder(folder, project); + List<GitRepoFile> files = new ArrayList<>(filesRead.size()); + for (Map.Entry<String, String> entry : filesRead.entrySet()) { + String name = entry.getKey(); + String body = entry.getValue(); + Tuple2<String, Integer> fileCommit = lastCommit(git, project + File.separator + name); + files.add(new GitRepoFile(name, Integer.valueOf(fileCommit.getItem2()).longValue() * 1000, body)); + } + Tuple2<String, Integer> commit = lastCommit(git, project); + GitRepo repo = new GitRepo(project, commit.getItem1(), Integer.valueOf(commit.getItem2()).longValue() * 1000, files); + result.add(repo); + } return result; } catch (RefNotFoundException e) { LOGGER.error("New repository"); @@ -187,10 +201,11 @@ public class GitService { vertx.fileSystem().readDirBlocking(repoFolder + File.separator + projectFolder).forEach(f -> { String[] filenames = f.split(File.separator); String filename = filenames[filenames.length -1]; - if (!filename.startsWith(".") && !Files.isDirectory(Paths.get(f))) { + Path path = Paths.get(f); + if (!filename.startsWith(".") && !Files.isDirectory(path)) { LOGGER.info("Importing file " + filename); try { - files.put(filename, Files.readString(Paths.get(f))); + files.put(filename, Files.readString(path)); } catch (IOException e) { LOGGER.error("Error during file read", e); } @@ -277,4 +292,12 @@ public class GitService { } checkoutCommand.call(); } + + private Tuple2<String, Integer> lastCommit(Git git, String path) throws GitAPIException { + Iterable<RevCommit> log = git.log().addPath(path).setMaxCount(1).call(); + for (RevCommit commit : log) { + return Tuple2.of(commit.getId().getName(), commit.getCommitTime()); + } + return null; + } } diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java index ad3972c..a56d40a 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/ImportService.java @@ -18,6 +18,8 @@ package org.apache.camel.karavan.service; import io.quarkus.vertx.ConsumeEvent; import io.smallrye.mutiny.tuples.Tuple2; +import org.apache.camel.karavan.model.GitRepo; +import org.apache.camel.karavan.model.GitRepoFile; import org.apache.camel.karavan.model.Project; import org.apache.camel.karavan.model.ProjectFile; import org.eclipse.microprofile.config.inject.ConfigProperty; @@ -54,25 +56,25 @@ public class ImportService { void importProjects(String data) { LOGGER.info("Import projects from Git"); try { - List<Tuple2<String, Map<String, String>>> repo = gitService.readProjectsFromRepository(); - repo.forEach(p -> { + List<GitRepo> repos = gitService.readProjectsFromRepository(); + repos.forEach(repo -> { Project project; - String folderName = p.getItem1(); + String folderName = repo.getName(); if (folderName.equals(Project.NAME_TEMPLATES)) { - project = new Project(Project.NAME_TEMPLATES, "Templates", "Templates", "quarkus", ""); + project = new Project(Project.NAME_TEMPLATES, "Templates", "Templates", "quarkus", repo.getCommitId(), repo.getLastCommitTimestamp()); } else if (folderName.equals(Project.NAME_KAMELETS)){ - project = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "quarkus", ""); + project = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "quarkus", repo.getCommitId(), repo.getLastCommitTimestamp()); } else { - String propertiesFile = getPropertiesFile(p); + String propertiesFile = getPropertiesFile(repo); String projectName = getProjectName(propertiesFile); String projectDescription = getProjectDescription(propertiesFile); String runtime = getProjectRuntime(propertiesFile); - project = new Project(folderName, projectName, projectDescription, runtime, ""); + project = new Project(folderName, projectName, projectDescription, runtime, repo.getCommitId(), repo.getLastCommitTimestamp()); } infinispanService.saveProject(project, true); - p.getItem2().forEach((key, value) -> { - ProjectFile file = new ProjectFile(key, value, folderName, Instant.now().toEpochMilli()); + repo.getFiles().forEach(repoFile -> { + ProjectFile file = new ProjectFile(repoFile.getName(), repoFile.getBody(), folderName, repoFile.getLastCommitTimestamp()); infinispanService.saveProjectFile(file); }); }); @@ -88,7 +90,7 @@ public class ImportService { try { Project kamelets = infinispanService.getProject(Project.NAME_KAMELETS); if (kamelets == null) { - kamelets = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "quarkus", ""); + kamelets = new Project(Project.NAME_KAMELETS, "Custom Kamelets", "Custom Kamelets", "quarkus", "", Instant.now().toEpochMilli()); infinispanService.saveProject(kamelets, true); gitService.commitAndPushProject(kamelets); } @@ -103,7 +105,7 @@ public class ImportService { try { Project templates = infinispanService.getProject(Project.NAME_TEMPLATES); if (templates == null) { - templates = new Project(Project.NAME_TEMPLATES, "Templates", "Templates", "quarkus", ""); + templates = new Project(Project.NAME_TEMPLATES, "Templates", "Templates", "quarkus", "", Instant.now().toEpochMilli()); infinispanService.saveProject(templates, true); codeService.getApplicationPropertiesTemplates().forEach((name, value) -> { @@ -117,11 +119,11 @@ public class ImportService { } } - private String getPropertiesFile(Tuple2<String, Map<String, String>> p) { + private String getPropertiesFile(GitRepo repo) { try { - for (Map.Entry<String, String> e : p.getItem2().entrySet()){ - if (e.getKey().equalsIgnoreCase("application.properties")) { - return e.getValue(); + for (GitRepoFile e : repo.getFiles()){ + if (e.getName().equalsIgnoreCase("application.properties")) { + return e.getBody(); } } } catch (Exception e) { diff --git a/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java b/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java index d86a37e..e7d4998 100644 --- a/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java +++ b/karavan-app/src/main/java/org/apache/camel/karavan/service/InfinispanService.java @@ -147,7 +147,6 @@ public class InfinispanService { } } public void saveProjectFile(ProjectFile file) { - file.setLastUpdate(Instant.now().toEpochMilli()); files.put(GroupedKey.create(file.getProjectId(), file.getName()), file); } diff --git a/karavan-app/src/main/webui/src/projects/ProjectFilesTable.tsx b/karavan-app/src/main/webui/src/projects/ProjectFilesTable.tsx index e185ae6..1fd609a 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectFilesTable.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectFilesTable.tsx @@ -1,50 +1,19 @@ import React from 'react'; import { Badge, - Breadcrumb, - BreadcrumbItem, Button, - PageSection, - Text, - TextContent, Bullseye, EmptyState, EmptyStateVariant, EmptyStateIcon, Title, - 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 {CamelUi} from "../designer/utils/CamelUi"; -import UploadIcon from "@patternfly/react-icons/dist/esm/icons/upload-icon"; +import {getProjectFileType, ProjectFile} 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 {KaravanDesigner} from "../designer/KaravanDesigner"; -import DownloadIcon from "@patternfly/react-icons/dist/esm/icons/download-icon"; -import DownloadImageIcon from "@patternfly/react-icons/dist/esm/icons/image-icon"; -import FileSaver from "file-saver"; -import Editor from "@monaco-editor/react"; import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon'; -import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon"; -import {CreateFileModal} from "./CreateFileModal"; -import {PropertiesEditor} from "./PropertiesEditor"; -import {ProjectModel, ProjectProperty} from "karavan-core/lib/model/ProjectModel"; -import {ProjectModelApi} from "karavan-core/lib/api/ProjectModelApi"; -import {KubernetesAPI} from "../designer/utils/KubernetesAPI"; -import {UploadModal} from "./UploadModal"; -import {ProjectInfo} from "./ProjectInfo"; -import {ProjectOperations} from "./ProjectOperations"; -import {CamelDefinitionYaml} from "karavan-core/lib/api/CamelDefinitionYaml"; -import PushIcon from "@patternfly/react-icons/dist/esm/icons/code-branch-icon"; -import {ProjectPageToolbar} from "./ProjectPageToolbar"; + interface Props { files: ProjectFile[], diff --git a/karavan-app/src/main/webui/src/projects/ProjectInfo.tsx b/karavan-app/src/main/webui/src/projects/ProjectInfo.tsx index 15dfa65..a5af48f 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectInfo.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectInfo.tsx @@ -11,10 +11,9 @@ import { } from '@patternfly/react-core'; import '../designer/karavan.css'; import {KaravanApi} from "../api/KaravanApi"; -import {DeploymentStatus, Project, PipelineStatus, CamelStatus, PodStatus} from "./ProjectModels"; +import {DeploymentStatus, Project, PipelineStatus, CamelStatus, PodStatus, ProjectFile} 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 PushIcon from "@patternfly/react-icons/dist/esm/icons/code-branch-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"; @@ -23,6 +22,7 @@ import DeleteIcon from "@patternfly/react-icons/dist/esm/icons/times-circle-icon interface Props { project: Project, config: any, + files: ProjectFile[], showLog: (type: 'container' | 'pipeline', name: string, environment: string) => void deleteEntity: (type: 'pod' | 'deployment', name: string, environment: string) => void } @@ -46,7 +46,6 @@ interface State { export class ProjectInfo extends React.Component<Props, State> { public state: State = { - project: this.props.project, podStatuses: [], isPushing: false, isBuilding: false, @@ -167,13 +166,33 @@ export class ProjectInfo extends React.Component<Props, State> { </Tooltip>) } - getCommitPanel() { - const {project} = this.state; + getDate(lastUpdate: number):string { + if (lastUpdate) { + const date = new Date(lastUpdate); + return date.toDateString() + ' ' + date.toLocaleTimeString(); + } else { + return "N/A" + } + } + + needCommit() :boolean { + const {project, files} = this.props; + return files.filter(f => f.lastUpdate > project.lastCommitTimestamp).length > 0; + } + + getLastUpdatePanel() { + const {project} = this.props; + const color = this.needCommit() ? "grey" : "green"; return ( - <Flex justifyContent={{default: "justifyContentSpaceBetween"}} alignItems={{default: "alignItemsCenter"}}> + <Flex direction={{default:"row"}} justifyContent={{default: "justifyContentFlexStart"}}> + {project?.lastCommitTimestamp && project?.lastCommitTimestamp > 0 && + <FlexItem> + <Label color={color}>{this.getDate(project?.lastCommitTimestamp)}</Label> + </FlexItem> + } <FlexItem> <Tooltip content={project?.lastCommit} position={"right"}> - <Badge>{project?.lastCommit ? project?.lastCommit?.substr(0, 7) : "-"}</Badge> + <Label color={color}>{project?.lastCommit ? project?.lastCommit?.substr(0, 7) : "-"}</Label> </Tooltip> </FlexItem> </Flex>) @@ -356,9 +375,9 @@ export class ProjectInfo extends React.Component<Props, State> { <DescriptionListDescription>{project?.description}</DescriptionListDescription> </DescriptionListGroup> <DescriptionListGroup> - <DescriptionListTerm>Commit</DescriptionListTerm> + <DescriptionListTerm>Updated</DescriptionListTerm> <DescriptionListDescription> - {this.getCommitPanel()} + {this.getLastUpdatePanel()} </DescriptionListDescription> </DescriptionListGroup> </DescriptionList>) @@ -395,11 +414,11 @@ export class ProjectInfo extends React.Component<Props, State> { <Flex direction={{default: "row"}} // style={{height: "200px"}} justifyContent={{default: "justifyContentSpaceBetween"}}> - <FlexItem flex={{default: "flex_1"}}> + <FlexItem flex={{default: "flex_2"}}> {this.getProjectDescription()} </FlexItem> <Divider orientation={{default: "vertical"}}/> - <FlexItem flex={{default: "flex_2"}}> + <FlexItem flex={{default: "flex_3"}}> {this.getEnvPanel("dev")} </FlexItem> </Flex> diff --git a/karavan-app/src/main/webui/src/projects/ProjectModels.ts b/karavan-app/src/main/webui/src/projects/ProjectModels.ts index f7e8db0..5957fe9 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectModels.ts +++ b/karavan-app/src/main/webui/src/projects/ProjectModels.ts @@ -4,6 +4,7 @@ export class Project { description: string = ''; runtime: string = ''; lastCommit: string = ''; + lastCommitTimestamp: number = 0; public constructor(projectId: string, name: string, description: string, runtime: string, lastCommit: string); public constructor(init?: Partial<Project>); @@ -17,6 +18,7 @@ export class Project { this.description = args[2]; this.runtime = args[3]; this.lastCommit = args[4]; + this.lastCommitTimestamp = args[5]; return; } } diff --git a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx index 4ff48cc..ec13a67 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx @@ -193,7 +193,7 @@ export class ProjectPage extends React.Component<Props, State> { setMode={mode => this.setState({mode: mode})} setCreateModalOpen={() => this.setState({isCreateModalOpen: true})} setUploadModalOpen={() => this.setState({isUploadModalOpen: true})} - onRefresh={() => this.onRefresh()} + onRefresh={this.onRefresh} /> } @@ -390,7 +390,7 @@ export class ProjectPage extends React.Component<Props, State> { } getProjectPanelFiles() { - const {tab, files} = this.state; + const {tab, files, project} = this.state; const isBuildIn = this.isBuildIn(); return ( <FlexItem> @@ -403,7 +403,11 @@ export class ProjectPage extends React.Component<Props, State> { } {!isBuildIn && <PageSection padding={{default: "padding"}}> - {tab === 'development' && <ProjectInfo project={this.props.project} config={this.props.config} deleteEntity={this.deleteEntity} showLog={this.showLogs}/>} + {tab === 'development' && project && <ProjectInfo project={project} + files={files} + config={this.props.config} + deleteEntity={this.deleteEntity} + showLog={this.showLogs}/>} {tab === 'development' && <ProjectFilesTable files={files} onOpenDeleteConfirmation={this.openDeleteConfirmation} onSelect={this.select}/>} @@ -434,13 +438,13 @@ export class ProjectPage extends React.Component<Props, State> { } render() { - const {file, isDeleteModalOpen, fileToDelete, isUploadModalOpen, isCreateModalOpen} = this.state; + const {file, isDeleteModalOpen, fileToDelete, isUploadModalOpen, isCreateModalOpen, key} = this.state; const {project} = this.props; const types = this.isBuildIn() ? (this.isKameletsProject() ? ['KAMELET'] : ['JAVA']) : ProjectFileTypes.filter(p => !['PROPERTIES', 'LOG', 'KAMELET'].includes(p.name)).map(p => p.name); return ( - <PageSection className="kamelet-section project-page" padding={{default: 'noPadding'}}> + <PageSection key={key} className="kamelet-section project-page" padding={{default: 'noPadding'}}> <PageSection className="tools-section" padding={{default: 'noPadding'}}> <MainToolbar title={this.title()} tools={this.tools()}/> </PageSection> diff --git a/karavan-app/src/main/webui/src/projects/ProjectPageToolbar.tsx b/karavan-app/src/main/webui/src/projects/ProjectPageToolbar.tsx index f52123e..3b6db2d 100644 --- a/karavan-app/src/main/webui/src/projects/ProjectPageToolbar.tsx +++ b/karavan-app/src/main/webui/src/projects/ProjectPageToolbar.tsx @@ -76,11 +76,6 @@ export class ProjectPageToolbar extends React.Component<Props> { onChange={checked => this.props.setEditAdvancedProperties.call(this, checked)} /> </FlexItem>} - {/*<FlexItem>*/} - {/* <Tooltip content={project?.lastCommit} position={"right"}>*/} - {/* <Badge>{project?.lastCommit ? project?.lastCommit?.substr(0, 7) : "-"}</Badge>*/} - {/* </Tooltip>*/} - {/*</FlexItem>*/} <FlexItem> <Tooltip content="Commit and push to git" position={"bottom"}> <Button isLoading={isPushing ? true : undefined} isSmall variant="secondary"