diff --git a/src/app/api/Websockets/dataClient.js b/src/app/api/Websockets/dataClient.js
new file mode 100644
index 0000000..47330f4
--- /dev/null
+++ b/src/app/api/Websockets/dataClient.js
@@ -0,0 +1,4 @@
+const dataClient =
+ "ws://wpd.brazilsouth.cloudapp.azure.com:9090/hot/data?";
+
+export default dataClient;
diff --git a/src/app/api/auth.js b/src/app/api/auth.js
index 50a3ccb..5aaef88 100644
--- a/src/app/api/auth.js
+++ b/src/app/api/auth.js
@@ -59,8 +59,8 @@ async function userPersonalData() {
async function userActivation(code) {
const { username } = await authStorage.getUser();
const authToken = await authStorage.getToken()
- console.log("TOKEN ACTIVATE: "+authToken);
- console.log("USER NAME: " + username);
+ // console.log("TOKEN ACTIVATE: "+authToken);
+ // console.log("USER NAME: " + username);
const localClient = create({
baseURL: "http://wpd.brazilsouth.cloudapp.azure.com:8080/users",
diff --git a/src/app/components/AssembleModalObject.js b/src/app/components/AssembleModalObject.js
index ab64cfd..13c58b1 100644
--- a/src/app/components/AssembleModalObject.js
+++ b/src/app/components/AssembleModalObject.js
@@ -1,8 +1,9 @@
import moment from "moment";
import React from "react";
import { View, Text } from "react-native";
+import getFieldsAnswers from "../api/RequestFieldsAnswers/getFieldsAnswers";
import assets from "../config/assets";
-
+//---1/3: melhorar código
const custom_assets = {
pluviometer: assets.PluviometerIcon,
officialPluviometer: assets.OfficialPluviometer,
@@ -59,14 +60,72 @@ function getLogo(name, situation) {
}
}
-function verifyMeasureDates(labels, measureDate) {
+function verifymeasureDates(labels, measureDate, day) {
+ // console.log(measureDate);
if (labels == null || !labels.find((f) => f == measureDate)) {
labels.push(measureDate);
+ day.label = measureDate;
+
+ return true;
+ }
+ return false;
+}
+
+const getCurrentPluviometer = (pluvForm, userId, data, datapluv) => {
+ //console.log("\nuserid: "+ userId + "\n\n");
+ //console.log(pluvForm);
+ var day = { label: null, values: [] };
+
+ var measureDate = null;
+ if (pluvForm.formsanswersuserinformer == userId) {
+ pluvForm.array_to_json.find((field) => {
+ if (field.fieldname == "date") {
+ measureDate = moment(field.fieldsanswersvalue, "DD-MM-YYYY").format(
+ "DD/MM"
+ );
+ //data.labels.push(moment(f.fieldsanswersdtfilling).format("DD/MM/YYYY"));
+ }
+ });
+
+ pluvForm.array_to_json.find((field) => {
+ if (field.fieldname == "rainamount") {
+ if (verifymeasureDates(data.labels, measureDate, day)) {
+ day.values.push(
+ field.fieldsanswersvalue
+ ? parseFloat(field.fieldsanswersvalue)
+ : null
+ );
+
+ datapluv.push(day);
+ } else {
+ datapluv.forEach((d) => {
+ if (d.label === measureDate) {
+ d.values.push(
+ field.fieldsanswersvalue
+ ? parseFloat(field.fieldsanswersvalue)
+ : null
+ );
+ }
+ });
+ }
+ }
+ });
+
+ return pluvForm;
+ }
+};
+
+async function getPluviometerStatio_informations(id) {
+ const result = await getFieldsAnswers.fieldsAnswers(null, id);
+
+ if (result.data) {
+ return result.data.responseData.array_to_json[0].array_to_json;
}
+
+ return null;
}
-const AssembleModalObject = (response, name) => {
- //console.log(response);
+const AssembleModalObject = async (response, name, userId, formId) => {
var situation = null;
var user = null;
var institution = null;
@@ -76,10 +135,11 @@ const AssembleModalObject = (response, name) => {
var comments = null;
var pictures = null;
var data = {
- values: [],
labels: [],
};
+ var datapluv = [];
+
if (JSON.parse(response).array_to_json) {
const r = JSON.parse(response).array_to_json;
@@ -88,15 +148,32 @@ const AssembleModalObject = (response, name) => {
if (name == "automaticPluviometer") {
(situation = "PLUVIÔMETRO"),
r[0].array_to_json.forEach(function (f) {
+ var day = { label: null, values: [] };
if (f.fieldname == "medicao") {
- verifyMeasureDates(
- data.labels,
- moment(f.fieldsanswersdtfilling).format("DD/MM")
- ); //data.labels.push(moment(f.fieldsanswersdtfilling).format("DD/MM/YYYY"));
- data.values.push(
- f.fieldsanswersvalue ? parseFloat(f.fieldsanswersvalue) : null
- );
+ var measureDate = moment(
+ f.fieldsanswersdtfilling,
+ "YYYY-MM-DDTHH:mm:ss"
+ ).format("DD/MM");
+
+ if (verifymeasureDates(data.labels, measureDate, day)) {
+ day.values.push(
+ f.fieldsanswersvalue ? parseFloat(f.fieldsanswersvalue) : null
+ );
+ day.label = measureDate;
+ datapluv.push(day);
+ } else {
+ datapluv.forEach((d) => {
+ if (d.label == measureDate) {
+ d.values.push(
+ f.fieldsanswersvalue
+ ? parseFloat(f.fieldsanswersvalue)
+ : null
+ );
+ }
+ });
+ }
}
+
if (f.fieldname == "siglarede") {
institution = f.fieldsanswersvalue;
}
@@ -104,9 +181,44 @@ const AssembleModalObject = (response, name) => {
address = f.fieldsanswersvalue;
}
});
+
+ if (datapluv) {
+ datapluv.sort(function (dataPluv, dataPluvB) {
+ return dataPluv.label.localeCompare(dataPluvB.label);
+ });
+ }
+
+ // console.log(datapluv);
} else if (name == "pluviometer") {
situation = "PLUVIÔMETRO";
- //buscar todos os PLUVIOMETERS_FORMS REPORTADOS PELO USUÁRIO DOS ULTIMOS 5 DIAS
+ r[r.length - 1].array_to_json.forEach(function (f) {
+ if (f.fieldname == "comments") {
+ comments = f.fieldsanswersvalue;
+ }
+ });
+
+ const pluv_sation = await getPluviometerStatio_informations(formId);
+ if (pluv_sation) {
+ pluv_sation.forEach((field) => {
+ if (field.fieldname == "institutename") {
+ institution =
+ field.fieldsanswersvalue != "None"
+ ? field.fieldsanswersvalue
+ : "Não há vínculo institucional";
+ } else if (field.fieldname == "eventaddress") {
+ address = field.fieldsanswersvalue;
+ }
+ });
+ }
+
+ const currentPluv = JSON.parse(response).array_to_json.filter(
+ (pluvForm) => getCurrentPluviometer(pluvForm, userId, data, datapluv)
+ );
+ if (datapluv) {
+ datapluv.sort(function (dataPluv, dataPluvB) {
+ return dataPluv.label.localeCompare(dataPluvB.label);
+ });
+ }
} else {
if (r[0].array_to_json) {
user = r[0].formsanswersuserinformer;
@@ -141,7 +253,7 @@ const AssembleModalObject = (response, name) => {
description: comments,
logo: getLogo(name, situation),
pictures: pictures,
- data: data,
+ data: datapluv,
};
};
diff --git a/src/app/components/MapModal.js b/src/app/components/MapModal.js
index d8935de..4fb0355 100644
--- a/src/app/components/MapModal.js
+++ b/src/app/components/MapModal.js
@@ -16,6 +16,7 @@ import getFieldsAnswers from "../api/RequestFieldsAnswers/getFieldsAnswers";
import AssembleModalObject from "./AssembleModalObject";
import moment from "moment";
import SvgLabeledButton from "./SvgLabeledButton";
+import getPluviometerData from "../hooks/usePluviometerData";
const chartHeight = screen_height * 0.3;
@@ -197,7 +198,8 @@ function reviews(props) {
}
function moreInfo(props) {
- const hasData = props.data.values.length > 0;
+ const hasData = props.data.length > 0;
+ // console.log(props.data);
return (
) : (
-
+
)}
);
@@ -278,9 +276,10 @@ function isOfficialPluviometer(name) {
function MapModal({ showModal, setShowModal, markers }) {
const [currentMarker, setCurrentMarker] = useState(undefined);
+ const [pluviometerData, setPluviometerData] = useState(undefined);
var timeFilter = null;
- const getAnswers = async (id, name) => {
+ const getAnswers = async (id, name, coordinates, user) => {
if (isOfficialPluviometer(name)) {
const initialDate = moment().format("YYYY-MM-DD");
const finalDate = moment().subtract(5, "days").format("YYYY-MM-DD");
@@ -288,18 +287,50 @@ function MapModal({ showModal, setShowModal, markers }) {
timeFilter = finalDate + "/" + initialDate;
// console.log(timeFilter);
}
-
- const result = await getFieldsAnswers.fieldsAnswers(timeFilter, id);
- if (result.data && showModal && currentMarker == undefined) {
- setCurrentMarker(
- AssembleModalObject(JSON.stringify(result.data.responseData), name)
- );
+ if (currentMarker == undefined) {
+ if (name == "pluviometer") {
+ getPluviometerData(coordinates, setPluviometerData);
+ const result = pluviometerData;
+ // console.log(result);
+ if (result && showModal && currentMarker == undefined) {
+ AssembleModalObject(
+ JSON.stringify(result.responseData),
+ name,
+ user,
+ id
+ ).then((marker) => {
+ setCurrentMarker(marker);
+ });
+ // console.log(id);
+ }
+ } else {
+ const result = await getFieldsAnswers.fieldsAnswers(
+ timeFilter,
+ id,
+ user
+ );
+ if (result.data && showModal && currentMarker == undefined) {
+ AssembleModalObject(
+ JSON.stringify(result.data.responseData),
+ name,
+ user,
+ id
+ ).then((marker) => {
+ setCurrentMarker(marker);
+ });
+ }
+ }
}
};
if (markers && showModal != null && markers.has(showModal)) {
//currentMarker = markers.get(showModal);
- getAnswers(showModal, markers.get(showModal).name);
+ getAnswers(
+ showModal,
+ markers.get(showModal).name,
+ markers.get(showModal).coordinate,
+ markers.get(showModal).user
+ );
}
if (showModal != null) {
diff --git a/src/app/components/PluviometerGraphics.js b/src/app/components/PluviometerGraphics.js
index fabb27a..665b6be 100644
--- a/src/app/components/PluviometerGraphics.js
+++ b/src/app/components/PluviometerGraphics.js
@@ -17,7 +17,6 @@ function figure_config(labels, values) {
data: values,
color: () => colors.gold,
strokeWidth: 2,
-
},
],
@@ -51,7 +50,15 @@ const chartConfig = {
},
};
-function PluviometerGraphics({ chartHeight, labels, values }) {
+function PluviometerGraphics({ chartHeight, data }) {
+ var labels = [];
+ var values = [];
+ data.forEach((day) => {
+ labels.push(day.label);
+ day.values.forEach((value) => {
+ values.push(value);
+ });
+ });
return (
{
+ if (data != undefined) {
+ const dataObject = JSON.parse(data);
+ // console.log(dataObject.responseData);
+ if (dataObject?.success) {
+ setPluviometerData(dataObject);
+ }
+ } else {
+ setPluviometerData(null);
+ }
+
+ socketObject.close();
+ };
+}
+
+export default getPluviometerData;
diff --git a/src/app/hooks/useSocketMarkers.js b/src/app/hooks/useSocketMarkers.js
index ca1f6ab..89f459a 100644
--- a/src/app/hooks/useSocketMarkers.js
+++ b/src/app/hooks/useSocketMarkers.js
@@ -133,6 +133,7 @@ function buildMarkerObject(response, name) {
latitude: formsanswersgeom[1],
longitude: formsanswersgeom[0],
},
+ user: r.formsanswersuserinformer,
image: getImage(name, situation ? situation.fieldsanswersvalue : null),
};
}
diff --git a/src/app/screens/MapFeedScreen.js b/src/app/screens/MapFeedScreen.js
index 4e2b053..f5b59e7 100644
--- a/src/app/screens/MapFeedScreen.js
+++ b/src/app/screens/MapFeedScreen.js
@@ -24,7 +24,7 @@ export default function MapFeedScreen(props) {
});
const markers = useSocketMarkers();
- console.log("============= qtd markers " + markers.markers.size + " ================" )
+ // console.log("============= qtd markers " + markers.markers.size + " ================" )
// console.log("location: " + JSON.stringify(global.location))
return (
diff --git a/src/app/screens/SharingDataScreen.js b/src/app/screens/SharingDataScreen.js
index f45e21a..4d7f371 100644
--- a/src/app/screens/SharingDataScreen.js
+++ b/src/app/screens/SharingDataScreen.js
@@ -13,8 +13,12 @@ function SharingDataScreen({ navigation }) {
const [showLog, setShowLog] = useState(false);
const isRegistered = authContext.user?.username != null;
+ const pluviometer = authContext.user?.pluviometer;
+ console.log(pluviometer)
const currentUser = authContext.user;
+
+
return (
navigation.navigate("PluviometerSharingData", { user: currentUser })}
SvgImage={assets.PluviometricDataIcon}
- active={isRegistered}
+ active={isRegistered && pluviometer}
inactiveOnPress={() => setShowLog(true)}
/>