From f377b918d7a7adb2ffa1330c5db05814bf472917 Mon Sep 17 00:00:00 2001 From: augustlindemer <118665588+augustlindemer@users.noreply.github.com> Date: Sun, 15 Dec 2024 11:01:51 +0000 Subject: [PATCH] add base schemas for CIL --- .../src/@planx/components/List/Editor.tsx | 2 + .../List/schemas/CIL/ExistingCIL.ts | 65 ++++++ .../List/schemas/CIL/ProposedCIL.ts | 209 ++++++++++++++++++ 3 files changed, 276 insertions(+) create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/CIL/ExistingCIL.ts create mode 100644 editor.planx.uk/src/@planx/components/List/schemas/CIL/ProposedCIL.ts diff --git a/editor.planx.uk/src/@planx/components/List/Editor.tsx b/editor.planx.uk/src/@planx/components/List/Editor.tsx index 72b01dc3b7..82b137d1b4 100644 --- a/editor.planx.uk/src/@planx/components/List/Editor.tsx +++ b/editor.planx.uk/src/@planx/components/List/Editor.tsx @@ -17,6 +17,7 @@ import { ICONS } from "../shared/icons"; import { EditorProps } from "../shared/types"; import { List, parseContent, validationSchema } from "./model"; import { ProposedAdvertisements } from "./schemas/Adverts"; +import { ExistingBuildingsCIL } from "./schemas/CIL/ExistingCIL"; import { NonResidentialFloorspace } from "./schemas/Floorspace"; import { BuildingDetailsGLA } from "./schemas/GLA/BuildingDetails"; import { CommunalSpaceGLA } from "./schemas/GLA/CommunalSpace"; @@ -69,6 +70,7 @@ export const SCHEMAS = [ { name: "Proposed advertisements", schema: ProposedAdvertisements }, { name: "Parking details", schema: Parking }, { name: "Parking details (GLA)", schema: ParkingGLA }, + { name: "Existing buildings (CIL)", schema: ExistingBuildingsCIL }, { name: "Trees", schema: Trees }, { name: "Trees (Map first)", schema: TreesMapFirst }, ]; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/CIL/ExistingCIL.ts b/editor.planx.uk/src/@planx/components/List/schemas/CIL/ExistingCIL.ts new file mode 100644 index 0000000000..b33d48ccb0 --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/CIL/ExistingCIL.ts @@ -0,0 +1,65 @@ +import { Schema } from "@planx/components/shared/Schema/model"; +import { TextInputType } from "@planx/components/TextInput/model"; + +export const ExistingBuildingsCIL: Schema = { + type: "Existing building or part of building", + fields: [ + { + type: "text", + data: { + title: "Describe the existing building or part", + fn: "descriptionExisting", + type: TextInputType.Short, + }, + }, + { + type: "number", + data: { + title: "How much of its floorspace will be retained?", + units: "m²", + fn: "areaRetained", + allowNegatives: false, + }, + }, + { + type: "text", + data: { + title: "What will the retained floorspace be used for?", + description: "This can be identical to its current use.", + fn: "descriptionProposed", + type: TextInputType.Short, + }, + }, + { + type: "number", + data: { + title: "How much of its floorspace will be lost?", + units: "m²", + fn: "areaDemolished", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: + "Has the building or part been lawfully occupied for 6 continuous months in the past 36 months (excluding temporarily lawful uses)?", + fn: "continuousOccupation", + options: [ + { id: "true", data: { text: "Yes", val: "true" } }, + { id: "false", data: { text: "No", val: "false" } }, + ], + }, + }, + { + type: "text", + data: { + title: "When was it last occupied for its lawful use?", + description: "Please enter a date or whether it is still in use.", + fn: "lastOccupation", + type: TextInputType.Short, + }, + }, + ], + min: 1, +} as const; diff --git a/editor.planx.uk/src/@planx/components/List/schemas/CIL/ProposedCIL.ts b/editor.planx.uk/src/@planx/components/List/schemas/CIL/ProposedCIL.ts new file mode 100644 index 0000000000..09309033eb --- /dev/null +++ b/editor.planx.uk/src/@planx/components/List/schemas/CIL/ProposedCIL.ts @@ -0,0 +1,209 @@ +import { Schema } from "@planx/components/shared/Schema/model"; + +export const ProposedGrossInternalAreaCIL: Schema = { + type: "New development type", + fields: [ + { + type: "question", + data: { + title: "What best describes this development?", + fn: "type", + options: [ + { + id: "marketHousing", + data: { text: "Market housing", val: "marketHousing" }, + }, + { + id: "socialHousing", + data: { text: "Social or shared ownership housing", val: "LW" }, + }, + { + id: "otherResidential", + data: { + text: "Other residential development", + val: "otherResidential", + }, + }, + { + id: "nonResidential", + data: { + text: "Non-residential development", + val: "nonResidential", + }, + }, + ], + }, + }, + { + type: "number", + data: { + title: + "What is the Gross Internal Area (GIA) proposed by this development?", + units: "m²", + fn: "area", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "How many habitable rooms will this unit have?", + fn: "habitable", + allowNegatives: false, + }, + }, + { + type: "number", + data: { + title: "How many bedrooms will this unit have?", + fn: "bedrooms", + allowNegatives: false, + }, + }, + { + type: "question", + data: { + title: "What best describes the tenure of this unit?", + fn: "tenure", + options: [ + { id: "LAR", data: { text: "London Affordable Rent", val: "LAR" } }, + { + id: "AR", + data: { + text: "Affordable rent (not at LAR benchmark rents)", + val: "AR", + }, + }, + { id: "SR", data: { text: "Social rent", val: "SR" } }, + { id: "LRR", data: { text: "London Living Rent", val: "LRR" } }, + { + id: "sharedEquity", + data: { text: "Shared equity", val: "sharedEquity" }, + }, + { id: "LSO", data: { text: "London Shared Ownership", val: "LSO" } }, + { id: "DMS", data: { text: "Discount market sale", val: "DMS" } }, + { id: "DMR", data: { text: "Discount market rent", val: "DMR" } }, + { + id: "DMRLLR", + data: { + text: "Discount market rent (charged at London Living Rents)", + val: "DMRLLR", + }, + }, + { + id: "marketForRent", + data: { text: "Market for rent", val: "marketForRent" }, + }, + { id: "SH", data: { text: "Starter homes", val: "SH" } }, + { + id: "selfCustomBuild", + data: { + text: "Self-build and custom build", + val: "selfCustomBuild", + }, + }, + { + id: "marketForSale", + data: { text: "Market for sale", val: "marketForSale" }, + }, + { id: "other", data: { text: "Other", val: "other" } }, + ], + }, + }, + { + type: "question", + data: { + title: "What best describes the provider of this unit?", + fn: "provider", + options: [ + { id: "private", data: { text: "Private", val: "private" } }, + { + id: "privateRented", + data: { text: "Private rented sector", val: "privateRented" }, + }, + { id: "HA", data: { text: "Housing association", val: "HA" } }, + { id: "LA", data: { text: "Local authority", val: "LA" } }, + { + id: "publicAuthority", + data: { text: "Other public authority", val: "publicAuthority" }, + }, + { + id: "councilDelivery", + data: { text: "Council delivery company", val: "councilDelivery" }, + }, + { + id: "councilBuildToRent", + data: { + text: "Council delivered build to rent", + val: "councilBuildToRent", + }, + }, + { + id: "affordableHousing", + data: { + text: "Other affordable housing provider", + val: "affordableHousing", + }, + }, + { id: "selfBuild", data: { text: "Self-build", val: "selfBuild" } }, + ], + }, + }, + { + type: "checklist", + data: { + title: "Will this unit be 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: "Will this unit be built on garden land?", + fn: "garden", + options: [ + { id: "true", data: { text: "Yes", val: "true" } }, + { id: "false", data: { text: "No", val: "false" } }, + ], + }, + }, + { + type: "question", + data: { + title: "Will this unit provide sheltered accommodation?", + fn: "sheltered", + options: [ + { id: "true", data: { text: "Yes", val: "true" } }, + { id: "false", data: { text: "No", val: "false" } }, + ], + }, + }, + { + type: "question", + data: { + title: "Is this unit specifically designed for older people?", + fn: "olderPersons", + options: [ + { id: "true", data: { text: "Yes", val: "true" } }, + { id: "false", data: { text: "No", val: "false" } }, + ], + }, + }, + ], + min: 1, +} as const;