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 8a1e746  Fix kamelets and component call for public mode
8a1e746 is described below

commit 8a1e746fa6f071b0a154a1e048aead65be75bef1
Author: Marat Gubaidullin <marat.gubaidul...@gmail.com>
AuthorDate: Fri Sep 30 13:34:20 2022 -0400

    Fix kamelets and component call for public mode
---
 karavan-app/src/main/webapp/src/Main.tsx           |  9 +++----
 .../main/webapp/src/components/ComponentsPage.tsx  | 18 ++++++++++++-
 .../src/main/webapp/src/kamelets/KameletsPage.tsx  | 31 +++++++++++++++++-----
 .../src/main/webapp/src/projects/ProjectInfo.tsx   |  2 +-
 .../src/main/webapp/src/projects/ProjectsPage.tsx  |  9 +++----
 5 files changed, 51 insertions(+), 18 deletions(-)

diff --git a/karavan-app/src/main/webapp/src/Main.tsx 
b/karavan-app/src/main/webapp/src/Main.tsx
index 9c568cf..1b35acb 100644
--- a/karavan-app/src/main/webapp/src/Main.tsx
+++ b/karavan-app/src/main/webapp/src/Main.tsx
@@ -13,7 +13,7 @@ import {
 } from '@patternfly/react-core';
 import {KaravanApi} from "./api/KaravanApi";
 import {SsoApi} from "./api/SsoApi";
-import {KameletApi} from "karavan-core/lib/api/KameletApi";
+import {KameletApi, Kamelets} from "karavan-core/lib/api/KameletApi";
 import './designer/karavan.css';
 import {ConfigurationPage} from "./config/ConfigurationPage";
 import {KameletsPage} from "./kamelets/KameletsPage";
@@ -106,11 +106,10 @@ export class Main extends React.Component<Props, State> {
             } else {
                 this.setState({key: Math.random().toString()})
             }
+            if (KaravanApi.isAuthorized || KaravanApi.authType === 'public') {
+                this.getData();
+            }
         });
