diff --git a/app/src/frontend/building/data-containers/age-history.tsx b/app/src/frontend/building/data-containers/age-history.tsx index be392a7e..7d5fab07 100644 --- a/app/src/frontend/building/data-containers/age-history.tsx +++ b/app/src/frontend/building/data-containers/age-history.tsx @@ -424,7 +424,14 @@ const AgeView: React.FunctionComponent = (props) => { } - + + This section is under development + +
+ + This section provides links to open digitised historical maps/mapping data that we are using in the Colouring Cities platform. + +
); diff --git a/app/src/frontend/building/data-containers/community.tsx b/app/src/frontend/building/data-containers/community.tsx index 2b137ca7..88ac3f68 100644 --- a/app/src/frontend/building/data-containers/community.tsx +++ b/app/src/frontend/building/data-containers/community.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Fragment } from 'react'; import '../../map/map-button.css'; import withCopyEdit from '../data-container'; @@ -15,6 +15,7 @@ import SelectDataEntry from '../data-components/select-data-entry'; import Verification from '../data-components/verification'; import { MultiDataEntry } from '../data-components/multi-data-entry/multi-data-entry'; import { useDisplayPreferences } from '../../displayPreferences-context'; +import DataEntry from '../data-components/data-entry'; /** * Community view/edit section @@ -38,192 +39,206 @@ const CommunityView: React.FunctionComponent = (props) => { } const { darkLightTheme } = useDisplayPreferences(); const worthKeepingReasonsNonEmpty = Object.values(props.building.community_type_worth_keeping_reasons ?? {}).some(x => x); - return <> - -
- - Note: We are currently only collecting data on non-residential buildings. - -
-
- {(props.building.is_domestic === "no" || props.building.is_domestic === "mixed domestic/non-domestic") ? - <> - + +
+ + Note: We are currently only collecting data on non-residential buildings. + +
+
+ + {(props.building.is_domestic === "no" || props.building.is_domestic === "mixed domestic/non-domestic") ? + <> + + + : + <> + } + + {(props.mapColourScale == "typology_likes") ? + + : + + } + { + props.building.community_type_worth_keeping === true && + ({ + key, + label: definition.title + })) + } + + mode={props.mode} + /> + } +
+ - - : - <> - } - - {(props.mapColourScale == "typology_likes") ? - - : - - } - { - props.building.community_type_worth_keeping === true && - ({ - key, - label: definition.title - })) - } + {(props.mapColourScale == "community_local_significance_total") ? + + : + + } +
+ - } -
- + + For more information on current planning applications, refer to the Planning Controls category. + +
+ {(props.mapColourScale == "community_expected_planning_application_total") ? + + : + + } +
+
+ +
+ + Here we are collecting information on the location of buildings used for community activities so we can track loss of/additions to community space over time. + +
+ + + + - {(props.mapColourScale == "community_local_significance_total") ? + + + + {(props.mapColourScale == "community_in_public_ownership") ? : - } -
- - {(props.mapColourScale == "community_expected_planning_application_total") ? - - : - - } - -
- -
- - Here we are collecting information on the location of buildings used for community activities so we can track loss of/additions to community space over time. - -
- - - - - - - - {(props.mapColourScale == "community_in_public_ownership") ? - - : - - } -
- + + + ); }; const CommunityContainer = withCopyEdit(CommunityView); diff --git a/app/src/frontend/building/data-containers/energy-performance.tsx b/app/src/frontend/building/data-containers/energy-performance.tsx index bdace92a..d20e380c 100644 --- a/app/src/frontend/building/data-containers/energy-performance.tsx +++ b/app/src/frontend/building/data-containers/energy-performance.tsx @@ -25,9 +25,20 @@ const BreeamRatingOptions = [ * Sustainability view/edit section */ const SustainabilityView: React.FunctionComponent = (props) => { + + const currentYear = new Date().getFullYear(); + return ( - + + + + = (props) = user_verified_as={props.user_verified.sust_breeam_rating} verified_count={props.building.verified.sust_breeam_rating} /> - = (props) = user_verified_as={props.user_verified.sust_dec} verified_count={props.building.verified.sust_dec} /> - = (props) = onChange={props.onChange} /> - - + + step={1} + min={1} + max={currentYear} + tooltip={dataFields.extension_year.tooltip} + /> - {(props.building.sust_retrofit_source_type == dataFields.sust_retrofit_source_type.items[0] || - props.building.sust_retrofit_source_type == dataFields.sust_retrofit_source_type.items[1] || - props.building.sust_retrofit_source_type == null) ? <> : + {(props.building.age_retrofit_date_source_type == dataFields.age_retrofit_date_source_type.items[0] || + props.building.age_retrofit_date_source_type == dataFields.age_retrofit_date_source_type.items[1] || + props.building.age_retrofit_date_source_type == null) ? <> : <> } - {/*
- - - */}
- + + + = (props) => { const { darkLightTheme } = useDisplayPreferences(); return ( - +
The vast majority of properties are residential (93% in the UK), so we have set 'residential' as the default value. Can you help us identify non-residential and mixed use buildings (and verify residential buildings too)? @@ -87,7 +87,7 @@ const UseView: React.FunctionComponent = (props) => { } - + = (props) => { const osm_url = "https://www.openstreetmap.org/way/"+props.building.ref_osm_id; return ( - + = (props) => { } - + = (props) => { const communityLinkUrl = `/${props.mode}/${Category.Community}/${props.building.building_id}`; return ( - - + + This section provides data on active applications. We define these as applications with any activity in the last year.
@@ -85,49 +87,64 @@ const PlanningView: React.FunctionComponent = (props) => { : <> }
- - - This section provides data on past applications where available from the GLA, including those with no decision in over a year - - {props.building.planning_data ? - isArchived(item))} - messageOnMissingData={ - props.building.planning_data.length > 0 ? - "Only current application data is currently available for this site" - : - "No live planning data are currently available for this building from the Planning London Datahub." - } - /> - : <> - } - - - Click and colour buildings here if you think they may be subject to a future planning application involving demolition. To add your opinion on how well this building works, please also visit the Community section. - { - props.mapColourScale != "community_expected_planning_application_total" ? - - : - - } - + - - Further improvements to this feature are currently being made. + + + + If you feel there are incorrect or missing data relating to this building please contact: + planningdata@London.gov.uk
+ + + This section provides data on past applications where available from the GLA, including those with no decision in over a year + + {props.building.planning_data ? + isArchived(item))} + messageOnMissingData={ + props.building.planning_data.length > 0 ? + "Only current application data is currently available for this site" + : + "No live planning data are currently available for this building from the Planning London Datahub." + } + /> + : <> + } + + + Click and colour buildings here if you think they may be subject to a future planning application involving demolition. To add your opinion on how well this building works, please also visit the Community section. + { + props.mapColourScale != "community_expected_planning_application_total" ? + + : + + } + + + Further improvements to this feature are currently being made. + + To view planning zone data for London click the buttons below. You may need to zoom out. @@ -358,6 +375,24 @@ const PlanningView: React.FunctionComponent = (props) => { user_verified_as={props.user_verified.planning_in_conservation_area_url} verified_count={props.building.verified.planning_in_conservation_area_url} /> + + {/* = (props) => { user_verified_as={props.user_verified.planning_historic_area_assessment_url} verified_count={props.building.verified.planning_historic_area_assessment_url} /> - + + + This section is designed to provide information on land parcels and their ownership type. Can you help us to crowdsource this information? + + + /> - - - - {/* will be titled "Other active application info (crowdsourced data)" once active" */} - - This category is not yet activated - Until this section is activated please report inaccuracies or problems on the Discussion Forum. - - {/* that is placeholder display, will be replaced by actual code */} -
-
-
    -
  • Year of completion if known
  • -
  • If you know of a planning application that has been recently submitted for this site, and is not listed in the blue box above, please enter its planning application ID below:
  • -
  • If any of the active planning applications are not mapped onto the correct site, please tick here
  • -
-
-
- { - /* - - - - - - - - on enabling switch it to UserOpinionEntry, remove value and restore userValue - */ - } - -
- - - This category is not yet activated. - - - This section is designed to provide information on land parcels and their ownership type. Can you help us to crowdsource this information? - - -
-
-
    -
  • What type of owner owns this land parcel?
  • -
-
-
- - {/* - - - */ - } -
+ + +
)}; diff --git a/app/src/frontend/building/data-containers/size.tsx b/app/src/frontend/building/data-containers/size.tsx index 02ab7344..1ae07ab8 100644 --- a/app/src/frontend/building/data-containers/size.tsx +++ b/app/src/frontend/building/data-containers/size.tsx @@ -103,7 +103,7 @@ const SizeView: React.FunctionComponent = (props) => ( }
- + = (props) => ( } - + = (props) => ( } - + = (props) => ( - + = (props) => ( /> } +
+ + + + {(props.building.context_green_space_distance_source_type == commonSourceTypes[0] || + props.building.context_green_space_distance_source_type == commonSourceTypes[1] || + props.building.context_green_space_distance_source_type == null) ? <> : + <> + + } +
+ + + + {(props.building.context_tree_distance_source_type == commonSourceTypes[0] || + props.building.context_tree_distance_source_type == commonSourceTypes[1] || + props.building.context_tree_distance_source_type == null) ? <> : + <> + + }
- + = (props) => ( } - - + - - - {(props.building.context_green_space_distance_source_type == commonSourceTypes[0] || - props.building.context_green_space_distance_source_type == commonSourceTypes[1] || - props.building.context_green_space_distance_source_type == null) ? <> : - <> - - } -
- - - - {(props.building.context_tree_distance_source_type == commonSourceTypes[0] || - props.building.context_tree_distance_source_type == commonSourceTypes[1] || - props.building.context_tree_distance_source_type == null) ? <> : - <> - - }
); diff --git a/app/src/frontend/building/data-containers/team.tsx b/app/src/frontend/building/data-containers/team.tsx index 3f9a7c32..4cd78237 100644 --- a/app/src/frontend/building/data-containers/team.tsx +++ b/app/src/frontend/building/data-containers/team.tsx @@ -21,7 +21,7 @@ const TeamView: React.FunctionComponent = (props) => { const currentBuildingConstructionYear = building.date_year || undefined; return (
- + = (props) => { ) : (null)} - + = (props) => { } - + = (props) => { } - + = (props) => { /> } -
- - - {props.building.designer_awards ? ( - <> - - - - ) : (null) - }
- - - - - {(props.building.builder_source_type == commonSourceTypes[0] || - props.building.builder_source_type == commonSourceTypes[1] || - props.building.builder_source_type == null) ? <> : - <> + + + + + {(props.building.builder_source_type == commonSourceTypes[0] || + props.building.builder_source_type == commonSourceTypes[1] || + props.building.builder_source_type == null) ? <> : + <> + + + } + + + + + {props.building.designer_awards ? ( + <> - - } - + /> + + + ) : (null) + } + ); }; diff --git a/app/src/frontend/config/data-fields-config.ts b/app/src/frontend/config/data-fields-config.ts index ecb765cd..8738bccd 100644 --- a/app/src/frontend/config/data-fields-config.ts +++ b/app/src/frontend/config/data-fields-config.ts @@ -6,9 +6,9 @@ let ccconfig: CCConfig = require('../../cc-config.json') * Common list of Source Types, used in multiple menus */ export const commonSourceTypes = [ - "Assessed by eye", + "Assessed by eye/personal knowledge of the building", "Assessed using expert knowledge of building or building type", - "Assessed using streetview photographs or satellite imagery", + "Assessed using streetview photographs, satellite imagery or maps", "Assessed by specialist emergency group", "Live streamed from a government source", "Current government record/dataset", @@ -156,7 +156,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, location_street: { category: Category.Location, - title: "Street", + title: "Street name", example: "Gower Street", //tooltip: , }, @@ -342,7 +342,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, facade_year: { category: Category.Age, - title: "Date of front of building", + title: "Date of front of building (best estimate)", tooltip: "Best estimate", example: 1900, }, @@ -416,7 +416,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ category: Category.Size, title: "Height to apex (m)", example: 100.5, - tooltip: "i.e. the highest part of the roof.", + tooltip: "i.e. the highest part of the roof (in meters).", }, size_height_apex_source_type: { category: Category.Team, @@ -435,7 +435,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ category: Category.Size, title: "Height to eaves (m)", example: 20.33, - tooltip: "i.e. to where the top of the wall meets the roof", + tooltip: "i.e. to where the top of the wall meets the roof (in meters)", }, size_height_eaves_source_type: { category: Category.Team, @@ -479,7 +479,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ category: Category.Size, title: "Frontage width (m)", example: 12.2, - //tooltip: , + tooltip: "Size of the frontage of the building (in meters)", }, size_width_frontage_source_type: { category: Category.Team, @@ -583,7 +583,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ sust_breeam_rating: { category: Category.EnergyPerformance, - title: "Official environmental quality rating", + title: "Residential energy rating", tooltip: ccconfig.energy_rating, example: "", }, @@ -716,7 +716,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, planning_list_grade: { category: Category.Planning, - title: "What is its rating?", + title: "What is its protection rating?", example: "II", //tooltip: , }, @@ -740,19 +740,19 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, planning_in_apa_url: { category: Category.Planning, - title: "Is it in an area if archaeological priority?", + title: "Is the building in an area of archaeological priority?", example: "", //tooltip: , }, planning_local_list_url: { category: Category.Planning, - title: "Is it a locally listed heritage asset?", + title: "Is the building a locally listed heritage asset?", example: "", //tooltip: , }, planning_historic_area_assessment_url: { category: Category.Planning, - title: "Does it have any other kind of historic area assessment?", + title: "Does it have any other type of designation?", example: "", //tooltip: , }, @@ -811,19 +811,19 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ community_activities_current: { category: Category.Community, - title: "Are activities open to the community currently taking place in the building?", + title: "Is this building currently used for community activities?", tooltip: "E.g. youth club, place of worship, GP surgery, pub", example: true }, community_activities: { category: Category.Community, - title: "Has this ever been used for community activities in the past?", + title: "If not been used for community activities in the past?", tooltip: "E.g. youth club, place of worship, GP surgery, pub", example: true }, community_activities_always: { category: Category.Community, - title: "Has the building always been used for community activities?", + title: "If in community use now, has it always been used for community activities?", tooltip: "E.g. youth club, place of worship, GP surgery, pub", example: true }, @@ -837,11 +837,15 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ title: "Is the building in public/community ownership?", example: "Privately owned (non-corporate)", items: [ - 'Government-owned', - 'Charity-owned', - 'Community-owned/cooperative', - 'Owned by other non-profit body', - 'Not in public/community ownership' + "Public/State body", + "Public body with Private company", + "Charity", + "Community group/Cooperative", + "Other non-profit body", + "Privately owned company", + "Privately owned offshore company", + "Private individual", + "Other", ] }, community_public_ownership_sources: { @@ -953,7 +957,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ landowner: { category: Category.Team, title: "Landowner(s) at time of construction", - tooltip: "Free text. First name, space, then Last name", + tooltip: "Land owner when the building was constructed.
For info on current land ownership, see 'Planning Controls'.", example: ["", "", ""], }, landowner_source_type: { @@ -1003,14 +1007,14 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, designer_awards: { category: Category.Team, - title: "Did the design team win any awards for this building?", + title: "Has the building won any?", tooltip: "", example: false }, awards_source_link: { category: Category.Team, - title: "Source link(s) for designer award(s)", - tooltip: "URL for source for designer award(s)", + title: "Source link(s) for building award(s)", + tooltip: "URL for source for building award(s)", example: ["", "", ""], }, builder: { @@ -1116,7 +1120,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, context_flats_garden: { category: Category.StreetContext, - title: "Is the building flats with a dedicated green space?", + title: "Are flats with a dedicated green space?", tooltip: "If the building is a block of flats, does it have a dedicated garden area/green space?", example: "", items: [ @@ -1139,8 +1143,8 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, context_street_width: { category: Category.Team, - title: "Street width (m)", - tooltip: "Width of the street in metres.", + title: "Average street width (m)", + tooltip: "Average width of the street in metres.", example: 10 }, context_street_width_source_type: { @@ -1158,8 +1162,8 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, context_pavement_width: { category: Category.Team, - title: "Pavement width (m)", - tooltip: "Width of the pavement in metres.", + title: "Average pavement width (m)", + tooltip: "Average width of the pavement in metres.", example: 10 }, context_pavement_width_source_type: { @@ -1178,7 +1182,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ context_green_space_distance: { category: Category.Team, title: "Distance to nearest green space (m)", - tooltip: "Approximate distance from the front door of the building to the nearest public green space.", + tooltip: "Approximate distance from the front door of the building to the nearest public green space (in meters).", example: 10 }, context_green_space_distance_source_type: { @@ -1197,7 +1201,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ context_tree_distance: { category: Category.Team, title: "Distance to nearest tree (m)", - tooltip: "Approximate distance from the front door of the building to the nearest tree.", + tooltip: "Approximate distance from the front door of the building to the nearest tree in meters.", example: 10 }, context_tree_distance_source_type: { @@ -1234,7 +1238,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, age_cladding_date: { category: Category.Age, - title: "Cladding date", + title: "Cladding date (best estimate)", tooltip: "Width of the street in metres.", example: 1970 }, @@ -1253,7 +1257,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, age_extension_date: { category: Category.Age, - title: "Date of significant extensions", + title: "Date of significant extensions (best estimate)", tooltip: "Width of the street in metres.", example: 1970 }, @@ -1272,7 +1276,7 @@ export const dataFields = { /* eslint-disable @typescript-eslint/camelcase */ }, age_retrofit_date: { category: Category.Age, - title: "Date of significant retrofits", + title: "Date of last significant retrofit (best estimate)", tooltip: "Width of the street in metres.", example: 1970 },