Browse Source

Merge branch 'main' of github.com:IGSD-UoW/WPD-MobileApp

master
GabrielTrettel 3 years ago
parent
commit
08ded006b2
  1. 2
      src/App.js
  2. 2
      src/app/assets/floodZonesAssets/PinIntransitavel.js
  3. 2
      src/app/assets/floodZonesAssets/PinTransitavel.js
  4. 1
      src/app/assets/pluviometer/PinPluviometerOfficial.js
  5. 2
      src/app/assets/pluviometer/PinPluviometroArt.js
  6. 2
      src/app/assets/rain/PinChuvaForte.js
  7. 2
      src/app/assets/rain/PinChuvaFraca.js
  8. 2
      src/app/assets/rain/PinChuvaModerada.js
  9. 2
      src/app/assets/rain/PinNublado.js
  10. 2
      src/app/assets/river/PinRioCheio.js
  11. 2
      src/app/assets/river/PinRioExtravasado.js
  12. 2
      src/app/assets/river/PinRioNormal.js
  13. 26
      src/app/components/AssembleModalObject.js
  14. 102
      src/app/components/MapModal.js
  15. 3
      src/app/config/assets.js
  16. 18
      src/app/hooks/useFiltering.js
  17. 18
      src/app/hooks/useSocketMarkers.js
  18. 10
      src/app/screens/MapFeedScreen.js
  19. 4
      src/app/screens/SharingFloodZonesScreen.js

2
src/App.js

