diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
index 309485584..039f67ecd 100644
--- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
+++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx
@@ -27,6 +27,7 @@ import {
classNames,
getRandomKeyByssmm,
groupByFamily,
+ groupByFamilyCustom,
} from "../../../../utils/utils";
export default function ParameterComponent({
@@ -99,46 +100,48 @@ export default function ParameterComponent({
);
}, [info]);
+
+
useEffect(() => {
-
-
- console.log("mydata", myData);
- console.log("tooltipTitle", tooltipTitle);
- console.log("left", left);
- console.log("data.type", data.type);
- console.log("flows", flows);
+ let groupedObj = groupByFamily(myData, tooltipTitle, left, data.type, flows.find((f) => f.id === tabId).data.nodes);
+ if(groupedObj?.length === 0){
+ groupedObj = groupByFamilyCustom(myData, tooltipTitle, left, data.type, flows.find((f) => f.id === tabId).data.nodes)
+ }
- const groupedObj = groupByFamily(myData, tooltipTitle, left, data.type);
- refNumberComponents.current = groupedObj[0]?.type?.length;
+ if(groupedObj){
+ refNumberComponents.current = groupedObj[0]?.type?.length;
- refHtml.current = groupedObj.map((item, i) => {
- const Icon: any = nodeIconsLucide[item.family];
+ refHtml.current = groupedObj.map((item, i) => {
- return (
- 0 ? "mt-2 flex items-center" : "flex items-center"
- )}
- >
- 0 ? "mt-2 flex items-center" : "flex items-center"
+ )}
>
-
-
-
- {nodeNames[item.family] ?? ""}{" "}
+ >
+
+
+
+ {item.family !== 'custom_components' ? nodeNames[item.family] : item.component ?? ""}{" "}
{" "}
{item.type === "" ? "" : " - "}
@@ -155,10 +158,14 @@ export default function ParameterComponent({
: item.type}
-
- );
- });
- }, [tooltipTitle]);
+
+
+ );
+ });
+ }
+
+
+ }, [tooltipTitle, flows.find((f) => f.id === tabId).data.nodes]);
return (
) {
return classes.filter(Boolean).join(" ");
@@ -88,12 +89,13 @@ export function checkUpperWords(str: string) {
export const isWrappedWithClass = (event: any, className: string | undefined) =>
event.target.closest(`.${className}`);
-export function groupByFamily(data, baseClasses, left, type) {
+export function groupByFamily(data, baseClasses, left, type, flow) {
let parentOutput: string;
let arrOfParent: string[] = [];
let arrOfType: { family: string; type: string; component: string }[] = [];
let arrOfLength: { length: number; type: string }[] = [];
let lastType = "";
+
Object.keys(data).forEach((d) => {
Object.keys(data[d]).forEach((n) => {
try {
@@ -203,6 +205,104 @@ export function groupByFamily(data, baseClasses, left, type) {
}
}
+export function groupByFamilyCustom(data, baseClasses, left, type, flow) {
+ let arrOfParentCustom: string[] = [];
+ let arrOfType: { family: string; type: string; component: string }[] = [];
+
+
+ if (type === "CustomComponent") {
+ const uniqueValuesSet = new Set();
+ flow.forEach((element) => {
+ element["data"]["node"]["base_classes"].forEach((el) => {
+ if (!uniqueValuesSet.has(el)) {
+ arrOfParentCustom.push(el);
+ uniqueValuesSet.add(el);
+ }
+ });
+ });
+ }
+
+
+
+ if (left === false) {
+ arrOfParentCustom.map((n) => {
+ try {
+ arrOfType.push({
+ family: "custom_components",
+ type: n,
+ component: nodeNames["custom_components"],
+ });
+ } catch (e) {
+ console.log(e);
+ }
+ });
+
+ }
+
+ else{
+ flow.forEach((element) => {
+ Object.keys(element["data"]["node"]["template"]).map((el) => {
+ if(element["data"]["node"]["template"][el].input_types && element["data"]["node"]["template"][el].input_types.length > 0){
+ element["data"]["node"]["template"][el].input_types.map((n) => {
+ try {
+ arrOfType.push({
+ family: "custom_components",
+ type: n,
+ component: nodeNames["custom_components"],
+ });
+ } catch (e) {
+ console.log(e);
+ }
+ });
+ }
+
+ });
+ });
+
+ }
+
+const groupedResult = {};
+
+arrOfType.forEach((item) => {
+ const { family, type, component } = item;
+ if (groupedResult.hasOwnProperty(family)) {
+ if (!groupedResult[family].type.includes(type)) {
+ groupedResult[family].type += `, ${type}`;
+ }
+ } else {
+ groupedResult[family] = { family, type, component };
+ }
+});
+
+
+const result = Object.values(groupedResult);
+
+if(left === false)
+{
+ let resultFiltered = [];
+ flow.forEach((element) => {
+ Object.keys(element["data"]["node"]["template"]).map((el) => {
+ if(element["data"]["node"]["template"][el].input_types && element["data"]["node"]["template"][el].input_types.length > 0){
+ element["data"]["node"]["template"][el].input_types.map((n) => {
+ resultFiltered.push({
+ family: "custom_components",
+ type: n,
+ component: element["data"]["node"]["display_name"],
+ })
+ });
+ }
+ });
+ });
+ return resultFiltered;
+}
+
+else{
+ return result;
+}
+
+
+}
+
export function buildInputs(tabsState, id) {
return tabsState &&
tabsState[id] &&