Skip to content

Add Annotation and Comment Features for Collaborative Analysis #277

Description

@cliftonc

Summary

Enable users to add annotations to specific data points, time periods, or chart elements, and collaborate through threaded comments on dashboards and visualizations.

Current State

No annotation or comment functionality. Users cannot add context or collaborate within the analytics interface.

Proposed Features

Point Annotations

<ChartWithAnnotations
  annotations={[
    {
      type: 'point',
      dimension: 'Sales.date',
      value: '2024-03-15',
      label: 'Marketing campaign launched',
      icon: 'rocket'
    }
  ]}
/>

Types:

  • Point Annotation: Mark specific data points
  • Range Annotation: Highlight time periods or value ranges
  • Threshold Lines: Show target/goal lines
  • Text Notes: Free-form notes on charts

Dashboard Comments

<CommentThread
  targetId="portlet-123"
  targetType="portlet"
  allowMentions={true}
  notifyOnReply={true}
/>

Features:

  • Threaded discussions on dashboards and portlets
  • @Mentions to tag team members
  • Resolve/unresolve comment threads
  • Email notifications for mentions/replies

Visibility Controls

  • Show/hide annotations per user preference
  • Public vs. private annotations
  • Role-based visibility (admin-only annotations)

Export Integration

  • Include annotations in PDF/image exports
  • Export comments as report appendix

Competitor Reference

  • Pyramid Analytics: "Comments and annotations within analytic reports serve as a powerful, ubiquitous collaboration tool"
  • Sigma Computing: "Add comments and annotations directly within reports"
  • Luzmo: "Fuel collaboration with alerts, comments, dashboard sharing"

Technical Approach

  1. Create Annotation and Comment data models
  2. Build AnnotationOverlay component for chart integration
  3. Add CommentThread component for discussions
  4. Implement notification system for mentions
  5. Store annotations/comments in server with REST API

Data Models

interface Annotation {
  id: string
  dashboardId: string
  portletId?: string
  type: 'point' | 'range' | 'threshold' | 'text'
  target: { dimension: string; value: any }
  content: string
  createdBy: string
  createdAt: Date
}

interface Comment {
  id: string
  parentId?: string // For threading
  targetType: 'dashboard' | 'portlet' | 'annotation'
  targetId: string
  content: string
  mentions: string[]
  resolved: boolean
  createdBy: string
  createdAt: Date
}

Labels

enhancement feature-request client collaboration

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready-for-humanFully specified, requires human implementation

    Projects

    Status
    Idea

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions