diff --git a/src/components/Tables/ACPUTable.js b/src/components/Tables/ACPUTable.js index ae840e06..90ecea34 100644 --- a/src/components/Tables/ACPUTable.js +++ b/src/components/Tables/ACPUTable.js @@ -33,6 +33,15 @@ function ACPUTable({ device, update, notify }) { const [disable, setDisable] = React.useState(true); const loadActivity = GetOptions('A45_Load'); + // Toggle handler to enable/disable ACPU fields and freeze parameters + const handleToggle = () => { + if (!device || !href) { + setDisable(true); + } else if (device && href) { + setDisable(!disable); // Toggle the fields' disable state + } + }; + function fetchPort(port, link) { server.GET(server.peripheralPath(device, `${link}/${port.href}`), (data) => { const ep = parseInt(port.href.slice(-1), 10); @@ -46,7 +55,6 @@ function ACPUTable({ device, update, notify }) { function fetchAcpuData(link) { if (link !== '') { server.GET(server.peripheralPath(device, link), (data) => { - // resolve cycling if (data.name !== acpuData.name || data.frequency !== acpuData.frequency || data.load !== acpuData.load) { @@ -56,9 +64,7 @@ function ACPUTable({ device, update, notify }) { load: data.load, }); } - setPowerData([ - ['Block Power', data.consumption.block_power, 0], - ]); + setPowerData([['Block Power', data.consumption.block_power, 0]]); data.ports.forEach((port) => fetchPort(port, link)); }); } @@ -75,7 +81,7 @@ function ACPUTable({ device, update, notify }) { function fetchData() { server.GET(server.api.fetch(server.Elem.peripherals, device), (data) => { const acpu = getPeripherals(data, 'acpu'); - setDisable(acpu.length === 0); + setDisable(true); if (acpu.length > 0) { const link = acpu[0].href; setHref(link); @@ -124,7 +130,6 @@ function ACPUTable({ device, update, notify }) { } const deleteRow = (index) => { - // no delete method for acpu. this is just clear name of the endpoint which mean disable const val = endpoints[index].data; val.name = ''; server.PATCH(server.peripheralPath(device, `${href}/ep/${endpoints[index].ep}`), val, () => fetchAcpuData(href)); @@ -147,9 +152,25 @@ function ACPUTable({ device, update, notify }) { const powerHeader = ['Power', '%']; const title = 'ACPU'; + return (
+ + {/* Toggle Switch for ACPU */} +
+ + +
+
- handleChange('name', e.target.value)} value={acpuData.name} disabled={disable} /> + handleChange('name', e.target.value)} + value={acpuData.name} + disabled={disable} // Freeze when toggle is off + />
- handleChange('frequency', e.target.value)} value={acpuData.frequency} disabled={disable} /> + handleChange('frequency', e.target.value)} + value={acpuData.frequency} + disabled={disable} // Freeze when toggle is off + />
- handleChange('load', value)} items={loadActivity} disabled={disable} /> + handleChange('load', value)} + items={loadActivity} + disabled={disable} // Freeze when toggle is off + />
+ setModalOpen(true)}> - { - endpoints.map((row, index) => ( - (row.data !== undefined && row.data.name !== '') - && ( - - - { setEditIndex(index); setModalOpen(true); }} - onDeleteClick={() => deleteRow(index)} - /> - {row.data.name} - - - - - - - ) - )) - } + {endpoints.map((row, index) => ( + row.data !== undefined && row.data.name !== '' + && ( + + + { if (!disable) { setEditIndex(index); setModalOpen(true); } }} + onDeleteClick={() => { if (!disable) { deleteRow(index); } }} + /> + {row.data.name} + + {' '} + {/* Freeze selection */} + + + + + + ) + ))} + {modalOpen && (