feat( params discovery ): get params value

This commit is contained in:
Leandro Antônio Farias Machado 2023-09-04 23:03:17 -03:00
parent f866222b8d
commit 9b87096a33

View File

@ -7,16 +7,11 @@ import {
List, List,
ListItem, ListItem,
ListItemText, ListItemText,
Collapse,
Box, Box,
Tabs,
Tab,
ListItemIcon,
ListItemAvatar,
Avatar
} from '@mui/material'; } from '@mui/material';
import CircularProgress from '@mui/material/CircularProgress'; import CircularProgress from '@mui/material/CircularProgress';
import PlusCircleIcon from '@heroicons/react/24/outline/PlusCircleIcon'; import PlusCircleIcon from '@heroicons/react/24/outline/PlusCircleIcon';
import ArrowUturnLeftIcon from '@heroicons/react/24/outline/ArrowUturnLeftIcon'
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
@ -25,6 +20,7 @@ export const DevicesDiscovery = () => {
const router = useRouter() const router = useRouter()
const [deviceParameters, setDeviceParameters] = useState(null) const [deviceParameters, setDeviceParameters] = useState(null)
const [deviceParametersValue, setDeviceParametersValue] = useState([])
const initialize = async (raw) => { const initialize = async (raw) => {
let content = await getDeviceParameters(raw) let content = await getDeviceParameters(raw)
@ -57,8 +53,8 @@ const getDeviceParameters = async (raw) =>{
JSON.stringify({ JSON.stringify({
"obj_paths": ["Device."], "obj_paths": ["Device."],
"first_level_only" : true, "first_level_only" : true,
"return_commands" : false, "return_commands" : true,
"return_events" : false, "return_events" : true,
"return_params" : true "return_params" : true
}) })
); );
@ -99,13 +95,65 @@ const getDeviceParameters = async (raw) =>{
let content = await getDeviceParameters(raw) let content = await getDeviceParameters(raw)
console.log(content) console.log("content:",content)
setDeviceParameters(content) setDeviceParameters(content)
let supportedParams = content.req_obj_results[0].supported_objs[0].supported_params
let parametersToFetch = () => {
let paramsToFetch = []
for (let i =0; i < supportedParams.length ;i++){
paramsToFetch.push(content.req_obj_results[0].supported_objs[0].supported_obj_path+supportedParams[i].param_name)
}
return paramsToFetch
}
if (supportedParams !== undefined) {
const fetchparameters = parametersToFetch()
console.log("parameters to fetch: ", fetchparameters)
raw = JSON.stringify({
"param_paths": fetchparameters,
"max_depth": 1
})
let result = await getDeviceParametersValue(raw)
console.log("result:", result)
let values = []
let setValues = result.req_path_results.map((x)=>{
let path = x.requested_path.split(".")
let param = path[path.length -1]
return values.push(x.resolved_path_results[0].result_params[param])
})
console.log(values)
setDeviceParametersValue(values)
}
}
const getDeviceParametersValue = async (raw) => {
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", localStorage.getItem("token"));
var requestOptions = {
method: 'PUT',
headers: myHeaders,
redirect: 'follow',
body: raw
};
let result = await (await fetch(`${process.env.NEXT_PUBLIC_REST_ENPOINT}/device/${router.query.id[0]}/get`, requestOptions))
if (result.status != 200) {
throw new Error('Please check your email and password');
}else{
return result.json()
}
} }
const showParameters = () => { const showParameters = () => {
console.log(deviceParameters)
return deviceParameters.req_obj_results[0].supported_objs.map((x,i)=> { return deviceParameters.req_obj_results[0].supported_objs.map((x,i)=> {
return ( return (
<List dense={true} key={x.supported_obj_path}> <List dense={true} key={x.supported_obj_path}>
@ -113,9 +161,25 @@ const getDeviceParameters = async (raw) =>{
key={x.supported_obj_path} key={x.supported_obj_path}
divider={true} divider={true}
secondaryAction={ secondaryAction={
i == 0 && x.supported_obj_path != "Device." ?
<IconButton onClick={()=>
{
let paths = x.supported_obj_path.split(".")
console.log(paths)
updateDeviceParameters(paths[paths.length -3]+".")
}
}>
<SvgIcon>
<ArrowUturnLeftIcon></ArrowUturnLeftIcon>
</SvgIcon>
</IconButton>
:
<IconButton onClick={()=>updateDeviceParameters(x.supported_obj_path)}> <IconButton onClick={()=>updateDeviceParameters(x.supported_obj_path)}>
<SvgIcon> <SvgIcon>
{
x.supported_obj_path != "Device." &&
<PlusCircleIcon></PlusCircleIcon> <PlusCircleIcon></PlusCircleIcon>
}
</SvgIcon> </SvgIcon>
</IconButton> </IconButton>
} }
@ -129,7 +193,7 @@ const getDeviceParameters = async (raw) =>{
/> />
</ListItem> </ListItem>
{ x.supported_params && { x.supported_params &&
x.supported_params.map((y)=>{ x.supported_params.map((y, index)=>{
return <List return <List
component="div" component="div"
disablePadding disablePadding
@ -143,6 +207,9 @@ const getDeviceParameters = async (raw) =>{
boxShadow: 'rgba(149, 157, 165, 0.2) 0px 0px 5px;', boxShadow: 'rgba(149, 157, 165, 0.2) 0px 0px 5px;',
pl: 4 pl: 4
}} }}
secondaryAction={
<div>{deviceParametersValue[index]}</div>
}
> >
<ListItemText <ListItemText
primary={y.param_name} primary={y.param_name}