Interface MutGraphNode<NodeDatum, LinkDatum>

a mutable node in a graph

This possesses all of the methods of both MutGraph and GraphNode, while also adding the ability to directly add parents or children and to remove the node and all links from the graph.

Type Parameters

  • in out NodeDatum

  • in out LinkDatum

Hierarchy

  • MutGraph<NodeDatum, LinkDatum>
  • GraphNodeMixin<NodeDatum, LinkDatum>
    • MutGraphNode

Properties

data: NodeDatum

user data for this node

ux?: number

raw (possibly undefined) x coordinate for a node

uy?: number

raw (possibly undefined) y coordinate for a node

x: number

view of ux that throws if ux is undefined

y: number

view of uy that throws if uy is undefined

Methods

  • iterator of all nodes reachable though parents

    The iterator includes this node.

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

  • add a new link to a child node

    Parameters

    • chi: MutGraphNode<NodeDatum, LinkDatum>
    • Rest ...datum: undefined extends LinkDatum
          ? [datum?: LinkDatum]
          : [datum: LinkDatum]

    Returns MutGraphLink<NodeDatum, LinkDatum>

  • iterator over this node's unique child nodes and the number of links to them

    Returns IterableIterator<[MutGraphNode<NodeDatum, LinkDatum>, number]>

  • iterator of links from this node to its children

    The order of links is guaranteed to not change between iterations.

    Returns IterableIterator<MutGraphLink<NodeDatum, LinkDatum>>

  • iterator over every link to a specific node

    Parameters

    Returns IterableIterator<MutGraphLink<NodeDatum, LinkDatum>>

  • iterator over this node's unique child nodes

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

  • remove this node and all of its links from the graph

    Once a node is deleted, none of its methods are valid or guaranteed to do the correct thing.

    Returns void

  • iterator of all nodes reachable though children

    The iterator includes this node.

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

  • an iterator over the leaves of the graph

    The leaves are defined as a set of nodes such that every node in the graph is an ancestor of one of the leaves, an no leaf is an ancestor of any other leaf. It is guaranteed to include every node with no children, but one node in a cycle may be chosen if there is no unique leaf for that cycle.

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

    Remarks

    the current implementation will return a minimal leaf set as long as target cycles contain a node with a single child.

  • add a new link from source to target

    If undefined extends LinkDatum, datum can be elided and simply called as

    grf.link(source, target);
    

    Parameters

    • source: MutGraphNode<NodeDatum, LinkDatum>
    • target: MutGraphNode<NodeDatum, LinkDatum>
    • Rest ...datum: undefined extends LinkDatum
          ? [datum?: LinkDatum]
          : [datum: LinkDatum]

    Returns MutGraphLink<NodeDatum, LinkDatum>

  • true if at least one node in this graph has multiple links to the same child

    Returns boolean

  • the number of child links

    Returns number

  • the number of links to a specific node

    Parameters

    Returns number

  • the number of unique child nodes

    Returns number

  • add a new node with datum

    If undefined extends NodeDatum, datum can be elided and simply called as

    grf.node();
    

    Parameters

    • Rest ...datum: undefined extends NodeDatum
          ? [datum?: NodeDatum]
          : [datum: NodeDatum]

    Returns MutGraphNode<NodeDatum, LinkDatum>

  • an iterator over every node in the graph

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

    Remarks

    Be careful not to modify the graph structure while iterating as any modification, including adding or removing links, can change the behavior of iteration giving unexpected results. If you want to guarantee consistent iteration, allocating an array first with [...graph.nodes()] will ensure consistent iteration.

  • the number of parent links

    Returns number

  • the number of links from a specific node

    Parameters

    Returns number

  • the number of unique parent nodes

    Returns number

  • add a new link from a parent node

    Parameters

    • par: MutGraphNode<NodeDatum, LinkDatum>
    • Rest ...datum: undefined extends LinkDatum
          ? [datum?: LinkDatum]
          : [datum: LinkDatum]

    Returns MutGraphLink<NodeDatum, LinkDatum>

  • iterator over this node's unique parent nodes and the number of links from them

    Returns IterableIterator<[MutGraphNode<NodeDatum, LinkDatum>, number]>

  • iterator of links to this node from its parents

    The order of links is guaranteed to not change between iterations.

    Returns IterableIterator<MutGraphLink<NodeDatum, LinkDatum>>

  • iterator over every link from a specific node

    Parameters

    Returns IterableIterator<MutGraphLink<NodeDatum, LinkDatum>>

  • iterator over this node's unique parent nodes

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

  • an iterator over the roots of the graph

    The roots are defined as a set of nodes such that every node in the graph is a descendant of one of the roots, an no root is a descendant of any other root. It is guaranteed to include every node with no parents, but one node in a cycle may be chosen if there is no unique root for that cycle.

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

    Remarks

    the current implementation will return a minimal root set as long as source cycles contain a node with a single parent.

  • split a graph into connected components

    Returns IterableIterator<MutGraphNode<NodeDatum, LinkDatum>>

    splits an iterable over a single node in each connected component

    Remarks

    Since each node behaves like a graph of its connected component, this is equivalent with returning a graph of each connected component.

  • serialize the graph

    Returns unknown

    Remarks

    this is intended to be called automatically by JSON.stringify.

  • compute a topological order of the graph

    If the graph can't be represented in topological order, this will try to minimize the number of edge inversions. Optimally minimizing inversions is np-complete, so this will only be approximate.

    You can optionally specify a Rank accessor that defines a numerical rank for every node. Nodes with a lower rank will come before nodes of a higher rank even if that requires more edge inversions. Nodes without a rank are unconstrained.

    Parameters

    • Optional rank: Rank<NodeDatum, LinkDatum>

    Returns GraphNode<NodeDatum, LinkDatum>[]

Generated using TypeDoc