You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2024/02/19 22:05:05 UTC
(camel-karavan) 01/03: Configurable show Kamelet/Component blocker checkbox
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 c507f94332ac366d888b037c1b9260cb17638752
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Feb 19 16:38:43 2024 -0500
Configurable show Kamelet/Component blocker checkbox
---
karavan-designer/src/App.tsx | 4 ++--
karavan-designer/src/knowledgebase/KnowledgebasePage.tsx | 9 +++++++++
karavan-designer/src/knowledgebase/KnowledgebaseStore.ts | 8 ++++++++
.../src/knowledgebase/components/ComponentCard.tsx | 7 ++++---
karavan-designer/src/knowledgebase/kamelets/KameletCard.tsx | 7 ++++---
karavan-space/src/App.tsx | 8 --------
karavan-space/src/designer/karavan.css | 4 ----
karavan-space/src/index.tsx | 12 ++++++++----
karavan-space/src/knowledgebase/KnowledgebasePage.tsx | 9 +++++++++
karavan-space/src/knowledgebase/KnowledgebaseStore.ts | 8 ++++++++
karavan-space/src/knowledgebase/components/ComponentCard.tsx | 7 ++++---
karavan-space/src/knowledgebase/kamelets/KameletCard.tsx | 7 ++++---
12 files changed, 60 insertions(+), 30 deletions(-)
diff --git a/karavan-designer/src/App.tsx b/karavan-designer/src/App.tsx
index e2d9803c..331aa343 100644
--- a/karavan-designer/src/App.tsx
+++ b/karavan-designer/src/App.tsx
@@ -71,8 +71,8 @@ export function App() {
fetch("snippets/org.apache.camel.AggregationStrategy"),
fetch("snippets/org.apache.camel.Processor"),
fetch("example/demo.camel.yaml"),
- fetch("components/blocked-components.properties"),
- fetch("kamelets/blocked-kamelets.properties")
+ // fetch("components/blocked-components.properties"),
+ // fetch("kamelets/blocked-kamelets.properties")
// fetch("example/aws-cloudwatch-sink.kamelet.yaml")
// fetch("example/aws-s3-cdc-source.kamelet.yaml")
//fetch("components/supported-components.json"),
diff --git a/karavan-designer/src/knowledgebase/KnowledgebasePage.tsx b/karavan-designer/src/knowledgebase/KnowledgebasePage.tsx
index 66eae532..86b777e5 100644
--- a/karavan-designer/src/knowledgebase/KnowledgebasePage.tsx
+++ b/karavan-designer/src/knowledgebase/KnowledgebasePage.tsx
@@ -21,18 +21,27 @@ import {MainToolbar} from "../designer/MainToolbar";
import {KameletsTab} from "./kamelets/KameletsTab";
import {EipTab} from "./eip/EipTab";
import {ComponentsTab} from "./components/ComponentsTab";
+import {useKnowledgebaseStore} from "./KnowledgebaseStore";
+import {shallow} from "zustand/shallow";
interface Props {
dark: boolean,
changeBlockList: (type: string, name: string, checked: boolean) => void,
+ showBlockCheckbox?: boolean,
}
export const KnowledgebasePage = (props: Props) => {
+ const [setShowBlockCheckbox] = useKnowledgebaseStore((s) => [s.setShowBlockCheckbox], shallow)
const [tab, setTab] = useState<string | number>("eip");
const [filter, setFilter] = useState<string>("");
const [customOnly, setCustomOnly] = useState<boolean>(false);
+
+ React.useEffect(() => {
+ setShowBlockCheckbox(props.showBlockCheckbox === true)
+ }, []);
+
function title() {
return <TextContent>
<Text component="h2">Knowledgebase</Text>
diff --git a/karavan-designer/src/knowledgebase/KnowledgebaseStore.ts b/karavan-designer/src/knowledgebase/KnowledgebaseStore.ts
index 32b81787..cb7e3b44 100644
--- a/karavan-designer/src/knowledgebase/KnowledgebaseStore.ts
+++ b/karavan-designer/src/knowledgebase/KnowledgebaseStore.ts
@@ -24,6 +24,8 @@ import {KameletModel} from "karavan-core/lib/model/KameletModels";
interface KnowledgebaseState {
isModalOpen: boolean;
setModalOpen: (isModalOpen: boolean) => void;
+ showBlockCheckbox: boolean;
+ setShowBlockCheckbox: (showBlockCheckbox: boolean) => void;
component?: Component;
setComponent: (component: Component) => void;
element?: ElementMeta;
@@ -39,6 +41,12 @@ export const useKnowledgebaseStore = createWithEqualityFn<KnowledgebaseState>((s
return {isModalOpen: isModalOpen};
})
},
+ showBlockCheckbox: false,
+ setShowBlockCheckbox: (showBlockCheckbox: boolean) => {
+ set((state: KnowledgebaseState) => {
+ return {showBlockCheckbox: showBlockCheckbox};
+ })
+ },
setComponent: (component: Component) => {
set((state: KnowledgebaseState) => {
return {component: component};
diff --git a/karavan-designer/src/knowledgebase/components/ComponentCard.tsx b/karavan-designer/src/knowledgebase/components/ComponentCard.tsx
index f99d8136..91ec2595 100644
--- a/karavan-designer/src/knowledgebase/components/ComponentCard.tsx
+++ b/karavan-designer/src/knowledgebase/components/ComponentCard.tsx
@@ -32,8 +32,8 @@ interface Props {
export function ComponentCard(props: Props) {
- const [setComponent, setModalOpen] = useKnowledgebaseStore((s) =>
- [s.setComponent, s.setModalOpen], shallow)
+ const [setComponent, setModalOpen, showBlockCheckbox] = useKnowledgebaseStore((s) =>
+ [s.setComponent, s.setModalOpen, s.showBlockCheckbox], shallow)
const component = props.component;
const [blockedComponents, setBlockedComponents] = useState<string[]>();
useEffect(() => {
@@ -60,7 +60,8 @@ export function ComponentCard(props: Props) {
<CardHeader className="header-labels">
{component.component.supportType === 'Supported' && <Badge isRead className="support-type labels">{component.component.supportType}</Badge>}
<Badge isRead className="support-level labels">{component.component.supportLevel}</Badge>
- <Checkbox id={component.component.name} className="block-checkbox labels" isChecked={!isBlockedComponent} onChange={(_, checked) => selectComponent(_, checked)} />
+ {showBlockCheckbox && <Checkbox id={component.component.name} className="block-checkbox labels"
+ isChecked={!isBlockedComponent} onChange={(_, checked) => selectComponent(_, checked)}/>}
</CardHeader>
<CardHeader>
{CamelUi.getIconForComponent(component.component.title, component.component.label)}
diff --git a/karavan-designer/src/knowledgebase/kamelets/KameletCard.tsx b/karavan-designer/src/knowledgebase/kamelets/KameletCard.tsx
index 1dff9f2c..c773035c 100644
--- a/karavan-designer/src/knowledgebase/kamelets/KameletCard.tsx
+++ b/karavan-designer/src/knowledgebase/kamelets/KameletCard.tsx
@@ -32,8 +32,8 @@ interface Props {
export function KameletCard(props: Props) {
- const [setKamelet, setModalOpen] = useKnowledgebaseStore((s) =>
- [s.setKamelet, s.setModalOpen], shallow)
+ const [setKamelet, setModalOpen, showBlockCheckbox] = useKnowledgebaseStore((s) =>
+ [s.setKamelet, s.setModalOpen, s.showBlockCheckbox], shallow)
const [blockedKamelets, setBlockedKamelets] = useState<string[]>();
useEffect(() => {
setBlockedKamelets(KameletApi.getBlockedKameletNames());
@@ -62,7 +62,8 @@ export function KameletCard(props: Props) {
<CardHeader className="header-labels">
{isCustom && <Badge className="custom">custom</Badge>}
<Badge isRead className="support-level labels">{kamelet.metadata.annotations["camel.apache.org/kamelet.support.level"]}</Badge>
- <Checkbox id={kamelet.metadata.name} className="block-checkbox labels" isChecked={!isblockedKamelet} onChange={(_, checked) => selectKamelet(_, checked)} />
+ {showBlockCheckbox && <Checkbox id={kamelet.metadata.name} className="block-checkbox labels" isChecked={!isblockedKamelet}
+ onChange={(_, checked) => selectKamelet(_, checked)}/>}
</CardHeader>
<CardHeader>
{CamelUi.getIconFromSource(kamelet.icon())}
diff --git a/karavan-space/src/App.tsx b/karavan-space/src/App.tsx
index 5a723404..5bddc2a6 100644
--- a/karavan-space/src/App.tsx
+++ b/karavan-space/src/App.tsx
@@ -75,8 +75,6 @@ class App extends React.Component<Props, State> {
fetch("components/components.json"),
fetch("snippets/org.apache.camel.AggregationStrategy"),
fetch("snippets/org.apache.camel.Processor"),
- fetch("components/blocked-components.properties"),
- fetch("kamelets/blocked-kamelets.properties")
]).then(responses =>
Promise.all(responses.map(response => response.text()))
).then(data => {
@@ -93,12 +91,6 @@ class App extends React.Component<Props, State> {
TemplateApi.saveTemplate("org.apache.camel.AggregationStrategy", data[2]);
TemplateApi.saveTemplate("org.apache.camel.Processor", data[3]);
- if (data[4]) {
- ComponentApi.saveBlockedComponentNames(data[4].split('\r\n'));
- }
- if (data[5]) {
- KameletApi.saveBlockedKameletNames(data[5].split('\n'));
- }
}).catch(err =>
EventBus.sendAlert("Error", err.text, 'danger')
);
diff --git a/karavan-space/src/designer/karavan.css b/karavan-space/src/designer/karavan.css
index 82f75a51..78b2a135 100644
--- a/karavan-space/src/designer/karavan.css
+++ b/karavan-space/src/designer/karavan.css
@@ -819,7 +819,3 @@
.karavan .knowledbase-eip-section .pf-v5-c-toggle-group{
margin:16px;
}
-.karavan .kamelet-section .kamelet-card .block-checkbox input{
- width:18px;
- height:18px
-}
\ No newline at end of file
diff --git a/karavan-space/src/index.tsx b/karavan-space/src/index.tsx
index 98fd0600..0912a986 100644
--- a/karavan-space/src/index.tsx
+++ b/karavan-space/src/index.tsx
@@ -14,13 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import React from 'react';
+import React, {StrictMode} from 'react';
import ReactDOM from 'react-dom';
import "./index.css";
import "@patternfly/patternfly/patternfly.css";
import App from "./App";
+import {createRoot} from "react-dom/client";
-ReactDOM.render(
- <App/>,
- document.getElementById('root')
+const container = document.getElementById('root');
+const root = createRoot(container!);
+root.render(
+ <StrictMode>
+ <App />
+ </StrictMode>
);
\ No newline at end of file
diff --git a/karavan-space/src/knowledgebase/KnowledgebasePage.tsx b/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
index 66eae532..86b777e5 100644
--- a/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
+++ b/karavan-space/src/knowledgebase/KnowledgebasePage.tsx
@@ -21,18 +21,27 @@ import {MainToolbar} from "../designer/MainToolbar";
import {KameletsTab} from "./kamelets/KameletsTab";
import {EipTab} from "./eip/EipTab";
import {ComponentsTab} from "./components/ComponentsTab";
+import {useKnowledgebaseStore} from "./KnowledgebaseStore";
+import {shallow} from "zustand/shallow";
interface Props {
dark: boolean,
changeBlockList: (type: string, name: string, checked: boolean) => void,
+ showBlockCheckbox?: boolean,
}
export const KnowledgebasePage = (props: Props) => {
+ const [setShowBlockCheckbox] = useKnowledgebaseStore((s) => [s.setShowBlockCheckbox], shallow)
const [tab, setTab] = useState<string | number>("eip");
const [filter, setFilter] = useState<string>("");
const [customOnly, setCustomOnly] = useState<boolean>(false);
+
+ React.useEffect(() => {
+ setShowBlockCheckbox(props.showBlockCheckbox === true)
+ }, []);
+
function title() {
return <TextContent>
<Text component="h2">Knowledgebase</Text>
diff --git a/karavan-space/src/knowledgebase/KnowledgebaseStore.ts b/karavan-space/src/knowledgebase/KnowledgebaseStore.ts
index 32b81787..cb7e3b44 100644
--- a/karavan-space/src/knowledgebase/KnowledgebaseStore.ts
+++ b/karavan-space/src/knowledgebase/KnowledgebaseStore.ts
@@ -24,6 +24,8 @@ import {KameletModel} from "karavan-core/lib/model/KameletModels";
interface KnowledgebaseState {
isModalOpen: boolean;
setModalOpen: (isModalOpen: boolean) => void;
+ showBlockCheckbox: boolean;
+ setShowBlockCheckbox: (showBlockCheckbox: boolean) => void;
component?: Component;
setComponent: (component: Component) => void;
element?: ElementMeta;
@@ -39,6 +41,12 @@ export const useKnowledgebaseStore = createWithEqualityFn<KnowledgebaseState>((s
return {isModalOpen: isModalOpen};
})
},
+ showBlockCheckbox: false,
+ setShowBlockCheckbox: (showBlockCheckbox: boolean) => {
+ set((state: KnowledgebaseState) => {
+ return {showBlockCheckbox: showBlockCheckbox};
+ })
+ },
setComponent: (component: Component) => {
set((state: KnowledgebaseState) => {
return {component: component};
diff --git a/karavan-space/src/knowledgebase/components/ComponentCard.tsx b/karavan-space/src/knowledgebase/components/ComponentCard.tsx
index f99d8136..91ec2595 100644
--- a/karavan-space/src/knowledgebase/components/ComponentCard.tsx
+++ b/karavan-space/src/knowledgebase/components/ComponentCard.tsx
@@ -32,8 +32,8 @@ interface Props {
export function ComponentCard(props: Props) {
- const [setComponent, setModalOpen] = useKnowledgebaseStore((s) =>
- [s.setComponent, s.setModalOpen], shallow)
+ const [setComponent, setModalOpen, showBlockCheckbox] = useKnowledgebaseStore((s) =>
+ [s.setComponent, s.setModalOpen, s.showBlockCheckbox], shallow)
const component = props.component;
const [blockedComponents, setBlockedComponents] = useState<string[]>();
useEffect(() => {
@@ -60,7 +60,8 @@ export function ComponentCard(props: Props) {
<CardHeader className="header-labels">
{component.component.supportType === 'Supported' && <Badge isRead className="support-type labels">{component.component.supportType}</Badge>}
<Badge isRead className="support-level labels">{component.component.supportLevel}</Badge>
- <Checkbox id={component.component.name} className="block-checkbox labels" isChecked={!isBlockedComponent} onChange={(_, checked) => selectComponent(_, checked)} />
+ {showBlockCheckbox && <Checkbox id={component.component.name} className="block-checkbox labels"
+ isChecked={!isBlockedComponent} onChange={(_, checked) => selectComponent(_, checked)}/>}
</CardHeader>
<CardHeader>
{CamelUi.getIconForComponent(component.component.title, component.component.label)}
diff --git a/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx b/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
index 1dff9f2c..c773035c 100644
--- a/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
+++ b/karavan-space/src/knowledgebase/kamelets/KameletCard.tsx
@@ -32,8 +32,8 @@ interface Props {
export function KameletCard(props: Props) {
- const [setKamelet, setModalOpen] = useKnowledgebaseStore((s) =>
- [s.setKamelet, s.setModalOpen], shallow)
+ const [setKamelet, setModalOpen, showBlockCheckbox] = useKnowledgebaseStore((s) =>
+ [s.setKamelet, s.setModalOpen, s.showBlockCheckbox], shallow)
const [blockedKamelets, setBlockedKamelets] = useState<string[]>();
useEffect(() => {
setBlockedKamelets(KameletApi.getBlockedKameletNames());
@@ -62,7 +62,8 @@ export function KameletCard(props: Props) {
<CardHeader className="header-labels">
{isCustom && <Badge className="custom">custom</Badge>}
<Badge isRead className="support-level labels">{kamelet.metadata.annotations["camel.apache.org/kamelet.support.level"]}</Badge>
- <Checkbox id={kamelet.metadata.name} className="block-checkbox labels" isChecked={!isblockedKamelet} onChange={(_, checked) => selectKamelet(_, checked)} />
+ {showBlockCheckbox && <Checkbox id={kamelet.metadata.name} className="block-checkbox labels" isChecked={!isblockedKamelet}
+ onChange={(_, checked) => selectKamelet(_, checked)}/>}
</CardHeader>
<CardHeader>
{CamelUi.getIconFromSource(kamelet.icon())}