diff --git a/src/app/api/pluviometer.js b/src/app/api/pluviometer.js
new file mode 100644
index 0000000..c9d4e7b
--- /dev/null
+++ b/src/app/api/pluviometer.js
@@ -0,0 +1,7 @@
+export default function requestPluviometerData() {
+ console.log(Math.floor(Math.random() * 10));
+ return {
+ labels: ["1", "2", "3"],
+ values: [1, 2, 3],
+ };
+}
diff --git a/src/app/components/MapModal.js b/src/app/components/MapModal.js
index fe06bef..937ee5b 100644
--- a/src/app/components/MapModal.js
+++ b/src/app/components/MapModal.js
@@ -155,10 +155,14 @@ function reviews(props) {
);
}
-function moreInfo() {
+function moreInfo(props) {
return (
-
+
);
}
diff --git a/src/app/components/PluviometerGraphics.js b/src/app/components/PluviometerGraphics.js
index 229bee0..3a978a3 100644
--- a/src/app/components/PluviometerGraphics.js
+++ b/src/app/components/PluviometerGraphics.js
@@ -1,29 +1,29 @@
import React from "react";
import { StyleSheet, Text, View } from "react-native";
-import Screen from "../components/Screen";
-import { dimensions, scaleDimsFromWidth } from "../config/dimensions";
import colors from "../config/colors/";
import { LineChart } from "react-native-chart-kit";
-
+import requestPluviometerData from "../api/pluviometer";
import { Dimensions } from "react-native";
const screenWidth = Dimensions.get("window").width * 0.95;
const screenHeight = Dimensions.get("window").height * 0.3;
-const data = {
- //substituir por dados da API
- labels: ["01/01", "01/02", "01/03", "01/04", "01/05"],
- datasets: [
- {
- data: [0, 10, 20, 25, 5],
- color: () => colors.gold,
- strokeWidth: 2,
- },
- ],
+function figure_config(labels, values) {
+ return {
+ labels: labels,
+ datasets: [
+ {
+ data: values,
+ color: () => colors.gold,
+ strokeWidth: 2,
+ },
+ ],
+
+ legend: ["Registros pluviométricos"],
+ };
+}
- legend: ["Registros pluviométricos"],
-};
const chartConfig = {
backgroundGradientFrom: 0,
backgroundGradientFromOpacity: 0,
@@ -37,7 +37,7 @@ const chartConfig = {
},
};
-function PluviometerGraphics({ chartHeight = screenHeight }) {
+function PluviometerGraphics({ chartHeight, labels, values }) {
return (
{
console.log("requesting data");
if (isAvailable(global.userDataBase)) {
- queriesToParsersMapper.forEach(([query, parser]) => {
+ queriesToParsersMapper.forEach(([query, parser, cleanParse]) => {
global.userDataBase.transaction((tx) => {
tx.executeSql(query, [], (tx, results) => {
- dispatch({ increment: parseResult(results, parser) });
+ dispatch({ increment: parseResult(results, parser, cleanParse) });
});
});
});
@@ -188,6 +166,13 @@ function genericSelect(queriesToParsersMapper, dispatch, isFocused) {
const initialState = { markers: new Set() };
function reducer(state = initialState, action) {
+ // NOTE: removing old pluviometer value to new data can be displayed
+ state.markers.forEach((m) => {
+ if (m.name === "pluviometer") {
+ state.markers.delete(m);
+ }
+ });
+
action.increment.map((val) => {
state.markers.add(val);
});
@@ -200,11 +185,55 @@ function reducer(state = initialState, action) {
function useMarkers(isFocused) {
const [state, dispatch] = useReducer(reducer, initialState);
+ const context = useContext(CurrentLocationContext);
+ const location = context.currentCoordinates;
+ const addr = context.currentLocation;
+
+ const parsePluviometer = (db_result) => {
+ if (db_result.rows.length <= 0) return [];
+
+ const values = {
+ pictures: null,
+ data: {
+ labels: [],
+ values: [],
+ },
+ description: "",
+ date: "",
+ };
+ const start = Math.max(0, db_result.rows.length - 7);
+ for (let i = start; i < db_result.rows.length; ++i) {
+ var row = db_result.rows.item(i);
+
+ description = row["Description"] ? "\n\n" + row["Description"] : "";
+
+ values.image = custom_assets.pluviometer;
+ values.date = row["Date"];
+ values.description =
+ row["Precipitation"] + "mm" + ", " + row["Date"] + description;
+ values.pictures = row["Images"];
+ values.data.labels.push(row["Date"].slice(0, 5));
+ values.data.values.push(parseInt(row["Precipitation"]));
+ }
+
+ const result = {
+ ID: ++ID,
+ name: "pluviometer",
+ title: "Pluviometro 1",
+ coordinate: location,
+ address: addr,
+ ...values,
+ };
+
+ console.log(result);
+ return [result];
+ };
+
const queriesToParsersMapper = [
- ["SELECT * FROM FloodZones;", parseFloodZones],
- ["SELECT * FROM Pluviometer;", partsePluviometer],
- ["SELECT * FROM RiverLevel;", parseRiverLevel],
- ["SELECT * FROM RainLevel;", parseRainLevel],
+ ["SELECT * FROM FloodZones;", parseFloodZones, false],
+ ["SELECT * FROM RiverLevel;", parseRiverLevel, false],
+ ["SELECT * FROM RainLevel;", parseRainLevel, false],
+ ["SELECT * FROM PluviometerData;", parsePluviometer, true],
];
genericSelect(queriesToParsersMapper, dispatch, isFocused);
diff --git a/src/app/hooks/useFocus.js b/src/app/hooks/useFocus.js
index 6a50764..1f6a752 100644
--- a/src/app/hooks/useFocus.js
+++ b/src/app/hooks/useFocus.js
@@ -1,6 +1,6 @@
-import { useEffect, useState } from "react";
+import { useEffect, useState, useContext } from "react";
import { useIsFocused } from "@react-navigation/native";
-
+import { CurrentLocationContext } from "../context/CurrentLocationContext";
/*
NOTE: This hook is used this way because react-navigation/native
@@ -13,13 +13,15 @@ import { useIsFocused } from "@react-navigation/native";
export default function attachFocusToQuery() {
const isFocused = useIsFocused();
+ const context = useContext(CurrentLocationContext);
+
const [hasToQuery, setHasToQuery] = useState(null);
useEffect(() => {
if (isFocused == true) {
setHasToQuery(!hasToQuery);
}
- }, [isFocused]);
+ }, [isFocused, context.getCurrentLocation]);
return hasToQuery;
}
diff --git a/src/app/screens/PluviometerSharingDataScreen.js b/src/app/screens/PluviometerSharingDataScreen.js
index f953f9a..ebc74cb 100644
--- a/src/app/screens/PluviometerSharingDataScreen.js
+++ b/src/app/screens/PluviometerSharingDataScreen.js
@@ -53,11 +53,11 @@ function PluviometerSharingDataScreen(props) {