From 8ce83febaca745bddebd0d87a37eca5128dc5312 Mon Sep 17 00:00:00 2001 From: rizwan Date: Wed, 19 Apr 2023 11:49:33 +0200 Subject: [PATCH 01/15] feat: Initial commit contain basic functionality related to HEAL project - disables unwanted functionality - adds config changes - get routes from new heal endpoint - new brand logo - adds time selection component - show heat stress levels as segment colors on route --- logo@2x.png | Bin 0 -> 29092 bytes src/assets/img/bw-stiftung.svg | 42 ++++++++++ src/assets/img/heigit-and-hd-uni-and-bw.png | Bin 0 -> 41626 bytes src/assets/img/logo@2x.png | Bin 0 -> 29092 bytes src/config-examples/app-config-example.js | 16 ++-- .../default-map-settings-example.js | 7 +- .../ors-map-filters-example.js | 39 +-------- .../settings-options-example.js | 23 +----- src/fragments/date-picker/DatePicker.vue | 26 ++++++ src/fragments/date-picker/date-picker.js | 57 ++++++++++++++ src/fragments/forms/map-form/MapForm.vue | 12 +-- .../PlacesAndDirections.vue | 11 ++- .../components/route-details/RouteDetails.vue | 3 +- .../components/route-details/route-details.js | 49 ++++++++++++ .../time-based-route/TimeBasedRoute.vue | 25 ++++++ .../i18n/time-based-route.i18n.de-de.js | 15 ++++ .../i18n/time-based-route.i18n.en-us.js | 15 ++++ .../i18n/time-based-route.i18n.es-es.js | 9 +++ .../i18n/time-based-route.i18n.fr-fr.js | 9 +++ .../i18n/time-based-route.i18n.hu-hu.js | 9 +++ .../i18n/time-based-route.i18n.it-it.js | 9 +++ .../i18n/time-based-route.i18n.pt-br.js | 9 +++ .../time-based-route/time-based-route.js | 74 ++++++++++++++++++ .../i18n/places-and-directions.i18n.de-de.js | 3 +- .../i18n/places-and-directions.i18n.en-us.js | 3 +- .../places-and-directions.js | 4 +- src/fragments/forms/settings/Settings.vue | 2 + src/i18n/translations/de-de/global.js | 3 +- src/i18n/translations/en-us/global.js | 3 +- src/resources/constants.js | 6 +- src/resources/ors-dictionary.js | 15 ++++ src/support/ors-api-runner.js | 3 +- 32 files changed, 417 insertions(+), 84 deletions(-) create mode 100644 logo@2x.png create mode 100644 src/assets/img/bw-stiftung.svg create mode 100644 src/assets/img/heigit-and-hd-uni-and-bw.png create mode 100755 src/assets/img/logo@2x.png create mode 100755 src/fragments/date-picker/DatePicker.vue create mode 100755 src/fragments/date-picker/date-picker.js create mode 100644 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/TimeBasedRoute.vue create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.de-de.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.en-us.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.es-es.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.fr-fr.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.hu-hu.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.it-it.js create mode 100755 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.pt-br.js create mode 100644 src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js diff --git a/logo@2x.png b/logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b729c283acb471b22b5b03c60c224119a45a7110 GIT binary patch literal 29092 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 Y(ImDb$gY_1#228YrmtG0Vteub0GFUMGynhq literal 0 HcmV?d00001 diff --git a/src/assets/img/bw-stiftung.svg b/src/assets/img/bw-stiftung.svg new file mode 100644 index 000000000..ada5deb32 --- /dev/null +++ b/src/assets/img/bw-stiftung.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + diff --git a/src/assets/img/heigit-and-hd-uni-and-bw.png b/src/assets/img/heigit-and-hd-uni-and-bw.png new file mode 100644 index 0000000000000000000000000000000000000000..c68167d75ea3ae89ff516ecf8b70842d772957c6 GIT binary patch literal 41626 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 cSTro)JwvZtxq6jD#YzTFfZue}jHcD*ylh literal 0 HcmV?d00001 diff --git a/src/assets/img/logo@2x.png b/src/assets/img/logo@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..b729c283acb471b22b5b03c60c224119a45a7110 GIT binary patch literal 29092 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 Y(ImDb$gY_1#228YrmtG0Vteub0GFUMGynhq literal 0 HcmV?d00001 diff --git a/src/config-examples/app-config-example.js b/src/config-examples/app-config-example.js index ba25bcb96..65d12c5de 100755 --- a/src/config-examples/app-config-example.js +++ b/src/config-examples/app-config-example.js @@ -8,7 +8,7 @@ const appConfig = { footerAppName: 'openrouteservice', // The App name that appears on the bottom favIcon: '@/assets/img/favicon.ico', // The favicon used in the browser tab logoImgSrc: '@/assets/img/logo.png', // The logo used in the top-right corner of the sidebar and on the header menu - brandLogoSrc: '@/assets/img/heigit-and-hd-uni.png', // used for 'About' page and map overlay on large screens + brandLogoSrc: '@/assets/img/heigit-and-hd-uni-and-bw.png', // used for 'About' page and map overlay on large screens countryIconImgSrc: '@/assets/img/country-icon.png', // used for Place search as icon for country level results footerDevelopedByLink: 'https://www.heigit.org/', // The url that is used on the footer developed by link urlMode: 'hash', // The url mode for vue router: `hash` or `history` @@ -32,27 +32,27 @@ const appConfig = { showAdminAreaPolygon: true, // show admin area polygon showInstructionsTooltipsOnFirstLoad: true, // if the instructions tooltips must be shown on the app first load showDefaultAboutContent: true, // show default about content - showAltitudeOnSidebar: true, // show altitude preview on sidebar + showAltitudeOnSidebar: false, // show altitude preview on sidebar autoSelectFirstExactAddressMatchOnSearchEnter: true, // If the first exact address match must be auto selected when the user type a text and in the place search and hit enter/return - disabledActionsForIsochrones: ['roundtrip'], // Possible values: `addPlaceInput`, `clearPlaces`, `reverseRoute`, `roundtrip`, `routeImporter` - disabledActionsForPlacesAndDirections: [], // // Possible values: `addPlaceInput`, `clearPlaces`, `reverseRoute`, `roundtrip`, `routeImporter` + disabledActionsForIsochrones: ['roundtrip', 'routeImporter'], // Possible values: `addPlaceInput`, `clearPlaces`, `reverseRoute`, `roundtrip`, `routeImporter` + disabledActionsForPlacesAndDirections: ['routeImporter'], // // Possible values: `addPlaceInput`, `clearPlaces`, `reverseRoute`, `roundtrip`, `routeImporter` supportsPlacesAndDirections: true, // If the whole places and directions feature is supported/enabled in the application - supportsIsochrones: true, // If isochrones is supported/enabled in the application + supportsIsochrones: false, // If isochrones is supported/enabled in the application supportsMapFiltersOnSidebar: true, // if the filters options box is present/enabled in the app supportsDirections: true, // If the directions functionality is available sidebarStartsOpenInHighResolution: false, // if the sidebar must start open in high resolution defaultTilesProvider: 'osm', // The default tile provider (valid values are the `id` property of one of the `mapTileProviders` array below) - supportsAvoidPolygonDrawing: true, // If the avoid polygon drawing tools must be available on the map view - distanceMeasureToolAvailable: true, // If the polyline distance measure tool must be available on the map view + supportsAvoidPolygonDrawing: false, // If the avoid polygon drawing tools must be available on the map view + distanceMeasureToolAvailable: false, // If the polyline distance measure tool must be available on the map view accessibilityToolAvailable: true, // If the accessibility tool must be available on the map view fitAllFeaturesToolAvailable: true, // If the fitAllFeatures tool must be available on the map view supportsClusteredMarkers: true, // If clustered markers is supported (then markers with `clustered=true` property will be clustered) supportsSearchBottomCarousel: true, // If the bottom carousel with the search results must be displayed or not. supportsSearchMode: true, // If the search mode is supported supportsMyLocationBtn: true, // If the `my location` button is supported on the map view - initialZoomLevel: 6, // The initial map view zoom level + initialZoomLevel: 13, // The initial map view zoom level initialMapMaxZoom: 18, // The initial map view max zoom diff --git a/src/config-examples/default-map-settings-example.js b/src/config-examples/default-map-settings-example.js index 998fd3c91..96ce2b196 100644 --- a/src/config-examples/default-map-settings-example.js +++ b/src/config-examples/default-map-settings-example.js @@ -25,14 +25,14 @@ const defaultMapSettings = { customTileProviderUrl: '', customOverlayerTileProviderUrl: '', prioritizeSearchingForNearbyPlaces: true, - defaultProfile: 'cycling-regular', + defaultProfile: 'foot-walking', compressDataUrlSegment: true, autoFitHighlightedBounds: true, convertStopAfterRouteEndingToDestination: false, useStopOptimization: false, accessibleModeActive: false, shownOnceTooltips: {}, - mapCenter: {lat: 49.510944, lng: 8.76709}, // Default center is at Heidelberg, Germany + mapCenter: {lat: 49.410757, lng: 8.681120}, // Default center is at Heidelberg, Germany defaultIsochroneColors: [ // qgis plugin color scheme as default '#2b83ba', '#64abb0', @@ -58,6 +58,9 @@ const defaultMapSettings = { roadaccessrestrictions: false, green: false, noise: false, + // heal specific + csv: true, + healRouteApiUrl: './api', // Extra settings not being used yet suitability: false diff --git a/src/config-examples/ors-map-filters-example.js b/src/config-examples/ors-map-filters-example.js index 9380eab85..6e768dc43 100755 --- a/src/config-examples/ors-map-filters-example.js +++ b/src/config-examples/ors-map-filters-example.js @@ -15,48 +15,15 @@ const filters = [ required: true, type: constants.filterTypes.string, enum: [ - 'driving-car', - 'driving-hgv', - 'cycling-regular', - 'cycling-road', - 'cycling-safe', - 'cycling-mountain', - 'cycling-electric', - 'foot-walking', - 'foot-hiking', - 'wheelchair' + 'foot-walking' ], mapping: { - 'cycling-regular': { - slug: 'cycling-regular', - icon: 'directions_bike', - nestedProfiles: ['cycling-regular', 'cycling-road', 'cycling-electric', 'cycling-mountain'], - supportsTrailDifficulty: true - }, 'foot-walking': { slug: 'foot-walking', icon: 'directions_walk', - nestedProfiles: ['foot-walking', 'foot-hiking'], supportsTrailDifficulty: true, supportsGreen: true, supportsNoise: true - }, - 'driving-car': { - slug: 'driving-car', - icon: 'directions_car', - supportsRoadAccessRestrictions: true, - supportsTollways: true - }, - 'driving-hgv': { - slug: 'driving-hgv', - icon: 'directions_bus', - vehicleTypes: ['bus', 'hgv', 'agricultural', 'delivery', 'forestry', 'goods'], - supportsRoadAccessRestrictions: true, - supportsTollways: true - }, - wheelchair: { - slug: 'wheelchair', - icon: 'accessible' } } }, @@ -832,8 +799,8 @@ const filters = [ name: 'target_count', required: false, type: constants.filterTypes.steps, - default: 1, - value: 1, + default: 3, + value: 3, min: 1, max: 3, step: 1, diff --git a/src/config-examples/settings-options-example.js b/src/config-examples/settings-options-example.js index 1e3d0ffc7..27073a21c 100644 --- a/src/config-examples/settings-options-example.js +++ b/src/config-examples/settings-options-example.js @@ -7,19 +7,7 @@ const settingsOptions = { routingInstructionsLocales: [ { text: 'EN', value: 'en' }, - { text: 'DE', value: 'de' }, - { text: 'CN', value: 'cn' }, - { text: 'ES', value: 'es' }, - { text: 'RU', value: 'ru' }, - { text: 'DK', value: 'dk' }, - { text: 'FR', value: 'fr' }, - { text: 'IT', value: 'it' }, - { text: 'NL', value: 'nl' }, - { text: 'PT BR', value: 'pt' }, - { text: 'SE', value: 'se' }, - { text: 'TR', value: 'tr' }, - { text: 'GR', value: 'gr' }, - { text: 'HU', value: 'hu' } + { text: 'DE', value: 'de' } ], units: [ { text: 'Kilometers', value: 'km', slug: 'kilometers' }, @@ -33,14 +21,7 @@ const settingsOptions = { ], appLocales: [ { text: 'English US', value: 'en-us' }, - { text: 'Deutsch DE', value: 'de-de' }, - { text: 'Español ES', value: 'es-es' }, - { text: 'Français FR', value: 'fr-fr' }, - { text: 'Português BR', value: 'pt-br' }, - { text: 'Italiano IT', value: 'it-it' }, - { text: 'Magyar HU', value: 'hu-hu' }, - { text: 'Čeština CS', value: 'cs-cz' }, - { text: 'Română RO', value: 'ro-ro' } + { text: 'Deutsch DE', value: 'de-de' } ], tileServices: [ { text: 'OpenStreetMap', value: 'osm' }, diff --git a/src/fragments/date-picker/DatePicker.vue b/src/fragments/date-picker/DatePicker.vue new file mode 100755 index 000000000..06ad8db80 --- /dev/null +++ b/src/fragments/date-picker/DatePicker.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/fragments/date-picker/date-picker.js b/src/fragments/date-picker/date-picker.js new file mode 100755 index 000000000..9d08ba25b --- /dev/null +++ b/src/fragments/date-picker/date-picker.js @@ -0,0 +1,57 @@ +export default { + data: () => ({ + dateModal: false, + dateMenu: false, + date: null + }), + props: { + label: + { + type: String, + required: true + }, + model: { + required: false, + default: '' + }, + onChange: { + type: Function, + required: false + }, + min: { + required: false + }, + max: { + required: false + }, + disabled: { + type: Boolean, + default: false + }, + required: { + type: Boolean, + default: false + }, + locale: { + type: String, + default: 'en-us' + } + }, + watch: { + model: function (newVal) { + this.date = newVal + } + }, + created () { + this.date = this.model + }, + methods: { + onDatePicked () { + this.$emit('update:model', this.date) + this.$refs.menu.save(this.date) + if (this.onChange) { + this.onChange(this.date) + } + } + } +} diff --git a/src/fragments/forms/map-form/MapForm.vue b/src/fragments/forms/map-form/MapForm.vue index 1ffd5e84f..9c981a88f 100644 --- a/src/fragments/forms/map-form/MapForm.vue +++ b/src/fragments/forms/map-form/MapForm.vue @@ -1,21 +1,21 @@ diff --git a/src/fragments/forms/map-form/components/place-and-directions/PlacesAndDirections.vue b/src/fragments/forms/map-form/components/place-and-directions/PlacesAndDirections.vue index 0440e7754..9b514a76c 100644 --- a/src/fragments/forms/map-form/components/place-and-directions/PlacesAndDirections.vue +++ b/src/fragments/forms/map-form/components/place-and-directions/PlacesAndDirections.vue @@ -48,18 +48,25 @@
+ +
+

{{$t('placesAndDirections.timeBasedRouteHeader')}} : {{new Date().toLocaleDateString('de-DE')}}

+
+ +
+
- + diff --git a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.de-de.js b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.de-de.js index 539c82570..ae0eeb842 100755 --- a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.de-de.js +++ b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.de-de.js @@ -7,9 +7,9 @@ export default { now: 'Aktuell', inFewHours: 'In 2 Stunden', hotDays: 'Hitzetag', - morning: 'Morgens (bis 11 Uhr)', - noon: 'Mittags (12 Uhr bis 14 Uhr)', - afternoon: 'Nachmittags (14 Uhr bis 16 Uhr)', - evening: 'Abends (ab 16 Uhr)' + morning: 'Morgens', + noon: 'Mittags', + afternoon: 'Nachmittags', + evening: 'Abends' } } diff --git a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.en-us.js b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.en-us.js index c8925d6db..18fa3a640 100755 --- a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.en-us.js +++ b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/i18n/time-based-route.i18n.en-us.js @@ -7,9 +7,9 @@ export default { now: 'Current', inFewHours: 'In 2 Hours', hotDays: 'Hot days', - morning: 'Morning (till 11 Hrs)', - noon: 'Noon (12 Hrs till 14 Hrs)', - afternoon: 'Afternoon (14 Hrs till 16 Hrs)', - evening: 'Evening (16 Hrs onwards)' + morning: 'Morning', + noon: 'Noon', + afternoon: 'Afternoon', + evening: 'Evening' } } diff --git a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js index 1e33c2a01..138c13ef9 100644 --- a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js +++ b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js @@ -1,7 +1,7 @@ import MapViewData from '@/models/map-view-data' +import {EventBus} from '@/common/event-bus' export default { - // props: ['places', 'mapViewData'], props: { mapViewData: { Type: MapViewData, @@ -16,24 +16,28 @@ export default { return { // hours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], timesOfTheDay: [ + // { + // label: 'now', + // value: 'now' + // }, { label: 'morning', - value: '06' + value: 'heat_morning' }, { label: 'noon', - value: '10' + value: 'heat_noon' }, { label: 'afternoon', - value: '14' + value: 'heat_afternoon' }, { label: 'evening', - value: '18' + value: 'heat_evening' } ], - selectedHour: '14' + selectedHour: 'heat_noon' } }, computed: { @@ -47,9 +51,6 @@ export default { }, }, methods: { - /* route(time) { - console.log('>>> timeBasedRoute >>> route ', time) - }, */ routeOnHotDays(time) { console.log('>>> timeBasedRoute >>> routeOnHotDays ', time) }, @@ -65,9 +66,9 @@ export default { let appRouteData = this.$store.getters.appRouteData // console.log('>>> departHourChange ', this.selectedHour, appRouteData) - appRouteData.options.options.profile_params.weightings.csv_column = `176_${this.selectedHour}-26` + appRouteData.options.options.profile_params.weightings.csv_column = `${this.selectedHour}` // this.$store.commit('appRouteData', appRouteData) - this.eventBus.$emit('appRouteDataChanged', appRouteData) + EventBus.$emit('appRouteDataChanged', appRouteData) }, } From fd3ce5955ce0fb7b795db2e64331e7ef396324e1 Mon Sep 17 00:00:00 2001 From: rizwan Date: Tue, 30 May 2023 12:18:42 +0200 Subject: [PATCH 04/15] refactor: add sample param for csv_column csv_column is the extra param in the request for making heal request --- src/config-examples/ors-map-filters-example.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/config-examples/ors-map-filters-example.js b/src/config-examples/ors-map-filters-example.js index 6e768dc43..83368bea4 100755 --- a/src/config-examples/ors-map-filters-example.js +++ b/src/config-examples/ors-map-filters-example.js @@ -613,7 +613,15 @@ const filters = [ min: 0.1 } ], - } + }, + { + name: 'csv_factor', + value: 0.8 + }, + { + name: 'csv_column', + value: 'heat_noon' // default value if nothing is selected by the user + }, ] }, { From 4c368ff6a62d1cabe32a9291f2209170f609a71b Mon Sep 17 00:00:00 2001 From: rizwan Date: Tue, 11 Jul 2023 11:48:09 +0200 Subject: [PATCH 05/15] fix: removes 2 buttons on left-click #378 --- .../map-view/components/map-left-click/MapLeftClick.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fragments/map-view/components/map-left-click/MapLeftClick.vue b/src/fragments/map-view/components/map-left-click/MapLeftClick.vue index 3e3bf4b1d..cd50128ce 100644 --- a/src/fragments/map-view/components/map-left-click/MapLeftClick.vue +++ b/src/fragments/map-view/components/map-left-click/MapLeftClick.vue @@ -17,8 +17,8 @@ @click="directionsToPoint(placeInfo)">directions - content_copy - content_copy + + From ae39687b8c570b28445c0b8f9038af9ed7331577 Mon Sep 17 00:00:00 2001 From: rizwan Date: Tue, 11 Jul 2023 11:56:32 +0200 Subject: [PATCH 06/15] fix: removes "Inspect in OSM" buttons on right-click #380 also removed "Add as Reach center" on right-click in places mode --- .../map-view/components/map-right-click/map-right-click.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/fragments/map-view/components/map-right-click/map-right-click.js b/src/fragments/map-view/components/map-right-click/map-right-click.js index 28e023079..23e4c5009 100644 --- a/src/fragments/map-view/components/map-right-click/map-right-click.js +++ b/src/fragments/map-view/components/map-right-click/map-right-click.js @@ -45,13 +45,14 @@ export default { } }, canAddIsochroneCenter () { - return this.$store.getters.mode === constants.modes.isochrones || (this.$store.getters.mode === constants.modes.place && !this.$store.getters.isSidebarVisible) + // return this.$store.getters.mode === constants.modes.isochrones || (this.$store.getters.mode === constants.modes.place && !this.$store.getters.isSidebarVisible) + return false }, canRoute () { return this.$store.getters.mode !== constants.modes.isochrones }, canShowInspector () { - return true + return false } }, methods: { From beb724393e117196f9e4a8a00fa674a89e56979d Mon Sep 17 00:00:00 2001 From: rizwan Date: Tue, 11 Jul 2023 14:34:00 +0200 Subject: [PATCH 07/15] fix: change right-click popup box size #380 It is done to make the popup box appear near to the mouse clicked position --- .../map-view/components/map-right-click/map-right-click.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fragments/map-view/components/map-right-click/map-right-click.js b/src/fragments/map-view/components/map-right-click/map-right-click.js index 23e4c5009..9e0675a7b 100644 --- a/src/fragments/map-view/components/map-right-click/map-right-click.js +++ b/src/fragments/map-view/components/map-right-click/map-right-click.js @@ -95,7 +95,7 @@ export default { const event = data.event const mapEl = data.mapEl const boxWidth = 190 - const boxHeight = 217 + const boxHeight = 190 const mapWidth = mapEl.clientWidth const mapHeight = mapEl.clientHeight const offsetX = 10 From 3d61347f8c2e47a2af0eace01768886281aeffa9 Mon Sep 17 00:00:00 2001 From: rizwan Date: Wed, 12 Jul 2023 11:49:59 +0200 Subject: [PATCH 08/15] fix: display heatstress colors on route by default #381 --- src/app.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app.js b/src/app.js index dc3239b9a..42e2c0c0b 100755 --- a/src/app.js +++ b/src/app.js @@ -35,6 +35,8 @@ export default { }) const favIcon = document.getElementById('favIcon') favIcon.href = utils.getImgSrc('favIcon') + // show heatstress level on the route by default. + this.$store.commit('extraHighlight', {key: 'csv', value: 'all', index: 0}) }, mounted() { EventBus.$on('appLoaded', () => { From 10469a17176e530ac25dd5752307990d671ddb9a Mon Sep 17 00:00:00 2001 From: rizwan Date: Thu, 10 Aug 2023 12:23:29 +0200 Subject: [PATCH 09/15] fix: display heidelberg cut-out #385 --- src/fragments/map-view/map-view.js | 26 ++++++++++++++++++++++++++ src/support/region-of-interest.js | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/support/region-of-interest.js diff --git a/src/fragments/map-view/map-view.js b/src/fragments/map-view/map-view.js index 2e12a77b4..121620126 100644 --- a/src/fragments/map-view/map-view.js +++ b/src/fragments/map-view/map-view.js @@ -68,6 +68,7 @@ import Utils from '@/support/utils' import theme from '@/config/theme' import Place from '@/models/place' import {EventBus} from '@/common/event-bus' +import region from '@/support/region-of-interest' import 'vue2-leaflet-draw-toolbar' import Leaflet from 'leaflet' import lodash from 'lodash' @@ -1965,6 +1966,30 @@ export default { this.fit() } }, + /** + * Display an inverted polygon of region of interest + */ + addRegionOfInterest() { + if (region) { + this.getMapObject().then((map) => { + // assumption is that region will be a polygon and not a mulitpolygon + let geometryCoords = region.features[0].geometry.coordinates[0] + let holes = [] + for (let key in geometryCoords) { + holes.push(GeoUtils.switchLatLonIndex(geometryCoords[key])) + } + + var coords = [[[90, -180], [90, 180], [-90, 180], [-90, -180]], holes] + + Leaflet.polygon(coords, {color: 'red', fillColor: '#000', opacity: 1, weight: 1, fillOpacity: 0.3}) + .addTo(map) + + let bounds = Leaflet.geoJSON(region).getBounds() + map.setMaxBounds(bounds) + map.fitBounds(bounds, { padding: [20, 20], maxZoom: 18 }) + }) + } + }, /** * Add map view initial EventBus listeners * @listens redrawAndFitMap (via EventBus) @@ -2062,6 +2087,7 @@ export default { this.loadAvoidPolygons() this.setProviders() this.setMapCenter() + this.addRegionOfInterest() window.addEventListener('keyup', this.disablePickPlaceMode) } } diff --git a/src/support/region-of-interest.js b/src/support/region-of-interest.js new file mode 100644 index 000000000..686aff485 --- /dev/null +++ b/src/support/region-of-interest.js @@ -0,0 +1,22 @@ +const region = { + 'type':'FeatureCollection', + 'features':[ + { + 'type':'Feature','id':'admin_world_water.-285864-_-Heidelberg', + 'geometry':{ + 'type':'MultiPolygon', + 'coordinates':[ + [ + [ + [8.573179,49.4236],[8.573244,49.423266],[8.573517,49.421746],[8.573602,49.421029],[8.57363,49.420766],[8.573618,49.420478],[8.573575,49.420208],[8.573487,49.419852],[8.573253,49.419103],[8.57328,49.418634],[8.573262,49.41846],[8.573244,49.418239],[8.573233,49.418026],[8.573211,49.417562],[8.573206,49.417217],[8.573223,49.416902],[8.573288,49.416518],[8.57343,49.415763],[8.573622,49.415734],[8.57398,49.414723],[8.574098,49.414421],[8.574905,49.412659],[8.575126,49.41262],[8.575952,49.412479],[8.576354,49.412403],[8.576806,49.412309],[8.577418,49.412162],[8.578871,49.411815],[8.580327,49.411477],[8.580548,49.411425],[8.581021,49.411314],[8.581467,49.411198],[8.582126,49.411021],[8.58281,49.41083],[8.583621,49.410604],[8.584256,49.41041],[8.584461,49.410598],[8.5846,49.41074],[8.58466,49.410809],[8.584729,49.410896],[8.58484,49.411043],[8.584893,49.411041],[8.590664,49.410551],[8.592504,49.410392],[8.59249,49.410325],[8.592557,49.410316],[8.592992,49.410285],[8.594295,49.410194],[8.595027,49.410131],[8.595718,49.41008],[8.596457,49.410013],[8.597109,49.409948],[8.597817,49.409869],[8.598479,49.409799],[8.59864,49.409784],[8.600522,49.409527],[8.603393,49.409127],[8.60354,49.409104],[8.603638,49.409079],[8.6052,49.408456],[8.608794,49.407045],[8.610673,49.40595],[8.611461,49.405467],[8.612437,49.406203],[8.616606,49.407383],[8.622553,49.409046],[8.622627,49.40901],[8.622648,49.408953],[8.62272,49.408975],[8.622722,49.408976],[8.622791,49.409015],[8.622851,49.409049],[8.623189,49.409236],[8.624498,49.409958],[8.62459,49.410009],[8.625102,49.410294],[8.625378,49.410448],[8.625911,49.410745],[8.626324,49.410975],[8.62698,49.411341],[8.628263,49.412032],[8.62859,49.412213],[8.629072,49.412486],[8.630034,49.413176],[8.630959,49.413833],[8.632078,49.414583],[8.632707,49.415007],[8.632748,49.415035],[8.632938,49.414961],[8.633025,49.414928],[8.633075,49.414807],[8.63406,49.412449],[8.634446,49.411487],[8.634737,49.410763],[8.635407,49.409092],[8.635873,49.407932],[8.636033,49.40753],[8.636136,49.407242],[8.636215,49.406957],[8.636379,49.40639],[8.636465,49.406041],[8.63659,49.405566],[8.636667,49.405072],[8.636706,49.404806],[8.636743,49.404552],[8.636827,49.403969],[8.6369,49.403462],[8.636926,49.403268],[8.637017,49.402596],[8.637222,49.401141],[8.637549,49.3988],[8.638009,49.395648],[8.638186,49.393813],[8.638295,49.39272],[8.638521,49.392746],[8.640722,49.393021],[8.64343,49.393381],[8.643512,49.393194],[8.643527,49.39316],[8.645535,49.390885],[8.64636,49.389866],[8.6475,49.388537],[8.645357,49.388044],[8.643807,49.387609],[8.642091,49.387149],[8.641038,49.386841],[8.639916,49.386498],[8.639667,49.386434],[8.639387,49.386413],[8.638662,49.386411],[8.638086,49.386573],[8.636604,49.38704],[8.634926,49.387313],[8.633683,49.387185],[8.633598,49.387174],[8.633542,49.386897],[8.633434,49.386227],[8.633401,49.385899],[8.633366,49.385892],[8.630199,49.3852],[8.629858,49.385107],[8.629436,49.384945],[8.62885,49.384706],[8.628366,49.384445],[8.627801,49.38413],[8.627122,49.383729],[8.62646,49.38335],[8.625986,49.383068],[8.625383,49.382699],[8.624878,49.382387],[8.624241,49.38199],[8.623785,49.381668],[8.624382,49.38067],[8.621112,49.380011],[8.620378,49.379843],[8.617932,49.379283],[8.616155,49.379158],[8.615294,49.378918],[8.614545,49.378758],[8.613751,49.378528],[8.612581,49.378202],[8.610866,49.378017],[8.610186,49.377919],[8.609757,49.37785],[8.609403,49.377756],[8.609066,49.377649],[8.608678,49.377505],[8.607916,49.37721],[8.607342,49.376972],[8.606883,49.376751],[8.60681,49.376163],[8.607222,49.374986],[8.607484,49.37429],[8.607332,49.373851],[8.606536,49.371886],[8.605798,49.370097],[8.605168,49.370272],[8.60321,49.368377],[8.601004,49.366203],[8.604393,49.365577],[8.604307,49.365419],[8.605479,49.365214],[8.605886,49.365159],[8.607155,49.365004],[8.607562,49.364962],[8.607787,49.364932],[8.608004,49.364857],[8.608231,49.364779],[8.608521,49.364676],[8.608763,49.364588],[8.608975,49.364526],[8.60924,49.364461],[8.609518,49.364418],[8.609797,49.364361],[8.610128,49.3643],[8.610354,49.364251],[8.610605,49.364179],[8.610995,49.364053],[8.611555,49.363849],[8.612129,49.363662],[8.613637,49.363103],[8.615444,49.362414],[8.61635,49.362058],[8.617043,49.361767],[8.617591,49.361529],[8.618237,49.361201],[8.618957,49.360849],[8.619443,49.360653],[8.619975,49.360461],[8.620625,49.360206],[8.621086,49.360044],[8.621364,49.359916],[8.621823,49.359713],[8.622089,49.35959],[8.622436,49.35947],[8.623627,49.359191],[8.624466,49.359063],[8.623282,49.35746],[8.623019,49.357581],[8.621335,49.355497],[8.620215,49.354073],[8.620484,49.354038],[8.620686,49.354007],[8.621085,49.353877],[8.623323,49.352879],[8.625019,49.352119],[8.62524,49.35203],[8.625625,49.352003],[8.627988,49.352082],[8.628566,49.352102],[8.629102,49.352103],[8.629641,49.352094],[8.630762,49.352065],[8.630787,49.352734],[8.631513,49.352774],[8.631909,49.352796],[8.632002,49.352809],[8.632227,49.352816],[8.632605,49.352839],[8.632903,49.352846],[8.633112,49.352836],[8.633234,49.352838],[8.633289,49.353939],[8.633355,49.355012],[8.633367,49.355489],[8.63355,49.355781],[8.633758,49.3561],[8.633974,49.356482],[8.634167,49.356808],[8.634287,49.357126],[8.634421,49.357445],[8.634504,49.357686],[8.634859,49.358095],[8.635396,49.358765],[8.636103,49.359671],[8.636657,49.360357],[8.636737,49.360538],[8.636888,49.361037],[8.637136,49.36199],[8.637264,49.362635],[8.637304,49.362804],[8.637443,49.363191],[8.637664,49.36361],[8.637986,49.364358],[8.638362,49.365323],[8.638797,49.36638],[8.639105,49.3671],[8.639672,49.368535],[8.640274,49.369977],[8.64095,49.36962],[8.642835,49.368655],[8.644035,49.369072],[8.644716,49.369324],[8.644987,49.369459],[8.645246,49.369621],[8.645609,49.369857],[8.645945,49.370086],[8.646206,49.370303],[8.646365,49.370464],[8.647363,49.369711],[8.647775,49.369395],[8.64813,49.369156],[8.648616,49.368856],[8.649148,49.368515],[8.649775,49.368118],[8.650491,49.367685],[8.650841,49.367478],[8.650529,49.366984],[8.650281,49.366573],[8.650115,49.36627],[8.649942,49.365978],[8.651691,49.364976],[8.651847,49.365094],[8.652197,49.364902],[8.652915,49.364549],[8.653519,49.364273],[8.654112,49.36402],[8.654768,49.363737],[8.655407,49.363473],[8.656377,49.363115],[8.657142,49.362813],[8.657764,49.363277],[8.658185,49.363054],[8.658651,49.362836],[8.659164,49.362571],[8.658052,49.361776],[8.657009,49.360179],[8.656454,49.35929],[8.655814,49.358138],[8.655354,49.357298],[8.654878,49.356558],[8.654787,49.35643],[8.654561,49.356112],[8.653362,49.356263],[8.652987,49.35577],[8.652544,49.355287],[8.652104,49.35458],[8.651277,49.353254],[8.651455,49.353204],[8.651636,49.353188],[8.65183,49.353191],[8.652046,49.353203],[8.652348,49.353246],[8.652615,49.353273],[8.652844,49.353279],[8.653124,49.353277],[8.653474,49.353258],[8.653742,49.353245],[8.654053,49.353215],[8.654541,49.353146],[8.655319,49.353021],[8.656788,49.352777],[8.657594,49.352635],[8.657702,49.352622],[8.657803,49.35261],[8.658004,49.352578],[8.658147,49.352565],[8.657938,49.35276],[8.657306,49.353303],[8.657404,49.353355],[8.656818,49.353732],[8.656362,49.354017],[8.656689,49.35436],[8.657243,49.355195],[8.658874,49.354938],[8.660099,49.354864],[8.660662,49.354831],[8.660553,49.35385],[8.661187,49.353988],[8.661529,49.354066],[8.662499,49.354314],[8.663203,49.354396],[8.663578,49.353585],[8.664184,49.353663],[8.665018,49.353769],[8.664862,49.354592],[8.664516,49.356424],[8.664343,49.357139],[8.664257,49.357496],[8.664523,49.357548],[8.664876,49.357593],[8.667029,49.35798],[8.66801,49.358065],[8.668543,49.358111],[8.668764,49.358127],[8.669807,49.358003],[8.671465,49.357805],[8.67168,49.357818],[8.671905,49.359187],[8.672189,49.360595],[8.672442,49.361521],[8.6742,49.361218],[8.675834,49.360668],[8.675955,49.360221],[8.677248,49.360356],[8.678227,49.360427],[8.67875,49.360442],[8.679817,49.360427],[8.679921,49.360425],[8.682084,49.360389],[8.682014,49.359907],[8.684247,49.359817],[8.684378,49.359781],[8.68706,49.359824],[8.687067,49.35976],[8.687186,49.359138],[8.687237,49.35886],[8.689029,49.3589],[8.689213,49.358942],[8.690288,49.358929],[8.690684,49.358899],[8.691469,49.358787],[8.691399,49.358492],[8.692384,49.358415],[8.692438,49.358513],[8.692874,49.358386],[8.692904,49.358507],[8.693627,49.358371],[8.693654,49.35848],[8.694136,49.358357],[8.694369,49.358679],[8.69466,49.358603],[8.694621,49.358537],[8.694444,49.358239],[8.6964,49.357749],[8.696686,49.357789],[8.696953,49.358039],[8.698234,49.357421],[8.699042,49.357005],[8.699133,49.357005],[8.699224,49.357003],[8.699468,49.356867],[8.70005,49.356571],[8.700092,49.35655],[8.70054,49.356327],[8.701206,49.356063],[8.701769,49.355846],[8.701847,49.355815],[8.70249,49.355716],[8.703321,49.355722],[8.703979,49.355745],[8.704667,49.355786],[8.705234,49.355848],[8.705404,49.355871],[8.705776,49.35592],[8.706353,49.356042],[8.706882,49.356123],[8.708302,49.356341],[8.70964,49.35658],[8.71027,49.355542],[8.710889,49.35511],[8.711249,49.35521],[8.7114,49.35534],[8.711683,49.355525],[8.711946,49.355618],[8.712512,49.355659],[8.713391,49.355695],[8.71423,49.355746],[8.715084,49.355951],[8.715987,49.35624],[8.716396,49.356342],[8.718652,49.356379],[8.71896,49.356351],[8.719342,49.356762],[8.719472,49.357065],[8.71971,49.357302],[8.720122,49.357283],[8.721267,49.357192],[8.721461,49.357173],[8.722389,49.357253],[8.723668,49.357439],[8.724196,49.357602],[8.724937,49.357921],[8.725241,49.358308],[8.725498,49.358663],[8.725599,49.358803],[8.726016,49.359476],[8.726055,49.360045],[8.726094,49.360374],[8.727113,49.361989],[8.727202,49.362889],[8.727423,49.364133],[8.727717,49.365509],[8.728446,49.366441],[8.728671,49.366705],[8.728942,49.366897],[8.730404,49.367933],[8.729929,49.368208],[8.728541,49.368817],[8.72836,49.368682],[8.726259,49.369455],[8.725357,49.370066],[8.725576,49.37022],[8.725009,49.371211],[8.724729,49.37225],[8.724401,49.373496],[8.724479,49.373747],[8.724841,49.373957],[8.727404,49.375554],[8.72822,49.374821],[8.729138,49.374009],[8.730155,49.373179],[8.730385,49.373252],[8.730507,49.373311],[8.731437,49.372716],[8.732328,49.372224],[8.733929,49.372675],[8.735724,49.372956],[8.736319,49.373324],[8.737564,49.374161],[8.738416,49.374491],[8.740049,49.374553],[8.740729,49.374442],[8.741468,49.373924],[8.742963,49.373108],[8.744141,49.372795],[8.745571,49.37295],[8.746882,49.373147],[8.747531,49.373299],[8.747803,49.373403],[8.74801,49.373481],[8.749031,49.373788],[8.749349,49.373809],[8.749506,49.373874],[8.749682,49.374157],[8.749784,49.374269],[8.749979,49.37486],[8.750254,49.375234],[8.750486,49.375439],[8.751287,49.375853],[8.751986,49.376167],[8.752481,49.376371],[8.75318,49.376893],[8.753542,49.377091],[8.754226,49.377357],[8.754767,49.377573],[8.754718,49.377723],[8.754876,49.377766],[8.75543,49.377841],[8.756198,49.37791],[8.756906,49.377922],[8.75795,49.377906],[8.758486,49.377899],[8.758903,49.377943],[8.759138,49.377807],[8.759187,49.377808],[8.759786,49.377905],[8.760544,49.378024],[8.762615,49.378444],[8.763084,49.378532],[8.763661,49.378542],[8.765369,49.378518],[8.766125,49.378539],[8.766754,49.378608],[8.76849,49.379027],[8.76883,49.379193],[8.768381,49.379612],[8.767516,49.380685],[8.766845,49.381342],[8.766279,49.382016],[8.765944,49.3827],[8.76528,49.383389],[8.764256,49.384184],[8.763735,49.384783],[8.76338,49.385218],[8.763158,49.385451],[8.762978,49.385762],[8.762909,49.385993],[8.762887,49.386438],[8.762991,49.386902],[8.762978,49.387249],[8.762899,49.387516],[8.763192,49.387952],[8.764231,49.387498],[8.766654,49.387178],[8.767235,49.387063],[8.767759,49.386865],[8.768178,49.386789],[8.768518,49.386845],[8.768946,49.386974],[8.76931,49.38714],[8.769787,49.387254],[8.770146,49.387651],[8.771331,49.388121],[8.771843,49.388408],[8.772677,49.388667],[8.772941,49.388877],[8.773016,49.389213],[8.773661,49.389392],[8.773463,49.389673],[8.773409,49.390055],[8.77366,49.390523],[8.773878,49.390824],[8.774229,49.390979],[8.774594,49.391209],[8.775114,49.391654],[8.775375,49.392035],[8.775841,49.392457],[8.775178,49.393053],[8.776011,49.393547],[8.776472,49.394054],[8.776103,49.394241],[8.775839,49.394462],[8.775613,49.394778],[8.775432,49.39513],[8.775357,49.395498],[8.775351,49.39589],[8.775405,49.396353],[8.77561,49.396942],[8.775853,49.397499],[8.77627,49.398225],[8.776723,49.39895],[8.777297,49.399897],[8.777925,49.401157],[8.778345,49.40224],[8.779285,49.402018],[8.78048,49.4018],[8.781842,49.401604],[8.783078,49.401452],[8.783982,49.401369],[8.784682,49.401329],[8.785426,49.40138],[8.78645,49.401532],[8.787479,49.40178],[8.789244,49.402355],[8.790122,49.40271],[8.7907,49.403068],[8.791436,49.403734],[8.792046,49.404237],[8.792756,49.404675],[8.793315,49.405004],[8.793591,49.405187],[8.793708,49.405634],[8.793657,49.406063],[8.793701,49.40635],[8.793964,49.406931],[8.79405,49.40719],[8.793454,49.408909],[8.79312,49.409948],[8.793072,49.410423],[8.792942,49.411043],[8.792821,49.411647],[8.792762,49.411853],[8.792359,49.412349],[8.790377,49.414782],[8.790199,49.414964],[8.790132,49.415286],[8.789943,49.416379],[8.78948,49.417608],[8.789429,49.418818],[8.789394,49.419256],[8.789554,49.419831],[8.789819,49.420577],[8.789964,49.421041],[8.790163,49.421213],[8.791171,49.42288],[8.791273,49.423258],[8.790903,49.424051],[8.789978,49.425945],[8.789643,49.42708],[8.78907,49.430067],[8.78834,49.431146],[8.786537,49.432578],[8.779296,49.432764],[8.777773,49.432907],[8.777268,49.433012],[8.776973,49.433155],[8.776765,49.433357],[8.775986,49.434071],[8.774992,49.43454],[8.774022,49.434993],[8.773641,49.435318],[8.773252,49.435419],[8.772923,49.435463],[8.77217,49.435536],[8.77045,49.435737],[8.769482,49.436046],[8.766398,49.437365],[8.766515,49.440274],[8.766223,49.440275],[8.76637,49.441863],[8.766334,49.443584],[8.764728,49.446047],[8.761766,49.448135],[8.761703,49.450618],[8.761818,49.450806],[8.762051,49.450947],[8.763169,49.451433],[8.764276,49.451893],[8.765277,49.452469],[8.766319,49.453103],[8.767107,49.453698],[8.767706,49.454192],[8.765332,49.455547],[8.763575,49.456368],[8.76329,49.456467],[8.762939,49.456488],[8.76055,49.456572],[8.758634,49.456662],[8.757555,49.456702],[8.757041,49.457473],[8.756618,49.457934],[8.756062,49.458405],[8.755408,49.458854],[8.754686,49.459468],[8.754705,49.459642],[8.753986,49.459693],[8.753099,49.459548],[8.75158,49.459204],[8.750438,49.458958],[8.750091,49.459072],[8.748992,49.459252],[8.747833,49.459441],[8.746352,49.459567],[8.745469,49.459614],[8.745235,49.459571],[8.744884,49.459434],[8.744315,49.459159],[8.743336,49.458648],[8.74322,49.458497],[8.74324,49.458378],[8.743121,49.458305],[8.742643,49.45808],[8.74197,49.45777],[8.741674,49.457558],[8.741746,49.457041],[8.741807,49.456563],[8.741842,49.456478],[8.742048,49.4564],[8.74257,49.456329],[8.74305,49.456335],[8.743558,49.456352],[8.744051,49.456283],[8.744436,49.456168],[8.744629,49.456101],[8.744776,49.456069],[8.744954,49.456089],[8.745101,49.456082],[8.745388,49.455974],[8.745895,49.455754],[8.746052,49.455642],[8.746083,49.455363],[8.746078,49.455054],[8.746063,49.454896],[8.745975,49.454771],[8.745912,49.454691],[8.745943,49.454522],[8.746025,49.45416],[8.746118,49.453701],[8.746201,49.453499],[8.746235,49.453234],[8.745967,49.452626],[8.745586,49.451991],[8.744871,49.451023],[8.744719,49.450685],[8.744556,49.450429],[8.744724,49.450278],[8.74472,49.450033],[8.744778,49.449761],[8.745025,49.449477],[8.745437,49.449085],[8.745681,49.448824],[8.745748,49.448674],[8.745808,49.448379],[8.745854,49.448142],[8.745742,49.447418],[8.7457,49.446891],[8.739206,49.446386],[8.739212,49.44694],[8.738431,49.448017],[8.738008,49.448423],[8.737318,49.44906],[8.737083,49.449171],[8.736852,49.449237],[8.736541,49.449242],[8.735799,49.449127],[8.735152,49.448956],[8.734623,49.44883],[8.732748,49.448569],[8.730015,49.448373],[8.726439,49.448213],[8.725438,49.448206],[8.724195,49.448452],[8.723635,49.448579],[8.722897,49.448821],[8.722459,49.449016],[8.722077,49.449185],[8.721853,49.449346],[8.721696,49.449503],[8.721441,49.449815],[8.721023,49.450238],[8.720491,49.450545],[8.720086,49.450745],[8.719614,49.451065],[8.718989,49.451482],[8.718324,49.451829],[8.717828,49.452039],[8.717415,49.452118],[8.716995,49.452187],[8.716368,49.452291],[8.715647,49.452383],[8.715174,49.45242],[8.714813,49.452338],[8.714396,49.452172],[8.714027,49.451964],[8.713729,49.451763],[8.713448,49.451547],[8.71308,49.451414],[8.712981,49.451337],[8.712907,49.451188],[8.712618,49.450635],[8.712221,49.450263],[8.712063,49.450181],[8.711923,49.450062],[8.711712,49.449848],[8.711383,49.449483],[8.710697,49.449013],[8.709519,49.447725],[8.709467,49.447501],[8.709412,49.446647],[8.709325,49.446198],[8.708958,49.446156],[8.708062,49.445948],[8.707527,49.44589],[8.706733,49.445857],[8.706043,49.445872],[8.705379,49.445924],[8.704486,49.446022],[8.703989,49.446],[8.703226,49.44592],[8.702235,49.445819],[8.700441,49.445474],[8.69801,49.445025],[8.696864,49.444866],[8.696436,49.444666],[8.695967,49.444555],[8.695515,49.444585],[8.693686,49.444206],[8.692734,49.444117],[8.692166,49.444018],[8.691707,49.443845],[8.691244,49.44365],[8.690496,49.443236],[8.68937,49.443263],[8.687857,49.443212],[8.687569,49.443034],[8.687363,49.443008],[8.686799,49.443048],[8.686065,49.443213],[8.685572,49.443319],[8.685446,49.443329],[8.68496,49.443355],[8.684607,49.44354],[8.6843,49.443671],[8.683887,49.443768],[8.683496,49.443878],[8.682964,49.444],[8.682677,49.443971],[8.682335,49.443862],[8.682116,49.443774],[8.681657,49.443692],[8.681244,49.443675],[8.680796,49.443534],[8.680393,49.443483],[8.67967,49.443133],[8.679113,49.44302],[8.679192,49.442698],[8.678359,49.442592],[8.678334,49.442624],[8.677207,49.442494],[8.677012,49.442391],[8.676933,49.442349],[8.676097,49.442199],[8.675185,49.442035],[8.674777,49.441968],[8.673293,49.441504],[8.672861,49.441253],[8.67274,49.441326],[8.672341,49.441125],[8.671575,49.440834],[8.670761,49.441343],[8.67033,49.441494],[8.669915,49.441467],[8.668932,49.441262],[8.667104,49.440835],[8.666264,49.440772],[8.665848,49.44064],[8.665677,49.440536],[8.665516,49.440349],[8.665451,49.4403],[8.665403,49.440276],[8.665344,49.440267],[8.665214,49.440227],[8.663494,49.439941],[8.663245,49.439948],[8.663238,49.439857],[8.663046,49.43963],[8.662637,49.439686],[8.662439,49.439689],[8.662374,49.439664],[8.661735,49.439538],[8.66046,49.439285],[8.658385,49.438872],[8.658267,49.439039],[8.657003,49.438758],[8.656308,49.438606],[8.65531,49.439943],[8.653394,49.439318],[8.649053,49.437866],[8.648862,49.437785],[8.648968,49.437693],[8.648204,49.437252],[8.647218,49.436878],[8.646552,49.436626],[8.646193,49.436973],[8.646016,49.437132],[8.645786,49.437345],[8.645488,49.437604],[8.645159,49.437851],[8.644754,49.438187],[8.644168,49.438623],[8.643741,49.438944],[8.643149,49.439309],[8.64261,49.43961],[8.642564,49.439635],[8.642246,49.439785],[8.641292,49.440204],[8.64031,49.440607],[8.639305,49.44098],[8.638212,49.441336],[8.637172,49.441631],[8.636078,49.441893],[8.634983,49.442126],[8.633858,49.442342],[8.632702,49.442524],[8.631601,49.44272],[8.630453,49.442879],[8.629367,49.443018],[8.628703,49.443115],[8.628211,49.441976],[8.628012,49.44157],[8.627351,49.440827],[8.626819,49.440265],[8.626616,49.440059],[8.626743,49.439998],[8.626134,49.439394],[8.62331,49.436631],[8.623037,49.436356],[8.622925,49.436226],[8.622831,49.436102],[8.62272,49.435915],[8.622619,49.43575],[8.622521,49.435595],[8.622406,49.435412],[8.622309,49.435279],[8.622204,49.435144],[8.621395,49.434225],[8.621165,49.433964],[8.62105,49.433843],[8.620927,49.433893],[8.619493,49.432264],[8.61626,49.428621],[8.615974,49.428303],[8.61531,49.427884],[8.609952,49.424382],[8.609733,49.424242],[8.605472,49.425826],[8.599885,49.427972],[8.598382,49.428508],[8.59849,49.428044],[8.59823,49.428143],[8.593259,49.430025],[8.592963,49.430133],[8.590778,49.427735],[8.59045,49.427367],[8.590054,49.427347],[8.589757,49.427329],[8.589435,49.427296],[8.588442,49.427151],[8.587764,49.427038],[8.58724,49.426958],[8.58708,49.426934],[8.586232,49.426846],[8.584079,49.426599],[8.583508,49.426542],[8.58292,49.426506],[8.582023,49.426473],[8.581379,49.42645],[8.579833,49.426199],[8.577791,49.425273],[8.577288,49.425085],[8.575385,49.424356],[8.57529,49.424422],[8.574243,49.424021],[8.573179,49.4236] + ] + ] + ] + }, + 'geometry_name':'geom', + 'properties':{'id':-285864,'iso':null,'name':'Heidelberg','name_en':null,'local_name':'Heidelberg','long_name':null,'boundary':'administrative','admin_level':6,'wikidata':'Q2966','wikipedia':'de:Heidelberg','parent':-22027,'min_scale':1,'max_scale':2500000}, + 'bbox':[8.573178800000017,49.35200290000001,8.794049599999989,49.45969270000002] + } + ]} + +export default region From cf24e2a65c36d3918c6693023a151f7269fdaab1 Mon Sep 17 00:00:00 2001 From: rizwan Date: Thu, 10 Aug 2023 12:24:14 +0200 Subject: [PATCH 10/15] fix: avoid ferries for routing in heal #388 --- src/config-examples/ors-map-filters-example.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config-examples/ors-map-filters-example.js b/src/config-examples/ors-map-filters-example.js index 83368bea4..bdda27e75 100755 --- a/src/config-examples/ors-map-filters-example.js +++ b/src/config-examples/ors-map-filters-example.js @@ -600,7 +600,7 @@ const filters = [ ], }, { - name: 'quiet', + name: 'heat', type: constants.filterTypes.steps, min: 0, max: 1, @@ -723,6 +723,7 @@ const filters = [ required: false, type: constants.filterTypes.array, default: false, + value: ['ferries'], apiDefault: false, isEnum: true, valueAsArray: true, From 23dfd43d447b990eda09a6fc303561f7bce2d882 Mon Sep 17 00:00:00 2001 From: rizwan Date: Thu, 10 Aug 2023 17:43:00 +0200 Subject: [PATCH 11/15] fix: gives bbox of Heidelberg region to restrict search result to this region only #386 --- src/support/map-data-services/ors-params-parser.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/support/map-data-services/ors-params-parser.js b/src/support/map-data-services/ors-params-parser.js index 8ceb57216..424099024 100644 --- a/src/support/map-data-services/ors-params-parser.js +++ b/src/support/map-data-services/ors-params-parser.js @@ -19,7 +19,19 @@ const orsParamsParser = { const args = { text: placeName, size: 8, - focus_point: [store.getters.mapCenter.lat, store.getters.mapCenter.lng] + focus_point: [store.getters.mapCenter.lat, store.getters.mapCenter.lng], + // as HEAL project is only for Heidelberg region, we restrict the place search to just this region + // heal: heidelberg bbox but long in height + boundary_bbox : [ + [ + 49.32624080869595, + 8.556461334228517 + ], + [ + 49.552723238903546, + 8.80434036254883 + ] + ] } // If is set to restrict the search to current mapBounds, // then apply the restriction From 56dc85bd171bfb2a37d66fb334e93c4e9f78c673 Mon Sep 17 00:00:00 2001 From: rizwan Date: Mon, 16 Oct 2023 15:00:36 +0200 Subject: [PATCH 12/15] fix: select routing time based on current time #402 --- .../time-based-route/time-based-route.js | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js index 138c13ef9..c6d3d884f 100644 --- a/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js +++ b/src/fragments/forms/map-form/components/place-and-directions/components/time-based-route/time-based-route.js @@ -9,17 +9,10 @@ export default { }, places: [] }, - components: { - - }, + components: {}, data: () => { return { - // hours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], timesOfTheDay: [ - // { - // label: 'now', - // value: 'now' - // }, { label: 'morning', value: 'heat_morning' @@ -41,27 +34,19 @@ export default { } }, computed: { - timesOfTheDayLabel () { - return this.timesOfTheDay.map( t => { + timesOfTheDayLabel() { + return this.timesOfTheDay.map(t => { return { - label: `${this.$t('timeBasedRoute.'+ t.label)}`, + label: `${this.$t('timeBasedRoute.' + t.label)}`, value: t.value } }) }, }, methods: { - routeOnHotDays(time) { + /*routeOnHotDays(time) { console.log('>>> timeBasedRoute >>> routeOnHotDays ', time) - }, - /* addHour() { - if(this.selectedHour >= 0 && this.selectedHour < 23) - this.selectedHour++ - }, - subtracthour() { - if(this.selectedHour > 0 && this.selectedHour <= 23) - this.selectedHour-- - }, */ + },*/ departHourChange() { let appRouteData = this.$store.getters.appRouteData // console.log('>>> departHourChange ', this.selectedHour, appRouteData) @@ -70,6 +55,26 @@ export default { // this.$store.commit('appRouteData', appRouteData) EventBus.$emit('appRouteDataChanged', appRouteData) }, + getTimeOfDay(hour, minute) { + // Function to determine the time of the day + const totalMinutes = hour * 60 + minute + + if (totalMinutes >= 0 && totalMinutes <= 11 * 60 + 30) { + return this.timesOfTheDay[0].value // Morning + } else if (totalMinutes <= 14 * 60 + 30) { + return this.timesOfTheDay[1].value // Noon + } else if (totalMinutes <= 17 * 60 + 30) { + return this.timesOfTheDay[2].value // Afternoon + } else { + return this.timesOfTheDay[3].value // Evening + } + } + }, + created() { + const currentTime = new Date() + const currentHour = currentTime.getHours() + const currentMinute = currentTime.getMinutes() + this.selectedHour = this.getTimeOfDay(currentHour, currentMinute) } } From f06877a59f0f872e7105d63886c6a2b9ba481d9e Mon Sep 17 00:00:00 2001 From: Amandus Butzer Date: Mon, 16 Oct 2023 16:12:32 +0200 Subject: [PATCH 13/15] fix: update base layers --- src/config-examples/app-config-example.js | 38 ++++++++----------- .../settings-options-example.js | 7 ++-- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/config-examples/app-config-example.js b/src/config-examples/app-config-example.js index 65d12c5de..ac76d9973 100755 --- a/src/config-examples/app-config-example.js +++ b/src/config-examples/app-config-example.js @@ -75,36 +75,28 @@ const appConfig = { maxZoom: 19 }, { - name: 'Topography', - id: 'topography', + name: 'Lite contrast', + id: 'stamen-toner-lite', visible: false, - url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', - attribution: 'Map data: © OpenStreetMap, SRTM | Map style: © OpenTopoMap (CC-BY-SA)', - maxZoom: 18 - }, - { - name: 'Transport Dark', - id: 'transport-dark', - visible: false, - url: 'https://{s}.tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=13efc496ac0b486ea05691c820824f5f', - attribution: 'Maps © Thunderforest, Data © OpenStreetMap contributors', - maxZoom: 18 + url: 'https://tiles.stadiamaps.com/tiles/stamen_toner_lite/{z}/{x}/{y}{r}.png', + attribution: '© Stadia Maps © Stamen Design © OpenMapTiles © OpenStreetMap contributors', + maxZoom: 19 }, { - name: 'Outdoors', - id: 'outdoors', + name: 'High contrast', + id: 'stamen-toner', visible: false, - url: 'https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=13efc496ac0b486ea05691c820824f5f', - attribution: 'Maps © Thunderforest, Data © OpenStreetMap contributors', - maxZoom: 18 + url: 'https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}{r}.png', + attribution: '© Stadia Maps © Stamen Design © OpenMapTiles © OpenStreetMap contributors', + maxZoom: 19 }, { - name: 'Cyclosm', - id: 'cyclosm', + name: 'Light color', + id: 'cartodb-positron', visible: false, - url: 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', - attribution: 'CyclOSM | Map data: © OpenStreetMap contributors', - maxZoom: 20 + url: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png', + attribution: '© OpenStreetMap contributors © CARTO', + maxZoom: 19 } ], wpsOverlayerTileProviders: [] diff --git a/src/config-examples/settings-options-example.js b/src/config-examples/settings-options-example.js index 27073a21c..aa748bd52 100644 --- a/src/config-examples/settings-options-example.js +++ b/src/config-examples/settings-options-example.js @@ -26,10 +26,9 @@ const settingsOptions = { tileServices: [ { text: 'OpenStreetMap', value: 'osm' }, { text: 'World Imagery', value: 'world-imagery' }, - { text: 'Topography', value: 'topography' }, - { text: 'Transport Dark', value: 'transport-dark' }, - { text: 'Cyclosm', value: 'cyclosm' }, - { text: 'Custom', value: 'custom' } + { text: 'Lite contrast', value: 'stamen-toner-lite' }, + { text: 'High contrast', value: 'stamen-toner' }, + { text: 'Light color', value: 'cartodb-positron' } ] } From eea5826a349ddadbc17fd936e90cc9884a56b955 Mon Sep 17 00:00:00 2001 From: Amandus Butzer Date: Mon, 16 Oct 2023 16:47:29 +0200 Subject: [PATCH 14/15] fix(heal): add german translations for heal categories --- .../route-details/components/extras/route-extras.js | 2 +- .../components/extra-info-highlight/ExtraInfoHighlight.vue | 2 +- src/i18n/translations/en-us/global.js | 2 +- src/resources/i18n/ors-dictionary.i18n.de-de.js | 5 ++++- src/resources/i18n/ors-dictionary.i18n.en-us.js | 5 ++++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/fragments/forms/map-form/components/place-and-directions/components/route-details/components/extras/route-extras.js b/src/fragments/forms/map-form/components/place-and-directions/components/route-details/components/extras/route-extras.js index 8358ed2d7..5ff6a3543 100644 --- a/src/fragments/forms/map-form/components/place-and-directions/components/route-details/components/extras/route-extras.js +++ b/src/fragments/forms/map-form/components/place-and-directions/components/route-details/components/extras/route-extras.js @@ -150,7 +150,7 @@ export default { */ showAllSections (extraKey) { this.$store.commit('extraHighlight', {key: extraKey, value: 'all', index: 0}) - const sectionTitle = this.$t('global.' + extraKey).toLowerCase() + const sectionTitle = this.$t('global.' + extraKey) const highlightData = { extraKey: extraKey, sectionTitle, sections: [] } let index = 0 diff --git a/src/fragments/map-view/components/extra-info-highlight/ExtraInfoHighlight.vue b/src/fragments/map-view/components/extra-info-highlight/ExtraInfoHighlight.vue index 43e1b31c8..9e210abf6 100644 --- a/src/fragments/map-view/components/extra-info-highlight/ExtraInfoHighlight.vue +++ b/src/fragments/map-view/components/extra-info-highlight/ExtraInfoHighlight.vue @@ -19,7 +19,7 @@
close - {{$t('mapView.highlighting')}} {{ extraInfo.sectionTitle }}: + {{ extraInfo.sectionTitle }}: {{polyline.label}}
diff --git a/src/i18n/translations/en-us/global.js b/src/i18n/translations/en-us/global.js index 36140c573..a57814332 100755 --- a/src/i18n/translations/en-us/global.js +++ b/src/i18n/translations/en-us/global.js @@ -103,6 +103,6 @@ export default { traildifficulty: 'Trail difficulty', osmid: 'OSM ID', countryinfo: 'Country info', - csv: 'Heat Stress' // HEAL api + csv: 'Heat stress' // HEAL api } } diff --git a/src/resources/i18n/ors-dictionary.i18n.de-de.js b/src/resources/i18n/ors-dictionary.i18n.de-de.js index 7918b7db2..059940ae5 100755 --- a/src/resources/i18n/ors-dictionary.i18n.de-de.js +++ b/src/resources/i18n/ors-dictionary.i18n.de-de.js @@ -65,6 +65,9 @@ export default { tunnel: 'Tunnel', paved_road: 'Befestigte Straße', ford: 'Furt', - no_data: 'Keine Daten' + no_data: 'Keine Daten', + low: 'Niedrig', + moderate: 'Mittel', + high: 'Hoch' } } diff --git a/src/resources/i18n/ors-dictionary.i18n.en-us.js b/src/resources/i18n/ors-dictionary.i18n.en-us.js index c322856a1..820e733fa 100755 --- a/src/resources/i18n/ors-dictionary.i18n.en-us.js +++ b/src/resources/i18n/ors-dictionary.i18n.en-us.js @@ -66,6 +66,9 @@ export default { tunnel: 'Tunnel', paved_road: 'Paved road', ford: 'Ford', - no_data: 'No data' + no_data: 'No data', + low: 'Low', + moderate: 'Moderate', + high: 'High' } } From 39523fca6e0a06c2d3e3520c6d5dfc39dd5124e2 Mon Sep 17 00:00:00 2001 From: Amandus Date: Mon, 16 Oct 2023 17:18:46 +0200 Subject: [PATCH 15/15] ci: add copy config step --- .github/workflows/heal.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/heal.yml b/.github/workflows/heal.yml index a9067f2b6..fbd7e2f87 100644 --- a/.github/workflows/heal.yml +++ b/.github/workflows/heal.yml @@ -21,6 +21,15 @@ jobs: - name: hard reset to origin state working-directory: ${{ secrets.work_dir }} run: git reset --hard origin/${GITHUB_REF_NAME} + - name: copy example configs to config folder + working-directory: ${{ secrets.work_dir }} + run: cd src && cp config-examples/* config && for i in config/*-example.js; do mv -- "$i" "${i%-example.js}.js"; done + - name: Replace ORS API Key in app-config.js + working-directory: ${{ secrets.work_dir }} + run: | + cd src/config + secret_value="${{ secrets.ORS_API_KEY }}" + sed -i "s/'put-here-an-ors-api-key'/'$secret_value'/g" app-config.js - name: build docker rebuild and restart working-directory: ${{ secrets.work_dir }} run: docker compose up --build --force-recreate -d