import React, { useEffect, useState } from "react"; import * as Location from 'expo-location'; import SocketClient from "../api/Websockets/SocketClient"; import assets from "../config/assets"; import PinIntransitavel from "../assets/floodZonesAssets/PinIntransitavel"; import PinTransitavel from "../assets/floodZonesAssets/PinTransitavel"; const custom_assets_pin = { pluviometer: assets.pluviometer_pin, officialPluviometer: assets.officialPluviometer_pin, floodZones: { passable: PinTransitavel, not_passable: PinIntransitavel, }, riverLevel: ["low_pin", "normal_pin", "high_pin", "flooding_pin"].map( (key) => { return assets.riverLevel[key]; } ), rainLevel: [ "rain_0_5_pin", "rain_1_5_pin", "rain_2_5_pin", "rain_3_5_pin", ].map((key) => { return assets.rainLevel[key]; }), }; function getImage(name, situation) { if (name == "automaticPluviometer") { return custom_assets_pin.pluviometer; } if (name == "pluviometer") { return custom_assets_pin.pluviometer; } if (name == "rain") { if (situation == "sem chuva") { return custom_assets_pin.rainLevel[0]; } else if (situation == "chuva fraca") { return custom_assets_pin.rainLevel[1]; } else if (situation == "chuva moderada") { return custom_assets_pin.rainLevel[2]; } else if (situation == "chuva forte") { return custom_assets_pin.rainLevel[3]; } return custom_assets_pin.rainLevel[3]; } if (name == "riverFlood") { if (situation == "baixo") { return custom_assets_pin.riverLevel[0]; } else if (situation == "normal") { return custom_assets_pin.riverLevel[1]; } else if (situation == "alto") { return custom_assets_pin.riverLevel[2]; } else if (situation == "inundar") { return custom_assets_pin.riverLevel[3]; } return custom_assets_pin.riverLevel[0]; } if (name == "floodZones") { if (situation == "transitavel") { return custom_assets_pin.floodZones.passable; } else { return custom_assets_pin.floodZones.not_passable; } } } function buildPolygonsObject(markers, response, name) { var coordinate = []; var formsanswersgeom = response.formsanswersgeom; const arrayCoordinates = (JSON.parse(formsanswersgeom)["coordinates"][0]); var n = Object.keys(arrayCoordinates).length; // console.log(arrayCoordinates); for (let i = 0; i < n; i++) { var lat = arrayCoordinates[i][1]; var lon = arrayCoordinates[i][0]; coordinate.push([lat, lon]); } // console.log(coordinate); var polygonObject = { ID: response.formsanswersid, name: name, title: "Titulo", //response.fieldsanswerssituation address: "Endereço",//response.fieldsanswerseventaddress, coordinate: { coordinate }, date: "data" + " | " + "hora", //response.fieldsanswerseventdate + " | " + response.fieldsanswerseventtime, description: "comentário", //response.fielsanswercomment, image: "",//getMarkerImage(answer.name), } markers.set(polygonObject.ID, polygonObject); } function buildMarkerObject(markers, response, name) { const formsanswersgeom = JSON.parse(response.formsanswersgeom)["coordinates"]; var markerObject = { ID: response.formsanswersid, name: name, title: "Titulo", //response.fieldsanswerssituation address: "Endereço",//response.fieldsanswerseventaddress, coordinate: { latitude: formsanswersgeom[1], longitude: formsanswersgeom[0], }, date: "data" + " | " + "hora", //response.fieldsanswerseventdate + " | " + response.fieldsanswerseventtime, description: "comentário", //response.fielsanswercomment, image: getImage(name, "situação"),//getMarkerImage(answer.name), } markers.set(markerObject.ID, markerObject); } function verifyResponse(markers, data) { // console.log(data.response); if (data.response != null) { const response = JSON.parse(data.response).responseData.array_to_json; response.forEach((r) => r.formcode == "FLOODZONES_OFFICIAL" ? buildPolygonsObject(markers.markers, r, data.name) : buildMarkerObject(markers.markers, r, data.name)); } } const getFormsAnswers = (dataOptionObject, focusChanged, data) => { var markers = { markers: new Map() }; const answers = SocketClient(dataOptionObject, focusChanged, data); // console.log("\n\nAnswers: " + JSON.stringify(answers)); answers.forEach((r) => verifyResponse(markers, r));//buildMarkerObject(markers.markers, r)); // console.log("\n\nMarkers: " + JSON.stringify(markers)); return markers; } export { getFormsAnswers };