Skip to content

Add relational field support on x-axis of bar chart#26489

Merged
AlexGaillard merged 8 commits intodirectus:mainfrom
JamesW1:jw-insights-axis
Jan 16, 2026
Merged

Add relational field support on x-axis of bar chart#26489
AlexGaillard merged 8 commits intodirectus:mainfrom
JamesW1:jw-insights-axis

Conversation

@JamesW1
Copy link
Contributor

@JamesW1 JamesW1 commented Jan 15, 2026

Scope

Context: https://community.directus.io/t/insights-labels/1807/1

What's changed:

  • Added x-axis Display Field option to bar chart panel for relational fields
  • When x-axis is a relational field, users can select a field from the related collection to display instead of UUIDs
  • Uses two-query approach: aggregation query + display value lookup query
Screenshot 2026-01-15 at 10 43 32 Screenshot 2026-01-15 at 11 08 19 image

Potential Risks / Drawbacks

  • Additional API query when display field is configured (minor performance impact)
  • Fetches all records from related collection (could be large for big datasets)

Tested Scenarios

  • Bar chart with relational x-axis field showing display values instead of UUIDs
  • Bar chart without display field configured (unchanged behavior)
  • Bar chart with non-relational x-axis (display field option stays hidden)
  • Conditional styling working with x-axis labels
  • Null/missing display values fall back to raw UUID

Review Notes / Questions

  • Display field option only appears when x-axis is a relational field
  • Note I could not use with RenderTemplate two-query approach: the aggregation query doesn't support fetching related fields, so we need a separate query to get the display values.

Checklist

  • Added or updated tests
  • Documentation PR created here or not required
  • OpenAPI package PR created here or not required

Fixes #<num>

@JamesW1 JamesW1 requested a review from AlexGaillard as a code owner January 15, 2026 11:19
@codecov
Copy link

codecov bot commented Jan 15, 2026

Codecov Report

❌ Patch coverage is 42.10526% with 55 lines in your changes missing coverage. Please review.
✅ Project coverage is 63.38%. Comparing base (213c67b) to head (c73ea8b).
⚠️ Report is 1 commits behind head on main.

