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 ab760aa2 Fix #1174
ab760aa2 is described below
commit ab760aa24379a0fd93350014e9c74f92c4f71c86
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Fri May 17 10:42:26 2024 -0400
Fix #1174
---
karavan-app/src/main/webui/package-lock.json | 2 +-
.../main/webui/src/designer/icons/OtherIcons.tsx | 49 ++++++++++++++++++++++
.../src/designer/route/element/DslElement.css | 6 +++
.../src/designer/route/element/DslElement.tsx | 2 +
.../designer/route/element/DslElementHeader.tsx | 28 +++++++++----
karavan-designer/src/designer/icons/OtherIcons.tsx | 49 ++++++++++++++++++++++
.../src/designer/route/element/DslElement.css | 6 +++
.../src/designer/route/element/DslElement.tsx | 2 +
.../designer/route/element/DslElementHeader.tsx | 28 +++++++++----
karavan-space/src/designer/icons/OtherIcons.tsx | 49 ++++++++++++++++++++++
.../src/designer/route/element/DslElement.css | 6 +++
.../src/designer/route/element/DslElement.tsx | 2 +
.../designer/route/element/DslElementHeader.tsx | 28 +++++++++----
13 files changed, 235 insertions(+), 22 deletions(-)
diff --git a/karavan-app/src/main/webui/package-lock.json
b/karavan-app/src/main/webui/package-lock.json
index a15f3313..b77c8e64 100644
--- a/karavan-app/src/main/webui/package-lock.json
+++ b/karavan-app/src/main/webui/package-lock.json
@@ -74,7 +74,7 @@
}
},
"../../../../karavan-core": {
- "version": "4.5.1",
+ "version": "4.6.0",
"license": "Apache-2.0",
"dependencies": {
"@types/js-yaml": "^4.0.7",
diff --git a/karavan-app/src/main/webui/src/designer/icons/OtherIcons.tsx
b/karavan-app/src/main/webui/src/designer/icons/OtherIcons.tsx
new file mode 100644
index 00000000..21368f3d
--- /dev/null
+++ b/karavan-app/src/main/webui/src/designer/icons/OtherIcons.tsx
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+
+export function AutoStartupIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="M19.88 21.847h2l-5-12h-2l-5 12h2l1.24-3h5.53zm-5.93-5
1.82-4.42h.25l1.86 4.42z"/>
+ </svg>
+ );
+}
+
+export function ErrorHandlerIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="m19.264 14.98-3.998 7-1.736-1 2.287-4h-3.889l3.993-7
1.737 1-2.284 4z"/>
+ </svg>
+ );
+}
diff --git
a/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
b/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
index edaebc54..4f0109c5 100644
--- a/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
+++ b/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
@@ -125,6 +125,12 @@
align-items: center;
}
+.karavan .step-element .route-icons {
+ position: absolute;
+ top: 0;
+ display: flex;
+}
+
.karavan .step-element .header .icon,
.element-builder .header .icon {
height: 20px;
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 70befc33..ae566055 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
@@ -181,6 +181,8 @@ export function DslElement(props: Props) {
const cc =
CamelDefinitionApiExt.getElementChildrenDefinition(child.className);
return child.name === 'steps' || cc.filter(c =>
c.multiple).length > 0;
})
+ } else {
+ children = children.filter(child => child.className ===
'FromDefinition')
}
if (step.dslName === 'CatchDefinition') { // exception
children = children.filter(value => value.name !== 'onWhen')
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 7c5bdd4c..c047e846 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
@@ -28,6 +28,7 @@ import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from
"../../utils/ElementIcons";
import { RouteConfigurationDefinition} from
"karavan-core/lib/model/CamelDefinition";
+import {AutoStartupIcon, ErrorHandlerIcon} from "../../icons/OtherIcons";
interface Props {
headerRef: React.RefObject<HTMLDivElement>
@@ -103,8 +104,8 @@ export function DslElementHeader(props: Props) {
return [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount]
}
- function hasWideChildrenElement() {
- const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
+ function getHasWideChildrenElement(childrenInfo: [boolean, number,
boolean, number, number]) {
+ const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = childrenInfo;
if (props.step.dslName === 'SetHeadersDefinition') return false;
else if (isHorizontal() && stepsChildrenCount > 1) return true;
else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields
&& nonStepChildrenCount > 0) return true;
@@ -169,6 +170,8 @@ export function DslElementHeader(props: Props) {
!['FromDefinition', 'RouteConfigurationDefinition',
'RouteDefinition', 'CatchDefinition', 'FinallyDefinition', 'WhenDefinition',
'OtherwiseDefinition'].includes(step.dslName)
&& !inRouteConfiguration;
const headerClasses = getHeaderClasses();
+ const childrenInfo = getChildrenInfo(props.step) || [];
+ const hasWideChildrenElement = getHasWideChildrenElement(childrenInfo)
return (
<div className={"dsl-element " + headerClasses}
style={getHeaderStyle()} ref={props.headerRef}>
{!['RouteConfigurationDefinition',
'RouteDefinition'].includes(props.step.dslName) &&
@@ -178,9 +181,20 @@ export function DslElementHeader(props: Props) {
{CamelUi.getIconForElement(step)}
</div>
}
- <div className={hasWideChildrenElement() ? "header-text" : ""}>
- {hasWideChildrenElement() && <div className="spacer"/>}
- {getHeaderTextWithTooltip(step)}
+ {'RouteDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).autoStartup !== false &&
<AutoStartupIcon/>}
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ {'RouteConfigurationDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ <div className={hasWideChildrenElement ? "header-text" : ""}>
+ {hasWideChildrenElement && <div className="spacer"/>}
+ {getHeaderTextWithTooltip(step, hasWideChildrenElement)}
</div>
{showInsertButton && getInsertElementButton()}
{getDeleteButton()}
@@ -199,10 +213,10 @@ export function DslElementHeader(props: Props) {
}
}
- function getHeaderTextWithTooltip(step: CamelElement) {
+ function getHeaderTextWithTooltip(step: CamelElement,
hasWideChildrenElement: boolean) {
const title = getHeaderText(step);
const checkRequired = CamelUtil.checkRequired(step);
- let className = hasWideChildrenElement() ? "text text-right" : "text
text-bottom";
+ let className = hasWideChildrenElement ? "text text-right" : "text
text-bottom";
if (!checkRequired[0]) className = className + " header-text-required";
if (checkRequired[0]) {
return <Text className={className}>{title}</Text>
diff --git a/karavan-designer/src/designer/icons/OtherIcons.tsx
b/karavan-designer/src/designer/icons/OtherIcons.tsx
new file mode 100644
index 00000000..21368f3d
--- /dev/null
+++ b/karavan-designer/src/designer/icons/OtherIcons.tsx
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+
+export function AutoStartupIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="M19.88 21.847h2l-5-12h-2l-5 12h2l1.24-3h5.53zm-5.93-5
1.82-4.42h.25l1.86 4.42z"/>
+ </svg>
+ );
+}
+
+export function ErrorHandlerIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="m19.264 14.98-3.998 7-1.736-1 2.287-4h-3.889l3.993-7
1.737 1-2.284 4z"/>
+ </svg>
+ );
+}
diff --git a/karavan-designer/src/designer/route/element/DslElement.css
b/karavan-designer/src/designer/route/element/DslElement.css
index edaebc54..4f0109c5 100644
--- a/karavan-designer/src/designer/route/element/DslElement.css
+++ b/karavan-designer/src/designer/route/element/DslElement.css
@@ -125,6 +125,12 @@
align-items: center;
}
+.karavan .step-element .route-icons {
+ position: absolute;
+ top: 0;
+ display: flex;
+}
+
.karavan .step-element .header .icon,
.element-builder .header .icon {
height: 20px;
diff --git a/karavan-designer/src/designer/route/element/DslElement.tsx
b/karavan-designer/src/designer/route/element/DslElement.tsx
index 70befc33..ae566055 100644
--- a/karavan-designer/src/designer/route/element/DslElement.tsx
+++ b/karavan-designer/src/designer/route/element/DslElement.tsx
@@ -181,6 +181,8 @@ export function DslElement(props: Props) {
const cc =
CamelDefinitionApiExt.getElementChildrenDefinition(child.className);
return child.name === 'steps' || cc.filter(c =>
c.multiple).length > 0;
})
+ } else {
+ children = children.filter(child => child.className ===
'FromDefinition')
}
if (step.dslName === 'CatchDefinition') { // exception
children = children.filter(value => value.name !== 'onWhen')
diff --git a/karavan-designer/src/designer/route/element/DslElementHeader.tsx
b/karavan-designer/src/designer/route/element/DslElementHeader.tsx
index 7c5bdd4c..c047e846 100644
--- a/karavan-designer/src/designer/route/element/DslElementHeader.tsx
+++ b/karavan-designer/src/designer/route/element/DslElementHeader.tsx
@@ -28,6 +28,7 @@ import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from
"../../utils/ElementIcons";
import { RouteConfigurationDefinition} from
"karavan-core/lib/model/CamelDefinition";
+import {AutoStartupIcon, ErrorHandlerIcon} from "../../icons/OtherIcons";
interface Props {
headerRef: React.RefObject<HTMLDivElement>
@@ -103,8 +104,8 @@ export function DslElementHeader(props: Props) {
return [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount]
}
- function hasWideChildrenElement() {
- const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
+ function getHasWideChildrenElement(childrenInfo: [boolean, number,
boolean, number, number]) {
+ const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = childrenInfo;
if (props.step.dslName === 'SetHeadersDefinition') return false;
else if (isHorizontal() && stepsChildrenCount > 1) return true;
else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields
&& nonStepChildrenCount > 0) return true;
@@ -169,6 +170,8 @@ export function DslElementHeader(props: Props) {
!['FromDefinition', 'RouteConfigurationDefinition',
'RouteDefinition', 'CatchDefinition', 'FinallyDefinition', 'WhenDefinition',
'OtherwiseDefinition'].includes(step.dslName)
&& !inRouteConfiguration;
const headerClasses = getHeaderClasses();
+ const childrenInfo = getChildrenInfo(props.step) || [];
+ const hasWideChildrenElement = getHasWideChildrenElement(childrenInfo)
return (
<div className={"dsl-element " + headerClasses}
style={getHeaderStyle()} ref={props.headerRef}>
{!['RouteConfigurationDefinition',
'RouteDefinition'].includes(props.step.dslName) &&
@@ -178,9 +181,20 @@ export function DslElementHeader(props: Props) {
{CamelUi.getIconForElement(step)}
</div>
}
- <div className={hasWideChildrenElement() ? "header-text" : ""}>
- {hasWideChildrenElement() && <div className="spacer"/>}
- {getHeaderTextWithTooltip(step)}
+ {'RouteDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).autoStartup !== false &&
<AutoStartupIcon/>}
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ {'RouteConfigurationDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ <div className={hasWideChildrenElement ? "header-text" : ""}>
+ {hasWideChildrenElement && <div className="spacer"/>}
+ {getHeaderTextWithTooltip(step, hasWideChildrenElement)}
</div>
{showInsertButton && getInsertElementButton()}
{getDeleteButton()}
@@ -199,10 +213,10 @@ export function DslElementHeader(props: Props) {
}
}
- function getHeaderTextWithTooltip(step: CamelElement) {
+ function getHeaderTextWithTooltip(step: CamelElement,
hasWideChildrenElement: boolean) {
const title = getHeaderText(step);
const checkRequired = CamelUtil.checkRequired(step);
- let className = hasWideChildrenElement() ? "text text-right" : "text
text-bottom";
+ let className = hasWideChildrenElement ? "text text-right" : "text
text-bottom";
if (!checkRequired[0]) className = className + " header-text-required";
if (checkRequired[0]) {
return <Text className={className}>{title}</Text>
diff --git a/karavan-space/src/designer/icons/OtherIcons.tsx
b/karavan-space/src/designer/icons/OtherIcons.tsx
new file mode 100644
index 00000000..21368f3d
--- /dev/null
+++ b/karavan-space/src/designer/icons/OtherIcons.tsx
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React from 'react';
+
+export function AutoStartupIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="M19.88 21.847h2l-5-12h-2l-5 12h2l1.24-3h5.53zm-5.93-5
1.82-4.42h.25l1.86 4.42z"/>
+ </svg>
+ );
+}
+
+export function ErrorHandlerIcon() {
+ return (
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"
className="icon" width="24px" height="24px">
+ <path d="M16 4A12 12 0 1 1 4 16 12.035 12.035 0 0 1 16 4m0-2a14 14
0 1 0 14 14A14.041 14.041 0 0 0 16 2Z"/>
+ <path
+ d="M0 0h32v32H0z"
+ data-name="<Transparent Rectangle>"
+ style={{
+ fill: "none",
+ }}
+ />
+ <path d="m19.264 14.98-3.998 7-1.736-1 2.287-4h-3.889l3.993-7
1.737 1-2.284 4z"/>
+ </svg>
+ );
+}
diff --git a/karavan-space/src/designer/route/element/DslElement.css
b/karavan-space/src/designer/route/element/DslElement.css
index edaebc54..4f0109c5 100644
--- a/karavan-space/src/designer/route/element/DslElement.css
+++ b/karavan-space/src/designer/route/element/DslElement.css
@@ -125,6 +125,12 @@
align-items: center;
}
+.karavan .step-element .route-icons {
+ position: absolute;
+ top: 0;
+ display: flex;
+}
+
.karavan .step-element .header .icon,
.element-builder .header .icon {
height: 20px;
diff --git a/karavan-space/src/designer/route/element/DslElement.tsx
b/karavan-space/src/designer/route/element/DslElement.tsx
index 70befc33..ae566055 100644
--- a/karavan-space/src/designer/route/element/DslElement.tsx
+++ b/karavan-space/src/designer/route/element/DslElement.tsx
@@ -181,6 +181,8 @@ export function DslElement(props: Props) {
const cc =
CamelDefinitionApiExt.getElementChildrenDefinition(child.className);
return child.name === 'steps' || cc.filter(c =>
c.multiple).length > 0;
})
+ } else {
+ children = children.filter(child => child.className ===
'FromDefinition')
}
if (step.dslName === 'CatchDefinition') { // exception
children = children.filter(value => value.name !== 'onWhen')
diff --git a/karavan-space/src/designer/route/element/DslElementHeader.tsx
b/karavan-space/src/designer/route/element/DslElementHeader.tsx
index 7c5bdd4c..c047e846 100644
--- a/karavan-space/src/designer/route/element/DslElementHeader.tsx
+++ b/karavan-space/src/designer/route/element/DslElementHeader.tsx
@@ -28,6 +28,7 @@ import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from
"../../utils/ElementIcons";
import { RouteConfigurationDefinition} from
"karavan-core/lib/model/CamelDefinition";
+import {AutoStartupIcon, ErrorHandlerIcon} from "../../icons/OtherIcons";
interface Props {
headerRef: React.RefObject<HTMLDivElement>
@@ -103,8 +104,8 @@ export function DslElementHeader(props: Props) {
return [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount]
}
- function hasWideChildrenElement() {
- const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
+ function getHasWideChildrenElement(childrenInfo: [boolean, number,
boolean, number, number]) {
+ const [hasStepsField, stepsChildrenCount, hasNonStepsFields,
nonStepChildrenCount, childrenCount] = childrenInfo;
if (props.step.dslName === 'SetHeadersDefinition') return false;
else if (isHorizontal() && stepsChildrenCount > 1) return true;
else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields
&& nonStepChildrenCount > 0) return true;
@@ -169,6 +170,8 @@ export function DslElementHeader(props: Props) {
!['FromDefinition', 'RouteConfigurationDefinition',
'RouteDefinition', 'CatchDefinition', 'FinallyDefinition', 'WhenDefinition',
'OtherwiseDefinition'].includes(step.dslName)
&& !inRouteConfiguration;
const headerClasses = getHeaderClasses();
+ const childrenInfo = getChildrenInfo(props.step) || [];
+ const hasWideChildrenElement = getHasWideChildrenElement(childrenInfo)
return (
<div className={"dsl-element " + headerClasses}
style={getHeaderStyle()} ref={props.headerRef}>
{!['RouteConfigurationDefinition',
'RouteDefinition'].includes(props.step.dslName) &&
@@ -178,9 +181,20 @@ export function DslElementHeader(props: Props) {
{CamelUi.getIconForElement(step)}
</div>
}
- <div className={hasWideChildrenElement() ? "header-text" : ""}>
- {hasWideChildrenElement() && <div className="spacer"/>}
- {getHeaderTextWithTooltip(step)}
+ {'RouteDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).autoStartup !== false &&
<AutoStartupIcon/>}
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ {'RouteConfigurationDefinition' === step.dslName&&
+ <div className={"route-icons"}>
+ {(step as any).errorHandler !== undefined &&
<ErrorHandlerIcon/>}
+ </div>
+ }
+ <div className={hasWideChildrenElement ? "header-text" : ""}>
+ {hasWideChildrenElement && <div className="spacer"/>}
+ {getHeaderTextWithTooltip(step, hasWideChildrenElement)}
</div>
{showInsertButton && getInsertElementButton()}
{getDeleteButton()}
@@ -199,10 +213,10 @@ export function DslElementHeader(props: Props) {
}
}
- function getHeaderTextWithTooltip(step: CamelElement) {
+ function getHeaderTextWithTooltip(step: CamelElement,
hasWideChildrenElement: boolean) {
const title = getHeaderText(step);
const checkRequired = CamelUtil.checkRequired(step);
- let className = hasWideChildrenElement() ? "text text-right" : "text
text-bottom";
+ let className = hasWideChildrenElement ? "text text-right" : "text
text-bottom";
if (!checkRequired[0]) className = className + " header-text-required";
if (checkRequired[0]) {
return <Text className={className}>{title}</Text>