Loading js-apps/meep-frontend/src/js/containers/cfg/cfg-page-container.js +28 −24 Original line number Diff line number Diff line Loading @@ -63,30 +63,34 @@ import { getElemFieldVal } from '../../util/elem-utils'; import { pipe, filter, log } from '../../util/functional'; const firstElementIfPresent = (val) => Array.isArray(val) ? (val.length ? val[0] : null) : val; const notNull = x => x; const extractPort = svcMapEntry => firstElementIfPresent(svcMapEntry.split(':')) const extractPort = svcMapEntry => Number(firstElementIfPresent(svcMapEntry.split(':'))) const externalPorts = elem => { return getElemFieldVal(elem, FIELD_SVC_MAP) .split(',') .map(extractPort) .filter(notNull) .concat([getElemFieldVal(elem, FIELD_EXT_PORT)] .concat([Number(getElemFieldVal(elem, FIELD_EXT_PORT))] .filter(notNull)); } const intersection = (a1, a2) => { let inter = []; a1.forEach((elem) => { if (_.includes(a2, elem)) { inter.push(elem) } }); return inter; const hasExtPortsInCommon = elem1 => elem2 => { const ports1 = externalPorts(elem1); const ports2 = externalPorts(elem2) const intersection = _.intersection(ports1, ports2); return intersection.length }; const hasDifferentName = elem1 => elem2 => elem1.name.val != elem2.name.val; class CfgPageContainer extends Component { constructor(props) { super(props); Loading Loading @@ -198,13 +202,11 @@ class CfgPageContainer extends Component { const extPorts = externalPorts(element); if (extPorts.length) { const hasPortsInCommon = elem => { const ports = externalPorts(elem); const inter = intersection(extPorts, ports); const intersect = _.flatten(inter).filter(notNull); return intersect.length }; const elemsWithSameExtPort = data.filter(hasPortsInCommon); const elemsWithSameExtPort = pipe( filter(hasDifferentName(element)), filter(hasExtPortsInCommon(element)), )(data); if (elemsWithSameExtPort.length) { const elemNames = elemsWithSameExtPort.map(e => e.id); Loading Loading @@ -611,3 +613,5 @@ const ConnectedCfgPageContainer = connect( )(CfgPageContainer); export default ConnectedCfgPageContainer; js-apps/meep-frontend/src/js/containers/meep-container.js +12 −10 Original line number Diff line number Diff line Loading @@ -419,3 +419,5 @@ const ConnectedMeepContainer = connect( )(MeepContainer); export default ConnectedMeepContainer; js-apps/meep-frontend/src/js/util/functional.js 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019 * InterDigital Communications, Inc. * All rights reserved. * * The information provided herein is the proprietary and confidential * information of InterDigital Communications, Inc. */ export const pipe = (...fns) => val => fns.reduce((acc, f) => f(acc), val) export const filter = fn => array => array.filter(fn); export const log = label => val => { console.log(`${label}: `, val); return val; } Loading
js-apps/meep-frontend/src/js/containers/cfg/cfg-page-container.js +28 −24 Original line number Diff line number Diff line Loading @@ -63,30 +63,34 @@ import { getElemFieldVal } from '../../util/elem-utils'; import { pipe, filter, log } from '../../util/functional'; const firstElementIfPresent = (val) => Array.isArray(val) ? (val.length ? val[0] : null) : val; const notNull = x => x; const extractPort = svcMapEntry => firstElementIfPresent(svcMapEntry.split(':')) const extractPort = svcMapEntry => Number(firstElementIfPresent(svcMapEntry.split(':'))) const externalPorts = elem => { return getElemFieldVal(elem, FIELD_SVC_MAP) .split(',') .map(extractPort) .filter(notNull) .concat([getElemFieldVal(elem, FIELD_EXT_PORT)] .concat([Number(getElemFieldVal(elem, FIELD_EXT_PORT))] .filter(notNull)); } const intersection = (a1, a2) => { let inter = []; a1.forEach((elem) => { if (_.includes(a2, elem)) { inter.push(elem) } }); return inter; const hasExtPortsInCommon = elem1 => elem2 => { const ports1 = externalPorts(elem1); const ports2 = externalPorts(elem2) const intersection = _.intersection(ports1, ports2); return intersection.length }; const hasDifferentName = elem1 => elem2 => elem1.name.val != elem2.name.val; class CfgPageContainer extends Component { constructor(props) { super(props); Loading Loading @@ -198,13 +202,11 @@ class CfgPageContainer extends Component { const extPorts = externalPorts(element); if (extPorts.length) { const hasPortsInCommon = elem => { const ports = externalPorts(elem); const inter = intersection(extPorts, ports); const intersect = _.flatten(inter).filter(notNull); return intersect.length }; const elemsWithSameExtPort = data.filter(hasPortsInCommon); const elemsWithSameExtPort = pipe( filter(hasDifferentName(element)), filter(hasExtPortsInCommon(element)), )(data); if (elemsWithSameExtPort.length) { const elemNames = elemsWithSameExtPort.map(e => e.id); Loading Loading @@ -611,3 +613,5 @@ const ConnectedCfgPageContainer = connect( )(CfgPageContainer); export default ConnectedCfgPageContainer;
js-apps/meep-frontend/src/js/containers/meep-container.js +12 −10 Original line number Diff line number Diff line Loading @@ -419,3 +419,5 @@ const ConnectedMeepContainer = connect( )(MeepContainer); export default ConnectedMeepContainer;
js-apps/meep-frontend/src/js/util/functional.js 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019 * InterDigital Communications, Inc. * All rights reserved. * * The information provided herein is the proprietary and confidential * information of InterDigital Communications, Inc. */ export const pipe = (...fns) => val => fns.reduce((acc, f) => f(acc), val) export const filter = fn => array => array.filter(fn); export const log = label => val => { console.log(`${label}: `, val); return val; }