@gooddata/sdk-ui-dashboard 11.51.0-alpha.0 → 11.51.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/NOTICE +4 -4
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/index.d.ts +6 -1
  5. package/esm/index.d.ts.map +1 -1
  6. package/esm/index.js +6 -1
  7. package/esm/model/store/meta/index.d.ts +1 -0
  8. package/esm/model/store/meta/index.d.ts.map +1 -1
  9. package/esm/model/store/meta/metaReducers.d.ts +5 -1
  10. package/esm/model/store/meta/metaReducers.d.ts.map +1 -1
  11. package/esm/model/store/meta/metaReducers.js +9 -0
  12. package/esm/model/store/meta/metaSelectors.d.ts +23 -1
  13. package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
  14. package/esm/model/store/meta/metaSelectors.js +33 -2
  15. package/esm/model/store/meta/metaState.d.ts +1 -1
  16. package/esm/model/store/meta/metaState.d.ts.map +1 -1
  17. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts +1 -1
  18. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
  19. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +9 -9
  20. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts +7 -2
  21. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.d.ts.map +1 -1
  22. package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultLoadingAlertingDialog.js +1 -1
  23. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +6 -8
  24. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
  25. package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +5 -2
  26. package/esm/presentation/automations/alerting/types.d.ts +30 -5
  27. package/esm/presentation/automations/alerting/types.d.ts.map +1 -1
  28. package/esm/presentation/automations/connectors/AlertingConnector.d.ts.map +1 -1
  29. package/esm/presentation/automations/connectors/AlertingConnector.js +22 -25
  30. package/esm/presentation/automations/connectors/AlertingConnector.test.js +71 -5
  31. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts +7 -1
  32. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.d.ts.map +1 -1
  33. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.js +12 -2
  34. package/esm/presentation/automations/connectors/hooks/useBuildAlertingDialogContext.test.js +28 -2
  35. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts +29 -1
  36. package/esm/presentation/automations/contexts/AlertingDialogContext.d.ts.map +1 -1
  37. package/esm/presentation/automations/contexts/AlertingDialogContext.js +12 -0
  38. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts +14 -0
  39. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.d.ts.map +1 -1
  40. package/esm/presentation/automations/contexts/AlertingManagementDialogContext.js +12 -0
  41. package/esm/presentation/automations/contexts/AutomationsContext.d.ts +13 -0
  42. package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
  43. package/esm/presentation/automations/contexts/AutomationsContext.js +9 -0
  44. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +15 -0
  45. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
  46. package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.js +13 -0
  47. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +13 -1
  48. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -1
  49. package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +12 -0
  50. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
  51. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +11 -16
  52. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.d.ts.map +1 -1
  53. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.js +7 -3
  54. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts +2 -1
  55. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts.map +1 -1
  56. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.js +12 -4
  57. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.d.ts +17 -7
  58. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.d.ts.map +1 -1
  59. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/attachmentFormats.js +18 -8
  60. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts +12 -0
  61. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.d.ts.map +1 -0
  62. package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useElementHeightSnapshot.js +41 -0
  63. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts +4 -1
  64. package/esm/presentation/automations/scheduledEmail/utils/timezone.d.ts.map +1 -1
  65. package/esm/presentation/automations/scheduledEmail/utils/timezone.js +14 -138
  66. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.d.ts.map +1 -1
  67. package/esm/presentation/dashboard/DashboardHeader/SettingsDialogProvider.js +1 -0
  68. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.d.ts.map +1 -1
  69. package/esm/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.js +52 -14
  70. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts +11 -0
  71. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts.map +1 -0
  72. package/esm/presentation/dashboardSettingsDialog/TimezoneOption.js +36 -0
  73. package/esm/presentation/dashboardSettingsDialog/types.d.ts +2 -1
  74. package/esm/presentation/dashboardSettingsDialog/types.d.ts.map +1 -1
  75. package/esm/presentation/dashboardSettingsDialog/useDialogData.d.ts.map +1 -1
  76. package/esm/presentation/dashboardSettingsDialog/useDialogData.js +4 -1
  77. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.d.ts.map +1 -1
  78. package/esm/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js +30 -1
  79. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +44 -0
  80. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  81. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +44 -0
  82. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.d.ts.map +1 -1
  83. package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.js +2 -1
  84. package/esm/sdk-ui-dashboard.d.ts +370 -6
  85. package/package.json +21 -21
  86. package/styles/css/dashboard.css +7 -0
  87. package/styles/css/dashboard.css.map +1 -1
  88. package/styles/css/main.css +7 -0
  89. package/styles/css/main.css.map +1 -1
  90. package/styles/scss/dashboard.scss +12 -0
@@ -1,142 +1,18 @@
1
1
  // (C) 2019-2026 GoodData Corporation
