Resolve "Feedback sur bouton geoloc" #5

Merged
dbroqua merged 1 commit from 1-feedback-sur-bouton-geoloc into master 2020-03-03 22:24:29 +01:00
12 changed files with 49 additions and 57 deletions
Showing only changes of commit fcf14a77f4 - Show all commits

View file

@ -1,8 +0,0 @@
#! /bin/bash
mkdir ./extracts
cd ./extracts
wget https://donnees.roulez-eco.fr/opendata/jour
unzip jour
mv *.xml ../gasStations.xml
rm jour

View file

@ -16,6 +16,7 @@
"react": "^16.13.0", "react": "^16.13.0",
"react-bootstrap": "^1.0.0-beta.17", "react-bootstrap": "^1.0.0-beta.17",
"react-dom": "^16.13.0", "react-dom": "^16.13.0",
"react-icons": "^3.9.0",
"react-map-gl": "^5.2.3", "react-map-gl": "^5.2.3",
"react-moment": "^0.9.7", "react-moment": "^0.9.7",
"react-scripts": "3.4.0", "react-scripts": "3.4.0",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,9 +1,17 @@
.locationIcon { .locationIcon {
width: 32px; width: 32px;
}
div.mapboxgl-marker {
margin-top: -16px; margin-top: -16px;
margin-left: -16px; margin-left: -16px;
} }
div.mapboxgl-marker.gasStation {
margin-top: -24px;
margin-left: -30px;
}
div.react-toast-notifications__container { div.react-toast-notifications__container {
z-index: 1031 ; z-index: 1031 ;
} }

View file

@ -113,7 +113,7 @@ class Application extends React.Component {
toggleAboutModal={this.toggleAboutModal} toggleAboutModal={this.toggleAboutModal}
/> />
<Map selectedGasType={selectedGasType} userLocation={userLocation} needUpdateUserLocation={needUpdateUserLocation} setNeedUpdateUserLocation={this.setNeedUpdateUserLocation} showGasStation={this.showGasStation} /> <Map selectedGasType={selectedGasType} userLocation={userLocation} needUpdateUserLocation={needUpdateUserLocation} setNeedUpdateUserLocation={this.setNeedUpdateUserLocation} showGasStation={this.showGasStation} />
<Footer selectedGasType={selectedGasType} selectGasType={this.selectGasType} setNeedUpdateUserLocation={this.setNeedUpdateUserLocation} /> <Footer selectedGasType={selectedGasType} isLocating={needUpdateUserLocation} selectGasType={this.selectGasType} setNeedUpdateUserLocation={this.setNeedUpdateUserLocation} />
</ToastProvider> </ToastProvider>
); );
} }

View file

