@@ -189,9 +189,9 @@ fragment FamilyProxyData on FamilyProxy {
189
189
isRunahead
190
190
isQueued
191
191
name
192
- ancestors {
193
- name
194
- }
192
+ ancestors {
193
+ name
194
+ }
195
195
childTasks {
196
196
id
197
197
}
@@ -449,11 +449,7 @@ export default {
449
449
* @returns {String[]} array containing nested structure of families
450
450
*/
451
451
treeDropDownCycle () {
452
- return this .cycleArrayStore .map ((name , id ) => ({
453
- id,
454
- name,
455
- disabled: false
456
- }))
452
+ return this .cycleArrayStore .map ((name ) => ({ name }))
457
453
},
458
454
/**
459
455
* Object for looking up family ancestors
@@ -1297,9 +1293,10 @@ export default {
1297
1293
// ...now we have a node - we have to understand all its relations in the graph...
1298
1294
if (indexSearch) {
1299
1295
// ---------------REMOVE NODES BASED ON FAMILY------------
1300
- // ṃust do this before removing nodes and edges based on cycle as
1296
+ // must do this before removing nodes and edges based on cycle as
1301
1297
// cycle collapsing takes priority of families
1302
- // ...this node is collapsed so need to remove any of its children (nodes and edges) from the graph if it has any...
1298
+ // ...this node is collapsed so need to remove any of its children
1299
+ // (nodes and edges) from the graph if it has any...
1303
1300
for (const config of this .allChildrenLookUp [indexSearch .id ]) {
1304
1301
if (config .name !== indexSearch .name ) {
1305
1302
// REMOVE NODES
@@ -1450,26 +1447,28 @@ export default {
1450
1447
const edgeCheckSource = this .checkForEdgeBySource (config .name , cycle, removedEdges)
1451
1448
if (edgeCheckSource) {
1452
1449
for (const edge of edgeCheckSource) {
1450
+ const sourceCycle = this .cylcTree .$index [edge .node .source ].tokens .cycle
1453
1451
const targetName = this .cylcTree .$index [edge .node .target ].name
1454
1452
const targetCycle = this .cylcTree .$index [edge .node .target ].tokens .cycle
1455
- // only want one edge that goes to a different cycle point
1456
- if (targetCycle !== cycle) {
1457
- if (this .collapseCycle .includes (targetCycle)) {
1458
- // this collapsed cycle => next collapsed cycle
1459
- this .edgeTemplate = this .createEdge (' collapsedSourceAndTarget' , cycle, targetCycle, cycle, targetCycle)
1460
- edges .push (this .edgeTemplate )
1461
- } else {
1462
- const firstParent = this .cylcTree .$index [edge .node .target ].node .firstParent
1463
- const isFirstParentCollapsed = this .collapseFamily .includes (firstParent .name )
1464
- const isAncestorCollapsed = this .allParentLookUp [firstParent .name ].some (element => {
1465
- return this .collapseFamily .includes (element)
1466
- })
1467
- if (! isAncestorCollapsed && ! isFirstParentCollapsed) {
1468
- // this collapsed cycle => next cycle
1469
- this .edgeTemplate = this .createEdge (' collapsedSource' , cycle, targetName, cycle, targetCycle)
1453
+ const targetFamilyName = this .cylcTree .$index [edge .node .target ].node .firstParent .name
1454
+
1455
+ if (targetCycle !== sourceCycle) {
1456
+ // edge has collapsed source cycle only
1457
+ if (! this .collapseCycle .includes (targetCycle) && this .collapseCycle .includes (sourceCycle)) {
1458
+ if (this .isNodeCollapsedByFamily (targetFamilyName)) {
1459
+ this .edgeTemplate = this .createEdge (' collapsedSource' , sourceCycle, this .isNodeCollapsedByFamily (targetFamilyName), sourceCycle, targetCycle)
1460
+ edges .push (this .edgeTemplate )
1461
+ } else {
1462
+ this .edgeTemplate = this .createEdge (' collapsedSource' , sourceCycle, targetName, sourceCycle, targetCycle)
1470
1463
edges .push (this .edgeTemplate )
1471
1464
}
1472
1465
}
1466
+
1467
+ // edge has collapsed target and source cycle
1468
+ if (this .collapseCycle .includes (targetCycle) && this .collapseCycle .includes (sourceCycle)) {
1469
+ this .edgeTemplate = this .createEdge (' collapsedSourceAndTarget' , sourceCycle, targetCycle, sourceCycle, targetCycle)
1470
+ edges .push (this .edgeTemplate )
1471
+ }
1473
1472
}
1474
1473
}
1475
1474
}
@@ -1478,24 +1477,26 @@ export default {
1478
1477
for (const edge of edgeCheckTarget) {
1479
1478
const sourceName = this .cylcTree .$index [edge .node .source ].name
1480
1479
const sourceCycle = this .cylcTree .$index [edge .node .source ].tokens .cycle
1481
- // only want one edge that goes to a different cycle point
1482
- if (sourceCycle !== cycle) {
1483
- if (this .collapseCycle .includes (sourceCycle)) {
1484
- // previous collapsed cycle => this collapsed cycle
1485
- this .edgeTemplate = this .createEdge (' collapsedSourceAndTarget' , sourceCycle, cycle, sourceCycle, cycle)
1486
- edges .push (this .edgeTemplate )
1487
- } else {
1488
- const firstParent = this .cylcTree .$index [edge .node .source ].node .firstParent
1489
- const isFirstParentCollapsed = this .collapseFamily .includes (firstParent .name )
1490
- const isAncestorCollapsed = this .allParentLookUp [firstParent .name ].some (element => {
1491
- return this .collapseFamily .includes (element)
1492
- })
1493
- if (! isAncestorCollapsed && ! isFirstParentCollapsed) {
1494
- // previous cycle => this collapsed cycle
1495
- this .edgeTemplate = this .createEdge (' collapsedTarget' , sourceName, cycle, sourceCycle, cycle)
1480
+ const targetCycle = this .cylcTree .$index [edge .node .target ].tokens .cycle
1481
+ const sourceFamilyName = this .cylcTree .$index [edge .node .source ].node .firstParent .name
1482
+
1483
+ if (targetCycle !== sourceCycle) {
1484
+ // edge has collapsed target cycle only
1485
+ if (this .collapseCycle .includes (targetCycle) && ! this .collapseCycle .includes (sourceCycle)) {
1486
+ if (this .isNodeCollapsedByFamily (sourceFamilyName)) {
1487
+ this .edgeTemplate = this .createEdge (' collapsedTarget' , this .isNodeCollapsedByFamily (sourceFamilyName), targetCycle, sourceCycle, targetCycle)
1488
+ edges .push (this .edgeTemplate )
1489
+ } else {
1490
+ this .edgeTemplate = this .createEdge (' collapsedTarget' , sourceName, targetCycle, sourceCycle, targetCycle)
1496
1491
edges .push (this .edgeTemplate )
1497
1492
}
1498
1493
}
1494
+
1495
+ // edge has collapsed target and source cycle
1496
+ if (this .collapseCycle .includes (targetCycle) && this .collapseCycle .includes (sourceCycle)) {
1497
+ this .edgeTemplate = this .createEdge (' collapsedSourceAndTarget' , sourceCycle, targetCycle, sourceCycle, targetCycle)
1498
+ edges .push (this .edgeTemplate )
1499
+ }
1499
1500
}
1500
1501
}
1501
1502
}
0 commit comments