❌ Your patch status has failed because the patch coverage (42.10%) is below the target coverage (80.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #26489      +/-   ##
==========================================
- Coverage   63.39%   63.38%   -0.02%     
==========================================
  Files        2106     2106              
  Lines      136616   136707      +91     
  Branches     8613     8613              
==========================================
+ Hits        86613    86650      +37     
- Misses      50003    50057      +54     
Flag Coverage Δ
api 45.75% <ø> (ø)
app 74.92% <42.10%> (-0.05%) ⬇️
composables 82.35% <ø> (ø)
create-directus-extension 94.44% <ø> (ø)
create-directus-project 98.43% <ø> (ø)
env 99.67% <ø> (ø)
errors 97.47% <ø> (ø)
extensions 35.63% <ø> (ø)
extensions-registry 95.27% <ø> (ø)
extensions-sdk 14.33% <ø> (ø)
format-title 100.00% <ø> (ø)
memory 95.64% <ø> (ø)
pressure 77.63% <ø> (ø)
release-notes-generator 81.14% <ø> (ø)
schema-builder 81.42% <ø> (ø)
sdk 25.95% <ø> (ø)
storage 92.00% <ø> (ø)
storage-driver-azure 76.76% <ø> (ø)
storage-driver-cloudinary 81.14% <ø> (ø)
storage-driver-gcs 69.72% <ø> (ø)
storage-driver-local 69.76% <ø> (ø)
storage-driver-s3 52.04% <ø> (ø)
storage-driver-supabase 68.63% <ø> (ø)
system-data 71.42% <ø> (ø)
update-check 55.67% <ø> (ø)
utils 90.26% <ø> (ø)
validation 44.50% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

This comment was marked as resolved.

Copy link
Member

@AlexGaillard AlexGaillard left a comment

Choose a reason for hiding this comment

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

📊

@AlexGaillard AlexGaillard merged commit 524d643 into directus:main Jan 16, 2026
62 of 65 checks passed
@github-actions github-actions bot added this to the Next Release milestone Jan 16, 2026
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Feb 5, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [directus/directus](https://github.com/directus/directus) | minor | `11.14.1` → `11.15.0` |

---

### Release Notes

<details>
<summary>directus/directus (directus/directus)</summary>

### [`v11.15.0`](https://github.com/directus/directus/releases/tag/v11.15.0)

[Compare Source](directus/directus@v11.14.1...v11.15.0)

##### ⚠️ Potential Breaking Changes

**Attached prompts, content items, and visual editor elements to AI Assistant Context ([#&#8203;26512](directus/directus#26512) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))**
To use this feature, update [@&#8203;directus/visual-editing](https://github.com/directus/visual-editing) to v1.2.0+ on your website.

##### ✨ New Features & Improvements

- **[@&#8203;directus/app](https://github.com/directus/app)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
  - Attached prompts, content items, and visual editor elements to AI Assistant Context ([#&#8203;26512](directus/directus#26512) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Added multi-provider AI support with Google and OpenAI-compatible providers. Extracted shared AI types into new `@directus/ai` package. ([#&#8203;26481](directus/directus#26481) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Added toggle to allow comparing revision to previous revision ([#&#8203;26480](directus/directus#26480) by [@&#8203;robluton](https://github.com/robluton))
  - Added relational field support on x-axis of bar chart ([#&#8203;26489](directus/directus#26489) by [@&#8203;JamesW1](https://github.com/JamesW1))
  - Added visual editing support to the live preview split pane, including display options menu, full-width mode with drag-to-expand, and quick access to the Visual Editor module. ([#&#8203;26463](directus/directus#26463) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Changed permission-blocked fields from disabled to non-editable appearance ([#&#8203;26572](directus/directus#26572) by [@&#8203;HZooly](https://github.com/HZooly))
- **[@&#8203;directus/api](https://github.com/directus/api)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
  - Attached prompts, content items, and visual editor elements to AI Assistant Context ([#&#8203;26512](directus/directus#26512) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Added multi-provider AI support with Google and OpenAI-compatible providers. Extracted shared AI types into new `@directus/ai` package. ([#&#8203;26481](directus/directus#26481) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
- **[@&#8203;directus/sdk](https://github.com/directus/sdk)**
  - Fixed race condition and allow accessing the connected state ([#&#8203;26511](directus/directus#26511) by [@&#8203;Nitwel](https://github.com/Nitwel))
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
- **[@&#8203;directus/system-data](https://github.com/directus/system-data)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
- **[@&#8203;directus/types](https://github.com/directus/types)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
  - Added multi-provider AI support with Google and OpenAI-compatible providers. Extracted shared AI types into new `@directus/ai` package. ([#&#8203;26481](directus/directus#26481) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
- **[@&#8203;directus/errors](https://github.com/directus/errors)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
- **[@&#8203;directus/env](https://github.com/directus/env)**
  - Added deployment module for triggering deployments from Directus with Vercel as first supported provider ([#&#8203;26473](directus/directus#26473) by [@&#8203;gaetansenn](https://github.com/gaetansenn))
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
- **[@&#8203;directus/utils](https://github.com/directus/utils)**
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
- **[@&#8203;directus/ai](https://github.com/directus/ai)**
  - Attached prompts, content items, and visual editor elements to AI Assistant Context ([#&#8203;26512](directus/directus#26512) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Added multi-provider AI support with Google and OpenAI-compatible providers. Extracted shared AI types into new `@directus/ai` package. ([#&#8203;26481](directus/directus#26481) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
- **[@&#8203;directus/memory](https://github.com/directus/memory)**
  - Added distributed locking ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))

##### 🐛 Bug Fixes & Optimizations

- **[@&#8203;directus/app](https://github.com/directus/app)**
  - Replaced deprecated `ldapjs` with `ldapts` ([#&#8203;26363](directus/directus#26363) by [@&#8203;dstockton](https://github.com/dstockton))
  - Fixed an issue where the caret would jump to the end of the input in `v-template-input` when typing or updating content. ([#&#8203;26520](directus/directus#26520) by [@&#8203;mustafaazad03](https://github.com/mustafaazad03))
  - Fixed back button navigation on related items ([#&#8203;26553](directus/directus#26553) by [@&#8203;robluton](https://github.com/robluton))
  - Fixed table options menu clipping in markdown editor ([#&#8203;26487](directus/directus#26487) by [@&#8203;DamnItAzriel](https://github.com/DamnItAzriel))
  - Hide AI settings page when MCP and AI features are disabled through ENV ([#&#8203;26504](directus/directus#26504) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Updated dependency ([#&#8203;26518](directus/directus#26518) by [@&#8203;rijkvanzanten](https://github.com/rijkvanzanten))
  - Fixed inconsistent disabled state across interfaces ([#&#8203;26470](directus/directus#26470) by [@&#8203;formfcw](https://github.com/formfcw))
  - Fixed an issue where custom CSS classes applied to PrivateView were not rendered ([#&#8203;26523](directus/directus#26523) by [@&#8203;u12206050](https://github.com/u12206050))
  - Fixed WYSIWYG interface not rendering when field is named "tooltip" ([#&#8203;26581](directus/directus#26581) by [@&#8203;robluton](https://github.com/robluton))
  - Fixed issue preventing sidebar details from being fetched when navigating back ([#&#8203;26542](directus/directus#26542) by [@&#8203;robluton](https://github.com/robluton))
  - Fixed Vue warning by passing required prop to interfaces ([#&#8203;26506](directus/directus#26506) by [@&#8203;formfcw](https://github.com/formfcw))
  - Fixed hardcoded "Loading..." text in field tree by using translation key ([#&#8203;26526](directus/directus#26526) by [@&#8203;sinan-yildiz-marsus](https://github.com/sinan-yildiz-marsus))
  - Renamed AI Chat to AI Assistant ([#&#8203;26517](directus/directus#26517) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
- **[@&#8203;directus/api](https://github.com/directus/api)**
  - Improved error message for system field updates that are not schema.is\_indexed ([#&#8203;26548](directus/directus#26548) by [@&#8203;JamesW1](https://github.com/JamesW1))
  - Replaced deprecated `ldapjs` with `ldapts` ([#&#8203;26363](directus/directus#26363) by [@&#8203;dstockton](https://github.com/dstockton))
  - Changed users.last\_access display mode to absolute ([#&#8203;26548](directus/directus#26548) by [@&#8203;JamesW1](https://github.com/JamesW1))
- **[@&#8203;directus/system-data](https://github.com/directus/system-data)**
  - Added collaborative editing ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))
  - Added multi-provider AI support with Google and OpenAI-compatible providers. Extracted shared AI types into new `@directus/ai` package. ([#&#8203;26481](directus/directus#26481) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
  - Changed users.last\_access display mode to absolute ([#&#8203;26548](directus/directus#26548) by [@&#8203;JamesW1](https://github.com/JamesW1))
  - Renamed AI Chat to AI Assistant ([#&#8203;26517](directus/directus#26517) by [@&#8203;bryantgillespie](https://github.com/bryantgillespie))
- **[@&#8203;directus/env](https://github.com/directus/env)**
  - Fixed LDAP DN properties casted as arrays ([#&#8203;26579](directus/directus#26579) by [@&#8203;ComfortablyCoding](https://github.com/ComfortablyCoding))
- **[@&#8203;directus/memory](https://github.com/directus/memory)**
  - Handled empty buffers to prevent errors during race conditions or disconnects ([#&#8203;26172](directus/directus#26172) by [@&#8203;Nitwel](https://github.com/Nitwel))

##### 📦 Published Versions

- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/storage-driver-s3@&#8203;12.1.1`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`
- `@directus/[email protected]`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4zLjYiLCJ1cGRhdGVkSW5WZXIiOiI0My4zLjYiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImltYWdlIl19-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/3752
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants