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 <[email protected]>
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>}