From 808c78f3d3ce56f543f9cb1c7e0509752fe1fad6 Mon Sep 17 00:00:00 2001 From: Myles Lewando Date: Tue, 27 Aug 2024 16:25:50 +0100 Subject: [PATCH] Replace all version checking with compare-versions function --- src/model/edges/edges.js | 7 ++++--- src/model/nodes/nodes.js | 11 ++++++----- src/utils/bods.js | 3 ++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/model/edges/edges.js b/src/model/edges/edges.js index 8acef4df..eb12be15 100644 --- a/src/model/edges/edges.js +++ b/src/model/edges/edges.js @@ -1,3 +1,4 @@ +import { compareVersions } from 'compare-versions'; import { curveMonotoneX } from 'd3'; import { closedRecords, latest } from '../../utils/bods'; @@ -58,10 +59,10 @@ export const checkInterests = (interestRelationship) => { }; export const getOwnershipEdges = (bodsData) => { - const version = bodsData[0]?.publicationDetails?.bodsVersion || null; + const version = bodsData[0]?.publicationDetails?.bodsVersion || '0'; const filteredData = bodsData.filter((statement) => { - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { return statement.recordType === 'relationship'; } else { return statement.statementType === 'ownershipOrControlStatement'; @@ -94,7 +95,7 @@ export const getOwnershipEdges = (bodsData) => { ? directOrIndirect : 'unknown'; let source, target; - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { source = recordDetails.interestedParty; target = recordDetails.subject; } else { diff --git a/src/model/nodes/nodes.js b/src/model/nodes/nodes.js index 2e37afaf..fd23a407 100644 --- a/src/model/nodes/nodes.js +++ b/src/model/nodes/nodes.js @@ -1,3 +1,4 @@ +import { compareVersions } from 'compare-versions'; import generateNodeLabel from './nodeSVGLabel'; import { closedRecords, latest } from '../../utils/bods'; import sanitise from '../../utils/sanitiser'; @@ -77,10 +78,10 @@ let iconType = (nodeType) => { // This builds up the required person object from the BODS data, using the functions above export const getPersonNodes = (bodsData) => { - const version = bodsData[0]?.publicationDetails?.bodsVersion || null; + const version = bodsData[0]?.publicationDetails?.bodsVersion || '0'; const filteredData = bodsData.filter((statement) => { - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { return statement.recordType === 'person'; } else { return statement.statementType === 'personStatement'; @@ -127,10 +128,10 @@ export const getPersonNodes = (bodsData) => { // This builds up the required entity object from the BODS data, using the functions above export const getEntityNodes = (bodsData) => { - const version = bodsData[0]?.publicationDetails?.bodsVersion || null; + const version = bodsData[0]?.publicationDetails?.bodsVersion || '0'; const filteredData = bodsData.filter((statement) => { - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { return statement.recordType === 'entity'; } else { return statement.statementType === 'entityStatement'; @@ -153,7 +154,7 @@ export const getEntityNodes = (bodsData) => { let countryCode; - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { countryCode = recordDetails.jurisdiction ? sanitise(recordDetails.jurisdiction.code) : null; } else { // This gets the country code from v0.2 BODS (incorporatedInJurisdiction) diff --git a/src/utils/bods.js b/src/utils/bods.js index 8d7b78b0..e6c7d672 100644 --- a/src/utils/bods.js +++ b/src/utils/bods.js @@ -1,7 +1,8 @@ +import { compareVersions } from 'compare-versions'; export const closedRecords = new Set(); export const latest = (statements, closedRecords, version) => { - if (version >= Number('0.4')) { + if (compareVersions(version, '0.4') >= 0) { const statementMap = {}; statements.forEach((statement) => {