From 85af90a6d60747aa2e72604c9b2ffda8e4bd7e25 Mon Sep 17 00:00:00 2001 From: augustlindemer <118665588+augustlindemer@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:20:04 +0100 Subject: [PATCH] feat: Add new GLA schemas (#3267) --- .../src/@planx/components/List/Editor.tsx | 48 ++-- .../List/schemas/GLA/BuildingDetails.ts | 34 +++ .../List/schemas/GLA/CommunalSpace.ts | 36 +++ .../schemas/GLA/ExistingAndProposedUses.ts | 56 +++++ .../components/List/schemas/GLA/OpenSpace.ts | 96 ++++++++ .../List/schemas/GLA/ProtectedSpace.ts | 65 +++++ .../schemas/ResidentialUnits/GLA/Gained.ts | 225 ++++++++++++++++++ .../List/schemas/ResidentialUnits/GLA/Lost.ts | 200 ++++++++++++++++ 8 files changed, 743 insertions(+), 17 deletions(-) create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Gained.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Lost.ts diff --git a/editor.planx.uk/src/@planx/components/List/Editor.tsx b/editor.planx.uk/src/@planx/components/List/Editor.tsx index 8f96df6187..0901d78732 100644 --- a/editor.planx.uk/src/@planx/components/List/Editor.tsx +++ b/editor.planx.uk/src/@planx/components/List/Editor.tsx @@ -14,11 +14,18 @@ import InputRowLabel from "ui/shared/InputRowLabel"; import { EditorProps, ICONS, InternalNotes, MoreInformation } from "../ui"; import { List, parseContent } from "./model"; import { ResidentialUnitsExisting } from "./schemas/ResidentialUnits/Existing"; -import { ResidentialUnitsGLANew } from "./schemas/ResidentialUnits/GLA/New"; -import { ResidentialUnitsGLARebuilt } from "./schemas/ResidentialUnits/GLA/Rebuilt"; -import { ResidentialUnitsGLARemoved } from "./schemas/ResidentialUnits/GLA/Removed"; -import { ResidentialUnitsGLARetained } from "./schemas/ResidentialUnits/GLA/Retained"; import { ResidentialUnitsProposed } from "./schemas/ResidentialUnits/Proposed"; +// import { ResidentialUnitsGLANew } from "./schemas/ResidentialUnits/GLA/New"; +// import { ResidentialUnitsGLARebuilt } from "./schemas/ResidentialUnits/GLA/Rebuilt"; +// import { ResidentialUnitsGLARemoved } from "./schemas/ResidentialUnits/GLA/Removed"; +// import { ResidentialUnitsGLARetained } from "./schemas/ResidentialUnits/GLA/Retained"; +import { ResidentialUnitsGLAGained } from "./schemas/ResidentialUnits/GLA/Gained"; +import { ResidentialUnitsGLALost } from "./schemas/ResidentialUnits/GLA/Lost"; +import { ExistingAndProposedUsesGLA } from "./schemas/GLA/ExistingAndProposedUses"; +import { CommunalSpaceGLA } from "./schemas/GLA/CommunalSpace"; +import { BuildingDetailsGLA } from "./schemas/GLA/BuildingDetails"; +import { ProtectedSpaceGLA } from "./schemas/GLA/ProtectedSpace"; +import { OpenSpaceGLA } from "./schemas/GLA/OpenSpace"; import { Zoo } from "./schemas/Zoo"; import { ProposedAdvertisements } from "./schemas/Adverts"; @@ -27,19 +34,26 @@ type Props = EditorProps; export const SCHEMAS = [ { name: "Residential units - Existing", schema: ResidentialUnitsExisting }, { name: "Residential units - Proposed", schema: ResidentialUnitsProposed }, - { name: "Residential units (GLA) - New", schema: ResidentialUnitsGLANew }, - { - name: "Residential units (GLA) - Rebuilt", - schema: ResidentialUnitsGLARebuilt, - }, - { - name: "Residentail units (GLA) - Removed", - schema: ResidentialUnitsGLARemoved, - }, - { - name: "Residential units (GLA) - Retained", - schema: ResidentialUnitsGLARetained, - }, + { name: "Residential units (GLA) - Gained", schema: ResidentialUnitsGLAGained }, + { name: "Residential units (GLA) - Lost", schema: ResidentialUnitsGLALost }, + { name: "Existing and proposed uses (GLA)", schema: ExistingAndProposedUsesGLA }, + { name: "Communal spaces (GLA)", schema: CommunalSpaceGLA }, + { name: "Building details (GLA)", schema: BuildingDetailsGLA }, + { name: "Protected spaces (GLA)", schema: ProtectedSpaceGLA }, + { name: "Open spaces (GLA)", schema: OpenSpaceGLA }, +// { name: "Residential units (GLA) - New", schema: ResidentialUnitsGLANew }, +// { +// name: "Residential units (GLA) - Rebuilt", +// schema: ResidentialUnitsGLARebuilt, +// }, +// { +// name: "Residentail units (GLA) - Removed", +// schema: ResidentialUnitsGLARemoved, +// }, +// { +// name: "Residential units (GLA) - Retained", +// schema: ResidentialUnitsGLARetained, +// }, { name: "Zoo (test)", schema: Zoo }, { name: "Proposed advertisements", schema: ProposedAdvertisements }, ]; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts new file mode 100644 index 0000000000..d77ac140b3 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts @@ -0,0 +1,34 @@ +import { TextInputType } from "@planx/components/TextInput/model"; +import { Schema } from "@planx/components/List/model"; + +export const BuildingDetailsGLA: Schema = { + type: "Building detail", + fields: [ + { + type: "text", + data: { + title: "Building reference", + fn: "reference", + type: TextInputType.Short, + }, + }, + { + type: "number", + data: { + title: "What is the maximum height of the building?", + units: "m", + fn: "height", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "How many storeys does the building have?", + fn: "storeys", + allowNegatives: false, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts new file mode 100644 index 0000000000..e942a3b989 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts @@ -0,0 +1,36 @@ +import { Schema } from "@planx/components/List/model"; + +export const CommunalSpaceGLA: Schema = { + type: "Unit of communal space", + fields: [ + { + type: "question", + data: { + title: "Is this unit of communal space lost or gained?", + fn: "development", + options: [ + { id: "gain", data: { text: "Gained", val: "gain" } }, + { id: "loss", data: { text: "Lost", val: "loss" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the Gross Internal Floor Area (GIA) of this unit?", + units: "m²", + fn: "area", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "How many identical units does the description above apply to?", + fn: "identicalUnits", + allowNegatives: false, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts new file mode 100644 index 0000000000..417fe6b65a --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts @@ -0,0 +1,56 @@ +import { Schema } from "@planx/components/List/model"; + +export const ExistingAndProposedUsesGLA: Schema = { + type: "Existing and proposed uses", + fields: [ + { + type: "question", + data: { + title: "What is the use class?", + fn: "useClass", + options: [ + { id: "bTwo", data: { text: "B2 - General industry", val: "bTwo" } }, + { id: "bEight", data: { text: "B8 - Storage and distribution", val: "bEight" } }, + { id: "cOne", data: { text: "C1 - Hotels", val: "cOne" } }, + { id: "cTwo", data: { text: "C2 - Residential institutions", val: "cTwo" } }, + { id: "cTwoA", data: { text: "C2a - Secure residential institutions", val: "cTwoA" } }, + { id: "cThree", data: { text: "C3 - Dwellinghouses", val: "cThree" } }, + { id: "cFour", data: { text: "C4 - Houses in multiple occupation", val: "cFour" } }, + { id: "e", data: { text: "E - Commercial, business and service", val: "e" } }, + { id: "fOne", data: { text: "F1 - Learning and non-residential institutions", val: "fOne" } }, + { id: "fTwo", data: { text: "F2 - Local community uses", val: "fTwo" } }, + { id: "SG", data: { text: "Sui generis", val: "SG" } }, + { id: "unknown", data: { text: "Unknown", val: "unknown" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the existing gross internal floor area?", + units: "m²", + fn: "areaExisting", // area.existing + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "What is the gross internal floor area lost?", + units: "m²", + fn: "areaLoss", // area.loss + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "What is the gross internal floor area gained?", + units: "m²", + fn: "areaGain", // area.gain + allowNegatives: false, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts new file mode 100644 index 0000000000..7bf23705dc --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts @@ -0,0 +1,96 @@ +import { TextInputType } from "@planx/components/TextInput/model"; +import { Schema } from "@planx/components/List/model"; + +export const OpenSpaceGLA: Schema = { + type: "Open space details", + fields: [ + { + type: "question", + data: { + title: "What is the project's impact on this open space?", + fn: "development", + options: [ + { id: "loss", data: { text: "Loss", val: "loss" } }, + { id: "gain", data: { text: "Gain", val: "gain" } }, + { id: "changeOfUse", data: { text: "Change of use", val: "changeOfUse" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the type of this open space?", + fn: "type", + options: [ + { id: "park", data: { text: "Parks and gardens", val: "park" } }, + { id: "natural", data: { text: "Natural and semi-natural", val: "natural" } }, + { id: "greenCorridor", data: { text: "Green corridors", val: "greenCorridor" } }, + { id: "sport", data: { text: "Outdoor sports facilities", val: "sport" } }, + { id: "amenity", data: { text: "Amenity", val: "amenity" } }, + { id: "children", data: { text: "Provision for children and young people", val: "children" } }, + { id: "allotment", data: { text: "Allotments, community gardens and city farms", val: "allotment" } }, + { id: "burial", data: { text: "Cemeteries, churchyards and other burial grounds", val: "burial" } }, + { id: "fringe", data: { text: "Countryside in urban fringe areas", val: "fringe" } }, + { id: "civic", data: { text: "Civic spaces", val: "civic" } }, + { id: "brownfield", data: { text: "Brownfield land", val: "brownfield" } }, + { id: "nonResidential", data: { text: "Non-residential institution grounds or garden", val: "nonResidential" } }, + { id: "residential", data: { text: "Residential garden", val: "residential" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the designation of this open space?", + fn: "designation", + options: [ + { id: "greenBelt", data: { text: "Green Belt", val: "greenBelt" } }, + { id: "metropolitan", data: { text: "Metropolitan Open Land", val: "metropolitan" } }, + { id: "local", data: { text: "Local Open Spaces", val: "local" } }, + { id: "other", data: { text: "Other designation", val: "other" } }, + { id: "none", data: { text: "Not designated", val: "none" } }, + ], + }, + }, + { + type: "text", + data: { + title: "Describe the open space", + fn: "description", + type: TextInputType.Long, + }, + }, + { + type: "question", + data: { + title: "What is the access to this open space?", + fn: "access", + options: [ + { id: "restricted", data: { text: "Restricted", val: "restricted" } }, + { id: "unrestricted", data: { text: "Unrestricted", val: "unrestricted" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the area of this open space?", + units: "ha", + fn: "area", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "Do the changes to this open space involve a land swap?", + fn: "swap", + options: [ + { id: "true", data: { text: "Yes", val: "true" } }, + { id: "false", data: { text: "No", val: "false" } }, + ], + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts new file mode 100644 index 0000000000..5bb608bb75 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts @@ -0,0 +1,65 @@ +import { TextInputType } from "@planx/components/TextInput/model"; +import { Schema } from "@planx/components/List/model"; + +export const ProtectedSpaceGLA: Schema = { + type: "Protected space details", + fields: [ + { + type: "question", + data: { + title: "What is the project's impact on this protected space?", + fn: "development", + options: [ + { id: "loss", data: { text: "Loss", val: "loss" } }, + { id: "gain", data: { text: "Gain", val: "gain" } }, + { id: "changeOfUse", data: { text: "Change of use", val: "changeOfUse" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the designation of this protected space?", + fn: "designation", + options: [ + { id: "SSSI", data: { text: "Sites of Special Scientific Interest", val: "SSSI" } }, + { id: "localReserve", data: { text: "Local Nature Reserve", val: "localReserve" } }, + { id: "metropolitan", data: { text: "Site of Metropolitan Importance", val: "metropolitan" } }, + { id: "boroughGradeOne", data: { text: "Site of Borough Grade 1 Importance", val: "boroughGradeOne" } }, + { id: "boroughGradeTwo", data: { text: "Site of Borough Grade 2 Importance", val: "boroughGradeTwo" } }, + { id: "local", data: { text: "Site of Local Importance", val: "local" } }, + { id: "none", data: { text: "Not designated", val: "none" } }, + ], + }, + }, + { + type: "text", + data: { + title: "Describe the protected space", + fn: "description", + type: TextInputType.Long, + }, + }, + { + type: "question", + data: { + title: "What is the access to this open space?", + fn: "access", + options: [ + { id: "restricted", data: { text: "Restricted", val: "restricted" } }, + { id: "unrestricted", data: { text: "Unrestricted", val: "unrestricted" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the area of this open space?", + units: "ha", + fn: "area", + allowNegatives: false, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Gained.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Gained.ts new file mode 100644 index 0000000000..2ec4565243 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Gained.ts @@ -0,0 +1,225 @@ +import { Schema } from "@planx/components/List/model"; + +export const ResidentialUnitsGLAGained: Schema = { + type: "Gained residential unit", + fields: [ + { + type: "question", + data: { + title: "What development does this unit result from?", + fn: "development", + options: [ + { id: "newBuild", data: { text: "New build", val: "newBuild" } }, + { id: "conversion", data: { text: "Conversion", val: "conversion" } }, + { id: "changeOfUse", data: { text: "Change of use", val: "changeOfUse" } }, + { id: "extension", data: { text: "Extension", val: "extension" } }, + { id: "notKnown", data: { text: "Not known", val: "notKnown" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the number of habitable rooms of this unit?", + fn: "habitable", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "What is the number of bedrooms of this unit?", + fn: "bedrooms", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "Which best describes the tenure of this unit?", + fn: "tenure", + options: [ + { id: "LAR", data: { text: "London Affordable Rent" } }, + { + id: "AR", + data: { text: "Affordable rent (not at LAR benchmark rents)" }, + }, + { id: "SR", data: { text: "Social rent" } }, + { id: "LRR", data: { text: "London Living Rent" } }, + { id: "sharedEquity", data: { text: "Shared equity" } }, + { id: "LSO", data: { text: "London Shared Ownership" } }, + { id: "DMS", data: { text: "Discount market sale" } }, + { id: "DMR", data: { text: "Discount market rent" } }, + { + id: "DMRLLR", + data: { + text: "Discount market rent (charged at London Living Rents)", + }, + }, + { id: "marketForRent", data: { text: "Market for rent" } }, + { id: "SH", data: { text: "Starter homes" } }, + { + id: "selfCustomBuild", + data: { text: "Self-build and custom build" }, + }, + { id: "marketForSale", data: { text: "Market for sale" } }, + { id: "other", data: { text: "Other" } }, + ], + }, + }, + // { + // type: "checklist", // @todo + // data: { + // title: "Is this unit compliant with any of the following?", + // fn: "compliance", + // options: [ + // { + // id: "m42", + // data: { text: "Part M4(2) of the Building Regulations 2010" }, + // }, + // { + // id: "m432a", + // data: { text: "Part M4(3)(2a) of the Building Regulations 2010" }, + // }, + // { + // id: "m432b", + // data: { text: "Part M4(3)(2b) of the Building Regulations 2010" }, + // }, + // { id: "none", data: { text: "None of these" } }, + // ], + // }, + // }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(2) of the Building Regulations 2010?", + fn: "complianceM42", // compliance.m42 + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(3)(2a) of the Building Regulations 2010?", + fn: "complianceM432a", // compliance.m432a + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(3)(2b) of the Building Regulations 2010?", + fn: "complianceM432b", // compliance.m432b + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the type of this unit?", + fn: "type", + options: [ + { id: "terraced", data: { text: "Terraced home" } }, + { id: "semiDetached", data: { text: "Semi detached home" } }, + { id: "detached", data: { text: "Detached home" } }, + { id: "flat", data: { text: "Flat/apartment or maisonette" } }, + { id: "LW", data: { text: "Live/work unit" } }, + { id: "cluster", data: { text: "Cluster flat" } }, + { id: "studio", data: { text: "Studio or bedsit" } }, + { id: "coLiving", data: { text: "Co living unit" } }, + { id: "hostel", data: { text: "Hostel room" } }, + { id: "HMO", data: { text: "HMO" } }, + { id: "student", data: { text: "Student accomodation" } }, + { id: "other", data: { text: "Other" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the provider of this unit?", + fn: "provider", + options: [ + { id: "private", data: { text: "Private" } }, + { id: "privateRented", data: { text: "Private rented sector" } }, + { id: "HA", data: { text: "Housing association" } }, + { id: "LA", data: { text: "Local authority" } }, + { id: "publicAuthority", data: { text: "Other public authority" } }, + { id: "councilDelivery", data: { text: "Council delivery company" } }, + { + id: "councilBuildToRent", + data: { text: "Council delivered build to rent" }, + }, + { + id: "affordableHousing", + data: { text: "Other affordable housing provider" }, + }, + { id: "selfBuild", data: { text: "Self-build" } }, + ], + }, + }, + { + type: "question", + data: { + title: "Is this unit built on garden land?", + fn: "garden", + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the Gross Internal Floor Area (GIA) of this unit?", + units: "m²", + fn: "area", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "Will this unit provide sheltered accommodation?", + fn: "sheltered", + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: "Is this unit specifically designed for older people?", + fn: "olderPersons", + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "number", + data: { + title: "How many identical units does the description above apply to?", + fn: "identicalUnits", + allowNegatives: false, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Lost.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Lost.ts new file mode 100644 index 0000000000..d55013cb58 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Lost.ts @@ -0,0 +1,200 @@ +import { Schema } from "@planx/components/List/model"; + +export const ResidentialUnitsGLALost: Schema = { + type: "Lost or replaced residential unit", + fields: [ + { + type: "number", + data: { + title: "What is the number of habitable rooms of this unit?", + fn: "habitable", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "What is the number of bedrooms of this unit?", + fn: "bedrooms", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "Which best describes the tenure of this unit?", + fn: "tenure", + options: [ + { id: "LAR", data: { text: "London Affordable Rent" } }, + { + id: "AR", + data: { text: "Affordable rent (not at LAR benchmark rents)" }, + }, + { id: "SR", data: { text: "Social rent" } }, + { id: "LRR", data: { text: "London Living Rent" } }, + { id: "sharedEquity", data: { text: "Shared equity" } }, + { id: "LSO", data: { text: "London Shared Ownership" } }, + { id: "DMS", data: { text: "Discount market sale" } }, + { id: "DMR", data: { text: "Discount market rent" } }, + { + id: "DMRLLR", + data: { + text: "Discount market rent (charged at London Living Rents)", + }, + }, + { id: "marketForRent", data: { text: "Market for rent" } }, + { id: "SH", data: { text: "Starter homes" } }, + { + id: "selfCustomBuild", + data: { text: "Self-build and custom build" }, + }, + { id: "marketForSale", data: { text: "Market for sale" } }, + { id: "other", data: { text: "Other" } }, + ], + }, + }, + // { + // type: "checklist", // @todo + // data: { + // title: "Is this unit compliant with any of the following?", + // fn: "compliance", + // options: [ + // { + // id: "m42", + // data: { text: "Part M4(2) of the Building Regulations 2010" }, + // }, + // { + // id: "m432a", + // data: { text: "Part M4(3)(2a) of the Building Regulations 2010" }, + // }, + // { + // id: "m432b", + // data: { text: "Part M4(3)(2b) of the Building Regulations 2010" }, + // }, + // { id: "none", data: { text: "None of these" } }, + // ], + // }, + // }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(2) of the Building Regulations 2010?", + fn: "complianceM42", // compliance.m42 + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(3)(2a) of the Building Regulations 2010?", + fn: "complianceM432a", // compliance.m432a + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: + "Is this unit compliant with Part M4(3)(2b) of the Building Regulations 2010?", + fn: "complianceM432b", // compliance.m432b + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the type of this unit?", + fn: "type", + options: [ + { id: "terraced", data: { text: "Terraced home" } }, + { id: "semiDetached", data: { text: "Semi detached home" } }, + { id: "detached", data: { text: "Detached home" } }, + { id: "flat", data: { text: "Flat/apartment or maisonette" } }, + { id: "LW", data: { text: "Live/work unit" } }, + { id: "cluster", data: { text: "Cluster flat" } }, + { id: "studio", data: { text: "Studio or bedsit" } }, + { id: "coLiving", data: { text: "Co living unit" } }, + { id: "hostel", data: { text: "Hostel room" } }, + { id: "HMO", data: { text: "HMO" } }, + { id: "student", data: { text: "Student accomodation" } }, + { id: "other", data: { text: "Other" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the provider of this unit?", + fn: "provider", + options: [ + { id: "private", data: { text: "Private" } }, + { id: "privateRented", data: { text: "Private rented sector" } }, + { id: "HA", data: { text: "Housing association" } }, + { id: "LA", data: { text: "Local authority" } }, + { id: "publicAuthority", data: { text: "Other public authority" } }, + { id: "councilDelivery", data: { text: "Council delivery company" } }, + { + id: "councilBuildToRent", + data: { text: "Council delivered build to rent" }, + }, + { + id: "affordableHousing", + data: { text: "Other affordable housing provider" }, + }, + { id: "selfBuild", data: { text: "Self-build" } }, + ], + }, + }, + { + type: "number", + data: { + title: "What is the Gross Internal Floor Area (GIA) of this unit?", + units: "m²", + fn: "area", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "Will this unit provide sheltered accommodation?", + fn: "sheltered", + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "question", + data: { + title: "Is this unit specifically designed for older people?", + fn: "olderPersons", + options: [ + { id: "true", data: { text: "Yes" } }, + { id: "false", data: { text: "No" } }, + ], + }, + }, + { + type: "number", + data: { + title: "How many identical units does the description above apply to?", + fn: "identicalUnits", + allowNegatives: false, + }, + }, + ], + min: 1, +} as const;