mirror of
https://github.com/optim-enterprises-bv/OptimCloud-gw-ui.git
synced 2025-11-02 03:07:46 +00:00
Larger commands and more info
This commit is contained in:
@@ -25,6 +25,7 @@ const DeviceCommands = ({ selectedDeviceId }) => {
|
|||||||
const [scanDate, setScanDate] = useState('');
|
const [scanDate, setScanDate] = useState('');
|
||||||
const [collapse, setCollapse] = useState(false);
|
const [collapse, setCollapse] = useState(false);
|
||||||
const [details, setDetails] = useState([]);
|
const [details, setDetails] = useState([]);
|
||||||
|
const [responses, setResponses] = useState([]);
|
||||||
const [commands, setCommands] = useState([]);
|
const [commands, setCommands] = useState([]);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [start, setStart] = useState(addDays(new Date(), -3).toString());
|
const [start, setStart] = useState(addDays(new Date(), -3).toString());
|
||||||
@@ -91,6 +92,18 @@ const DeviceCommands = ({ selectedDeviceId }) => {
|
|||||||
setShowModal(true);
|
setShowModal(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const toggleResponse = (item, index) => {
|
||||||
|
const position = responses.indexOf(index);
|
||||||
|
let newResponses = responses.slice();
|
||||||
|
|
||||||
|
if (position !== -1) {
|
||||||
|
newResponses.splice(position, 1);
|
||||||
|
} else {
|
||||||
|
newResponses = [...newResponses, index];
|
||||||
|
}
|
||||||
|
setResponses(newResponses);
|
||||||
|
};
|
||||||
|
|
||||||
const refreshCommands = () => {
|
const refreshCommands = () => {
|
||||||
setEnd(new Date());
|
setEnd(new Date());
|
||||||
@@ -107,13 +120,28 @@ const DeviceCommands = ({ selectedDeviceId }) => {
|
|||||||
|
|
||||||
return <pre className="ignore">{JSON.stringify(commandDetails, null, 4)}</pre>;
|
return <pre className="ignore">{JSON.stringify(commandDetails, null, 4)}</pre>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getResponse = (command, commandDetails, index) => {
|
||||||
|
if(!responses.includes(index)){
|
||||||
|
return <pre className="ignore"/>
|
||||||
|
}
|
||||||
|
return <pre className="ignore">{JSON.stringify(commandDetails, null, 4)}</pre>;
|
||||||
|
};
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{ key: 'UUID', label: 'Id' },
|
{ key: 'UUID', label: 'Id' },
|
||||||
{ key: 'command' },
|
{ key: 'command' },
|
||||||
{ key: 'completed' },
|
{ key: 'completed', filter: false },
|
||||||
{
|
{
|
||||||
key: 'show_details',
|
key: 'show_details',
|
||||||
label: '',
|
label: 'Result',
|
||||||
|
_style: { width: '1%' },
|
||||||
|
sorter: false,
|
||||||
|
filter: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'show_response',
|
||||||
|
label: 'Details',
|
||||||
_style: { width: '1%' },
|
_style: { width: '1%' },
|
||||||
sorter: false,
|
sorter: false,
|
||||||
filter: false,
|
filter: false,
|
||||||
@@ -180,13 +208,15 @@ const DeviceCommands = ({ selectedDeviceId }) => {
|
|||||||
</CCol>
|
</CCol>
|
||||||
</CRow>
|
</CRow>
|
||||||
<CCard>
|
<CCard>
|
||||||
<div className="overflow-auto" style={{ height: '250px' }}>
|
<div className="overflow-auto" style={{ height: '400px' }}>
|
||||||
<CDataTable
|
<CDataTable
|
||||||
loading={loading}
|
loading={loading}
|
||||||
items={commands ?? []}
|
items={commands ?? []}
|
||||||
fields={columns}
|
fields={columns}
|
||||||
style={{ color: 'white' }}
|
style={{ color: 'white' }}
|
||||||
border
|
border
|
||||||
|
columnFilter
|
||||||
|
sorter
|
||||||
sorterValue={{ column: 'completed', desc: 'true' }}
|
sorterValue={{ column: 'completed', desc: 'true' }}
|
||||||
scopedSlots={{
|
scopedSlots={{
|
||||||
completed: (item) => (
|
completed: (item) => (
|
||||||
@@ -211,15 +241,40 @@ const DeviceCommands = ({ selectedDeviceId }) => {
|
|||||||
</CButton>
|
</CButton>
|
||||||
</td>
|
</td>
|
||||||
),
|
),
|
||||||
|
show_response: (item, index) => (
|
||||||
|
<td className="py-2">
|
||||||
|
<CButton
|
||||||
|
color="primary"
|
||||||
|
variant={responses.includes(index) ? '' : 'outline'}
|
||||||
|
shape="square"
|
||||||
|
size="sm"
|
||||||
|
onClick={() => {
|
||||||
|
toggleResponse(item, index);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<CIcon name="cilList" size="lg" />
|
||||||
|
</CButton>
|
||||||
|
</td>
|
||||||
|
),
|
||||||
details: (item, index) => (
|
details: (item, index) => (
|
||||||
|
<div>
|
||||||
<CCollapse show={details.includes(index)}>
|
<CCollapse show={details.includes(index)}>
|
||||||
<CCardBody>
|
<CCardBody>
|
||||||
<h5>Details</h5>
|
<h5>Result</h5>
|
||||||
<div>
|
<div>
|
||||||
{getDetails(item.command, item, index)}
|
{getDetails(item.command, item, index)}
|
||||||
</div>
|
</div>
|
||||||
</CCardBody>
|
</CCardBody>
|
||||||
</CCollapse>
|
</CCollapse>
|
||||||
|
<CCollapse show={responses.includes(index)}>
|
||||||
|
<CCardBody>
|
||||||
|
<h5>Details</h5>
|
||||||
|
<div>
|
||||||
|
{getResponse(item.command, item, index)}
|
||||||
|
</div>
|
||||||
|
</CCardBody>
|
||||||
|
</CCollapse>
|
||||||
|
</div>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ const DevicePage = () => {
|
|||||||
<CRow>
|
<CRow>
|
||||||
<CCol xs="12" sm="6">
|
<CCol xs="12" sm="6">
|
||||||
<DeviceConfiguration selectedDeviceId={deviceId} />
|
<DeviceConfiguration selectedDeviceId={deviceId} />
|
||||||
<DeviceCommands selectedDeviceId={deviceId} />
|
|
||||||
</CCol>
|
</CCol>
|
||||||
<CCol xs="12" sm="6">
|
<CCol xs="12" sm="6">
|
||||||
<DeviceLogs selectedDeviceId={deviceId} />
|
<DeviceLogs selectedDeviceId={deviceId} />
|
||||||
@@ -31,6 +30,11 @@ const DevicePage = () => {
|
|||||||
<DeviceActions selectedDeviceId={deviceId} />
|
<DeviceActions selectedDeviceId={deviceId} />
|
||||||
</CCol>
|
</CCol>
|
||||||
</CRow>
|
</CRow>
|
||||||
|
<CRow>
|
||||||
|
<CCol>
|
||||||
|
<DeviceCommands selectedDeviceId={deviceId} />
|
||||||
|
</CCol>
|
||||||
|
</CRow>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user