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 f308b2fe Fix #1141
f308b2fe is described below

commit f308b2fe3685bcdd8c13e0e058b96d2a33515ac8
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Feb 22 09:56:18 2024 -0500

    Fix #1141
---
 karavan-core/src/core/api/VariableUtil.ts                    |  8 ++++++--
 karavan-designer/src/designer/DesignerStore.ts               | 12 +++++++++++-
 .../src/designer/property/property/VariablesDropdown.tsx     |  6 ++----
 karavan-space/src/designer/DesignerStore.ts                  | 12 +++++++++++-
 .../src/designer/property/property/VariablesDropdown.tsx     |  6 ++----
 .../karavan-app/src/main/webui/src/designer/DesignerStore.ts | 12 +++++++++++-
 .../src/designer/property/property/VariablesDropdown.tsx     |  6 ++----
 7 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/karavan-core/src/core/api/VariableUtil.ts 
b/karavan-core/src/core/api/VariableUtil.ts
index 2e417ea3..88e9e93a 100644
--- a/karavan-core/src/core/api/VariableUtil.ts
+++ b/karavan-core/src/core/api/VariableUtil.ts
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 import {
-    CamelElement,
+    CamelElement, Integration,
     IntegrationFile,
 } from '../model/IntegrationDefinition';
 import { CamelDefinitionYaml } from './CamelDefinitionYaml';
@@ -35,8 +35,12 @@ export class VariableUtil {
     }
 
     static findVariables = (files: IntegrationFile[]): string[] => {
-        const result: string[] = []
         const integrations = files.map(file => 
CamelDefinitionYaml.yamlToIntegration(file.name, file.code));
+        return VariableUtil.findVariablesInIntegrations(integrations);
+    };
+
+    static findVariablesInIntegrations = (integrations: Integration[]): 
string[] => {
+        const result: string[] = []
         integrations.forEach(i => {
             const filename = i.metadata.name;
             const routes = i.spec.flows?.filter(flow => flow.dslName === 
'RouteDefinition');
diff --git a/karavan-designer/src/designer/DesignerStore.ts 
b/karavan-designer/src/designer/DesignerStore.ts
index 48976eb5..e08d9a19 100644
--- a/karavan-designer/src/designer/DesignerStore.ts
+++ b/karavan-designer/src/designer/DesignerStore.ts
@@ -35,9 +35,10 @@ interface IntegrationState {
     variables: string[],
     setVariables: (variables: string[]) => void;
     addVariable: (variable: string) => void;
+    getVariables: () => string[];
 }
 
-export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set) => ({
+export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set, get) => ({
     integration: Integration.createNew("demo", "plain"),
     propertyOnly: false,
     json: '{}',
@@ -79,6 +80,15 @@ export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set)
             return {variables: VariableUtil.sortVariables(vars)};
         });
     },
+    getVariables: () => {
+        const files = get().files;
+        const integration = get().integration;
+        const otherFiles = files.filter(file => file.name !== 
integration.metadata.name);
+        const currentVariables = 
VariableUtil.findVariablesInIntegrations([integration]);
+        const otherVariables = VariableUtil.findVariables(otherFiles);
+        currentVariables.concat(otherVariables);
+        return currentVariables;
+    },
 }), shallow)
 
 