@ -33,7 +33,7 @@ export default function App() {
const storageUser = await authStorage.getUser(); const storageUser = await authStorage.getUser();
if (storageUser) setUser(storageUser); if (storageUser) setUser(storageUser);
global.location = { lat: -23.623, long: -46.5637 }; // await getLocation();
global.location = { lat: -9.969802, long: -67.816956 }; // await getLocation();
}; };
if (!isReady && netInfo.isInternetReachable) { if (!isReady && netInfo.isInternetReachable) {

2
src/app/assets/floodZonesAssets/PinIntransitavel.js
File diff suppressed because it is too large
View File

2
src/app/assets/floodZonesAssets/PinTransitavel.js
File diff suppressed because it is too large
View File

1
src/app/assets/pluviometer/PinPluviometerOfficial.js

@ -0,0 +1 @@
export default PinPluviometerOfficial = `<svg id="ad7ac35f-f682-407d-9c14-49f9a29f0c3b" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" width="305" height="390" viewBox="0 0 305 390"><circle cx="151.79" cy="149.52" r="120.5" fill="#fff"/><path d="M151.29,4.66c-79.95,0-145,65.05-145,145a143.72,143.72,0,0,0,28.93,86.93L142.36,380.88c.26.35.67.49,1,.8a10.79,10.79,0,0,0,16.89-.8c30.86-41.16,87.41-118,109.15-147v0l.14-.18a143.94,143.94,0,0,0,26.77-84C296.29,69.71,231.25,4.66,151.29,4.66ZM151,263.5c-62.78,0-114.1-51.31-114.1-114.1S88.25,35.3,151,35.3s114.1,51.31,114.1,114.1S213.82,263.5,151,263.5Z" fill="#3b7097"/><rect x="133.11" y="100.18" width="36.3" height="135.45" fill="#ececec"/><path d="M172.79,239H129.72V96.8h43.07Zm-36.3-6.77H166V103.57H136.49Z" fill="#3b7097"/><rect x="135.64" y="98.7" width="15.76" height="136.35" fill="#d9d9d9"/><path d="M134.85,197.73l1.44-2.71c5.69-3.5,7.27-5.29,12.34-1.52.45.34.9.67,1.38,1l3.75,2.72c3.53,2.83,6.58-.4,7.53-1.17l3.8-2.87a2.59,2.59,0,0,1,4.2,2v36.54a2.58,2.58,0,0,1-2.47,2.58l-29.14,1.26a2.58,2.58,0,0,1-2.7-2.48l-1.36-33A2.57,2.57,0,0,1,134.85,197.73Z" fill="#9fdfff"/><path d="M151.38,195.46l-1.37-1c-.48-.3-.93-.63-1.38-1-5.07-3.77-6.65-2-12.34,1.52l-1.44,2.71a2.57,2.57,0,0,0-1.23,2.31l1.36,33a2.58,2.58,0,0,0,2.7,2.48l13.7-.59Z" fill="#7dd6f9"/><path d="M172.79,239H129.72V96.8h43.07Zm-36.3-6.77H166V103.57H136.49Z" fill="#727272"/><path d="M108.39,65.75H194.2a0,0,0,0,1,0,0v4.18a28.62,28.62,0,0,1-28.62,28.62H137a28.62,28.62,0,0,1-28.62-28.62V65.75a0,0,0,0,1,0,0Z" fill="#ececec"/><path d="M161.73,101.93H140.86A35.9,35.9,0,0,1,105,66.07V62.36h92.59v3.71A35.9,35.9,0,0,1,161.73,101.93Zm-49.8-32.8a29.12,29.12,0,0,0,28.93,26h20.87a29.12,29.12,0,0,0,28.93-26Z" fill="#3b7097"/><path d="M111.8,65.65h39.36a0,0,0,0,1,0,0v33a0,0,0,0,1,0,0H140.64A28.84,28.84,0,0,1,111.8,69.86V65.65a0,0,0,0,1,0,0Z" fill="#d9d9d9"/><path d="M161.73,101.93H140.86A35.9,35.9,0,0,1,105,66.07V62.36h92.59v3.71A35.9,35.9,0,0,1,161.73,101.93Zm-49.8-32.8a29.12,29.12,0,0,0,28.93,26h20.87a29.12,29.12,0,0,0,28.93-26Z" fill="#727272"/><rect x="130.09" y="129.35" width="25.94" height="2.71" fill="#727272"/><rect x="130.09" y="147.98" width="25.94" height="2.71" fill="#727272"/><rect x="130.09" y="166.6" width="25.94" height="2.71" fill="#727272"/><rect x="130.09" y="185.23" width="25.94" height="2.71" fill="#727272"/><rect x="130.09" y="203.85" width="25.94" height="2.71" fill="#727272"/><circle cx="264.95" cy="38.38" r="33.76" fill="#4086f4"/><polygon points="261.71 51.93 246.95 37.17 250.46 33.66 261.5 44.7 279.25 24.82 282.95 28.13 261.71 51.93" fill="#fff"/></svg>`

2
src/app/assets/pluviometer/PinPluviometroArt.js

@ -1 +1 @@
export default PinPluviometroArt = `<svg id="Camada_1" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 410"><defs><style>.cls-1{fill:#3b7097 !important;}.cls-2{fill:#ececec !important;}.cls-3{fill:#d9d9d9 !important;}.cls-4{fill:#9fdfff !important;}.cls-5{fill:#7dd6f9 !important;}.cls-6{fill:#727272 !important;}</style></defs><path class="cls-1" d="M205,14.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L196.06,390.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C350,79.69,285,14.64,205,14.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1S142,45.28,204.74,45.28s114.09,51.31,114.09,114.1S267.52,273.48,204.74,273.48Z"/><rect class="cls-2" x="186.81" y="110.16" width="36.3" height="135.45"/><path class="cls-1" d="M226.5,249H183.43V106.78H226.5Zm-36.3-6.77h29.53V113.55H190.2Z"/><rect class="cls-3" x="189.34" y="108.68" width="15.76" height="136.35"/><path class="cls-4" d="M188.56,207.7,190,205c5.69-3.5,7.27-5.29,12.33-1.52.46.33.91.67,1.39,1l3.74,2.72C211,210,214,206.76,215,206l3.79-2.87a2.59,2.59,0,0,1,4.21,2v36.54a2.59,2.59,0,0,1-2.48,2.58l-29.13,1.26a2.58,2.58,0,0,1-2.7-2.48l-1.36-33A2.6,2.6,0,0,1,188.56,207.7Z"/><path class="cls-5" d="M205.09,205.44l-1.37-1c-.48-.3-.93-.64-1.39-1-5.06-3.77-6.64-2-12.33,1.52l-1.44,2.7a2.6,2.6,0,0,0-1.23,2.32l1.36,33a2.58,2.58,0,0,0,2.7,2.48l13.7-.59Z"/><path class="cls-6" d="M226.5,249H183.43V106.78H226.5Zm-36.3-6.77h29.53V113.55H190.2Z"/><path class="cls-2" d="M162.09,75.72h85.82a0,0,0,0,1,0,0V79.9a28.62,28.62,0,0,1-28.62,28.62H190.72A28.62,28.62,0,0,1,162.09,79.9V75.72A0,0,0,0,1,162.09,75.72Z"/><path class="cls-1" d="M215.43,111.91H194.57a35.9,35.9,0,0,1-35.86-35.86V72.34h92.58v3.71A35.9,35.9,0,0,1,215.43,111.91Zm-49.79-32.8a29.12,29.12,0,0,0,28.93,26h20.86a29.12,29.12,0,0,0,28.93-26Z"/><path class="cls-3" d="M165.51,75.63h39.36a0,0,0,0,1,0,0v33a0,0,0,0,1,0,0H194.34a28.84,28.84,0,0,1-28.84-28.84V75.63A0,0,0,0,1,165.51,75.63Z"/><path class="cls-6" d="M215.43,111.91H194.57a35.9,35.9,0,0,1-35.86-35.86V72.34h92.58v3.71A35.9,35.9,0,0,1,215.43,111.91Zm-49.79-32.8a29.12,29.12,0,0,0,28.93,26h20.86a29.12,29.12,0,0,0,28.93-26Z"/><rect class="cls-6" x="183.79" y="139.33" width="25.94" height="2.71"/><rect class="cls-6" x="183.79" y="157.95" width="25.94" height="2.71"/><rect class="cls-6" x="183.79" y="176.58" width="25.94" height="2.71"/><rect class="cls-6" x="183.79" y="195.2" width="25.94" height="2.71"/><rect class="cls-6" x="183.79" y="213.83" width="25.94" height="2.71"/></svg>`
export default PinPluviometroArt = `<svg id="bab5a78b-257c-45f5-80c9-095df1fdddb4" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" width="305" height="390" viewBox="0 0 305 390"><circle cx="153" cy="149.5" r="120.5" fill="#fff"/><path d="M152.5,4.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L143.56,380.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C297.5,69.69,232.45,4.64,152.5,4.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1s51.31-114.1,114.1-114.1,114.09,51.31,114.09,114.1S215,263.48,152.24,263.48Z" fill="#3b7097"/><rect x="134.31" y="100.16" width="36.3" height="135.45" fill="#ececec"/><path d="M174,239H130.93V96.78H174Zm-36.3-6.77h29.53V103.55H137.7Z" fill="#3b7097"/><rect x="136.84" y="98.68" width="15.76" height="136.35" fill="#d9d9d9"/><path d="M136.06,197.7l1.44-2.7c5.69-3.5,7.27-5.29,12.33-1.52.46.33.91.67,1.39,1l3.74,2.72c3.54,2.83,6.58-.41,7.54-1.17l3.79-2.87a2.59,2.59,0,0,1,4.21,2v36.54a2.59,2.59,0,0,1-2.48,2.58l-29.13,1.26a2.58,2.58,0,0,1-2.7-2.48l-1.36-33A2.6,2.6,0,0,1,136.06,197.7Z" fill="#9fdfff"/><path d="M152.59,195.44l-1.37-1c-.48-.3-.93-.64-1.39-1-5.06-3.77-6.64-2-12.33,1.52l-1.44,2.7a2.6,2.6,0,0,0-1.23,2.32l1.36,33a2.58,2.58,0,0,0,2.7,2.48l13.7-.59Z" fill="#7dd6f9"/><path d="M174,239H130.93V96.78H174Zm-36.3-6.77h29.53V103.55H137.7Z" fill="#727272"/><path d="M109.59,65.72h85.82a0,0,0,0,1,0,0V69.9a28.62,28.62,0,0,1-28.62,28.62H138.22A28.62,28.62,0,0,1,109.59,69.9V65.72a0,0,0,0,1,0,0Z" fill="#ececec"/><path d="M162.93,101.91H142.07a35.9,35.9,0,0,1-35.86-35.86V62.34h92.58v3.71A35.9,35.9,0,0,1,162.93,101.91Zm-49.79-32.8a29.12,29.12,0,0,0,28.93,26h20.86a29.12,29.12,0,0,0,28.93-26Z" fill="#3b7097"/><path d="M113,65.63h39.36a0,0,0,0,1,0,0v33a0,0,0,0,1,0,0H141.84A28.84,28.84,0,0,1,113,69.84V65.63A0,0,0,0,1,113,65.63Z" fill="#d9d9d9"/><path d="M162.93,101.91H142.07a35.9,35.9,0,0,1-35.86-35.86V62.34h92.58v3.71A35.9,35.9,0,0,1,162.93,101.91Zm-49.79-32.8a29.12,29.12,0,0,0,28.93,26h20.86a29.12,29.12,0,0,0,28.93-26Z" fill="#727272"/><rect x="131.29" y="129.33" width="25.94" height="2.71" fill="#727272"/><rect x="131.29" y="147.95" width="25.94" height="2.71" fill="#727272"/><rect x="131.29" y="166.58" width="25.94" height="2.71" fill="#727272"/><rect x="131.29" y="185.2" width="25.94" height="2.71" fill="#727272"/><rect x="131.29" y="203.83" width="25.94" height="2.71" fill="#727272"/></svg>`

2
src/app/assets/rain/PinChuvaForte.js

@ -1 +1 @@
export default PinChuvaForte = `<svg id="Camada_1" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 410"><defs><style>.cls-1,.cls-2{fill:#3b7097 !important;}.cls-2{opacity:0.2 !important;}</style></defs><path class="cls-1" d="M205,14.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L196.06,390.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C350,79.69,285,14.64,205,14.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1S142,45.28,204.74,45.28s114.09,51.31,114.09,114.1S267.52,273.48,204.74,273.48Z"/><path class="cls-1" d="M268,126A54.29,54.29,0,0,0,181.6,85.23a36.42,36.42,0,0,0-47.69,46c-.86.72-1.7,1.49-2.5,2.29a38.05,38.05,0,0,0,26.91,65h93.37a38,38,0,0,0,38.05-38v0A38.28,38.28,0,0,0,268,126Zm4,54.66A28.44,28.44,0,0,1,251.69,189H158.32a28.64,28.64,0,0,1-16-52.37,4.71,4.71,0,0,0,1.61-5.94,26.6,26.6,0,0,1-2.63-11.63,27,27,0,0,1,27-27,26.69,26.69,0,0,1,11.93,2.78,4.71,4.71,0,0,0,5.08-.59A44.88,44.88,0,0,1,258.64,129v.18a4.69,4.69,0,0,0,3.06,4.41,28.66,28.66,0,0,1,10.24,47.1Z"/><path class="cls-1" d="M162.13,230.72l-4.77,4.76a4.71,4.71,0,1,0,6.66,6.66l4.77-4.77a4.71,4.71,0,1,0-6.66-6.65Z"/><path class="cls-1" d="M193.44,230.72l-4.76,4.76a4.71,4.71,0,1,0,6.65,6.66l4.77-4.77a4.71,4.71,0,1,0-6.66-6.65Z"/><path class="cls-1" d="M223.81,232.13l-4.76,4.76a4.71,4.71,0,1,0,6.63,6.69l0,0,4.76-4.76a4.71,4.71,0,1,0-6.66-6.66Z"/><path class="cls-1" d="M161.79,209.23a4.72,4.72,0,0,0-6.66,0L150.36,214a4.71,4.71,0,0,0,6.67,6.66l4.76-4.77a4.71,4.71,0,0,0,0-6.66Z"/><path class="cls-1" d="M191.35,209.23a4.73,4.73,0,0,0-6.66,0L179.93,214a4.71,4.71,0,1,0,6.59,6.72l.06-.06,4.77-4.77A4.71,4.71,0,0,0,191.35,209.23Z"/><path class="cls-1" d="M220.91,209.23a4.72,4.72,0,0,0-6.66,0L209.49,214a4.71,4.71,0,0,0,6.66,6.66l4.76-4.77A4.71,4.71,0,0,0,220.91,209.23Z"/><path class="cls-1" d="M250.47,209.23a4.71,4.71,0,0,0-6.65,0L239.05,214a4.71,4.71,0,0,0,6.66,6.66l4.77-4.77A4.72,4.72,0,0,0,250.47,209.23Z"/><path class="cls-2" d="M149.5,162.67a33.23,33.23,0,0,1,9.77-23.6,34.25,34.25,0,0,1,4.92-4.06,31.72,31.72,0,0,1,15-42.29c.61-.29,1.24-.57,1.88-.82A31.72,31.72,0,0,0,140.63,135a33.37,33.37,0,0,0,18.68,61h18.27l.08-.41A33.36,33.36,0,0,1,149.5,162.67Z"/></svg>`
export default PinChuvaForte = `<svg id="fb3892d7-a41e-443c-b118-9964df0c0cba" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="305" height="390" viewBox="0 0 305 390"><defs><clipPath id="b071391e-0e1c-47d3-a2a4-51418b815eb0"><rect x="73.94" y="70.04" width="157.56" height="155.23" fill="none"/></clipPath></defs><circle cx="157" cy="149.5" r="120.5" fill="#fff"/><path d="M152.5,4.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L143.56,380.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C297.5,69.69,232.45,4.64,152.5,4.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1s51.31-114.1,114.1-114.1,114.09,51.31,114.09,114.1S215,263.48,152.24,263.48Z" fill="#3b7097"/><path d="M103.86,143A32.71,32.71,0,0,1,118.25,116a31,31,0,0,1,14.64-41.4c.61-.29,1.22-.56,1.84-.81A31.05,31.05,0,0,0,95.19,116a32.67,32.67,0,0,0,18.28,59.74h17.89l.08-.4A32.68,32.68,0,0,1,103.86,143Z" fill="#fff"/><g clip-path="url(#b071391e-0e1c-47d3-a2a4-51418b815eb0)"><path d="M164.62,74.77a21.66,21.66,0,0,0-2.47.14c-11.61,1.31-14,9.64-23.08,9.64h-.28c-4.9-.09-4.61-2.44-12.06-3.46a45,45,0,0,0-6.36-.54,23.45,23.45,0,0,0-9.44,1.83c-9.78,4.27-17.09,16.68-15.8,26.87.64,5,3.17,7.22,2.08,12.13s-4.33,6.6-7.07,10.4c-6,8.3-5.82,21.72-1.24,31.2,5.34,11.07,15.87,15,18.7,16a22.12,22.12,0,0,0,8.68,1.4c3.91,0,9.62-.41,19.59-1,15-.85,23.39-1.33,28.75-1.33.72,0,1.4,0,2,0,13.85.39,17.36,2.19,23,2.19a33.13,33.13,0,0,0,5.27-.46c7.35-1.15,21-3.13,27.85-15.16a33,33,0,0,0,.83-30.34c-3.68-7.47-15-5.32-16.21-15.16-2.8-23.24-12-40.37-36.17-43.77a46.65,46.65,0,0,0-6.59-.68" fill="#dae1ea"/><path d="M106.38,147.37a33.41,33.41,0,0,1,6.7-20.54,26.32,26.32,0,0,1,3.36-3.54c-5.16-13.76-.58-30.24,10.24-36.81.43-.25.86-.5,1.29-.72C116.84,80.1,104.2,87,99.75,101.15a34.53,34.53,0,0,0,.57,22.14c-10.46,9-13.21,27-6.15,40.33,4.25,8,11.34,12.8,18.94,12.8h12.51l0-.36c-11.11-2.23-19.28-14.4-19.29-28.69" fill="#fff"/><path d="M215.8,167.47a24.61,24.61,0,0,1-17.86,7.71H115.59a25.43,25.43,0,0,1-24.15-18.63,26.92,26.92,0,0,1,10-29.53,4.42,4.42,0,0,0,1.41-5.45,25.36,25.36,0,0,1-2.31-10.69c0-13.7,10.66-24.79,23.79-24.81a22.82,22.82,0,0,1,10.53,2.55,4,4,0,0,0,4.47-.54,38.31,38.31,0,0,1,42-5.43c13.85,6.82,22.67,21.34,22.68,37.3v.17a4.31,4.31,0,0,0,2.7,4,26.44,26.44,0,0,1,16.43,24.68,26.8,26.8,0,0,1-7.4,18.62m-3.5-50.25c-1-18.3-11.48-34.58-27.38-42.4a46.26,46.26,0,0,0-48.8,4.92,30.62,30.62,0,0,0-11.78-2.32A31.76,31.76,0,0,0,98.15,91.56,34.65,34.65,0,0,0,94.06,122c-.77.67-1.5,1.37-2.21,2.11a36.08,36.08,0,0,0-7.28,38.13c5.2,13.07,17.44,21.59,31,21.59h82.35c18.53,0,33.56-15.65,33.56-35v0a35.3,35.3,0,0,0-19.2-31.63" fill="#3b7097"/><path d="M79.36,213.44l-4.21,4.38a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.88,0l4.2-4.38a4.46,4.46,0,0,0,0-6.12,4,4,0,0,0-5.87,0" fill="#3b7097"/><path d="M105.44,213.44l-4.21,4.38a4.45,4.45,0,0,0,0,6.12,4,4,0,0,0,5.87,0l4.2-4.38a4.45,4.45,0,0,0,0-6.12,4,4,0,0,0-5.87,0" fill="#3b7097"/><path d="M131.5,213.44l-4.2,4.38a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.88,0l4.2-4.38a4.46,4.46,0,0,0,0-6.12,4,4,0,0,0-5.88,0" fill="#3b7097"/><path d="M157.58,213.44l-4.2,4.38a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.88,0l4.2-4.38a4.45,4.45,0,0,0,0-6.12,4,4,0,0,0-5.88,0" fill="#3b7097"/><path d="M183.65,213.44l-4.2,4.38a4.46,4.46,0,0,0-1.15,4.2,4.27,4.27,0,0,0,2.95,3.11A4.05,4.05,0,0,0,185.3,224l0,0,4.21-4.38a4.46,4.46,0,0,0,1.12-4.2,4.22,4.22,0,0,0-3-3.09,4,4,0,0,0-4,1.17" fill="#3b7097"/><path d="M103.58,193.69a4,4,0,0,0-5.87,0l-4.2,4.39a4.45,4.45,0,0,0,0,6.12,4,4,0,0,0,5.87,0l4.2-4.39a4.46,4.46,0,0,0,0-6.12Z" fill="#3b7097"/><path d="M129.66,193.69a4,4,0,0,0-5.87,0l-4.2,4.39a4.45,4.45,0,0,0-.06,6.12,4,4,0,0,0,5.87.06l.06-.06,4.2-4.39a4.44,4.44,0,0,0,0-6.12" fill="#3b7097"/><path d="M155.73,193.69a4,4,0,0,0-5.87,0l-4.2,4.39a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.88,0l4.2-4.39a4.45,4.45,0,0,0,0-6.12" fill="#3b7097"/><path d="M181.81,193.69a4,4,0,0,0-5.87,0l-4.21,4.39a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.87,0l4.21-4.39a4.46,4.46,0,0,0,0-6.12" fill="#3b7097"/><path d="M202,193.7l-4.2,4.38a4.46,4.46,0,0,0,0,6.12,4,4,0,0,0,5.88,0l0,0,4.2-4.39a4.45,4.45,0,0,0,0-6.12,4,4,0,0,0-5.87,0Z" fill="#3b7097"/></g></svg>`

2
src/app/assets/rain/PinChuvaFraca.js

@ -1 +1 @@
export default PinChuvaFraca = `<svg id="Camada_1" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 410"><defs><style>.cls-1,.cls-2{fill:#3b7097 !important;}.cls-2{opacity:0.2 !important;}</style></defs><path class="cls-1" d="M205,14.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L196.06,390.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C350,79.69,285,14.64,205,14.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1S142,45.28,204.74,45.28s114.09,51.31,114.09,114.1S267.52,273.48,204.74,273.48Z"/><path class="cls-1" d="M268.12,126.25a54.42,54.42,0,0,0-86.58-40.87,36.51,36.51,0,0,0-47.8,46.08c-.87.73-1.71,1.5-2.51,2.3a38.15,38.15,0,0,0,27,65.12H251.8a38.12,38.12,0,0,0,38.14-38.12v0A38.33,38.33,0,0,0,268.12,126.25Zm4,54.79a28.52,28.52,0,0,1-20.3,8.4H158.21a28.71,28.71,0,0,1-16.07-52.5,4.72,4.72,0,0,0,1.61-5.95,26.73,26.73,0,0,1-2.64-11.66,27.07,27.07,0,0,1,27-27,26.55,26.55,0,0,1,12,2.78,4.72,4.72,0,0,0,5.09-.59,45,45,0,0,1,73.56,34.75v.18a4.73,4.73,0,0,0,3.06,4.42,28.85,28.85,0,0,1,18.68,26.91A28.56,28.56,0,0,1,272.1,181Z"/><path class="cls-1" d="M160.84,231.17l-4.78,4.77a4.72,4.72,0,1,0,6.67,6.68l4.79-4.78a4.72,4.72,0,0,0-6.68-6.67Z"/><path class="cls-1" d="M220.11,231.17l-4.78,4.77a4.72,4.72,0,0,0,6.67,6.68l4.78-4.78a4.72,4.72,0,1,0-6.67-6.67Z"/><path class="cls-1" d="M144.57,209.63a4.72,4.72,0,0,0-6.68,0l-4.77,4.78a4.72,4.72,0,0,0,6.68,6.67l4.77-4.78a4.73,4.73,0,0,0,0-6.68Z"/><path class="cls-1" d="M203.84,209.63a4.72,4.72,0,0,0-6.68,0l-4.77,4.78a4.72,4.72,0,0,0,6.67,6.67l4.78-4.78A4.73,4.73,0,0,0,203.84,209.63Z"/><path class="cls-1" d="M256.43,209.64l-4.78,4.78a4.72,4.72,0,0,0,6.65,6.7l0,0,4.77-4.78a4.72,4.72,0,1,0-6.64-6.7Z"/><path class="cls-2" d="M150.49,161.55a33.57,33.57,0,0,1,14.73-27.73,31.8,31.8,0,0,1,15-42.39c.62-.29,1.25-.57,1.89-.83a31.8,31.8,0,0,0-40.5,43.22A33.46,33.46,0,0,0,160.34,195h18.31l.08-.41A33.47,33.47,0,0,1,150.49,161.55Z"/></svg>`
export default PinChuvaFraca = `<svg id="bd92cfec-394a-41c7-88a9-a9b9e36637ac" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" width="305" height="390" viewBox="0 0 305 390"><circle cx="150" cy="149.5" r="120.5" fill="#fff"/><path d="M152.5,4.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L143.56,380.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C297.5,69.69,232.45,4.64,152.5,4.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1s51.31-114.1,114.1-114.1,114.09,51.31,114.09,114.1S215,263.48,152.24,263.48Z" fill="#3b7097"/><path d="M215.62,116.25A54.42,54.42,0,0,0,129,75.38a36.51,36.51,0,0,0-47.8,46.08c-.87.73-1.71,1.5-2.51,2.3a38.15,38.15,0,0,0,27,65.12H199.3a38.12,38.12,0,0,0,38.14-38.12v0A38.33,38.33,0,0,0,215.62,116.25Zm4,54.79a28.52,28.52,0,0,1-20.3,8.4H105.71a28.71,28.71,0,0,1-16.07-52.5,4.72,4.72,0,0,0,1.61-6,26.73,26.73,0,0,1-2.64-11.66,27.07,27.07,0,0,1,27.05-27,26.55,26.55,0,0,1,12,2.78,4.72,4.72,0,0,0,5.09-.59,45,45,0,0,1,73.56,34.75v.18a4.73,4.73,0,0,0,3.06,4.42A28.85,28.85,0,0,1,228,150.74,28.56,28.56,0,0,1,219.6,171Z" fill="#3b7097"/><path d="M108.34,221.17l-4.78,4.77a4.72,4.72,0,0,0,6.67,6.68l4.79-4.78a4.72,4.72,0,1,0-6.68-6.67Z" fill="#3b7097"/><path d="M167.61,221.17l-4.78,4.77a4.72,4.72,0,0,0,6.67,6.68l4.78-4.78a4.72,4.72,0,1,0-6.67-6.67Z" fill="#3b7097"/><path d="M92.07,199.63a4.72,4.72,0,0,0-6.68,0l-4.77,4.78a4.72,4.72,0,0,0,6.68,6.67l4.77-4.78a4.73,4.73,0,0,0,0-6.68Z" fill="#3b7097"/><path d="M151.34,199.63a4.72,4.72,0,0,0-6.68,0l-4.77,4.78a4.72,4.72,0,0,0,6.67,6.67l4.78-4.78A4.73,4.73,0,0,0,151.34,199.63Z" fill="#3b7097"/><path d="M203.93,199.64l-4.78,4.78a4.72,4.72,0,0,0,6.65,6.7l0,0,4.77-4.78a4.72,4.72,0,1,0-6.64-6.7Z" fill="#3b7097"/><path d="M98,151.55a33.57,33.57,0,0,1,14.73-27.73,31.8,31.8,0,0,1,15-42.39c.62-.29,1.25-.57,1.89-.83a31.8,31.8,0,0,0-40.5,43.22A33.46,33.46,0,0,0,107.84,185h18.31l.08-.41A33.47,33.47,0,0,1,98,151.55Z" fill="#3b7097" opacity="0.2"/></svg>`

2
src/app/assets/rain/PinChuvaModerada.js

@ -1 +1 @@
export default PinChuvaModerada = `<svg id="Camada_1" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 410"><defs><style>.cls-1,.cls-2{fill:#3b7097 !important;}.cls-2{opacity:0.2 !important;}</style></defs><path class="cls-1" d="M205,14.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L196.06,390.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C350,79.69,285,14.64,205,14.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1S142,45.28,204.74,45.28s114.09,51.31,114.09,114.1S267.52,273.48,204.74,273.48Z"/><path class="cls-1" d="M268.32,126.4a54.6,54.6,0,0,0-86.85-41,36.63,36.63,0,0,0-47.95,46.23c-.87.73-1.71,1.5-2.52,2.3a38.27,38.27,0,0,0,27.06,65.33H252A38.26,38.26,0,0,0,290.21,161v0A38.46,38.46,0,0,0,268.32,126.4Zm4,55A28.6,28.6,0,0,1,252,189.79H158.06A28.81,28.81,0,0,1,142,137.12a4.74,4.74,0,0,0,1.61-6,26.55,26.55,0,0,1-2.64-11.69,27.15,27.15,0,0,1,27.13-27.13,26.82,26.82,0,0,1,12,2.79,4.76,4.76,0,0,0,5.11-.59,45.13,45.13,0,0,1,73.78,34.86v.18A4.74,4.74,0,0,0,262,134a28.93,28.93,0,0,1,18.73,27A28.62,28.62,0,0,1,272.31,181.36Z"/><path class="cls-1" d="M176.75,231.71,172,236.49a4.74,4.74,0,0,0,6.7,6.7l4.79-4.79a4.73,4.73,0,1,0-6.7-6.69Z"/><path class="cls-1" d="M211.56,231.71l-4.79,4.78a4.73,4.73,0,0,0,6.69,6.7l4.79-4.79a4.73,4.73,0,1,0-6.69-6.69Z"/><path class="cls-1" d="M176.41,210.1a4.73,4.73,0,0,0-6.69,0l-4.8,4.79a4.73,4.73,0,1,0,6.7,6.69l4.79-4.79a4.74,4.74,0,0,0,0-6.7Z"/><path class="cls-1" d="M206.14,210.1a4.74,4.74,0,0,0-6.69,0l-4.8,4.8a4.73,4.73,0,0,0,6.63,6.76l.06-.07,4.8-4.79A4.74,4.74,0,0,0,206.14,210.1Z"/><path class="cls-1" d="M239.18,210.1a4.74,4.74,0,0,0-6.7,0l-4.78,4.79a4.73,4.73,0,1,0,6.69,6.69l4.79-4.79A4.74,4.74,0,0,0,239.18,210.1Z"/><path class="cls-2" d="M149.24,160.43a33.4,33.4,0,0,1,9.83-23.72,34,34,0,0,1,4.94-4.09,31.9,31.9,0,0,1,15-42.52c.63-.3,1.26-.57,1.9-.83a31.89,31.89,0,0,0-40.62,43.35A33.56,33.56,0,0,0,159.11,194h18.37l.08-.41A33.56,33.56,0,0,1,149.24,160.43Z"/></svg>`
export default PinChuvaModerada = `<svg id="ad6b2954-1cbd-4f4a-a23b-5b234a106952" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" width="305" height="390" viewBox="0 0 305 390"><circle cx="149" cy="149.5" r="120.5" fill="#fff"/><path d="M152.5,4.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L143.56,380.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C297.5,69.69,232.45,4.64,152.5,4.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1s51.31-114.1,114.1-114.1,114.09,51.31,114.09,114.1S215,263.48,152.24,263.48Z" fill="#3b7097"/><path d="M215.47,116A54.29,54.29,0,0,0,129.1,75.23a36.42,36.42,0,0,0-47.69,46c-.86.72-1.7,1.49-2.5,2.29a38.05,38.05,0,0,0,26.91,65h93.37a38,38,0,0,0,38.05-38v0A38.28,38.28,0,0,0,215.47,116Zm4,54.66A28.44,28.44,0,0,1,199.19,179H105.82a28.64,28.64,0,0,1-16-52.37,4.71,4.71,0,0,0,1.61-5.94,26.6,26.6,0,0,1-2.63-11.63,27,27,0,0,1,27-27,26.69,26.69,0,0,1,11.93,2.78,4.71,4.71,0,0,0,5.08-.59A44.88,44.88,0,0,1,206.14,119v.18a4.69,4.69,0,0,0,3.06,4.41,28.66,28.66,0,0,1,10.24,47.1Z" fill="#3b7097"/><path d="M109.63,220.72l-4.77,4.76a4.71,4.71,0,1,0,6.66,6.66l4.77-4.77a4.71,4.71,0,1,0-6.66-6.65Z" fill="#3b7097"/><path d="M140.94,220.72l-4.76,4.76a4.71,4.71,0,1,0,6.65,6.66l4.77-4.77a4.71,4.71,0,1,0-6.66-6.65Z" fill="#3b7097"/><path d="M171.31,222.13l-4.76,4.76a4.71,4.71,0,1,0,6.63,6.69l0,0,4.76-4.76a4.71,4.71,0,1,0-6.66-6.66Z" fill="#3b7097"/><path d="M109.29,199.23a4.72,4.72,0,0,0-6.66,0L97.86,204a4.71,4.71,0,0,0,6.67,6.66l4.76-4.77a4.71,4.71,0,0,0,0-6.66Z" fill="#3b7097"/><path d="M138.85,199.23a4.73,4.73,0,0,0-6.66,0L127.43,204a4.71,4.71,0,1,0,6.59,6.72l.06-.06,4.77-4.77A4.71,4.71,0,0,0,138.85,199.23Z" fill="#3b7097"/><path d="M168.41,199.23a4.72,4.72,0,0,0-6.66,0L157,204a4.71,4.71,0,0,0,6.66,6.66l4.76-4.77A4.71,4.71,0,0,0,168.41,199.23Z" fill="#3b7097"/><path d="M198,199.23a4.71,4.71,0,0,0-6.65,0L186.55,204a4.71,4.71,0,0,0,6.66,6.66l4.77-4.77A4.72,4.72,0,0,0,198,199.23Z" fill="#3b7097"/><path d="M97,152.67a33.23,33.23,0,0,1,9.77-23.6,34.25,34.25,0,0,1,4.92-4.06,31.72,31.72,0,0,1,15-42.29c.61-.29,1.24-.57,1.88-.82A31.72,31.72,0,0,0,88.13,125a33.37,33.37,0,0,0,18.68,61h18.27l.08-.41A33.36,33.36,0,0,1,97,152.67Z" fill="#3b7097" opacity="0.2"/></svg>`

2
src/app/assets/rain/PinNublado.js

@ -1 +1 @@
export default PinNublado = `<svg id="Camada_1" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 410"><defs><style>.cls-1,.cls-4{fill:#3b7097 !important;}.cls-2,.cls-3{fill:#ffb000 !important;}.cls-2,.cls-4{opacity:0.2 !important;}</style></defs><path class="cls-1" d="M205,14.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L196.06,390.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C350,79.69,285,14.64,205,14.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1S142,45.28,204.74,45.28s114.09,51.31,114.09,114.1S267.52,273.48,204.74,273.48Z"/><path class="cls-2" d="M229.51,91.15a39.41,39.41,0,0,0-16.39,7.26,31.26,31.26,0,0,1,7.92,2.16,60.15,60.15,0,0,1,8.89,3.62,7.57,7.57,0,0,1,2,1.48l.45-.1c37.37-7.11,43.06,15.53,43.39,17A39.61,39.61,0,0,0,229.51,91.15Z"/><path class="cls-3" d="M275.17,89.12l2.95-2.87a4.07,4.07,0,0,1,5.76.08h0a4.09,4.09,0,0,1-.08,5.77l-3,2.86a4.07,4.07,0,0,1-5.76-.08h0A4.07,4.07,0,0,1,275.17,89.12Z"/><path class="cls-3" d="M248.6,75.66l1.12-4a4.08,4.08,0,0,1,5-2.81h0a4.08,4.08,0,0,1,2.8,5l-1.12,4a4.07,4.07,0,0,1-5,2.8h0A4.06,4.06,0,0,1,248.6,75.66Z"/><path class="cls-3" d="M223,68.42h0a4.08,4.08,0,0,1,5,3l1,4a4.08,4.08,0,0,1-3,4.95h0a4.08,4.08,0,0,1-4.95-3l-1-4A4.08,4.08,0,0,1,223,68.42Z"/><path class="cls-3" d="M195.28,83.89h0A4.07,4.07,0,0,1,201,84l2.87,3a4.07,4.07,0,0,1-.09,5.76h0a4.07,4.07,0,0,1-5.76-.09l-2.87-2.95A4.07,4.07,0,0,1,195.28,83.89Z"/><path class="cls-1" d="M274.52,166.79a37,37,0,0,0-3.48-6.58c.2-.21-5-6.56-5.25-6.31a36.83,36.83,0,0,0-10.17-7,53.5,53.5,0,0,0-35.48-47.77c-1.95-.88-9.69-2.33-10.1-2.51a53.46,53.46,0,0,0-39.67,10A35,35,0,0,0,157,104.06a35.62,35.62,0,0,0-33.45,47.83A37.26,37.26,0,0,0,147.12,218H240a37.19,37.19,0,0,0,36.51-44.57Zm-13.93,34.54A28.88,28.88,0,0,1,240,209.85H147.12a29.1,29.1,0,0,1-16.29-53.22,4.08,4.08,0,0,0,1.39-5.14,27.19,27.19,0,0,1-2.68-11.83A27.48,27.48,0,0,1,157,112.21,27,27,0,0,1,169.13,115a4.08,4.08,0,0,0,4.4-.51,45.26,45.26,0,0,1,74,35v.18a4.07,4.07,0,0,0,2.65,3.81,29.24,29.24,0,0,1,18.93,27.28A28.91,28.91,0,0,1,260.59,201.33Z"/><path class="cls-3" d="M288.18,144.36h0a4.08,4.08,0,0,1,5-2.81l4,1.13a4.07,4.07,0,0,1,2.81,5h0a4.08,4.08,0,0,1-5,2.81l-4-1.12A4.08,4.08,0,0,1,288.18,144.36Z"/><path class="cls-3" d="M278.66,163h0a4.08,4.08,0,0,1,5.74-.6l3.19,2.6a4.07,4.07,0,0,1,.6,5.73h0a4.08,4.08,0,0,1-5.73.6l-3.2-2.6A4.08,4.08,0,0,1,278.66,163Z"/><path class="cls-3" d="M290.41,112.12l4-1a4.08,4.08,0,0,1,5,3h0a4.07,4.07,0,0,1-3,4.94l-4,1a4.08,4.08,0,0,1-4.95-3h0A4.07,4.07,0,0,1,290.41,112.12Z"/><path class="cls-3" d="M271.26,98.76c-16.49-17.18-43.11-17.86-60.81-1.94,0,0,10,2.54,9.68,2.42a35.88,35.88,0,0,1,45.09,5h0a36,36,0,0,1,.52,49.56c.86,1.09,3,2.62,5.26,6.31A44.14,44.14,0,0,0,271.26,98.76Z"/><path class="cls-4" d="M140.66,181.1A32.77,32.77,0,0,1,155.07,154a31.12,31.12,0,0,1,14.68-41.49c.6-.29,1.22-.56,1.85-.81A31.11,31.11,0,0,0,132,154a32.73,32.73,0,0,0,18.32,59.86h17.92l.08-.4A32.74,32.74,0,0,1,140.66,181.1Z"/></svg>`
export default PinNublado = `<svg id="b36da41c-5af7-43d4-a804-a445e7680e80" data-name="Camada 1" xmlns="http://www.w3.org/2000/svg" width="305" height="390" viewBox="0 0 305 390"><circle cx="152" cy="149.5" r="120.5" fill="#fff"/><path d="M152.5,4.64c-79.95,0-145,65.05-145,145a143.68,143.68,0,0,0,28.93,86.93L143.56,380.86c.27.35.68.48,1,.8a10.79,10.79,0,0,0,16.89-.8c30.85-41.16,87.4-118,109.14-147a.14.14,0,0,1,0,0l.13-.18a144,144,0,0,0,26.78-84C297.5,69.69,232.45,4.64,152.5,4.64Zm-.26,258.84c-62.79,0-114.1-51.32-114.1-114.1s51.31-114.1,114.1-114.1,114.09,51.31,114.09,114.1S215,263.48,152.24,263.48Z" fill="#3b7097"/><path d="M177,81.15a39.41,39.41,0,0,0-16.39,7.26,31.26,31.26,0,0,1,7.92,2.16,60.15,60.15,0,0,1,8.89,3.62,7.57,7.57,0,0,1,2,1.48l.45-.1c37.37-7.11,43.06,15.53,43.39,17A39.61,39.61,0,0,0,177,81.15Z" fill="#ffb000" opacity="0.2"/><path d="M222.67,79.12l3-2.87a4.07,4.07,0,0,1,5.76.08h0a4.09,4.09,0,0,1-.08,5.77l-3,2.86a4.07,4.07,0,0,1-5.76-.08h0A4.07,4.07,0,0,1,222.67,79.12Z" fill="#ffb000"/><path d="M196.1,65.66l1.12-4a4.08,4.08,0,0,1,5-2.81h0a4.08,4.08,0,0,1,2.8,5l-1.12,4a4.07,4.07,0,0,1-5,2.8h0A4.06,4.06,0,0,1,196.1,65.66Z" fill="#ffb000"/><path d="M170.51,58.42h0a4.08,4.08,0,0,1,5,3l1,4a4.08,4.08,0,0,1-3,4.95h0a4.08,4.08,0,0,1-4.95-3l-1-4A4.08,4.08,0,0,1,170.51,58.42Z" fill="#ffb000"/><path d="M142.78,73.89h0a4.07,4.07,0,0,1,5.76.08l2.87,3a4.07,4.07,0,0,1-.09,5.76h0a4.07,4.07,0,0,1-5.76-.09l-2.87-2.95A4.07,4.07,0,0,1,142.78,73.89Z" fill="#ffb000"/><path d="M222,156.79a37,37,0,0,0-3.48-6.58c.2-.21-5-6.56-5.25-6.31a36.83,36.83,0,0,0-10.17-7,53.5,53.5,0,0,0-35.48-47.77c-1.95-.88-9.69-2.33-10.1-2.51a53.46,53.46,0,0,0-39.67,10,35,35,0,0,0-13.37-2.59,35.62,35.62,0,0,0-33.45,47.83A37.26,37.26,0,0,0,94.62,208h92.89A37.19,37.19,0,0,0,224,163.43Zm-13.93,34.54a28.88,28.88,0,0,1-20.58,8.52H94.62a29.1,29.1,0,0,1-16.29-53.22,4.08,4.08,0,0,0,1.39-5.14A27.19,27.19,0,0,1,77,129.66a27.48,27.48,0,0,1,27.46-27.45A27,27,0,0,1,116.63,105a4.08,4.08,0,0,0,4.4-.51,45.26,45.26,0,0,1,74,35v.18a4.07,4.07,0,0,0,2.65,3.81,29.24,29.24,0,0,1,18.93,27.28A28.91,28.91,0,0,1,208.09,191.33Z" fill="#3b7097"/><path d="M235.68,134.36h0a4.08,4.08,0,0,1,5-2.81l4,1.13a4.07,4.07,0,0,1,2.81,5h0a4.08,4.08,0,0,1-5,2.81l-4-1.12A4.08,4.08,0,0,1,235.68,134.36Z" fill="#ffb000"/><path d="M226.16,153h0a4.08,4.08,0,0,1,5.74-.6l3.19,2.6a4.07,4.07,0,0,1,.6,5.73h0a4.08,4.08,0,0,1-5.73.6l-3.2-2.6A4.08,4.08,0,0,1,226.16,153Z" fill="#ffb000"/><path d="M237.91,102.12l4-1a4.08,4.08,0,0,1,4.95,3h0a4.07,4.07,0,0,1-3,4.94l-4,1a4.08,4.08,0,0,1-5-3h0A4.07,4.07,0,0,1,237.91,102.12Z" fill="#ffb000"/><path d="M218.76,88.76C202.27,71.58,175.65,70.9,158,86.82c0,0,10,2.54,9.68,2.42a35.88,35.88,0,0,1,45.09,5h0a36,36,0,0,1,.52,49.56c.86,1.09,3,2.62,5.26,6.31A44.14,44.14,0,0,0,218.76,88.76Z" fill="#ffb000"/><path d="M88.16,171.1A32.77,32.77,0,0,1,102.57,144a31.12,31.12,0,0,1,14.68-41.49c.6-.29,1.22-.56,1.85-.81A31.11,31.11,0,0,0,79.47,144a32.73,32.73,0,0,0,18.32,59.86h17.92l.08-.4A32.74,32.74,0,0,1,88.16,171.1Z" fill="#3b7097" opacity="0.2"/></svg>`

2
src/app/assets/river/PinRioCheio.js
File diff suppressed because it is too large
View File

2
src/app/assets/river/PinRioExtravasado.js
File diff suppressed because it is too large
View File

2
src/app/assets/river/PinRioNormal.js
File diff suppressed because it is too large
View File

26
src/app/components/AssembleModalObject.js

@ -25,13 +25,13 @@ function getLogo(name, situation) {
} }
if (name == "rain") { if (name == "rain") {
if (situation == "sem chuva") {
if (situation == "SEM CHUVA") {
return custom_assets.rainLevel[0]; return custom_assets.rainLevel[0];
} else if (situation == "chuva fraca") {
} else if (situation == "CHUVA FRACA") {
return custom_assets.rainLevel[1]; return custom_assets.rainLevel[1];
} else if (situation == "chuva moderada") {
} else if (situation == "CHUVA MODERADA") {
return custom_assets.rainLevel[2]; return custom_assets.rainLevel[2];
} else if (situation == "chuva forte") {
} else if (situation == "CHUVA FORTE") {
return custom_assets.rainLevel[3]; return custom_assets.rainLevel[3];
} else { } else {
return custom_assets.rainLevel[3]; return custom_assets.rainLevel[3];
@ -39,13 +39,13 @@ function getLogo(name, situation) {
} }
if (name == "riverFlood") { if (name == "riverFlood") {
if (situation == "baixo") {
if (situation == "BAIXO") {
return custom_assets.riverLevel[0]; return custom_assets.riverLevel[0];
} else if (situation == "normal") {
} else if (situation == "NORMAL") {
return custom_assets.riverLevel[1]; return custom_assets.riverLevel[1];
} else if (situation == "alto") {
} else if (situation == "ALTO") {
return custom_assets.riverLevel[2]; return custom_assets.riverLevel[2];
} else if (situation == "inundar") {
} else if (situation == "INUNDAR") {
return custom_assets.riverLevel[3]; return custom_assets.riverLevel[3];
} }
return custom_assets.riverLevel[0]; return custom_assets.riverLevel[0];
@ -64,6 +64,7 @@ function verifyMeasureDates(labels, measureDate) {
const AssembleModalObject = (response, name) => { const AssembleModalObject = (response, name) => {
var situation = null; var situation = null;
var user = null; var user = null;
var institution = null;
var address = null; var address = null;
var date = null; var date = null;
var time = null; var time = null;
@ -75,7 +76,9 @@ const AssembleModalObject = (response, name) => {
}; };
if (JSON.parse(response)) { if (JSON.parse(response)) {
const r = JSON.parse(response);
const r = JSON.parse(response).array_to_json;
user = r[0].formsanswersuserinformer;
if (name == "automaticPluviometer") { if (name == "automaticPluviometer") {
(situation = "PLUVIÔMETRO"), (situation = "PLUVIÔMETRO"),
@ -90,13 +93,12 @@ const AssembleModalObject = (response, name) => {
); );
} }
if (f.fieldname == "siglarede") { if (f.fieldname == "siglarede") {
user = f.fieldsanswersvalue;
institution = f.fieldsanswersvalue;
} }
if (f.fieldname == "nome") { if (f.fieldname == "nome") {
address = f.fieldsanswersvalue; address = f.fieldsanswersvalue;
} }
}); });
} else { } else {
if (r[0].array_to_json) { if (r[0].array_to_json) {
r[0].array_to_json.forEach(function (f) { r[0].array_to_json.forEach(function (f) {
@ -119,10 +121,12 @@ const AssembleModalObject = (response, name) => {
} }
} }
} }
return { return {
name: name, name: name,
title: situation, title: situation,
user: user, user: user,
institution: institution,
address: address, address: address,
date: date + " | " + time, date: date + " | " + time,
description: comments, description: comments,

102
src/app/components/MapModal.js

@ -1,6 +1,7 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Text, TouchableOpacity, View, StyleSheet, Image } from "react-native"; import { Text, TouchableOpacity, View, StyleSheet, Image } from "react-native";
import { MaterialCommunityIcons } from "@expo/vector-icons"; import { MaterialCommunityIcons } from "@expo/vector-icons";
import { FontAwesome5 } from "@expo/vector-icons";
import SelfClosingModal from "../components/SelfClosingModal"; import SelfClosingModal from "../components/SelfClosingModal";
import colors from "../config/colors"; import colors from "../config/colors";
import { showMessage } from "react-native-flash-message"; import { showMessage } from "react-native-flash-message";
@ -26,12 +27,25 @@ function notImplemented() {
}); });
} }
function topBar(props, setShowModal) {
function loadingData() {
return (
<View>
<Text>Carregando dados...</Text>
</View>
);
}
function onCloseModal(setShowModal, setCurrentMarker) {
setShowModal(null);
setCurrentMarker(undefined);
}
function topBar(props, setShowModal, setCurrentMarker) {
return ( return (
<View style={styles.topBar}> <View style={styles.topBar}>
<View style={{ alignContent: "center", flex: 1, marginHorizontal: 10 }}> <View style={{ alignContent: "center", flex: 1, marginHorizontal: 10 }}>
<Text style={[styles.bodyTitle, { color: "white" }]}> <Text style={[styles.bodyTitle, { color: "white" }]}>
{props.title}
{props ? props.title : "Aguarde..."}
</Text> </Text>
</View> </View>
@ -62,7 +76,7 @@ function topBar(props, setShowModal) {
<TouchableOpacity <TouchableOpacity
style={styles.topBarIcon} style={styles.topBarIcon}
onPress={() => setShowModal(null)}
onPress={() => onCloseModal(setShowModal, setCurrentMarker)}
> >
<MaterialCommunityIcons <MaterialCommunityIcons
name="close" name="close"
@ -82,7 +96,7 @@ function iconTextRow(props) {
<View alignSelf="flex-start" marginRight={10}> <View alignSelf="flex-start" marginRight={10}>
<MaterialCommunityIcons <MaterialCommunityIcons
name={props.name} name={props.name}
size={18}
size={25}
color={colors.primary} color={colors.primary}
/> />
</View> </View>
@ -92,6 +106,18 @@ function iconTextRow(props) {
); );
} }
function iconInstitutionTextRow(props) {
return (
<View flexDirection="row" alignSelf="flex-start" marginVertical={3}>
<View alignSelf="flex-start" marginRight={10}>
<FontAwesome5 name={props.name} size={25} color={colors.primary} />
</View>
<Text style={styles.text}>{props.description}</Text>
</View>
);
}
function iconImageRow(props) { function iconImageRow(props) {
return ( return (
<View flexDirection="row" alignSelf="flex-start" marginVertical={3}> <View flexDirection="row" alignSelf="flex-start" marginVertical={3}>
@ -200,17 +226,25 @@ function componentBody(props) {
const date = props.date ? props.date : "implementando..."; const date = props.date ? props.date : "implementando...";
const address = props.address ? props.address : "Erro ao carregar endereço"; const address = props.address ? props.address : "Erro ao carregar endereço";
const user = props.user ? props.user : "Usuário ativo"; const user = props.user ? props.user : "Usuário ativo";
const institution = props.institution
? props.institution
: "Erro ao carregar instituição";
return ( return (
<View style={styles.bodyRow}> <View style={styles.bodyRow}>
<Image style={styles.bodyIcon} resizeMode="stretch" source={props.logo} /> <Image style={styles.bodyIcon} resizeMode="stretch" source={props.logo} />
<View style={styles.bodyInfo}> <View style={styles.bodyInfo}>
{!isOfficialPluviometer(props.name) &&
iconTextRow({ name: "account", description: user })}
{props.institution && iconInstitutionTextRow({
name: "university",
description: institution,
})}
{iconTextRow({ name: "map-marker", description: address })} {iconTextRow({ name: "map-marker", description: address })}
{!isPluviometer(props.name) && {!isPluviometer(props.name) &&
iconTextRow({ name: "calendar", description: date })} iconTextRow({ name: "calendar", description: date })}
{iconTextRow({ name: "account", description: user })}
{props.name != "automaticPluviometer" &&
{!isOfficialPluviometer(props.name) &&
iconImageRow({ name: "camera", pic: pictures })} iconImageRow({ name: "camera", pic: pictures })}
</View> </View>
</View> </View>
@ -236,6 +270,10 @@ function isPluviometer(name) {
return name === "pluviometer" || name === "automaticPluviometer"; return name === "pluviometer" || name === "automaticPluviometer";
} }
function isOfficialPluviometer(name) {
return name === "automaticPluviometer";
}
function MapModal({ showModal, setShowModal, markers }) { function MapModal({ showModal, setShowModal, markers }) {
const [currentMarker, setCurrentMarker] = useState(undefined); const [currentMarker, setCurrentMarker] = useState(undefined);
var timeFilter = null; var timeFilter = null;
@ -249,11 +287,10 @@ function MapModal({ showModal, setShowModal, markers }) {
} }
const result = await getFieldsAnswers.fieldsAnswers(timeFilter, id); const result = await getFieldsAnswers.fieldsAnswers(timeFilter, id);
if (result.data) {
console.log(timeFilter);
if (result.data && showModal && currentMarker == undefined) {
setCurrentMarker( setCurrentMarker(
AssembleModalObject( AssembleModalObject(
JSON.stringify(result.data.responseData.array_to_json),
JSON.stringify(result.data.responseData),
name name
) )
); );
@ -265,22 +302,44 @@ function MapModal({ showModal, setShowModal, markers }) {
getAnswers(showModal, markers.get(showModal).name); getAnswers(showModal, markers.get(showModal).name);
} }
if (currentMarker != undefined && showModal != null) {
if (showModal != null) {
return ( return (
<SelfClosingModal <SelfClosingModal
style={{ position: "absolute" }} style={{ position: "absolute" }}
animationType="slide" animationType="slide"
transparent={true} transparent={true}
showModal={showModal} showModal={showModal}
setShowModal={setShowModal}
setShowModal={() => onCloseModal(setShowModal, setCurrentMarker)}
> >
{topBar(currentMarker, setShowModal)}
<View style={{ padding: 16 }}>
{componentBody(currentMarker)}
{isPluviometer(currentMarker.name) ? moreInfo(currentMarker) : null}
{/* {!isPluviometer(currentMarker.name) ? reviews(currentMarker) : null} */}
{userMessage(currentMarker)}
</View>
{topBar(currentMarker, setShowModal, setCurrentMarker)}
{currentMarker != undefined && (
<View style={{ padding: 16 }}>
{componentBody(currentMarker)}
{isPluviometer(currentMarker.name) ? moreInfo(currentMarker) : null}
{/* {!isPluviometer(currentMarker.name) ? reviews(currentMarker) : null} */}
{userMessage(currentMarker)}
</View>
)}
{currentMarker == undefined && (
<View style={styles.bodyInfo}>
<View style={{ padding: dimensions.spacing.big_padding }}>
<MaterialCommunityIcons
name="sync"
size={48}
color={colors.primary}
style={{
alignSelf: "center",
alignItems: "center",
marginBottom: 12,
}}
/>
<Text style={styles.textWait}>
Aguarde um momento enquanto os dados são carregados
</Text>
</View>
</View>
)}
</SelfClosingModal> </SelfClosingModal>
); );
} else { } else {
@ -338,6 +397,13 @@ const styles = StyleSheet.create({
fontWeight: "500", fontWeight: "500",
fontSize: dimensions.text.default, fontSize: dimensions.text.default,
}, },
textWait: {
fontSize: dimensions.text.secondary,
textAlign: "center",
color: colors.primary,
fontWeight: "bold",
paddingBottom: dimensions.spacing.big_padding,
},
}); });
export default MapModal; export default MapModal;

3
src/app/config/assets.js

@ -35,6 +35,7 @@ import PinPluviometroArt from "../assets/pluviometer/PinPluviometroArt";
import FloodPassable from "../assets/floodZonesAssets/passable.svg"; import FloodPassable from "../assets/floodZonesAssets/passable.svg";
import FloodNotPassable from "../assets/floodZonesAssets/not_passable.svg"; import FloodNotPassable from "../assets/floodZonesAssets/not_passable.svg";
import PinPluviometerOfficial from "../assets/pluviometer/PinPluviometerOfficial";
export default { export default {
floodZones: { floodZones: {
@ -91,7 +92,7 @@ export default {
pluviometer: require("../assets/pluviometer/diario_pluviometrico.png"), pluviometer: require("../assets/pluviometer/diario_pluviometrico.png"),
pluviometer_pin: PinPluviometroArt, pluviometer_pin: PinPluviometroArt,
officialPluviometer: require("../assets/pluviometer/pluviometroOficial.png"), officialPluviometer: require("../assets/pluviometer/pluviometroOficial.png"),
officialPluviometer_pin: require("../assets/pluviometer/PinPluviometroOficial.png"),
officialPluviometer_pin: PinPluviometerOfficial,
PluviometerIcon: Pluviometer, PluviometerIcon: Pluviometer,
OfficialPluviometer: OfficialPluviometer, OfficialPluviometer: OfficialPluviometer,
AppLogoTitle: AppLogoTitle, AppLogoTitle: AppLogoTitle,

18
src/app/hooks/useFiltering.js

@ -1,49 +1,53 @@
import moment from "moment"; import moment from "moment";
function useFiltering(location) { function useFiltering(location) {
const initialDate = moment().format("YYYY-MM-DDTHH:mm:ss");
const endpoint =
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?";
const initialDate = moment().add(1, "days").format("YYYY-MM-DDTHH:mm:ss");
const finalDate = moment().subtract(1, "days").format("YYYY-MM-DDTHH:mm:ss"); const finalDate = moment().subtract(1, "days").format("YYYY-MM-DDTHH:mm:ss");
// console.log(initialDate+"/"+finalDate);
const filters = [ const filters = [
{ {
name: "floodZones", name: "floodZones",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=FLOODZONES_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=5000&limit=5` `type=FLOODZONES_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=5000&limit=5`
), ),
}, },
{ {
name: "rain", name: "rain",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=RAIN_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=30` `type=RAIN_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=30`
), ),
}, },
{ {
name: "riverFlood", name: "riverFlood",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=RIVERFLOOD_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=5` `type=RIVERFLOOD_FORM&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=5`
), ),
}, },
{ {
name: "pluviometer", name: "pluviometer",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=PLUVIOMETER_REGISTRATION&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=5` `type=PLUVIOMETER_REGISTRATION&time=${finalDate}/${initialDate}&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=5`
), ),
}, },
{ {
name: "susceptibilityAreas", name: "susceptibilityAreas",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=FLOODZONES_OFFICIAL&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=15` `type=FLOODZONES_OFFICIAL&lat=${location.lat}&lon=${location.long}&buffer=50000&limit=15`
), ),
}, },
{ {
name: "automaticPluviometer", name: "automaticPluviometer",
socketUrl: new WebSocket( socketUrl: new WebSocket(
"wss://waterproofing.geog.uni-heidelberg.de/wss/hot/formsanswers?" +
endpoint +
`type=PLUVIOMETERS_OFFICIAL&lat=${location.lat}&lon=${location.long}&buffer=500000&limit=10` `type=PLUVIOMETERS_OFFICIAL&lat=${location.lat}&lon=${location.long}&buffer=500000&limit=10`
), ),
}, },

18
src/app/hooks/useSocketMarkers.js

@ -5,7 +5,7 @@ import PinTransitavel from "../assets/floodZonesAssets/PinTransitavel";
const custom_assets = { const custom_assets = {
pluviometer: assets.pluviometer, pluviometer: assets.pluviometer,
officialPluviometer: assets.officialPluviometer,
officialPluviometer: assets.pluviometer,
floodZones: assets.floodZones, floodZones: assets.floodZones,
riverLevel: ["low", "normal", "high", "flooding"].map((key) => { riverLevel: ["low", "normal", "high", "flooding"].map((key) => {
return assets.riverLevel[key]; return assets.riverLevel[key];
@ -17,7 +17,7 @@ const custom_assets = {
const custom_assets_pin = { const custom_assets_pin = {
pluviometer: assets.pluviometer_pin, pluviometer: assets.pluviometer_pin,
officialPluviometer: assets.pluviometer_pin,//assets.officialPluviometer_pin,
officialPluviometer: assets.officialPluviometer_pin,
floodZones: { floodZones: {
passable: PinTransitavel, passable: PinTransitavel,
not_passable: PinIntransitavel, not_passable: PinIntransitavel,
@ -157,26 +157,22 @@ function buildMarkerObject(response, name) {
const r = JSON.parse(response); const r = JSON.parse(response);
const resposta = r.formsanswersgeom; const resposta = r.formsanswersgeom;
const formsanswersgeom = JSON.parse(resposta).coordinates; const formsanswersgeom = JSON.parse(resposta).coordinates;
var situation = null; var situation = null;
if (r.fias) {
r.fias.forEach(function (f) {
if (f.fieldname == "situation") {
situation = f.fieldsanswersvalue;
}
});
if (r.array_to_json) {
situation = r.array_to_json.find((field)=> field.fieldname == "situation");
} }
// console.log(situation.fieldsanswersvalue);
return { return {
ID: r.formsanswersid, ID: r.formsanswersid,
name: name, name: name,
title: situation,
title: situation ? situation.fieldsanswersvalue : null,
coordinate: { coordinate: {
latitude: formsanswersgeom[1], latitude: formsanswersgeom[1],
longitude: formsanswersgeom[0], longitude: formsanswersgeom[0],
}, },
image: getImage(name, situation),
image: getImage(name, situation ? situation.fieldsanswersvalue : null),
}; };
} }

10
src/app/screens/MapFeedScreen.js

@ -13,14 +13,14 @@ export default function MapFeedScreen(props) {
const [dataOptionsToShow, setDataOptionsToShow] = useState({ const [dataOptionsToShow, setDataOptionsToShow] = useState({
oficial: { oficial: {
automaticPluviometer: false,
automaticPluviometer: true,
susceptibilityAreas: false, susceptibilityAreas: false,
}, },
citzen: { citzen: {
floodRisk: false,
pluviometer: false,
rain: true,
floodZones: false,
floodRisk: true,
pluviometer: true,
rain: false,
floodZones: true,
riverFlood: false, riverFlood: false,
}, },
}); });

4
src/app/screens/SharingFloodZonesScreen.js

@ -87,14 +87,14 @@ function SharingFloodZonesScreen(props) {
SvgImage={assets.floodZones.passable} SvgImage={assets.floodZones.passable}
onPress={() => { onPress={() => {
setPassable(1); setPassable(1);
setFloodSituation("TRANSITAVEL");
setFloodSituation("TRANSITÁVEL");
}} }}
/> />
<SvgLabeledButton <SvgLabeledButton
onPress={() => { onPress={() => {
setPassable(0); setPassable(0);
setFloodSituation("INTRANSITAVEL");
setFloodSituation("INTRANSITÁVEL");
}} }}
label={"INTRANSITÁVEL"} label={"INTRANSITÁVEL"}
isToggle={passable == 0} isToggle={passable == 0}

Loading…
Cancel
Save