You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/10/28 21:53:54 UTC
[camel-karavan] branch main updated: Fix #505
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 c2cfc13 Fix #505
c2cfc13 is described below
commit c2cfc133e2aa7b5862af348b11af0aa79593dfbe
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Fri Oct 28 17:53:42 2022 -0400
Fix #505
---
karavan-core/src/core/api/CamelUtil.ts | 22 ++++++++++++++++++++--
karavan-designer/src/designer/karavan.css | 4 ++++
karavan-designer/src/designer/route/DslElement.tsx | 4 ++--
.../designer/route/property/DslPropertyField.tsx | 9 +++++++--
.../route/property/KameletPropertyField.tsx | 2 ++
5 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/karavan-core/src/core/api/CamelUtil.ts b/karavan-core/src/core/api/CamelUtil.ts
index 6b40652..d7a436f 100644
--- a/karavan-core/src/core/api/CamelUtil.ts
+++ b/karavan-core/src/core/api/CamelUtil.ts
@@ -148,6 +148,13 @@ export class CamelUtil {
: [];
}
+ static getKameletRequiredParameters = (element: any): string[] => {
+ const kamelet = CamelUtil.getKamelet(element)
+ return kamelet
+ ? kamelet.spec.definition.required
+ : [];
+ }
+
static getComponentProperties = (element: any): ComponentProperty[] => {
const dslName: string = (element as any).dslName;
if (dslName === 'ToDynamicDefinition'){
@@ -174,7 +181,7 @@ export class CamelUtil {
const value = (element as any)[p.name];
if (p.type === 'string' && (value === undefined || value.trim().length === 0)){
result[0] = false;
- result[1].push("Property " + p.displayName + " is required");
+ result[1].push(p.displayName + " is required");
} else if (p.type === 'ExpressionDefinition'){
const expressionMeta = CamelMetadataApi.getCamelModelMetadataByClassName('ExpressionDefinition');
let expressionCheck = false;
@@ -196,9 +203,20 @@ export class CamelUtil {
const value = CamelDefinitionApiExt.getParametersValue(element, p.name, p.kind === 'path');
if (value === undefined || value.trim().length === 0){
result[0] = false;
- result[1].push("Property " + p.displayName + " is required");
+ result[1].push(p.displayName + " is required");
}
})
+ } else {
+ const kamelet = this.getKamelet(element);
+ let allSet = true;
+ const filledParameters = Object.keys((element as any).parameters);
+ kamelet?.spec.definition.required.forEach(name => {
+ if (!filledParameters.includes(name)) {
+ allSet = false;
+ result[1].push(name + " is required");
+ }
+ })
+ result[0] = allSet;
}
}
return result;
diff --git a/karavan-designer/src/designer/karavan.css b/karavan-designer/src/designer/karavan.css
index e57165a..6d8c687 100644
--- a/karavan-designer/src/designer/karavan.css
+++ b/karavan-designer/src/designer/karavan.css
@@ -1268,3 +1268,7 @@
width: fit-content;
margin-top: 6px;
}
+
+.root .tooltip-required-field .pf-c-tooltip__content {
+ text-align: start;
+}
\ No newline at end of file
diff --git a/karavan-designer/src/designer/route/DslElement.tsx b/karavan-designer/src/designer/route/DslElement.tsx
index ac67521..61a02f1 100644
--- a/karavan-designer/src/designer/route/DslElement.tsx
+++ b/karavan-designer/src/designer/route/DslElement.tsx
@@ -256,8 +256,8 @@ export class DslElement extends React.Component<Props, State> {
if (!checkRequired[0]) className = className + " header-text-required";
if (checkRequired[0]) return <Text className={className}>{title}</Text>
else return (
- <Tooltip position={"right"}
- content={checkRequired[1]}>
+ <Tooltip position={"right"} className="tooltip-required-field"
+ content={checkRequired[1].map((text, i) =>(<div key={i}>{text}</div>))}>
<Text className={className}>{title}</Text>
</Tooltip>
)
diff --git a/karavan-designer/src/designer/route/property/DslPropertyField.tsx b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
index 76d97e5..1612dd0 100644
--- a/karavan-designer/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-designer/src/designer/route/property/DslPropertyField.tsx
@@ -66,6 +66,8 @@ import {KubernetesSelector} from "./KubernetesSelector";
import {KubernetesAPI} from "../../utils/KubernetesAPI";
import Editor from "@monaco-editor/react";
import EditorIcon from "@patternfly/react-icons/dist/js/icons/code-icon";
+import {Property} from "../../../../../karavan-core/src/core/model/KameletModels";
+import {KameletApi} from "../../../../../karavan-core/src/core/api/KameletApi";
interface Props {
property: PropertyMeta,
@@ -540,13 +542,16 @@ export class DslPropertyField extends React.Component<Props, State> {
}
getKameletParameters = () => {
+ const element = this.props.element;
+ const requiredParameters = CamelUtil.getKameletRequiredParameters(element);
return (
<div className="parameters">
- {CamelUtil.getKameletProperties(this.props.element).map(property =>
+ {CamelUtil.getKameletProperties(element).map(property =>
<KameletPropertyField
key={property.id}
property={property}
- value={CamelDefinitionApiExt.getParametersValue(this.props.element, property.id)}
+ value={CamelDefinitionApiExt.getParametersValue(element, property.id)}
+ required={requiredParameters.includes(property.id)}
onParameterChange={this.props.onParameterChange}
/>)}
</div>
diff --git a/karavan-designer/src/designer/route/property/KameletPropertyField.tsx b/karavan-designer/src/designer/route/property/KameletPropertyField.tsx
index e12d25e..cda5ac3 100644
--- a/karavan-designer/src/designer/route/property/KameletPropertyField.tsx
+++ b/karavan-designer/src/designer/route/property/KameletPropertyField.tsx
@@ -36,6 +36,7 @@ import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
interface Props {
property: Property,
value: any,
+ required: boolean,
onParameterChange?: (parameter: string, value: string | number | boolean | any, pathParameter?: boolean) => void
}
@@ -159,6 +160,7 @@ export class KameletPropertyField extends React.Component<Props, State> {
key={id}
label={property.title}
fieldId={id}
+ isRequired={this.props.required}
labelIcon={
<Popover
position={"left"}