diff --git a/CHANGELOG.md b/CHANGELOG.md index 2037a25..5ebe0c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## node-red-contrib-letsfiware-NGSI v0.4.0-next +- Support subscription payload in to-worldmap node (#22) + ## node-red-contrib-letsfiware-NGSI v0.4.0 - 25 December, 2022 - UPDATE Node.js dependencies (#19) diff --git a/src/nodes/NGSI/open-apis/open-apis.html b/src/nodes/NGSI/open-apis/open-apis.html index a588a7e..d1f0fd2 100644 --- a/src/nodes/NGSI/open-apis/open-apis.html +++ b/src/nodes/NGSI/open-apis/open-apis.html @@ -84,28 +84,28 @@ function fiware_open_apis_idmtype_Changed(e) { switch (e.target.value) { - case "tokenproxy": - document.getElementById('idmEndpoint').hidden = false; - document.getElementById('username').hidden = false; - document.getElementById('password').hidden = false; - document.getElementById('clientid').hidden = true; - document.getElementById('clientsecret').hidden = true; - break; - case "keyrock": - case "generic": - document.getElementById('idmEndpoint').hidden = false; - document.getElementById('username').hidden = false; - document.getElementById('password').hidden = false; - document.getElementById('clientid').hidden = false; - document.getElementById('clientsecret').hidden = false; - break; - default: - document.getElementById('idmEndpoint').hidden = true; - document.getElementById('username').hidden = true; - document.getElementById('password').hidden = true; - document.getElementById('clientid').hidden = true; - document.getElementById('clientsecret').hidden = true; - break; + case "tokenproxy": + document.getElementById('idmEndpoint').hidden = false; + document.getElementById('username').hidden = false; + document.getElementById('password').hidden = false; + document.getElementById('clientid').hidden = true; + document.getElementById('clientsecret').hidden = true; + break; + case "keyrock": + case "generic": + document.getElementById('idmEndpoint').hidden = false; + document.getElementById('username').hidden = false; + document.getElementById('password').hidden = false; + document.getElementById('clientid').hidden = false; + document.getElementById('clientsecret').hidden = false; + break; + default: + document.getElementById('idmEndpoint').hidden = true; + document.getElementById('username').hidden = true; + document.getElementById('password').hidden = true; + document.getElementById('clientid').hidden = true; + document.getElementById('clientsecret').hidden = true; + break; } } diff --git a/src/nodes/NGSI/to-worldmap/to-worldmap.js b/src/nodes/NGSI/to-worldmap/to-worldmap.js index f912a03..73c71cd 100644 --- a/src/nodes/NGSI/to-worldmap/to-worldmap.js +++ b/src/nodes/NGSI/to-worldmap/to-worldmap.js @@ -81,7 +81,11 @@ module.exports = function (RED) { msg.payload = JSON.parse(msg.payload); } if (!Array.isArray(msg.payload)) { - msg.payload = [msg.payload]; + if (Object.prototype.hasOwnProperty.call(msg.payload,'subscriptionId')) { + msg.payload = msg.payload.data; + } else { + msg.payload = [msg.payload]; + } } const pois = []; msg.payload.forEach((entity) => { diff --git a/test/unit/to-worldmap_spec.js b/test/unit/to-worldmap_spec.js index 0fa277f..1db7ec0 100644 --- a/test/unit/to-worldmap_spec.js +++ b/test/unit/to-worldmap_spec.js @@ -305,6 +305,18 @@ describe('to-worldmap.js', () => { assert.deepEqual(red.getOutput(), {payload:[{name: 'E1', lat: 1, lon: 2}]}); }); + it('Transform an entity in subscription payload', async () => { + const red = new MockRed(); + toWorldmapNode(red); + red.createNode({ + attrname: 'name', + attrworldmap: '__worldmap__', + }); + + red.input({payload: {subscriptionId: '63ae1df6e9c583522509017e', data:[{id: 'E1', type: 'T', location:{type: 'geo:json', value: {type: 'Point', coordinates: [ 2, 1 ]}}}]}}); + + assert.deepEqual(red.getOutput(), {payload:[{name: 'E1', lat: 1, lon: 2}]}); + }); it('Transform an entity (text)', async () => { const red = new MockRed(); toWorldmapNode(red);