diff --git a/src/components/FeaturePanel/Climbing/ClimbingPanel.tsx b/src/components/FeaturePanel/Climbing/ClimbingPanel.tsx index 263bee6a6..36b846c1d 100644 --- a/src/components/FeaturePanel/Climbing/ClimbingPanel.tsx +++ b/src/components/FeaturePanel/Climbing/ClimbingPanel.tsx @@ -11,6 +11,7 @@ import { SuggestEdit } from '../SuggestEdit'; import { PanelContent, PanelSidePadding } from '../../utils/PanelHelpers'; import { FeatureHeading } from '../FeatureHeading'; import { ParentLink } from '../ParentLink'; +import { ClimbingRestriction } from './ClimbingRestriction'; export const ClimbingPanel = ({ footer, showTagsTable }) => { const { feature } = useFeatureContext(); @@ -27,6 +28,7 @@ export const ClimbingPanel = ({ footer, showTagsTable }) => { + diff --git a/src/components/FeaturePanel/Climbing/ClimbingRestriction.tsx b/src/components/FeaturePanel/Climbing/ClimbingRestriction.tsx new file mode 100644 index 000000000..31137f1f6 --- /dev/null +++ b/src/components/FeaturePanel/Climbing/ClimbingRestriction.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Alert, AlertTitle } from '@mui/material'; +import { useFeatureContext } from '../../utils/FeatureContext'; +import { t } from '../../../services/intl'; + +export const ClimbingRestriction = () => { + const { feature } = useFeatureContext(); + + const restriction = feature.tags['climbing:restriction']; + const restrictionTimeDescription = + feature.tags['climbing:restriction:time_description']; + if (!feature.tags.climbing || (!restriction && !restrictionTimeDescription)) { + return null; + } + + return ( + + {t('featurepanel.climbing_restriction')} + {restrictionTimeDescription} + + ); +}; diff --git a/src/components/FeaturePanel/Climbing/contexts/osmToClimbingRoutes.ts b/src/components/FeaturePanel/Climbing/contexts/osmToClimbingRoutes.ts index 7e981e002..a709cddb0 100644 --- a/src/components/FeaturePanel/Climbing/contexts/osmToClimbingRoutes.ts +++ b/src/components/FeaturePanel/Climbing/contexts/osmToClimbingRoutes.ts @@ -55,6 +55,7 @@ export const osmToClimbingRoutes = (feature: Feature): Array => { difficulty: getDifficulty(route.tags), paths, photoToKeyMap, + author: route.tags.author, feature: route, }; }); diff --git a/src/components/FeaturePanel/Climbing/utils/emptyRoute.ts b/src/components/FeaturePanel/Climbing/utils/emptyRoute.ts index b202e0bb6..c228d3e54 100644 --- a/src/components/FeaturePanel/Climbing/utils/emptyRoute.ts +++ b/src/components/FeaturePanel/Climbing/utils/emptyRoute.ts @@ -3,6 +3,7 @@ import { ClimbingRoute } from '../types'; export const emptyRoute: ClimbingRoute = { id: '', name: '', + author: '', difficulty: { grade: '', gradeSystem: 'uiaa' }, length: '', paths: {}, diff --git a/src/components/FeaturePanel/FeaturePanelInner.tsx b/src/components/FeaturePanel/FeaturePanelInner.tsx index 5d9d47e30..33a45395f 100644 --- a/src/components/FeaturePanel/FeaturePanelInner.tsx +++ b/src/components/FeaturePanel/FeaturePanelInner.tsx @@ -29,6 +29,7 @@ import { ImageSlider } from './ImagePane/ImageSlider'; import { SuggestEdit } from './SuggestEdit'; import { FeatureOpenPlaceGuideLink } from './FeatureOpenPlaceGuideLink'; import { CragsInArea } from './CragsInArea'; +import { ClimbingRestriction } from './Climbing/ClimbingRestriction'; const Flex = styled.div` flex: 1; @@ -100,6 +101,8 @@ export const FeaturePanelInner = () => { + + diff --git a/src/components/FeaturePanel/OsmError.tsx b/src/components/FeaturePanel/OsmError.tsx index 6af5a1633..a9e7cc5c7 100644 --- a/src/components/FeaturePanel/OsmError.tsx +++ b/src/components/FeaturePanel/OsmError.tsx @@ -30,7 +30,7 @@ export const OsmError = () => { if (code === 'unknown') { return ( - + {t('featurepanel.error_unknown')} ); @@ -38,7 +38,7 @@ export const OsmError = () => { if (code === 'network') { return ( - + {t('featurepanel.error_network')} ); @@ -46,7 +46,7 @@ export const OsmError = () => { if (code) { return ( - + {t('featurepanel.error', { code })} ); @@ -54,7 +54,7 @@ export const OsmError = () => { if (Object.keys(feature.tags).length === 0 && !feature.point) { return ( - + {t('featurepanel.info_no_tags')} ); diff --git a/src/locales/cs.js b/src/locales/cs.js index bee95dd89..0598c0430 100644 --- a/src/locales/cs.js +++ b/src/locales/cs.js @@ -86,6 +86,7 @@ export default { 'featurepanel.uncertain_image': 'Je zobrazena nejbližší fotka uliční úrovně. Může ukazovat jiný objekt.', 'featurepanel.inline_edit_title': 'Upravit', 'featurepanel.objects_around': 'Objekty v okolí', + 'featurepanel.climbing_restriction': 'Lezecké omezení', 'opening_hours.open': 'Otevřeno: __todayTime__', 'opening_hours.now_closed_but_today': 'Nyní zavřeno, dnes: __todayTime__', diff --git a/src/locales/vocabulary.js b/src/locales/vocabulary.js index a385a4e31..51dd51bb8 100644 --- a/src/locales/vocabulary.js +++ b/src/locales/vocabulary.js @@ -96,6 +96,7 @@ export default { 'featurepanel.inline_edit_title': 'Edit', 'featurepanel.objects_around': 'Nearby objects', 'featurepanel.more_in_openplaceguide': 'More information on __instanceName__', + 'featurepanel.climbing_restriction': 'Climbing restriction', 'opening_hours.open': 'Open: __todayTime__', 'opening_hours.now_closed_but_today': 'Closed now - Open __todayTime__',