react-spatial 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/conventional-pr-title.yml +21 -0
- package/.github/workflows/main.yml +28 -0
- package/.husky/commit-msg +4 -0
- package/.husky/post-checkout +4 -0
- package/.husky/post-merge +4 -0
- package/.husky/post-rebase +4 -0
- package/.husky/pre-commit +4 -0
- package/.nvmrc +1 -0
- package/.whitesource +8 -0
- package/CHANGELOG.md +65 -0
- package/DEVELOP.md +113 -0
- package/__mocks__/mapbox-gl.js +11 -0
- package/__mocks__/resize-observer-polyfill.js +9 -0
- package/babel.config.js +3 -0
- package/commitlint.config.js +1 -0
- package/data/topic1.js +119 -0
- package/data/topic2.js +28 -0
- package/doc/README.md +21 -0
- package/doc/doc-config.json +4 -0
- package/package.json +4 -3
- package/pull_request_template.md +16 -0
- package/renovate.json +4 -0
- package/scripts/read-pkg-json.js +17 -0
- package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.js +322 -0
- package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +69 -0
- package/src/components/BaseLayerSwitcher/README.md +61 -0
- package/src/components/BaseLayerSwitcher/__snapshots__/BaseLayerSwitcher.test.js.snap +88 -0
- package/src/components/BaseLayerSwitcher/index.js +1 -0
- package/src/components/BasicMap/BasicMap.js +413 -0
- package/src/components/BasicMap/BasicMap.test.js +281 -0
- package/src/components/BasicMap/README.md +18 -0
- package/src/components/BasicMap/index.js +1 -0
- package/{components → src/components}/CanvasSaveButton/CanvasSaveButton.js +320 -93
- package/src/components/CanvasSaveButton/CanvasSaveButton.test.js +148 -0
- package/src/components/CanvasSaveButton/README.md +76 -0
- package/src/components/CanvasSaveButton/__snapshots__/CanvasSaveButton.test.js.snap +76 -0
- package/src/components/CanvasSaveButton/index.js +1 -0
- package/src/components/Copyright/Copyright.js +89 -0
- package/src/components/Copyright/Copyright.test.js +134 -0
- package/src/components/Copyright/README.md +36 -0
- package/src/components/Copyright/index.js +1 -0
- package/src/components/FeatureExportButton/FeatureExportButton.js +118 -0
- package/src/components/FeatureExportButton/FeatureExportButton.test.js +417 -0
- package/src/components/FeatureExportButton/README.md +76 -0
- package/src/components/FeatureExportButton/__snapshots__/FeatureExportButton.test.js.snap +67 -0
- package/src/components/FeatureExportButton/index.js +1 -0
- package/src/components/FitExtent/FitExtent.js +62 -0
- package/src/components/FitExtent/FitExtent.test.js +48 -0
- package/src/components/FitExtent/README.md +34 -0
- package/src/components/FitExtent/__snapshots__/FitExtent.test.js.snap +13 -0
- package/src/components/FitExtent/index.js +1 -0
- package/{components → src/components}/Geolocation/Geolocation.js +144 -61
- package/src/components/Geolocation/Geolocation.test.js +267 -0
- package/src/components/Geolocation/README.md +25 -0
- package/src/components/Geolocation/__snapshots__/Geolocation.test.js.snap +92 -0
- package/src/components/Geolocation/index.js +1 -0
- package/src/components/LayerTree/LayerTree.js +487 -0
- package/src/components/LayerTree/LayerTree.test.js +337 -0
- package/src/components/LayerTree/README.md +92 -0
- package/src/components/LayerTree/__snapshots__/LayerTree.test.js.snap +1746 -0
- package/src/components/LayerTree/index.js +1 -0
- package/src/components/MousePosition/MousePosition.js +175 -0
- package/src/components/MousePosition/MousePosition.test.js +132 -0
- package/src/components/MousePosition/README.md +50 -0
- package/src/components/MousePosition/__snapshots__/MousePosition.test.js.snap +76 -0
- package/src/components/MousePosition/index.js +1 -0
- package/src/components/NorthArrow/NorthArrow.js +75 -0
- package/src/components/NorthArrow/NorthArrow.test.js +104 -0
- package/src/components/NorthArrow/README.md +59 -0
- package/src/components/NorthArrow/__snapshots__/NorthArrow.test.js.snap +117 -0
- package/src/components/NorthArrow/index.js +1 -0
- package/src/components/Overlay/Overlay.js +176 -0
- package/src/components/Overlay/Overlay.test.js +149 -0
- package/src/components/Overlay/README.md +59 -0
- package/src/components/Overlay/__snapshots__/Overlay.test.js.snap +9 -0
- package/src/components/Overlay/index.js +1 -0
- package/src/components/Permalink/Permalink.js +326 -0
- package/src/components/Permalink/Permalink.test.js +285 -0
- package/src/components/Permalink/README.md +105 -0
- package/src/components/Permalink/index.js +1 -0
- package/{components → src/components}/Popup/Popup.js +165 -55
- package/src/components/Popup/Popup.test.js +307 -0
- package/src/components/Popup/README.md +93 -0
- package/src/components/Popup/__snapshots__/Popup.test.js.snap +180 -0
- package/src/components/Popup/index.js +1 -0
- package/src/components/README.md +41 -0
- package/{components → src/components}/ResizeHandler/ResizeHandler.js +50 -15
- package/src/components/ResizeHandler/ResizeHandler.test.js +344 -0
- package/src/components/ResizeHandler/index.js +1 -0
- package/src/components/RouteSchedule/README.md +118 -0
- package/src/components/RouteSchedule/RouteSchedule.js +370 -0
- package/src/components/RouteSchedule/RouteSchedule.test.js +113 -0
- package/src/components/RouteSchedule/__snapshots__/RouteSchedule.test.js.snap +248 -0
- package/src/components/RouteSchedule/index.js +1 -0
- package/src/components/ScaleLine/README.md +29 -0
- package/src/components/ScaleLine/ScaleLine.js +50 -0
- package/src/components/ScaleLine/ScaleLine.test.js +30 -0
- package/src/components/ScaleLine/__snapshots__/ScaleLine.test.js.snap +7 -0
- package/src/components/ScaleLine/index.js +1 -0
- package/src/components/StopsFinder/README.md +50 -0
- package/src/components/StopsFinder/StopsFinder.js +284 -0
- package/src/components/StopsFinder/StopsFinder.test.js +17 -0
- package/src/components/StopsFinder/StopsFinderOption.js +61 -0
- package/src/components/StopsFinder/__snapshots__/StopsFinder.test.js.snap +133 -0
- package/src/components/StopsFinder/index.js +1 -0
- package/src/components/Zoom/README.md +25 -0
- package/src/components/Zoom/Zoom.js +180 -0
- package/src/components/Zoom/Zoom.test.js +141 -0
- package/src/components/Zoom/__snapshots__/Zoom.test.js.snap +201 -0
- package/src/components/Zoom/index.js +1 -0
- package/{propTypes.js → src/propTypes.js} +16 -12
- package/{setupTests.js → src/setupTests.js} +1 -1
- package/src/styleguidist/ComponentsList.js +52 -0
- package/src/styleguidist/StyleGuide.js +277 -0
- package/src/styleguidist/styleguidist.css +38 -0
- package/src/utils/GlobalsForOle.js +99 -0
- package/src/utils/KML.js +594 -0
- package/src/utils/KML.test.js +337 -0
- package/src/utils/KMLFormat.js +100 -0
- package/src/utils/KMLFormat.test.js +50 -0
- package/{utils → src/utils}/Styles.js +20 -14
- package/src/utils/__snapshots__/KML.test.js.snap.KML-readFeatures()-and-writeFeatures()-should-read-and-write-lineDash-and-fillPattern-style-for-polygon.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-2-(cross)-color-and-(light-blue)-opacity.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-3-(diagonal-line-from-bottom-left-tot-top-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-4-(diagonal-line-from-top-left-to-bottom-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
- package/{utils → src/utils}/getPolygonPattern.js +34 -6
- package/src/utils/getPolygonPattern.test.js +61 -0
- package/src/utils/timeUtils.js +52 -0
- package/src/utils/timeUtils.test.js +30 -0
- package/styleguide.config.js +251 -0
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +0 -231
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +0 -7
- package/components/BaseLayerSwitcher/index.js +0 -1
- package/components/BaseLayerSwitcher/index.js.map +0 -7
- package/components/BasicMap/BasicMap.js +0 -278
- package/components/BasicMap/BasicMap.js.map +0 -7
- package/components/BasicMap/index.js +0 -1
- package/components/BasicMap/index.js.map +0 -7
- package/components/CanvasSaveButton/CanvasSaveButton.js.map +0 -7
- package/components/CanvasSaveButton/index.js +0 -1
- package/components/CanvasSaveButton/index.js.map +0 -7
- package/components/Copyright/Copyright.js +0 -55
- package/components/Copyright/Copyright.js.map +0 -7
- package/components/Copyright/index.js +0 -1
- package/components/Copyright/index.js.map +0 -7
- package/components/FeatureExportButton/FeatureExportButton.js +0 -62
- package/components/FeatureExportButton/FeatureExportButton.js.map +0 -7
- package/components/FeatureExportButton/index.js +0 -1
- package/components/FeatureExportButton/index.js.map +0 -7
- package/components/FitExtent/FitExtent.js +0 -32
- package/components/FitExtent/FitExtent.js.map +0 -7
- package/components/FitExtent/index.js +0 -1
- package/components/FitExtent/index.js.map +0 -7
- package/components/Geolocation/Geolocation.js.map +0 -7
- package/components/Geolocation/index.js +0 -1
- package/components/Geolocation/index.js.map +0 -7
- package/components/LayerTree/LayerTree.js +0 -278
- package/components/LayerTree/LayerTree.js.map +0 -7
- package/components/LayerTree/index.js +0 -1
- package/components/LayerTree/index.js.map +0 -7
- package/components/MousePosition/MousePosition.js +0 -110
- package/components/MousePosition/MousePosition.js.map +0 -7
- package/components/MousePosition/index.js +0 -1
- package/components/MousePosition/index.js.map +0 -7
- package/components/NorthArrow/NorthArrow.js +0 -43
- package/components/NorthArrow/NorthArrow.js.map +0 -7
- package/components/NorthArrow/index.js +0 -1
- package/components/NorthArrow/index.js.map +0 -7
- package/components/Overlay/Overlay.js +0 -122
- package/components/Overlay/Overlay.js.map +0 -7
- package/components/Overlay/index.js +0 -1
- package/components/Overlay/index.js.map +0 -7
- package/components/Permalink/Permalink.js +0 -206
- package/components/Permalink/Permalink.js.map +0 -7
- package/components/Permalink/index.js +0 -1
- package/components/Permalink/index.js.map +0 -7
- package/components/Popup/Popup.js.map +0 -7
- package/components/Popup/index.js +0 -1
- package/components/Popup/index.js.map +0 -7
- package/components/ResizeHandler/ResizeHandler.js.map +0 -7
- package/components/ResizeHandler/index.js +0 -1
- package/components/ResizeHandler/index.js.map +0 -7
- package/components/RouteSchedule/RouteSchedule.js +0 -220
- package/components/RouteSchedule/RouteSchedule.js.map +0 -7
- package/components/RouteSchedule/index.js +0 -1
- package/components/RouteSchedule/index.js.map +0 -7
- package/components/ScaleLine/ScaleLine.js +0 -32
- package/components/ScaleLine/ScaleLine.js.map +0 -7
- package/components/ScaleLine/index.js +0 -1
- package/components/ScaleLine/index.js.map +0 -7
- package/components/StopsFinder/StopsFinder.js +0 -210
- package/components/StopsFinder/StopsFinder.js.map +0 -7
- package/components/StopsFinder/StopsFinderOption.js +0 -51
- package/components/StopsFinder/StopsFinderOption.js.map +0 -7
- package/components/StopsFinder/index.js +0 -1
- package/components/StopsFinder/index.js.map +0 -7
- package/components/Zoom/Zoom.js +0 -130
- package/components/Zoom/Zoom.js.map +0 -7
- package/components/Zoom/index.js +0 -1
- package/components/Zoom/index.js.map +0 -7
- package/propTypes.js.map +0 -7
- package/setupTests.js.map +0 -7
- package/utils/GlobalsForOle.js +0 -94
- package/utils/GlobalsForOle.js.map +0 -7
- package/utils/KML.js +0 -412
- package/utils/KML.js.map +0 -7
- package/utils/KMLFormat.js +0 -69
- package/utils/KMLFormat.js.map +0 -7
- package/utils/Styles.js.map +0 -7
- package/utils/getPolygonPattern.js.map +0 -7
- package/utils/timeUtils.js +0 -31
- package/utils/timeUtils.js.map +0 -7
- /package/{components → src/components}/BaseLayerSwitcher/BaseLayerSwitcher.md.scss +0 -0
- /package/{components → src/components}/BaseLayerSwitcher/BaseLayerSwitcher.scss +0 -0
- /package/{components → src/components}/BasicMap/BasicMap.md.scss +0 -0
- /package/{components → src/components}/CanvasSaveButton/CanvasSaveButton.md.scss +0 -0
- /package/{components → src/components}/Copyright/Copyright.md.scss +0 -0
- /package/{components → src/components}/FeatureExportButton/FeatureExportButton.md.scss +0 -0
- /package/{components → src/components}/FitExtent/FitExtent.md.scss +0 -0
- /package/{components → src/components}/Geolocation/Geolocation.md.scss +0 -0
- /package/{components → src/components}/Geolocation/Geolocation.scss +0 -0
- /package/{components → src/components}/LayerTree/LayerTree.md.scss +0 -0
- /package/{components → src/components}/LayerTree/LayerTree.scss +0 -0
- /package/{components → src/components}/MousePosition/MousePosition.md.scss +0 -0
- /package/{components → src/components}/NorthArrow/NorthArrow.scss +0 -0
- /package/{components → src/components}/Overlay/Overlay.md.scss +0 -0
- /package/{components → src/components}/Overlay/Overlay.scss +0 -0
- /package/{components → src/components}/Permalink/Permalink.md.scss +0 -0
- /package/{components → src/components}/Popup/Popup.md.scss +0 -0
- /package/{components → src/components}/Popup/Popup.scss +0 -0
- /package/{components → src/components}/RouteSchedule/RouteSchedule.md.scss +0 -0
- /package/{components → src/components}/RouteSchedule/RouteSchedule.scss +0 -0
- /package/{components → src/components}/ScaleLine/ScaleLine.scss +0 -0
- /package/{components → src/components}/Zoom/Zoom.md.scss +0 -0
- /package/{components → src/components}/Zoom/Zoom.scss +0 -0
- /package/{images → src/images}/RouteSchedule/firstStation.png +0 -0
- /package/{images → src/images}/RouteSchedule/lastStation.png +0 -0
- /package/{images → src/images}/RouteSchedule/line.png +0 -0
- /package/{images → src/images}/RouteSchedule/station.png +0 -0
- /package/{images → src/images}/baselayer/baselayer.basebright.png +0 -0
- /package/{images → src/images}/baselayer/baselayer.osm.png +0 -0
- /package/{images → src/images}/baselayer/baselayer.travic.png +0 -0
- /package/{images → src/images}/baselayer/open.topo.map.png +0 -0
- /package/{images → src/images}/baselayer/osm.baselayer.hot.png +0 -0
- /package/{images → src/images}/baselayer/osm.baselayer.png +0 -0
- /package/{images → src/images}/favicon.png +0 -0
- /package/{images → src/images}/geops_logo.png +0 -0
- /package/{images → src/images}/geops_logo.svg +0 -0
- /package/{images → src/images}/geops_qr.png +0 -0
- /package/{images → src/images}/mots/bus_poi-blue-01.svg +0 -0
- /package/{images → src/images}/mots/bus_poi-grey-01.svg +0 -0
- /package/{images → src/images}/mots/bus_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/bus_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/bus_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/bus_square-grey-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_poi-blue-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_poi-grey-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/cable_car_square-grey-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_poi-blue-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_poi-grey-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/ferry_square-grey-01.svg +0 -0
- /package/{images → src/images}/mots/funicular_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/funicular_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/funicular_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/gondola_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/rail_poi-blue-01.svg +0 -0
- /package/{images → src/images}/mots/rail_poi-grey-01.svg +0 -0
- /package/{images → src/images}/mots/rail_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/rail_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/rail_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/rail_square-grey-01.svg +0 -0
- /package/{images → src/images}/mots/subway_round blue-01.svg +0 -0
- /package/{images → src/images}/mots/subway_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/tram_poi-blue-01.svg +0 -0
- /package/{images → src/images}/mots/tram_poi-grey-01.svg +0 -0
- /package/{images → src/images}/mots/tram_round-blue-01.svg +0 -0
- /package/{images → src/images}/mots/tram_round-grey-01.svg +0 -0
- /package/{images → src/images}/mots/tram_square-blue-01.svg +0 -0
- /package/{images → src/images}/mots/tram_square-grey-01.svg +0 -0
- /package/{images → src/images}/northArrow.svg +0 -0
- /package/{images → src/images}/northArrow.url.svg +0 -0
- /package/{images → src/images}/northArrowCircle.svg +0 -0
- /package/{images → src/images}/northArrowCircle.url.svg +0 -0
- /package/{themes → src/themes}/README.md +0 -0
- /package/{themes → src/themes}/default/components.scss +0 -0
- /package/{themes → src/themes}/default/examples.scss +0 -0
- /package/{themes → src/themes}/default/index.scss +0 -0
- /package/{themes → src/themes}/default/mixins.scss +0 -0
- /package/{themes → src/themes}/default/variables.scss +0 -0
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import {
|
|
4
|
-
RealtimeLayer as TrackerLayer,
|
|
5
|
-
realtimeConfig
|
|
6
|
-
} from "mobility-toolbox-js/ol";
|
|
7
|
-
import { getHoursAndMinutes, getDelayString } from "../../utils/timeUtils";
|
|
8
|
-
import ReactTransitPropTypes from "../../propTypes";
|
|
9
|
-
import firstStation from "../../images/RouteSchedule/firstStation.png";
|
|
10
|
-
import station from "../../images/RouteSchedule/station.png";
|
|
11
|
-
import lastStation from "../../images/RouteSchedule/lastStation.png";
|
|
12
|
-
import line from "../../images/RouteSchedule/line.png";
|
|
13
|
-
const { getBgColor } = realtimeConfig;
|
|
14
|
-
const getDelayColor = (time) => {
|
|
15
|
-
const secs = Math.round(time / 1800 / 2 * 3600 / 1e3);
|
|
16
|
-
if (secs >= 3600) {
|
|
17
|
-
return "dark-red";
|
|
18
|
-
}
|
|
19
|
-
if (secs >= 500) {
|
|
20
|
-
return "middle-red";
|
|
21
|
-
}
|
|
22
|
-
if (secs >= 300) {
|
|
23
|
-
return "light-red";
|
|
24
|
-
}
|
|
25
|
-
if (secs >= 180) {
|
|
26
|
-
return "orange";
|
|
27
|
-
}
|
|
28
|
-
return "green";
|
|
29
|
-
};
|
|
30
|
-
const isNotStop = (stop) => {
|
|
31
|
-
return !stop.arrivalTime && !stop.departureTime;
|
|
32
|
-
};
|
|
33
|
-
const isPassed = (stop, time, stops, idx) => {
|
|
34
|
-
if (isNotStop(stop)) {
|
|
35
|
-
if (stops[idx - 1] && idx > 0) {
|
|
36
|
-
return isPassed(stops[idx - 1], time, stops, idx);
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
const timeToCompare = stop.aimedDepartureTime || stop.aimedArrivalTime || 0;
|
|
41
|
-
const delayToCompare = stop.departureDelay || stop.arrivalDelay || 0;
|
|
42
|
-
return timeToCompare + delayToCompare <= time;
|
|
43
|
-
};
|
|
44
|
-
const defaultRenderStationImg = (stations, index, isStationPassed, isNotStation) => {
|
|
45
|
-
const { length } = stations;
|
|
46
|
-
let src = station.src || station;
|
|
47
|
-
if (index === 0) {
|
|
48
|
-
src = firstStation.src || firstStation;
|
|
49
|
-
} else if (index === length - 1) {
|
|
50
|
-
src = lastStation.src || lastStation;
|
|
51
|
-
} else if (isNotStation) {
|
|
52
|
-
src = line.src || line;
|
|
53
|
-
}
|
|
54
|
-
return /* @__PURE__ */ React.createElement("img", {
|
|
55
|
-
src,
|
|
56
|
-
alt: "routeScheduleLine",
|
|
57
|
-
className: "rt-route-icon"
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
const defaultRenderStation = ({
|
|
61
|
-
lineInfos,
|
|
62
|
-
onStationClick,
|
|
63
|
-
trackerLayer,
|
|
64
|
-
renderStationImg,
|
|
65
|
-
stop,
|
|
66
|
-
idx
|
|
67
|
-
}) => {
|
|
68
|
-
const {
|
|
69
|
-
stationId,
|
|
70
|
-
arrivalDelay,
|
|
71
|
-
departureDelay,
|
|
72
|
-
arrivalTime,
|
|
73
|
-
departureTime,
|
|
74
|
-
state,
|
|
75
|
-
stationName,
|
|
76
|
-
aimedArrivalTime,
|
|
77
|
-
aimedDepartureTime
|
|
78
|
-
} = stop;
|
|
79
|
-
const cancelled = state === "JOURNEY_CANCELLED" || state === "STOP_CANCELLED";
|
|
80
|
-
const { stations } = lineInfos;
|
|
81
|
-
const isFirstStation = idx === 0;
|
|
82
|
-
const isLastStation = idx === stations.length - 1;
|
|
83
|
-
const isStationPassed = isPassed(stop, trackerLayer.time, stations, idx);
|
|
84
|
-
const isNotStation = isNotStop(stop);
|
|
85
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
86
|
-
key: (stationId || stationName) + arrivalTime + departureTime,
|
|
87
|
-
role: "button",
|
|
88
|
-
className: [
|
|
89
|
-
"rt-route-station",
|
|
90
|
-
isStationPassed ? " rt-passed" : "",
|
|
91
|
-
isNotStation ? " rt-no-stop" : ""
|
|
92
|
-
].join(""),
|
|
93
|
-
onClick: (e) => {
|
|
94
|
-
return onStationClick(stop, e);
|
|
95
|
-
},
|
|
96
|
-
tabIndex: 0,
|
|
97
|
-
onKeyPress: (e) => {
|
|
98
|
-
return e.which === 13 && onStationClick(stop, e);
|
|
99
|
-
}
|
|
100
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
101
|
-
className: "rt-route-delay"
|
|
102
|
-
}, typeof arrivalDelay === "undefined" || isFirstStation || cancelled ? "" : /* @__PURE__ */ React.createElement("span", {
|
|
103
|
-
className: `rt-route-delay-arrival${` ${getDelayColor(
|
|
104
|
-
arrivalDelay
|
|
105
|
-
)}`}`
|
|
106
|
-
}, `+${getDelayString(arrivalDelay)}`), typeof departureDelay === "undefined" || isLastStation || cancelled ? "" : /* @__PURE__ */ React.createElement("span", {
|
|
107
|
-
className: `rt-route-delay-departure${` ${getDelayColor(
|
|
108
|
-
departureDelay
|
|
109
|
-
)}`}`
|
|
110
|
-
}, `+${getDelayString(departureDelay)}`)), /* @__PURE__ */ React.createElement("div", {
|
|
111
|
-
className: "rt-route-times"
|
|
112
|
-
}, /* @__PURE__ */ React.createElement("span", {
|
|
113
|
-
className: `rt-route-time-arrival ${cancelled ? "rt-route-cancelled" : ""}`
|
|
114
|
-
}, getHoursAndMinutes(aimedArrivalTime)), /* @__PURE__ */ React.createElement("span", {
|
|
115
|
-
className: `rt-route-time-departure ${cancelled ? "rt-route-cancelled" : ""}`
|
|
116
|
-
}, getHoursAndMinutes(aimedDepartureTime))), renderStationImg(stations, idx, isStationPassed, isNotStation), /* @__PURE__ */ React.createElement("div", {
|
|
117
|
-
className: cancelled ? "rt-route-cancelled" : ""
|
|
118
|
-
}, stationName));
|
|
119
|
-
};
|
|
120
|
-
const renderRouteIdentifier = ({ routeIdentifier, longName }) => {
|
|
121
|
-
if (routeIdentifier) {
|
|
122
|
-
const id = parseInt(routeIdentifier.split(".")[0], 10);
|
|
123
|
-
if (!longName.includes(id)) {
|
|
124
|
-
return ` (${id})`;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return null;
|
|
128
|
-
};
|
|
129
|
-
const defaultRenderHeader = ({ lineInfos, renderHeaderButtons }) => {
|
|
130
|
-
const {
|
|
131
|
-
type,
|
|
132
|
-
vehicleType,
|
|
133
|
-
shortName,
|
|
134
|
-
longName,
|
|
135
|
-
stroke,
|
|
136
|
-
destination,
|
|
137
|
-
routeIdentifier,
|
|
138
|
-
text_color: textColor
|
|
139
|
-
} = lineInfos;
|
|
140
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
141
|
-
className: "rt-route-header"
|
|
142
|
-
}, /* @__PURE__ */ React.createElement("span", {
|
|
143
|
-
className: "rt-route-icon",
|
|
144
|
-
style: {
|
|
145
|
-
backgroundColor: stroke || getBgColor(type || vehicleType),
|
|
146
|
-
color: textColor || "black"
|
|
147
|
-
}
|
|
148
|
-
}, shortName), /* @__PURE__ */ React.createElement("div", {
|
|
149
|
-
className: "rt-route-title"
|
|
150
|
-
}, /* @__PURE__ */ React.createElement("span", {
|
|
151
|
-
className: "rt-route-name"
|
|
152
|
-
}, destination), /* @__PURE__ */ React.createElement("span", null, longName, renderRouteIdentifier(lineInfos))), /* @__PURE__ */ React.createElement("div", {
|
|
153
|
-
className: "rt-route-buttons"
|
|
154
|
-
}, renderHeaderButtons(routeIdentifier)));
|
|
155
|
-
};
|
|
156
|
-
const defaultRenderFooter = (props) => {
|
|
157
|
-
const { lineInfos, renderCopyright } = props;
|
|
158
|
-
if (!lineInfos.operator && !lineInfos.publisher) {
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
162
|
-
className: "rt-route-footer"
|
|
163
|
-
}, renderCopyright({ ...props }));
|
|
164
|
-
};
|
|
165
|
-
const defaultRenderLink = (text, url) => {
|
|
166
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
167
|
-
className: "rt-route-copyright-link"
|
|
168
|
-
}, url ? /* @__PURE__ */ React.createElement("a", {
|
|
169
|
-
href: url,
|
|
170
|
-
target: "_blank",
|
|
171
|
-
rel: "noreferrer"
|
|
172
|
-
}, text) : /* @__PURE__ */ React.createElement(React.Fragment, null, text));
|
|
173
|
-
};
|
|
174
|
-
const defaultRenderCopyright = ({ lineInfos }) => {
|
|
175
|
-
return /* @__PURE__ */ React.createElement("span", {
|
|
176
|
-
className: "rt-route-copyright"
|
|
177
|
-
}, lineInfos.operator && defaultRenderLink(lineInfos.operator, lineInfos.operatorUrl), lineInfos.operator && lineInfos.publisher && /* @__PURE__ */ React.createElement("span", null, "\xA0-\xA0"), lineInfos.publisher && defaultRenderLink(lineInfos.publisher, lineInfos.publisherUrl), lineInfos.license && /* @__PURE__ */ React.createElement("span", null, "\xA0("), lineInfos.license && defaultRenderLink(lineInfos.license, lineInfos.licenseUrl), lineInfos.license && ")");
|
|
178
|
-
};
|
|
179
|
-
const propTypes = {
|
|
180
|
-
className: PropTypes.string,
|
|
181
|
-
lineInfos: ReactTransitPropTypes.lineInfos,
|
|
182
|
-
trackerLayer: PropTypes.instanceOf(TrackerLayer).isRequired,
|
|
183
|
-
renderHeader: PropTypes.func,
|
|
184
|
-
renderFooter: PropTypes.func,
|
|
185
|
-
renderCopyright: PropTypes.func,
|
|
186
|
-
renderStationImg: PropTypes.func,
|
|
187
|
-
renderStation: PropTypes.func,
|
|
188
|
-
onStationClick: PropTypes.func,
|
|
189
|
-
renderHeaderButtons: PropTypes.func
|
|
190
|
-
};
|
|
191
|
-
const defaultProps = {
|
|
192
|
-
className: "rt-route-schedule",
|
|
193
|
-
lineInfos: null,
|
|
194
|
-
renderHeader: defaultRenderHeader,
|
|
195
|
-
renderStation: defaultRenderStation,
|
|
196
|
-
renderStationImg: defaultRenderStationImg,
|
|
197
|
-
renderCopyright: defaultRenderCopyright,
|
|
198
|
-
renderFooter: defaultRenderFooter,
|
|
199
|
-
renderHeaderButtons: () => {
|
|
200
|
-
return null;
|
|
201
|
-
},
|
|
202
|
-
onStationClick: () => {
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
function RouteSchedule(props) {
|
|
206
|
-
const { lineInfos, className, renderStation, renderHeader, renderFooter } = props;
|
|
207
|
-
if (!lineInfos) {
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
211
|
-
className
|
|
212
|
-
}, renderHeader({ ...props }), /* @__PURE__ */ React.createElement("div", {
|
|
213
|
-
className: "rt-route-body"
|
|
214
|
-
}, lineInfos.stations.map((stop, idx) => {
|
|
215
|
-
return renderStation({ ...props, stop, idx });
|
|
216
|
-
})), renderFooter({ ...props }));
|
|
217
|
-
}
|
|
218
|
-
RouteSchedule.propTypes = propTypes;
|
|
219
|
-
RouteSchedule.defaultProps = defaultProps;
|
|
220
|
-
export default React.memo(RouteSchedule);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/RouteSchedule/RouteSchedule.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable react/no-unused-prop-types */\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n RealtimeLayer as TrackerLayer,\n realtimeConfig,\n} from 'mobility-toolbox-js/ol';\nimport { getHoursAndMinutes, getDelayString } from '../../utils/timeUtils';\nimport ReactTransitPropTypes from '../../propTypes';\nimport firstStation from '../../images/RouteSchedule/firstStation.png';\nimport station from '../../images/RouteSchedule/station.png';\nimport lastStation from '../../images/RouteSchedule/lastStation.png';\nimport line from '../../images/RouteSchedule/line.png';\n\nconst { getBgColor } = realtimeConfig;\n\n/**\n * Returns a color class to display the delay.\n * @param {Number} time Delay time in milliseconds.\n */\nconst getDelayColor = (time) => {\n const secs = Math.round(((time / 1800 / 2) * 3600) / 1000);\n if (secs >= 3600) {\n return 'dark-red';\n }\n if (secs >= 500) {\n return 'middle-red';\n }\n if (secs >= 300) {\n return 'light-red';\n }\n if (secs >= 180) {\n return 'orange';\n }\n return 'green';\n};\n\n/**\n * Returns true if the train doesn't stop to the station.\n * @param {Object} stop Station information.\n */\nconst isNotStop = (stop) => {\n return !stop.arrivalTime && !stop.departureTime;\n};\n\n/**\n * Returns if the station has already been passed by the vehicule.\n * @param {Object} stop Station information.\n * @param {number} time The current time to test in ms.\n * @param {Array<Object>} stops the list of all stops of the train.\n * @param {idx} idx The index of the stop object in the stops array.\n */\nconst isPassed = (stop, time, stops, idx) => {\n // If the train doesn't stop to the stop object, we test if the stop just before has been passed or not.\n // if yes the current stop is considered as passed.\n if (isNotStop(stop)) {\n if (stops[idx - 1] && idx > 0) {\n return isPassed(stops[idx - 1], time, stops, idx);\n }\n return true;\n }\n\n // Sometimes stop.departureDelay is undefined.\n const timeToCompare = stop.aimedDepartureTime || stop.aimedArrivalTime || 0;\n const delayToCompare = stop.departureDelay || stop.arrivalDelay || 0;\n return timeToCompare + delayToCompare <= time;\n};\n\n/**\n * Returns an image for first, middle or last stations.\n * @param {Number} stations The stations list.\n * @param {Number} index Index of the station in the list.\n * @param {Boolean} isStationPassed If the train is already passed at this station.\n * @param {Boolean} isNotStation If the train doesn't stop to this station.\n */\nconst defaultRenderStationImg = (\n stations,\n index,\n isStationPassed,\n isNotStation,\n) => {\n const { length } = stations;\n let src = station.src || station;\n if (index === 0) {\n src = firstStation.src || firstStation;\n } else if (index === length - 1) {\n src = lastStation.src || lastStation;\n } else if (isNotStation) {\n src = line.src || line;\n }\n return <img src={src} alt=\"routeScheduleLine\" className=\"rt-route-icon\" />;\n};\n\nconst defaultRenderStation = ({\n lineInfos,\n onStationClick,\n trackerLayer,\n renderStationImg,\n stop,\n idx,\n}) => {\n const {\n stationId,\n arrivalDelay,\n departureDelay,\n arrivalTime,\n departureTime,\n state,\n stationName,\n aimedArrivalTime,\n aimedDepartureTime,\n } = stop;\n const cancelled = state === 'JOURNEY_CANCELLED' || state === 'STOP_CANCELLED';\n const { stations } = lineInfos;\n const isFirstStation = idx === 0;\n const isLastStation = idx === stations.length - 1;\n const isStationPassed = isPassed(stop, trackerLayer.time, stations, idx);\n const isNotStation = isNotStop(stop);\n return (\n <div\n // Train line can go in circle so begin and end have the same id,\n // using the time in the key should fix the issue.\n key={(stationId || stationName) + arrivalTime + departureTime}\n role=\"button\"\n className={[\n 'rt-route-station',\n isStationPassed ? ' rt-passed' : '',\n isNotStation ? ' rt-no-stop' : '',\n ].join('')}\n onClick={(e) => {\n return onStationClick(stop, e);\n }}\n tabIndex={0}\n onKeyPress={(e) => {\n return e.which === 13 && onStationClick(stop, e);\n }}\n >\n <div className=\"rt-route-delay\">\n {typeof arrivalDelay === 'undefined' || isFirstStation || cancelled ? (\n ''\n ) : (\n <span\n className={`rt-route-delay-arrival${` ${getDelayColor(\n arrivalDelay,\n )}`}`}\n >\n {`+${getDelayString(arrivalDelay)}`}\n </span>\n )}\n {typeof departureDelay === 'undefined' || isLastStation || cancelled ? (\n ''\n ) : (\n <span\n className={`rt-route-delay-departure${` ${getDelayColor(\n departureDelay,\n )}`}`}\n >\n {`+${getDelayString(departureDelay)}`}\n </span>\n )}\n </div>\n <div className=\"rt-route-times\">\n <span\n className={`rt-route-time-arrival ${\n cancelled ? 'rt-route-cancelled' : ''\n }`}\n >\n {getHoursAndMinutes(aimedArrivalTime)}\n </span>\n <span\n className={`rt-route-time-departure ${\n cancelled ? 'rt-route-cancelled' : ''\n }`}\n >\n {getHoursAndMinutes(aimedDepartureTime)}\n </span>\n </div>\n {renderStationImg(stations, idx, isStationPassed, isNotStation)}\n <div className={cancelled ? 'rt-route-cancelled' : ''}>{stationName}</div>\n </div>\n );\n};\n\nconst renderRouteIdentifier = ({ routeIdentifier, longName }) => {\n if (routeIdentifier) {\n // first part of the id, without leading zeros.\n const id = parseInt(routeIdentifier.split('.')[0], 10);\n if (!longName.includes(id)) {\n return ` (${id})`;\n }\n }\n return null;\n};\n\nconst defaultRenderHeader = ({ lineInfos, renderHeaderButtons }) => {\n const {\n type,\n vehicleType,\n shortName,\n longName,\n stroke,\n destination,\n routeIdentifier,\n text_color: textColor,\n } = lineInfos;\n return (\n <div className=\"rt-route-header\">\n <span\n className=\"rt-route-icon\"\n style={{\n /* stylelint-disable-next-line value-keyword-case */\n backgroundColor: stroke || getBgColor(type || vehicleType),\n color: textColor || 'black',\n }}\n >\n {shortName}\n </span>\n <div className=\"rt-route-title\">\n <span className=\"rt-route-name\">{destination}</span>\n <span>\n {longName}\n {renderRouteIdentifier(lineInfos)}\n </span>\n </div>\n <div className=\"rt-route-buttons\">\n {renderHeaderButtons(routeIdentifier)}\n </div>\n </div>\n );\n};\n\nconst defaultRenderFooter = (props) => {\n const { lineInfos, renderCopyright } = props;\n if (!lineInfos.operator && !lineInfos.publisher) {\n return null;\n }\n return <div className=\"rt-route-footer\">{renderCopyright({ ...props })}</div>;\n};\n\nconst defaultRenderLink = (text, url) => {\n return (\n <div className=\"rt-route-copyright-link\">\n {url ? (\n <a href={url} target=\"_blank\" rel=\"noreferrer\">\n {text}\n </a>\n ) : (\n <>{text}</>\n )}\n </div>\n );\n};\n\nconst defaultRenderCopyright = ({ lineInfos }) => {\n return (\n <span className=\"rt-route-copyright\">\n {lineInfos.operator &&\n defaultRenderLink(lineInfos.operator, lineInfos.operatorUrl)}\n {lineInfos.operator && lineInfos.publisher && <span> - </span>}\n {lineInfos.publisher &&\n defaultRenderLink(lineInfos.publisher, lineInfos.publisherUrl)}\n {lineInfos.license && <span> (</span>}\n {lineInfos.license &&\n defaultRenderLink(lineInfos.license, lineInfos.licenseUrl)}\n {lineInfos.license && ')'}\n </span>\n );\n};\n\nconst propTypes = {\n /**\n * CSS class of the route schedule wrapper.\n */\n className: PropTypes.string,\n\n /**\n * Trajectory stations informations.\n */\n lineInfos: ReactTransitPropTypes.lineInfos,\n\n /**\n * Trackerlayer.\n */\n trackerLayer: PropTypes.instanceOf(TrackerLayer).isRequired,\n\n /**\n * Render Header of the route scheduler.\n */\n renderHeader: PropTypes.func,\n\n /**\n * Render Footer of the route scheduler.\n */\n renderFooter: PropTypes.func,\n\n /**\n * Render Copyright of the route scheduler.\n */\n renderCopyright: PropTypes.func,\n\n /**\n * Render the status of the station image.\n */\n renderStationImg: PropTypes.func,\n\n /**\n * Render a station.\n */\n renderStation: PropTypes.func,\n\n /**\n * Function triggered on station's click event.\n */\n onStationClick: PropTypes.func,\n\n /**\n * Function to render header buttons.\n */\n renderHeaderButtons: PropTypes.func,\n};\n\nconst defaultProps = {\n className: 'rt-route-schedule',\n lineInfos: null,\n renderHeader: defaultRenderHeader,\n renderStation: defaultRenderStation,\n renderStationImg: defaultRenderStationImg,\n renderCopyright: defaultRenderCopyright,\n renderFooter: defaultRenderFooter,\n renderHeaderButtons: () => {\n return null;\n },\n onStationClick: () => {},\n};\n\n/**\n * RouteSchedule displays information, stops and punctuality about the clicked route.\n */\nfunction RouteSchedule(props) {\n const { lineInfos, className, renderStation, renderHeader, renderFooter } =\n props;\n\n if (!lineInfos) {\n return null;\n }\n\n return (\n <div className={className}>\n {renderHeader({ ...props })}\n <div className=\"rt-route-body\">\n {lineInfos.stations.map((stop, idx) => {\n return renderStation({ ...props, stop, idx });\n })}\n </div>\n {renderFooter({ ...props })}\n </div>\n );\n}\n\nRouteSchedule.propTypes = propTypes;\nRouteSchedule.defaultProps = defaultProps;\n\nexport default React.memo(RouteSchedule);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./RouteSchedule";
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import React, { useRef, useEffect } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import OLScaleLine from "ol/control/ScaleLine";
|
|
4
|
-
import OLMap from "ol/Map";
|
|
5
|
-
const propTypes = {
|
|
6
|
-
map: PropTypes.instanceOf(OLMap).isRequired,
|
|
7
|
-
options: PropTypes.object
|
|
8
|
-
};
|
|
9
|
-
const defaultProps = {
|
|
10
|
-
options: {}
|
|
11
|
-
};
|
|
12
|
-
function ScaleLine({ map, options, ...other }) {
|
|
13
|
-
const ref = useRef();
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
const control = new OLScaleLine({
|
|
16
|
-
...options,
|
|
17
|
-
...{ target: ref.current }
|
|
18
|
-
});
|
|
19
|
-
map.addControl(control);
|
|
20
|
-
return () => {
|
|
21
|
-
map.removeControl(control);
|
|
22
|
-
};
|
|
23
|
-
}, [map, options]);
|
|
24
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
25
|
-
className: "rs-scale-line",
|
|
26
|
-
ref,
|
|
27
|
-
...other
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
ScaleLine.propTypes = propTypes;
|
|
31
|
-
ScaleLine.defaultProps = defaultProps;
|
|
32
|
-
export default React.memo(ScaleLine);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ScaleLine/ScaleLine.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport OLScaleLine from 'ol/control/ScaleLine';\nimport OLMap from 'ol/Map';\n\nconst propTypes = {\n /**\n * ol/map.\n */\n map: PropTypes.instanceOf(OLMap).isRequired,\n\n /**\n * Options for ol/control/ScaleLine.\n * See https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html\n */\n options: PropTypes.object,\n};\n\nconst defaultProps = {\n options: {},\n};\n\n/**\n * The ScaleLine component creates an\n * [ol/control/ScaleLine](https://openlayers.org/en/latest/apidoc/module-ol_control_ScaleLine-ScaleLine.html)\n * for an [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n */\nfunction ScaleLine({ map, options, ...other }) {\n const ref = useRef();\n\n useEffect(() => {\n const control = new OLScaleLine({\n ...options,\n ...{ target: ref.current },\n });\n\n map.addControl(control);\n return () => {\n map.removeControl(control);\n };\n }, [map, options]);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <div className=\"rs-scale-line\" ref={ref} {...other} />;\n}\n\nScaleLine.propTypes = propTypes;\nScaleLine.defaultProps = defaultProps;\n\nexport default React.memo(ScaleLine);\n"],
|
|
5
|
-
"mappings": "AAAA,OAAO,SAAS,QAAQ,iBAAiB;AACzC,OAAO,eAAe;AACtB,OAAO,iBAAiB;AACxB,OAAO,WAAW;AAElB,MAAM,YAAY;AAAA,EAIhB,KAAK,UAAU,WAAW,KAAK,EAAE;AAAA,EAMjC,SAAS,UAAU;AACrB;AAEA,MAAM,eAAe;AAAA,EACnB,SAAS,CAAC;AACZ;AAOA,SAAS,UAAU,EAAE,KAAK,YAAY,MAAM,GAAG;AAC7C,QAAM,MAAM,OAAO;AAEnB,YAAU,MAAM;AACd,UAAM,UAAU,IAAI,YAAY;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG,EAAE,QAAQ,IAAI,QAAQ;AAAA,IAC3B,CAAC;AAED,QAAI,WAAW,OAAO;AACtB,WAAO,MAAM;AACX,UAAI,cAAc,OAAO;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,KAAK,OAAO,CAAC;AAGjB,SAAO,oCAAC;AAAA,IAAI,WAAU;AAAA,IAAgB;AAAA,IAAW,GAAG;AAAA,GAAO;AAC7D;AAEA,UAAU,YAAY;AACtB,UAAU,eAAe;AAEzB,eAAe,MAAM,KAAK,SAAS;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./ScaleLine";
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import React, { useMemo, useState, useEffect } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { Autocomplete } from "@material-ui/lab";
|
|
4
|
-
import { FaSearch } from "react-icons/fa";
|
|
5
|
-
import TextField from "@material-ui/core/TextField";
|
|
6
|
-
import CircularProgress from "@material-ui/core/CircularProgress";
|
|
7
|
-
import { StopFinderControl } from "mobility-toolbox-js/ol";
|
|
8
|
-
import { Map } from "ol";
|
|
9
|
-
import { makeStyles } from "@material-ui/core";
|
|
10
|
-
import StopsFinderOptions from "./StopsFinderOption";
|
|
11
|
-
const useStyles = makeStyles(() => {
|
|
12
|
-
return {
|
|
13
|
-
popupIndicatorOpen: {
|
|
14
|
-
transform: "rotate(0)"
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
});
|
|
18
|
-
function StopsFinder({
|
|
19
|
-
agencies,
|
|
20
|
-
apiKey,
|
|
21
|
-
autocompleteProps,
|
|
22
|
-
bbox,
|
|
23
|
-
field,
|
|
24
|
-
limit,
|
|
25
|
-
map,
|
|
26
|
-
mots,
|
|
27
|
-
onSelect,
|
|
28
|
-
radius,
|
|
29
|
-
refLocation,
|
|
30
|
-
renderAutocomplete,
|
|
31
|
-
url
|
|
32
|
-
}) {
|
|
33
|
-
const classes = useStyles();
|
|
34
|
-
const [inputValue, setInputValue] = useState("");
|
|
35
|
-
const [suggestions, setSuggestions] = useState([]);
|
|
36
|
-
const [isLoading, setLoading] = useState(false);
|
|
37
|
-
const [isOpen, setOpen] = useState(false);
|
|
38
|
-
const control = useMemo(() => {
|
|
39
|
-
return new StopFinderControl({
|
|
40
|
-
url,
|
|
41
|
-
apiKey,
|
|
42
|
-
target: document.createElement("div"),
|
|
43
|
-
element: document.createElement("div"),
|
|
44
|
-
render(newSuggestions = { features: [] }) {
|
|
45
|
-
setSuggestions(newSuggestions.features);
|
|
46
|
-
setLoading(false);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}, [apiKey, url]);
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
if (!inputValue) {
|
|
52
|
-
setSuggestions([]);
|
|
53
|
-
setLoading(false);
|
|
54
|
-
return () => {
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
const abortController = new AbortController();
|
|
58
|
-
setLoading(true);
|
|
59
|
-
control.apiParams = {
|
|
60
|
-
prefAgencies: agencies && agencies.toString(),
|
|
61
|
-
bbox: bbox && bbox.toString(),
|
|
62
|
-
field: field && field.toString(),
|
|
63
|
-
limit,
|
|
64
|
-
mots: mots && mots.toString(),
|
|
65
|
-
radius,
|
|
66
|
-
ref_location: refLocation && refLocation.toString()
|
|
67
|
-
};
|
|
68
|
-
control.search(inputValue, abortController);
|
|
69
|
-
return () => {
|
|
70
|
-
abortController.abort();
|
|
71
|
-
};
|
|
72
|
-
}, [
|
|
73
|
-
agencies,
|
|
74
|
-
bbox,
|
|
75
|
-
control,
|
|
76
|
-
field,
|
|
77
|
-
inputValue,
|
|
78
|
-
limit,
|
|
79
|
-
mots,
|
|
80
|
-
radius,
|
|
81
|
-
refLocation
|
|
82
|
-
]);
|
|
83
|
-
useEffect(() => {
|
|
84
|
-
if (!control) {
|
|
85
|
-
return () => {
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
control.map = map;
|
|
89
|
-
return () => {
|
|
90
|
-
control.map = null;
|
|
91
|
-
};
|
|
92
|
-
}, [map, control]);
|
|
93
|
-
if (!control) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
if (renderAutocomplete) {
|
|
97
|
-
return renderAutocomplete(
|
|
98
|
-
suggestions,
|
|
99
|
-
inputValue,
|
|
100
|
-
setInputValue,
|
|
101
|
-
isOpen,
|
|
102
|
-
setOpen,
|
|
103
|
-
isLoading,
|
|
104
|
-
setLoading
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
const textFieldProps = {
|
|
108
|
-
...(autocompleteProps || {}).textFieldProps || {}
|
|
109
|
-
};
|
|
110
|
-
const autocProps = { ...autocompleteProps };
|
|
111
|
-
delete autocProps.textFieldProps;
|
|
112
|
-
return /* @__PURE__ */ React.createElement(Autocomplete, {
|
|
113
|
-
fullWidth: true,
|
|
114
|
-
autoComplete: true,
|
|
115
|
-
autoHighlight: true,
|
|
116
|
-
selectOnFocus: true,
|
|
117
|
-
getOptionLabel: (option) => {
|
|
118
|
-
return option.properties.name;
|
|
119
|
-
},
|
|
120
|
-
onChange: (evt, value, reason) => {
|
|
121
|
-
if (onSelect && reason === "select-option") {
|
|
122
|
-
onSelect(value, evt);
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
popupIcon: /* @__PURE__ */ React.createElement(FaSearch, {
|
|
126
|
-
focusable: false,
|
|
127
|
-
size: 15
|
|
128
|
-
}),
|
|
129
|
-
renderInput: (params) => {
|
|
130
|
-
return /* @__PURE__ */ React.createElement(TextField, {
|
|
131
|
-
label: "Search stops",
|
|
132
|
-
...{
|
|
133
|
-
...params,
|
|
134
|
-
...textFieldProps
|
|
135
|
-
},
|
|
136
|
-
InputProps: {
|
|
137
|
-
...params.InputProps,
|
|
138
|
-
endAdornment: /* @__PURE__ */ React.createElement(React.Fragment, null, isLoading && /* @__PURE__ */ React.createElement(CircularProgress, {
|
|
139
|
-
size: 20
|
|
140
|
-
}), params.InputProps.endAdornment)
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
},
|
|
144
|
-
renderOption: (option) => {
|
|
145
|
-
return /* @__PURE__ */ React.createElement(StopsFinderOptions, {
|
|
146
|
-
option
|
|
147
|
-
});
|
|
148
|
-
},
|
|
149
|
-
...autocProps,
|
|
150
|
-
classes: { ...classes, ...autocompleteProps.classes },
|
|
151
|
-
inputValue,
|
|
152
|
-
open: isOpen,
|
|
153
|
-
options: suggestions,
|
|
154
|
-
loading: isLoading,
|
|
155
|
-
onOpen: () => {
|
|
156
|
-
setOpen(true);
|
|
157
|
-
},
|
|
158
|
-
onClose: () => {
|
|
159
|
-
setOpen(false);
|
|
160
|
-
},
|
|
161
|
-
onInputChange: (evt, val) => {
|
|
162
|
-
setInputValue(val);
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
StopsFinder.propTypes = {
|
|
167
|
-
agencies: PropTypes.oneOfType([
|
|
168
|
-
PropTypes.string,
|
|
169
|
-
PropTypes.arrayOf(PropTypes.string)
|
|
170
|
-
]),
|
|
171
|
-
apiKey: PropTypes.string,
|
|
172
|
-
autocompleteProps: PropTypes.object,
|
|
173
|
-
bbox: PropTypes.oneOfType([
|
|
174
|
-
PropTypes.string,
|
|
175
|
-
PropTypes.arrayOf(PropTypes.number)
|
|
176
|
-
]),
|
|
177
|
-
field: PropTypes.oneOfType([
|
|
178
|
-
PropTypes.string,
|
|
179
|
-
PropTypes.arrayOf(PropTypes.string)
|
|
180
|
-
]),
|
|
181
|
-
limit: PropTypes.number,
|
|
182
|
-
map: PropTypes.instanceOf(Map).isRequired,
|
|
183
|
-
mots: PropTypes.oneOfType([
|
|
184
|
-
PropTypes.string,
|
|
185
|
-
PropTypes.arrayOf(PropTypes.string)
|
|
186
|
-
]),
|
|
187
|
-
onSelect: PropTypes.func,
|
|
188
|
-
radius: PropTypes.number,
|
|
189
|
-
refLocation: PropTypes.oneOfType([
|
|
190
|
-
PropTypes.string,
|
|
191
|
-
PropTypes.arrayOf(PropTypes.number)
|
|
192
|
-
]),
|
|
193
|
-
renderAutocomplete: PropTypes.func,
|
|
194
|
-
url: PropTypes.string
|
|
195
|
-
};
|
|
196
|
-
StopsFinder.defaultProps = {
|
|
197
|
-
agencies: null,
|
|
198
|
-
apiKey: null,
|
|
199
|
-
autocompleteProps: {},
|
|
200
|
-
bbox: null,
|
|
201
|
-
field: null,
|
|
202
|
-
limit: null,
|
|
203
|
-
mots: null,
|
|
204
|
-
onSelect: null,
|
|
205
|
-
radius: null,
|
|
206
|
-
refLocation: null,
|
|
207
|
-
url: null,
|
|
208
|
-
renderAutocomplete: null
|
|
209
|
-
};
|
|
210
|
-
export default StopsFinder;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/StopsFinder/StopsFinder.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useMemo, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Autocomplete } from '@material-ui/lab';\nimport { FaSearch } from 'react-icons/fa';\nimport TextField from '@material-ui/core/TextField';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { StopFinderControl } from 'mobility-toolbox-js/ol';\nimport { Map } from 'ol';\nimport { makeStyles } from '@material-ui/core';\nimport StopsFinderOptions from './StopsFinderOption';\n\nconst useStyles = makeStyles(() => {\n return {\n popupIndicatorOpen: {\n transform: 'rotate(0)',\n },\n };\n});\n\nfunction StopsFinder({\n agencies,\n apiKey,\n autocompleteProps,\n bbox,\n field,\n limit,\n map,\n mots,\n onSelect,\n radius,\n refLocation,\n renderAutocomplete,\n url,\n}) {\n const classes = useStyles();\n const [inputValue, setInputValue] = useState('');\n const [suggestions, setSuggestions] = useState([]);\n const [isLoading, setLoading] = useState(false);\n const [isOpen, setOpen] = useState(false);\n\n const control = useMemo(() => {\n return new StopFinderControl({\n url,\n apiKey,\n target: document.createElement('div'),\n element: document.createElement('div'),\n render(newSuggestions = { features: [] }) {\n setSuggestions(newSuggestions.features);\n setLoading(false);\n },\n });\n }, [apiKey, url]);\n\n useEffect(() => {\n if (!inputValue) {\n setSuggestions([]);\n setLoading(false);\n return () => {};\n }\n const abortController = new AbortController();\n setLoading(true);\n control.apiParams = {\n prefAgencies: agencies && agencies.toString(),\n bbox: bbox && bbox.toString(),\n field: field && field.toString(),\n limit,\n mots: mots && mots.toString(),\n radius,\n ref_location: refLocation && refLocation.toString(),\n };\n control.search(inputValue, abortController);\n return () => {\n abortController.abort();\n };\n }, [\n agencies,\n bbox,\n control,\n field,\n inputValue,\n limit,\n mots,\n radius,\n refLocation,\n ]);\n\n // Ensure the control is not associated to the wrong map\n useEffect(() => {\n if (!control) {\n return () => {};\n }\n\n control.map = map;\n\n return () => {\n control.map = null;\n };\n }, [map, control]);\n\n if (!control) {\n return null;\n }\n\n if (renderAutocomplete) {\n return renderAutocomplete(\n suggestions,\n inputValue,\n setInputValue,\n isOpen,\n setOpen,\n isLoading,\n setLoading,\n );\n }\n const textFieldProps = {\n ...((autocompleteProps || {}).textFieldProps || {}),\n };\n const autocProps = { ...autocompleteProps };\n delete autocProps.textFieldProps;\n\n return (\n <Autocomplete\n fullWidth\n autoComplete\n autoHighlight\n selectOnFocus\n getOptionLabel={(option) => {\n return option.properties.name;\n }}\n onChange={(evt, value, reason) => {\n if (onSelect && reason === 'select-option') {\n onSelect(value, evt);\n }\n }}\n popupIcon={<FaSearch focusable={false} size={15} />}\n renderInput={(params) => {\n return (\n <TextField\n label=\"Search stops\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...{\n ...params,\n ...textFieldProps,\n }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {isLoading && <CircularProgress size={20} />}\n {params.InputProps.endAdornment}\n </>\n ),\n }}\n />\n );\n }}\n renderOption={(option) => {\n return <StopsFinderOptions option={option} />;\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...autocProps}\n classes={{ ...classes, ...autocompleteProps.classes }}\n inputValue={inputValue}\n open={isOpen}\n options={suggestions}\n loading={isLoading}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n onInputChange={(evt, val) => {\n setInputValue(val);\n }}\n />\n );\n}\n\nStopsFinder.propTypes = {\n /**\n * Array or a comma separated list of agencies which should be available.\n * Order of these agencies chooses which agency will be preferred.\n * Available values : sbb, db\n */\n agencies: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * geOps api key to access the StopsFinder service.\n */\n apiKey: PropTypes.string,\n\n /**\n * Properties apply to the default [MUI Autocomplete component](https://material-ui.com/api/autocomplete/).\n * We add a custom properties textFieldProps for the default [MUI TextField component](https://material-ui.com/api/text-field/) used by the Autocomplete.\n */\n autocompleteProps: PropTypes.object,\n\n /**\n * minX,minY,maxX,maxY coordinates in WGS84 wherein the station should lie.\n */\n bbox: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n\n /**\n * Array or a comma separated list of fields which should be used for look up.\n * Available values : id, name, coords\n */\n field: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * Control how many matches will be returned.\n */\n limit: PropTypes.number,\n\n /**\n * A map.\n */\n map: PropTypes.instanceOf(Map).isRequired,\n\n /**\n * Array or a comma separated list of mode of transpaorts which should be available.\n * Available values : bus, ferry, gondola, tram, rail, funicular, cable_car, subway\n */\n mots: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n /**\n * Function called when a suggestion is selected.\n */\n onSelect: PropTypes.func,\n\n /**\n * Radius around refLocation in meters that is most relevant.\n * Used as granularity for location rank.\n */\n radius: PropTypes.number,\n\n /**\n * Coordinates in WGS84 (in lat,lon order) used to rank stops close to this position higher.\n * Available values : id, name, coords\n */\n refLocation: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.number),\n ]),\n\n /**\n * Function to render a different autocomplete input than the default one.\n */\n renderAutocomplete: PropTypes.func,\n\n /**\n * Url of the geOps StopsFinder service.\n */\n url: PropTypes.string,\n};\n\nStopsFinder.defaultProps = {\n agencies: null,\n apiKey: null,\n autocompleteProps: {},\n bbox: null,\n field: null,\n limit: null,\n mots: null,\n onSelect: null,\n radius: null,\n refLocation: null,\n url: null,\n renderAutocomplete: null,\n};\n\nexport default StopsFinder;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import React, { lazy, Suspense } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { makeStyles } from "@material-ui/core";
|
|
4
|
-
const ext = "_round-blue-01.svg";
|
|
5
|
-
const iconForMot = {};
|
|
6
|
-
[
|
|
7
|
-
"bus",
|
|
8
|
-
"ferry",
|
|
9
|
-
"gondola",
|
|
10
|
-
"tram",
|
|
11
|
-
"rail",
|
|
12
|
-
"funicular",
|
|
13
|
-
"cable_car",
|
|
14
|
-
"subway"
|
|
15
|
-
].forEach((mot) => {
|
|
16
|
-
iconForMot[mot] = lazy(() => {
|
|
17
|
-
return import(`../../images/mots/${mot}${ext}`);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
const useStyles = makeStyles((theme) => {
|
|
21
|
-
return {
|
|
22
|
-
flex: {
|
|
23
|
-
display: "flex",
|
|
24
|
-
alignItems: "center"
|
|
25
|
-
},
|
|
26
|
-
icon: {
|
|
27
|
-
marginRight: theme.spacing(2)
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
function StopsFinderOption({ option }) {
|
|
32
|
-
const classes = useStyles();
|
|
33
|
-
return /* @__PURE__ */ React.createElement(Suspense, {
|
|
34
|
-
fallback: /* @__PURE__ */ React.createElement("div", null)
|
|
35
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
36
|
-
className: classes.flex
|
|
37
|
-
}, Object.entries(option.properties.mot).map(([key, value]) => {
|
|
38
|
-
if (value) {
|
|
39
|
-
const MotIcon = iconForMot[key];
|
|
40
|
-
return /* @__PURE__ */ React.createElement("span", {
|
|
41
|
-
className: classes.icon,
|
|
42
|
-
key
|
|
43
|
-
}, /* @__PURE__ */ React.createElement(MotIcon, null));
|
|
44
|
-
}
|
|
45
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null);
|
|
46
|
-
}), /* @__PURE__ */ React.createElement("span", null, option.properties.name)));
|
|
47
|
-
}
|
|
48
|
-
StopsFinderOption.propTypes = {
|
|
49
|
-
option: PropTypes.object.isRequired
|
|
50
|
-
};
|
|
51
|
-
export default React.memo(StopsFinderOption);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/StopsFinder/StopsFinderOption.js"],
|
|
4
|
-
"sourcesContent": ["import React, { lazy, Suspense } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\n\nconst ext = '_round-blue-01.svg';\nconst iconForMot = {};\n[\n 'bus',\n 'ferry',\n 'gondola',\n 'tram',\n 'rail',\n 'funicular',\n 'cable_car',\n 'subway',\n].forEach((mot) => {\n iconForMot[mot] = lazy(() => {\n return import(`../../images/mots/${mot}${ext}`);\n });\n});\n\nconst useStyles = makeStyles((theme) => {\n return {\n flex: {\n display: 'flex',\n alignItems: 'center',\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n };\n});\n\nfunction StopsFinderOption({ option }) {\n const classes = useStyles();\n\n return (\n <Suspense fallback={<div />}>\n <div className={classes.flex}>\n {Object.entries(option.properties.mot).map(([key, value]) => {\n if (value) {\n const MotIcon = iconForMot[key];\n return (\n <span className={classes.icon} key={key}>\n <MotIcon />\n </span>\n );\n }\n return <></>;\n })}\n <span>{option.properties.name}</span>\n </div>\n </Suspense>\n );\n}\n\nStopsFinderOption.propTypes = {\n option: PropTypes.object.isRequired,\n};\n\nexport default React.memo(StopsFinderOption);\n"],
|
|
5
|
-
"mappings": "AAAA,OAAO,SAAS,MAAM,gBAAgB;AACtC,OAAO,eAAe;AACtB,SAAS,kBAAkB;AAE3B,MAAM,MAAM;AACZ,MAAM,aAAa,CAAC;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,QAAQ,CAAC,QAAQ;AACjB,aAAW,OAAO,KAAK,MAAM;AAC3B,WAAO,OAAO,qBAAqB,MAAM;AAAA,EAC3C,CAAC;AACH,CAAC;AAED,MAAM,YAAY,WAAW,CAAC,UAAU;AACtC,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,IACd;AAAA,IACA,MAAM;AAAA,MACJ,aAAa,MAAM,QAAQ,CAAC;AAAA,IAC9B;AAAA,EACF;AACF,CAAC;AAED,SAAS,kBAAkB,EAAE,OAAO,GAAG;AACrC,QAAM,UAAU,UAAU;AAE1B,SACE,oCAAC;AAAA,IAAS,UAAU,oCAAC,WAAI;AAAA,KACvB,oCAAC;AAAA,IAAI,WAAW,QAAQ;AAAA,KACrB,OAAO,QAAQ,OAAO,WAAW,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAC3D,QAAI,OAAO;AACT,YAAM,UAAU,WAAW;AAC3B,aACE,oCAAC;AAAA,QAAK,WAAW,QAAQ;AAAA,QAAM;AAAA,SAC7B,oCAAC,aAAQ,CACX;AAAA,IAEJ;AACA,WAAO,wDAAE;AAAA,EACX,CAAC,GACD,oCAAC,cAAM,OAAO,WAAW,IAAK,CAChC,CACF;AAEJ;AAEA,kBAAkB,YAAY;AAAA,EAC5B,QAAQ,UAAU,OAAO;AAC3B;AAEA,eAAe,MAAM,KAAK,iBAAiB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./StopsFinder";
|