Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new calendar component #761

Open
lovasoa opened this issue Jan 3, 2025 · 0 comments
Open

new calendar component #761

lovasoa opened this issue Jan 3, 2025 · 0 comments
Labels
enhancement New feature or request Winter Of Code 4.0 See winterofcode.tech

Comments

@lovasoa
Copy link
Collaborator

lovasoa commented Jan 3, 2025

SQLPage Calendar Component - Technical Design Document

Overview

The Calendar component will allow users to visualize and interact with time-based data in a familiar calendar interface. This document outlines the technical design and implementation strategy.

Component Properties

Top-Level Properties

  1. title (optional)

    • Text displayed above calendar
    • Similar to chart/map components' title implementation
  2. initial_view (optional)

    • Controls initial calendar display format
    • Options: "month", "week", "day"
    • Defaults to "month"
  3. height (optional)

    • Sets fixed calendar height in pixels
    • Similar to chart component's height property
    • Defaults to auto-height
  4. json_url (optional)

    • Enables dynamic event loading
    • Points to SQLPage JSON endpoint
    • Similar to dynamic component's implementation
  5. navigation (optional, boolean)

    • Enables/disables date navigation controls
    • Defaults to true
  6. today (optional, boolean)

    • Shows/hides "Today" button
    • Defaults to true

Row-Level Properties

  1. title (required)

    • Event title text
    • Displayed in calendar cells
  2. start (required)

    • Event start time
    • Supports both date and datetime
  3. end (optional)

    • Event end time
    • Defaults to start time for single-day events
  4. color (optional)

    • Event visual styling
    • Uses SQLPage color system (like chart/timeline components)
  5. url (optional)

    • Click destination
    • Similar to list component's link property
  6. description and description_md (optional)

    • Event details
    • Shown in tooltip/popup
  7. all_day (optional, boolean)

    • Indicates full-day events
    • Affects visual display

Technical Implementation Details

File Structure

Look at these existing files for reference patterns:

  • sqlpage/templates/chart.handlebars - For component template structure
  • sqlpage/apexcharts.js - For JavaScript initialization patterns
  • examples/official-site/sqlpage/migrations/ - For component documentation

Required Changes

  1. Component Registration
  • Location: examples/official-site/sqlpage/migrations/
  • New file: XX_calendar.sql (XX = next number in sequence)
  • Purpose: Register component and document properties
  • Reference: See how chart/map components are documented
  1. Template Creation
  • Location: sqlpage/templates/
  • New file: calendar.handlebars
  • Structure:
    • Card wrapper (like map component)
    • Title section
    • Calendar container
    • Data embedding section
  • Reference: Study map.handlebars for structure
  1. JavaScript Integration
  • Location: sqlpage/
  • New file: calendar.js
  • Key sections:
    • Initialization function
    • Event handling
    • View management
    • Data processing
  • Reference: Study apexcharts.js initialization patterns

Integration Points

  1. JSON API Integration
  • Uses existing JSON component
  • Enables dynamic event loading
  • Reference: Study dynamic component implementation
  1. SQLPage Core Integration
  • Component registration
  • Reference: Study how chart component is integrated
  1. Color System Integration
  • Uses existing SQLPage color system
  • Reference: Study timeline component's color handling

Testing Strategy

  1. Unit Tests
  • Test date handling
  • Validate property processing
  1. Integration Tests
  • Add a spec file to the end to end tests

Documentation

  1. Component Documentation
  • Usage examples
  • Property descriptions
  • Common patterns
  • Location: examples/official-site/sqlpage/migrations/XXX-calendar.sql
  1. Example Application
  • Basic calendar
  • Dynamic calendar
  • Multi-calendar view
  • Location: Create new directory in examples/
@lovasoa lovasoa added enhancement New feature or request Winter Of Code 4.0 See winterofcode.tech labels Jan 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Winter Of Code 4.0 See winterofcode.tech
Projects
None yet
Development

No branches or pull requests

1 participant