{"version":3,"sources":["webpack:///./node_modules/@abaco/widgets-container-module/src/modules/big-data-grapes-widget/api/BigDataGrapesWidgetAPI.ts"],"names":["BigDataGrapesWidgetAPI","http","newHttp","path","this","sensor_http","farmId","lotId","getIdFromLinkedStation","linkedStationId","data","error","checkSensorType","isPessl","results","length","parsedData","msg","backendStatus","map","res","value","post","status","water_balance_prediction","detail","err","response","get","stationId","standardizedSensors","toReturn","ok","includes"],"mappings":"qNAuBqBA,G,6DAKjB,WAAYC,EAAkBC,EAAqBC,GAAY,uBAC3DC,KAAKH,KAAOA,EACZG,KAAKC,YAAcH,EACnBE,KAAKD,KAAOA,E,6GAGT,WAAoBG,EAAgBC,GAApC,qHAC2BH,KAAKI,uBAAuBF,EAAQC,GAD/D,UACGE,EADH,OAGoB,sBAAnBA,EAHD,yCAIQ,CAAEC,KAAM,KAAMC,MAAO,uBAJ7B,uBAO6BP,KAAKQ,gBAAgBN,EAAQG,GAAiB,GAP3E,mBAOKI,EAPL,EAOKA,QAASH,EAPd,EAOcA,KAEZG,EATF,0CAUQ,CAAEH,KAAM,KAAMC,MAAO,yBAV7B,WAauB,GAAvBD,EAAKI,QAAQC,OAbb,0CAcQ,CAAEL,KAAM,KAAMC,MAAO,kBAd7B,eAgBGK,EAAa,CACfC,IAAKP,EAAKO,IACVC,cAAeR,EAAKQ,cACpBJ,QAASJ,EAAKI,QAAQK,KAAI,SAAAC,GAAG,wCAAUA,GAAV,IAAeC,MAAqB,OAAdD,EAAIC,MAAiBD,EAAIC,MAAQ,QAnBrF,oBAuBmBjB,KAAKH,KAAKqB,KAAK,qDAAsDN,GAvBxF,WAuBOI,EAvBP,OAyBmB,KAAdA,EAAIG,QAAkBH,EAAIV,KAAKc,yBAzBpC,0CA0BY,CAAEd,KAAM,KAAMC,MAAOS,EAAIV,KAAKe,QAAU,yBA1BpD,iCA6BQ,CAAEf,KAAMU,EAAIV,KAAKc,yBAA0Bb,MAAO,OA7B1D,6CAgCOe,EAAM,CAACf,MAAK,MAhCnB,kBAiCQ,CAACD,KAAM,KAAMC,OAAO,UAAAe,EAAIf,aAAJ,eAAWgB,SAASjB,KAAKe,SAAzB,OAjC5B,2D,yJAqCA,WAA6BnB,EAAgBC,GAA7C,uGACeH,KAAKH,KAAK2B,IAAV,2BAAkCtB,EAAlC,kBAAkDC,EAAlD,cADf,cACGa,EADH,yBAGmB,KAAdA,EAAIG,QAAiBH,EAAIV,MAAQU,EAAIV,KAAKK,OAAS,EAAKK,EAAIV,KAAK,GAAK,sBAH3E,gD,kJAMA,WAAsBJ,EAAgBuB,EAAmBC,GAAzD,yGACe1B,KAAKC,YAAYuB,IAAjB,WAAyBxB,KAAKD,KAA9B,oBAA8CG,EAA9C,qBAAiEuB,EAAjE,wCAA0GC,IADzH,UACGV,EADH,QAGAU,EAHA,yCAIQ,CAAEjB,SAAS,EAAMH,KAAMU,EAAIV,OAJnC,cAMCqB,GAAW,EAEG,KAAdX,EAAIG,QAAiBH,EAAIV,KAAKI,SAAWM,EAAIV,KAAKQ,gBAClDa,EAAWX,EAAIV,KAAKQ,cAAcc,GAAGC,SAAS,UAT/C,kBAYI,CAAEpB,QAASkB,EAAUrB,KAAMU,EAAIV,OAZnC,gD","file":"js/chunk-2d0b1ba8.0fc5982c.js","sourcesContent":["import { HTTPClient, } from '@abaco/web-common/src/HTTP';\n\ninterface SensorResponse {\n results: SensorValue[];\n msg: null;\n backendStatus: {\n ok: string[];\n failed: any[];\n notHandled: any[];\n };\n}\n\ninterface SensorValue {\n type: string;\n stationId: string;\n id: string;\n name: string;\n unit: string;\n dataType: string;\n date: Date;\n value: 667.;\n}\n\nexport default class BigDataGrapesWidgetAPI {\n private http: HTTPClient;\n private sensor_http: HTTPClient;\n private path!: string;\n\n constructor(http: HTTPClient, newHttp: HTTPClient, path: string) {\n this.http = http;\n this.sensor_http = newHttp;\n this.path = path\n }\n\n public async getGaugeValue(farmId: number, lotId: number): Promise<{ data: number | null; error: string | null }> {\n const linkedStationId = await this.getIdFromLinkedStation(farmId, lotId)\n\n if (linkedStationId == \"no-linked-stations\") {\n return { data: null, error: \"no-linked-stations\" }\n }\n\n const { isPessl, data } = await this.checkSensorType(farmId, linkedStationId, true)\n\n if (!isPessl)\n return { data: null, error: \"sensor-type-no-pessl\" }\n\n\n if(data.results.length == 0)\n return { data: null, error: \"chart-no-data\"}\n\n const parsedData = {\n msg: data.msg,\n backendStatus: data.backendStatus,\n results: data.results.map(res => ({ ...res, value: res.value !== null ? res.value : 0.0 }))\n }\n\n try {\n const res = await this.http.post('/api/v1.0/predict_water_balance/single_observation', parsedData)\n\n if (res.status != 200 || !res.data.water_balance_prediction) {\n return { data: null, error: res.data.detail || 'cannot-get-prevision' }\n }\n\n return { data: res.data.water_balance_prediction, error: null }\n } catch (error)\n {\n const err = {error};\n return {data: null, error: err.error?.response.data.detail || error}\n }\n }\n\n public async getIdFromLinkedStation(farmId: number, lotId: number): Promise {\n const res = await this.http.get(`/iot/api/v1/farm/${farmId}/plots/${lotId}/stations`)\n\n return (res.status == 200 && res.data && res.data.length > 0) ? res.data[0] : \"no-linked-stations\"\n }\n\n public async checkSensorType(farmId: number, stationId: string, standardizedSensors: boolean): Promise<{ isPessl: boolean; data: SensorResponse }> {\n const res = await this.sensor_http.get(`/${this.path}/v1/farm/${farmId}/stations/${stationId}/sensors?standardizedSensors=${standardizedSensors}`)\n\n if(standardizedSensors)\n return { isPessl: true, data: res.data };\n\n let toReturn = false\n\n if (res.status == 200 && res.data.results && res.data.backendStatus) {\n toReturn = res.data.backendStatus.ok.includes('pessl')\n }\n\n return { isPessl: toReturn, data: res.data };\n }\n}\n"],"sourceRoot":""}