@bikerpatch/node-red-contrib-hm-land-registry-hpi
Version:
Node-RED nodes to retrieve HM Land Regsitry UK House Price Index data via the Open Data service
270 lines (253 loc) • 14.5 kB
HTML
<script type="text/html" data-template-name="hmlandregistry-ukhpi">
<div class="form-row">
<label for="node-input-region"><i class="fa fa-globe"></i> <span>Region</span></label>
<input type="text" id="node-input-region" style="width: calc(100% - 105px)" placeholder="Region">
<br/>
<small style="padding-left: 100px;"><code>msg.region</code> overwrites this value</small>
</div>
<div class="form-row">
<label for="node-input-periodFrom"><i class="fa fa-clock-o"></i> <span>Period From</span></label>
<input type="text" id="node-input-periodFrom" style="width: calc(100% - 105px)" placeholder="date">
<br/>
<small style="padding-left: 100px;"><code>msg.periodFrom</code> overwrites this value. Format: yyyy-mm-dd. Default: 6 months ago</small>
</div>
<div class="form-row">
<label for="node-input-periodTo"><i class="fa fa-clock-o"></i> <span>Period To</span></label>
<input type="text" id="node-input-periodTo" style="width: calc(100% - 105px)" placeholder="date">
<br/>
<small style="padding-left: 100px;"><code>msg.periodTo</code> overwrites this value. Format: yyyy-mm-dd. Default: now</small>
</div>
<hr>
<div class="form-row">
<label for="node-input-view"><i class="fa fa-list-ul"></i> View</label>
<select id="node-input-view" style="width:125px !important">
<option value="all">All</option>
<option value="basic" selected>Basic</option>
<option value="description">Description</option>
<option value="detail">Detail</option>
<option value="labeledDescribeViewer">Labeled Describe Viewer</option>
<option value="none">None</option>
</select>
<br/>
<small style="padding-left: 100px;"><code>msg.view</code> overwrites this value</small>
</div>
<hr>
<div class="form-row">
<label for="node-input-page"><i class="fa"></i> <span>Page</span></label>
<input type="text" id="node-input-page" style="width: calc(100% - 105px)" placeholder="size">
<br/>
<small style="padding-left: 100px;"><code>msg.page</code> overwrites this value. Default: 0</small>
</div>
<div class="form-row">
<label for="node-input-pageSize"><i class="fa"></i> <span>Page Size</span></label>
<input type="text" id="node-input-pageSize" style="width: calc(100% - 105px)" placeholder="size">
<br/>
<small style="padding-left: 100px;"><code>msg.pageSize</code> overwrites this value. Default: 200</small>
</div>
<hr>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span>Name</span></label>
<input type="text" id="node-input-name" style="width: calc(100% - 105px)" placeholder="Name">
</div>
</script>
<script type="text/markdown" data-help-name="hmlandregistry-ukhpi">
The `Land Registry HPI` capability allows the flow designer to retrieve UK HPI data from the [HM Land Registry Open Data](https://landregistry.data.gov.uk/) initiative.
The node uses the [Linked Data API](https://landregistry.data.gov.uk/def/ukhpi)
#### Parameters
| Configuration Parameter | msg parameter | Description | Data Type | Required | Default | Example |
| ----------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- |
| Region | msg.region | [Linked Data API Definition](https://landregistry.data.gov.uk/def/ukhpi/refRegion). See [Regions](#Regions) for a more complete list of possible values | string | **Required** | *n/a* | united-kingdom |
| Period From | msg.periodFrom | Minimum value of the period start date. [Linked Data API Definition](https://landregistry.data.gov.uk/def/ukhpi/refPeriodStart) | string (format yyyy-mm-dd) | Optional | *6 months ago* | 2020-07-30 |
| Period To | msg.periodTo | Maximum value of the period start date. [Linked Data API Definition](https://landregistry.data.gov.uk/def/ukhpi/refPeriodStart) | string (format yyyy-mm-dd)| Optional | *today's date* | 2022-12-31 |
| Page Number | msg.page | In a paged response of data, this is the page index of data to retrieve (first page is index 0) | integer | Optional | 0 | 0 |
| Page Size | msg.pageSize | In a paged response of data, this is the size of data per page to retrieve | integer | Optional | 200 | 200 |
| View | msg.view | The view of data to retrieve. Possible values: `all` / `basic` / `description` / `detail` / `labeledDescribeViewer` / `none` | string | Optional | basic | basic |
| Properties | msg.properties | Array list of data properties to retrieve when the `basic` view is set. [Linked Data API Definition](https://landregistry.data.gov.uk/def/ukhpi) | string | Optional | [housePriceIndex](https://landregistry.data.gov.uk/def/ukhpi/housePriceIndex), [refMonth](https://landregistry.data.gov.uk/def/ukhpi/refMonth), [refPeriodStart](https://landregistry.data.gov.uk/def/ukhpi/refPeriodStart), [refPeriodDuration](https://landregistry.data.gov.uk/def/ukhpi/refPeriodDuration), [salesVolume](https://landregistry.data.gov.uk/def/ukhpi/salesVolume), [averagePrice](https://landregistry.data.gov.uk/def/ukhpi/averagePrice) | `[ "housePriceIndex", "refMonth","refPeriodStart", "refPeriodDuration", "salesVolume", "averagePrice"]` |
#### Outputs
The following is an example of a successful `msg.payload` paged output, which is copied from `msg.ukhpi.data.result.items`:
<details>
<summary>Click to expand</summary>
[
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-04",
"averagePrice": 281161,
"housePriceIndex": 147.46,
"refMonth": "2022-04",
"refPeriodDuration": 1,
"refPeriodStart": "Fri, 01 Apr 2022",
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-03",
"averagePrice": 278215,
"housePriceIndex": 145.92,
"refMonth": "2022-03",
"refPeriodDuration": 1,
"refPeriodStart": "Tue, 01 Mar 2022",
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-02",
"averagePrice": 276609,
"housePriceIndex": 145.08,
"refMonth": "2022-02",
"refPeriodDuration": 1,
"refPeriodStart": "Tue, 01 Feb 2022",
"salesVolume": 55183,
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-01",
"averagePrice": 274171,
"housePriceIndex": 143.8,
"refMonth": "2022-01",
"refPeriodDuration": 1,
"refPeriodStart": "Sat, 01 Jan 2022",
"salesVolume": 46831,
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
}
]
</details>
The following is an example of a successful `msg.ukhpi` output, where `msg.ukhpi.data.result` includes paging data:
<details>
<summary>Click to expand</summary>
{
"status": 200,
"statusText": "OK",
"headers": {...},
"config": {...},
"request": {...},
"data": {
"format": "linked-data-api",
"version": "0.2",
"result": {
"_about": "https://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom.json?_pageSize=200&_page=0&min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"definition": "https://landregistry.data.gov.uk/meta/data/ukhpi/region/_regionName.json?min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"extendedMetadataVersion": "https://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom.json?_pageSize=200&_page=0&min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,&_metadata=all",
"first": "https://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom.json?_pageSize=200&_page=0&min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"isPartOf": {
"_about": "https://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom.json?min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"definition": "https://landregistry.data.gov.uk/meta/data/ukhpi/region/_regionName.json?min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"hasPart": "https://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom.json?_pageSize=200&_page=0&min-refPeriodStart=2021-12-26&_view=basic&max-refPeriodStart=&_properties=housePriceIndex,refMonth,refPeriodStart,refPeriodDuration,salesVolume,averagePrice,",
"type": [
"http://purl.org/linked-data/api/vocab#ListEndpoint"
]
},
"items": [
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-04",
"averagePrice": 281161,
"housePriceIndex": 147.46,
"refMonth": "2022-04",
"refPeriodDuration": 1,
"refPeriodStart": "Fri, 01 Apr 2022",
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-03",
"averagePrice": 278215,
"housePriceIndex": 145.92,
"refMonth": "2022-03",
"refPeriodDuration": 1,
"refPeriodStart": "Tue, 01 Mar 2022",
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-02",
"averagePrice": 276609,
"housePriceIndex": 145.08,
"refMonth": "2022-02",
"refPeriodDuration": 1,
"refPeriodStart": "Tue, 01 Feb 2022",
"salesVolume": 55183,
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
},
{
"_about": "http://landregistry.data.gov.uk/data/ukhpi/region/united-kingdom/month/2022-01",
"averagePrice": 274171,
"housePriceIndex": 143.8,
"refMonth": "2022-01",
"refPeriodDuration": 1,
"refPeriodStart": "Sat, 01 Jan 2022",
"salesVolume": 46831,
"type": [
"http://landregistry.data.gov.uk/def/ukhpi/MonthlyIndicesByRegion",
"http://purl.org/linked-data/cube#Observation"
]
}
],
"itemsPerPage": 200,
"page": 0,
"startIndex": 1,
"totalResults": 4,
"type": [
"http://purl.org/linked-data/api/vocab#Page"
]
}
}
}
</details>
</script>
<script type="text/javascript">
(function () {
function validateDateInput(value) {
if (!value || value === "") { return true }
else if (/^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/.test(value)) { return true }
else { return false }
}
RED.nodes.registerType('hmlandregistry-ukhpi', {
color: "#abcd40",
category: 'hm land registry',
defaults: {
name: { value: "" },
region: { value: "" },
periodFrom: {
value: "",
validate: function (value, opt) {
return validateDateInput(value)
}
},
periodTo: {
value: "",
validate: function (value, opt) {
return validateDateInput(value)
}
},
view: { value: "basic" },
page: { value: 0 },
pageSize: { value: 200 }
},
inputs: 1,
outputs: 1,
icon: "hmlandregistry.png",
label: function () {
return this.name || "Land Registry HPI"
},
labelStyle: function () {
return this.name ? "node_label_italic" : "";
},
paletteLabel: "Land Registry HPI"
});
})();
</script>