Member Junction
    Preparing search index...

    Implements

    • AfterViewInit
    • OnDestroy
    • OnChanges
    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    ActiveLayout: "schema-grid" | "dagre" = 'schema-grid'

    Active layout algorithm. Starts from config.layoutAlgorithm (default schema-grid) but can be toggled at runtime via setLayoutAlgorithm. Exposed so the chrome toggle + saved user state can drive it.

    ActiveSchemas: Set<string> | null = null

    Set of schema names the user has filtered IN. Null means "all".

    config: ERDConfig = {}
    diagramContextMenu: EventEmitter<ERDDiagramContextMenuEvent> = ...

    Use DiagramContextMenu.

    The same emitter under the old binding name, so a template still binding (diagramContextMenu) keeps working. Must stay AFTER DiagramContextMenu: class fields initialise in order, and the other way round this captures undefined.

    DiagramContextMenu: EventEmitter<ERDDiagramContextMenuEvent> = ...
    expandedNodeIds: Set<string> = ...

    Node IDs the user has clicked "+N more fields" on.

    FocusDepth: number = 1
    FocusNodeId: string | null = null
    HeaderTitle: string = 'Entity Relationship Diagram'
    HighlightedNodeIds: string[] = []
    HighlightSet: Set<string> | null = null

    Derived — the Set of IDs in the focus/hover neighbourhood (null when no highlight active).

    HoverNodeId: string | null = null

    Node currently being hovered (for highlight preview).

    IsRefreshing: boolean = false
    Layout: ErdLayout = ...

    Cached layout — recomputed when nodes, filter, search or expansion changes.

    layoutComplete: EventEmitter<void> = ...

    Use LayoutComplete.

    The same emitter under the old binding name, so a template still binding (layoutComplete) keeps working. Must stay AFTER LayoutComplete: class fields initialise in order, and the other way round this captures undefined.

    LayoutComplete: EventEmitter<void> = ...
    linkClick: EventEmitter<ERDLinkClickEvent> = ...

    Use LinkClick.

    The same emitter under the old binding name, so a template still binding (linkClick) keeps working. Must stay AFTER LinkClick: class fields initialise in order, and the other way round this captures undefined.

    LinkClick: EventEmitter<ERDLinkClickEvent> = ...
    linkContextMenu: EventEmitter<ERDLinkContextMenuEvent> = ...

    Use LinkContextMenu.

    The same emitter under the old binding name, so a template still binding (linkContextMenu) keeps working. Must stay AFTER LinkContextMenu: class fields initialise in order, and the other way round this captures undefined.

    LinkContextMenu: EventEmitter<ERDLinkContextMenuEvent> = ...
    linkHover: EventEmitter<ERDLinkHoverEvent> = ...

    Use LinkHover.

    The same emitter under the old binding name, so a template still binding (linkHover) keeps working. Must stay AFTER LinkHover: class fields initialise in order, and the other way round this captures undefined.

    LinkHover: EventEmitter<ERDLinkHoverEvent> = ...
    linkHoverEnd: EventEmitter<ERDLink> = ...

    Use LinkHoverEnd.

    The same emitter under the old binding name, so a template still binding (linkHoverEnd) keeps working. Must stay AFTER LinkHoverEnd: class fields initialise in order, and the other way round this captures undefined.

    LinkHoverEnd: EventEmitter<ERDLink> = ...
    nodeClick: EventEmitter<ERDNodeClickEvent> = ...

    Use NodeClick.

    The same emitter under the old binding name, so a template still binding (nodeClick) keeps working. Must stay AFTER NodeClick: class fields initialise in order, and the other way round this captures undefined.

    NodeClick: EventEmitter<ERDNodeClickEvent> = ...
    nodeContextMenu: EventEmitter<ERDNodeContextMenuEvent> = ...

    Use NodeContextMenu.

    The same emitter under the old binding name, so a template still binding (nodeContextMenu) keeps working. Must stay AFTER NodeContextMenu: class fields initialise in order, and the other way round this captures undefined.

    NodeContextMenu: EventEmitter<ERDNodeContextMenuEvent> = ...
    nodeDeselected: EventEmitter<void> = ...

    Use NodeDeselected.

    The same emitter under the old binding name, so a template still binding (nodeDeselected) keeps working. Must stay AFTER NodeDeselected: class fields initialise in order, and the other way round this captures undefined.

    NodeDeselected: EventEmitter<void> = ...
    nodeDoubleClick: EventEmitter<ERDNodeDoubleClickEvent> = ...

    Use NodeDoubleClick.

    The same emitter under the old binding name, so a template still binding (nodeDoubleClick) keeps working. Must stay AFTER NodeDoubleClick: class fields initialise in order, and the other way round this captures undefined.

    NodeDoubleClick: EventEmitter<ERDNodeDoubleClickEvent> = ...
    nodeDragEnd: EventEmitter<ERDNodeDragEvent> = ...

    Use NodeDragEnd.

    The same emitter under the old binding name, so a template still binding (nodeDragEnd) keeps working. Must stay AFTER NodeDragEnd: class fields initialise in order, and the other way round this captures undefined.

    NodeDragEnd: EventEmitter<ERDNodeDragEvent> = ...
    nodeDragStart: EventEmitter<ERDNodeDragEvent> = ...

    Use NodeDragStart.

    The same emitter under the old binding name, so a template still binding (nodeDragStart) keeps working. Must stay AFTER NodeDragStart: class fields initialise in order, and the other way round this captures undefined.

    NodeDragStart: EventEmitter<ERDNodeDragEvent> = ...
    nodeHover: EventEmitter<ERDNodeHoverEvent> = ...

    Use NodeHover.

    The same emitter under the old binding name, so a template still binding (nodeHover) keeps working. Must stay AFTER NodeHover: class fields initialise in order, and the other way round this captures undefined.

    NodeHover: EventEmitter<ERDNodeHoverEvent> = ...
    nodeHoverEnd: EventEmitter<ERDNode> = ...

    Use NodeHoverEnd.

    The same emitter under the old binding name, so a template still binding (nodeHoverEnd) keeps working. Must stay AFTER NodeHoverEnd: class fields initialise in order, and the other way round this captures undefined.

    NodeHoverEnd: EventEmitter<ERDNode> = ...
    Nodes: ERDNode[] = []
    nodeSelected: EventEmitter<ERDNode> = ...

    Use NodeSelected.

    The same emitter under the old binding name, so a template still binding (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields initialise in order, and the other way round this captures undefined.

    NodeSelected: EventEmitter<ERDNode> = ...
    Panning: boolean = false
    ReadOnly: boolean = false
    refreshRequested: EventEmitter<void> = ...

    Use RefreshRequested.

    The same emitter under the old binding name, so a template still binding (refreshRequested) keeps working. Must stay AFTER RefreshRequested: class fields initialise in order, and the other way round this captures undefined.

    RefreshRequested: EventEmitter<void> = ...
    rootClass: true
    SchemaChips: SchemaChip[] = []

    Derived schema summary for the chip row.

    SearchQuery: string = ''

    Search query string.

    SelectedEntity: ERDNode | null = null

    Derived — the single selected entity, if any.

    SelectedNodeId: string | null = null
    ShowHeader: boolean = true
    stateChange: EventEmitter<ERDState> = ...

    Use StateChange.

    The same emitter under the old binding name, so a template still binding (stateChange) keeps working. Must stay AFTER StateChange: class fields initialise in order, and the other way round this captures undefined.

    StateChange: EventEmitter<ERDState> = ...
    TotalCount: number = 0

    Derived — total entities in the input, before any filtering.

    transform: Transform = ...

    Current pan + zoom.

    VisibleCount: number = 0

    Derived — number of entities currently visible.

    zoomChange: EventEmitter<ERDZoomEvent> = ...

    Use ZoomChange.

    The same emitter under the old binding name, so a template still binding (zoomChange) keeps working. Must stay AFTER ZoomChange: class fields initialise in order, and the other way round this captures undefined.

    ZoomChange: EventEmitter<ERDZoomEvent> = ...

    Accessors

    • get ShowEdgeLabels(): boolean

      Whether to render FK field labels along edges. Defaults to ON in both layouts — the zoom-gate (>=0.55x) keeps the labels off when the user is zoomed out far enough to see hundreds of entities, so "noise on dense views" isn't a real concern. Consumers can still force off via config.showRelationshipLabels: false.

      Returns boolean

    Methods

    • Pick a point along the edge polyline for a label and approximate its width. Returns null for self-loops (no good place to put text). Uses the longest horizontal segment when one exists; falls back to the segment midpoint otherwise.

      Parameters

      • edge: LaidOutEdge

      Returns { w: number; x: number; y: number } | null

    • A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.

      Parameters

      • changes: { [propName: string]: SimpleChange<any> }

        The changed properties.

      Returns void

    • Mousedown anywhere on the SVG (background OR a node card). We arm a potential pan and attach window-level move/up listeners so the drag continues even if the cursor leaves the canvas (passes over the focus card, scrollbars, the chrome, etc.).

      The actual panning = true flip happens in the move handler once the cursor crosses DRAG_THRESHOLD — that way short clicks still register as clicks on cards (no accidental selection-toggle from a tiny mouse jitter).

      Parameters

      • e: MouseEvent

      Returns void

    • Switch between the schema-grid and dagre hierarchical layouts at runtime. Emits a state change so the consumer can persist the user's preference (via userStateChange on mj-erd-composite).

      Also clears the current focus/selection — switching layouts moves cards to entirely new positions, so the previously-selected entity would otherwise stay highlighted in a different spot with the side panel still open, which is jarring. A clean slate is better.

      Parameters

      • algo: "schema-grid" | "dagre"

      Returns void