2
- const JANUARY_OFFSET = -new Date(2011, 0, 1, 0, 0, 0, 0).getTimezoneOffset();
3
- const JUNE_OFFSET = -new Date(2011, 5, 1, 0, 0, 0, 0).getTimezoneOffset();
4
- const timezonesRaw = [
5
- ["Pacific/Midway", "GMT-11:00 International Date Line West", -660, -660],
6
- ["Pacific/Pago_Pago", "GMT-11:00 Samoa", -660, -660],
7
- ["Pacific/Honolulu", "GMT-10:00 Hawaii", -600, -600],
8
- ["America/Juneau", "GMT-09:00 Alaska", -540, -480],
9
- ["America/Los_Angeles", "GMT-08:00 Pacific Time (US & Canada)", -480, -420],
10
- ["America/Tijuana", "GMT-08:00 Tijuana", -480, -420],
11
- ["America/Phoenix", "GMT-07:00 Arizona", -420, -420],
12
- ["America/Chihuahua", "GMT-07:00 Chihuahua", -420, -360],
13
- ["America/Mazatlan", "GMT-07:00 Mazatlan", -420, -360],
14
- ["America/Denver", "GMT-07:00 Mountain Time (US & Canada)", -420, -360],
15
- ["America/Guatemala", "GMT-06:00 Central America", -360, -360],
16
- ["America/Chicago", "GMT-06:00 Central Time (US & Canada)", -360, -300],
17
- ["America/Mexico_City", "GMT-06:00 Mexico City", -360, -300],
18
- ["America/Monterrey", "GMT-06:00 Monterrey", -360, -300],
19
- ["America/Regina", "GMT-06:00 Saskatchewan", -360, -360],
20
- ["America/Bogota", "GMT-05:00 Bogota", -300, -300],
21
- ["America/New_York", "GMT-05:00 Eastern Time (US & Canada)", -300, -240],
22
- ["America/Indiana/Indianapolis", "GMT-05:00 Indiana (East)", -300, -240],
23
- ["America/Lima", "GMT-05:00 Lima", -300, -300],
24
- ["America/Caracas", "GMT-04:30 Caracas", -270, -270],
25
- ["America/Halifax", "GMT-04:00 Atlantic Time (Canada)", -240, -180],
26
- ["America/Guyana", "GMT-04:00 Georgetown", -240, -240],
27
- ["America/La_Paz", "GMT-04:00 La Paz", -240, -240],
28
- ["America/Santiago", "GMT-04:00 Santiago", -180, -240],
29
- ["America/St_Johns", "GMT-03:30 Newfoundland", -210, -150],
30
- ["America/Sao_Paulo", "GMT-03:00 Brasilia", -120, -180],
31
- ["America/Argentina/Buenos_Aires", "GMT-03:00 Buenos Aires", -180, -180],
32
- ["America/Godthab", "GMT-03:00 Greenland", -180, -120],
33
- ["Atlantic/South_Georgia", "GMT-02:00 Mid-Atlantic", -120, -120],
34
- ["Atlantic/Azores", "GMT-01:00 Azores", -60, 0],
35
- ["Atlantic/Cape_Verde", "GMT-01:00 Cape Verde Is.", -60, -60],
36
- ["Africa/Casablanca", "GMT+00:00 Casablanca", 0, 0],
37
- ["Europe/Dublin", "GMT+00:00 Dublin", 0, 60],
38
- ["Europe/Lisbon", "GMT+00:00 Lisbon", 0, 60],
39
- ["Europe/London", "GMT+00:00 London", 0, 60],
40
- ["Africa/Monrovia", "GMT+00:00 Monrovia", 0, 0],
41
- ["Etc/UTC", "GMT+00:00 UTC", 0, 0],
42
- ["Europe/Amsterdam", "GMT+01:00 Amsterdam", 60, 120],
43
- ["Europe/Belgrade", "GMT+01:00 Belgrade", 60, 120],
44
- ["Europe/Berlin", "GMT+01:00 Berlin", 60, 120],
45
- ["Europe/Bratislava", "GMT+01:00 Bratislava", 60, 120],
46
- ["Europe/Brussels", "GMT+01:00 Brussels", 60, 120],
47
- ["Europe/Budapest", "GMT+01:00 Budapest", 60, 120],
48
- ["Europe/Copenhagen", "GMT+01:00 Copenhagen", 60, 120],
49
- ["Europe/Ljubljana", "GMT+01:00 Ljubljana", 60, 120],
50
- ["Europe/Madrid", "GMT+01:00 Madrid", 60, 120],
51
- ["Europe/Paris", "GMT+01:00 Paris", 60, 120],
52
- ["Europe/Prague", "GMT+01:00 Prague", 60, 120],
53
- ["Europe/Rome", "GMT+01:00 Rome", 60, 120],
54
- ["Europe/Sarajevo", "GMT+01:00 Sarajevo", 60, 120],
55
- ["Europe/Skopje", "GMT+01:00 Skopje", 60, 120],
56
- ["Europe/Stockholm", "GMT+01:00 Stockholm", 60, 120],
57
- ["Europe/Vienna", "GMT+01:00 Vienna", 60, 120],
58
- ["Europe/Warsaw", "GMT+01:00 Warsaw", 60, 120],
59
- ["Africa/Algiers", "GMT+01:00 West Central Africa", 60, 60],
60
- ["Europe/Zagreb", "GMT+01:00 Zagreb", 60, 120],
61
- ["Europe/Athens", "GMT+02:00 Athens", 120, 180],
62
- ["Europe/Bucharest", "GMT+02:00 Bucharest", 120, 180],
63
- ["Africa/Cairo", "GMT+02:00 Cairo", 120, 180],
64
- ["Africa/Harare", "GMT+02:00 Harare", 120, 120],
65
- ["Europe/Helsinki", "GMT+02:00 Helsinki", 120, 180],
66
- ["Europe/Istanbul", "GMT+02:00 Istanbul", 120, 180],
67
- ["Asia/Jerusalem", "GMT+02:00 Jerusalem", 120, 180],
68
- ["Europe/Kiev", "GMT+02:00 Kyiv", 120, 180],
69
- ["Europe/Minsk", "GMT+02:00 Minsk", 120, 180],
70
- ["Africa/Johannesburg", "GMT+02:00 Pretoria", 120, 120],
71
- ["Europe/Riga", "GMT+02:00 Riga", 120, 180],
72
- ["Europe/Sofia", "GMT+02:00 Sofia", 120, 180],
73
- ["Europe/Tallinn", "GMT+02:00 Tallinn", 120, 180],
74
- ["Europe/Vilnius", "GMT+02:00 Vilnius", 120, 180],
75
- ["Asia/Baghdad", "GMT+03:00 Baghdad", 180, 180],
76
- ["Asia/Kuwait", "GMT+03:00 Kuwait", 180, 180],
77
- ["Europe/Moscow", "GMT+03:00 Moscow", 180, 240],
78
- ["Africa/Nairobi", "GMT+03:00 Nairobi", 180, 180],
79
- ["Asia/Riyadh", "GMT+03:00 Riyadh", 180, 180],
80
- ["Asia/Tehran", "GMT+03:30 Tehran", 210, 270],
81
- ["Asia/Baku", "GMT+04:00 Baku", 240, 300],
82
- ["Asia/Muscat", "GMT+04:00 Muscat", 240, 240],
83
- ["Asia/Tbilisi", "GMT+04:00 Tbilisi", 240, 240],
84
- ["Asia/Yerevan", "GMT+04:00 Yerevan", 240, 300],
85
- ["Asia/Kabul", "GMT+04:30 Kabul", 270, 270],
86
- ["Asia/Yekaterinburg", "GMT+05:00 Ekaterinburg", 300, 360],
87
- ["Asia/Karachi", "GMT+05:00 Karachi", 300, 300],
88
- ["Asia/Tashkent", "GMT+05:00 Tashkent", 300, 300],
89
- ["Asia/Kolkata", "GMT+05:30 Kolkata", 330, 330],
90
- ["Asia/Colombo", "GMT+05:30 Sri Jayawardenepura", 330, 330],
91
- ["Asia/Kathmandu", "GMT+05:45 Kathmandu", 345, 345],
92
- ["Asia/Almaty", "GMT+06:00 Almaty", 360, 360],
93
- ["Asia/Dhaka", "GMT+06:00 Dhaka", 360, 360],
94
- ["Asia/Novosibirsk", "GMT+06:00 Novosibirsk", 360, 420],
95
- ["Asia/Rangoon", "GMT+06:30 Rangoon", 390, 390],
96
- ["Asia/Bangkok", "GMT+07:00 Bangkok", 420, 420],
97
- ["Asia/Jakarta", "GMT+07:00 Jakarta", 420, 420],
98
- ["Asia/Krasnoyarsk", "GMT+07:00 Krasnoyarsk", 420, 480],
99
- ["Asia/Shanghai", "GMT+08:00 Beijing", 480, 480],
100
- ["Asia/Chongqing", "GMT+08:00 Chongqing", 480, 480],
101
- ["Asia/Hong_Kong", "GMT+08:00 Hong Kong", 480, 480],
102
- ["Asia/Irkutsk", "GMT+08:00 Irkutsk", 480, 540],
103
- ["Asia/Kuala_Lumpur", "GMT+08:00 Kuala Lumpur", 480, 480],
104
- ["Australia/Perth", "GMT+08:00 Perth", 480, 480],
105
- ["Asia/Singapore", "GMT+08:00 Singapore", 480, 480],
106
- ["Asia/Taipei", "GMT+08:00 Taipei", 480, 480],
107
- ["Asia/Ulaanbaatar", "GMT+08:00 Ulaan Bataar", 480, 480],
108
- ["Asia/Urumqi", "GMT+08:00 Urumqi", 480, 480],
109
- ["Asia/Seoul", "GMT+09:00 Seoul", 540, 540],
110
- ["Asia/Tokyo", "GMT+09:00 Tokyo", 540, 540],
111
- ["Asia/Yakutsk", "GMT+09:00 Yakutsk", 540, 600],
112
- ["Australia/Adelaide", "GMT+09:30 Adelaide", 630, 570],
113
- ["Australia/Darwin", "GMT+09:30 Darwin", 570, 570],
114
- ["Australia/Brisbane", "GMT+10:00 Brisbane", 600, 600],
115
- ["Pacific/Guam", "GMT+10:00 Guam", 600, 600],
116
- ["Australia/Hobart", "GMT+10:00 Hobart", 660, 600],
117
- ["Australia/Melbourne", "GMT+10:00 Melbourne", 660, 600],
118
- ["Pacific/Port_Moresby", "GMT+10:00 Port Moresby", 600, 600],
119
- ["Australia/Sydney", "GMT+10:00 Sydney", 660, 600],
120
- ["Asia/Vladivostok", "GMT+10:00 Vladivostok", 600, 660],
121
- ["Asia/Kamchatka", "GMT+11:00 Kamchatka", 660, 720],
122
- ["Asia/Magadan", "GMT+11:00 Magadan", 660, 720],
123
- ["Pacific/Noumea", "GMT+11:00 New Caledonia", 660, 660],
124
- ["Pacific/Auckland", "GMT+12:00 Auckland", 780, 720],
125
- ["Pacific/Fiji", "GMT+12:00 Fiji", 780, 720],
126
- ["Pacific/Majuro", "GMT+12:00 Marshall Is.", 720, 720],
127
- ["Pacific/Tongatapu", "GMT+13:00 Nuku'alofa", 780, 780],
128
- ];
129
- const timezones = timezonesRaw.map((t) => ({
130
- identifier: t[0],
131
- title: t[1],
132
- januaryOffset: t[2],
133
- juneOffset: t[3],
134
- }));
135
- const TIMEZONE_BY_OFFSETS = timezones.find((tz) => tz.januaryOffset === JANUARY_OFFSET && tz.juneOffset === JUNE_OFFSET);
136
- export const TIMEZONE_DEFAULT = getTimezoneByIdentifier("Etc/UTC");
2
+ import { getTimezoneById, getTimezoneTitle, getUserTimezone as getUserTimezoneItem, } from "@gooddata/sdk-ui-kit";
3
+ function toTimezone(item) {
4
+ return {
5
+ identifier: item.id,
6
+ title: getTimezoneTitle(item),
7
+ januaryOffset: item.januaryOffset,
8
+ juneOffset: item.juneOffset,
9
+ };
10
+ }
11
+ export const TIMEZONE_DEFAULT = toTimezone(getTimezoneById("Etc/UTC"));
137
12
  export function getUserTimezone() {
138
- return TIMEZONE_BY_OFFSETS || TIMEZONE_DEFAULT;
13
+ return toTimezone(getUserTimezoneItem());
139
14
  }
