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__',