Skip to content

[DASHBOARDS] Add default order by and date granularity when choosing field#16143

Merged
bosiraphael merged 2 commits intomainfrom
r--add-default-order-by-and-date-granularity
Nov 27, 2025
Merged

[DASHBOARDS] Add default order by and date granularity when choosing field#16143
bosiraphael merged 2 commits intomainfrom
r--add-default-order-by-and-date-granularity

Conversation

@bosiraphael
Copy link
Copy Markdown
Contributor

QA

CleanShot.2025-11-27.at.15.55.50.mp4
CleanShot.2025-11-27.at.15.57.44.mp4

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Nov 27, 2025

Greptile Overview

Greptile Summary

Refactors chart field selection to automatically set default orderBy (FIELD_ASC) and dateGranularity (DAY) when users choose a grouping field. The implementation extracts previously inline logic into a dedicated utility function buildChartGroupByFieldConfigUpdate, improving code maintainability and consistency.

  • Extracted field configuration logic from ChartGroupByFieldSelectionDropdownContentBase into reusable utility
  • Sets sensible defaults for primary/secondary axes and pie chart grouping fields
  • Handles different chart types (bar, line, pie) with appropriate configuration properties
  • Added test coverage for main scenarios

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • Clean refactoring that extracts inline logic into a well-structured utility function with good test coverage. The changes improve code maintainability without altering core behavior. No breaking changes or security concerns.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
packages/twenty-front/src/modules/command-menu/pages/page-layout/utils/buildChartGroupByFieldConfigUpdate.ts 5/5 Extracts chart field configuration logic into a reusable utility function that sets default orderBy and dateGranularity values when fields are selected
packages/twenty-front/src/modules/command-menu/pages/page-layout/utils/tests/buildChartGroupByFieldConfigUpdate.test.ts 4/5 Adds tests for the new utility function covering primary axis, secondary axis, and pie chart scenarios
packages/twenty-front/src/modules/command-menu/pages/page-layout/components/dropdown-content/ChartGroupByFieldSelectionDropdownContentBase.tsx 5/5 Refactors inline configuration logic to use the new utility function, removing code duplication and improving maintainability

Sequence Diagram

sequenceDiagram
    participant User
    participant Dropdown as ChartGroupByFieldSelectionDropdownContentBase
    participant Util as buildChartGroupByFieldConfigUpdate
    participant Hook as useUpdateCurrentWidgetConfig
    participant Store as Widget Config Store

    User->>Dropdown: Select field from dropdown
    Dropdown->>Dropdown: handleSelectField(fieldMetadataItem)
    Dropdown->>Util: buildChartGroupByFieldConfigUpdate({configuration, keys, fieldId})
    
    alt Primary Axis
        Util->>Util: Set primaryAxisOrderBy = FIELD_ASC (if not exists)
        Util->>Util: Set primaryAxisDateGranularity = DAY (if not exists)
    else Secondary Axis (Bar Chart)
        Util->>Util: Set secondaryAxisOrderBy = FIELD_ASC (if not exists)
        Util->>Util: Set secondaryAxisGroupByDateGranularity = DAY (if not exists)
        Util->>Util: Set groupMode = STACKED (if not exists)
    else Secondary Axis (Line Chart)
        Util->>Util: Set secondaryAxisOrderBy = FIELD_ASC (if not exists)
        Util->>Util: Set secondaryAxisGroupByDateGranularity = DAY (if not exists)
        Util->>Util: Set isStacked = true (if not exists)
    else Pie Chart GroupBy
        Util->>Util: Set orderBy = FIELD_ASC (if not exists)
        Util->>Util: Set dateGranularity = DAY (if not exists)
    end
    
    Util-->>Dropdown: Return config update object
    Dropdown->>Hook: updateCurrentWidgetConfig(configToUpdate)
    Hook->>Store: Update widget configuration
    Store-->>User: Chart updates with default ordering and date granularity
Loading

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Preview Environment Ready!

Your preview environment is available at: http://bore.pub:34242

This environment will automatically shut down when the PR is closed or after 5 hours.

Copy link
Copy Markdown
Contributor

@ehconitin ehconitin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@bosiraphael bosiraphael merged commit accd55d into main Nov 27, 2025
65 of 66 checks passed
@bosiraphael bosiraphael deleted the r--add-default-order-by-and-date-granularity branch November 27, 2025 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants