Allow prettier display of dataflow cyclic dependencies
This commit is contained in:
parent
9197d7ef3a
commit
4903bc5149
|
@ -131,7 +131,9 @@ export class Actor {
|
|||
get dataflowGraph(): DataflowGraph {
|
||||
if (this._dataflowGraph === null) {
|
||||
this._dataflowGraph =
|
||||
new Graph((b: DataflowBlock) => '' + embeddedId(b), Cell.canonicalizer);
|
||||
new Graph((b: DataflowBlock) => '' + embeddedId(b),
|
||||
Cell.canonicalizer,
|
||||
g => Array.from(g.values()));
|
||||
}
|
||||
return this._dataflowGraph;
|
||||
}
|
||||
|
|
|
@ -15,18 +15,16 @@ export interface ObservingGraph<ObjectId> {
|
|||
export class Graph<SubjectId, ObjectId> implements ObservingGraph<ObjectId> {
|
||||
readonly edgesForward: FlexMap<ObjectId, FlexSet<SubjectId>>;
|
||||
readonly edgesReverse: FlexMap<SubjectId, FlexSet<ObjectId>>;
|
||||
readonly subjectIdCanonicalizer: Canonicalizer<SubjectId>;
|
||||
readonly objectIdCanonicalizer: Canonicalizer<ObjectId>;
|
||||
damagedNodes: FlexSet<ObjectId>;
|
||||
currentSubjectId: SubjectId | undefined;
|
||||
|
||||
constructor(subjectIdCanonicalizer: Canonicalizer<SubjectId>,
|
||||
objectIdCanonicalizer: Canonicalizer<ObjectId>)
|
||||
{
|
||||
constructor(
|
||||
public readonly subjectIdCanonicalizer: Canonicalizer<SubjectId>,
|
||||
public readonly objectIdCanonicalizer: Canonicalizer<ObjectId>,
|
||||
public formatCycle: (group: FlexSet<ObjectId>) => any = g => g,
|
||||
) {
|
||||
this.edgesForward = new FlexMap(objectIdCanonicalizer);
|
||||
this.edgesReverse = new FlexMap(subjectIdCanonicalizer);
|
||||
this.subjectIdCanonicalizer = subjectIdCanonicalizer;
|
||||
this.objectIdCanonicalizer = objectIdCanonicalizer;
|
||||
this.damagedNodes = new FlexSet(objectIdCanonicalizer);
|
||||
}
|
||||
|
||||
|
@ -75,7 +73,7 @@ export class Graph<SubjectId, ObjectId> implements ObservingGraph<ObjectId> {
|
|||
|
||||
const alreadyDamaged = workSet.intersect(repairedThisRound);
|
||||
if (alreadyDamaged.size > 0) {
|
||||
console.warn('Cyclic dependencies involving', alreadyDamaged);
|
||||
console.warn('Cyclic dependencies involving', this.formatCycle(alreadyDamaged));
|
||||
}
|
||||
|
||||
workSet = workSet.subtract(repairedThisRound);
|
||||
|
|
Loading…
Reference in New Issue