diff --git 
a/karavan-designer/src/designer/property/property/VariablesDropdown.tsx 
b/karavan-designer/src/designer/property/property/VariablesDropdown.tsx
index 154ccc05..0173d92c 100644
--- a/karavan-designer/src/designer/property/property/VariablesDropdown.tsx
+++ b/karavan-designer/src/designer/property/property/VariablesDropdown.tsx
@@ -36,11 +36,9 @@ interface Props {
 
 export function VariablesDropdown(props: Props) {
 
-    const [variables] = useIntegrationStore((s) => [s.variables], shallow)
+    const [variables, getVariables] = useIntegrationStore((s) => [s.variables, 
s.getVariables], shallow)
     const [isOpenVariablesDropdown, setOpenVariablesDropdown] = 
useState<boolean>(false);
 
-    useEffect(() => console.log(variables), [variables])
-
     const hasVariables = (variables && variables.length > 0 );
 
     function parametersChanged(name: string ) {
@@ -82,7 +80,7 @@ export function VariablesDropdown(props: Props) {
         >
             <DropdownList>
                 {hasVariables && <DropdownGroup label="Variables">
-                    {variables.map((pp, index) =>
+                    {getVariables().map((pp, index) =>
                         <DropdownItem value={pp} 
key={index}>{pp}</DropdownItem>
                     )}
                 </DropdownGroup>}
diff --git a/karavan-space/src/designer/DesignerStore.ts 
b/karavan-space/src/designer/DesignerStore.ts
index 48976eb5..e08d9a19 100644
--- a/karavan-space/src/designer/DesignerStore.ts
+++ b/karavan-space/src/designer/DesignerStore.ts
@@ -35,9 +35,10 @@ interface IntegrationState {
     variables: string[],
     setVariables: (variables: string[]) => void;
     addVariable: (variable: string) => void;
+    getVariables: () => string[];
 }
 
-export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set) => ({
+export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set, get) => ({
     integration: Integration.createNew("demo", "plain"),
     propertyOnly: false,
     json: '{}',
@@ -79,6 +80,15 @@ export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set)
             return {variables: VariableUtil.sortVariables(vars)};
         });
     },
+    getVariables: () => {
+        const files = get().files;
+        const integration = get().integration;
+        const otherFiles = files.filter(file => file.name !== 
integration.metadata.name);
+        const currentVariables = 
VariableUtil.findVariablesInIntegrations([integration]);
+        const otherVariables = VariableUtil.findVariables(otherFiles);
+        currentVariables.concat(otherVariables);
+        return currentVariables;
+    },
 }), shallow)
 
 
diff --git a/karavan-space/src/designer/property/property/VariablesDropdown.tsx 
b/karavan-space/src/designer/property/property/VariablesDropdown.tsx
index 154ccc05..0173d92c 100644
--- a/karavan-space/src/designer/property/property/VariablesDropdown.tsx
+++ b/karavan-space/src/designer/property/property/VariablesDropdown.tsx
@@ -36,11 +36,9 @@ interface Props {
 
 export function VariablesDropdown(props: Props) {
 
-    const [variables] = useIntegrationStore((s) => [s.variables], shallow)
+    const [variables, getVariables] = useIntegrationStore((s) => [s.variables, 
s.getVariables], shallow)
     const [isOpenVariablesDropdown, setOpenVariablesDropdown] = 
useState<boolean>(false);
 
-    useEffect(() => console.log(variables), [variables])
-
     const hasVariables = (variables && variables.length > 0 );
 
     function parametersChanged(name: string ) {
@@ -82,7 +80,7 @@ export function VariablesDropdown(props: Props) {
         >
             <DropdownList>
                 {hasVariables && <DropdownGroup label="Variables">
-                    {variables.map((pp, index) =>
+                    {getVariables().map((pp, index) =>
                         <DropdownItem value={pp} 
key={index}>{pp}</DropdownItem>
                     )}
                 </DropdownGroup>}
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/designer/DesignerStore.ts 
b/karavan-web/karavan-app/src/main/webui/src/designer/DesignerStore.ts
index 48976eb5..e08d9a19 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/DesignerStore.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/DesignerStore.ts
@@ -35,9 +35,10 @@ interface IntegrationState {
     variables: string[],
     setVariables: (variables: string[]) => void;
     addVariable: (variable: string) => void;
+    getVariables: () => string[];
 }
 
-export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set) => ({
+export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set, get) => ({
     integration: Integration.createNew("demo", "plain"),
     propertyOnly: false,
     json: '{}',
@@ -79,6 +80,15 @@ export const useIntegrationStore = 
createWithEqualityFn<IntegrationState>((set)
             return {variables: VariableUtil.sortVariables(vars)};
         });
     },
+    getVariables: () => {
+        const files = get().files;
+        const integration = get().integration;
+        const otherFiles = files.filter(file => file.name !== 
integration.metadata.name);
+        const currentVariables = 
VariableUtil.findVariablesInIntegrations([integration]);
+        const otherVariables = VariableUtil.findVariables(otherFiles);
+        currentVariables.concat(otherVariables);
+        return currentVariables;
+    },
 }), shallow)
 
 
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/designer/property/property/VariablesDropdown.tsx
 
b/karavan-web/karavan-app/src/main/webui/src/designer/property/property/VariablesDropdown.tsx
index 154ccc05..0173d92c 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/designer/property/property/VariablesDropdown.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/designer/property/property/VariablesDropdown.tsx
@@ -36,11 +36,9 @@ interface Props {
 
 export function VariablesDropdown(props: Props) {
 
-    const [variables] = useIntegrationStore((s) => [s.variables], shallow)
+    const [variables, getVariables] = useIntegrationStore((s) => [s.variables, 
s.getVariables], shallow)
     const [isOpenVariablesDropdown, setOpenVariablesDropdown] = 
useState<boolean>(false);
 
-    useEffect(() => console.log(variables), [variables])
-
     const hasVariables = (variables && variables.length > 0 );
 
     function parametersChanged(name: string ) {
@@ -82,7 +80,7 @@ export function VariablesDropdown(props: Props) {
         >
             <DropdownList>
                 {hasVariables && <DropdownGroup label="Variables">
-                    {variables.map((pp, index) =>
+                    {getVariables().map((pp, index) =>
                         <DropdownItem value={pp} 
key={index}>{pp}</DropdownItem>
                     )}
                 </DropdownGroup>}

Reply via email to