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>}