GitHub user dosubot[bot] added a comment to the discussion: Multi-Tenant User 
management

<!-- Answer -->
Superset displays time-series chart x-axes (including line, area, and bar 
charts) in UTC by default—there’s no built-in per-user time zone support in the 
dashboard UI or chart controls. All time zone handling is global or 
dataset-specific, and the frontend always renders timestamps in UTC unless you 
customize the code [source](https://github.com/apache/superset/issues/33570).

However, ECharts (used for most time-series charts) is flexible and can be 
customized to display times in a user’s local time zone. Superset’s frontend 
includes a TimezoneSelector component and uses the dayjs library with timezone 
support, but these aren’t wired into dashboards or chart controls out of the 
box 
[source](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/packages/superset-ui-core/src/components/TimezoneSelector/index.tsx).

To implement per-user time zone display, you’d need to: (1) capture the user’s 
preferred time zone (using TimezoneSelector or another UI), (2) store it (in 
session, user attribute, etc.), and (3) pass it to the ECharts chart’s 
transformProps function, where you can use a custom x-axis formatter (with 
dayjs.tz) to render axis labels in the user’s time zone 
[source](https://github.com/apache/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts).
 This approach works for any ECharts-based time-series chart.

There’s no direct way to edit ECharts JSON config in the UI; you’d need to 
modify the transformProps.ts file for the relevant chart type 
[source](https://github.com/apache/superset/discussions/31802). Other chart 
types (like area and bar) use the same ECharts infrastructure and support 
similar customization.

There are no official plugins or documented best practices for end-to-end 
per-user time zone handling in Superset dashboards as of now, so this would be 
a custom frontend extension. The building blocks exist, but you’d need to wire 
them together in your deployment.


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot).*

---
<sup>How did I do? 
[Good](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=great_response)
 | 
[Irrelevant](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=irrelevant_answer)
 | 
[Incorrect](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=incorrect_sources)
 | 
[Verbose](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=too_verbose)
 | 
[Hallucination](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=hallucination)
 | [Report 
🐛](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=bug_report)
 | 
[Other](https://app.dosu.dev/response-feedback/8af4bb87-33c7-4dd1-b347-4500347890fd?feedback_type=other)</sup>&nbsp;&nbsp;[![Join
 
Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Sh
 are on 
X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/33877)

GitHub link: 
https://github.com/apache/superset/discussions/33877#discussioncomment-13731389

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: 
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to