140
- export function getTimezoneByIdentifier(title) {
141
- return timezones.find((tz) => tz.identifier === title);
15
+ export function getTimezoneByIdentifier(identifier) {
16
+ const item = identifier ? getTimezoneById(identifier) : undefined;
17
+ return item ? toTimezone(item) : undefined;
142
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/SettingsDialogProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;AA0DvD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,GAAG,IAAI,CAwB5D"}
1
+ {"version":3,"file":"SettingsDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/SettingsDialogProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;AA2DvD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,GAAG,IAAI,CAwB5D"}
@@ -28,6 +28,7 @@ const useShareDialogDashboardHeader = () => {
28
28
  dispatch(metaActions.setDisablePersistentFiltersAcrossTabs(payload.disablePersistentFiltersAcrossTabs));
29
29
  dispatch(metaActions.setEvaluationFrequency(payload.evaluationFrequency));
30
30
  dispatch(metaActions.setSectionHeadersDateDataSet(payload.sectionHeadersDateDataSet));
31
+ dispatch(metaActions.setDashboardTimezoneConfig(payload.timezoneConfig));
31
32
  }, [closeSettingsDialog, dispatch]);
32
33
  const onErrorSettingsDialog = useCallback(() => {
33
34
  dispatch(uiActions.closeSettingsDialog());
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;AAqC5F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACX,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAiNrD"}
1
+ {"version":3,"file":"DefaultDashboardSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAoD,MAAM,OAAO,CAAC;AA2C5F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAGhE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACX,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CA+QrD"}
@@ -2,13 +2,14 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
2
2
  // (C) 2020-2026 GoodData Corporation
3
3
  import { useCallback, useEffect, useState } from "react";
4
4
  import { FormattedMessage, useIntl } from "react-intl";
5
- import { objRefToString } from "@gooddata/sdk-model";
5
+ import { normalizeDashboardTimezoneConfig, objRefToString, } from "@gooddata/sdk-model";
6
6
  import { Bubble, BubbleHoverTrigger, ConfirmDialog, DialogListHeader, Dropdown, RecurrenceForm, SingleSelectListItem, UiButton, UiListbox, simpleRecurrenceTypeMappingFn, } from "@gooddata/sdk-ui-kit";
7
7
  import { queryDateDatasetsForInsight, } from "../../model/queries/insights.js";
8
8
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
9
9
  import { useDashboardQueryProcessing } from "../../model/react/useDashboardQueryProcessing.js";
10
10
  import { selectDateFormat, selectEnableDashboardPersistentFiltersAcrossTabs, selectEnableDashboardSectionHeadersDateDataSet, selectIsWhiteLabeled, selectLocale, selectSettings, selectWeekStart, } from "../../model/store/config/configSelectors.js";
11
11
  import { selectCrossFilteringEnabledAndSupported } from "../../model/store/topBar/topBarSelectors.js";
12
+ import { TimezoneOption } from "./TimezoneOption.js";
12
13
  import { useDialogData } from "./useDialogData.js";
13
14
  /**
14
15
  * @alpha
@@ -46,45 +47,45 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
46
47
  id: "filters.configurationPanel.crossFiltering.toggle",
47
48
  }), tooltip: intl.formatMessage({
48
49
  id: "filters.configurationPanel.crossFiltering.toggle.tooltip",
49
- }), isChecked: !currentData.disableCrossFiltering, onChange: (newValue) => {
50
+ }), isChecked: !currentData.disableCrossFiltering, onChange: (isChecked) => {
50
51
  setCurrentData({
51
52
  ...currentData,
52
- disableCrossFiltering: newValue,
53
+ disableCrossFiltering: !isChecked,
53
54
  });
54
55
  } }), _jsx(ConfigurationOption, { label: intl.formatMessage({
55
56
  id: "filters.configurationPanel.userFilterReset.toggle",
56
57
  }), tooltip: intl.formatMessage({
57
58
  id: "filters.configurationPanel.userFilterReset.toggle.tooltip",
58
- }), isChecked: !currentData.disableUserFilterReset, onChange: (newValue) => {
59
+ }), isChecked: !currentData.disableUserFilterReset, onChange: (isChecked) => {
59
60
  setCurrentData({
60
61
  ...currentData,
61
- disableUserFilterReset: newValue,
62
+ disableUserFilterReset: !isChecked,
62
63
  });
63
64
  } })
64
65
  ] })) : null, _jsx(ConfigurationOption, { label: intl.formatMessage({
65
66
  id: "filters.configurationPanel.filterViews.toggle",
66
67
  }), tooltip: intl.formatMessage({ id: "filters.configurationPanel.filterViews.toggle.tooltip" }, {
67
68
  p: (chunks) => _jsx("p", { children: chunks }),
68
- }), isChecked: !currentData.disableFilterViews, onChange: (newValue) => {
69
+ }), isChecked: !currentData.disableFilterViews, onChange: (isChecked) => {
69
70
  setCurrentData({
70
71
  ...currentData,
71
- disableFilterViews: newValue,
72
+ disableFilterViews: !isChecked,
72
73
  });
73
74
  } }), _jsx(ConfigurationOption, { label: intl.formatMessage({ id: "filters.configurationPanel.userFilterSave.toggle" }), tooltip: intl.formatMessage({
74
75
  id: "filters.configurationPanel.userFilterSave.toggle.tooltip",
75
- }), isChecked: !currentData.disableUserFilterSave, onChange: (newValue) => {
76
+ }), isChecked: !currentData.disableUserFilterSave, onChange: (isChecked) => {
76
77
  setCurrentData({
77
78
  ...currentData,
78
- disableUserFilterSave: newValue,
79
+ disableUserFilterSave: !isChecked,
79
80
  });
80
81
  } }), enableDashboardPersistentFiltersAcrossTabs ? (_jsx(ConfigurationOption, { label: intl.formatMessage({
81
82
  id: "filters.configurationPanel.persistentFiltersAcrossTabs.toggle",
82
83
  }), tooltip: intl.formatMessage({
83
84
  id: "filters.configurationPanel.persistentFiltersAcrossTabs.toggle.tooltip",
84
- }), isChecked: !currentData.disablePersistentFiltersAcrossTabs, onChange: (newValue) => {
85
+ }), isChecked: !currentData.disablePersistentFiltersAcrossTabs, onChange: (isChecked) => {
85
86
  setCurrentData({
86
87
  ...currentData,
87
- disablePersistentFiltersAcrossTabs: newValue,
88
+ disablePersistentFiltersAcrossTabs: !isChecked,
88
89
  });
89
90
  } })) : null, enableDashboardSectionHeadersDateDataSet ? (_jsx(DateDatasetDropdown, { label: intl.formatMessage({
90
91
  id: "settingsDashboardDialog.sectionHeaders.dateDataset",
@@ -107,14 +108,51 @@ export function DefaultDashboardSettingsDialog({ isVisible, onApply, onCancel /*
107
108
  }), showRepeatTypeDescription: true, showTimezoneInOccurrence: true, dateFormat: dateFormat, weekStart: weekStart, locale: locale, showInheritValue: true, isWhiteLabeled: isWhiteLabeled, customRecurrenceTypeMappingFn: simpleRecurrenceTypeMappingFn }), _jsx("div", { className: "gd-dashboard-settings-evaluation-note", children: currentData.evaluationFrequency === undefined ? (_jsx(FormattedMessage, { id: "settingsDashboardDialog.section.alert.inherit" })) : (_jsx(FormattedMessage, { id: "settingsDashboardDialog.section.alert.note", values: {
108
109
  strong: (chunks) => _jsx("strong", { children: chunks }),
109
110
  } })) })
110
- ] })
111
- ] }) }));
111
+ ] }), settings.enableDashboardTimezone ? (_jsxs("div", { className: "gd-dashboard-settings-dialog-section s-dashboard-settings-timezone", children: [
112
+ _jsx(DialogListHeader, { title: intl.formatMessage({ id: "settingsDashboardDialog.section.timezone" }), className: "gd-dashboard-settings-filters" }), _jsx(TimezoneOption, { label: intl.formatMessage({
113
+ id: "settingsDashboardDialog.section.timezone.defaultTimezone",
114
+ }), tooltip: intl.formatMessage({
115
+ id: "settingsDashboardDialog.section.timezone.defaultTimezone.tooltip",
116
+ }), timezoneConfig: currentData.timezoneConfig, onChange: (timezoneId) => {
117
+ setCurrentData({
118
+ ...currentData,
119
+ timezoneConfig: normalizeDashboardTimezoneConfig({
120
+ ...currentData.timezoneConfig,
121
+ timezoneId,
122
+ }),
123
+ });
124
+ } }), _jsx(ConfigurationOption, { label: intl.formatMessage({
125
+ id: "settingsDashboardDialog.section.timezone.allowUserOverride.toggle",
126
+ }), tooltip: intl.formatMessage({
127
+ id: "settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip",
128
+ }), isChecked: currentData.timezoneConfig?.allowUserOverrideInViewMode ?? false, onChange: (isChecked) => {
129
+ setCurrentData({
130
+ ...currentData,
131
+ timezoneConfig: normalizeDashboardTimezoneConfig({
132
+ ...currentData.timezoneConfig,
133
+ allowUserOverrideInViewMode: isChecked,
134
+ }),
135
+ });
136
+ } }), _jsx(ConfigurationOption, { label: intl.formatMessage({
137
+ id: "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle",
138
+ }), tooltip: intl.formatMessage({
139
+ id: "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip",
140
+ }), isChecked: currentData.timezoneConfig?.showTimezoneInfo ?? false, onChange: (isChecked) => {
141
+ setCurrentData({
142
+ ...currentData,
143
+ timezoneConfig: normalizeDashboardTimezoneConfig({
144
+ ...currentData.timezoneConfig,
145
+ showTimezoneInfo: isChecked,
146
+ }),
147
+ });
148
+ } })
149
+ ] })) : null] }) }));
112
150
  }
113
151
  const BUBBLE_ALIGN_POINTS = [{ align: "bc tl" }];
114
152
  function ConfigurationOption({ label, tooltip, isChecked, onChange }) {
115
153
  return (_jsx("div", { className: "configuration-category-item", children: _jsxs("label", { className: "input-checkbox-toggle", children: [
116
154
  _jsx("input", { type: "checkbox", checked: isChecked, onChange: (e) => {
117
- onChange(!e.currentTarget.checked);
155
+ onChange(e.currentTarget.checked);
118
156
  } }), _jsxs("span", { className: "input-label-text", children: [label, _jsxs(BubbleHoverTrigger, { showDelay: 0, hideDelay: 0, eventsOnBubble: true, className: "configuration-category-item-tooltip-icon", children: [
119
157
  _jsx("span", { className: "gd-icon-circle-question gd-filter-configuration__help-icon" }), _jsx(Bubble, { alignPoints: BUBBLE_ALIGN_POINTS, children: _jsx("div", { className: "gd-filter-configuration__help-tooltip", children: tooltip }) })
120
158
  ] })
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from "react";
2
+ import { type IDashboardTimezoneConfig } from "@gooddata/sdk-model";
3
+ interface ITimezoneOptionProps {
4
+ label: ReactNode;
5
+ tooltip: ReactNode;
6
+ timezoneConfig: IDashboardTimezoneConfig | undefined;
7
+ onChange: (timezoneId: string | undefined) => void;
8
+ }
9
+ export declare function TimezoneOption({ label, tooltip, timezoneConfig, onChange }: ITimezoneOptionProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=TimezoneOption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimezoneOption.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/TimezoneOption.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAIhD,OAAO,EAAoB,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAWtF,UAAU,oBAAoB;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,cAAc,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACrD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAsDhG"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { useMemo } from "react";
4
+ import { useIntl } from "react-intl";
5
+ import { BROWSER_DETECTED } from "@gooddata/sdk-model";
6
+ import { Bubble, BubbleHoverTrigger, TimezoneSelect, } from "@gooddata/sdk-ui-kit";
7
+ const BUBBLE_ALIGN_POINTS = [{ align: "bc tl" }];
8
+ export function TimezoneOption({ label, tooltip, timezoneConfig, onChange }) {
9
+ const intl = useIntl();
10
+ const specialItems = useMemo(() => {
11
+ // TODO INE (CQ-2726): resolve the effective workspace timezone and include it in the item label
12
+ const workspaceItemLabel = intl.formatMessage({
13
+ id: "settingsDashboardDialog.section.timezone.defaultTimezone.workspace",
14
+ });
15
+ // plain ID here — the label template already brackets the value, so the "id (offset)"
16
+ // display label would produce nested brackets
17
+ const browserTimezoneId = Intl.DateTimeFormat().resolvedOptions().timeZone;
18
+ const browserItemLabel = intl.formatMessage({ id: "settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser" }, { timezone: browserTimezoneId });
19
+ return [
20
+ { id: undefined, label: workspaceItemLabel },
21
+ { id: BROWSER_DETECTED, label: browserItemLabel },
22
+ ];
23
+ }, [intl]);
24
+ return (_jsxs("div", { className: "configuration-category-item", children: [
25
+ _jsxs("span", { className: "input-label-text", children: [label, _jsxs(BubbleHoverTrigger, { showDelay: 0, hideDelay: 0, eventsOnBubble: true, className: "configuration-category-item-tooltip-icon", children: [
26
+ _jsx("span", { className: "gd-icon-circle-question gd-filter-configuration__help-icon" }), _jsx(Bubble, { alignPoints: BUBBLE_ALIGN_POINTS, children: _jsx("div", { className: "gd-filter-configuration__help-tooltip", children: tooltip }) })
27
+ ] })
28
+ ] }), _jsx(TimezoneSelect, { value: timezoneConfig?.timezoneId, onChange: onChange, specialItems: specialItems, searchPlaceholder: intl.formatMessage({
29
+ id: "settingsDashboardDialog.section.timezone.select.searchPlaceholder",
30
+ }), ariaLabel: intl.formatMessage({
31
+ id: "settingsDashboardDialog.section.timezone.defaultTimezone",
32
+ }), noMatchLabel: intl.formatMessage({
33
+ id: "settingsDashboardDialog.section.timezone.select.noMatch",
34
+ }) })
35
+ ] }));
36
+ }
@@ -1,6 +1,6 @@
1
1
  import { type ComponentType } from "react";
2
2
  import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
- import { type ObjRef } from "@gooddata/sdk-model";
3
+ import { type IDashboardTimezoneConfig, type ObjRef } from "@gooddata/sdk-model";
4
4
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
5
5
  /**
6
6
  * @alpha
@@ -13,6 +13,7 @@ export interface IDashboardSettingsApplyPayload {
13
13
  evaluationFrequency: string | undefined;
14
14
  sectionHeadersDateDataSet: ObjRef | undefined;
15
15
  disablePersistentFiltersAcrossTabs: boolean;
16
+ timezoneConfig?: IDashboardTimezoneConfig;
16
17
  }
17
18
  /**
18
19
  * @alpha
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,kCAAkC,EAAE,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,OAAO,EAAE,kBAAkB,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,kCAAkC,EAAE,OAAO,CAAC;IAC5C,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC1C;;OAEG;IACH,OAAO,EAAE,kBAAkB,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDialogData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/useDialogData.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,aAAa;;;;;EA4B5B"}
1
+ {"version":3,"file":"useDialogData.d.ts","sourceRoot":"","sources":["../../../src/presentation/dashboardSettingsDialog/useDialogData.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,aAAa;;;;;EAgC5B"}
@@ -1,8 +1,9 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
2
  import { useState } from "react";
3
3
  import { isEqual } from "lodash-es";
4
+ import { normalizeDashboardTimezoneConfig } from "@gooddata/sdk-model";
4
5
  import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
5
- import { selectDisableDashboardCrossFiltering, selectDisableDashboardPersistentFiltersAcrossTabs, selectDisableDashboardUserFilterReset, selectDisableDashboardUserFilterSave, selectDisableFilterViews, selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js";
6
+ import { selectDashboardTimezoneConfig, selectDisableDashboardCrossFiltering, selectDisableDashboardPersistentFiltersAcrossTabs, selectDisableDashboardUserFilterReset, selectDisableDashboardUserFilterSave, selectDisableFilterViews, selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js";
6
7
  export function useDialogData() {
7
8
  const disableCrossFiltering = useDashboardSelector(selectDisableDashboardCrossFiltering) ?? false;
8
9
  const disableUserFilterReset = useDashboardSelector(selectDisableDashboardUserFilterReset) ?? false;
@@ -11,6 +12,7 @@ export function useDialogData() {
11
12
  const disablePersistentFiltersAcrossTabs = useDashboardSelector(selectDisableDashboardPersistentFiltersAcrossTabs) ?? false;
12
13
  const evaluationFrequency = useDashboardSelector(selectEvaluationFrequency) ?? undefined;
13
14
  const sectionHeadersDateDataSet = useDashboardSelector(selectSectionHeadersDateDataSet) ?? undefined;
15
+ const timezoneConfig = normalizeDashboardTimezoneConfig(useDashboardSelector(selectDashboardTimezoneConfig));
14
16
  const [currentData, setCurrentData] = useState({
15
17
  disableCrossFiltering,
16
18
  disableUserFilterSave,
@@ -19,6 +21,7 @@ export function useDialogData() {
19
21
  disablePersistentFiltersAcrossTabs,
20
22
  evaluationFrequency,
21
23
  sectionHeadersDateDataSet,
24
+ timezoneConfig,
22
25
  });
23
26
  const [originalData] = useState(currentData);
24
27
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultDashboardDateFilter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAC;AAiC1E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACvC,MAAM,EACN,aAAa,EACb,eAAe,EACf,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,KAAK,EACR,EAAE,yBAAyB,GAAG,YAAY,CAgK1C"}
1
+ {"version":3,"file":"DefaultDashboardDateFilter.d.ts","sourceRoot":"","sources":["../../../../src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,OAAO,CAAC;AAmC1E,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAmB5D;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACvC,MAAM,EACN,aAAa,EACb,eAAe,EACf,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,KAAK,EACR,EAAE,yBAAyB,GAAG,YAAY,CA0L1C"}
@@ -14,6 +14,17 @@ import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSe
14
14
  import { useCurrentDateFilterConfig } from "../../dragAndDrop/useCurrentDateFilterConfig.js";
15
15
  import { getVisibilityIcon } from "../utils.js";
16
16
  import { DateFilterConfigurationBody } from "./configuration/DateFilterConfigurationBody.js";
17
+ /**
18
+ * Whether the date dimension relevant to the filter exposes the second-level attribute (`GDC.time.second`):
19
+ * a dimension-scoped filter checks its own dataset, a common (dataset-less) filter checks whether any date
20
+ * dimension has seconds enabled.
21
+ */
22
+ function relevantDateDimensionHasSeconds(dateDatasets, dataSetRef) {
23
+ const datasetHasSeconds = (dateDataset) => dateDataset.dateAttributes.some((attribute) => attribute.granularity === "GDC.time.second");
24
+ return dataSetRef
25
+ ? dateDatasets.some((ds) => areObjRefsEqual(ds.dataSet.ref, dataSetRef) && datasetHasSeconds(ds))
26
+ : dateDatasets.some(datasetHasSeconds);
27
+ }
17
28
  /**
18
29
  * Default implementation of the date filter to use on the dashboard's filter bar.
19
30
  *
@@ -70,6 +81,24 @@ export function DefaultDashboardDateFilter({ filter, workingFilter, onFilterChan
70
81
  const hoursMinutesGranularities = ["GDC.time.minute", "GDC.time.hour"];
71
82
  const hasHoursMinutesGranularities = hoursMinutesGranularities.every((granularity) => config.availableGranularities.includes(granularity));
72
83
  const isTimeForAbsoluteRangeEnabled = !!capabilities.supportsTimeGranularities && hasHoursMinutesGranularities;
84
+ // Second-level relative granularities ship in the default config but are surfaced only when the
85
+ // enableSecondGranularities feature flag is on AND the backend supports time granularities; otherwise
86
+ // strip them from the tabs the relative form shows.
87
+ const availableGranularities = useMemo(() => settings.enableSecondGranularities && capabilities.supportsTimeGranularities
88
+ ? config.availableGranularities
89
+ : config.availableGranularities.filter((granularity) => granularity !== "GDC.time.second"), [
90
+ config.availableGranularities,
91
+ settings.enableSecondGranularities,
92
+ capabilities.supportsTimeGranularities,
93
+ ]);
94
+ // Seconds precision in the absolute date filter time field is offered only when the backend supports time
95
+ // granularities, the enableSecondGranularities feature flag is on, and the relevant date dimension exposes
96
+ // the GDC.time.second attribute. This is a stricter, dimension-aware gate than the relative form's seconds
97
+ // tab (which follows availableGranularities); the absolute time field must not appear for a dimension that
98
+ // has no second attribute.
99
+ const isSecondsForAbsoluteRangeEnabled = isTimeForAbsoluteRangeEnabled &&
100
+ !!settings.enableSecondGranularities &&
101
+ relevantDateDimensionHasSeconds(allDateDatasets, filter?.dateFilter.dataSet);
73
102
  const isConfigurationEnabled = isInEditMode &&
74
103
  (!!capabilities.supportsHiddenAndLockedFiltersOnUI || !!capabilities.supportsMultipleDateFilters);
75
104
  const FilterConfigurationComponent = useMemo(() => {
@@ -80,5 +109,5 @@ export function DefaultDashboardDateFilter({ filter, workingFilter, onFilterChan
80
109
  }, [intl, filter?.dateFilter.dataSet, defaultDateFilterName]);
81
110
  return (_jsx(DateFilter, { excludeCurrentPeriod: excludeCurrentPeriod, selectedFilterOption: dateFilterOption, workingExcludeCurrentPeriod: isApplyAllAtOnceEnabledAndSet ? workingExcludeCurrentPeriod : undefined, workingSelectedFilterOption: isApplyAllAtOnceEnabledAndSet ? workingFilterOption : undefined, dateFilterMode: readonly
82
111
  ? DashboardDateFilterConfigModeValues.READONLY
83
- : DashboardDateFilterConfigModeValues.ACTIVE, filterOptions: dateFilterOptions, availableGranularities: config.availableGranularities, customFilterName: title, onApply: onApply, onSelect: isApplyAllAtOnceEnabledAndSet ? onSelect : undefined, dateFormat: dateFormat, locale: locale, isTimeForAbsoluteRangeEnabled: isTimeForAbsoluteRangeEnabled, isEditMode: isInEditMode, openOnInit: autoOpen, weekStart: weekStart, customIcon: visibilityIcon, showDropDownHeaderMessage: !filter?.dateFilter.dataSet, FilterConfigurationComponent: isConfigurationEnabled ? FilterConfigurationComponent : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, ButtonComponent: ButtonComponent, overlayPositionType: overlayPositionType, activeCalendars: activeCalendars, enableEmptyDateValues: enableEmptyDateValues, hideDisabledExclude: true }));
112
+ : DashboardDateFilterConfigModeValues.ACTIVE, filterOptions: dateFilterOptions, availableGranularities: availableGranularities, customFilterName: title, onApply: onApply, onSelect: isApplyAllAtOnceEnabledAndSet ? onSelect : undefined, dateFormat: dateFormat, locale: locale, isTimeForAbsoluteRangeEnabled: isTimeForAbsoluteRangeEnabled, isSecondsForAbsoluteRangeEnabled: isSecondsForAbsoluteRangeEnabled, isEditMode: isInEditMode, openOnInit: autoOpen, weekStart: weekStart, customIcon: visibilityIcon, showDropDownHeaderMessage: !filter?.dateFilter.dataSet, FilterConfigurationComponent: isConfigurationEnabled ? FilterConfigurationComponent : undefined, withoutApply: isApplyAllAtOnceEnabledAndSet, ButtonComponent: ButtonComponent, overlayPositionType: overlayPositionType, activeCalendars: activeCalendars, enableEmptyDateValues: enableEmptyDateValues, hideDisabledExclude: true }));
84
113
  }
@@ -427,6 +427,50 @@ export declare const en_US: {
427
427
  text: string;
428
428
  crowdinContext: string;
429
429
  };
430
+ "settingsDashboardDialog.section.timezone": {
431
+ text: string;
432
+ crowdinContext: string;
433
+ };
434
+ "settingsDashboardDialog.section.timezone.defaultTimezone": {
435
+ text: string;
436
+ crowdinContext: string;
437
+ };
438
+ "settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": {
439
+ text: string;
440
+ crowdinContext: string;
441
+ };
442
+ "settingsDashboardDialog.section.timezone.defaultTimezone.workspace": {
443
+ text: string;
444
+ crowdinContext: string;
445
+ };
446
+ "settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": {
447
+ text: string;
448
+ crowdinContext: string;
449
+ };
450
+ "settingsDashboardDialog.section.timezone.allowUserOverride.toggle": {
451
+ text: string;
452
+ crowdinContext: string;
453
+ };
454
+ "settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": {
455
+ text: string;
456
+ crowdinContext: string;
457
+ };
458
+ "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": {
459
+ text: string;
460
+ crowdinContext: string;
461
+ };
462
+ "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": {
463
+ text: string;
464
+ crowdinContext: string;
465
+ };
466
+ "settingsDashboardDialog.section.timezone.select.searchPlaceholder": {
467
+ text: string;
468
+ crowdinContext: string;
469
+ };
470
+ "settingsDashboardDialog.section.timezone.select.noMatch": {
471
+ text: string;
472
+ crowdinContext: string;
473
+ };
430
474
  "deleteDashboardDialog.headline": {
431
475
  text: string;
432
476
  crowdinContext: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA65GjB,CAAC"}
1
+ {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAy8GjB,CAAC"}
@@ -429,6 +429,50 @@ export const en_US = {
429
429
  "text": "Evaluation Frequency",
430
430
  "crowdinContext": "Label for alert evaluation frequency setting"
431
431
  },
432
+ "settingsDashboardDialog.section.timezone": {
433
+ "text": "Time zone",
434
+ "crowdinContext": "Section title for time zone settings in the dashboard settings dialog"
435
+ },
436
+ "settingsDashboardDialog.section.timezone.defaultTimezone": {
437
+ "text": "Default time zone",
438
+ "crowdinContext": "Label of the default time zone picker in the dashboard settings dialog"
439
+ },
440
+ "settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": {
441
+ "text": "Time zone used to evaluate date filters and display dates on this dashboard.",
442
+ "crowdinContext": "Tooltip of the default time zone picker in the dashboard settings dialog"
443
+ },
444
+ "settingsDashboardDialog.section.timezone.defaultTimezone.workspace": {
445
+ "text": "Workspace time zone",
446
+ "crowdinContext": "Time zone picker item meaning the workspace default time zone is used"
447
+ },
448
+ "settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": {
449
+ "text": "From browser ({timezone})",
450
+ "crowdinContext": "Time zone picker item meaning the time zone is detected from the viewer's browser. The {timezone} placeholder shows the detected time zone."
451
+ },
452
+ "settingsDashboardDialog.section.timezone.allowUserOverride.toggle": {
453
+ "text": "Allow users to change the dashboard time zone",
454
+ "crowdinContext": "Toggle allowing dashboard consumers to change the time zone in view mode"
455
+ },
456
+ "settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": {
457
+ "text": "When enabled, viewers can temporarily change the dashboard time zone. The change is not saved.",
458
+ "crowdinContext": "Tooltip of the toggle allowing dashboard consumers to change the time zone in view mode"
459
+ },
460
+ "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": {
461
+ "text": "Show time zone",
462
+ "crowdinContext": "Toggle controlling whether the used time zone is shown on the dashboard"
463
+ },
464
+ "settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": {
465
+ "text": "When enabled, the dashboard displays which time zone is used.",
466
+ "crowdinContext": "Tooltip of the toggle controlling whether the used time zone is shown on the dashboard"
467
+ },
468
+ "settingsDashboardDialog.section.timezone.select.searchPlaceholder": {
469
+ "text": "Search ...",
470
+ "crowdinContext": "Placeholder of the search input in the time zone picker"
471
+ },
472
+ "settingsDashboardDialog.section.timezone.select.noMatch": {
473
+ "text": "No matching time zone.",
474
+ "crowdinContext": "Message shown when the time zone search yields no results"
475
+ },
432
476
  "deleteDashboardDialog.headline": {
433
477
  "text": "Delete dashboard?",
434
478
  "crowdinContext": "Confirmation dialog for deleting a dashboard"
@@ -1 +1 @@
1
- {"version":3,"file":"InsightDrillDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAyB,MAAM,OAAO,CAAC;AAKrF,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,cAAc,EAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AAwBvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAgB7G;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAkCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CA2MhF"}
1
+ {"version":3,"file":"InsightDrillDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,YAAY,EAAyB,MAAM,OAAO,CAAC;AAKrF,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,cAAc,EAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AAyBvE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAgB7G;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAmCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,CA2MhF"}