{
sx={{ mt: 3 }}
>
- Don't have an account? ask one for us at
- Github
-
+ You can use demo@gmail.com and password demo
diff --git a/frontend/src/sections/devices/devices-discovery.js b/frontend/src/sections/devices/devices-discovery.js
index 88b9c9b..882b67c 100644
--- a/frontend/src/sections/devices/devices-discovery.js
+++ b/frontend/src/sections/devices/devices-discovery.js
@@ -14,13 +14,95 @@ import PlusCircleIcon from '@heroicons/react/24/outline/PlusCircleIcon';
import ArrowUturnLeftIcon from '@heroicons/react/24/outline/ArrowUturnLeftIcon'
import { useRouter } from 'next/router';
+function ShowParamsWithValues({x, deviceParametersValue}) {
+ console.log("estoy aqui")
+ let paths = x.supported_obj_path.split(".")
+ console.log(paths)
+ if(paths[paths.length -2] == "{i}"){
+ return Object.keys(deviceParametersValue).map((paramKey, h)=>{
+ return (
+
+
+ {paramKey}}
+ sx={{fontWeight:'bold'}}
+ />
+
+ {deviceParametersValue[paramKey].map((param, i) => {
+ console.log("opa")
+ return (
+
+
+ {Object.values(param)[0]}
+
+ }
+ >
+
+
+
+ )
+ })}
+
+ )
+ })
+ }else{
+ return x.supported_params.map((y, index)=>{
+ return (
+
+
+ {deviceParametersValue[y.param_name]}
+
+ }
+ >
+
+
+
)
+ })
+ }
+}
export const DevicesDiscovery = () => {
const router = useRouter()
const [deviceParameters, setDeviceParameters] = useState(null)
-const [deviceParametersValue, setDeviceParametersValue] = useState([])
+const [deviceParametersValue, setDeviceParametersValue] = useState({})
const initialize = async (raw) => {
let content = await getDeviceParameters(raw)
@@ -47,6 +129,27 @@ const getDeviceParameters = async (raw) =>{
}
}
+const getDeviceParameterInstances = 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]}/instances`, requestOptions))
+ if (result.status != 200) {
+ throw new Error('Please check your email and password');
+ }else{
+ return result.json()
+ }
+}
+
+
useEffect(()=> {
initialize(
@@ -82,9 +185,95 @@ const getDeviceParameters = async (raw) =>{
// )
// })
// }
+ // Multi instance not used, found better way to get values
+ const updateDeviceParametersMultiInstance = async (param) =>{
+ console.log("UpdateDeviceParametersMultiInstance => param = ", param)
+
+ let raw = JSON.stringify({
+ "obj_paths": [param],
+ "first_level_only" : true,
+ "return_commands" : true,
+ "return_events" : true,
+ "return_params" : true
+ })
+
+ let response = await getDeviceParameterInstances(raw)
+ console.log("response:", response)
+
+ let instancesToGet = []
+ if (response.req_path_results[0].curr_insts) {
+ let supportedParams = response.req_path_results[0].curr_insts
+ let instances = () => {
+ for (let i =0; i < supportedParams.length ;i++){
+ instancesToGet.push(supportedParams[i].instantiated_obj_path)
+ }
+ }
+ instances()
+ }else{
+ instancesToGet.push(response.req_path_results[0].requested_path)
+ }
+
+ let rawInP = JSON.stringify({
+ "obj_paths": instancesToGet,
+ "first_level_only" : true,
+ "return_commands" : true,
+ "return_events" : true,
+ "return_params" : true
+ })
+
+ let resultParams = await getDeviceParameters(rawInP)
+ console.log("result params:", resultParams)
+ setDeviceParameters(resultParams)
+
+
+ let paramsToFetch = []
+
+ // console.log("parameters to fetch: ", paramsToFetch)
+
+ // let rawV = JSON.stringify({
+ // "param_paths": paramsToFetch,
+ // "max_depth": 1
+ // })
+
+ // let resultValues = await getDeviceParametersValue(rawV)
+ // console.log("result values:", resultValues)
+
+
+ // let rawP = JSON.stringify({
+ // "obj_paths": paramsToFetch,
+ // "first_level_only" : true,
+ // "return_commands" : true,
+ // "return_events" : true,
+ // "return_params" : true
+ // })
+
+ // let resultParams = await getDeviceParameters(rawP)
+ // console.log("result params:", resultParams)
+
+ // let values = {}
+ // let setvalues = () => {resultValues.req_path_results.map((x)=>{
+ // // let path = x.requested_path.split(".")
+ // // let param = path[path.length -1]
+ // if (!x.resolved_path_results){
+ // return
+ // }
+ // x.resolved_path_results.map((y)=> {
+
+ // })
+ // // Object.keys(x.resolved_path_results[0].result_params).forEach((key, index) =>{
+ // // values[key] = x.resolved_path_results[0].result_params[key]
+ // // })
+ // return values
+ // })}
+ // setvalues()
+ // console.log("values:",values)
+
+ // setDeviceParameters(resultParams)
+ // setDeviceParametersValue(values)
+ }
const updateDeviceParameters = async (param) => {
-
+ console.log("UpdateDeviceParameters => param = ", param)
let raw = JSON.stringify({
"obj_paths": [param],
"first_level_only" : true,
@@ -97,13 +286,12 @@ const getDeviceParameters = async (raw) =>{
console.log("content:",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)
+ let supported_obj_path = content.req_obj_results[0].supported_objs[0].supported_obj_path.replaceAll("{i}","*")
+ paramsToFetch.push(supported_obj_path+supportedParams[i].param_name)
}
return paramsToFetch
}
@@ -120,14 +308,58 @@ const getDeviceParameters = async (raw) =>{
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])
- })
+ let values = {}
+ // let setvalues = () => {resultValues.req_path_results.map((x)=>{
+ // // let path = x.requested_path.split(".")
+ // // let param = path[path.length -1]
+ // if (!x.resolved_path_results){
+ // return
+ // }
+
+ // Object.keys(x.resolved_path_results[0].result_params).forEach((key, index) =>{
+ // values[key] = x.resolved_path_results[0].result_params[key]
+ // })
+ // return values
+ // })}
+ // setvalues()
+
+ let setvalues = () => {result.req_path_results.map((x)=>{
+ if (!x.resolved_path_results){
+ return
+ }
+
+ let paths = x.requested_path.split(".")
+ if(paths[paths.length -2] == "*"){
+ x.resolved_path_results.map(y=>{
+ if (values[y.resolved_path]){
+ values[y.resolved_path].push(y.result_params)
+ }else{
+ values[y.resolved_path] = []
+ values[y.resolved_path].push(y.result_params)
+ }
+ // Object.keys(y.result_params).forEach((key, index) =>{
+ // if (values[y.resolved_path]){
+ // values[y.resolved_path].push(y.result_params)
+ // }else{
+ // values[y.resolved_path] = []
+ // values[y.resolved_path].push(y.result_params)
+ // }
+ // })
+ })
+ }else{
+ Object.keys(x.resolved_path_results[0].result_params).forEach((key, index) =>{
+ values[key] = x.resolved_path_results[0].result_params[key]
+ })
+ }
+
+ return values
+ })}
+ setvalues()
console.log(values)
setDeviceParametersValue(values)
+ setDeviceParameters(content)
+ }else{
+ setDeviceParameters(content)
}
}
@@ -154,117 +386,139 @@ const getDeviceParameters = async (raw) =>{
}
const showParameters = () => {
- return deviceParameters.req_obj_results[0].supported_objs.map((x,i)=> {
- return (
-
-
- {
- let paths = x.supported_obj_path.split(".")
- console.log(paths)
- updateDeviceParameters(paths[paths.length -3]+".")
- }
- }>
-
-
-
-
- :
- updateDeviceParameters(x.supported_obj_path)}>
-
- {
- x.supported_obj_path != "Device." &&
-
- }
-
-
+ return deviceParameters.req_obj_results.map((a,b)=>{
+ return a.supported_objs.map((x,i)=> {
+
+ let supported_obj_path = x.supported_obj_path.split(".")
+ let supportedObjPath = ""
+
+ supported_obj_path.map((x,i)=>{
+ if(i !== supported_obj_path.length -2){
+ supportedObjPath = supportedObjPath + x + "."
+ }
+ })
+
+ let req_obj_path = a.req_obj_path.split(".")
+ let reqObjPath = ""
+
+ req_obj_path.map((x,i)=>{
+ if(i !== req_obj_path.length -2){
+ reqObjPath = reqObjPath + x + "."
+ }
+ })
+
+ // console.log("reqObjPath:", reqObjPath)
+ // console.log("supportedObjPath:", supportedObjPath)
+
+ let paramName = x.supported_obj_path
+ if (supportedObjPath != "Device.."){
+ if (supportedObjPath == reqObjPath){
+ paramName = a.req_obj_path
}
- sx={{
- boxShadow: 'rgba(149, 157, 165, 0.2) 0px 0px 5px;'
- }}
- >
- {x.supported_obj_path}}
- sx={{fontWeight:'bold'}}
- />
-
- { x.supported_params &&
- x.supported_params.map((y, index)=>{
- return
- {deviceParametersValue[index]}
- }
- >
-
-
-
- })
}
- { x.supported_commands &&
- x.supported_commands.map((y)=>{
- return
-
-
-
-
- })
- }
- { x.supported_events &&
- x.supported_events.map((y)=>{
- return
-
-
-
-
- })
- }
-
)
+
+ return (
+
+
+ {
+ let supported_obj_path = x.supported_obj_path.replaceAll("{i}.","*.")
+ let paths = supported_obj_path.split(".")
+ console.log("paths:",paths)
+
+ let pathsToJump = 2
+ if (paths[paths.length -2] == "*"){
+ pathsToJump = 3
+ }
+
+ paths.splice(paths.length - pathsToJump, pathsToJump)
+ let pathToFetch = paths.join(".")
+
+ updateDeviceParameters(pathToFetch)
+ }
+ }>
+
+
+
+
+ :
+ {
+ console.log("x.supported_obj_path:",x.supported_obj_path)
+ let supported_obj_path = x.supported_obj_path.replaceAll("{i}.","*.")
+ updateDeviceParameters(supported_obj_path)
+ }}>
+
+ {
+ x.supported_obj_path != "Device." &&
+
+ }
+
+
+ }
+ sx={{
+ boxShadow: 'rgba(149, 157, 165, 0.2) 0px 0px 5px;'
+ }}
+ >
+ {paramName}}
+ sx={{fontWeight:'bold'}}
+ />
+
+ { x.supported_params &&
+
+ }
+ { x.supported_commands &&
+ x.supported_commands.map((y)=>{
+ return
+
+
+
+
+ })
+ }
+ { x.supported_events &&
+ x.supported_events.map((y)=>{
+ return
+
+
+
+
+ })
+ }
+
)
+ })
})
}