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

    Class ScatterTrace

    Interface for traces that support grid-based navigation. Implemented by trace types that can divide their plot area into navigable cells (e.g., ScatterTrace with grid config).

    Hierarchy (View Summary)

    Implements

    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
    navigationService: NavigationService
    layer: MaidrLayer
    movable: MovablePlane
    supportsExtrema: false

    Abstract property that subclasses must implement to indicate extrema support

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

    Accessors

    • get isOutOfBounds(): boolean

      Returns boolean

    • set isOutOfBounds(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 highlightValues(): SVGElement[][] | null

      Returns the appropriate highlight elements based on current navigation mode.

      Returns SVGElement[][] | null

      SVG elements for X-based or Y-based highlighting depending on mode

    • get values(): number[][]

      Returns number[][]

    • get hasMultiPoints(): boolean

      Returns boolean

    • get outOfBoundsState(): TraceState

      Returns out-of-bounds state with correct position for grid mode panning. In grid mode, uses gridCol/gridRow for correct left/right audio panning.

      Returns TraceState

    Methods

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

      Returns { row: number; col: number }

      Object with safe row and column indices

    • Base implementation of navigation in HIGHER and LOWER modes of ROTOR, default is no-op Needs to be implemented in Line, Bar, Heatmap, Candlestick

      Parameters

      • _direction: "left" | "right" | "up" | "down"
      • _type: "lower" | "higher"

      Returns boolean

    • Parameters

      • a: number

        Utility function to compare point values for rotor functionality

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

      Returns boolean

      boolean value

    • Moves up 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 down 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 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

    • 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

    • Computes the trace state at an arbitrary position without moving the user's cursor or notifying observers. Used by monitor mode to sonify and announce a newly appended point while the user stays put.

      The state getters read this.row/this.col internally, so the cursor is moved temporarily and always restored in a finally block — this method is the single owner of that pattern.

      Re-entrancy hazard: this is only safe because the entire call chain is synchronous (no await points), so timers (e.g. autoplay ticks) cannot interleave before the finally-restore, and state getters never notify observers. If a getter ever becomes async or triggers notifications, callers could observe the temporary 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

    • 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

    • 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

      Returns boolean

      True if the point is in bounds, false otherwise

    • Returns an empty object to avoid grouping scatter points by audio tone.

      Returns { groupIndex?: number }

      Empty object without groupIndex to maintain consistent audio feedback

    • Initializes scatter plot navigation at the origin in column mode.

      Returns void

    • 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

    • Enters grid cell mode to navigate points within the current cell. Groups cell points by X coordinate (like COL mode) for navigation.

      Returns boolean

      true if entered successfully, false if no points in cell

    • Gets the current point index within the cell (0-indexed).

      Returns number

    • Gets the total number of X-grouped points in the current grid cell.

      Returns number

    • Gets the current X-grouped point within the grid cell.

      Returns ScatterXPoint | null

    • Converts SVG elements to center coordinates for proximity-based navigation.

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

      Array of center points with coordinates and indices, or null if unavailable

    • Finds the nearest scatter point to the given screen coordinates.

      Parameters

      • _x: number

        The x-coordinate in screen space

      • _y: number

        The y-coordinate in screen space

      Returns { element: SVGElement; row: number; col: number } | null

      The nearest point with its element and indices, or null if unavailable

    • Moves to the nearest scatter point at the specified screen coordinates.

      Parameters

      • x: number

        The x-coordinate in screen space

      • y: number

        The y-coordinate in screen space

      Returns void