@ -1,6 +1,11 @@
import React from 'react'; import React from 'react';
import { Navbar, Button } from "react-bootstrap"; import {
Navbar,
Button,
Spinner
} from "react-bootstrap";
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { MdGpsFixed } from "react-icons/md";
import GasTypes from "./GasTypes"; import GasTypes from "./GasTypes";
@ -9,24 +14,34 @@ const Footer = (props) => {
selectGasType, selectGasType,
selectedGasType, selectedGasType,
setNeedUpdateUserLocation, setNeedUpdateUserLocation,
isLocating,
} = props; } = props;
return ( return (
<Navbar bg="light" variant="light" fixed="bottom"> <Navbar bg="light" variant="light" fixed="bottom">
<GasTypes selectedGasType={selectedGasType} selectGasType={selectGasType} /> <GasTypes selectedGasType={selectedGasType} selectGasType={selectGasType} />
<Button <div style={{width: "36px", display: "flex", justifyContent: "center", paddingLeft: "1rem"}}>
variant="link" {isLocating ? (
onClick={() => setNeedUpdateUserLocation(true)} <Spinner animation="border" size="sm" role="status">
onFocus={() => { }} <span className="sr-only">Chargement...</span>
onBlur={() => { }} </Spinner>
> ) : (
<img src="/gps.png" alt="Géolocalisez moi" /> <Button
</Button> variant="link"
onClick={() => setNeedUpdateUserLocation(true)}
onFocus={() => { }}
onBlur={() => { }}
>
<MdGpsFixed />
</Button>
)}
</div>
</Navbar> </Navbar>
); );
}; };
Footer.propTypes = { Footer.propTypes = {
isLocating: PropTypes.bool.isRequired,
selectedGasType: PropTypes.string.isRequired, selectedGasType: PropTypes.string.isRequired,
selectGasType: PropTypes.func.isRequired, selectGasType: PropTypes.func.isRequired,
setNeedUpdateUserLocation: PropTypes.func.isRequired, setNeedUpdateUserLocation: PropTypes.func.isRequired,

View file

@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import { Modal, Button, ListGroup } from "react-bootstrap"; import { Modal, Button, ListGroup } from "react-bootstrap";
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { FaWaze } from "react-icons/fa";
import { gasTypes } from "../config"; import { gasTypes } from "../config";
import { capitalizeFirstLetter} from "../helpers"; import { capitalizeFirstLetter} from "../helpers";
@ -69,11 +70,7 @@ class GasStation extends React.Component {
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button variant="primary" onClick={() => hideModal(true)}> <Button variant="primary" onClick={() => hideModal(true)}>
<img <FaWaze size="2em" />
className="locationIcon"
src="/waze.png"
alt="S'y rendre"
/>
</Button> </Button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>

View file

@ -4,6 +4,8 @@ import ReactMapGL, { Marker } from 'react-map-gl';
import { Button } from "react-bootstrap"; import { Button } from "react-bootstrap";
import { withToastManager } from 'react-toast-notifications'; import { withToastManager } from 'react-toast-notifications';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { MdLocalGasStation } from "react-icons/md";
import { GiPositionMarker } from "react-icons/gi";
import { haveSelectedGas } from '../helpers'; import { haveSelectedGas } from '../helpers';
import { mapboxToken, radius, baseApiUrl } from "../config"; import { mapboxToken, radius, baseApiUrl } from "../config";
@ -215,7 +217,7 @@ class Map extends React.Component {
latitude={userLocation.latitude} latitude={userLocation.latitude}
longitude={userLocation.longitude} longitude={userLocation.longitude}
> >
<img className="locationIcon" src="/car.png" alt="My position" /> <GiPositionMarker size="2em" />
</Marker> </Marker>
) : (null) ) : (null)
} }
@ -224,6 +226,7 @@ class Map extends React.Component {
key={gasStation.stationId} key={gasStation.stationId}
latitude={gasStation.location.coordinates[1]} latitude={gasStation.location.coordinates[1]}
longitude={gasStation.location.coordinates[0]} longitude={gasStation.location.coordinates[0]}
className="gasStation"
> >
<Button <Button
variant="link" variant="link"
@ -231,11 +234,7 @@ class Map extends React.Component {
onFocus={() => { }} onFocus={() => { }}
onBlur={() => { }} onBlur={() => { }}
> >
<img <MdLocalGasStation size="2em" />
className="locationIcon"
src="/gas-station.png"
alt={`${gasStation.stationId}`}
/>
</Button> </Button>
</Marker> </Marker>

View file

@ -4394,11 +4394,6 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
eventemitter3@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
integrity sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=
eventemitter3@^4.0.0: eventemitter3@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb"
@ -5449,13 +5444,6 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
dependencies: dependencies:
safer-buffer ">= 2.1.2 < 3" safer-buffer ">= 2.1.2 < 3"
iconv-lite@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.1.tgz#b2425d3c7b18f7219f2ca663d103bddb91718d64"
integrity sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q==
dependencies:
safer-buffer ">= 2.1.2 < 3"
icss-utils@^4.0.0, icss-utils@^4.1.1: icss-utils@^4.0.0, icss-utils@^4.1.1:
version "4.1.1" version "4.1.1"
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
@ -9149,6 +9137,13 @@ react-error-overlay@^6.0.6:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.6.tgz#ac4d9dc4c1b5c536c2c312bf66aa2b09bfa384e2" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.6.tgz#ac4d9dc4c1b5c536c2c312bf66aa2b09bfa384e2"
integrity sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw== integrity sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw==
react-icons@^3.9.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.9.0.tgz#89a00f20a0e02e6bfd899977eaf46eb4624239d5"
integrity sha512-gKbYKR+4QsD3PmIHLAM9TDDpnaTsr3XZeK1NTAb6WQQ+gxEdJ0xuCgLq0pxXdS7Utg2AIpcVhM1ut/jlDhcyNg==
dependencies:
camelcase "^5.0.0"
react-is@^16.3.2, react-is@^16.8.1, react-is@^16.8.4: react-is@^16.3.2, react-is@^16.8.1, react-is@^16.8.4:
version "16.13.0" version "16.13.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527"
@ -11521,26 +11516,11 @@ ws@^6.1.2, ws@^6.2.1:
dependencies: dependencies:
async-limiter "~1.0.0" async-limiter "~1.0.0"
xml-lexer@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/xml-lexer/-/xml-lexer-0.2.2.tgz#518193a4aa334d58fc7d248b549079b89907e046"
integrity sha1-UYGTpKozTVj8fSSLVJB5uJkH4EY=
dependencies:
eventemitter3 "^2.0.0"
xml-name-validator@^3.0.0: xml-name-validator@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
xml-reader@^2.4.3:
version "2.4.3"
resolved "https://registry.yarnpkg.com/xml-reader/-/xml-reader-2.4.3.tgz#9f810caf7c425a5aafb848b1c45103c9e71d7530"
integrity sha1-n4EMr3xCWlqvuEixxFEDyecddTA=
dependencies:
eventemitter3 "^2.0.0"
xml-lexer "^0.2.2"
xmlchars@^2.1.1: xmlchars@^2.1.1:
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"