MAIDR Documentation - v3.72.1
    Preparing search index...

    Interface representing a trace with navigation and observation capabilities

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    observers: Observer<TraceState>[]
    isWarning: boolean
    isComputingStateAt: boolean

    True while AbstractTrace.getStateAt computes state at a temporarily moved cursor. Enforces (structurally, not just by documentation) that state getters never notify observers.

    id: string
    type: TraceType
    title: string
    xAxis: string
    yAxis: string
    z: string
    layer: MaidrLayer
    supportsExtrema: true

    Abstract property that subclasses must implement to indicate extrema support

    movable: Movable
    highlightValues: HighlightValue[][] | null
    highlightCenters:
        | {
            x: number;
            y: number;
            row: number;
            col: number;
            element: SVGElement;
        }[]
        | null
    navigationService: NavigationService

    Accessors

    • get isInitialEntry(): boolean

      Returns boolean

    • set isInitialEntry(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get row(): number

      Returns number

    • set row(value: number): void

      Parameters

      • value: number

      Returns void

    • get col(): number

      Returns number

    • set col(value: number): void

      Parameters

      • value: number

      Returns void

    • get state(): TraceState

      Gets the current state of the trace including audio, braille, text, and highlight information.

      Returns TraceState

      The current TraceState

    • get hasMultiPoints(): boolean

      Returns boolean

    • get traceType(): TraceType

      The trace's chart type. Lightweight alternative to reading state.traceType, which eagerly computes the full audio/braille/text/ highlight state just to expose this one string.

      Returns TraceType

    • get values(): number[][]

      Gets the 2D array of candlestick values

      Returns number[][]

      Array of candlestick values for all segments

    Methods

    • Gets safe row and column indices to prevent accessing undefined values

      Returns { row: number; col: number }

      Object with safe row and column indices

    • Parameters

      • a: number

        Utility function to compare point values for rotor functionality

      • b: number
      • type: "lower" | "higher"

      Returns boolean

      boolean value

    • Moves left in rotor mode, optionally filtering by lower or higher values.

      Parameters

      • Optional_mode: "lower" | "higher"

        Optional mode for filtering (lower or higher)

      Returns boolean

      Error always - subclasses must override this method

    • Moves right in rotor mode, optionally filtering by lower or higher values.

      Parameters

      • Optional_mode: "lower" | "higher"

        Optional mode for filtering (lower or higher)

      Returns boolean

      Error always - subclasses must override this method

    • Returns true if this trace supports compare (lower/higher value) navigation. Override to false for trace types that don't use compare modes (e.g., scatter, which is all we currently have).

      Returns boolean

    • Returns the display name for the default data navigation mode. Override to provide a trace-specific name (e.g., "ROW AND COLUMN NAVIGATION" for scatter).

      Returns string

    • Get all highlight SVG elements for this trace Used by HighlightService for high contrast mode

      Returns SVGElement[]

      Array of all SVG elements, or empty array if none

    • Get all original (visible) SVG elements for this trace. These are the actual rendered elements, not the hidden clones used for highlighting. Used by HighlightService for high contrast mode color changes.

      Returns SVGElement[]

      Array of all original SVG elements, or empty array if none

    • Returns a human-readable label for this trace's chart type (e.g., 'Bar Chart', 'Scatter Plot') for display in the description modal. Falls back to the raw layer type if no mapping is registered.

      Returns string

    • Builds the axes object for the description state, including z only when the layer explicitly provides a z-axis label. Subclasses should call this instead of constructing the axes object inline so charts without a real z dimension don't surface the placeholder default.

      Returns { x?: string; y?: string; z?: string }

    • Returns true if this trace supports intersection navigation mode. Opt-in per trace type: override to return true (possibly conditionally, e.g. based on data shape) for trace types that expose point intersections between series. Intersection navigation is a trace-level capability — it has no meaning at the figure or subplot level, which is why it lives on AbstractTrace rather than AbstractPlot.

      Returns boolean

    • Moves the active point to the pointer location and returns directional guidance toward the nearest data geometry in a single call.

      Combining both operations avoids running findNearestPoint twice per pointermove event — important on dense plots where the scan is the hot path.

      Parameters

      • x: number

        Screen-space x position of the pointer/finger

      • y: number

        Screen-space y position of the pointer/finger

      Returns PointerGuidanceState | null

      Guidance state relative to nearest point, or null when unavailable

    • Checks if the specified coordinates are within bounds of the element.

      Parameters

      • x: number

        The x-coordinate

      • y: number

        The y-coordinate

      • element: NearestPoint

        Object containing the SVG element and its position

        • element: SVGElement
        • row: number
        • col: number
        • centerX: number
        • centerY: number

      Returns boolean

      True if the point is in bounds, false otherwise

    • Handles initial entry into the candlestick chart, setting default position

      Returns void

    • Computes the state at an arbitrary position without moving the cursor.

      Candlestick state getters read currentPointIndex/currentSegmentType rather than row/col, so those are mapped from the requested position and restored alongside the cursor.

      Parameters

      • row: number

        The row of the position to compute state for

      • col: number

        The column of the position to compute state for

      Returns TraceState

      The trace state at the requested position

    • Maps candlestick selectors to 2D array of SVG elements for highlighting

      Parameters

      • selectors: string | string[] | CandlestickSelector | undefined

        CSS selectors or structured candlestick selectors

      Returns HighlightValue[][] | null

      2D array of SVG elements or null if no selectors provided

    • Moves to the next value in the specified direction that matches the comparison type

      Parameters

      • direction: "left" | "right"

        Direction to search (left or right)

      • type: "lower" | "higher"

        Comparison type (lower or higher)

      Returns boolean

      True if a matching value was found and moved to

    • Exposes the bullish/bearish/neutral rotor filter units. These are appended after the built-in lower/higher value compare units, so cycling the rotor offers: all data point (default), lower value, higher value, and one unit per trend that actually occurs in the data. The default "all data point" unit is provided by the built-in data mode.

      A trend with no candles is omitted so the rotor cycle carries no dead-end modes (where every move would just report "no point found"), mirroring how GRID_MODE / INTERSECTION_MODE are gated on capability. The list is precomputed in the constructor (candles are immutable), so this returns the cached reference — callers must treat it as read-only.

      Returns readonly RotorFilterUnit[]

      The present trend-filter rotor units in cycle order

    • Jumps to the previous/next candle whose trend matches the active filter unit, preserving the current segment. Trend filtering runs along the candle axis; the rotor service handles up/down (announcing them as unavailable) and only dispatches left/right here.

      Parameters

      • key: string

        The trend to navigate ('Bull', 'Bear', or 'Neutral')

      • direction: "left" | "right"

        The direction to search

      Returns boolean

      True if a matching candle was found and moved to

    • Maps SVG elements to their center coordinates for click navigation

      Returns { x: number; y: number; row: number; col: number; element: SVGElement }[] | null

      Array of center coordinates with row/col indices or null

    • Moves the trace to the nearest highlight point for a pointer/hover event.

      The highlight grid is [sortedSegmentPosition][pointIndex] in BOTH orientations (see mapToSvgElements), so nearest.col is always the candle index and nearest.row is the value-sorted segment position. Those sorted coordinates are translated straight into the candle/segment model state here, rather than delegating to moveToIndex, which interprets rows in static CANDLESTICK_SECTIONS order — an interpretation the braille path relies on and must keep.

      Parameters

      • _x: number

        Screen-space x position of the pointer

      • _y: number

        Screen-space y position of the pointer

      • nearest: NearestPoint

        The nearest highlight point in sorted grid coordinates

      • onCurve: boolean

        Whether the pointer is within the point's bounds

      Returns void