From 6cd225a2c84b33c6377d9495ca5fed2e0aa6aa4f Mon Sep 17 00:00:00 2001 From: Rory Doak <138574807+RODO94@users.noreply.github.com> Date: Mon, 5 Aug 2024 13:10:08 +0100 Subject: [PATCH 1/7] feat: Add event listener trackers to Map and Label (#3469) --- .../@planx/components/MapAndLabel/Public.tsx | 108 +++++++++++++++--- 1 file changed, 89 insertions(+), 19 deletions(-) diff --git a/editor.planx.uk/src/@planx/components/MapAndLabel/Public.tsx b/editor.planx.uk/src/@planx/components/MapAndLabel/Public.tsx index bfb3e1e513..65df63ce54 100644 --- a/editor.planx.uk/src/@planx/components/MapAndLabel/Public.tsx +++ b/editor.planx.uk/src/@planx/components/MapAndLabel/Public.tsx @@ -1,19 +1,72 @@ import { alpha } from "@mui/material/styles"; +import Typography from "@mui/material/Typography"; +import { Feature } from "geojson"; import { useStore } from "pages/FlowEditor/lib/store"; -import React from "react"; +import React, { useEffect, useState } from "react"; +import { FONT_WEIGHT_SEMI_BOLD } from "theme"; +import ErrorWrapper from "ui/shared/ErrorWrapper"; import Card from "../shared/Preview/Card"; import CardHeader from "../shared/Preview/CardHeader"; -import { MapContainer } from "../shared/Preview/MapContainer"; +import { MapContainer, MapFooter } from "../shared/Preview/MapContainer"; import { PublicProps } from "../ui"; import { MapAndLabel } from "./model"; type Props = PublicProps; +type Boundary = Feature | undefined; + function MapAndLabelComponent(props: Props) { const teamSettings = useStore.getState().teamSettings; + const [boundary, setBoundary] = useState(); + const [area, setArea] = useState(0); + const [objectArray, setObjectArray] = useState([]); + const [mapValidationError, setMapValidationError] = useState(); + + let count = 0; + + useEffect(() => { + const areaChangeHandler = ({ detail }: { detail: string }) => { + const numberString = detail.split(" ")[0]; + const area = Number(numberString); + setArea(area); + }; + + const geojsonChangeHandler = ({ detail: geojson }: any) => { + if (geojson["EPSG:3857"]?.features) { + count++; + + // only a single polygon can be drawn, so get first feature in geojson "FeatureCollection" + setBoundary(geojson["EPSG:3857"].features[0]); + setObjectArray([ + ...objectArray, + { number: count, feature: geojson["EPSG:3857"].features[0] }, + ]); + } else { + // if the user clicks 'reset' to erase the drawing, geojson will be empty object, so set boundary to undefined + setBoundary(undefined); + } + }; + + const map: any = document.getElementById("draw-boundary-map"); + + map?.addEventListener("areaChange", areaChangeHandler); + map?.addEventListener("geojsonChange", geojsonChangeHandler); + + return function cleanup() { + map?.removeEventListener("areaChange", areaChangeHandler); + map?.removeEventListener("geojsonChange", geojsonChangeHandler); + }; + }, [objectArray, boundary]); + + useEffect(() => { + if (!boundary && objectArray.length < 1) { + setMapValidationError("Add a boundary to the map"); + } + }, [boundary]); + return ( - + - - {/* @ts-ignore */} - - + + + {/* @ts-ignore */} + + + + + The property boundary you have drawn is{" "} + + {area?.toLocaleString("en-GB") ?? 0} m² + + + + + ); } From 9c869fc068b6f660d727e24a615a68d581ae2493 Mon Sep 17 00:00:00 2001 From: Jessica McInchak Date: Mon, 5 Aug 2024 17:05:12 +0200 Subject: [PATCH 2/7] feat: setup a Slack notification when flow status is updated (#3466) --- api.planx.uk/modules/webhooks/docs.yaml | 32 ++++++++- .../service/sendNotification/index.test.ts | 68 ++++++++++++++++++- .../service/sendNotification/index.ts | 62 ++++++++++------- .../service/sendNotification/schema.ts | 17 +++++ .../service/sendNotification/types.ts | 7 +- hasura.planx.uk/metadata/tables.yaml | 29 ++++++++ 6 files changed, 187 insertions(+), 28 deletions(-) diff --git a/api.planx.uk/modules/webhooks/docs.yaml b/api.planx.uk/modules/webhooks/docs.yaml index a392d99b26..55c7fd7c33 100644 --- a/api.planx.uk/modules/webhooks/docs.yaml +++ b/api.planx.uk/modules/webhooks/docs.yaml @@ -103,13 +103,32 @@ components: team_slug: type: string required: - - event + - body + FlowStatusChange: + type: object + properties: + event: + type: object + properties: + data: + type: object + properties: + new: + type: object + properties: + id: + type: string; + status: + type: string; + required: + - body SendSlackNotification: oneOf: - $ref: "#/components/schemas/BopsSubmission" - $ref: "#/components/schemas/UniformSubmission" - $ref: "#/components/schemas/EmailSubmission" - $ref: "#/components/schemas/S3Submission" + - $ref: "#/components/schemas/FlowStatusChange" CreatePaymentEvent: type: object properties: @@ -250,12 +269,19 @@ paths: security: - hasuraAuth: [] summary: Send Slack notification - description: Endpoint to trigger a Slack notification following a submission event + description: Endpoint to trigger a Slack notification following a database event (eg insert record into submission audit table, update a flow table column) parameters: - in: query name: type type: string - enum: ["bops-submission", "uniform-submission", "email-submission"] + enum: + [ + "bops-submission", + "uniform-submission", + "email-submission", + "s3-submission", + "flow-status", + ] required: true requestBody: content: diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts b/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts index 433f8dc21b..986f6f8af8 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts @@ -1,7 +1,13 @@ import supertest from "supertest"; import app from "../../../../server"; import SlackNotify from "slack-notify"; -import { BOPSBody, EmailBody, S3Body, UniformBody } from "./types"; +import { + BOPSBody, + EmailBody, + FlowStatusBody, + S3Body, + UniformBody, +} from "./types"; import { $api } from "../../../../client"; import { CoreDomainClient } from "@opensystemslab/planx-core"; @@ -399,4 +405,64 @@ describe("Send Slack notifications endpoint", () => { }); }); }); + + describe("Flow status update notification", () => { + const body: FlowStatusBody = { + event: { + data: { + new: { + id: "flow-id-369", + status: "online", + }, + }, + }, + }; + + it("skips the staging environment", async () => { + process.env.APP_ENVIRONMENT = "staging"; + await post(ENDPOINT) + .query({ type: "flow-status" }) + .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) + .send(body) + .expect(200) + .then((response) => { + expect(response.body.message).toMatch(/skipping Slack notification/); + }); + }); + + it("posts to Slack on success", async () => { + process.env.APP_ENVIRONMENT = "production"; + + await post(ENDPOINT) + .query({ type: "flow-status" }) + .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) + .send(body) + .expect(200) + .then((response) => { + expect(SlackNotify).toHaveBeenCalledWith( + process.env.SLACK_WEBHOOK_URL, + ); + expect(mockSend).toHaveBeenCalledTimes(1); + expect(response.body.message).toBe("Posted to Slack"); + expect(response.body.data).toMatch(/large_green_circle/); + expect(response.body.data).toMatch(/flow-id-369/); + expect(response.body.data).toMatch(/online/); + }); + }); + + it("returns error when Slack fails", async () => { + process.env.APP_ENVIRONMENT = "production"; + mockSend.mockRejectedValue("Fail!"); + + await post(ENDPOINT) + .query({ type: "flow-status" }) + .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) + .send(body) + .expect(500) + .then((response) => { + expect(mockSend).toHaveBeenCalledTimes(1); + expect(response.body.error).toMatch(/Failed to send/); + }); + }); + }); }); diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/index.ts b/api.planx.uk/modules/webhooks/service/sendNotification/index.ts index c35bc225cf..1548164b5c 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/index.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/index.ts @@ -5,6 +5,7 @@ import { EmailEventData, EventData, EventType, + FlowStatusEventData, S3EventData, UniformEventData, } from "./types"; @@ -15,38 +16,52 @@ export const sendSlackNotification = async ( type: EventType, ) => { const slack = SlackNotify(process.env.SLACK_WEBHOOK_URL!); - let message = getMessageForEventType(data, type); + const message = await getMessageForEventType(data, type); - const sessionId = getSessionIdFromEvent(data, type); - const { disability, resubmission } = - await getExemptionStatusesForSession(sessionId); - if (disability) message += " [Exempt]"; - if (resubmission) message += " [Resubmission]"; - - await slack.send(":incoming_envelope: " + message); + await slack.send(message); return message; }; -const getMessageForEventType = (data: EventData, type: EventType) => { - if (type === "bops-submission") { - const { bops_id, destination_url } = data as BOPSEventData; - return `New BOPS submission *${bops_id}* [${destination_url}]`; - } +const getMessageForEventType = async (data: EventData, type: EventType) => { + let message = ""; + if (type.endsWith("-submission")) { + const emoji = ":incoming_message:"; + if (type === "bops-submission") { + const { bops_id, destination_url } = data as BOPSEventData; + message = `${emoji} New BOPS submission *${bops_id}* [${destination_url}]`; + } - if (type === "uniform-submission") { - const { submission_reference, response } = data as UniformEventData; - return `New Uniform submission *${submission_reference}* [${response.organisation}]`; - } + if (type === "uniform-submission") { + const { submission_reference, response } = data as UniformEventData; + message = `${emoji} New Uniform submission *${submission_reference}* [${response.organisation}]`; + } + + if (type === "email-submission") { + const { request, session_id, team_slug } = data as EmailEventData; + message = `${emoji} New email submission "${request.personalisation.serviceName}" *${session_id}* [${team_slug}]`; + } - if (type === "email-submission") { - const { request, session_id, team_slug } = data as EmailEventData; - return `New email submission "${request.personalisation.serviceName}" *${session_id}* [${team_slug}]`; + if (type === "s3-submission") { + const { session_id, team_slug } = data as S3EventData; + message = `${emoji} New S3 + Power Automate submission *${session_id}* [${team_slug}]`; + } + + const sessionId = getSessionIdFromEvent(data, type); + if (sessionId) { + const { disability, resubmission } = + await getExemptionStatusesForSession(sessionId); + if (disability) message += " [Exempt]"; + if (resubmission) message += " [Resubmission]"; + } } - if (type === "s3-submission") { - const { session_id, team_slug } = data as S3EventData; - return `New S3 + Power Automate submission *${session_id}* [${team_slug}]`; + if (type === "flow-status") { + const { id: flowId, status } = data as FlowStatusEventData; + const emoji = status === "online" ? ":large_green_circle:" : ":no_entry:"; + message = `${emoji} Flow is now *${status}* (${flowId})`; } + + return message; }; const getSessionIdFromEvent = (data: EventData, type: EventType) => @@ -55,6 +70,7 @@ const getSessionIdFromEvent = (data: EventData, type: EventType) => "uniform-submission": (data as UniformEventData).payload?.sessionId, "email-submission": (data as EmailEventData).session_id, "s3-submission": (data as S3EventData).session_id, + "flow-status": undefined, })[type]; const getExemptionStatusesForSession = async (sessionId: string) => { diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts b/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts index 0ecf85ccf5..1cc9d92b2d 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts @@ -75,9 +75,26 @@ export const s3SubmissionSchema = z.object({ }), }); +export const flowStatusSchema = z.object({ + body: z.object({ + event: z.object({ + data: z.object({ + new: z.object({ + id: z.string(), + status: z.string(), + }), + }), + }), + }), + query: z.object({ + type: z.literal("flow-status"), + }), +}); + export const sendSlackNotificationSchema = z.union([ bopsSubmissionSchema, uniformSubmissionSchema, emailSubmissionSchema, s3SubmissionSchema, + flowStatusSchema, ]); diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/types.ts b/api.planx.uk/modules/webhooks/service/sendNotification/types.ts index 5373cebb5f..e3a2d9998f 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/types.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/types.ts @@ -3,6 +3,7 @@ import { ValidatedRequestHandler } from "../../../../shared/middleware/validate" import { bopsSubmissionSchema, emailSubmissionSchema, + flowStatusSchema, s3SubmissionSchema, sendSlackNotificationSchema, uniformSubmissionSchema, @@ -29,11 +30,15 @@ export type EmailEventData = EmailBody["event"]["data"]["new"]; export type S3Body = z.infer["body"]; export type S3EventData = S3Body["event"]["data"]["new"]; +export type FlowStatusBody = z.infer["body"]; +export type FlowStatusEventData = FlowStatusBody["event"]["data"]["new"]; + export type EventData = | BOPSEventData | UniformEventData | EmailEventData - | S3EventData; + | S3EventData + | FlowStatusEventData; export type SendSlackNotification = ValidatedRequestHandler< typeof sendSlackNotificationSchema, diff --git a/hasura.planx.uk/metadata/tables.yaml b/hasura.planx.uk/metadata/tables.yaml index fd56e9f079..7ca4488d28 100644 --- a/hasura.planx.uk/metadata/tables.yaml +++ b/hasura.planx.uk/metadata/tables.yaml @@ -674,6 +674,35 @@ _eq: x-hasura-user-id - role: _eq: teamEditor + event_triggers: + - name: setup_flow_status_notifications + definition: + enable_manual: false + update: + columns: + - status + retry_conf: + interval_sec: 30 + num_retries: 1 + timeout_sec: 60 + webhook_from_env: HASURA_PLANX_API_URL + headers: + - name: authorization + value_from_env: HASURA_PLANX_API_KEY + request_transform: + body: + action: transform + template: |- + { + "id": {{$body.event.data.new.id}}, + "status": {{$body.event.data.new.status}} + } + method: POST + query_params: + type: flow-status + template_engine: Kriti + url: '{{$base_url}}/webhooks/hasura/send-slack-notification' + version: 2 - table: name: global_settings schema: public From 862b33e28e7c26d72195bc8aa387ed26fb83ef0e Mon Sep 17 00:00:00 2001 From: Jessica McInchak Date: Mon, 5 Aug 2024 17:47:24 +0200 Subject: [PATCH 3/7] Revert "feat: setup a Slack notification when flow status is updated" (#3493) --- api.planx.uk/modules/webhooks/docs.yaml | 32 +-------- .../service/sendNotification/index.test.ts | 68 +------------------ .../service/sendNotification/index.ts | 62 +++++++---------- .../service/sendNotification/schema.ts | 17 ----- .../service/sendNotification/types.ts | 7 +- hasura.planx.uk/metadata/tables.yaml | 29 -------- 6 files changed, 28 insertions(+), 187 deletions(-) diff --git a/api.planx.uk/modules/webhooks/docs.yaml b/api.planx.uk/modules/webhooks/docs.yaml index 55c7fd7c33..a392d99b26 100644 --- a/api.planx.uk/modules/webhooks/docs.yaml +++ b/api.planx.uk/modules/webhooks/docs.yaml @@ -103,32 +103,13 @@ components: team_slug: type: string required: - - body - FlowStatusChange: - type: object - properties: - event: - type: object - properties: - data: - type: object - properties: - new: - type: object - properties: - id: - type: string; - status: - type: string; - required: - - body + - event SendSlackNotification: oneOf: - $ref: "#/components/schemas/BopsSubmission" - $ref: "#/components/schemas/UniformSubmission" - $ref: "#/components/schemas/EmailSubmission" - $ref: "#/components/schemas/S3Submission" - - $ref: "#/components/schemas/FlowStatusChange" CreatePaymentEvent: type: object properties: @@ -269,19 +250,12 @@ paths: security: - hasuraAuth: [] summary: Send Slack notification - description: Endpoint to trigger a Slack notification following a database event (eg insert record into submission audit table, update a flow table column) + description: Endpoint to trigger a Slack notification following a submission event parameters: - in: query name: type type: string - enum: - [ - "bops-submission", - "uniform-submission", - "email-submission", - "s3-submission", - "flow-status", - ] + enum: ["bops-submission", "uniform-submission", "email-submission"] required: true requestBody: content: diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts b/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts index 986f6f8af8..433f8dc21b 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/index.test.ts @@ -1,13 +1,7 @@ import supertest from "supertest"; import app from "../../../../server"; import SlackNotify from "slack-notify"; -import { - BOPSBody, - EmailBody, - FlowStatusBody, - S3Body, - UniformBody, -} from "./types"; +import { BOPSBody, EmailBody, S3Body, UniformBody } from "./types"; import { $api } from "../../../../client"; import { CoreDomainClient } from "@opensystemslab/planx-core"; @@ -405,64 +399,4 @@ describe("Send Slack notifications endpoint", () => { }); }); }); - - describe("Flow status update notification", () => { - const body: FlowStatusBody = { - event: { - data: { - new: { - id: "flow-id-369", - status: "online", - }, - }, - }, - }; - - it("skips the staging environment", async () => { - process.env.APP_ENVIRONMENT = "staging"; - await post(ENDPOINT) - .query({ type: "flow-status" }) - .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) - .send(body) - .expect(200) - .then((response) => { - expect(response.body.message).toMatch(/skipping Slack notification/); - }); - }); - - it("posts to Slack on success", async () => { - process.env.APP_ENVIRONMENT = "production"; - - await post(ENDPOINT) - .query({ type: "flow-status" }) - .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) - .send(body) - .expect(200) - .then((response) => { - expect(SlackNotify).toHaveBeenCalledWith( - process.env.SLACK_WEBHOOK_URL, - ); - expect(mockSend).toHaveBeenCalledTimes(1); - expect(response.body.message).toBe("Posted to Slack"); - expect(response.body.data).toMatch(/large_green_circle/); - expect(response.body.data).toMatch(/flow-id-369/); - expect(response.body.data).toMatch(/online/); - }); - }); - - it("returns error when Slack fails", async () => { - process.env.APP_ENVIRONMENT = "production"; - mockSend.mockRejectedValue("Fail!"); - - await post(ENDPOINT) - .query({ type: "flow-status" }) - .set({ Authorization: process.env.HASURA_PLANX_API_KEY! }) - .send(body) - .expect(500) - .then((response) => { - expect(mockSend).toHaveBeenCalledTimes(1); - expect(response.body.error).toMatch(/Failed to send/); - }); - }); - }); }); diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/index.ts b/api.planx.uk/modules/webhooks/service/sendNotification/index.ts index 1548164b5c..c35bc225cf 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/index.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/index.ts @@ -5,7 +5,6 @@ import { EmailEventData, EventData, EventType, - FlowStatusEventData, S3EventData, UniformEventData, } from "./types"; @@ -16,52 +15,38 @@ export const sendSlackNotification = async ( type: EventType, ) => { const slack = SlackNotify(process.env.SLACK_WEBHOOK_URL!); - const message = await getMessageForEventType(data, type); + let message = getMessageForEventType(data, type); - await slack.send(message); + const sessionId = getSessionIdFromEvent(data, type); + const { disability, resubmission } = + await getExemptionStatusesForSession(sessionId); + if (disability) message += " [Exempt]"; + if (resubmission) message += " [Resubmission]"; + + await slack.send(":incoming_envelope: " + message); return message; }; -const getMessageForEventType = async (data: EventData, type: EventType) => { - let message = ""; - if (type.endsWith("-submission")) { - const emoji = ":incoming_message:"; - if (type === "bops-submission") { - const { bops_id, destination_url } = data as BOPSEventData; - message = `${emoji} New BOPS submission *${bops_id}* [${destination_url}]`; - } - - if (type === "uniform-submission") { - const { submission_reference, response } = data as UniformEventData; - message = `${emoji} New Uniform submission *${submission_reference}* [${response.organisation}]`; - } - - if (type === "email-submission") { - const { request, session_id, team_slug } = data as EmailEventData; - message = `${emoji} New email submission "${request.personalisation.serviceName}" *${session_id}* [${team_slug}]`; - } - - if (type === "s3-submission") { - const { session_id, team_slug } = data as S3EventData; - message = `${emoji} New S3 + Power Automate submission *${session_id}* [${team_slug}]`; - } +const getMessageForEventType = (data: EventData, type: EventType) => { + if (type === "bops-submission") { + const { bops_id, destination_url } = data as BOPSEventData; + return `New BOPS submission *${bops_id}* [${destination_url}]`; + } - const sessionId = getSessionIdFromEvent(data, type); - if (sessionId) { - const { disability, resubmission } = - await getExemptionStatusesForSession(sessionId); - if (disability) message += " [Exempt]"; - if (resubmission) message += " [Resubmission]"; - } + if (type === "uniform-submission") { + const { submission_reference, response } = data as UniformEventData; + return `New Uniform submission *${submission_reference}* [${response.organisation}]`; } - if (type === "flow-status") { - const { id: flowId, status } = data as FlowStatusEventData; - const emoji = status === "online" ? ":large_green_circle:" : ":no_entry:"; - message = `${emoji} Flow is now *${status}* (${flowId})`; + if (type === "email-submission") { + const { request, session_id, team_slug } = data as EmailEventData; + return `New email submission "${request.personalisation.serviceName}" *${session_id}* [${team_slug}]`; } - return message; + if (type === "s3-submission") { + const { session_id, team_slug } = data as S3EventData; + return `New S3 + Power Automate submission *${session_id}* [${team_slug}]`; + } }; const getSessionIdFromEvent = (data: EventData, type: EventType) => @@ -70,7 +55,6 @@ const getSessionIdFromEvent = (data: EventData, type: EventType) => "uniform-submission": (data as UniformEventData).payload?.sessionId, "email-submission": (data as EmailEventData).session_id, "s3-submission": (data as S3EventData).session_id, - "flow-status": undefined, })[type]; const getExemptionStatusesForSession = async (sessionId: string) => { diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts b/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts index 1cc9d92b2d..0ecf85ccf5 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/schema.ts @@ -75,26 +75,9 @@ export const s3SubmissionSchema = z.object({ }), }); -export const flowStatusSchema = z.object({ - body: z.object({ - event: z.object({ - data: z.object({ - new: z.object({ - id: z.string(), - status: z.string(), - }), - }), - }), - }), - query: z.object({ - type: z.literal("flow-status"), - }), -}); - export const sendSlackNotificationSchema = z.union([ bopsSubmissionSchema, uniformSubmissionSchema, emailSubmissionSchema, s3SubmissionSchema, - flowStatusSchema, ]); diff --git a/api.planx.uk/modules/webhooks/service/sendNotification/types.ts b/api.planx.uk/modules/webhooks/service/sendNotification/types.ts index e3a2d9998f..5373cebb5f 100644 --- a/api.planx.uk/modules/webhooks/service/sendNotification/types.ts +++ b/api.planx.uk/modules/webhooks/service/sendNotification/types.ts @@ -3,7 +3,6 @@ import { ValidatedRequestHandler } from "../../../../shared/middleware/validate" import { bopsSubmissionSchema, emailSubmissionSchema, - flowStatusSchema, s3SubmissionSchema, sendSlackNotificationSchema, uniformSubmissionSchema, @@ -30,15 +29,11 @@ export type EmailEventData = EmailBody["event"]["data"]["new"]; export type S3Body = z.infer["body"]; export type S3EventData = S3Body["event"]["data"]["new"]; -export type FlowStatusBody = z.infer["body"]; -export type FlowStatusEventData = FlowStatusBody["event"]["data"]["new"]; - export type EventData = | BOPSEventData | UniformEventData | EmailEventData - | S3EventData - | FlowStatusEventData; + | S3EventData; export type SendSlackNotification = ValidatedRequestHandler< typeof sendSlackNotificationSchema, diff --git a/hasura.planx.uk/metadata/tables.yaml b/hasura.planx.uk/metadata/tables.yaml index 7ca4488d28..fd56e9f079 100644 --- a/hasura.planx.uk/metadata/tables.yaml +++ b/hasura.planx.uk/metadata/tables.yaml @@ -674,35 +674,6 @@ _eq: x-hasura-user-id - role: _eq: teamEditor - event_triggers: - - name: setup_flow_status_notifications - definition: - enable_manual: false - update: - columns: - - status - retry_conf: - interval_sec: 30 - num_retries: 1 - timeout_sec: 60 - webhook_from_env: HASURA_PLANX_API_URL - headers: - - name: authorization - value_from_env: HASURA_PLANX_API_KEY - request_transform: - body: - action: transform - template: |- - { - "id": {{$body.event.data.new.id}}, - "status": {{$body.event.data.new.status}} - } - method: POST - query_params: - type: flow-status - template_engine: Kriti - url: '{{$base_url}}/webhooks/hasura/send-slack-notification' - version: 2 - table: name: global_settings schema: public From 6c02928fbac248d7dde5f5f87f6fd0ab28aa7e6f Mon Sep 17 00:00:00 2001 From: Jo Humphrey <31373245+jamdelion@users.noreply.github.com> Date: Mon, 5 Aug 2024 17:41:25 +0100 Subject: [PATCH 4/7] refactor: Team component folder structure (#3492) --- .../components/Team/MembersTable.tsx | 86 ++++++++++++++ .../components/Team/TeamMembers.tsx | 107 +----------------- .../FlowEditor/components/Team/styles.ts | 18 +++ .../pages/FlowEditor/components/Team/types.ts | 9 ++ editor.planx.uk/src/routes/teamMembers.tsx | 6 +- 5 files changed, 117 insertions(+), 109 deletions(-) create mode 100644 editor.planx.uk/src/pages/FlowEditor/components/Team/MembersTable.tsx create mode 100644 editor.planx.uk/src/pages/FlowEditor/components/Team/styles.ts create mode 100644 editor.planx.uk/src/pages/FlowEditor/components/Team/types.ts diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Team/MembersTable.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Team/MembersTable.tsx new file mode 100644 index 0000000000..49d7ee8cdf --- /dev/null +++ b/editor.planx.uk/src/pages/FlowEditor/components/Team/MembersTable.tsx @@ -0,0 +1,86 @@ +import Chip from "@mui/material/Chip"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import React from "react"; + +import { StyledAvatar, StyledTableRow } from "./styles"; +import { TeamMember } from "./types"; + +export const MembersTable: React.FC<{ members: TeamMember[] }> = ({ + members, +}) => { + const roleLabels: Record = { + platformAdmin: "Admin", + teamEditor: "Editor", + teamViewer: "Viewer", + }; + + const getRoleLabel = (role: string) => { + return roleLabels[role] || role; + }; + + if (members.length === 0) { + return ( + + + + + No members found + + + +
+ ); + } + + return ( + + + + + + User + + + Role + + + Email + + + + + {members.map((member) => ( + + + + {member.firstName[0]} + {member.lastName[0]} + + {member.firstName} {member.lastName} + + + + + {member.email} + + ))} + +
+
+ ); +}; diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx index c48c680317..f83e876016 100644 --- a/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx +++ b/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx @@ -1,113 +1,10 @@ -import Avatar from "@mui/material/Avatar"; -import Chip from "@mui/material/Chip"; import Container from "@mui/material/Container"; -import { styled } from "@mui/material/styles"; -import Table from "@mui/material/Table"; -import TableBody from "@mui/material/TableBody"; -import TableCell from "@mui/material/TableCell"; -import TableContainer from "@mui/material/TableContainer"; -import TableHead from "@mui/material/TableHead"; -import TableRow from "@mui/material/TableRow"; import Typography from "@mui/material/Typography"; -import { Role, User } from "@opensystemslab/planx-core/types"; import React from "react"; -import { FONT_WEIGHT_SEMI_BOLD } from "theme"; import SettingsSection from "ui/editor/SettingsSection"; -const StyledAvatar = styled(Avatar)(({ theme }) => ({ - background: theme.palette.background.dark, - color: theme.palette.common.white, - fontSize: "1em", - fontWeight: FONT_WEIGHT_SEMI_BOLD, - marginRight: theme.spacing(1), -})); - -const StyledTableRow = styled(TableRow)(({ theme }) => ({ - "&:nth-of-type(even)": { - background: theme.palette.background.paper, - }, -})); - -export type TeamMember = Omit & { - role: Role; -}; - -const roleLabels: Record = { - platformAdmin: "Admin", - teamEditor: "Editor", - teamViewer: "Viewer", -}; - -interface Props { - teamMembersByRole: Record; -} - -const MembersTable: React.FC<{ members: TeamMember[] }> = ({ members }) => { - const getRoleLabel = (role: string) => { - return roleLabels[role] || role; - }; - - if (members.length === 0) { - return ( - - - - - No members found - - - -
- ); - } - - return ( - - - - - - User - - - Role - - - Email - - - - - {members.map((member) => ( - - - - {member.firstName[0]} - {member.lastName[0]} - - {member.firstName} {member.lastName} - - - - - {member.email} - - ))} - -
-
- ); -}; +import { MembersTable } from "./MembersTable"; +import { Props, TeamMember } from "./types"; export const TeamMembers: React.FC = ({ teamMembersByRole }) => { const platformAdmins = (teamMembersByRole.platformAdmin || []).filter( diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Team/styles.ts b/editor.planx.uk/src/pages/FlowEditor/components/Team/styles.ts new file mode 100644 index 0000000000..f847317646 --- /dev/null +++ b/editor.planx.uk/src/pages/FlowEditor/components/Team/styles.ts @@ -0,0 +1,18 @@ +import Avatar from "@mui/material/Avatar"; +import { styled } from "@mui/material/styles"; +import TableRow from "@mui/material/TableRow"; +import { FONT_WEIGHT_SEMI_BOLD } from "theme"; + +export const StyledAvatar = styled(Avatar)(({ theme }) => ({ + background: theme.palette.background.dark, + color: theme.palette.common.white, + fontSize: "1em", + fontWeight: FONT_WEIGHT_SEMI_BOLD, + marginRight: theme.spacing(1), +})); + +export const StyledTableRow = styled(TableRow)(({ theme }) => ({ + "&:nth-of-type(even)": { + background: theme.palette.background.paper, + }, +})); diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Team/types.ts b/editor.planx.uk/src/pages/FlowEditor/components/Team/types.ts new file mode 100644 index 0000000000..bb05972c4c --- /dev/null +++ b/editor.planx.uk/src/pages/FlowEditor/components/Team/types.ts @@ -0,0 +1,9 @@ +import { Role, User } from "@opensystemslab/planx-core/types"; + +export type TeamMember = Omit & { + role: Role; +}; + +export interface Props { + teamMembersByRole: Record; +} diff --git a/editor.planx.uk/src/routes/teamMembers.tsx b/editor.planx.uk/src/routes/teamMembers.tsx index 6c7ae7922d..331d2ab6ea 100644 --- a/editor.planx.uk/src/routes/teamMembers.tsx +++ b/editor.planx.uk/src/routes/teamMembers.tsx @@ -2,10 +2,8 @@ import { Role, User } from "@opensystemslab/planx-core/types"; import gql from "graphql-tag"; import { groupBy } from "lodash"; import { compose, mount, NotFoundError, route, withData } from "navi"; -import { - TeamMember, - TeamMembers, -} from "pages/FlowEditor/components/Team/TeamMembers"; +import { TeamMembers } from "pages/FlowEditor/components/Team/TeamMembers"; +import { TeamMember } from "pages/FlowEditor/components/Team/types"; import { useStore } from "pages/FlowEditor/lib/store"; import React from "react"; From 4c581199cd3bfdbaacc28285e57bc90a3d4fd066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dafydd=20Ll=C5=B7r=20Pearson?= Date: Tue, 6 Aug 2024 07:25:46 +0100 Subject: [PATCH 5/7] fix(e2e): Fix broken regression tests due to GovPay copy change (#3494) --- e2e/tests/ui-driven/src/pay.spec.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/e2e/tests/ui-driven/src/pay.spec.ts b/e2e/tests/ui-driven/src/pay.spec.ts index c630746073..d7e6e9b56a 100644 --- a/e2e/tests/ui-driven/src/pay.spec.ts +++ b/e2e/tests/ui-driven/src/pay.spec.ts @@ -313,10 +313,16 @@ test.describe("Gov Pay integration @regression", async () => { await expect(page.getByText("Application sent")).toBeVisible(); await expect(page.getByText(actualPaymentId)).toBeVisible(); - // try going back to the payment page + // Try going back to the GovPay payment page await page.goBack(); + // Unable to make another payment - just get a status page... await expect( - page.locator("h1").getByText("Your payment session has expired"), + page.locator("h1").getByText("Your payment was successful"), + ).toBeVisible(); + // ...with a link back to PlanX + await page.locator("a").getByText("View your payment summary").click(); + await expect( + page.locator("h1").getByText("Application sent"), ).toBeVisible(); }); }); From 907d2829e75535629b485160a98fdd68c836a46c Mon Sep 17 00:00:00 2001 From: Jessica McInchak Date: Tue, 6 Aug 2024 10:26:53 +0200 Subject: [PATCH 6/7] chore: set new `exclude_field` query param on Planning Data requests (#3496) --- .../modules/gis/service/digitalLand.ts | 7 ++-- api.planx.uk/modules/gis/service/helpers.js | 11 ------ ...tching-digital-land-gis-data.b444e1f9.json | 36 ++----------------- 3 files changed, 7 insertions(+), 47 deletions(-) diff --git a/api.planx.uk/modules/gis/service/digitalLand.ts b/api.planx.uk/modules/gis/service/digitalLand.ts index 96617f7e5a..66405763fe 100644 --- a/api.planx.uk/modules/gis/service/digitalLand.ts +++ b/api.planx.uk/modules/gis/service/digitalLand.ts @@ -5,7 +5,7 @@ import type { } from "@opensystemslab/planx-core/types"; import { gql } from "graphql-request"; import fetch from "isomorphic-fetch"; -import { addDesignatedVariable, omitGeometry } from "./helpers"; +import { addDesignatedVariable } from "./helpers"; import { baseSchema } from "./local_authorities/metadata/base"; import { $api } from "../../../client"; @@ -68,6 +68,7 @@ async function go( entries: "current", geometry: geom, geometry_relation: "intersects", + exclude_field: "geometry,point", limit: "100", // TODO handle pagination in future for large polygons & many datasets, but should be well within this limit now }; // 'dataset' param is not array[string] per docs, instead re-specify param name per unique dataset @@ -120,14 +121,14 @@ async function go( ); // because there can be many digital land datasets per planx variable, check if this key is already in our result if (key && Object.keys(formattedResult).includes(key)) { - formattedResult[key]["data"]?.push(omitGeometry(entity)); + formattedResult[key]["data"]?.push(entity); } else { if (key) { formattedResult[key] = { fn: key, value: true, text: baseSchema[key].pos, - data: [omitGeometry(entity)], + data: [entity], category: baseSchema[key].category, }; } diff --git a/api.planx.uk/modules/gis/service/helpers.js b/api.planx.uk/modules/gis/service/helpers.js index 6bc0bad8a0..914a7ad0bb 100644 --- a/api.planx.uk/modules/gis/service/helpers.js +++ b/api.planx.uk/modules/gis/service/helpers.js @@ -197,16 +197,6 @@ const getA4Subvariables = (features, articleFours, a4Key) => { return result; }; -// Filter a Digital Land entity response object, omitting the "geometry" & "point" keys if exists -const omitGeometry = (entity) => { - return Object.keys(entity) - .filter((key) => !["geometry", "point"].includes(key)) - .reduce((obj, key) => { - obj[key] = entity[key]; - return obj; - }, {}); -}; - export { setEsriGeometryType, setEsriGeometry, @@ -219,6 +209,5 @@ export { squashResultLayers, rollupResultLayers, getA4Subvariables, - omitGeometry, addDesignatedVariable, }; diff --git a/api.planx.uk/tests/nocks/fetching-digital-land-gis-data.b444e1f9.json b/api.planx.uk/tests/nocks/fetching-digital-land-gis-data.b444e1f9.json index aa30604868..ae282c02a7 100644 --- a/api.planx.uk/tests/nocks/fetching-digital-land-gis-data.b444e1f9.json +++ b/api.planx.uk/tests/nocks/fetching-digital-land-gis-data.b444e1f9.json @@ -18,8 +18,6 @@ "reference": "186731", "prefix": "article-4-direction-area", "organisation-entity": "67", - "geometry": "MULTIPOLYGON (((-1.044418 51.853527, -1.044409 51.853611, -1.045341 51.853714, -1.04643 51.853463, -1.047458 51.853753, -1.04773 51.853819, -1.047988 51.853891, -1.048093 51.853988, -1.048176 51.854045, -1.048387 51.855141, -1.048482 51.855244, -1.0492 51.855437, -1.050075 51.855626, -1.05085 51.855746, -1.051055 51.855791, -1.051528 51.855511, -1.051774 51.85538, -1.052682 51.854854, -1.054009 51.854103, -1.054979 51.853538, -1.052983 51.853015, -1.051882 51.852737, -1.050801 51.852442, -1.048585 51.851869, -1.048412 51.85194, -1.044907 51.852979, -1.044606 51.852931, -1.044455 51.853021, -1.044418 51.853527)))", - "point": "POINT (-1.049891 51.853705)", "notes": "Direction Made Under Article 4(1) To Which Article 5(4) Applies", "description": "The erection or construction of a gate, fence, wall or other means of enclosure being part of the development comprised within Class A of Part 2 of Schedule 2 to the said Order and not being development comprised within any other class." } @@ -344,9 +342,7 @@ "typology": "geography", "reference": "654", "prefix": "conservation-area", - "organisation-entity": "16", - "geometry": "MULTIPOLYGON (((1.070331 51.273678, 1.070501 51.273538, 1.070331 51.273459, 1.070242 51.273401, 1.069951 51.273283, 1.069772 51.273398, 1.069561 51.273303, 1.069858 51.27312, 1.068042 51.272367, 1.067988 51.272413, 1.067841 51.272345, 1.067883 51.272304, 1.067714 51.272215, 1.067438 51.272146, 1.066744 51.271938, 1.066803 51.271867, 1.066424 51.271729, 1.066609 51.271527, 1.066208 51.271628, 1.066008 51.27155, 1.066105 51.271459, 1.065333 51.27111, 1.065313 51.271127, 1.065275 51.27111, 1.064918 51.270918, 1.064803 51.270847, 1.064857 51.2708, 1.06442 51.270602, 1.064087 51.270471, 1.064098 51.27046, 1.063833 51.270349, 1.064156 51.270046, 1.063282 51.269643, 1.063209 51.269671, 1.062974 51.269567, 1.063619 51.26897, 1.064855 51.269498, 1.064519 51.269908, 1.064801 51.270023, 1.065094 51.270164, 1.065677 51.269658, 1.066503 51.269917, 1.06715 51.2701, 1.067406 51.2702, 1.067511 51.270218, 1.067676 51.270212, 1.067654 51.270376, 1.067657 51.270529, 1.067811 51.270553, 1.067803 51.270573, 1.068297 51.270756, 1.06829 51.270753, 1.068097 51.271033, 1.068137 51.27104, 1.068041 51.271175, 1.067803 51.271234, 1.067951 51.271484, 1.068171 51.271426, 1.068938 51.27171, 1.06889 51.27176, 1.069014 51.271819, 1.06928 51.271501, 1.06981 51.271685, 1.069436 51.272094, 1.069691 51.272169, 1.070029 51.27176, 1.07082 51.27203, 1.071043 51.272077, 1.071344 51.272155, 1.071273 51.272315, 1.071255 51.272333, 1.071055 51.272935, 1.07148 51.27298, 1.071473 51.273016, 1.071956 51.273174, 1.071933 51.27321, 1.071943 51.273214, 1.071895 51.27326, 1.07241 51.273461, 1.072511 51.273481, 1.07285 51.273608, 1.072874 51.273621, 1.072879 51.273636, 1.073067 51.273745, 1.073172 51.273797, 1.073365 51.273925, 1.073447 51.273876, 1.073733 51.274095, 1.073935 51.274, 1.074188 51.274189, 1.074505 51.274458, 1.075472 51.274241, 1.075418 51.274151, 1.076186 51.273972, 1.076235 51.274063, 1.077109 51.273869, 1.077798 51.273703, 1.077934 51.273944, 1.078245 51.274026, 1.078407 51.274245, 1.07876 51.274244, 1.078935 51.274323, 1.07909 51.274435, 1.079096 51.274431, 1.079205 51.274512, 1.079198 51.274515, 1.079215 51.274528, 1.07929 51.274489, 1.079382 51.274566, 1.079185 51.274762, 1.079757 51.274974, 1.079726 51.275006, 1.080035 51.27513, 1.080116 51.275049, 1.080832 51.2753, 1.081041 51.275109, 1.081171 51.275163, 1.081159 51.275174, 1.081183 51.275184, 1.081083 51.275279, 1.081271 51.27536, 1.081154 51.275576, 1.081494 51.275775, 1.081626 51.275842, 1.082702 51.276276, 1.083129 51.276469, 1.083599 51.276726, 1.083873 51.276909, 1.084197 51.276739, 1.085711 51.27598, 1.086395 51.275628, 1.086416 51.275609, 1.086703 51.275467, 1.087005 51.275707, 1.087084 51.275786, 1.087309 51.275977, 1.087445 51.276072, 1.087544 51.276031, 1.087669 51.276124, 1.088174 51.27587, 1.088436 51.275729, 1.088624 51.275872, 1.088667 51.275894, 1.088951 51.276138, 1.08923 51.276504, 1.089261 51.27658, 1.089382 51.276801, 1.089387 51.276852, 1.089483 51.277186, 1.089532 51.277423, 1.089698 51.277454, 1.090103 51.27755, 1.090115 51.277645, 1.090522 51.278526, 1.090564 51.278642, 1.090155 51.278696, 1.089355 51.279114, 1.089341 51.279102, 1.089238 51.27913, 1.088915 51.27916, 1.088744 51.279164, 1.088704 51.279158, 1.088644 51.279181, 1.088577 51.279112, 1.088511 51.279138, 1.088396 51.279024, 1.088342 51.279002, 1.08828 51.278997, 1.087347 51.279123, 1.087347 51.27914, 1.087291 51.279176, 1.087923 51.279794, 1.088102 51.27998, 1.088079 51.279989, 1.088191 51.280091, 1.088466 51.280371, 1.088434 51.280374, 1.088687 51.280652, 1.088812 51.280766, 1.0887 51.28085, 1.088767 51.280888, 1.089292 51.281249, 1.090365 51.282015, 1.090656 51.282164, 1.090345 51.282248, 1.090179 51.282309, 1.089934 51.282408, 1.089134 51.282754, 1.088596 51.282504, 1.088351 51.282417, 1.087294 51.281929, 1.085739 51.281229, 1.085526 51.281419, 1.08589 51.281546, 1.085836 51.28161, 1.085963 51.28166, 1.085852 51.281761, 1.085668 51.2819, 1.085359 51.281741, 1.085207 51.281857, 1.08518 51.281842, 1.085017 51.281962, 1.08485 51.282062, 1.084574 51.28225, 1.084759 51.282381, 1.084994 51.282561, 1.085263 51.28245, 1.085559 51.282709, 1.085993 51.283063, 1.086189 51.283182, 1.085966 51.283325, 1.0861 51.283397, 1.086076 51.283413, 1.086153 51.283457, 1.086165 51.28345, 1.086269 51.283514, 1.0861 51.283632, 1.086249 51.283707, 1.085778 51.284068, 1.085616 51.283982, 1.085621 51.283979, 1.085491 51.283909, 1.085465 51.283882, 1.085357 51.283825, 1.085455 51.283754, 1.085347 51.283699, 1.084974 51.28401, 1.084645 51.284271, 1.084065 51.283981, 1.083811 51.283865, 1.083537 51.283721, 1.083322 51.283882, 1.082948 51.284114, 1.083 51.284148, 1.08299 51.284158, 1.082985 51.284183, 1.082999 51.284218, 1.083086 51.284299, 1.083252 51.284484, 1.083299 51.284548, 1.08334 51.284611, 1.083414 51.284761, 1.083461 51.28484, 1.083536 51.284919, 1.083612 51.284978, 1.083557 51.285069, 1.083482 51.285146, 1.083368 51.285223, 1.0833 51.285257, 1.083202 51.285292, 1.082802 51.28537, 1.082495 51.285445, 1.08152 51.285714, 1.081708 51.285896, 1.08164 51.285917, 1.08139 51.286028, 1.081193 51.286097, 1.081429 51.286304, 1.081733 51.286546, 1.081885 51.286646, 1.081718 51.286717, 1.081779 51.286774, 1.081819 51.286829, 1.081865 51.286916, 1.081884 51.287004, 1.081847 51.287108, 1.081783 51.287213, 1.081705 51.287308, 1.081626 51.287383, 1.081226 51.287065, 1.08127 51.287045, 1.081181 51.287002, 1.081217 51.286969, 1.081078 51.286861, 1.080574 51.286393, 1.08053 51.286366, 1.080385 51.28615, 1.080621 51.286076, 1.08055 51.28599, 1.080438 51.286009, 1.080207 51.285722, 1.080535 51.28562, 1.080659 51.285617, 1.080709 51.285628, 1.080766 51.285651, 1.080964 51.285872, 1.081303 51.285722, 1.081383 51.285675, 1.081332 51.285624, 1.081 51.285201, 1.080779 51.2849, 1.080107 51.285091, 1.080052 51.285033, 1.079756 51.284617, 1.079606 51.284432, 1.079812 51.284308, 1.079703 51.284228, 1.079536 51.284125, 1.079264 51.284, 1.078796 51.283845, 1.078734 51.284134, 1.078586 51.284212, 1.078404 51.284659, 1.078232 51.285157, 1.078031 51.284952, 1.077719 51.284601, 1.077538 51.284435, 1.077514 51.284398, 1.077519 51.284281, 1.077583 51.284172, 1.078155 51.283847, 1.078095 51.283807, 1.078059 51.283829, 1.077918 51.283743, 1.078008 51.283688, 1.077942 51.283642, 1.078054 51.283572, 1.077967 51.283512, 1.07771 51.283659, 1.077471 51.283519, 1.077196 51.283374, 1.076965 51.28349, 1.076742 51.283337, 1.0769 51.283248, 1.076472 51.282866, 1.076231 51.282993, 1.075998 51.282817, 1.07626 51.282654, 1.075967 51.28249, 1.075868 51.28256, 1.075754 51.282482, 1.075727 51.282489, 1.075658 51.282529, 1.075307 51.282286, 1.075218 51.282374, 1.074955 51.282513, 1.07494 51.282502, 1.074855 51.282545, 1.074422 51.282716, 1.07401 51.282947, 1.073912 51.282963, 1.073659 51.283027, 1.073205 51.283252, 1.073251 51.283286, 1.072598 51.283587, 1.072614 51.283602, 1.072292 51.283732, 1.072543 51.283969, 1.07234 51.283983, 1.072171 51.284034, 1.072203 51.284088, 1.071881 51.284192, 1.071781 51.284212, 1.071685 51.284199, 1.071051 51.284604, 1.071018 51.284583, 1.070949 51.284503, 1.070659 51.284261, 1.070514 51.284205, 1.070394 51.284145, 1.070171 51.284075, 1.070061 51.284031, 1.069773 51.284267, 1.069587 51.28418, 1.069321 51.284095, 1.06903 51.283962, 1.069142 51.283882, 1.069067 51.283845, 1.069104 51.283786, 1.068874 51.283675, 1.068834 51.283647, 1.068611 51.283723, 1.068392 51.283527, 1.068093 51.283328, 1.068088 51.283335, 1.067857 51.283248, 1.06802 51.283043, 1.068517 51.283195, 1.068986 51.282883, 1.068843 51.28287, 1.068304 51.28272, 1.068616 51.282436, 1.068499 51.282366, 1.069673 51.281609, 1.070291 51.281608, 1.070601 51.281616, 1.070704 51.28155, 1.071185 51.281853, 1.071805 51.282208, 1.072398 51.282625, 1.072505 51.282559, 1.072609 51.282515, 1.072623 51.282524, 1.073068 51.282297, 1.073203 51.282239, 1.072872 51.281925, 1.073153 51.281813, 1.07358 51.282113, 1.07383 51.281983, 1.073725 51.281906, 1.073714 51.281905, 1.073631 51.281849, 1.073391 51.281666, 1.073244 51.281734, 1.073045 51.28154, 1.073029 51.281547, 1.072956 51.281483, 1.072918 51.281499, 1.072856 51.281494, 1.072746 51.2814, 1.073082 51.281276, 1.072896 51.281062, 1.073385 51.280889, 1.073667 51.281137, 1.074057 51.281073, 1.073144 51.280289, 1.072989 51.280192, 1.072667 51.279967, 1.072327 51.279702, 1.072248 51.279738, 1.071978 51.279495, 1.072073 51.279455, 1.072176 51.279399, 1.072439 51.279292, 1.072093 51.279066, 1.071985 51.278976, 1.071943 51.27893, 1.071867 51.278823, 1.071838 51.278769, 1.07182 51.278694, 1.07182 51.278636, 1.071787 51.27852, 1.071794 51.278497, 1.071781 51.27842, 1.071756 51.278336, 1.071723 51.278294, 1.071542 51.278135, 1.071356 51.27799, 1.071146 51.27785, 1.071048 51.277795, 1.0709 51.277675, 1.070711 51.277556, 1.070663 51.277511, 1.070513 51.277441, 1.070503 51.277427, 1.070518 51.277415, 1.070611 51.277387, 1.070685 51.277343, 1.070734 51.277328, 1.070776 51.277298, 1.070846 51.277266, 1.070901 51.277215, 1.070957 51.27719, 1.071044 51.277132, 1.071414 51.276917, 1.071765 51.276746, 1.071738 51.276646, 1.071459 51.276563, 1.071534 51.276467, 1.072297 51.276623, 1.072426 51.276407, 1.072546 51.276247, 1.072766 51.276016, 1.073069 51.275763, 1.073208 51.275666, 1.073375 51.275757, 1.073966 51.275345, 1.074007 51.275296, 1.073498 51.274893, 1.072871 51.274711, 1.072375 51.274449, 1.07233 51.274473, 1.072186 51.274385, 1.072167 51.2744, 1.072156 51.274395, 1.07212 51.274349, 1.072154 51.274331, 1.071918 51.274189, 1.071735 51.274087, 1.071721 51.274097, 1.071454 51.273949, 1.071433 51.273967, 1.070956 51.273703, 1.07068 51.273911, 1.070311 51.273695, 1.070331 51.273678)))", - "point": "POINT (1.07885 51.279043)" + "organisation-entity": "16" }, { "entry-date": "2021-11-16", @@ -358,9 +354,7 @@ "typology": "geography", "reference": "187", "prefix": "conservation-area", - "organisation-entity": "75", - "geometry": "MULTIPOLYGON (((1.070332 51.273678, 1.070501 51.273538, 1.070331 51.273459, 1.070242 51.273401, 1.069951 51.273283, 1.069772 51.273398, 1.069561 51.273303, 1.069858 51.27312, 1.068042 51.272367, 1.067988 51.272413, 1.067841 51.272345, 1.067883 51.272304, 1.067714 51.272216, 1.067438 51.272146, 1.066744 51.271938, 1.066804 51.271867, 1.066424 51.271729, 1.066609 51.271527, 1.066208 51.271628, 1.066008 51.27155, 1.066106 51.271459, 1.065333 51.27111, 1.065313 51.271127, 1.065275 51.27111, 1.064918 51.270918, 1.064803 51.270847, 1.064857 51.2708, 1.06442 51.270603, 1.064087 51.270471, 1.064098 51.270461, 1.063833 51.270349, 1.064173 51.27003, 1.064283 51.270087, 1.064329 51.270118, 1.064347 51.27014, 1.064847 51.270373, 1.065677 51.269658, 1.066503 51.269917, 1.06715 51.2701, 1.067407 51.2702, 1.067511 51.270218, 1.067676 51.270212, 1.067654 51.270376, 1.067657 51.270529, 1.067811 51.270553, 1.067803 51.270573, 1.068298 51.270756, 1.06829 51.270753, 1.068097 51.271033, 1.068137 51.27104, 1.068041 51.271175, 1.067803 51.271234, 1.067951 51.271484, 1.068172 51.271426, 1.068938 51.27171, 1.06889 51.27176, 1.069015 51.271819, 1.06928 51.271501, 1.06981 51.271685, 1.069436 51.272094, 1.069692 51.272169, 1.070029 51.27176, 1.07082 51.27203, 1.071043 51.272077, 1.071344 51.272155, 1.071273 51.272315, 1.071255 51.272333, 1.071055 51.272935, 1.071481 51.27298, 1.071473 51.273016, 1.071956 51.273175, 1.071933 51.27321, 1.071943 51.273214, 1.071895 51.27326, 1.07241 51.273461, 1.072511 51.273481, 1.07285 51.273608, 1.072874 51.273621, 1.072879 51.273636, 1.073067 51.273745, 1.073172 51.273797, 1.073365 51.273925, 1.073448 51.273876, 1.073734 51.274095, 1.073935 51.274, 1.074189 51.274189, 1.074505 51.274458, 1.075472 51.274241, 1.075418 51.274151, 1.076186 51.273972, 1.076236 51.274063, 1.077109 51.273869, 1.077798 51.273703, 1.077934 51.273944, 1.078245 51.274026, 1.078407 51.274245, 1.07876 51.274244, 1.078935 51.274323, 1.07909 51.274435, 1.079097 51.274431, 1.079205 51.274512, 1.079198 51.274515, 1.079215 51.274528, 1.07929 51.274489, 1.079382 51.274566, 1.079185 51.274762, 1.079726 51.275006, 1.080035 51.27513, 1.080117 51.275049, 1.080832 51.275301, 1.081041 51.275109, 1.081171 51.275163, 1.081159 51.275174, 1.081183 51.275184, 1.081083 51.275279, 1.081272 51.275361, 1.081154 51.275576, 1.081494 51.275775, 1.081626 51.275842, 1.082703 51.276277, 1.083129 51.276469, 1.0836 51.276726, 1.083873 51.276909, 1.084197 51.276739, 1.085712 51.27598, 1.086396 51.275628, 1.086417 51.275609, 1.086703 51.275467, 1.087005 51.275708, 1.087085 51.275786, 1.087309 51.275977, 1.087445 51.276072, 1.087544 51.276031, 1.087669 51.276124, 1.088174 51.27587, 1.088436 51.275729, 1.088625 51.275872, 1.088667 51.275894, 1.088951 51.276138, 1.08923 51.276504, 1.089262 51.27658, 1.089383 51.276801, 1.089387 51.276852, 1.089483 51.277186, 1.089532 51.277423, 1.089698 51.277454, 1.090103 51.27755, 1.090115 51.277645, 1.090522 51.278526, 1.090564 51.278642, 1.090155 51.278696, 1.089355 51.279114, 1.089341 51.279102, 1.089238 51.27913, 1.088915 51.27916, 1.088744 51.279164, 1.088704 51.279158, 1.088644 51.279181, 1.088577 51.279112, 1.088511 51.279138, 1.088396 51.279024, 1.088342 51.279002, 1.08828 51.278997, 1.087348 51.279123, 1.087347 51.27914, 1.087291 51.279176, 1.087923 51.279794, 1.088102 51.27998, 1.088079 51.279989, 1.088191 51.280091, 1.088466 51.280371, 1.088434 51.280374, 1.088687 51.280652, 1.088812 51.280766, 1.088701 51.28085, 1.088767 51.280888, 1.089293 51.281249, 1.090365 51.282015, 1.090656 51.282164, 1.090345 51.282248, 1.090179 51.282309, 1.089935 51.282408, 1.089134 51.282754, 1.088596 51.282504, 1.088351 51.282417, 1.087294 51.281929, 1.085739 51.281229, 1.085526 51.281419, 1.08589 51.281546, 1.085837 51.28161, 1.085963 51.28166, 1.085852 51.281761, 1.085669 51.2819, 1.08536 51.281741, 1.085207 51.281857, 1.08518 51.281842, 1.085017 51.281962, 1.08485 51.282062, 1.084574 51.28225, 1.08476 51.282381, 1.084994 51.282561, 1.085263 51.282451, 1.08556 51.282709, 1.085993 51.283063, 1.086189 51.283182, 1.085966 51.283325, 1.0861 51.283397, 1.086076 51.283413, 1.086153 51.283457, 1.086165 51.28345, 1.08627 51.283514, 1.0861 51.283632, 1.086249 51.283707, 1.085778 51.284068, 1.085616 51.283982, 1.085621 51.28398, 1.085491 51.283909, 1.085465 51.283882, 1.085357 51.283825, 1.085455 51.283754, 1.085347 51.283699, 1.084974 51.28401, 1.084645 51.284271, 1.084065 51.283981, 1.083811 51.283865, 1.083537 51.283721, 1.083322 51.283882, 1.082948 51.284114, 1.083001 51.284148, 1.08299 51.284158, 1.082985 51.284183, 1.082999 51.284218, 1.083087 51.284299, 1.083252 51.284484, 1.083299 51.284548, 1.083341 51.284611, 1.083414 51.284761, 1.083461 51.28484, 1.083536 51.284919, 1.083613 51.284978, 1.083557 51.285069, 1.083482 51.285146, 1.083369 51.285223, 1.0833 51.285257, 1.083202 51.285292, 1.082802 51.28537, 1.082495 51.285445, 1.08152 51.285714, 1.081708 51.285896, 1.081641 51.285917, 1.08139 51.286028, 1.081193 51.286097, 1.08143 51.286304, 1.081733 51.286546, 1.081886 51.286646, 1.081718 51.286717, 1.081779 51.286774, 1.08182 51.286829, 1.081865 51.286916, 1.081885 51.287004, 1.081847 51.287108, 1.081784 51.287213, 1.081705 51.287308, 1.081627 51.287383, 1.081227 51.287065, 1.08127 51.287045, 1.081182 51.287002, 1.081217 51.286969, 1.081078 51.286861, 1.080575 51.286393, 1.08053 51.286366, 1.080385 51.28615, 1.080621 51.286076, 1.08055 51.28599, 1.080438 51.286009, 1.080207 51.285722, 1.080535 51.28562, 1.080659 51.285617, 1.080709 51.285628, 1.080766 51.285651, 1.080965 51.285872, 1.081303 51.285722, 1.081383 51.285675, 1.081332 51.285624, 1.081001 51.285201, 1.080779 51.2849, 1.080107 51.285091, 1.080052 51.285033, 1.079756 51.284617, 1.079606 51.284432, 1.079812 51.284308, 1.079703 51.284228, 1.079536 51.284125, 1.079264 51.284, 1.078796 51.283845, 1.078734 51.284134, 1.078586 51.284212, 1.078404 51.284659, 1.078232 51.285157, 1.078032 51.284952, 1.077719 51.284601, 1.077538 51.284435, 1.077514 51.284398, 1.077519 51.284281, 1.077583 51.284172, 1.078156 51.283848, 1.078095 51.283807, 1.07806 51.283829, 1.077918 51.283743, 1.078008 51.283688, 1.077942 51.283642, 1.078054 51.283572, 1.077967 51.283512, 1.07771 51.283659, 1.077472 51.283519, 1.077196 51.283374, 1.076966 51.28349, 1.076742 51.283337, 1.0769 51.283248, 1.076473 51.282866, 1.076231 51.282993, 1.075998 51.282817, 1.076261 51.282654, 1.075968 51.28249, 1.075868 51.28256, 1.075754 51.282482, 1.075727 51.282489, 1.075658 51.282529, 1.075307 51.282286, 1.075218 51.282374, 1.074956 51.282513, 1.074941 51.282502, 1.074855 51.282545, 1.074422 51.282716, 1.07401 51.282947, 1.073913 51.282963, 1.073659 51.283028, 1.073206 51.283252, 1.073251 51.283286, 1.072598 51.283587, 1.072615 51.283602, 1.072292 51.283732, 1.072544 51.283969, 1.07234 51.283983, 1.072171 51.284034, 1.072204 51.284088, 1.071882 51.284192, 1.071781 51.284212, 1.071686 51.284199, 1.071051 51.284604, 1.071018 51.284583, 1.070949 51.284503, 1.070659 51.284261, 1.070514 51.284205, 1.070395 51.284145, 1.070171 51.284075, 1.070061 51.284031, 1.069773 51.284267, 1.069587 51.28418, 1.069322 51.284095, 1.06903 51.283962, 1.069142 51.283882, 1.069067 51.283845, 1.069105 51.283786, 1.068874 51.283675, 1.068834 51.283647, 1.068611 51.283723, 1.068393 51.283527, 1.068093 51.283328, 1.068088 51.283335, 1.067857 51.283248, 1.06802 51.283043, 1.068517 51.283195, 1.068986 51.282883, 1.068843 51.28287, 1.068304 51.28272, 1.068617 51.282436, 1.068499 51.282366, 1.069673 51.281609, 1.070291 51.281608, 1.070601 51.281616, 1.070704 51.28155, 1.071185 51.281853, 1.071805 51.282208, 1.072398 51.282625, 1.072505 51.282559, 1.072609 51.282515, 1.072623 51.282524, 1.073068 51.282297, 1.073204 51.282239, 1.072872 51.281925, 1.073153 51.281813, 1.07358 51.282113, 1.073831 51.281983, 1.073725 51.281906, 1.073714 51.281905, 1.073631 51.281849, 1.073391 51.281666, 1.073245 51.281734, 1.073045 51.28154, 1.07303 51.281547, 1.072956 51.281483, 1.072918 51.281499, 1.072856 51.281494, 1.072746 51.2814, 1.073082 51.281276, 1.072896 51.281062, 1.073385 51.280889, 1.073667 51.281137, 1.074057 51.281073, 1.073145 51.280289, 1.072989 51.280192, 1.072667 51.279967, 1.072327 51.279702, 1.072249 51.279738, 1.071978 51.279496, 1.072073 51.279455, 1.072176 51.279399, 1.072439 51.279292, 1.072093 51.279066, 1.071986 51.278976, 1.071943 51.27893, 1.071867 51.278823, 1.071838 51.278769, 1.07182 51.278694, 1.07182 51.278636, 1.071787 51.27852, 1.071794 51.278497, 1.071781 51.27842, 1.071756 51.278336, 1.071723 51.278294, 1.071542 51.278135, 1.071356 51.27799, 1.071146 51.27785, 1.071048 51.277795, 1.0709 51.277675, 1.070711 51.277556, 1.070663 51.277511, 1.070514 51.277441, 1.070503 51.277427, 1.070518 51.277415, 1.070624 51.277381, 1.070686 51.277343, 1.070734 51.277328, 1.070776 51.277298, 1.070846 51.277266, 1.070901 51.277215, 1.070957 51.27719, 1.071044 51.277132, 1.071414 51.276917, 1.071765 51.276746, 1.071738 51.276646, 1.07146 51.276563, 1.071535 51.276467, 1.072297 51.276623, 1.072426 51.276407, 1.072546 51.276247, 1.072766 51.276016, 1.07307 51.275763, 1.073209 51.275666, 1.073375 51.275757, 1.073967 51.275345, 1.074007 51.275296, 1.073498 51.274893, 1.072872 51.274711, 1.072375 51.274449, 1.07233 51.274473, 1.072186 51.274385, 1.072167 51.2744, 1.072157 51.274395, 1.072121 51.274349, 1.072154 51.274331, 1.071918 51.274189, 1.071735 51.274087, 1.071721 51.274097, 1.071455 51.273949, 1.071433 51.273967, 1.070956 51.273703, 1.070681 51.273911, 1.070311 51.273695, 1.070332 51.273678)))", - "point": "POINT (1.078965 51.279116)" + "organisation-entity": "75" }, { "entry-date": "2021-11-11", @@ -373,8 +367,6 @@ "reference": "72963", "prefix": "article-4-direction-area", "organisation-entity": "75", - "geometry": "MULTIPOLYGON (((1.079935 51.281526, 1.079922 51.281529, 1.079851 51.281378, 1.079863 51.281363, 1.080058 51.281276, 1.080211 51.281425, 1.080413 51.28134, 1.080258 51.281189, 1.080394 51.281123, 1.080472 51.281099, 1.080726 51.281324, 1.080726 51.281355, 1.080498 51.2815, 1.080451 51.281502, 1.080449 51.281516, 1.08041 51.281515, 1.080406 51.281547, 1.080304 51.281542, 1.080308 51.281509, 1.08027 51.281507, 1.080276 51.28146, 1.079935 51.281526)))", - "point": "POINT (1.080327 51.281356)", "description": "Article 4 Direction 1985", "documentation-url": "http://documents.canterbury.gov.uk/publisher/mvc/listDocuments?identifier=Conservation&uidno=DIRECTION%201985" }, @@ -389,8 +381,6 @@ "reference": "73412", "prefix": "article-4-direction-area", "organisation-entity": "75", - "geometry": "MULTIPOLYGON (((1.114786 51.278431, 1.117471 51.279956, 1.119705 51.280639, 1.12264 51.283192, 1.124714 51.284689, 1.127033 51.286089, 1.128148 51.286666, 1.128453 51.286411, 1.129188 51.286143, 1.130362 51.286, 1.13081 51.2852, 1.131351 51.285771, 1.131224 51.286022, 1.131541 51.285923, 1.133894 51.287299, 1.134397 51.287308, 1.135162 51.28749, 1.13513 51.28965, 1.136913 51.292122, 1.137779 51.293785, 1.137959 51.295895, 1.138306 51.296245, 1.14042 51.296728, 1.140411 51.297511, 1.139791 51.29751, 1.139429 51.297537, 1.139125 51.29773, 1.13817 51.298453, 1.137539 51.298672, 1.136935 51.298756, 1.132437 51.297505, 1.130899 51.297051, 1.129102 51.296469, 1.127297 51.296315, 1.126776 51.296554, 1.126254 51.297333, 1.12637 51.297442, 1.125936 51.29808, 1.125496 51.298212, 1.12545 51.298164, 1.124775 51.298466, 1.124833 51.298614, 1.124645 51.298751, 1.125393 51.299992, 1.125942 51.300527, 1.126515 51.300934, 1.126855 51.301052, 1.129199 51.302015, 1.132861 51.302695, 1.13119 51.304488, 1.13855 51.307709, 1.142221 51.308915, 1.143868 51.309427, 1.14436 51.309757, 1.150792 51.311346, 1.150391 51.311889, 1.150081 51.312056, 1.149861 51.31227, 1.150344 51.312458, 1.149381 51.313704, 1.149896 51.314039, 1.149749 51.314231, 1.149511 51.314653, 1.149198 51.314775, 1.148436 51.314776, 1.148258 51.314794, 1.147981 51.314969, 1.147457 51.315439, 1.147218 51.315707, 1.146868 51.315987, 1.146846 51.31619, 1.147059 51.316509, 1.147088 51.31677, 1.14736 51.316997, 1.148352 51.31695, 1.148406 51.318533, 1.148291 51.31948, 1.146748 51.319307, 1.14626 51.319058, 1.145955 51.318986, 1.145366 51.318975, 1.144739 51.318878, 1.144362 51.318848, 1.143263 51.318891, 1.142705 51.319026, 1.142091 51.319085, 1.141726 51.320193, 1.141686 51.320512, 1.141662 51.320825, 1.140927 51.32096, 1.139971 51.323794, 1.141477 51.324222, 1.140539 51.325784, 1.140727 51.325785, 1.140918 51.325914, 1.141009 51.326146, 1.14149 51.326301, 1.141474 51.326368, 1.140916 51.327134, 1.140171 51.327233, 1.140109 51.327377, 1.139923 51.327483, 1.139812 51.327425, 1.139644 51.327477, 1.139483 51.327615, 1.139016 51.327836, 1.138753 51.328218, 1.138484 51.328353, 1.138273 51.328392, 1.13822 51.328554, 1.137711 51.328782, 1.137656 51.328911, 1.137441 51.32891, 1.137405 51.329083, 1.135583 51.330482, 1.135017 51.33061, 1.132525 51.332498, 1.132032 51.333164, 1.131634 51.33313, 1.131296 51.333742, 1.128553 51.332695, 1.128058 51.333191, 1.125457 51.332575, 1.125203 51.333073, 1.124034 51.33289, 1.120082 51.331661, 1.119194 51.333394, 1.118861 51.334724, 1.10997 51.333043, 1.103476 51.3319, 1.101995 51.331605, 1.100743 51.331451, 1.095682 51.33078, 1.089489 51.329976, 1.087098 51.328439, 1.086599 51.328023, 1.086464 51.327758, 1.086291 51.327266, 1.086286 51.327025, 1.08636 51.326701, 1.086737 51.325612, 1.086759 51.324834, 1.086313 51.32392, 1.085884 51.323268, 1.086443 51.321724, 1.085921 51.321758, 1.085319 51.321868, 1.085084 51.321874, 1.084284 51.322083, 1.083333 51.322416, 1.082949 51.322594, 1.082411 51.322943, 1.081628 51.323313, 1.081223 51.323424, 1.080467 51.323564, 1.079902 51.323527, 1.078075 51.323634, 1.077559 51.323762, 1.077234 51.323864, 1.076707 51.323979, 1.076362 51.324095, 1.075511 51.324171, 1.075021 51.324204, 1.074672 51.324119, 1.07417 51.324132, 1.074098 51.324014, 1.0739 51.323954, 1.073515 51.323935, 1.073027 51.323775, 1.072728 51.323603, 1.072525 51.323693, 1.072414 51.323629, 1.072036 51.323585, 1.071679 51.323527, 1.071248 51.323478, 1.071152 51.32332, 1.0707 51.323341, 1.070282 51.323108, 1.070075 51.32311, 1.069124 51.322843, 1.068526 51.322499, 1.068475 51.323289, 1.068207 51.323631, 1.067827 51.324165, 1.067003 51.324945, 1.06554 51.326153, 1.064701 51.32649, 1.061533 51.328507, 1.060848 51.328954, 1.059416 51.329597, 1.058202 51.330236, 1.057534 51.330455, 1.056673 51.330455, 1.055056 51.330855, 1.054496 51.330809, 1.053624 51.330725, 1.05309 51.330591, 1.052806 51.330624, 1.052518 51.331156, 1.051948 51.331607, 1.0515 51.33194, 1.051167 51.332096, 1.051114 51.332259, 1.051042 51.332307, 1.050287 51.333231, 1.05009 51.333506, 1.048904 51.333148, 1.048241 51.333004, 1.043933 51.333089, 1.043602 51.329874, 1.043406 51.329092, 1.042159 51.329237, 1.04151 51.329186, 1.0398 51.328848, 1.037466 51.328301, 1.037879 51.326941, 1.037812 51.325931, 1.037527 51.325421, 1.03776 51.324605, 1.037388 51.324596, 1.037238 51.323454, 1.037281 51.323131, 1.037261 51.323004, 1.03715 51.322979, 1.036756 51.32299, 1.035983 51.323235, 1.035011 51.323192, 1.034543 51.323182, 1.032837 51.323429, 1.030895 51.323389, 1.02967 51.323308, 1.029058 51.323279, 1.027294 51.322766, 1.02698 51.322881, 1.026637 51.323049, 1.026363 51.322937, 1.02603 51.322752, 1.024643 51.322201, 1.024039 51.321744, 1.02347 51.321287, 1.023318 51.321156, 1.023112 51.320756, 1.022688 51.320424, 1.02255 51.319849, 1.022018 51.31939, 1.020857 51.318655, 1.020563 51.318219, 1.019573 51.317699, 1.019111 51.31762, 1.01834 51.317117, 1.017828 51.31626, 1.017036 51.316165, 1.015097 51.316757, 1.015205 51.316215, 1.014883 51.316223, 1.015891 51.314083, 1.016996 51.312885, 1.014916 51.312354, 1.014335 51.312256, 1.014182 51.312103, 1.012668 51.312007, 1.011541 51.311788, 1.01082 51.311591, 1.00977 51.311047, 1.009069 51.31075, 1.008328 51.310616, 1.007861 51.310346, 1.006524 51.309691, 1.00649 51.309174, 1.006744 51.308673, 1.007252 51.30821, 1.007382 51.308004, 1.007616 51.307728, 1.00855 51.30721, 1.009186 51.307058, 1.00924 51.306787, 1.009171 51.305732, 1.009678 51.305247, 1.010138 51.305145, 1.010319 51.304919, 1.01036 51.304712, 1.010209 51.304041, 1.011127 51.302713, 1.00449 51.288444, 1.004478 51.288265, 1.003971 51.288188, 1.004388 51.287435, 1.005942 51.283774, 1.006628 51.283967, 1.007191 51.28408, 1.008349 51.284387, 1.013883 51.283997, 1.014834 51.283226, 1.014633 51.282314, 1.014813 51.281604, 1.015208 51.281242, 1.015474 51.28093, 1.015923 51.280661, 1.01629 51.280332, 1.016501 51.280174, 1.016198 51.279372, 1.015821 51.278549, 1.015933 51.278074, 1.016744 51.276771, 1.016834 51.276499, 1.017616 51.275772, 1.017506 51.275386, 1.019032 51.275565, 1.021196 51.275757, 1.021625 51.275746, 1.02845 51.272106, 1.029831 51.271845, 1.02986 51.271192, 1.030209 51.270894, 1.031835 51.270152, 1.032973 51.26947, 1.034233 51.267908, 1.033863 51.267198, 1.033839 51.266839, 1.033841 51.266321, 1.033697 51.265763, 1.033533 51.265452, 1.035235 51.264081, 1.035963 51.264784, 1.036225 51.264955, 1.037014 51.264957, 1.039118 51.26479, 1.037252 51.262589, 1.036913 51.262351, 1.036004 51.261609, 1.035395 51.261063, 1.035071 51.260509, 1.034352 51.260126, 1.03474 51.260015, 1.035716 51.259413, 1.038336 51.260746, 1.04073 51.25935, 1.04122 51.259109, 1.041509 51.259108, 1.04138 51.25877, 1.041704 51.258661, 1.042212 51.258457, 1.043031 51.257828, 1.043277 51.257755, 1.0436 51.257284, 1.045338 51.256396, 1.045222 51.256109, 1.045371 51.254731, 1.045908 51.254717, 1.04807 51.254346, 1.056377 51.25152, 1.058347 51.250434, 1.065663 51.248246, 1.066372 51.247972, 1.067566 51.251093, 1.067584 51.252981, 1.067882 51.255416, 1.067831 51.256686, 1.068182 51.257829, 1.068135 51.258568, 1.068235 51.258992, 1.068581 51.259883, 1.068569 51.260112, 1.068398 51.26036, 1.067691 51.260892, 1.067903 51.261665, 1.068232 51.262588, 1.068691 51.263381, 1.068889 51.263945, 1.069 51.26455, 1.069015 51.26472, 1.069331 51.264658, 1.072165 51.262555, 1.077551 51.258112, 1.079148 51.257086, 1.080397 51.256408, 1.081643 51.255866, 1.083545 51.255232, 1.08451 51.254959, 1.085975 51.254658, 1.087689 51.254399, 1.089921 51.254232, 1.091896 51.254231, 1.093929 51.254408, 1.095906 51.254709, 1.099256 51.255125, 1.102514 51.255434, 1.105497 51.255557, 1.109923 51.255479, 1.112775 51.255309, 1.113732 51.255237, 1.11524 51.25511, 1.115723 51.255712, 1.117335 51.257289, 1.118276 51.257013, 1.120917 51.259887, 1.121059 51.259923, 1.121508 51.261226, 1.121709 51.261536, 1.121402 51.261769, 1.122137 51.267327, 1.121689 51.267586, 1.123538 51.269224, 1.124431 51.270414, 1.124665 51.270703, 1.125126 51.271193, 1.126108 51.271958, 1.127914 51.2732, 1.128354 51.27403, 1.128522 51.274603, 1.12871 51.275013, 1.129485 51.275723, 1.129899 51.275994, 1.130649 51.276329, 1.131083 51.276586, 1.131811 51.277257, 1.132386 51.278321, 1.119749 51.278451, 1.114786 51.278431)))", - "point": "POINT (1.076439 51.294709)", "notes": "Dated 25th February 2016", "description": "The Canterbury HMO Article 4 D", "documentation-url": "http://documents.canterbury.gov.uk/publisher/mvc/listDocuments?identifier=Conservation&uidno=CANTERBURY%20HMO%20ARTICLE%204%20D" @@ -652,8 +642,6 @@ "reference": "CAZ00000001", "prefix": "central-activities-zone", "organisation-entity": "192", - "geometry": "MULTIPOLYGON (((-0.130595 51.480157, -0.128445 51.479626, -0.12811 51.480187, -0.127951 51.480504, -0.12778 51.480951, -0.127691 51.481219, -0.127664 51.481423, -0.12739 51.481414, -0.127281 51.481422, -0.126004 51.481554, -0.125825 51.481564, -0.124813 51.481602, -0.124706 51.481594, -0.124553 51.481547, -0.124457 51.481906, -0.124385 51.482126, -0.124341 51.482217, -0.124213 51.482394, -0.124163 51.482449, -0.123962 51.482616, -0.123776 51.482721, -0.123416 51.482997, -0.123298 51.483125, -0.123212 51.483256, -0.12317 51.483375, -0.123066 51.484507, -0.122633 51.485048, -0.122282 51.485054, -0.122283 51.485062, -0.121391 51.485111, -0.121412 51.485258, -0.121026 51.485274, -0.121045 51.485256, -0.120712 51.485281, -0.12071 51.485273, -0.120618 51.485277, -0.120597 51.485156, -0.120317 51.48517, -0.120077 51.48539, -0.118356 51.484682, -0.118457 51.484932, -0.117857 51.485024, -0.117911 51.485103, -0.118132 51.485603, -0.118272 51.485579, -0.118287 51.485616, -0.118261 51.48562, -0.118305 51.485721, -0.118338 51.485716, -0.118354 51.485752, -0.118347 51.485753, -0.11836 51.485783, -0.118103 51.485828, -0.118127 51.485879, -0.118249 51.485858, -0.11838 51.486166, -0.118217 51.486192, -0.118204 51.486182, -0.11819 51.48619, -0.118213 51.486281, -0.118321 51.486557, -0.119168 51.486437, -0.119198 51.486532, -0.11936 51.487839, -0.119367 51.487944, -0.119356 51.488066, -0.119205 51.488456, -0.119721 51.488513, -0.119173 51.489868, -0.118695 51.489775, -0.118292 51.490835, -0.117989 51.491402, -0.118103 51.491455, -0.118383 51.491548, -0.119275 51.491889, -0.119608 51.491984, -0.119631 51.491997, -0.119572 51.492032, -0.119585 51.492034, -0.119569 51.492065, -0.119402 51.492155, -0.119339 51.492206, -0.119225 51.492275, -0.119246 51.49229, -0.11893 51.492489, -0.118941 51.492499, -0.118749 51.492629, -0.117797 51.493409, -0.117497 51.493692, -0.117058 51.494178, -0.116899 51.494374, -0.116566 51.494811, -0.116315 51.495179, -0.116324 51.495181, -0.116309 51.495204, -0.116294 51.495207, -0.116217 51.495321, -0.116216 51.495331, -0.114257 51.495815, -0.112581 51.496211, -0.111464 51.496459, -0.11087 51.496624, -0.110257 51.496763, -0.110324 51.496869, -0.109639 51.498088, -0.109589 51.498195, -0.109501 51.498434, -0.109065 51.499159, -0.108652 51.499809, -0.108307 51.500385, -0.108249 51.500464, -0.108164 51.500549, -0.106688 51.501671, -0.106474 51.501568, -0.106178 51.501794, -0.10609 51.501894, -0.105915 51.502031, -0.1061 51.502115, -0.105989 51.502199, -0.106006 51.502242, -0.106078 51.502524, -0.106217 51.502497, -0.106758 51.50221, -0.107399 51.503044, -0.106411 51.50338, -0.106529 51.50364, -0.10658 51.503894, -0.106603 51.504045, -0.106612 51.504166, -0.106605 51.504224, -0.106589 51.504275, -0.106456 51.504518, -0.106387 51.504725, -0.106483 51.505051, -0.106542 51.505206, -0.106656 51.505433, -0.107336 51.507072, -0.107987 51.506963, -0.108166 51.506921, -0.108213 51.506974, -0.108451 51.507572, -0.108576 51.507806, -0.108702 51.507766, -0.108866 51.508223, -0.109149 51.509875, -0.111138 51.509794, -0.112209 51.50971, -0.112635 51.509665, -0.113378 51.509562, -0.11379 51.509513, -0.11468 51.509362, -0.1151 51.50928, -0.11547 51.509195, -0.115836 51.509097, -0.116114 51.50901, -0.117077 51.508653, -0.117652 51.508456, -0.117788 51.508401, -0.118067 51.50825, -0.118321 51.50808, -0.119047 51.507558, -0.119219 51.507416, -0.119604 51.507072, -0.119728 51.506953, -0.119902 51.506763, -0.120664 51.505862, -0.120731 51.505761, -0.120788 51.505654, -0.121087 51.504892, -0.121175 51.504525, -0.121232 51.504238, -0.121266 51.504001, -0.121783 51.500932, -0.121821 51.50061, -0.121871 51.500295, -0.122073 51.499371, -0.122215 51.49847, -0.122294 51.4979, -0.122346 51.49735, -0.122363 51.497125, -0.122367 51.496763, -0.122377 51.496642, -0.122449 51.496235, -0.122522 51.495747, -0.122713 51.49491, -0.122779 51.49471, -0.122943 51.493865, -0.123052 51.49353, -0.123427 51.492726, -0.123544 51.492545, -0.12371 51.492374, -0.123746 51.492326, -0.12379 51.492247, -0.123845 51.492122, -0.123932 51.491842, -0.123943 51.49173, -0.123924 51.491459, -0.123994 51.49124, -0.124039 51.491163, -0.124517 51.490484, -0.124762 51.49017, -0.125134 51.489753, -0.126434 51.488337, -0.126675 51.488062, -0.12713 51.487643, -0.127507 51.487351, -0.127992 51.487005, -0.128391 51.486645, -0.128575 51.486511, -0.129481 51.485893, -0.128444 51.485065, -0.128147 51.484717, -0.127638 51.484703, -0.12735 51.484647, -0.126302 51.484467, -0.126454 51.484325, -0.126579 51.48418, -0.126959 51.483722, -0.12705 51.483576, -0.127208 51.483101, -0.127479 51.482011, -0.127729 51.481942, -0.128137 51.481813, -0.12898 51.481528, -0.129885 51.481194, -0.129883 51.481188, -0.129961 51.481166, -0.129997 51.481128, -0.129927 51.481036, -0.129993 51.480981, -0.13004 51.480915, -0.130179 51.480674, -0.130235 51.48062, -0.130273 51.480601, -0.130309 51.480593, -0.130307 51.480581, -0.13034 51.480568, -0.130595 51.480157)))", - "point": "POINT (-0.117395 51.497686)", "notes": "Central London Area - part of the Borough that lies within the historic central core of London and is dominated by activities of London-wide, national and international significance. UDP policies aim" }, { @@ -666,9 +654,7 @@ "typology": "geography", "reference": "CA57", "prefix": "conservation-area", - "organisation-entity": "192", - "geometry": "MULTIPOLYGON (((-0.121349 51.493139, -0.121135 51.493705, -0.120982 51.494035, -0.120748 51.494071, -0.120371 51.494279, -0.120351 51.494281, -0.120725 51.494572, -0.120832 51.494792, -0.120855 51.494983, -0.120714 51.495418, -0.120487 51.495918, -0.119831 51.496895, -0.119761 51.497046, -0.119476 51.497362, -0.119089 51.497596, -0.118439 51.497864, -0.117822 51.498145, -0.117443 51.498406, -0.117279 51.498569, -0.117165 51.498718, -0.117076 51.498854, -0.117035 51.498928, -0.116964 51.499184, -0.116919 51.499379, -0.116753 51.500288, -0.116996 51.500471, -0.11727 51.500622, -0.117496 51.500737, -0.121792 51.500854, -0.122925 51.493963, -0.123053 51.49353, -0.123427 51.492726, -0.123813 51.492198, -0.12391 51.491915, -0.123941 51.491678, -0.123923 51.491491, -0.124006 51.491215, -0.124715 51.490229, -0.1255 51.489354, -0.126435 51.488337, -0.126641 51.4881, -0.126896 51.487853, -0.127248 51.487551, -0.127645 51.487255, -0.12832 51.486706, -0.129059 51.486162, -0.129379 51.485937, -0.128787 51.485361, -0.128336 51.484985, -0.128227 51.48505, -0.128158 51.485111, -0.128076 51.485153, -0.127991 51.485158, -0.127992 51.48518, -0.127934 51.485169, -0.127913 51.485234, -0.127852 51.485205, -0.127784 51.485295, -0.127739 51.485266, -0.12766 51.485344, -0.127648 51.485337, -0.127519 51.48543, -0.127204 51.485618, -0.12716 51.485594, -0.127066 51.485683, -0.127032 51.485685, -0.126984 51.485738, -0.126112 51.486361, -0.125636 51.486731, -0.12541 51.486718, -0.125211 51.486925, -0.123685 51.486541, -0.12356 51.486741, -0.123052 51.486717, -0.122127 51.486692, -0.122114 51.487245, -0.122138 51.488019, -0.122131 51.48874, -0.121707 51.488702, -0.120737 51.488596, -0.120649 51.488902, -0.120546 51.489189, -0.119514 51.489011, -0.119436 51.489201, -0.119725 51.489246, -0.119654 51.489385, -0.119718 51.489409, -0.119577 51.489558, -0.11994 51.489697, -0.119801 51.489832, -0.119789 51.489827, -0.119695 51.489951, -0.120033 51.490031, -0.120275 51.489703, -0.120399 51.489513, -0.121904 51.489714, -0.121735 51.489976, -0.120831 51.490821, -0.119715 51.49054, -0.119232 51.491233, -0.11896 51.491578, -0.118437 51.491406, -0.118589 51.491286, -0.118191 51.491136, -0.117936 51.491383, -0.118709 51.491686, -0.117936 51.492745, -0.117674 51.492976, -0.117384 51.492854, -0.117155 51.493036, -0.117077 51.493109, -0.116617 51.493579, -0.117421 51.493744, -0.118744 51.492658, -0.119949 51.492859, -0.120246 51.492922, -0.120398 51.49297, -0.120239 51.493107, -0.120361 51.493124, -0.120639 51.493201, -0.120693 51.493033, -0.121349 51.493139), (-0.122491 51.489829, -0.122776 51.489873, -0.122651 51.490236, -0.122361 51.490928, -0.122116 51.49108, -0.122004 51.491162, -0.121857 51.491283, -0.121743 51.491394, -0.121634 51.491588, -0.121612 51.491666, -0.121575 51.491859, -0.121543 51.491958, -0.121422 51.492217, -0.121343 51.492354, -0.120915 51.492256, -0.119799 51.492026, -0.119677 51.491971, -0.12032 51.491588, -0.120553 51.491429, -0.121112 51.491083, -0.121266 51.49097, -0.121378 51.49088, -0.121508 51.490759, -0.121634 51.490676, -0.122336 51.489796, -0.122491 51.489829), (-0.122609 51.488976, -0.122626 51.488836, -0.122895 51.488865, -0.12288 51.489096, -0.122866 51.48918, -0.122764 51.489524, -0.122473 51.489495, -0.122562 51.48924, -0.122609 51.488976)))", - "point": "POINT (-0.12205 51.493083)" + "organisation-entity": "192" }, { "entry-date": "2021-11-23", @@ -681,8 +667,6 @@ "reference": "4/38", "prefix": "listed-building-outline", "organisation-entity": "192", - "geometry": "MULTIPOLYGON (((-0.119585 51.492034, -0.119569 51.492065, -0.11939 51.492164, -0.119409 51.492204, -0.12047 51.492409, -0.120465 51.49242, -0.120554 51.492439, -0.120754 51.49251, -0.120862 51.492391, -0.12087 51.492394, -0.12093 51.492328, -0.120915 51.492299, -0.11981 51.492079, -0.119785 51.49208, -0.119585 51.492034)))", - "point": "POINT (-0.120184 51.492258)", "listed-building-grade": "II" }, { @@ -696,8 +680,6 @@ "reference": "13", "prefix": "article-4-direction-area", "organisation-entity": "192", - "geometry": "MULTIPOLYGON (((-0.119585 51.492034, -0.119537 51.492132, -0.119408 51.492204, -0.12047 51.492409, -0.120465 51.49242, -0.120554 51.492439, -0.120755 51.492509, -0.120862 51.492391, -0.12087 51.492394, -0.12093 51.492328, -0.120915 51.492299, -0.120458 51.49221, -0.120462 51.492201, -0.120382 51.492184, -0.120376 51.492194, -0.11981 51.492079, -0.119785 51.49208, -0.119585 51.492034)))", - "point": "POINT (-0.120203 51.492261)", "notes": "KIBA" } ], @@ -905,8 +887,6 @@ "reference": "CAZ00000002", "prefix": "central-activities-zone", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.111183 51.496539, -0.111174 51.496519, -0.111417 51.496449, -0.110948 51.495578, -0.110932 51.4955, -0.110855 51.495459, -0.110695 51.495425, -0.110451 51.495349, -0.107091 51.49415, -0.106603 51.493982, -0.105809 51.493737, -0.105538 51.49366, -0.105217 51.493587, -0.104894 51.493528, -0.104853 51.493527, -0.104845 51.493508, -0.104809 51.493505, -0.104674 51.493072, -0.104641 51.493021, -0.104519 51.49293, -0.10441 51.492763, -0.104375 51.492731, -0.10408 51.492249, -0.103856 51.491966, -0.103725 51.492011, -0.103705 51.491995, -0.103687 51.491998, -0.103642 51.491946, -0.103547 51.491872, -0.103477 51.491826, -0.103313 51.491749, -0.103349 51.491713, -0.103047 51.491523, -0.103371 51.491321, -0.103138 51.49117, -0.103166 51.491125, -0.103227 51.491058, -0.10324 51.491023, -0.103775 51.490461, -0.102602 51.489867, -0.102176 51.489661, -0.101525 51.489307, -0.101325 51.489479, -0.10069 51.489661, -0.099496 51.49004, -0.099127 51.489636, -0.09862 51.489055, -0.098315 51.488725, -0.097763 51.488993, -0.097212 51.489231, -0.096467 51.489508, -0.093433 51.490478, -0.092486 51.490722, -0.090737 51.491218, -0.090619 51.49127, -0.090336 51.491109, -0.090151 51.491142, -0.090102 51.491159, -0.090028 51.491339, -0.089976 51.49141, -0.089238 51.491278, -0.089153 51.491469, -0.088919 51.491513, -0.089035 51.491757, -0.088605 51.491858, -0.088232 51.492033, -0.087261 51.492391, -0.086607 51.492778, -0.085289 51.493582, -0.084893 51.493805, -0.085167 51.493942, -0.085238 51.494014, -0.085142 51.494137, -0.08508 51.494237, -0.085016 51.49437, -0.084824 51.494687, -0.084234 51.495036, -0.083448 51.495546, -0.082932 51.495961, -0.082757 51.496125, -0.08258 51.496274, -0.082406 51.496387, -0.082214 51.496501, -0.082006 51.496607, -0.081793 51.496695, -0.079951 51.497541, -0.079851 51.497639, -0.079766 51.497705, -0.078939 51.499464, -0.078569 51.500217, -0.078331 51.500816, -0.078124 51.501231, -0.07607 51.500158, -0.07473 51.500521, -0.073449 51.500291, -0.072766 51.500182, -0.072457 51.500477, -0.071722 51.500865, -0.071551 51.501013, -0.070656 51.501744, -0.069217 51.503414, -0.069842 51.503605, -0.070696 51.503885, -0.070912 51.50398, -0.071823 51.504424, -0.072799 51.504822, -0.07331 51.505, -0.074105 51.505222, -0.07439 51.505289, -0.07484 51.505376, -0.07507 51.505429, -0.075864 51.505648, -0.077848 51.506219, -0.07944 51.506639, -0.080116 51.506856, -0.080535 51.506953, -0.081535 51.507141, -0.082903 51.507348, -0.083868 51.507474, -0.084459 51.507578, -0.084946 51.507674, -0.086356 51.507776, -0.087778 51.507889, -0.090472 51.508189, -0.092122 51.50839, -0.093028 51.508623, -0.093869 51.508861, -0.094137 51.508929, -0.095683 51.509271, -0.096169 51.509354, -0.096638 51.509421, -0.097294 51.509495, -0.098775 51.509627, -0.101135 51.509792, -0.102682 51.509823, -0.10416 51.509868, -0.104168 51.509652, -0.104115 51.50965, -0.10407 51.509639, -0.104045 51.509623, -0.104075 51.509607, -0.104135 51.509592, -0.104174 51.509592, -0.104181 51.50912, -0.104089 51.509097, -0.10408 51.509085, -0.104124 51.509064, -0.104185 51.509059, -0.104198 51.508632, -0.104169 51.508631, -0.104168 51.50861, -0.104145 51.508598, -0.104147 51.508545, -0.104179 51.508535, -0.104177 51.508519, -0.1042 51.508519, -0.104206 51.508421, -0.104684 51.508405, -0.104678 51.508525, -0.104696 51.508525, -0.104696 51.508543, -0.104721 51.508557, -0.104717 51.508604, -0.104699 51.508616, -0.104699 51.508634, -0.104673 51.508633, -0.104652 51.50907, -0.104713 51.509078, -0.104763 51.5091, -0.104709 51.50912, -0.104655 51.509128, -0.104635 51.5096, -0.104694 51.509606, -0.104753 51.50963, -0.104703 51.509653, -0.104634 51.50966, -0.104625 51.509869, -0.10682 51.509909, -0.108754 51.50989, -0.109174 51.509874, -0.10889 51.508316, -0.108866 51.50822, -0.108713 51.507765, -0.108619 51.507794, -0.108592 51.507794, -0.108422 51.507456, -0.108268 51.50706, -0.108213 51.506977, -0.108165 51.506922, -0.10795 51.50697, -0.107339 51.507072, -0.106683 51.505513, -0.106522 51.50516, -0.106441 51.50492, -0.1064 51.50476, -0.106401 51.504697, -0.106456 51.50452, -0.106589 51.504277, -0.10661 51.504199, -0.106611 51.504136, -0.10658 51.503896, -0.106529 51.503642, -0.106404 51.503366, -0.106579 51.503299, -0.106936 51.503178, -0.107393 51.503035, -0.106758 51.50221, -0.106218 51.502497, -0.106078 51.502524, -0.106031 51.502333, -0.10599 51.502199, -0.106104 51.502113, -0.105917 51.502033, -0.106093 51.501895, -0.106182 51.501795, -0.106474 51.501571, -0.106621 51.501638, -0.1067 51.501657, -0.107605 51.500975, -0.108164 51.500549, -0.108218 51.500501, -0.108308 51.500385, -0.108652 51.499809, -0.109066 51.499158, -0.109501 51.498434, -0.109589 51.498195, -0.109639 51.498088, -0.110324 51.496869, -0.110257 51.496763, -0.11087 51.496624, -0.111183 51.496539)))", - "point": "POINT (-0.093382 51.500427)", "notes": "P2 New family homes; P29 Office and business development; P30 Affordable workspace" }, { @@ -920,8 +900,6 @@ "reference": "Central Activities Zone", "prefix": "article-4-direction-area", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.111183 51.496539, -0.111174 51.496519, -0.111418 51.496448, -0.110948 51.495578, -0.110932 51.4955, -0.110855 51.495459, -0.110695 51.495425, -0.110452 51.495348, -0.107091 51.494149, -0.106603 51.493982, -0.105809 51.493736, -0.105538 51.49366, -0.105217 51.493587, -0.104894 51.493529, -0.104852 51.493528, -0.104845 51.493508, -0.104808 51.493505, -0.104674 51.493072, -0.104641 51.493022, -0.104519 51.492931, -0.10441 51.492763, -0.104375 51.492732, -0.10408 51.49225, -0.103855 51.491966, -0.103725 51.492011, -0.103704 51.491995, -0.103687 51.491999, -0.103642 51.491947, -0.103547 51.491872, -0.103476 51.491826, -0.103312 51.491749, -0.103348 51.491714, -0.103047 51.491523, -0.10337 51.491322, -0.103138 51.49117, -0.103165 51.491125, -0.103226 51.491059, -0.10324 51.491023, -0.103774 51.490461, -0.102602 51.489867, -0.102176 51.489661, -0.101524 51.489307, -0.101324 51.489479, -0.10069 51.489661, -0.099496 51.49004, -0.099127 51.489636, -0.09862 51.489055, -0.098315 51.488725, -0.097763 51.488993, -0.097213 51.489231, -0.096467 51.489508, -0.093433 51.490478, -0.092486 51.490722, -0.090738 51.491218, -0.09062 51.49127, -0.090337 51.491109, -0.090152 51.491142, -0.090103 51.491159, -0.090028 51.491339, -0.089976 51.49141, -0.089239 51.491278, -0.089153 51.491469, -0.08892 51.491513, -0.089035 51.491757, -0.088606 51.491858, -0.088232 51.492033, -0.087261 51.492391, -0.086607 51.492778, -0.085289 51.493582, -0.084893 51.493805, -0.085167 51.493942, -0.085238 51.494014, -0.085142 51.494137, -0.08508 51.494238, -0.085016 51.494371, -0.084824 51.494687, -0.084234 51.495036, -0.083447 51.495546, -0.082932 51.495962, -0.082756 51.496125, -0.082581 51.496274, -0.082406 51.496387, -0.082214 51.496501, -0.082006 51.496608, -0.081794 51.496695, -0.079951 51.497542, -0.079851 51.497639, -0.079766 51.497706, -0.078939 51.499463, -0.078569 51.500217, -0.078331 51.500816, -0.078124 51.501231, -0.07607 51.500157, -0.074729 51.50052, -0.073449 51.500291, -0.072766 51.500182, -0.072457 51.500476, -0.071722 51.500864, -0.071551 51.501013, -0.070656 51.501744, -0.069217 51.503414, -0.069842 51.503605, -0.070696 51.503885, -0.070912 51.50398, -0.071615 51.504327, -0.071872 51.504445, -0.0728 51.504822, -0.07331 51.505, -0.074105 51.505222, -0.074389 51.505289, -0.074839 51.505376, -0.075069 51.505429, -0.075707 51.505604, -0.077862 51.506223, -0.07944 51.50664, -0.080116 51.506856, -0.080535 51.506953, -0.081515 51.507138, -0.082903 51.507348, -0.083868 51.507475, -0.08446 51.507579, -0.084947 51.507675, -0.086632 51.507797, -0.087944 51.507905, -0.090472 51.508189, -0.092122 51.50839, -0.093028 51.508622, -0.093999 51.508896, -0.094137 51.508929, -0.095683 51.509271, -0.096481 51.509399, -0.09713 51.509479, -0.098593 51.509612, -0.099394 51.509675, -0.101171 51.509794, -0.102682 51.509823, -0.10416 51.509868, -0.104169 51.509652, -0.104115 51.50965, -0.104071 51.509639, -0.104045 51.509623, -0.104076 51.509607, -0.104135 51.509592, -0.104174 51.509592, -0.104181 51.50912, -0.10409 51.509097, -0.104081 51.509085, -0.104124 51.509064, -0.104185 51.509058, -0.104198 51.508632, -0.104169 51.508631, -0.104169 51.50861, -0.104145 51.508598, -0.104148 51.508545, -0.104179 51.508535, -0.104177 51.508519, -0.104201 51.508519, -0.104206 51.508421, -0.104685 51.508405, -0.104678 51.508525, -0.104696 51.508525, -0.104696 51.508543, -0.104721 51.508557, -0.104717 51.508604, -0.1047 51.508616, -0.104699 51.508634, -0.104674 51.508633, -0.104652 51.50907, -0.104714 51.509078, -0.104763 51.5091, -0.10471 51.50912, -0.104655 51.509128, -0.104635 51.5096, -0.104695 51.509606, -0.104753 51.50963, -0.10469 51.509657, -0.104634 51.50966, -0.104625 51.509869, -0.10682 51.509909, -0.108827 51.509889, -0.109174 51.509874, -0.10889 51.508316, -0.108851 51.508176, -0.108713 51.507765, -0.108618 51.507794, -0.108592 51.507794, -0.108422 51.507456, -0.108334 51.507245, -0.108268 51.50706, -0.108213 51.506976, -0.108165 51.506922, -0.10795 51.50697, -0.107339 51.507072, -0.106683 51.505513, -0.106522 51.505159, -0.10644 51.504919, -0.106399 51.504759, -0.106401 51.504697, -0.106455 51.50452, -0.106598 51.504253, -0.10661 51.504198, -0.106611 51.504135, -0.106588 51.503944, -0.106529 51.503643, -0.106403 51.503367, -0.106579 51.503299, -0.106936 51.503179, -0.107393 51.503036, -0.106758 51.50221, -0.106217 51.502497, -0.106078 51.502525, -0.106031 51.502333, -0.105989 51.5022, -0.106103 51.502113, -0.105917 51.502034, -0.106093 51.501896, -0.106153 51.50182, -0.106182 51.501795, -0.106474 51.501571, -0.10662 51.501638, -0.1067 51.501658, -0.107605 51.500976, -0.108218 51.500501, -0.108308 51.500385, -0.108652 51.499809, -0.109066 51.499158, -0.109505 51.498427, -0.109589 51.498195, -0.109639 51.498088, -0.110325 51.496869, -0.110258 51.496763, -0.11087 51.496624, -0.111183 51.496539)))", - "point": "POINT (-0.093382 51.500427)", "notes": "https://www.southwark.gov.uk/planning-and-building-control/planning-policy-and-transport-policy/article-4-directions?chapter=8", "description": "Change of use from offices to dwelling houses is restricted" }, @@ -936,8 +914,6 @@ "reference": "Central Activities Zone", "prefix": "article-4-direction-area", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.111183 51.496539, -0.111174 51.496519, -0.111417 51.496449, -0.110948 51.495578, -0.110932 51.4955, -0.110854 51.495459, -0.110694 51.495425, -0.110451 51.495349, -0.107091 51.49415, -0.106603 51.493982, -0.105809 51.493737, -0.105538 51.493661, -0.105217 51.493587, -0.104894 51.493528, -0.104853 51.493527, -0.104845 51.493508, -0.104808 51.493505, -0.104674 51.493072, -0.104641 51.493021, -0.104519 51.49293, -0.10441 51.492763, -0.104375 51.492731, -0.10408 51.492249, -0.103855 51.491966, -0.103725 51.492011, -0.103704 51.491995, -0.103687 51.491998, -0.103642 51.491946, -0.103547 51.491872, -0.103477 51.491826, -0.103312 51.491749, -0.103348 51.491713, -0.103047 51.491523, -0.10337 51.491321, -0.103138 51.49117, -0.103166 51.491125, -0.103226 51.491058, -0.10324 51.491023, -0.103774 51.490461, -0.102602 51.489867, -0.102176 51.489661, -0.101525 51.489307, -0.101325 51.489479, -0.100689 51.489661, -0.099496 51.49004, -0.099126 51.489636, -0.098619 51.489055, -0.098315 51.488725, -0.097763 51.488993, -0.097212 51.489231, -0.096467 51.489508, -0.093433 51.490478, -0.092486 51.490722, -0.090737 51.491218, -0.090619 51.49127, -0.090336 51.491109, -0.090151 51.491142, -0.090102 51.491159, -0.090027 51.491339, -0.089976 51.49141, -0.089238 51.491278, -0.089153 51.491469, -0.088919 51.491513, -0.089034 51.491757, -0.088605 51.491858, -0.088231 51.492033, -0.08726 51.492391, -0.086607 51.492778, -0.085289 51.493582, -0.084893 51.493805, -0.085167 51.493942, -0.085238 51.494014, -0.085142 51.494137, -0.08508 51.494237, -0.085016 51.49437, -0.084824 51.494687, -0.084234 51.495036, -0.083448 51.495546, -0.082932 51.495961, -0.082756 51.496125, -0.08258 51.496274, -0.082405 51.496387, -0.082214 51.496501, -0.082006 51.496607, -0.081793 51.496695, -0.079951 51.497541, -0.079851 51.497639, -0.079766 51.497705, -0.078939 51.499464, -0.078569 51.500217, -0.078331 51.500816, -0.078124 51.501231, -0.07607 51.500158, -0.07473 51.500521, -0.073449 51.500291, -0.072765 51.500182, -0.072457 51.500477, -0.071722 51.500865, -0.071551 51.501013, -0.070655 51.501744, -0.069216 51.503414, -0.069842 51.503605, -0.070695 51.503885, -0.070912 51.50398, -0.071823 51.504424, -0.072799 51.504822, -0.073309 51.505, -0.074105 51.505222, -0.074389 51.505289, -0.074839 51.505376, -0.075069 51.505429, -0.075864 51.505648, -0.077847 51.506219, -0.079439 51.506639, -0.080115 51.506856, -0.080535 51.506953, -0.081535 51.507141, -0.082903 51.507348, -0.083868 51.507474, -0.084459 51.507578, -0.084946 51.507674, -0.086356 51.507776, -0.087881 51.5079, -0.090472 51.50819, -0.092121 51.50839, -0.093028 51.508623, -0.093869 51.508861, -0.094136 51.508929, -0.095682 51.509271, -0.096169 51.509354, -0.096638 51.509421, -0.097294 51.509495, -0.098775 51.509627, -0.099393 51.509675, -0.101134 51.509792, -0.102682 51.509823, -0.10416 51.509868, -0.104168 51.509652, -0.104115 51.509651, -0.10407 51.509639, -0.104045 51.509623, -0.104075 51.509607, -0.104135 51.509592, -0.104174 51.509592, -0.10418 51.50912, -0.104089 51.509097, -0.10408 51.509085, -0.104124 51.509064, -0.104184 51.509059, -0.104198 51.508632, -0.104169 51.508631, -0.104168 51.50861, -0.104144 51.508598, -0.104147 51.508545, -0.104179 51.508535, -0.104176 51.508519, -0.1042 51.508519, -0.104206 51.508421, -0.104684 51.508405, -0.104678 51.508525, -0.104696 51.508525, -0.104696 51.508543, -0.10472 51.508557, -0.104717 51.508604, -0.104699 51.508616, -0.104698 51.508634, -0.104673 51.508634, -0.104652 51.50907, -0.104713 51.509078, -0.104763 51.5091, -0.104709 51.50912, -0.104655 51.509128, -0.104634 51.5096, -0.104694 51.509606, -0.104753 51.50963, -0.104703 51.509653, -0.104634 51.50966, -0.104625 51.509869, -0.10682 51.509909, -0.108754 51.50989, -0.109174 51.509874, -0.10889 51.508316, -0.108865 51.50822, -0.108713 51.507765, -0.108618 51.507794, -0.108592 51.507794, -0.108422 51.507456, -0.108334 51.507245, -0.108268 51.50706, -0.108213 51.506977, -0.108165 51.506922, -0.10795 51.50697, -0.107339 51.507072, -0.106683 51.505513, -0.106522 51.50516, -0.10644 51.50492, -0.106399 51.50476, -0.106401 51.504697, -0.106456 51.50452, -0.106589 51.504277, -0.10661 51.504199, -0.106611 51.504136, -0.10658 51.503896, -0.106529 51.503642, -0.106403 51.503366, -0.106579 51.503299, -0.106936 51.503178, -0.107393 51.503035, -0.106758 51.50221, -0.106218 51.502497, -0.106078 51.502524, -0.106006 51.502242, -0.105989 51.502199, -0.106104 51.502113, -0.105917 51.502033, -0.106093 51.501895, -0.106182 51.501795, -0.106474 51.501571, -0.10662 51.501638, -0.1067 51.501657, -0.107605 51.500975, -0.108164 51.500549, -0.108217 51.500501, -0.108308 51.500385, -0.108652 51.499809, -0.109066 51.499158, -0.109501 51.498434, -0.109589 51.498195, -0.109639 51.498088, -0.110324 51.496869, -0.110257 51.496763, -0.11087 51.496624, -0.111183 51.496539)))", - "point": "POINT (-0.093382 51.500427)", "notes": "http://www.southwark.gov.uk/planning-and-building-control/planning-policy-and-transport-policy/article-4-directions", "description": "Demolition of commercial buildings and construction of new dwellinghouses is restricted" }, @@ -952,8 +928,6 @@ "reference": " London Bridge Health Cluster", "prefix": "article-4-direction-area", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.085387 51.503392, -0.085487 51.503458, -0.08612 51.503818, -0.086194 51.503876, -0.086447 51.504022, -0.087108 51.504267, -0.087316 51.504305, -0.087695 51.504433, -0.087708 51.504447, -0.087796 51.504479, -0.08786 51.504514, -0.088168 51.504644, -0.088266 51.504539, -0.088293 51.504535, -0.088308 51.50452, -0.088328 51.504528, -0.088352 51.504507, -0.08839 51.504522, -0.088566 51.504323, -0.088696 51.504247, -0.088797 51.504286, -0.088865 51.504302, -0.088947 51.504233, -0.089515 51.504408, -0.089545 51.504384, -0.089727 51.504165, -0.089734 51.504141, -0.089777 51.504084, -0.089916 51.504105, -0.090112 51.504165, -0.09018 51.504086, -0.090277 51.504051, -0.090463 51.503918, -0.09051 51.503936, -0.090522 51.503922, -0.090565 51.503938, -0.090646 51.50386, -0.09066 51.503866, -0.090687 51.503837, -0.090683 51.503819, -0.090719 51.503785, -0.090747 51.503796, -0.090847 51.503697, -0.090842 51.503678, -0.090699 51.503629, -0.090763 51.503565, -0.090818 51.503539, -0.090852 51.503503, -0.090924 51.50353, -0.090941 51.503511, -0.091268 51.503605, -0.091484 51.50333, -0.091126 51.50323, -0.091213 51.503107, -0.090892 51.502992, -0.090559 51.502851, -0.090163 51.502778, -0.089835 51.502699, -0.089496 51.502591, -0.089001 51.502418, -0.089055 51.502364, -0.089094 51.502355, -0.089364 51.502166, -0.089007 51.501967, -0.088728 51.501908, -0.088302 51.502107, -0.088135 51.502107, -0.088079 51.502102, -0.088055 51.501974, -0.087975 51.501978, -0.087814 51.501965, -0.087807 51.501987, -0.087674 51.502003, -0.087346 51.501976, -0.087185 51.501977, -0.086965 51.501955, -0.086943 51.501962, -0.086935 51.501977, -0.086902 51.501981, -0.086388 51.501916, -0.086349 51.50213, -0.0862 51.502132, -0.086059 51.502106, -0.086058 51.502112, -0.085775 51.502068, -0.085726 51.502221, -0.085707 51.502385, -0.085563 51.502869, -0.085551 51.502948, -0.085461 51.503046, -0.085387 51.503392)))", - "point": "POINT (-0.088107 51.503199)", "notes": "http://www.southwark.gov.uk/planning-and-building-control/planning-policy-and-transport-policy/article-4-directions", "description": "Demolition of commercial buildings and construction of new dwellinghouses is restricted" }, @@ -968,8 +942,6 @@ "reference": "Central Activities Zone", "prefix": "article-4-direction-area", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.111183 51.496539, -0.111174 51.496519, -0.111417 51.496449, -0.110948 51.495578, -0.110932 51.4955, -0.110854 51.495459, -0.110694 51.495425, -0.110451 51.495349, -0.107091 51.49415, -0.106603 51.493982, -0.105809 51.493737, -0.105538 51.493661, -0.105217 51.493587, -0.104894 51.493528, -0.104853 51.493527, -0.104845 51.493508, -0.104808 51.493505, -0.104674 51.493072, -0.104641 51.493021, -0.104519 51.49293, -0.10441 51.492763, -0.104375 51.492731, -0.10408 51.492249, -0.103855 51.491966, -0.103725 51.492011, -0.103704 51.491995, -0.103687 51.491998, -0.103642 51.491946, -0.103547 51.491872, -0.103477 51.491826, -0.103312 51.491749, -0.103348 51.491713, -0.103047 51.491523, -0.10337 51.491321, -0.103138 51.49117, -0.103166 51.491125, -0.103226 51.491058, -0.10324 51.491023, -0.103774 51.490461, -0.102602 51.489867, -0.102176 51.489661, -0.101525 51.489307, -0.101325 51.489479, -0.100689 51.489661, -0.099496 51.49004, -0.099126 51.489636, -0.098619 51.489055, -0.098315 51.488725, -0.097763 51.488993, -0.097212 51.489231, -0.096467 51.489508, -0.093433 51.490478, -0.092486 51.490722, -0.090737 51.491218, -0.090619 51.49127, -0.090336 51.491109, -0.090151 51.491142, -0.090102 51.491159, -0.090027 51.491339, -0.089976 51.49141, -0.089238 51.491278, -0.089153 51.491469, -0.088919 51.491513, -0.089034 51.491757, -0.088605 51.491858, -0.088231 51.492033, -0.08726 51.492391, -0.086607 51.492778, -0.085289 51.493582, -0.084893 51.493805, -0.085167 51.493942, -0.085238 51.494014, -0.085142 51.494137, -0.08508 51.494237, -0.085016 51.49437, -0.084824 51.494687, -0.084234 51.495036, -0.083448 51.495546, -0.082932 51.495961, -0.082756 51.496125, -0.08258 51.496274, -0.082405 51.496387, -0.082214 51.496501, -0.082006 51.496607, -0.081793 51.496695, -0.079951 51.497541, -0.079851 51.497639, -0.079766 51.497705, -0.078939 51.499464, -0.078569 51.500217, -0.078331 51.500816, -0.078124 51.501231, -0.07607 51.500158, -0.07473 51.500521, -0.073449 51.500291, -0.072765 51.500182, -0.072457 51.500477, -0.071722 51.500865, -0.071551 51.501013, -0.070655 51.501744, -0.069216 51.503414, -0.069842 51.503605, -0.070695 51.503885, -0.070912 51.50398, -0.071823 51.504424, -0.072799 51.504822, -0.073309 51.505, -0.074105 51.505222, -0.074389 51.505289, -0.074839 51.505376, -0.075069 51.505429, -0.075864 51.505648, -0.077847 51.506219, -0.079439 51.506639, -0.080115 51.506856, -0.080535 51.506953, -0.081535 51.507141, -0.082903 51.507348, -0.083868 51.507474, -0.084459 51.507578, -0.084946 51.507674, -0.086356 51.507776, -0.087881 51.5079, -0.090472 51.50819, -0.092121 51.50839, -0.093028 51.508623, -0.093869 51.508861, -0.094136 51.508929, -0.095682 51.509271, -0.096169 51.509354, -0.096638 51.509421, -0.097294 51.509495, -0.098775 51.509627, -0.099393 51.509675, -0.101134 51.509792, -0.102682 51.509823, -0.10416 51.509868, -0.104168 51.509652, -0.104115 51.509651, -0.10407 51.509639, -0.104045 51.509623, -0.104075 51.509607, -0.104135 51.509592, -0.104174 51.509592, -0.10418 51.50912, -0.104089 51.509097, -0.10408 51.509085, -0.104124 51.509064, -0.104184 51.509059, -0.104198 51.508632, -0.104169 51.508631, -0.104168 51.50861, -0.104144 51.508598, -0.104147 51.508545, -0.104179 51.508535, -0.104176 51.508519, -0.1042 51.508519, -0.104206 51.508421, -0.104684 51.508405, -0.104678 51.508525, -0.104696 51.508525, -0.104696 51.508543, -0.10472 51.508557, -0.104717 51.508604, -0.104699 51.508616, -0.104698 51.508634, -0.104673 51.508634, -0.104652 51.50907, -0.104713 51.509078, -0.104763 51.5091, -0.104709 51.50912, -0.104655 51.509128, -0.104634 51.5096, -0.104694 51.509606, -0.104753 51.50963, -0.104703 51.509653, -0.104634 51.50966, -0.104625 51.509869, -0.10682 51.509909, -0.108754 51.50989, -0.109174 51.509874, -0.10889 51.508316, -0.108865 51.50822, -0.108713 51.507765, -0.108618 51.507794, -0.108592 51.507794, -0.108422 51.507456, -0.108334 51.507245, -0.108268 51.50706, -0.108213 51.506977, -0.108165 51.506922, -0.10795 51.50697, -0.107339 51.507072, -0.106683 51.505513, -0.106522 51.50516, -0.10644 51.50492, -0.106399 51.50476, -0.106401 51.504697, -0.106456 51.50452, -0.106589 51.504277, -0.10661 51.504199, -0.106611 51.504136, -0.10658 51.503896, -0.106529 51.503642, -0.106403 51.503366, -0.106579 51.503299, -0.106936 51.503178, -0.107393 51.503035, -0.106758 51.50221, -0.106218 51.502497, -0.106078 51.502524, -0.106006 51.502242, -0.105989 51.502199, -0.106104 51.502113, -0.105917 51.502033, -0.106093 51.501895, -0.106182 51.501795, -0.106474 51.501571, -0.10662 51.501638, -0.1067 51.501657, -0.107605 51.500975, -0.108164 51.500549, -0.108217 51.500501, -0.108308 51.500385, -0.108652 51.499809, -0.109066 51.499158, -0.109501 51.498434, -0.109589 51.498195, -0.109639 51.498088, -0.110324 51.496869, -0.110257 51.496763, -0.11087 51.496624, -0.111183 51.496539)))", - "point": "POINT (-0.093382 51.500427)", "notes": "http://www.southwark.gov.uk/planning-and-building-control/planning-policy-and-transport-policy/article-4-directions", "description": "Change of use from Class E to residential is restricted" }, @@ -984,8 +956,6 @@ "reference": " London Bridge Health Cluster", "prefix": "article-4-direction-area", "organisation-entity": "329", - "geometry": "MULTIPOLYGON (((-0.085387 51.503392, -0.085487 51.503458, -0.08612 51.503818, -0.086194 51.503876, -0.086447 51.504022, -0.087108 51.504267, -0.087316 51.504305, -0.087695 51.504433, -0.087708 51.504447, -0.087796 51.504479, -0.08786 51.504514, -0.088168 51.504644, -0.088266 51.504539, -0.088293 51.504535, -0.088308 51.50452, -0.088328 51.504528, -0.088352 51.504507, -0.08839 51.504522, -0.088566 51.504323, -0.088696 51.504247, -0.088797 51.504286, -0.088865 51.504302, -0.088947 51.504233, -0.089515 51.504408, -0.089545 51.504384, -0.089727 51.504165, -0.089734 51.504141, -0.089777 51.504084, -0.089916 51.504105, -0.090112 51.504165, -0.09018 51.504086, -0.090277 51.504051, -0.090463 51.503918, -0.09051 51.503936, -0.090522 51.503922, -0.090565 51.503938, -0.090646 51.50386, -0.09066 51.503866, -0.090687 51.503837, -0.090683 51.503819, -0.090719 51.503785, -0.090747 51.503796, -0.090847 51.503697, -0.090842 51.503678, -0.090699 51.503629, -0.090763 51.503565, -0.090818 51.503539, -0.090852 51.503503, -0.090924 51.50353, -0.090941 51.503511, -0.091268 51.503605, -0.091484 51.50333, -0.091126 51.50323, -0.091213 51.503107, -0.090892 51.502992, -0.090559 51.502851, -0.090163 51.502778, -0.089835 51.502699, -0.089496 51.502591, -0.089001 51.502418, -0.089055 51.502364, -0.089094 51.502355, -0.089364 51.502166, -0.089007 51.501967, -0.088728 51.501908, -0.088302 51.502107, -0.088135 51.502107, -0.088079 51.502102, -0.088055 51.501974, -0.087975 51.501978, -0.087814 51.501965, -0.087807 51.501987, -0.087674 51.502003, -0.087346 51.501976, -0.087185 51.501977, -0.086965 51.501955, -0.086943 51.501962, -0.086935 51.501977, -0.086902 51.501981, -0.086388 51.501916, -0.086349 51.50213, -0.0862 51.502132, -0.086059 51.502106, -0.086058 51.502112, -0.085775 51.502068, -0.085726 51.502221, -0.085707 51.502385, -0.085563 51.502869, -0.085551 51.502948, -0.085461 51.503046, -0.085387 51.503392)))", - "point": "POINT (-0.088107 51.503199)", "notes": "http://www.southwark.gov.uk/planning-and-building-control/planning-policy-and-transport-policy/article-4-directions", "description": "Change of use from Class E to residential is restricted" } From f5b4686e06ccd71b61388f9f394e4249a1cac7dd Mon Sep 17 00:00:00 2001 From: Dan G Date: Tue, 6 Aug 2024 09:32:45 +0100 Subject: [PATCH 7/7] [api] improve DX by overriding shell variables when running tests (#3491) --- api.planx.uk/.env.test.example | 3 +++ api.planx.uk/jest.setup.js | 5 ++++- api.planx.uk/modules/file/service/utils.test.ts | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/api.planx.uk/.env.test.example b/api.planx.uk/.env.test.example index 81f94c08c1..ba874716ac 100644 --- a/api.planx.uk/.env.test.example +++ b/api.planx.uk/.env.test.example @@ -25,6 +25,9 @@ EDITOR_URL_EXT=example.com HASURA_GRAPHQL_URL=http://hasura:8080/v1/graphql HASURA_PLANX_API_KEY=👻 +# Minio object storage server port +MINIO_PORT=1234 + # Integrations BOPS_API_TOKEN=👻 BOPS_API_TOKEN=👻 diff --git a/api.planx.uk/jest.setup.js b/api.planx.uk/jest.setup.js index 5941f21f04..f196628439 100644 --- a/api.planx.uk/jest.setup.js +++ b/api.planx.uk/jest.setup.js @@ -1,7 +1,10 @@ import dotenv from "dotenv"; import { queryMock } from "./tests/graphqlQueryMock"; -dotenv.config({ path: "./.env.test" }); +dotenv.config({ + path: "./.env.test", + override: true, +}); beforeEach(() => { queryMock.setup(process.env.HASURA_GRAPHQL_URL); diff --git a/api.planx.uk/modules/file/service/utils.test.ts b/api.planx.uk/modules/file/service/utils.test.ts index 0fbecabc47..6ed470b57f 100644 --- a/api.planx.uk/modules/file/service/utils.test.ts +++ b/api.planx.uk/modules/file/service/utils.test.ts @@ -12,7 +12,7 @@ describe("s3 Factory", () => { }); it("returns Minio config for local development", () => { - expect(s3Factory()).toHaveProperty("endpoint.host", "minio"); + expect(s3Factory()).toHaveProperty("endpoint.host", "minio:1234"); }); ["pizza", "staging", "production"].forEach((env) => {