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 37b7cef7 Fix incorect Choice/When/Otherwise in multicast and Route COnfigration #1185 37b7cef7 is described below commit 37b7cef75aa033d5f030a31d9c7a63cb514afafb Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Tue Mar 19 17:59:58 2024 -0400 Fix incorect Choice/When/Otherwise in multicast and Route COnfigration #1185 --- .../src/main/webui/src/designer/DesignerStore.ts | 6 -- .../main/webui/src/designer/KaravanDesigner.tsx | 6 +- .../webui/src/designer/route/DslConnections.tsx | 31 ++++-- .../webui/src/designer/route/RouteDesigner.tsx | 4 +- .../src/designer/route/element/DslElement.tsx | 4 +- .../designer/route/element/DslElementHeader.tsx | 4 +- .../src/designer/route/useRouteDesignerHook.tsx | 4 +- karavan-designer/public/example/demo.camel.yaml | 115 ++++++++++----------- karavan-designer/src/designer/DesignerStore.ts | 6 -- karavan-designer/src/designer/KaravanDesigner.tsx | 6 +- .../src/designer/route/DslConnections.tsx | 31 ++++-- .../src/designer/route/RouteDesigner.tsx | 4 +- .../src/designer/route/element/DslElement.tsx | 4 +- .../designer/route/element/DslElementHeader.tsx | 4 +- .../src/designer/route/useRouteDesignerHook.tsx | 4 +- karavan-space/src/designer/DesignerStore.ts | 6 -- karavan-space/src/designer/KaravanDesigner.tsx | 6 +- .../src/designer/route/DslConnections.tsx | 31 ++++-- karavan-space/src/designer/route/RouteDesigner.tsx | 4 +- .../src/designer/route/element/DslElement.tsx | 4 +- .../designer/route/element/DslElementHeader.tsx | 4 +- .../src/designer/route/useRouteDesignerHook.tsx | 4 +- 22 files changed, 153 insertions(+), 139 deletions(-) diff --git a/karavan-app/src/main/webui/src/designer/DesignerStore.ts b/karavan-app/src/main/webui/src/designer/DesignerStore.ts index c19038ad..40418fb1 100644 --- a/karavan-app/src/main/webui/src/designer/DesignerStore.ts +++ b/karavan-app/src/main/webui/src/designer/DesignerStore.ts @@ -199,7 +199,6 @@ type DesignerState = { dark: boolean; notificationBadge: boolean; notificationMessage: [string, string]; - hideLogDSL: boolean; shiftKeyPressed: boolean; showDeleteConfirmation: boolean; showMoveConfirmation: boolean; @@ -220,7 +219,6 @@ const designerState: DesignerState = { notificationBadge: false, notificationMessage: ['', ''], dark: false, - hideLogDSL: false, shiftKeyPressed: false, showDeleteConfirmation: false, showMoveConfirmation: false, @@ -238,7 +236,6 @@ const designerState: DesignerState = { type DesignerAction = { setDark: (dark: boolean) => void; - setHideLogDSL: (hideLogDSL: boolean) => void; setShiftKeyPressed: (shiftKeyPressed: boolean) => void; setShowDeleteConfirmation: (showDeleteConfirmation: boolean) => void; setShowMoveConfirmation: (showMoveConfirmation: boolean) => void; @@ -259,9 +256,6 @@ export const useDesignerStore = createWithEqualityFn<DesignerState & DesignerAct setDark: (dark: boolean) => { set({dark: dark}) }, - setHideLogDSL: (hideLogDSL: boolean) => { - set({hideLogDSL: hideLogDSL}) - }, setShiftKeyPressed: (shiftKeyPressed: boolean) => { set({shiftKeyPressed: shiftKeyPressed}) }, diff --git a/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx b/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx index 36b65118..ff76fa19 100644 --- a/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx +++ b/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx @@ -53,7 +53,6 @@ interface Props { filename: string yaml: string dark: boolean - hideLogDSL?: boolean showCodeTab: boolean tab?: "routes" | "rest" | "beans" propertyPlaceholders: string[] @@ -64,9 +63,9 @@ interface Props { export function KaravanDesigner(props: Props) { const [tab, setTab] = useState<string>('routes'); - const [setDark, hideLogDSL, setHideLogDSL, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = + const [setDark, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = useDesignerStore((s) => - [s.setDark, s.hideLogDSL, s.setHideLogDSL, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) + [s.setDark, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) const [integration, setIntegration, resetFiles, setVariables] = useIntegrationStore((s) => [s.integration, s.setIntegration, s.resetFiles, s.setVariables], shallow) @@ -97,7 +96,6 @@ export function KaravanDesigner(props: Props) { setVariables(VariableUtil.findVariables(props.files)) setBeans(props.beans) resetFiles(props.files) - setHideLogDSL(props.hideLogDSL === true); } catch (e: any) { console.log(e) EventBus.sendAlert(' ' + e?.name, '' + e?.message, 'danger'); diff --git a/karavan-app/src/main/webui/src/designer/route/DslConnections.tsx b/karavan-app/src/main/webui/src/designer/route/DslConnections.tsx index 99339f7c..a711780b 100644 --- a/karavan-app/src/main/webui/src/designer/route/DslConnections.tsx +++ b/karavan-app/src/main/webui/src/designer/route/DslConnections.tsx @@ -34,8 +34,8 @@ const overlapGap: number = 40; export function DslConnections() { const [integration, files] = useIntegrationStore((s) => [s.integration, s.files], shallow) - const [width, height, top, left, hideLogDSL] = useDesignerStore((s) => - [s.width, s.height, s.top, s.left, s.hideLogDSL], shallow) + const [width, height, top, left] = useDesignerStore((s) => + [s.width, s.height, s.top, s.left], shallow) const [steps, addStep, deleteStep, clearSteps] = useConnectionsStore((s) => [s.steps, s.addStep, s.deleteStep, s.clearSteps], shallow) @@ -285,7 +285,7 @@ export function DslConnections() { } function isSpecial(pos: DslPosition): boolean { - return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition'].includes(pos.step.dslName); + return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition', 'RouteConfigurationDefinition'].includes(pos.step.dslName); } function addArrowToList(list: JSX.Element[], from?: DslPosition, to?: DslPosition, fromHeader?: boolean, toHeader?: boolean): JSX.Element[] { @@ -299,13 +299,17 @@ export function DslConnections() { return result; } + function getParentDsl(uuid?: string): string | undefined { + return uuid ? steps.get(uuid)?.parent?.dslName : undefined; + } + function getArrow(pos: DslPosition): JSX.Element[] { const list: JSX.Element[] = []; if (pos.parent && pos.parent.dslName === 'TryDefinition' && pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && pos.parent.dslName === 'MulticastDefinition') { + } else if (pos.parent && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(pos.parent.dslName)) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) if (parent?.nextstep) { @@ -315,14 +319,17 @@ export function DslConnections() { } else if (pos.parent && pos.parent.dslName === 'ChoiceDefinition') { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition'].includes(pos.parent.dslName)) { - if (pos.position === 0) { + } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition', 'TryDefinition'].includes(pos.parent.dslName)) { + if (pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) } if (pos.position === (pos.inStepsLength - 1) && !isSpecial(pos)) { const nextElement = getNext(pos); - if (nextElement) { + const parentDsl1 = getParentDsl(nextElement?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (nextElement) { const next = steps.get(nextElement.uuid); list.push(...addArrowToList(list, pos, next, true, true)) } @@ -341,12 +348,18 @@ export function DslConnections() { } if (['WhenDefinition', 'OtherwiseDefinition'].includes(pos.step.dslName) && pos.step.hasSteps() && (pos.step as any).steps.length === 0) { - if (pos.nextstep) { + const parentDsl = getParentDsl(pos?.nextstep?.uuid); + if (parentDsl && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl)) { + // do nothing + } else if (pos.nextstep) { const to = steps.get(pos.nextstep.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } else { const next = getNext(pos); - if (next) { + const parentDsl1 = getParentDsl(next?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (next) { const to = steps.get(next.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } diff --git a/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx b/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx index 9ef5e827..39c14fda 100644 --- a/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx +++ b/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx @@ -44,9 +44,9 @@ export function RouteDesigner() { isSourceKamelet, isActionKamelet, isKamelet, isSinkKamelet} = useRouteDesignerHook(); const [integration] = useIntegrationStore((state) => [state.integration], shallow) - const [showDeleteConfirmation, setPosition, width, height, top, left, hideLogDSL, showMoveConfirmation, setShowMoveConfirmation] = + const [showDeleteConfirmation, setPosition, width, height, top, left, showMoveConfirmation, setShowMoveConfirmation] = useDesignerStore((s) => - [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.hideLogDSL, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) + [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) const [showSelector] = useSelectorStore((s) => [s.showSelector], shallow) diff --git a/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx b/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx index 6f5ab5b5..70befc33 100644 --- a/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx +++ b/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx @@ -53,9 +53,9 @@ export function DslElement(props: Props) { const [integration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow) - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) const [isDragging, setIsDragging] = useState<boolean>(false); const [isDraggedOver, setIsDraggedOver] = useState<boolean>(false); diff --git a/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx b/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx index 1b5dbe5b..5ec041d2 100644 --- a/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx +++ b/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx @@ -53,9 +53,9 @@ export function DslElementHeader(props: Props) { isActionKamelet } = useRouteDesignerHook(); - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) function onOpenSelector(evt: React.MouseEvent, showSteps: boolean = true, isInsert: boolean = false) { evt.stopPropagation(); diff --git a/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx b/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx index 0f9b7236..6589853a 100644 --- a/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx +++ b/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx @@ -41,10 +41,10 @@ export function useRouteDesignerHook () { const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow) const [selectedUuids,clipboardSteps,shiftKeyPressed, setShowDeleteConfirmation, setDeleteMessage, setSelectedStep, setSelectedUuids, setClipboardSteps, setShiftKeyPressed, - width, height, dark, hideLogDSL] = useDesignerStore((s) => + width, height, dark] = useDesignerStore((s) => [s.selectedUuids,s.clipboardSteps, s.shiftKeyPressed, s.setShowDeleteConfirmation, s.setDeleteMessage, s.setSelectedStep, s.setSelectedUuids, s.setClipboardSteps, s.setShiftKeyPressed, - s.width, s.height, s.dark, s.hideLogDSL], shallow) + s.width, s.height, s.dark], shallow) const [setParentId, setShowSelector, setSelectorTabIndex, setParentDsl, setShowSteps, setSelectedPosition] = useSelectorStore((s) => [s.setParentId, s.setShowSelector, s.setSelectorTabIndex, s.setParentDsl, s.setShowSteps, s.setSelectedPosition], shallow) diff --git a/karavan-designer/public/example/demo.camel.yaml b/karavan-designer/public/example/demo.camel.yaml index b751e86b..cd4a1dd4 100644 --- a/karavan-designer/public/example/demo.camel.yaml +++ b/karavan-designer/public/example/demo.camel.yaml @@ -1,61 +1,60 @@ - route: - id: route-fc08 + id: route-5676 + nodePrefixId: route-a26 from: - id: from-4fb2 - uri: timer - parameters: - period: '5000' - timerName: beers + id: from-e7d6 + uri: aws2-s3 steps: - - to: - id: to-2b12 - variableReceive: beer1 - uri: https - parameters: - httpUri: random-data-api.com/api/v2/beers - - to: - id: to-cd9b - variableReceive: beer2 - uri: https - parameters: - httpUri: random-data-api.com/api/v2/beers - - setVariable: - id: setVariable-439c - name: alc1 - expression: - java: - id: java-6ac5 - expression: .alcohol | rtrimstr("%") - - setVariable: - id: setVariable-14bc - name: alc2 - expression: - jq: - id: jq-73b5 - expression: .alcohol | rtrimstr("%") - source: beer2 - resultType: float - - choice: - id: choice-3fc5 - when: - - id: choice - expression: - simple: - id: simple-699c - expression: ${variable.alc1} > ${variable.alc2} - steps: - - log: - id: log-6ecf - message: >- - Beer battle: ${jq(variable:beer1,.name)} - (${variable.alc1}%) is stronger than - ${jq(variable:beer2,.name)} (${variable.alc2}%) - otherwise: - id: otherwise-03ac - steps: - - log: - id: log-2477 - message: >- - Beer battle: ${jq(variable:beer1,.name)} - (${variable.alc1}%) is weaker than - ${jq(variable:beer2,.name)} (${variable.alc2}%) + - multicast: + id: multicast-1032 + steps: + - choice: + id: choice-56ab + when: + - id: when-ff6fa + expression: + simple: + id: simple-25f4 + steps: + - log: + id: log-34d4 + message: ${body} + - loop: + id: loop-f32d + expression: + simple: + id: simple-2811 + otherwise: + id: otherwise-987b + steps: + - log: + id: log-802d + message: ${body} + - circuitBreaker: + id: circuitBreaker-64e5 + steps: + - loop: + id: loop-4062 + expression: + simple: + id: simple-041b + steps: + - multicast: + id: multicast-70ae + - convertBodyTo: + id: convertBodyTo-854c + - filter: + id: filter-297b + expression: + simple: + id: simple-90b6 + +- routeConfiguration: + intercept: + - intercept: + id: intercept-5ede + - intercept: + id: intercept-93ca + interceptFrom: + - interceptFrom: + id: interceptFrom-14ca diff --git a/karavan-designer/src/designer/DesignerStore.ts b/karavan-designer/src/designer/DesignerStore.ts index c19038ad..40418fb1 100644 --- a/karavan-designer/src/designer/DesignerStore.ts +++ b/karavan-designer/src/designer/DesignerStore.ts @@ -199,7 +199,6 @@ type DesignerState = { dark: boolean; notificationBadge: boolean; notificationMessage: [string, string]; - hideLogDSL: boolean; shiftKeyPressed: boolean; showDeleteConfirmation: boolean; showMoveConfirmation: boolean; @@ -220,7 +219,6 @@ const designerState: DesignerState = { notificationBadge: false, notificationMessage: ['', ''], dark: false, - hideLogDSL: false, shiftKeyPressed: false, showDeleteConfirmation: false, showMoveConfirmation: false, @@ -238,7 +236,6 @@ const designerState: DesignerState = { type DesignerAction = { setDark: (dark: boolean) => void; - setHideLogDSL: (hideLogDSL: boolean) => void; setShiftKeyPressed: (shiftKeyPressed: boolean) => void; setShowDeleteConfirmation: (showDeleteConfirmation: boolean) => void; setShowMoveConfirmation: (showMoveConfirmation: boolean) => void; @@ -259,9 +256,6 @@ export const useDesignerStore = createWithEqualityFn<DesignerState & DesignerAct setDark: (dark: boolean) => { set({dark: dark}) }, - setHideLogDSL: (hideLogDSL: boolean) => { - set({hideLogDSL: hideLogDSL}) - }, setShiftKeyPressed: (shiftKeyPressed: boolean) => { set({shiftKeyPressed: shiftKeyPressed}) }, diff --git a/karavan-designer/src/designer/KaravanDesigner.tsx b/karavan-designer/src/designer/KaravanDesigner.tsx index 36b65118..ff76fa19 100644 --- a/karavan-designer/src/designer/KaravanDesigner.tsx +++ b/karavan-designer/src/designer/KaravanDesigner.tsx @@ -53,7 +53,6 @@ interface Props { filename: string yaml: string dark: boolean - hideLogDSL?: boolean showCodeTab: boolean tab?: "routes" | "rest" | "beans" propertyPlaceholders: string[] @@ -64,9 +63,9 @@ interface Props { export function KaravanDesigner(props: Props) { const [tab, setTab] = useState<string>('routes'); - const [setDark, hideLogDSL, setHideLogDSL, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = + const [setDark, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = useDesignerStore((s) => - [s.setDark, s.hideLogDSL, s.setHideLogDSL, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) + [s.setDark, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) const [integration, setIntegration, resetFiles, setVariables] = useIntegrationStore((s) => [s.integration, s.setIntegration, s.resetFiles, s.setVariables], shallow) @@ -97,7 +96,6 @@ export function KaravanDesigner(props: Props) { setVariables(VariableUtil.findVariables(props.files)) setBeans(props.beans) resetFiles(props.files) - setHideLogDSL(props.hideLogDSL === true); } catch (e: any) { console.log(e) EventBus.sendAlert(' ' + e?.name, '' + e?.message, 'danger'); diff --git a/karavan-designer/src/designer/route/DslConnections.tsx b/karavan-designer/src/designer/route/DslConnections.tsx index 99339f7c..a711780b 100644 --- a/karavan-designer/src/designer/route/DslConnections.tsx +++ b/karavan-designer/src/designer/route/DslConnections.tsx @@ -34,8 +34,8 @@ const overlapGap: number = 40; export function DslConnections() { const [integration, files] = useIntegrationStore((s) => [s.integration, s.files], shallow) - const [width, height, top, left, hideLogDSL] = useDesignerStore((s) => - [s.width, s.height, s.top, s.left, s.hideLogDSL], shallow) + const [width, height, top, left] = useDesignerStore((s) => + [s.width, s.height, s.top, s.left], shallow) const [steps, addStep, deleteStep, clearSteps] = useConnectionsStore((s) => [s.steps, s.addStep, s.deleteStep, s.clearSteps], shallow) @@ -285,7 +285,7 @@ export function DslConnections() { } function isSpecial(pos: DslPosition): boolean { - return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition'].includes(pos.step.dslName); + return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition', 'RouteConfigurationDefinition'].includes(pos.step.dslName); } function addArrowToList(list: JSX.Element[], from?: DslPosition, to?: DslPosition, fromHeader?: boolean, toHeader?: boolean): JSX.Element[] { @@ -299,13 +299,17 @@ export function DslConnections() { return result; } + function getParentDsl(uuid?: string): string | undefined { + return uuid ? steps.get(uuid)?.parent?.dslName : undefined; + } + function getArrow(pos: DslPosition): JSX.Element[] { const list: JSX.Element[] = []; if (pos.parent && pos.parent.dslName === 'TryDefinition' && pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && pos.parent.dslName === 'MulticastDefinition') { + } else if (pos.parent && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(pos.parent.dslName)) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) if (parent?.nextstep) { @@ -315,14 +319,17 @@ export function DslConnections() { } else if (pos.parent && pos.parent.dslName === 'ChoiceDefinition') { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition'].includes(pos.parent.dslName)) { - if (pos.position === 0) { + } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition', 'TryDefinition'].includes(pos.parent.dslName)) { + if (pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) } if (pos.position === (pos.inStepsLength - 1) && !isSpecial(pos)) { const nextElement = getNext(pos); - if (nextElement) { + const parentDsl1 = getParentDsl(nextElement?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (nextElement) { const next = steps.get(nextElement.uuid); list.push(...addArrowToList(list, pos, next, true, true)) } @@ -341,12 +348,18 @@ export function DslConnections() { } if (['WhenDefinition', 'OtherwiseDefinition'].includes(pos.step.dslName) && pos.step.hasSteps() && (pos.step as any).steps.length === 0) { - if (pos.nextstep) { + const parentDsl = getParentDsl(pos?.nextstep?.uuid); + if (parentDsl && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl)) { + // do nothing + } else if (pos.nextstep) { const to = steps.get(pos.nextstep.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } else { const next = getNext(pos); - if (next) { + const parentDsl1 = getParentDsl(next?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (next) { const to = steps.get(next.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } diff --git a/karavan-designer/src/designer/route/RouteDesigner.tsx b/karavan-designer/src/designer/route/RouteDesigner.tsx index 9ef5e827..39c14fda 100644 --- a/karavan-designer/src/designer/route/RouteDesigner.tsx +++ b/karavan-designer/src/designer/route/RouteDesigner.tsx @@ -44,9 +44,9 @@ export function RouteDesigner() { isSourceKamelet, isActionKamelet, isKamelet, isSinkKamelet} = useRouteDesignerHook(); const [integration] = useIntegrationStore((state) => [state.integration], shallow) - const [showDeleteConfirmation, setPosition, width, height, top, left, hideLogDSL, showMoveConfirmation, setShowMoveConfirmation] = + const [showDeleteConfirmation, setPosition, width, height, top, left, showMoveConfirmation, setShowMoveConfirmation] = useDesignerStore((s) => - [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.hideLogDSL, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) + [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) const [showSelector] = useSelectorStore((s) => [s.showSelector], shallow) diff --git a/karavan-designer/src/designer/route/element/DslElement.tsx b/karavan-designer/src/designer/route/element/DslElement.tsx index 6f5ab5b5..70befc33 100644 --- a/karavan-designer/src/designer/route/element/DslElement.tsx +++ b/karavan-designer/src/designer/route/element/DslElement.tsx @@ -53,9 +53,9 @@ export function DslElement(props: Props) { const [integration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow) - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) const [isDragging, setIsDragging] = useState<boolean>(false); const [isDraggedOver, setIsDraggedOver] = useState<boolean>(false); diff --git a/karavan-designer/src/designer/route/element/DslElementHeader.tsx b/karavan-designer/src/designer/route/element/DslElementHeader.tsx index 1b5dbe5b..5ec041d2 100644 --- a/karavan-designer/src/designer/route/element/DslElementHeader.tsx +++ b/karavan-designer/src/designer/route/element/DslElementHeader.tsx @@ -53,9 +53,9 @@ export function DslElementHeader(props: Props) { isActionKamelet } = useRouteDesignerHook(); - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) function onOpenSelector(evt: React.MouseEvent, showSteps: boolean = true, isInsert: boolean = false) { evt.stopPropagation(); diff --git a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx index 0f9b7236..6589853a 100644 --- a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx +++ b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx @@ -41,10 +41,10 @@ export function useRouteDesignerHook () { const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow) const [selectedUuids,clipboardSteps,shiftKeyPressed, setShowDeleteConfirmation, setDeleteMessage, setSelectedStep, setSelectedUuids, setClipboardSteps, setShiftKeyPressed, - width, height, dark, hideLogDSL] = useDesignerStore((s) => + width, height, dark] = useDesignerStore((s) => [s.selectedUuids,s.clipboardSteps, s.shiftKeyPressed, s.setShowDeleteConfirmation, s.setDeleteMessage, s.setSelectedStep, s.setSelectedUuids, s.setClipboardSteps, s.setShiftKeyPressed, - s.width, s.height, s.dark, s.hideLogDSL], shallow) + s.width, s.height, s.dark], shallow) const [setParentId, setShowSelector, setSelectorTabIndex, setParentDsl, setShowSteps, setSelectedPosition] = useSelectorStore((s) => [s.setParentId, s.setShowSelector, s.setSelectorTabIndex, s.setParentDsl, s.setShowSteps, s.setSelectedPosition], shallow) diff --git a/karavan-space/src/designer/DesignerStore.ts b/karavan-space/src/designer/DesignerStore.ts index c19038ad..40418fb1 100644 --- a/karavan-space/src/designer/DesignerStore.ts +++ b/karavan-space/src/designer/DesignerStore.ts @@ -199,7 +199,6 @@ type DesignerState = { dark: boolean; notificationBadge: boolean; notificationMessage: [string, string]; - hideLogDSL: boolean; shiftKeyPressed: boolean; showDeleteConfirmation: boolean; showMoveConfirmation: boolean; @@ -220,7 +219,6 @@ const designerState: DesignerState = { notificationBadge: false, notificationMessage: ['', ''], dark: false, - hideLogDSL: false, shiftKeyPressed: false, showDeleteConfirmation: false, showMoveConfirmation: false, @@ -238,7 +236,6 @@ const designerState: DesignerState = { type DesignerAction = { setDark: (dark: boolean) => void; - setHideLogDSL: (hideLogDSL: boolean) => void; setShiftKeyPressed: (shiftKeyPressed: boolean) => void; setShowDeleteConfirmation: (showDeleteConfirmation: boolean) => void; setShowMoveConfirmation: (showMoveConfirmation: boolean) => void; @@ -259,9 +256,6 @@ export const useDesignerStore = createWithEqualityFn<DesignerState & DesignerAct setDark: (dark: boolean) => { set({dark: dark}) }, - setHideLogDSL: (hideLogDSL: boolean) => { - set({hideLogDSL: hideLogDSL}) - }, setShiftKeyPressed: (shiftKeyPressed: boolean) => { set({shiftKeyPressed: shiftKeyPressed}) }, diff --git a/karavan-space/src/designer/KaravanDesigner.tsx b/karavan-space/src/designer/KaravanDesigner.tsx index 36b65118..ff76fa19 100644 --- a/karavan-space/src/designer/KaravanDesigner.tsx +++ b/karavan-space/src/designer/KaravanDesigner.tsx @@ -53,7 +53,6 @@ interface Props { filename: string yaml: string dark: boolean - hideLogDSL?: boolean showCodeTab: boolean tab?: "routes" | "rest" | "beans" propertyPlaceholders: string[] @@ -64,9 +63,9 @@ interface Props { export function KaravanDesigner(props: Props) { const [tab, setTab] = useState<string>('routes'); - const [setDark, hideLogDSL, setHideLogDSL, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = + const [setDark, setSelectedStep, reset, badge, message, setPropertyPlaceholders, setBeans] = useDesignerStore((s) => - [s.setDark, s.hideLogDSL, s.setHideLogDSL, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) + [s.setDark, s.setSelectedStep, s.reset, s.notificationBadge, s.notificationMessage, s.setPropertyPlaceholders, s.setBeans], shallow) const [integration, setIntegration, resetFiles, setVariables] = useIntegrationStore((s) => [s.integration, s.setIntegration, s.resetFiles, s.setVariables], shallow) @@ -97,7 +96,6 @@ export function KaravanDesigner(props: Props) { setVariables(VariableUtil.findVariables(props.files)) setBeans(props.beans) resetFiles(props.files) - setHideLogDSL(props.hideLogDSL === true); } catch (e: any) { console.log(e) EventBus.sendAlert(' ' + e?.name, '' + e?.message, 'danger'); diff --git a/karavan-space/src/designer/route/DslConnections.tsx b/karavan-space/src/designer/route/DslConnections.tsx index 99339f7c..a711780b 100644 --- a/karavan-space/src/designer/route/DslConnections.tsx +++ b/karavan-space/src/designer/route/DslConnections.tsx @@ -34,8 +34,8 @@ const overlapGap: number = 40; export function DslConnections() { const [integration, files] = useIntegrationStore((s) => [s.integration, s.files], shallow) - const [width, height, top, left, hideLogDSL] = useDesignerStore((s) => - [s.width, s.height, s.top, s.left, s.hideLogDSL], shallow) + const [width, height, top, left] = useDesignerStore((s) => + [s.width, s.height, s.top, s.left], shallow) const [steps, addStep, deleteStep, clearSteps] = useConnectionsStore((s) => [s.steps, s.addStep, s.deleteStep, s.clearSteps], shallow) @@ -285,7 +285,7 @@ export function DslConnections() { } function isSpecial(pos: DslPosition): boolean { - return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition'].includes(pos.step.dslName); + return ['ChoiceDefinition', 'MulticastDefinition', 'TryDefinition', 'RouteConfigurationDefinition'].includes(pos.step.dslName); } function addArrowToList(list: JSX.Element[], from?: DslPosition, to?: DslPosition, fromHeader?: boolean, toHeader?: boolean): JSX.Element[] { @@ -299,13 +299,17 @@ export function DslConnections() { return result; } + function getParentDsl(uuid?: string): string | undefined { + return uuid ? steps.get(uuid)?.parent?.dslName : undefined; + } + function getArrow(pos: DslPosition): JSX.Element[] { const list: JSX.Element[] = []; if (pos.parent && pos.parent.dslName === 'TryDefinition' && pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && pos.parent.dslName === 'MulticastDefinition') { + } else if (pos.parent && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(pos.parent.dslName)) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) if (parent?.nextstep) { @@ -315,14 +319,17 @@ export function DslConnections() { } else if (pos.parent && pos.parent.dslName === 'ChoiceDefinition') { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) - } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition'].includes(pos.parent.dslName)) { - if (pos.position === 0) { + } else if (pos.parent && ['WhenDefinition', 'OtherwiseDefinition', 'CatchDefinition', 'FinallyDefinition', 'TryDefinition'].includes(pos.parent.dslName)) { + if (pos.position === 0) { const parent = steps.get(pos.parent.uuid); list.push(...addArrowToList(list, parent, pos, true, false)) } if (pos.position === (pos.inStepsLength - 1) && !isSpecial(pos)) { const nextElement = getNext(pos); - if (nextElement) { + const parentDsl1 = getParentDsl(nextElement?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (nextElement) { const next = steps.get(nextElement.uuid); list.push(...addArrowToList(list, pos, next, true, true)) } @@ -341,12 +348,18 @@ export function DslConnections() { } if (['WhenDefinition', 'OtherwiseDefinition'].includes(pos.step.dslName) && pos.step.hasSteps() && (pos.step as any).steps.length === 0) { - if (pos.nextstep) { + const parentDsl = getParentDsl(pos?.nextstep?.uuid); + if (parentDsl && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl)) { + // do nothing + } else if (pos.nextstep) { const to = steps.get(pos.nextstep.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } else { const next = getNext(pos); - if (next) { + const parentDsl1 = getParentDsl(next?.uuid); + if (parentDsl1 && ['RouteConfigurationDefinition', 'MulticastDefinition'].includes(parentDsl1)) { + // do nothing + } else if (next) { const to = steps.get(next.uuid); list.push(...addArrowToList(list, pos, to, true, true)) } diff --git a/karavan-space/src/designer/route/RouteDesigner.tsx b/karavan-space/src/designer/route/RouteDesigner.tsx index 9ef5e827..39c14fda 100644 --- a/karavan-space/src/designer/route/RouteDesigner.tsx +++ b/karavan-space/src/designer/route/RouteDesigner.tsx @@ -44,9 +44,9 @@ export function RouteDesigner() { isSourceKamelet, isActionKamelet, isKamelet, isSinkKamelet} = useRouteDesignerHook(); const [integration] = useIntegrationStore((state) => [state.integration], shallow) - const [showDeleteConfirmation, setPosition, width, height, top, left, hideLogDSL, showMoveConfirmation, setShowMoveConfirmation] = + const [showDeleteConfirmation, setPosition, width, height, top, left, showMoveConfirmation, setShowMoveConfirmation] = useDesignerStore((s) => - [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.hideLogDSL, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) + [s.showDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.showMoveConfirmation, s.setShowMoveConfirmation], shallow) const [showSelector] = useSelectorStore((s) => [s.showSelector], shallow) diff --git a/karavan-space/src/designer/route/element/DslElement.tsx b/karavan-space/src/designer/route/element/DslElement.tsx index 6f5ab5b5..70befc33 100644 --- a/karavan-space/src/designer/route/element/DslElement.tsx +++ b/karavan-space/src/designer/route/element/DslElement.tsx @@ -53,9 +53,9 @@ export function DslElement(props: Props) { const [integration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow) - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) const [isDragging, setIsDragging] = useState<boolean>(false); const [isDraggedOver, setIsDraggedOver] = useState<boolean>(false); diff --git a/karavan-space/src/designer/route/element/DslElementHeader.tsx b/karavan-space/src/designer/route/element/DslElementHeader.tsx index 1b5dbe5b..5ec041d2 100644 --- a/karavan-space/src/designer/route/element/DslElementHeader.tsx +++ b/karavan-space/src/designer/route/element/DslElementHeader.tsx @@ -53,9 +53,9 @@ export function DslElementHeader(props: Props) { isActionKamelet } = useRouteDesignerHook(); - const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, hideLogDSL, setMoveElements] = + const [selectedUuids, selectedStep, showMoveConfirmation, setShowMoveConfirmation, setMoveElements] = useDesignerStore((s) => - [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.hideLogDSL, s.setMoveElements], shallow) + [s.selectedUuids, s.selectedStep, s.showMoveConfirmation, s.setShowMoveConfirmation, s.setMoveElements], shallow) function onOpenSelector(evt: React.MouseEvent, showSteps: boolean = true, isInsert: boolean = false) { evt.stopPropagation(); diff --git a/karavan-space/src/designer/route/useRouteDesignerHook.tsx b/karavan-space/src/designer/route/useRouteDesignerHook.tsx index 0f9b7236..6589853a 100644 --- a/karavan-space/src/designer/route/useRouteDesignerHook.tsx +++ b/karavan-space/src/designer/route/useRouteDesignerHook.tsx @@ -41,10 +41,10 @@ export function useRouteDesignerHook () { const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow) const [selectedUuids,clipboardSteps,shiftKeyPressed, setShowDeleteConfirmation, setDeleteMessage, setSelectedStep, setSelectedUuids, setClipboardSteps, setShiftKeyPressed, - width, height, dark, hideLogDSL] = useDesignerStore((s) => + width, height, dark] = useDesignerStore((s) => [s.selectedUuids,s.clipboardSteps, s.shiftKeyPressed, s.setShowDeleteConfirmation, s.setDeleteMessage, s.setSelectedStep, s.setSelectedUuids, s.setClipboardSteps, s.setShiftKeyPressed, - s.width, s.height, s.dark, s.hideLogDSL], shallow) + s.width, s.height, s.dark], shallow) const [setParentId, setShowSelector, setSelectorTabIndex, setParentDsl, setShowSteps, setSelectedPosition] = useSelectorStore((s) => [s.setParentId, s.setShowSelector, s.setSelectorTabIndex, s.setParentDsl, s.setShowSteps, s.setSelectedPosition], shallow)