diff --git a/src/frontend/src/CustomNodes/GenericNode/components/NodeInputField/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/NodeInputField/index.tsx
index bd7b104ea..314772275 100644
--- a/src/frontend/src/CustomNodes/GenericNode/components/NodeInputField/index.tsx
+++ b/src/frontend/src/CustomNodes/GenericNode/components/NodeInputField/index.tsx
@@ -2,6 +2,7 @@ import useHandleNodeClass from "@/CustomNodes/hooks/use-handle-node-class";
import { usePostTemplateValue } from "@/controllers/API/queries/nodes/use-post-template-value";
import {
CustomParameterComponent,
+ CustomParameterLabel,
getCustomParameterTitle,
} from "@/customization/components/custom-parameter";
import { useEffect, useRef } from "react";
@@ -104,42 +105,50 @@ export default function NodeInputField({
>
{displayHandle && Handle}
-
- {proxy ? (
-
{proxy.id}}>
- {
-
- {getCustomParameterTitle({ title, nodeId: data.id })}
-
- }
-
- ) : (
-
-
+
+
+ {proxy ? (
+ {proxy.id}}>
{
{getCustomParameterTitle({ title, nodeId: data.id })}
}
-
-
- )}
-
- {required ? "*" : ""}
-
-
- {info !== "" && (
-
}>
- {/* put div to avoid bug that does not display tooltip */}
-
-
-
+ ) : (
+
+
+ {
+
+ {getCustomParameterTitle({ title, nodeId: data.id })}
+
+ }
+
+
)}
+
+ {required ? "*" : ""}
+
+
+ {info !== "" && (
+
}>
+ {/* put div to avoid bug that does not display tooltip */}
+
+
+
+
+ )}
+
+
{data.node?.template[name] !== undefined && (
diff --git a/src/frontend/src/CustomNodes/hooks/use-handle-new-value.tsx b/src/frontend/src/CustomNodes/hooks/use-handle-new-value.tsx
index 7d26d0dc2..dc2e2c309 100644
--- a/src/frontend/src/CustomNodes/hooks/use-handle-new-value.tsx
+++ b/src/frontend/src/CustomNodes/hooks/use-handle-new-value.tsx
@@ -1,4 +1,5 @@
import { usePostTemplateValue } from "@/controllers/API/queries/nodes/use-post-template-value";
+import { track } from "@/customization/utils/analytics";
import useAlertStore from "@/stores/alertStore";
import useFlowStore from "@/stores/flowStore";
import useFlowsManagerStore from "@/stores/flowsManagerStore";
@@ -45,6 +46,8 @@ const useHandleOnNewValue = ({
const newNode = cloneDeep(node);
const template = newNode.template;
+ track("Component Edited", { nodeId });
+
if (!template) {
setErrorData({ title: "Template not found in the component" });
return;
diff --git a/src/frontend/src/customization/components/custom-parameter.tsx b/src/frontend/src/customization/components/custom-parameter.tsx
index d2358e5ed..220ab9875 100644
--- a/src/frontend/src/customization/components/custom-parameter.tsx
+++ b/src/frontend/src/customization/components/custom-parameter.tsx
@@ -47,3 +47,17 @@ export function getCustomParameterTitle({
}) {
return title;
}
+
+export function CustomParameterLabel({
+ name,
+ nodeId,
+ templateValue,
+ nodeClass,
+}: {
+ name: string;
+ nodeId: string;
+ templateValue: any;
+ nodeClass: APIClassType;
+}) {
+ return <>>;
+}
diff --git a/src/frontend/src/modals/newFlowModal/components/NewFlowCardComponent/index.tsx b/src/frontend/src/modals/newFlowModal/components/NewFlowCardComponent/index.tsx
index 98e0510bb..4820b0199 100644
--- a/src/frontend/src/modals/newFlowModal/components/NewFlowCardComponent/index.tsx
+++ b/src/frontend/src/modals/newFlowModal/components/NewFlowCardComponent/index.tsx
@@ -20,7 +20,7 @@ export default function NewFlowCardComponent() {
addFlow().then((id) => {
navigate(`/flow/${id}${folderId ? `/folder/${folderId}` : ""}`);
});
- track("New Flow Created: Blank Flow");
+ track("New Flow Created", { template: "Blank Flow" });
}}
className="h-64 w-80 cursor-pointer bg-background pt-4"
data-testid="blank-flow"
diff --git a/src/frontend/src/modals/newFlowModal/components/undrawCards/index.tsx b/src/frontend/src/modals/newFlowModal/components/undrawCards/index.tsx
index a784552f0..8d4e8cc19 100644
--- a/src/frontend/src/modals/newFlowModal/components/undrawCards/index.tsx
+++ b/src/frontend/src/modals/newFlowModal/components/undrawCards/index.tsx
@@ -145,7 +145,7 @@ export default function UndrawCardComponent({
addFlow({ flow }).then((id) => {
navigate(`/flow/${id}/folder/${folderIdUrl}`);
});
- track(`New Flow Created: ${flow.name} Template`);
+ track("New Flow Created", { template: `${flow.name} Template` });
}}
className="h-64 w-80 cursor-pointer bg-background pt-4"
>
diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx
index 17db926ff..a6fa1b18d 100644
--- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx
+++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx
@@ -259,6 +259,12 @@ export default function Page({ view }: { view?: boolean }): JSX.Element {
e.preventDefault();
(e as unknown as Event).stopImmediatePropagation();
takeSnapshot();
+ if (lastSelection.edges?.length) {
+ track("Component Connection Deleted");
+ }
+ if (lastSelection.nodes?.length) {
+ track("Component Deleted");
+ }
deleteNode(lastSelection.nodes.map((node) => node.id));
deleteEdge(lastSelection.edges.map((edge) => edge.id));
}
@@ -341,7 +347,7 @@ export default function Page({ view }: { view?: boolean }): JSX.Element {
event.dataTransfer.getData(datakey!),
);
- track(`Component Added: ${data.node?.display_name}`);
+ track("Component Added", { componentType: data.node?.display_name });
const newId = getNodeId(data.type);
diff --git a/src/frontend/src/stores/flowStore.ts b/src/frontend/src/stores/flowStore.ts
index cdc910a8e..eb1dc22eb 100644
--- a/src/frontend/src/stores/flowStore.ts
+++ b/src/frontend/src/stores/flowStore.ts
@@ -2,6 +2,7 @@ import {
BROKEN_EDGES_WARNING,
componentsToIgnoreUpdate,
} from "@/constants/constants";
+import { track } from "@/customization/utils/analytics";
import { brokenEdgeMessage } from "@/utils/utils";
import { cloneDeep, zip } from "lodash";
import {
@@ -271,6 +272,7 @@ const useFlowStore = create((set, get) => ({
: !nodeId.includes(node.id),
),
);
+ track("Component Deleted", { nodeId });
},
deleteEdge: (edgeId) => {
get().setEdges(
@@ -280,6 +282,7 @@ const useFlowStore = create((set, get) => ({
: !edgeId.includes(edge.id),
),
);
+ track("Component Connection Deleted", { edgeId });
},
paste: (selection, position) => {
if (