-        console.log("KaravanApi.isAuthorized", KaravanApi.isAuthorized);
-        if (KaravanApi.isAuthorized || KaravanApi.authType === 'public') {
-            this.getData();
-        }
     }
 
     onLogin = (username: string, password: string) => {
diff --git a/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx 
b/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
index 182ce03..696f0ba 100644
--- a/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
+++ b/karavan-app/src/main/webapp/src/components/ComponentsPage.tsx
@@ -21,13 +21,16 @@ import {
     Gallery,
     ToolbarItem,
     TextInput,
-    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge
+    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, 
Badge, Button
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
 import {ComponentCard} from "./ComponentCard";
 import {ComponentModal} from "./ComponentModal";
 import {Component} from "karavan-core/lib/model/ComponentModels";
 import {ComponentApi} from "karavan-core/lib/api/ComponentApi";
+import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon";
+import {KaravanApi} from "../api/KaravanApi";
+import {Components} from "karavan-core/lib/api/ComponentApi";
 
 interface Props {
     dark: boolean
@@ -86,6 +89,19 @@ export class ComponentsPage extends React.Component<Props, 
State> {
                         <FlexItem>
                             <Toolbar id="toolbar-group-types">
                                 <ToolbarContent>
+                                    <ToolbarItem>
+                                        <Button icon={<RefreshIcon/>} 
variant="link"
+                                                onClick={e => {
+                                                    
KaravanApi.getComponentNames(names => names.forEach(name => {
+                                                        
KaravanApi.getComponent(name, json => {
+                                                            
ComponentApi.saveComponent(json);
+                                                            if 
(Components.length === names.length){
+                                                                
this.setState({components: ComponentApi.getComponents()});
+                                                            }
+                                                        })
+                                                    }));
+                                                }}/>
+                                    </ToolbarItem>
                                     <ToolbarItem>
                                         <TextInput className="text-field" 
type="search" id="search" name="search"
                                                    value={this.state.filter}
diff --git a/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx 
b/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
index 9176532..2fb8095 100644
--- a/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
+++ b/karavan-app/src/main/webapp/src/kamelets/KameletsPage.tsx
@@ -21,13 +21,16 @@ import {
     Gallery,
     ToolbarItem,
     TextInput,
-    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, Badge
+    PageSection, TextContent, Text, PageSectionVariants, Flex, FlexItem, 
Badge, Button
 } from '@patternfly/react-core';
 import '../designer/karavan.css';
 import {KameletCard} from "./KameletCard";
 import {KameletModel} from "karavan-core/lib/model/KameletModels";
 import {KameletApi} from "karavan-core/lib/api/KameletApi";
 import {KameletModal} from "./KameletModal";
+import {KaravanApi} from "../api/KaravanApi";
+import RefreshIcon from "@patternfly/react-icons/dist/esm/icons/sync-alt-icon";
+import {Kamelets} from "karavan-core/lib/api/KameletApi";
 
 interface Props {
     dark: boolean
@@ -56,11 +59,11 @@ export class KameletsPage extends React.Component<Props, 
State> {
         this.setState({kamelets: KameletApi.getKamelets()})
     }
 
-    select = (k: KameletModel)=> {
+    select = (k: KameletModel) => {
         this.setState({kamelet: k, isModalOpen: true})
     }
 
-    search(filter: string){
+    search(filter: string) {
         this.setState({
             filter: filter,
             isModalOpen: false,
@@ -70,10 +73,12 @@ export class KameletsPage extends React.Component<Props, 
State> {
 
     render() {
         return (
-            <PageSection variant={this.props.dark ? PageSectionVariants.darker 
: PageSectionVariants.light} padding={{ default: 'noPadding' }} 
className="kamelet-section">
+            <PageSection variant={this.props.dark ? PageSectionVariants.darker 
: PageSectionVariants.light}
+                         padding={{default: 'noPadding'}} 
className="kamelet-section">
                 <KameletModal key={this.state.kamelet?.metadata.name + 
this.state.isModalOpen.toString()}
                               isOpen={this.state.isModalOpen} 
kamelet={this.state.kamelet}/>
-                <PageSection  className="tools-section" 
variant={this.props.dark ? PageSectionVariants.darker : 
PageSectionVariants.light}>
+                <PageSection className="tools-section"
+                             variant={this.props.dark ? 
PageSectionVariants.darker : PageSectionVariants.light}>
                     <Flex className="tools" justifyContent={{default: 
'justifyContentSpaceBetween'}}>
                         <FlexItem>
                             <TextContent className="header">
@@ -84,6 +89,19 @@ export class KameletsPage extends React.Component<Props, 
State> {
                         <FlexItem>
                             <Toolbar id="toolbar-group-types">
                                 <ToolbarContent>
+                                    <ToolbarItem>
+                                        <Button icon={<RefreshIcon/>} 
variant="link"
+                                                onClick={e => {
+                                                    
KaravanApi.getKameletNames(names => names.forEach(name => {
+                                                        
KaravanApi.getKamelet(name, yaml => {
+                                                            
KameletApi.saveKamelet(yaml);
+                                                            if 
(Kamelets.length === names.length){
+                                                                
this.setState({kamelets: KameletApi.getKamelets()});
+                                                            }
+                                                        })
+                                                    }));
+                                                }}/>
+                                    </ToolbarItem>
                                     <ToolbarItem>
                                         <TextInput className="text-field" 
type="search" id="search" name="search"
                                                    value={this.state.filter}
@@ -96,7 +114,8 @@ export class KameletsPage extends React.Component<Props, 
State> {
                         </FlexItem>
                     </Flex>
                 </PageSection>
-                <PageSection isFilled className="kamelets-page" 
variant={this.props.dark ? PageSectionVariants.darker : 
PageSectionVariants.light}>
+                <PageSection isFilled className="kamelets-page"
+                             variant={this.props.dark ? 
PageSectionVariants.darker : PageSectionVariants.light}>
                     <Gallery hasGutter>
                         {this.state.kamelets.map(k => (
                             <KameletCard key={k.metadata.name} kamelet={k} 
onClickCard={this.select}/>
diff --git a/karavan-app/src/main/webapp/src/projects/ProjectInfo.tsx 
b/karavan-app/src/main/webapp/src/projects/ProjectInfo.tsx
index 56a6a24..24eed8e 100644
--- a/karavan-app/src/main/webapp/src/projects/ProjectInfo.tsx
+++ b/karavan-app/src/main/webapp/src/projects/ProjectInfo.tsx
@@ -272,7 +272,7 @@ export class ProjectInfo extends React.Component<Props, 
State> {
                         {podStatuses.map(pod => {
                                 const running = pod.started && pod.ready;
                                 return (
-                                    <Tooltip content={running ? "Running" : 
pod.reason}>
+                                    <Tooltip key={pod.name} content={running ? 
"Running" : pod.reason}>
                                         <Label icon={running ? <UpIcon/> : 
<DownIcon/>} color={running ? "green" : "red"}>
                                             <Button variant="link"
                                                     onClick={e => 
this.props.showLog?.call(this, 'container', pod.name, env)}>
diff --git a/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx 
b/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
index b58a4fc..0b290d8 100644
--- a/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
+++ b/karavan-app/src/main/webapp/src/projects/ProjectsPage.tsx
@@ -118,16 +118,15 @@ export class ProjectsPage extends React.Component<Props, 
State> {
 
     tools = () => (<Toolbar id="toolbar-group-types">
         <ToolbarContent>
+            <ToolbarItem>
+                <Button variant="link" icon={<RefreshIcon/>} onClick={e => 
this.onGetProjects()}/>
+            </ToolbarItem>
             <ToolbarItem>
                 <TextInput className="text-field" type="search" id="search" 
name="search"
                            autoComplete="off" placeholder="Search by name"
                            value={this.state.filter}
                            onChange={e => this.setState({filter: e})}/>
             </ToolbarItem>
-            <ToolbarItem>
-                <Button variant="secondary" icon={<RefreshIcon/>}
-                        onClick={e => this.onGetProjects()}>Refresh</Button>
-            </ToolbarItem>
             <ToolbarItem>
                 <Button icon={<PlusIcon/>} onClick={e => 
this.setState({isCreateModalOpen: true, isCopy: false})}>Create</Button>
             </ToolbarItem>
@@ -212,7 +211,7 @@ export class ProjectsPage extends React.Component<Props, 
State> {
 
     render() {
         const runtime = this.props.config?.runtime ? this.props.config.runtime 
: "QUARKUS";
-        const projects = this.state.projects.filter(p => 
p.name.includes(this.state.filter) || 
p.description.includes(this.state.filter));
+        const projects = this.state.projects.filter(p => 
p.name.toLowerCase().includes(this.state.filter) || 
p.description.toLowerCase().includes(this.state.filter));
         const environments: string[] = this.props.config.environments && 
Array.isArray(this.props.config.environments)
             ? Array.from(this.props.config.environments)
             : [];

Reply via email to