diff --git a/README.md b/README.md index fc6aafa2..59ba324c 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,42 @@ # Quantified Trees – Baumblick > The app **Baumblick** is part of a federally funded project called [**Quantified Trees**](https://qtrees.ai/) (QTrees). It is thus part of the German adoption strategy to climate change with focus on how to help city trees to not suffer and die because of rising temperatures and more and more frequent droughts. The app tells the story of each Berlin city tree by using a vast amount of open data like location and tree specific data. On an interactive map users can see how thirsty city trees of Berlin are. More precisely, it visualizes the trees' ground suction tension. This suction tension represents the amount of energy tree roots need in order to suck out water from the soil. Using open data as well as sensors distributed under the ground, an AI developed by [Birds on Mars](https://www.birdsonmars.com/) is able to generate nowcasts and a 14-days forecasts for each tree – even for those that are not equipped with sensors! The app is oriented towards the public and should inform in a simple and intuitive way. +## Attention: This project is kept in "Demo Mode"(2024-07-11) +This project is kept in "Demo Mode" since 2024-07-11. To keep it working without backend, database and vector tiles, we have prepared static Demo data that is used instead. Please see https://github.com/technologiestiftung/baumblick-frontend/pull/124 for reference. The snapshot data has the following format and contains all data needed for the frontend to work properly with ~47k trees. Please not that the forecast values and watering values are generated randomly. The features "Missnutzung der Baumscheibe melden" and "Baumschäden melden" are not connected to any backend anymore and have no effect. + +``` +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 13.502675622307946, + 52.40368675459003 + ] + }, + "properties": { + "trees_id": "00008100:0011dd1c", + "nowcast_values_30cm": 105.91428, + "nowcast_values_60cm": 108.66888, + "nowcast_values_90cm": 41.63244, + "nowcast_values_stamm": 85.4052, + "trees_lat": 52.40368675459003, + "trees_lng": 13.502675622307946, + "baumscheibe_m2": null, + "shading_spring": 0.63, + "shading_summer": 0.5, + "shading_fall": 0.63, + "shading_winter": 0.8, + "rainfall_in_mm": 1.210145 + } + } + ] +} +``` + ## Context Climate change is causing increasingly hot, dry weather in many places. In recent years, Berlin has also experienced more hot days than ever before. Determining whether trees are in need of water isn't as easy as looking at the ground on the surface level. Many factors such as the tree's age, specie, plate size or ground quality play an important role. Old trees, for instance, tend to have deep roots and thereby be less dependent on additional watering. Overwatering can in fact be more detrimental to a tree than helpful. diff --git a/locales/de/common.json b/locales/de/common.json index 6a07a092..1ebad320 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -82,6 +82,8 @@ "contentsLink": "Inhalte" }, "legend": { + "demoDataTitle": "DEMO:", + "demoDataHint": "Diese Karte zeigt exemplarische Daten.", "map": { "title": "Wasserversorgung", "levels": { @@ -178,7 +180,9 @@ "modalConfirm": "Melden", "modalCancel": "Abbrechen", "confirmationTitle": "Danke! Erfolgreich gemeldet!", + "demoTitle": "Demo-Modus aktiv", "confirmationDescription": "Ab morgen kannst du wieder etwas melden", + "demoDescription": "Diese Funktion ist im Demo-Modus nicht aktiv, es wurde nichts gemeldet.", "loading": "Infos werden geladen...", "error": "Es ist beim Laden der Infos ein Fehler aufgetreten:" } diff --git a/pages/trees/[id].tsx b/pages/trees/[id].tsx index 059f9e1b..0b494626 100644 --- a/pages/trees/[id].tsx +++ b/pages/trees/[id].tsx @@ -97,17 +97,16 @@ const TreePage: TreePageWithLayout = ({ treeId, csrfToken }) => { data: nowcastData, error: nowcastError, isLoading: nowcastIsLoading, - } = useNowcastData(treeData?.id, csrfToken) + } = useNowcastData(treeData?.id) const { data: shadingData, error: shadingError, isLoading: shadingIsLoading, - } = useShadingData(treeData?.id, csrfToken) + } = useShadingData(treeData?.id) const { data: forecastData, error: forecastError } = useForecastData( - treeData?.id, - csrfToken + treeData?.id ) const { data: gdkTreeId, isLoading: gdkTreeIdIsLoading } = useGdkTreeId( @@ -124,7 +123,7 @@ const TreePage: TreePageWithLayout = ({ treeId, csrfToken }) => { data: wateringData, error: wateringDataError, isLoading: wateringDataIsLoading, - } = useWateringData(treeData?.id, csrfToken) + } = useWateringData(treeData?.id) if (treeDataError) { void push('/404') @@ -185,7 +184,8 @@ const TreePage: TreePageWithLayout = ({ treeId, csrfToken }) => { 'md:border-l md:border-r border-gray-200', 'row-start-2 row-span-1', 'grid grid-cols-1 grid-rows-auto', - 'motion-safe:animate-slide-up' + 'motion-safe:animate-slide-up', + 'mt-12 lg:mt-0' )} >