leafs.forEach(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), leaf = _ref2[0], parent = _ref2[1]; var curPred = nwg.predecessors(leaf) || []; var oldPred = g.predecessors(leaf) || []; walked[leaf] = true; nextLeafs = nextLeafs.concat(curPred.map(function (el) { return [el, leaf]; })); if (!nwg.node(leaf)) { g.removeNode(leaf); } else if (!g.node(leaf)) { g.setNode(leaf, nwg.node(leaf)); if (parent !== null) { g.setEdge(leaf, parent); } updateEdges(g, nwg, leaf); } else if (nwg.node(leaf) !== g.node(leaf)) { g.setNode(leaf, nwg.node(leaf)); updateEdges(g, nwg, leaf); } else { updateEdges(g, nwg, leaf); } var diffPred = diff(oldPred, curPred); if (diffPred.length > 0) { ensureConnectivity(g, nwg, diffPred, {}); } });
const resolveHosts = () => { const keptHosts = filter(validHosts, host => { let keptBySr = false forEach(this.selectedSrs, sr => !(keptBySr = intersection(sr.$PBDs, host.$PBDs).length > 0)) let keptByNetwork forEach(this.selectedNetworks, network => !(keptByNetwork = intersection(network.PIFs, host.PIFs).length > 0)) return keptBySr && keptByNetwork }) this.eligibleHosts = keptHosts this.excludedHosts = differenceBy(map(hosts), keptHosts, item => item && item.id) }
function updateEdges(g, nwg, leaf) { var oldEdges = g.inEdges(leaf) || []; var newEdges = nwg.inEdges(leaf) || []; var removedEdges = diff(oldEdges, newEdges, function (el) { return el.v + '__' + el.w; }); removedEdges.forEach(function (edge) { g.removeEdge(edge.v, edge.w); }); newEdges.forEach(function (edge) { g.setEdge(edge.v, edge.w); }); }