diff --git a/Frontend/power-tracker/src/components/enoekAdd.tsx b/Frontend/power-tracker/src/components/enoekAdd.tsx index 30dcbac11260efb8a42c24aa07f5ad8781ee65c4..bbdcc3687f6662903e41906c9bbef7b904ef1f55 100644 --- a/Frontend/power-tracker/src/components/enoekAdd.tsx +++ b/Frontend/power-tracker/src/components/enoekAdd.tsx @@ -141,6 +141,26 @@ const MainComponent: React.FC<ManageAddingProps> = ({ enoek, setData, search }) }) .then((res) => { console.log(res.data) + setData(prevState => ({ + ...prevState, + enoek: [ + ...prevState.enoek, + { + id: values.id, + header: values.header, + description: values.description, + author: sessionStorage.getItem("FIRSTNAME") + " " + sessionStorage.getItem("LASTNAME"), + start_date: startDate, + end_date: endDate, + active: false, + process: values.process, + approved: null, + } + ] + })); + toast({ + title: "Added Measure.", + }) }).catch((error) => { console.log(error) setErrorOpen(true) //if error the usestate is true to show a error message @@ -257,12 +277,7 @@ const MainComponent: React.FC<ManageAddingProps> = ({ enoek, setData, search }) )} /> <br></br> - <Button type='submit' - onClick={()=>{ - toast({ - title: "Added Measure.", - }) - }}> + <Button type='submit' > Done</Button> </form> </Form> diff --git a/Frontend/power-tracker/src/components/enoekAllMeasures.tsx b/Frontend/power-tracker/src/components/enoekAllMeasures.tsx index c4ed8de6f8c30ee30af69486fd058ba8dc09065d..33ec3ff935d105ef0f885a1b41a4873bbe19ffe4 100644 --- a/Frontend/power-tracker/src/components/enoekAllMeasures.tsx +++ b/Frontend/power-tracker/src/components/enoekAllMeasures.tsx @@ -88,6 +88,12 @@ const MainComponent: React.FC<ManageAddingProps> = ({ enoek, setData, search }) }) .then((res) => { console.log(res.data) + setData(prevState => ({ + enoek: prevState.enoek.filter(item => item.id !== id) + })); + toast({ + title: "Deleted Measure.", + }) }).catch((error) => { console.log(error) setErrorOpen(true) diff --git a/Frontend/power-tracker/src/components/enoekDecision.tsx b/Frontend/power-tracker/src/components/enoekDecision.tsx index 46b579117bbcbf95d61de7100a76125d11185fa8..1d6d477343c28de6f08a262d1dfbe36df3e95ced 100644 --- a/Frontend/power-tracker/src/components/enoekDecision.tsx +++ b/Frontend/power-tracker/src/components/enoekDecision.tsx @@ -92,6 +92,25 @@ const MainComponent: React.FC<ManageAddingProps> = ({ enoek, setData, search }) }) .then((res) => { console.log(res.data) + setData(prevState => ({ + ...prevState, + enoek: prevState.enoek.map(item => { + if (item.id === id) { + return { ...item, approved: bool }; + } else { + return item; + } + }) + })); + if(bool){ + toast({ + title: "Accepted Measure.", + }) + }else{ + toast({ + title: "Rejected Measure.", + }) + } }).catch((error) => { console.log(error) setErrorOpen(true) @@ -221,15 +240,9 @@ const MainComponent: React.FC<ManageAddingProps> = ({ enoek, setData, search }) <br></br> <Button size="sm" variant="outline" onClick={(e) => { judge(e, data.id, true) - toast({ - title: "Approved Measure.", - }) }}>approve</Button> <Button size="sm" variant="outline" onClick={(e) => { judge(e, data.id, false) - toast({ - title: "Rejected Measure.", - }) }}>reject</Button> </TableRow> : null diff --git a/Frontend/power-tracker/src/components/manageBuildDep.tsx b/Frontend/power-tracker/src/components/manageBuildDep.tsx index f7f502a310a327bcbda3c88078bf11351dab40ad..da2d80ce371a94a6c05983f5052a23cb203b206e 100644 --- a/Frontend/power-tracker/src/components/manageBuildDep.tsx +++ b/Frontend/power-tracker/src/components/manageBuildDep.tsx @@ -159,6 +159,21 @@ const addBuilding = (e: React.FormEvent<HTMLFormElement>, buildingName: string) }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => ({ + ...prevState, + buildingDepartmentData: [ + ...prevState.buildingDepartmentData, + { + building: { + name: buildingNameInput + }, + departments: [] + } + ] + })); + toast({ + title: "Added Building.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -184,6 +199,22 @@ const addDepartment = ( buildingName: string, departmentName: string) => { }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => ({ + buildingDepartmentData: prevState.buildingDepartmentData.map(item => { + if (item.building.name === buildingName) { + return { + ...item, + departments: [...item.departments, { name: departmentName }] + }; + } else { + return item; + } + }) + })); + + toast({ + title: "Added Department.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -211,6 +242,31 @@ const editBuilding= ( oldBuildingName: string, newBuildingName: string) => { }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => { + const existingBuildingIndex = prevState.buildingDepartmentData.findIndex(item => item.building.name === oldBuildingName); + + if (existingBuildingIndex !== -1) { + const updatedBuildingDepartmentData = [...prevState.buildingDepartmentData]; + updatedBuildingDepartmentData[existingBuildingIndex] = { + ...prevState.buildingDepartmentData[existingBuildingIndex], + building: { + ...prevState.buildingDepartmentData[existingBuildingIndex].building, + name: newBuildingName + }, + + }; + return { + ...prevState, + buildingDepartmentData: updatedBuildingDepartmentData + }; + } else { + return prevState; + } + }); + toast({ + title: "Edited Building.", + }) + }).catch((error) => { console.log(error) setOpen(true) @@ -237,6 +293,28 @@ const editDepartment= ( oldDepartmentName: string, newDepartmentName: string, bu }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => { + return { + ...prevState, + buildingDepartmentData: prevState.buildingDepartmentData.map(item => { + if (item.building.name === buildingName) { + const departmentIndex = item.departments.findIndex(department => department.name === oldDepartmentName); + if (departmentIndex !== -1) { + const updatedDepartments = [...item.departments]; + updatedDepartments[departmentIndex] = { name: newDepartmentName }; + return { + ...item, + departments: updatedDepartments + }; + } + } + return item; + }) + }; + }); + toast({ + title: "Edited Department.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -264,12 +342,18 @@ const deleteBuilding = ( name: string) => { }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => ({ + buildingDepartmentData: prevState.buildingDepartmentData.filter(item => item.building.name !== name) + })); + toast({ + title: "Deleted Building.", + }) }).catch((error) => { console.log(error) setOpen(true) }) } -const deleteDepartment= ( name: string) => { +const deleteDepartment= ( name: string, buildName: string) => { var token: string = "" @@ -290,6 +374,22 @@ const deleteDepartment= ( name: string) => { }) .then((res)=>{ console.log(res.data) + setBuildDepData(prevState => ({ + buildingDepartmentData: prevState.buildingDepartmentData.map(item => { + if (item.building.name === buildName) { + const updatedDepartments = item.departments.filter(dept => dept.name !== name); + return { + ...item, + departments: updatedDepartments + }; + } else { + return item; + } + }) + })); + toast({ + title: "Deleted Department.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -445,24 +545,7 @@ interface DisplayBuildingDepartmentDataProps extends ManagePopup { <AlertDialogFooter> <AlertDialogAction> <Button - type="submit" - onClick={() => { - setBuildDepData(prevState => ({ - ...prevState, - buildingDepartmentData: [ - ...prevState.buildingDepartmentData, - { - building: { - name: buildingNameInput - }, - departments: [] - } - ] - })); - toast({ - title: "Added Building.", - }) - }}>Submit + type="submit" >Submit </Button> </AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> @@ -499,12 +582,7 @@ interface DisplayBuildingDepartmentDataProps extends ManagePopup { <form onSubmit={(e)=>{e.preventDefault();editBuilding(buildDep.building.name, buildingNameInput); setBuildingNameInput("")}}> <Input className="mb-[20px]" type="text" placeholder="Buidling Name" value={buildingNameInput} onChange={(event) => setBuildingNameInput(event.target.value)} required/> <AlertDialogAction - type='submit' - onClick={() => { - toast({ - title: "Edited Building.", - }) - }}>Confirm + type='submit' >Confirm </AlertDialogAction> <AlertDialogCancel onClick={()=>{setBuildingNameInput("")}}>Cancel</AlertDialogCancel> </form> @@ -518,10 +596,7 @@ interface DisplayBuildingDepartmentDataProps extends ManagePopup { <AlertDialogHeader>Are you sure about deleting {buildDep.building.name} and all its machines and departments?</AlertDialogHeader> <AlertDialogAction onClick={()=> { - deleteBuilding(buildDep.building.name); - toast({ - title: "Deleted Building.", - })}}>DELETE + deleteBuilding(buildDep.building.name); }}>DELETE </AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogContent> @@ -637,7 +712,7 @@ interface DisplayBuildingDepartmentDataProps extends ManagePopup { {/* Delete Department Window */} <AlertDialogContent> <AlertDialogHeader>Are you sure about deleting {department.name}? This will remove it from alle machines that has this department.</AlertDialogHeader> - <AlertDialogAction onClick={()=>deleteDepartment(department.name)}>DELETE</AlertDialogAction> + <AlertDialogAction onClick={()=>deleteDepartment(department.name, buildDep.building.name)}>DELETE</AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogContent> </AlertDialog> diff --git a/Frontend/power-tracker/src/components/manageGateway.tsx b/Frontend/power-tracker/src/components/manageGateway.tsx index 507751d8b80f7aa74fc0ded4488b5cdae7b21167..ade839a251f0619b9207b1afb335063d9ee0748a 100644 --- a/Frontend/power-tracker/src/components/manageGateway.tsx +++ b/Frontend/power-tracker/src/components/manageGateway.tsx @@ -85,6 +85,19 @@ const addGateway = ( euiI: string, nameI: string) => { }) .then((res)=>{ console.log(res.data) + setGatewayData(prevState => ({ + ...prevState, + gateway: [ + ...prevState.gateway, + { + eui_gate: euiI, + name: nameI, + } + ] + })); + toast({ + title: "Added Gateway!", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -113,6 +126,23 @@ const editGateway= ( eui: string, oldEui: string, name: string, oldName: string) }) .then((res)=>{ console.log(res.data) + setGatewayData(prevState => ({ + ...prevState, + gateway: prevState.gateway.map(item => { + if (item.eui_gate === oldEui) { + return { + ...item, + eui_gate: eui, + name: name + }; + } else { + return item; + } + }) + })); + toast({ + title: "Edited Gateway.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -139,6 +169,13 @@ const deleteGateway = ( eui: string) => { }) .then((res)=>{ console.log(res.data) + setGatewayData(prevState => ({ + ...prevState, + gateway: prevState.gateway.filter(item => item.eui_gate !== eui) + })); + toast({ + title: "Deleted Gateway.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -221,12 +258,7 @@ async function fetchDataGateway(): Promise<Gateway[]> { <br/> <br/> <AlertDialogFooter> <AlertDialogAction - type='submit' - onClick={ ()=>{ - toast({ - title: "Added Gateway!", - }) - }}> + type='submit'> Submit gateway! </AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> @@ -265,11 +297,7 @@ async function fetchDataGateway(): Promise<Gateway[]> { <Input className="mb-[20px]" type="text" placeholder="EUI" value={euiInput} onChange={(event) => setEuiInput(event.target.value)} required/> <label>Name</label> <Input className="mb-[20px]" type="text" placeholder="Name" value={nameInput} onChange={(event) => setNameInput(event.target.value)} required/> - <AlertDialogAction type='submit' onClick={() => { - toast({ - title: "Edited Gateway.", - }) - }}>Confirm</AlertDialogAction> + <AlertDialogAction type='submit'>Confirm</AlertDialogAction> <AlertDialogCancel onClick={()=>{setEuiInput(""); setNameInput("");}}>Cancel</AlertDialogCancel> </form> </AlertDialogContent> @@ -283,9 +311,6 @@ async function fetchDataGateway(): Promise<Gateway[]> { <AlertDialogAction onClick={()=>{ deleteGateway(gates.eui_gate); - toast({ - title: "Deleted Gateway.", - }) }}>DELETE </AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> diff --git a/Frontend/power-tracker/src/components/manageProcesses.tsx b/Frontend/power-tracker/src/components/manageProcesses.tsx index 72d621ec73cafabe773af4cdd4973fd6fa2a3908..0e2bfa5fa87be6341143ad7c311c84628bfcaa9e 100644 --- a/Frontend/power-tracker/src/components/manageProcesses.tsx +++ b/Frontend/power-tracker/src/components/manageProcesses.tsx @@ -204,6 +204,20 @@ const ManageProcesses = () => { } ).then((res) => { console.log(res.data) + setProcessData(prevState => ({ + ...prevState, + process: [ + ...prevState.process, + { + id: prevState.process.length + 1, + name: name, + description: description + } + ] + })); + toast({ + title: "Added Process.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -275,6 +289,9 @@ const ManageProcesses = () => { } ).then((res) => { console.log(res.data) + toast({ + title: "Added selected machine(s) to process.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -300,6 +317,23 @@ const ManageProcesses = () => { } ).then((res) => { console.log(res.data) + setProcessData(prevState => ({ + ...prevState, + process: prevState.process.map(item => { + if (item.name === oldName && item.description === oldDescription) { + return { + ...item, + name: newName, + description: newDescription, + }; + } else { + return item; + } + }) + })); + toast({ + title: "Edited Process.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -326,6 +360,12 @@ const ManageProcesses = () => { } ).then((res) => { console.log(res.data) + setProcessData(prevState => ({ + process: prevState.process.filter(item => item.name !== name && item.description != description) + })); + toast({ + title: "Deleted Process.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -444,22 +484,7 @@ const ManageProcesses = () => { <br/><br/> <AlertDialogFooter> <AlertDialogAction> - <Button type='submit' onClick={() => { - setProcessData(prevState => ({ - ...prevState, - process: [ - ...prevState.process, - { - id: 0, - name: nameInput, - description: descriptionInput - } - ] - })); - toast({ - title: "Added Process.", - }) - }}>Submit Process!</Button> + <Button type='submit'>Submit Process!</Button> </AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogFooter> @@ -494,11 +519,7 @@ const ManageProcesses = () => { <Input className="mb-[20px]" type="text" placeholder="Process Name" value={text} onChange={(event) => setText(event.target.value)} required/> <label>Description</label> <Input className="mb-[20px]" type="text" placeholder="Description" value={desc} onChange={(event) => setDesc(event.target.value)} required/> - <AlertDialogAction type='submit' onClick={ ()=>{ - toast({ - title: "Edited Process.", - }) - }}>Confirm</AlertDialogAction> + <AlertDialogAction type='submit'>Confirm</AlertDialogAction> <AlertDialogCancel onClick={()=>{setText(""); setDesc("");}}>Cancel</AlertDialogCancel> </form> </AlertDialogContent> @@ -512,10 +533,7 @@ const ManageProcesses = () => { <AlertDialogContent> <AlertDialogHeader>Are you sure about deleting {process.name}?</AlertDialogHeader> <AlertDialogAction onClick={()=>{ - deleteProcess(process.name, process.description); - toast({ - title: "Deleted Process.", - })}}>DELETE</AlertDialogAction> + deleteProcess(process.name, process.description);}}>DELETE</AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogContent> </AlertDialog> @@ -580,10 +598,7 @@ const ManageProcesses = () => { <AlertDialogFooter> <AlertDialogAction type='submit' onClick={()=>{ handleSave2(processMachineData, processMachineData2, processDropDownId); - console.log(processDropDownId); - toast({ - title: "Added selected machine(s) to process.", - })}}>Save</AlertDialogAction> + }}>Save</AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogFooter> </AlertDialogContent> diff --git a/Frontend/power-tracker/src/pages/ManageSensors.tsx b/Frontend/power-tracker/src/pages/ManageSensors.tsx index cd8967f546d5589e44afe33f8b46bca171c51d32..31b71298623f4d374149993c2838a47145f0bcc5 100644 --- a/Frontend/power-tracker/src/pages/ManageSensors.tsx +++ b/Frontend/power-tracker/src/pages/ManageSensors.tsx @@ -98,8 +98,6 @@ function ManageSensors() { // function for adding new sensor function onSubmit(values: z.infer<typeof m_schema>) { - console.log("WORKS", values) - var token: string = "" var tokenBool = sessionStorage.getItem("TOKEN") if (tokenBool == null) { @@ -122,6 +120,24 @@ function ManageSensors() { }) .then((res)=>{ console.log(res.data) + setSensorData(prevState => ({ + ...prevState, + sensor: [ + ...prevState.sensor, + { + eui: values.eui, + machine_name: values.name, + expected_use: values.euse, + machineNr: values.nr, + building_name: values.building, + department_name: values.dept, + voltage: values.voltage + } + ] + })); + toast({ + title: "Added Machine." + }) }).catch((error) => { console.log(error) setOpen(true) @@ -138,13 +154,13 @@ function ManageSensors() { } else { token = tokenBool } - var euse; + var euse: number; if(values.euse == undefined || values.euse == null){ euse=0 }else{ euse=values.euse } - var volt; + var volt: number; if(values.voltage == undefined || values.voltage == null){ volt=1 }else{ @@ -164,6 +180,28 @@ function ManageSensors() { }) .then((res)=>{ console.log(res.data) + setSensorData(prevState => ({ + ...prevState, + sensor: prevState.sensor.map(item => { + if (item.eui === values.eui) { + return { + ...item, + eui: values.eui, + machine_name: values.name, + expected_use: values.euse, + machineNr: values.nr, + building_name: values.building, + department_name: values.dept, + voltage: values.voltage + }; + } else { + return item; + } + }) + })); + toast({ + title: "Edited Machine.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -330,6 +368,12 @@ function ManageSensors() { }) .then((res)=>{ console.log(res.data) + setSensorData(prevState => ({ + sensor: prevState.sensor.filter(item => item.eui !== eui) + })); + toast({ + title: "Deleted Machine.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -542,12 +586,7 @@ function ManageSensors() { )} /> <br/> <AlertDialogFooter> - <AlertDialogAction type='submit' onClick={()=>{ - toast({ - title: "Added Machine." - }) - } - }>Done</AlertDialogAction> + <AlertDialogAction type='submit' >Done</AlertDialogAction> <AlertDialogCancel onClick={()=>form.reset()}> Cancel </AlertDialogCancel> @@ -826,9 +865,6 @@ function ManageSensors() { /> <br/> <AlertDialogFooter> <AlertDialogAction type='submit' onClick={()=>{ - toast({ - title: "Edited Machine." - }) if (form.getValues().eui === undefined) { form.setValue("eui", machine.eui); } @@ -866,9 +902,6 @@ function ManageSensors() { <AlertDialogDescription>Do you want to delete {machine.eui} - {machine.machine_name} ?</AlertDialogDescription> <AlertDialogAction onClick={() => { deleteSensor(machine.eui); - toast({ - title: "Deleted Machine" - }) }}>DELETE</AlertDialogAction> <AlertDialogCancel onClick={()=>{form.reset()}}>Cancel</AlertDialogCancel> </AlertDialogContent> diff --git a/Frontend/power-tracker/src/pages/adminUserConfig.tsx b/Frontend/power-tracker/src/pages/adminUserConfig.tsx index 0e24d68345e45f2961f9ceceddf2d6f94a1d4c51..22679288ef75a4ed696e3fdc41e725acf318b986 100644 --- a/Frontend/power-tracker/src/pages/adminUserConfig.tsx +++ b/Frontend/power-tracker/src/pages/adminUserConfig.tsx @@ -166,6 +166,23 @@ const addUser = ( firstName: string, lastName: string, email: string, password: }) .then((res)=>{ console.log(res.data) + setUserData(prevState => ({ + ...prevState, + Users: [ + ...prevState.Users, + { + id: prevState.Users.length + 1, + email: email, + FirstName: firstName, + LastName: lastName, + password: password, + permission: permission + } + ] + })); + toast({ + title: "Added User.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -197,6 +214,26 @@ const editUser = ( id: number, firstName: string, lastName: string, email: strin }) .then((res)=>{ console.log(res.data) + setUserData(prevState => ({ + ...prevState, + Users: prevState.Users.map(user => { + if (user.id === id) { + return { + ...user, + email: email, + FirstName: firstName, + LastName: lastName, + password: password, + permission: permission + }; + } else { + return user; + } + }) + })); + toast({ + title: "Edited User.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -222,6 +259,13 @@ const deleteUser = ( id: number) => { }) .then((res)=>{ console.log(res.data) + setUserData(prevState => ({ + ...prevState, + Users: prevState.Users.filter(user => user.id !== id) + })); + toast({ + title: "Deleted Gateway.", + }) }).catch((error) => { console.log(error) setOpen(true) @@ -425,11 +469,7 @@ interface ManageUsersProps { /> <br/> <AlertDialogFooter> - <AlertDialogAction type="submit" onClick={()=>{ - toast({ - title: "Added User.", - }) - }}>Submit</AlertDialogAction> + <AlertDialogAction type="submit">Submit</AlertDialogAction> <AlertDialogCancel onClick={()=>{form.reset()}}>Cancel</AlertDialogCancel> </AlertDialogFooter> </form> @@ -606,9 +646,6 @@ interface ManageUsersProps { if (form.getValues().permission === undefined) { form.setValue("permission", user.permission); } - toast({ - title: "Edited User.", - }) }}>Done</AlertDialogAction> <AlertDialogCancel onClick={()=>{form.reset}}>Cancel</AlertDialogCancel> </AlertDialogFooter> @@ -625,9 +662,6 @@ interface ManageUsersProps { <AlertDialogDescription>Do you want to delete {user.FirstName + " " + user.LastName}?</AlertDialogDescription> <AlertDialogAction onClick={() => { deleteUser(user.id); - toast({ - title: "Deleted User.", - }) }}>DELETE</AlertDialogAction> <AlertDialogCancel>Cancel</AlertDialogCancel> </AlertDialogContent>