Skip to content

Commit 95cbb3b

Browse files
committed
added changes log in pipelinecanvas onbaording flow
1 parent 8891d81 commit 95cbb3b

File tree

14 files changed

+100
-62
lines changed

14 files changed

+100
-62
lines changed

frontend/src/components/CanvasForPipelines/PipelineCanvas.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import ReactFlow, {
99
Connection,
1010
ReactFlowInstance,
1111
} from 'reactflow';
12+
1213
import 'reactflow/dist/style.css';
1314
import { SourceNode } from './SourceNode';
1415
import { ProcessorNode } from './ProcessorNode';
@@ -32,7 +33,7 @@ const PipelineBuilder = () => {
3233

3334
const validatedNodeValue = nodeValue.map((node, index) => ({
3435
...node,
35-
position: node.position || { x: 100, y: 100 + index * 100 }, // Fallback position
36+
position: node.position || { x: 100, y: 100 + index * 100 },
3637
}));
3738

3839
const [edges, setEdges, onEdgesChange] = useEdgesState(JSON.parse(localStorage.getItem("PipelineEdges") || "[]"));

frontend/src/components/CanvasForPipelines/SourceNode.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,18 @@ const renderers = [
3131
...materialRenderers,
3232
];
3333
export const SourceNode = ({ data: Data }: any) => {
34-
console.log(Data)
3534
const [isSidebarOpen, setIsSidebarOpen] = useState(false)
3635
const { setNodeValue } = useNodeValue()
37-
const { setChangesLog } = usePipelineChangesLog()
36+
const {changesLog, setChangesLog } = usePipelineChangesLog()
3837
const [form, setForm] = useState<object>({})
3938
const SourceLabel = Data.supported_signals || ""
4039

4140
const handleDeleteNode = () => {
4241
setNodeValue(prev => prev.filter(node => node.id !== Data.id.toString()));
43-
setChangesLog(prev => [...prev, { type: 'source', name: Data.label, status: "deleted" }]);
42+
setChangesLog(prev => [...prev, { type: 'source', name: Data.name, status: "deleted" }]);
4443
const nodes = JSON.parse(localStorage.getItem("Nodes") || "[]");
4544
const updatedNodes = nodes.filter((node: any) => node.component_name !== Data.component_name);
4645
localStorage.setItem("Nodes", JSON.stringify(updatedNodes));
47-
4846
setIsSidebarOpen(false);
4947
}
5048

@@ -63,10 +61,14 @@ export const SourceNode = ({ data: Data }: any) => {
6361
}, [])
6462

6563
const handleSubmit = () => {
66-
setChangesLog(prev => [
64+
setChangesLog(prev => {
65+
const updatedLog = [
6766
...prev,
6867
{ type: 'source', name: Data.name, status: "added" },
69-
]);
68+
];
69+
localStorage.setItem("changesLog", JSON.stringify(updatedLog));
70+
return updatedLog;
71+
});
7072

7173
const nodes = JSON.parse(localStorage.getItem("Nodes") || "[]");
7274
const updatedNodes = nodes.map((node: any) =>

frontend/src/components/Pipelines/AddNewPipelineComponent/AddAgent.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Button } from '@/components/ui/button'
33
import { Card, CardContent, CardHeader, CardFooter } from '@/components/ui/card'
44
import { usePipelineStatus } from '@/context/usePipelineStatus';
55
import { useEffect, useState } from 'react';
6-
import { ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Code2, Edit, Loader2 } from 'lucide-react';
6+
import { ChevronUp, Code2, Edit, Loader2 } from 'lucide-react';
77
import { Input } from '@/components/ui/input';
88
import { Checkbox } from '@/components/ui/checkbox';
99
import {
@@ -34,6 +34,7 @@ import { AgentValuesTable } from '@/types/agentValues.type';
3434
import { usePipelineTab } from '@/context/useAddNewPipelineActiveTab';
3535
import CreateNewAgent from '@/components/Agents/CreateNewAgent';
3636
import pipelineServices from '@/services/pipelineServices';
37+
import usePipelineChangesLog from '@/context/usePipelineChangesLog';
3738

3839

3940
interface changes {
@@ -49,7 +50,7 @@ const AddAgent = () => {
4950
const [sortDirection, setSortDirection] = useState('asc');
5051
const [isDialogOpen, setIsDialogOpen] = useState(false);
5152
const [selectedAgents, setSelectedAgents] = useState<AgentValuesTable[]>([]);
52-
const [pipelineChangesLog, setPipelineChangesLog] = useState<changes[]>([])
53+
const { changesLog } = usePipelineChangesLog()
5354
const [rollOut, setRollOut] = useState(false)
5455
const { toast } = useToast()
5556
const { agentValues } = useAgentValues()
@@ -114,6 +115,9 @@ const AddAgent = () => {
114115
const handleSort = () => {
115116
setSortDirection(sortDirection === 'asc' ? 'desc' : 'asc');
116117
};
118+
useEffect(() => {
119+
console.log("changes log", changesLog)
120+
}, [changesLog])
117121

118122
const handleApply = () => {
119123
const selectedAgentsData = agentValues.filter(agent => selectedRows.includes(agent.id));
@@ -141,14 +145,12 @@ const AddAgent = () => {
141145
}
142146

143147
const handleGetAgent = async () => {
144-
setFilteredAgents(agentValues);
148+
setFilteredAgents(agentValues);
145149
};
146150

147151
useEffect(() => {
148152
if (localStorage.getItem('authToken'))
149153
handleGetAgent();
150-
const changesLog: changes[] = JSON.parse(localStorage.getItem("Nodes") || "[]");
151-
setPipelineChangesLog(changesLog);
152154
}, []);
153155

154156
const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -159,10 +161,9 @@ const AddAgent = () => {
159161
agent.status.toLowerCase().includes(searchValue) ||
160162
agent.version.toLowerCase().includes(searchValue)
161163
);
162-
setFilteredAgents(filtered); // Update filteredAgents with the search results
164+
setFilteredAgents(filtered);
163165
};
164166

165-
166167
const handleDeployChanges = () => {
167168
addPipeline()
168169
localStorage.removeItem('Sources');
@@ -171,6 +172,7 @@ const AddAgent = () => {
171172
localStorage.removeItem("selectedAgentIds")
172173
localStorage.removeItem("PipelineEdges")
173174
localStorage.removeItem("Nodes")
175+
localStorage.removeItem("changesLog")
174176
setTimeout(() => {
175177
toast({
176178
title: "Success",
@@ -347,7 +349,7 @@ const AddAgent = () => {
347349
<SheetDescription>
348350
<div className="flex flex-col gap-6 mt-4 overflow-auto h-[40rem]">
349351
{
350-
pipelineChangesLog.map((change: changes, index: number) => (
352+
changesLog.map((change, index) => (
351353
<div key={index} className="flex justify-between items-center">
352354
<div className="flex flex-col">
353355
<p className="text-lg capitalize">{change.component_role}</p>
@@ -364,12 +366,10 @@ const AddAgent = () => {
364366
</SheetDescription>
365367
<SheetClose className="flex justify-end mt-4 w-full">
366368
<div>
367-
<Button onClick={handleDeployChanges} className="bg-blue-500">Deploy Changes</Button>
369+
<Button onClick={handleDeployChanges} className="bg-blue-500">Deploy Changes1</Button>
368370
</div>
369371
</SheetClose>
370-
371372
</SheetContent>
372-
373373
</Sheet>
374374
<div className="mx-4 flex items-center space-x-2">
375375
<Switch id="edit-mode" checked={check} onCheckedChange={setCheck} />

frontend/src/components/Pipelines/AddNewPipelineComponent/destination/DestinationDetails.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ const DestinationDetail = () => {
105105
}
106106

107107
const handleSubmit = () => {
108+
const log={ type: 'destination', name: selectedSource?.display_name, status: "added" }
109+
const existingLog = JSON.parse(localStorage.getItem("changesLog") || "[]");
110+
const updatedLog = [...existingLog, log];
108111
const updatedSources = [
109112
...existingSources,
110113
{
@@ -132,6 +135,10 @@ const DestinationDetail = () => {
132135
localStorage.setItem(`Destination`, JSON.stringify(updatedSources));
133136
const newNodes = [...existingNodes.filter(node => !updatedNodes.some(updatedNode => updatedNode.component_id === node.component_id)), ...updatedNodes];
134137
localStorage.setItem(`Nodes`, JSON.stringify(newNodes));
138+
localStorage.setItem("changesLog", JSON.stringify(updatedLog));
139+
140+
141+
135142
};
136143

137144
const handleEdit = () => {

frontend/src/components/Pipelines/AddNewPipelineComponent/source/SourcesDetails.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ const SourceDetails = () => {
104104
}
105105

106106
const handleSubmit = () => {
107+
const log=[{ type: 'source', name: selectedSource?.display_name, status: "added" }]
108+
107109
const updatedSources = [
108110
...existingSources,
109111
{
@@ -128,6 +130,8 @@ const SourceDetails = () => {
128130
setExistingSources(updatedSources);
129131
localStorage.setItem(`Sources`, JSON.stringify(updatedSources));
130132
localStorage.setItem(`Nodes`, JSON.stringify(updatedNodes));
133+
localStorage.setItem("changesLog", JSON.stringify(log));
134+
131135
};
132136

133137
const handleEdit = () => {

frontend/src/components/Pipelines/DropdownOptions/DestinationDropdownOptions.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const DestinationDropdownOptions = () => {
3535
const [isSheetOpen, setIsSheetOpen] = useState(false)
3636
const [destinationOptionValue, setDestinationOptionValue] = useState('')
3737
const { setNodeValue } = useNodeValue()
38-
const { setChangesLog } = usePipelineChangesLog()
38+
const { addChange } = usePipelineChangesLog()
3939
const [destinations, setDestinations] = useState<destination[]>([])
4040
const [data, setData] = useState<object>();
4141
const [form, setForm] = useState<object>({})
@@ -80,13 +80,15 @@ const DestinationDropdownOptions = () => {
8080
component_name: pluginName,
8181
supported_signals: supported_signals,
8282
};
83-
84-
setNodeValue(prev => [...prev, newNode]);
83+
84+
const log={ type: 'destination', name: destinationOptionValue, status: "added" }
85+
const existingLog = JSON.parse(localStorage.getItem("changesLog") || "[]");
86+
addChange(log)
87+
const updatedLog = [...existingLog, log];
88+
localStorage.setItem("changesLog", JSON.stringify(updatedLog));
8589

8690
localStorage.setItem("Nodes", JSON.stringify([...existingNodes, nodeToBeAdded]));
87-
88-
setChangesLog(prev => [...prev, { type: 'destination', name: destinationOptionValue, status: "added" }]);
89-
91+
setNodeValue(prev => [...prev, newNode]);
9092
setIsSheetOpen(false);
9193
};
9294

frontend/src/components/Pipelines/DropdownOptions/ProcessorDropdownOptions.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const ProcessorDropdownOptions = () => {
3333
const [isSheetOpen, setIsSheetOpen] = useState(false)
3434
const [processorOptionValue, setProcessorOptionValue] = useState('')
3535
const { setNodeValue } = useNodeValue()
36-
const { setChangesLog } = usePipelineChangesLog()
36+
const { addChange } = usePipelineChangesLog()
3737
const [form, setForm] = useState<object>({})
3838
const [data, setData] = useState<object>();
3939
const [pluginName, setPluginName] = useState()
@@ -50,7 +50,6 @@ const ProcessorDropdownOptions = () => {
5050
const handleSubmit = () => {
5151
const supported_signals = processors.find(s => s.name == pluginName)?.supported_signals;
5252

53-
// Define the new node structure for React Flow
5453
const newNode = {
5554
id: (existingNodes.length + 1).toString(),
5655
type: "processor",
@@ -79,12 +78,15 @@ const ProcessorDropdownOptions = () => {
7978
supported_signals: supported_signals,
8079
};
8180

82-
setNodeValue(prev => [...prev, newNode]);
83-
84-
localStorage.setItem("Nodes", JSON.stringify([...existingNodes, nodeToBeAdded]));
8581

86-
setChangesLog(prev => [...prev, { type: 'processor', name: processorOptionValue, status: "added" }]);
82+
const log = { type: 'processor', name: processorOptionValue, status: "added" }
83+
const existingLog = JSON.parse(localStorage.getItem("changesLog") || "[]");
84+
addChange(log)
85+
const updatedLog = [...existingLog, log];
86+
localStorage.setItem("changesLog", JSON.stringify(updatedLog));
8787

88+
localStorage.setItem("Nodes", JSON.stringify([...existingNodes, nodeToBeAdded]));
89+
setNodeValue(prev => [...prev, newNode]);
8890
setIsSheetOpen(false);
8991
};
9092

frontend/src/components/Pipelines/DropdownOptions/SourceDropdownOptions.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const SourceDropdownOptions = () => {
3434
const [isSheetOpen, setIsSheetOpen] = useState(false)
3535
const [sourceOptionValue, setSourceOptionValue] = useState('')
3636
const { setNodeValue } = useNodeValue()
37-
const { setChangesLog } = usePipelineChangesLog()
37+
const { addChange } = usePipelineChangesLog()
3838
const [form, setForm] = useState<object>({})
3939
const [sources, setSources] = useState<sources[]>([])
4040
const [data, setData] = useState<object>();
@@ -50,7 +50,6 @@ const SourceDropdownOptions = () => {
5050

5151
const handleSubmit = () => {
5252
const supported_signals = sources.find(s => s.name == pluginName)?.supported_signals;
53-
5453
const newNode = {
5554
id: (existingNodes.length + 1).toString(),
5655
type: "source",
@@ -79,14 +78,16 @@ const SourceDropdownOptions = () => {
7978
supported_signals: supported_signals,
8079
};
8180

81+
const log={ type: 'source', name: sourceOptionValue, status: "added" }
82+
const existingLog = JSON.parse(localStorage.getItem("changesLog") || "[]");
83+
addChange(log)
84+
const updatedLog = [...existingLog, log];
85+
localStorage.setItem("changesLog", JSON.stringify(updatedLog));
86+
8287

8388
localStorage.setItem("Nodes", JSON.stringify([...existingNodes, nodeToBeAdded]));
8489
setNodeValue(prev => [...prev, newNode]);
8590

86-
87-
setChangesLog(prev => [...prev, { type: 'source', name: sourceOptionValue, status: "added" }]);
88-
89-
// Close the sheet
9091
setIsSheetOpen(false);
9192
};
9293

frontend/src/components/Pipelines/LandingView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const LandingView = () => {
4141
localStorage.removeItem("selectedAgentIds");
4242
localStorage.removeItem("PipelineEdges");
4343
localStorage.removeItem("Nodes");
44+
localStorage.removeItem("changesLog")
4445

4546
setCurrentStep(0);
4647
setIsDialogOpen(false);

frontend/src/components/Pipelines/PipelineDetails.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,9 @@ const PipelineDetails = ({ pipelineId }: { pipelineId: string }) => {
6161
const { changesLog } = usePipelineChangesLog()
6262
const [pipelineOverview, setPipelineOverview] = useState<Pipeline>()
6363
const [isOpen, setIsOpen] = useState(false)
64-
// const [graph, setGraph] = useState<Node[]>([])
65-
const [nodes, setNodes] = useState<Node[]>([])
6664
const { toast } = useToast()
6765

66+
6867
const nodeTypes = useMemo(() => ({
6968
source: SourceNode,
7069
processor: ProcessorNode,
@@ -177,7 +176,6 @@ const PipelineDetails = ({ pipelineId }: { pipelineId: string }) => {
177176
window.location.reload();
178177
}
179178

180-
181179
return (
182180
<div className="py-4 flex flex-col">
183181
<div className="flex mb-5 gap-2 items-center">

0 commit comments

Comments
 (0)