@gooddata/sdk-ui-dashboard 11.51.0-alpha.4 → 11.51.0
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.
- package/NOTICE +3 -3
- package/esm/__version.d.ts +1 -1
- package/esm/__version.d.ts.map +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +3 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +3 -1
- package/esm/model/commandHandlers/filterContext/filterViewHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/filterViewHandler.js +17 -4
- package/esm/model/commandHandlers/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/index.js +2 -0
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts +6 -0
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.d.ts.map +1 -0
- package/esm/model/commandHandlers/timezone/changeDashboardTimezoneOverrideHandler.js +39 -0
- package/esm/model/commands/base.d.ts +1 -1
- package/esm/model/commands/base.d.ts.map +1 -1
- package/esm/model/commands/index.d.ts +2 -1
- package/esm/model/commands/index.d.ts.map +1 -1
- package/esm/model/commands/timezone.d.ts +42 -0
- package/esm/model/commands/timezone.d.ts.map +1 -0
- package/esm/model/commands/timezone.js +29 -0
- package/esm/model/events/base.d.ts +1 -1
- package/esm/model/events/base.d.ts.map +1 -1
- package/esm/model/events/index.d.ts +2 -1
- package/esm/model/events/index.d.ts.map +1 -1
- package/esm/model/events/timezone.d.ts +50 -0
- package/esm/model/events/timezone.d.ts.map +1 -0
- package/esm/model/events/timezone.js +31 -0
- package/esm/model/react/useDashboardCommand.d.ts +1 -0
- package/esm/model/react/useDashboardCommand.d.ts.map +1 -1
- package/esm/model/react/useDashboardCommandProcessing.d.ts +4 -0
- package/esm/model/react/useDashboardCommandProcessing.d.ts.map +1 -1
- package/esm/model/store/filterViews/filterViewsReducers.d.ts +13 -1
- package/esm/model/store/filterViews/filterViewsReducers.d.ts.map +1 -1
- package/esm/model/store/filterViews/filterViewsReducers.js +46 -0
- package/esm/model/store/filterViews/filterViewsState.d.ts +22 -0
- package/esm/model/store/filterViews/filterViewsState.d.ts.map +1 -1
- package/esm/model/store/filterViews/index.d.ts +3 -0
- package/esm/model/store/filterViews/index.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.d.ts +6 -4
- package/esm/model/store/meta/metaSelectors.d.ts.map +1 -1
- package/esm/model/store/meta/metaSelectors.js +17 -6
- package/esm/model/store/ui/index.d.ts +3 -0
- package/esm/model/store/ui/index.d.ts.map +1 -1
- package/esm/model/store/ui/uiReducers.d.ts +6 -0
- package/esm/model/store/ui/uiReducers.d.ts.map +1 -1
- package/esm/model/store/ui/uiReducers.js +15 -0
- package/esm/model/store/ui/uiSelectors.d.ts +15 -0
- package/esm/model/store/ui/uiSelectors.d.ts.map +1 -1
- package/esm/model/store/ui/uiSelectors.js +15 -0
- package/esm/model/store/ui/uiState.d.ts +12 -0
- package/esm/model/store/ui/uiState.d.ts.map +1 -1
- package/esm/model/store/ui/uiState.js +4 -0
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +4 -23
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFilters.d.ts +17 -8
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFilters.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useAlertFilters.js +19 -7
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts +7 -8
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +14 -4
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +6 -45
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.d.ts +1 -3
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentSettings.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentsList.d.ts +1 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentsList.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentsList.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.d.ts +1 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts +1 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts +34 -30
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +20 -9
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailEffectiveFilters.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailEffectiveFilters.js +12 -3
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.d.ts +37 -15
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduledEmailFilters.js +41 -19
- package/esm/presentation/automations/scheduledEmail/utils/pdfPageSize.d.ts +1 -2
- package/esm/presentation/automations/scheduledEmail/utils/pdfPageSize.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/utils/pdfPageSize.js +12 -3
- package/esm/presentation/automations/shared/filters/conversions.d.ts +1 -1
- package/esm/presentation/automations/shared/filters/conversions.js +1 -1
- package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardHeader/DashboardHeader.js +2 -1
- package/esm/presentation/dashboard/DashboardHeader/TimezoneDialogProvider.d.ts +6 -0
- package/esm/presentation/dashboard/DashboardHeader/TimezoneDialogProvider.d.ts.map +1 -0
- package/esm/presentation/dashboard/DashboardHeader/TimezoneDialogProvider.js +14 -0
- package/esm/presentation/dashboard/components/DashboardLoading.js +1 -1
- package/esm/presentation/dashboardSettingsDialog/TimezoneOption.d.ts.map +1 -1
- package/esm/presentation/dashboardSettingsDialog/TimezoneOption.js +9 -7
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarContainer.js +1 -6
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViews.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViews.js +19 -16
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +40 -0
- package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-US.localization-bundle.js +45 -5
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +13 -2
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +11 -0
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +13 -2
- package/esm/presentation/timezoneDialog/TimezoneDialog.d.ts +15 -0
- package/esm/presentation/timezoneDialog/TimezoneDialog.d.ts.map +1 -0
- package/esm/presentation/timezoneDialog/TimezoneDialog.js +80 -0
- package/esm/presentation/topBar/menuButton/useDefaultMenuItems.d.ts.map +1 -1
- package/esm/presentation/topBar/menuButton/useDefaultMenuItems.js +22 -3
- package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.d.ts.map +1 -1
- package/esm/presentation/topBar/timezoneIndicator/TimezoneIndicator.js +2 -2
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts +5 -3
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.d.ts.map +1 -1
- package/esm/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.js +6 -4
- package/esm/presentation/topBar/topBar/DefaultTopBar.d.ts.map +1 -1
- package/esm/presentation/topBar/topBar/DefaultTopBar.js +5 -3
- package/esm/sdk-ui-dashboard.d.ts +140 -11
- package/package.json +21 -21
- package/styles/css/filterBar.css +15 -44
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +38 -44
- package/styles/css/main.css.map +1 -1
- package/styles/css/timezoneDialog.css +24 -0
- package/styles/css/timezoneDialog.css.map +1 -0
- package/styles/scss/filterBar.scss +17 -62
- package/styles/scss/main.scss +1 -0
- package/styles/scss/timezoneDialog.scss +31 -0
|
@@ -58,6 +58,7 @@ export declare const zh_Hans: {
|
|
|
58
58
|
"options.menu.data.too.large": string;
|
|
59
59
|
"options.menu.unsupported.raw.error": string;
|
|
60
60
|
"options.menu.density": string;
|
|
61
|
+
"options.menu.changeTimezone": string;
|
|
61
62
|
"density.dialog.title": string;
|
|
62
63
|
"density.dialog.description": string;
|
|
63
64
|
"density.dialog.option.standard": string;
|
|
@@ -117,6 +118,15 @@ export declare const zh_Hans: {
|
|
|
117
118
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": string;
|
|
118
119
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": string;
|
|
119
120
|
"settingsDashboardDialog.section.timezone.select.noMatch": string;
|
|
121
|
+
"timezoneDialog.title": string;
|
|
122
|
+
"timezoneDialog.description": string;
|
|
123
|
+
"timezoneDialog.description.ariaLabel": string;
|
|
124
|
+
"timezoneDialog.default": string;
|
|
125
|
+
"timezoneDialog.fromBrowser": string;
|
|
126
|
+
"timezoneDialog.select.searchPlaceholder": string;
|
|
127
|
+
"timezoneDialog.select.noMatch": string;
|
|
128
|
+
"timezoneDialog.currentTime": string;
|
|
129
|
+
"timezoneDialog.success": string;
|
|
120
130
|
"deleteDashboardDialog.headline": string;
|
|
121
131
|
"deleteDashboardDialog.submitButtonText": string;
|
|
122
132
|
"deleteDashboardDialog.defaultMessage": string;
|
|
@@ -368,6 +378,7 @@ export declare const zh_Hans: {
|
|
|
368
378
|
"header.shareStatus.private.text": string;
|
|
369
379
|
"header.shareStatus.private.strict.tooltip": string;
|
|
370
380
|
"header.shareStatus.private.not.strict.tooltip": string;
|
|
381
|
+
"topBar.timezoneIndicator.tooltip": string;
|
|
371
382
|
"dashboard.shareDialog.removeAccessGranteeTooltip": string;
|
|
372
383
|
"dashboardMeasureValueFilter.section.from_dashboard": string;
|
|
373
384
|
"dashboardMeasureValueFilter.section.all_other": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA83BnB,CAAC"}
|
|
@@ -60,6 +60,7 @@ export const zh_Hans = {
|
|
|
60
60
|
"options.menu.data.too.large": "由于结果中的数据点过多,无法导出。",
|
|
61
61
|
"options.menu.unsupported.raw.error": "由于数据点过多或结果有误,无法导出。",
|
|
62
62
|
"options.menu.density": "内容密度",
|
|
63
|
+
"options.menu.changeTimezone": "更改时区",
|
|
63
64
|
"density.dialog.title": "内容密度",
|
|
64
65
|
"density.dialog.description": "为此仪表板和其他仪表板选择您偏好的内容密度级别。",
|
|
65
66
|
"density.dialog.option.standard": "舒适",
|
|
@@ -111,14 +112,23 @@ export const zh_Hans = {
|
|
|
111
112
|
"settingsDashboardDialog.section.timezone": "时区",
|
|
112
113
|
"settingsDashboardDialog.section.timezone.defaultTimezone": "默认时区",
|
|
113
114
|
"settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": "用于评估日期筛选器并在此仪表板上显示日期的时区。",
|
|
114
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "
|
|
115
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "
|
|
115
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "工作区默认({timezone})",
|
|
116
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "用户本地时间(浏览器检测)",
|
|
116
117
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle": "允许用户更改仪表板时区",
|
|
117
118
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": "启用后,查看者可以临时更改仪表板时区。更改不会保存。",
|
|
118
119
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": "显示时区",
|
|
119
120
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": "启用后,仪表板会显示所使用的时区。",
|
|
120
121
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": "搜索...",
|
|
121
122
|
"settingsDashboardDialog.section.timezone.select.noMatch": "无匹配时区。",
|
|
123
|
+
"timezoneDialog.title": "更改时区",
|
|
124
|
+
"timezoneDialog.description": "<b>注意:</b>重新加载页面时,时区将重置为默认值({timezone})。",
|
|
125
|
+
"timezoneDialog.description.ariaLabel": "更改时区对话框信息消息",
|
|
126
|
+
"timezoneDialog.default": "默认({timezone})",
|
|
127
|
+
"timezoneDialog.fromBrowser": "我的本地时间({timezone})",
|
|
128
|
+
"timezoneDialog.select.searchPlaceholder": "搜索...",
|
|
129
|
+
"timezoneDialog.select.noMatch": "无匹配时区。",
|
|
130
|
+
"timezoneDialog.currentTime": "当前时间 {time}",
|
|
131
|
+
"timezoneDialog.success": "很好!我们已更改时区!",
|
|
122
132
|
"deleteDashboardDialog.headline": "删除控制面板?",
|
|
123
133
|
"deleteDashboardDialog.submitButtonText": "删除",
|
|
124
134
|
"deleteDashboardDialog.defaultMessage": "您确定要删除控制面板 {title} 吗?",
|
|
@@ -370,6 +380,7 @@ export const zh_Hans = {
|
|
|
370
380
|
"header.shareStatus.private.text": "私密",
|
|
371
381
|
"header.shareStatus.private.strict.tooltip": "只有您可以查看和编辑此控制面板。",
|
|
372
382
|
"header.shareStatus.private.not.strict.tooltip": "创建者可以编辑此控制面板。具有适当用户角色的其他用户可在深入查看此控制面板时对其进行编辑。",
|
|
383
|
+
"topBar.timezoneIndicator.tooltip": "时区",
|
|
373
384
|
"dashboard.shareDialog.removeAccessGranteeTooltip": "删除对此控制面板的访问权限。",
|
|
374
385
|
"dashboardMeasureValueFilter.section.from_dashboard": "来自仪表板",
|
|
375
386
|
"dashboardMeasureValueFilter.section.all_other": "所有其他",
|
|
@@ -58,6 +58,7 @@ export declare const zh_Hant: {
|
|
|
58
58
|
"options.menu.data.too.large": string;
|
|
59
59
|
"options.menu.unsupported.raw.error": string;
|
|
60
60
|
"options.menu.density": string;
|
|
61
|
+
"options.menu.changeTimezone": string;
|
|
61
62
|
"density.dialog.title": string;
|
|
62
63
|
"density.dialog.description": string;
|
|
63
64
|
"density.dialog.option.standard": string;
|
|
@@ -117,6 +118,15 @@ export declare const zh_Hant: {
|
|
|
117
118
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": string;
|
|
118
119
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": string;
|
|
119
120
|
"settingsDashboardDialog.section.timezone.select.noMatch": string;
|
|
121
|
+
"timezoneDialog.title": string;
|
|
122
|
+
"timezoneDialog.description": string;
|
|
123
|
+
"timezoneDialog.description.ariaLabel": string;
|
|
124
|
+
"timezoneDialog.default": string;
|
|
125
|
+
"timezoneDialog.fromBrowser": string;
|
|
126
|
+
"timezoneDialog.select.searchPlaceholder": string;
|
|
127
|
+
"timezoneDialog.select.noMatch": string;
|
|
128
|
+
"timezoneDialog.currentTime": string;
|
|
129
|
+
"timezoneDialog.success": string;
|
|
120
130
|
"deleteDashboardDialog.headline": string;
|
|
121
131
|
"deleteDashboardDialog.submitButtonText": string;
|
|
122
132
|
"deleteDashboardDialog.defaultMessage": string;
|
|
@@ -368,6 +378,7 @@ export declare const zh_Hant: {
|
|
|
368
378
|
"header.shareStatus.private.text": string;
|
|
369
379
|
"header.shareStatus.private.strict.tooltip": string;
|
|
370
380
|
"header.shareStatus.private.not.strict.tooltip": string;
|
|
381
|
+
"topBar.timezoneIndicator.tooltip": string;
|
|
371
382
|
"dashboard.shareDialog.removeAccessGranteeTooltip": string;
|
|
372
383
|
"dashboardMeasureValueFilter.section.from_dashboard": string;
|
|
373
384
|
"dashboardMeasureValueFilter.section.all_other": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA83BnB,CAAC"}
|
|
@@ -60,6 +60,7 @@ export const zh_Hant = {
|
|
|
60
60
|
"options.menu.data.too.large": "由於結果中的數據點過多,無法匯出。",
|
|
61
61
|
"options.menu.unsupported.raw.error": "由於數據點過多或結果有誤,無法匯出",
|
|
62
62
|
"options.menu.density": "內容密度",
|
|
63
|
+
"options.menu.changeTimezone": "變更時區",
|
|
63
64
|
"density.dialog.title": "內容密度",
|
|
64
65
|
"density.dialog.description": "為此儀表板與其他儀表板選擇您偏好的內容密度級別。",
|
|
65
66
|
"density.dialog.option.standard": "舒適",
|
|
@@ -111,14 +112,23 @@ export const zh_Hant = {
|
|
|
111
112
|
"settingsDashboardDialog.section.timezone": "時區",
|
|
112
113
|
"settingsDashboardDialog.section.timezone.defaultTimezone": "預設時區",
|
|
113
114
|
"settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": "用於評估日期篩選器及顯示此儀表板上日期的時區。",
|
|
114
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "
|
|
115
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "
|
|
115
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "工作區預設值 ({timezone})",
|
|
116
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "使用者本機時間 (瀏覽器偵測)",
|
|
116
117
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle": "允許使用者變更儀表板時區",
|
|
117
118
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": "啟用時,檢視者可以暫時變更儀表板時區。此變更不會儲存。",
|
|
118
119
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": "顯示時區",
|
|
119
120
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": "啟用時,儀表板會顯示使用的時區。",
|
|
120
121
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": "搜尋 ...",
|
|
121
122
|
"settingsDashboardDialog.section.timezone.select.noMatch": "沒有相符的時區。",
|
|
123
|
+
"timezoneDialog.title": "變更時區",
|
|
124
|
+
"timezoneDialog.description": "<b>注意:</b> 重新載入頁面時,時區會重設為預設值 ({timezone})。",
|
|
125
|
+
"timezoneDialog.description.ariaLabel": "變更時區對話方塊資訊訊息",
|
|
126
|
+
"timezoneDialog.default": "預設值 ({timezone})",
|
|
127
|
+
"timezoneDialog.fromBrowser": "我的本機時間 ({timezone})",
|
|
128
|
+
"timezoneDialog.select.searchPlaceholder": "搜尋 ...",
|
|
129
|
+
"timezoneDialog.select.noMatch": "沒有相符的時區。",
|
|
130
|
+
"timezoneDialog.currentTime": "目前時間 {time}",
|
|
131
|
+
"timezoneDialog.success": "太好了!我們已變更時區!",
|
|
122
132
|
"deleteDashboardDialog.headline": "刪除儀表板?",
|
|
123
133
|
"deleteDashboardDialog.submitButtonText": "刪除",
|
|
124
134
|
"deleteDashboardDialog.defaultMessage": "您確定要刪除儀表板嗎{title}?",
|
|
@@ -370,6 +380,7 @@ export const zh_Hant = {
|
|
|
370
380
|
"header.shareStatus.private.text": "私人的",
|
|
371
381
|
"header.shareStatus.private.strict.tooltip": "只有您可以檢視和編輯此儀表板。",
|
|
372
382
|
"header.shareStatus.private.not.strict.tooltip": "創建者可以編輯此儀表板。具有適當使用者角色的其他使用者可以在鑽取此儀表板時進行編輯。",
|
|
383
|
+
"topBar.timezoneIndicator.tooltip": "時區",
|
|
373
384
|
"dashboard.shareDialog.removeAccessGranteeTooltip": "刪除對此儀表板的存取權限。",
|
|
374
385
|
"dashboardMeasureValueFilter.section.from_dashboard": "來自儀表板",
|
|
375
386
|
"dashboardMeasureValueFilter.section.all_other": "所有其他",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Dialog for the ad-hoc, session-only change of the dashboard timezone in view mode.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* The dialog hosts the shared timezone picker with two special items: "Default" (clears the
|
|
7
|
+
* override so the dashboard/workspace configuration applies again) and "From browser". Applying
|
|
8
|
+
* a selection dispatches the ChangeDashboardTimezoneOverride command; its handler resolves the
|
|
9
|
+
* browser-detected sentinel, so the session-only ui state always ends up with a concrete IANA
|
|
10
|
+
* timezone ID. The override is never persisted with the dashboard.
|
|
11
|
+
*
|
|
12
|
+
* @alpha
|
|
13
|
+
*/
|
|
14
|
+
export declare function TimezoneDialog(): ReactElement | null;
|
|
15
|
+
//# sourceMappingURL=TimezoneDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimezoneDialog.d.ts","sourceRoot":"","sources":["../../../src/presentation/timezoneDialog/TimezoneDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAgD,MAAM,OAAO,CAAC;AAsBxF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,IAAI,YAAY,GAAG,IAAI,CAsGpD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// (C) 2026 GoodData Corporation
|
|
3
|
+
import { useEffect, useMemo, useState } from "react";
|
|
4
|
+
import { FormattedMessage, defineMessage, useIntl } from "react-intl";
|
|
5
|
+
import { BROWSER_DETECTED, resolveTimezoneId } from "@gooddata/sdk-model";
|
|
6
|
+
import { ConfirmDialog, Message, TimezoneSelect, getCurrentTimeByTimezoneId, getTimezoneDisplayLabel, useToastMessage, } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
import { changeDashboardTimezoneOverride } from "../../model/commands/timezone.js";
|
|
8
|
+
import { useDashboardDispatch, useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
9
|
+
import { selectTimezone } from "../../model/store/config/configSelectors.js";
|
|
10
|
+
import { selectDashboardTimezoneConfig } from "../../model/store/meta/metaSelectors.js";
|
|
11
|
+
import { uiActions } from "../../model/store/ui/index.js";
|
|
12
|
+
import { selectTimezoneOverride } from "../../model/store/ui/uiSelectors.js";
|
|
13
|
+
/**
|
|
14
|
+
* Dialog for the ad-hoc, session-only change of the dashboard timezone in view mode.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* The dialog hosts the shared timezone picker with two special items: "Default" (clears the
|
|
18
|
+
* override so the dashboard/workspace configuration applies again) and "From browser". Applying
|
|
19
|
+
* a selection dispatches the ChangeDashboardTimezoneOverride command; its handler resolves the
|
|
20
|
+
* browser-detected sentinel, so the session-only ui state always ends up with a concrete IANA
|
|
21
|
+
* timezone ID. The override is never persisted with the dashboard.
|
|
22
|
+
*
|
|
23
|
+
* @alpha
|
|
24
|
+
*/
|
|
25
|
+
export function TimezoneDialog() {
|
|
26
|
+
const intl = useIntl();
|
|
27
|
+
const dispatch = useDashboardDispatch();
|
|
28
|
+
const { addSuccess } = useToastMessage();
|
|
29
|
+
const currentOverride = useDashboardSelector(selectTimezoneOverride);
|
|
30
|
+
const timezoneConfig = useDashboardSelector(selectDashboardTimezoneConfig);
|
|
31
|
+
const workspaceTimezone = useDashboardSelector(selectTimezone);
|
|
32
|
+
const [selected, setSelected] = useState(currentOverride);
|
|
33
|
+
const [currentTimeOfTimezone, setCurrentTimeOfTimezone] = useState();
|
|
34
|
+
// Prefer the configured dashboard timezone (browser-detected sentinel resolved). When the
|
|
35
|
+
// dashboard has no explicit timezone, fall back to the effective workspace/organization
|
|
36
|
+
// timezone so the Default item, description note, and current-time preview share the same
|
|
37
|
+
// concrete ID.
|
|
38
|
+
const defaultTimezoneId = resolveTimezoneId(timezoneConfig?.timezoneId) ?? workspaceTimezone;
|
|
39
|
+
const defaultTimezoneName = defaultTimezoneId ? getTimezoneDisplayLabel(defaultTimezoneId) : undefined;
|
|
40
|
+
const specialItems = useMemo(() => {
|
|
41
|
+
const defaultItemLabel = intl.formatMessage({ id: "timezoneDialog.default" }, { timezone: defaultTimezoneName });
|
|
42
|
+
// plain ID here — the label template already brackets the value, so the "id (offset)"
|
|
43
|
+
// display label would produce nested brackets
|
|
44
|
+
const browserTimezoneId = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
45
|
+
const browserTimezoneName = getTimezoneDisplayLabel(browserTimezoneId);
|
|
46
|
+
const browserItemLabel = intl.formatMessage({ id: "timezoneDialog.fromBrowser" }, { timezone: browserTimezoneName });
|
|
47
|
+
return [
|
|
48
|
+
{ id: undefined, label: defaultItemLabel },
|
|
49
|
+
{ id: BROWSER_DETECTED, label: browserItemLabel },
|
|
50
|
+
];
|
|
51
|
+
}, [intl, defaultTimezoneName]);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const timezoneId = resolveTimezoneId(selected) ?? defaultTimezoneId;
|
|
54
|
+
if (timezoneId) {
|
|
55
|
+
setCurrentTimeOfTimezone(getCurrentTimeByTimezoneId(timezoneId));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
setCurrentTimeOfTimezone(undefined);
|
|
59
|
+
}
|
|
60
|
+
}, [selected, defaultTimezoneId]);
|
|
61
|
+
const onCancel = () => dispatch(uiActions.closeTimezoneDialog());
|
|
62
|
+
const onApply = () => {
|
|
63
|
+
dispatch(uiActions.closeTimezoneDialog());
|
|
64
|
+
// the command handler resolves the browser-detected special item; resolve locally only
|
|
65
|
+
// to skip dispatching when the selection matches the current override
|
|
66
|
+
if (resolveTimezoneId(selected) !== currentOverride) {
|
|
67
|
+
dispatch(changeDashboardTimezoneOverride(selected));
|
|
68
|
+
addSuccess(defineMessage({ id: "timezoneDialog.success" }));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
return (_jsxs(ConfirmDialog, { onCancel: onCancel, onSubmit: onApply, isPositive: true, className: "s-dialog s-timezone-dialog gd-timezone-dialog", headline: intl.formatMessage({ id: "timezoneDialog.title" }), cancelButtonText: intl.formatMessage({ id: "cancel" }), submitButtonText: intl.formatMessage({ id: "apply" }), children: [
|
|
72
|
+
_jsxs("div", { className: "gd-timezone-dialog-picker", children: [
|
|
73
|
+
_jsx(TimezoneSelect, { value: selected, onChange: setSelected, specialItems: specialItems, searchPlaceholder: intl.formatMessage({
|
|
74
|
+
id: "timezoneDialog.select.searchPlaceholder",
|
|
75
|
+
}), ariaLabel: intl.formatMessage({ id: "timezoneDialog.title" }), noMatchLabel: intl.formatMessage({ id: "timezoneDialog.select.noMatch" }) }), currentTimeOfTimezone ? (_jsx("span", { className: "gd-timezone-dialog-current-time", children: intl.formatMessage({ id: "timezoneDialog.currentTime" }, { time: currentTimeOfTimezone }) })) : null] }), _jsx(Message, { type: "progress", className: "gd-timezone-dialog-description s-timezone-dialog-description", children: _jsx("span", { "aria-label": intl.formatMessage({ id: "timezoneDialog.description.ariaLabel" }), children: _jsx(FormattedMessage, { id: "timezoneDialog.description", values: {
|
|
76
|
+
b: (chunks) => _jsx("strong", { children: chunks }),
|
|
77
|
+
timezone: defaultTimezoneName,
|
|
78
|
+
} }) }) })
|
|
79
|
+
] }));
|
|
80
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDefaultMenuItems.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/useDefaultMenuItems.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDefaultMenuItems.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/menuButton/useDefaultMenuItems.tsx"],"names":[],"mappings":"AAgDA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AA8BlD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CA6avD"}
|
|
@@ -7,11 +7,11 @@ import { requestOpenDensityDialog } from "../../../model/commands/density.js";
|
|
|
7
7
|
import { useDashboardDispatch, useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
8
8
|
import { useDashboardScheduledEmails } from "../../../model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.js";
|
|
9
9
|
import { useDashboardAlerts } from "../../../model/react/useDashboardAlerting/useDashboardAlerts.js";
|
|
10
|
-
import { selectEnableDashboardDensitySetting, selectEnableDashboardTabularExport, selectEnableSnapshotExport, selectIsReadOnly, selectSettings, } from "../../../model/store/config/configSelectors.js";
|
|
10
|
+
import { selectEnableDashboardDensitySetting, selectEnableDashboardTabularExport, selectEnableDashboardTimezone, selectEnableSnapshotExport, selectIsReadOnly, selectSettings, } from "../../../model/store/config/configSelectors.js";
|
|
11
11
|
import { selectHasAnyExecutionResultLimitBreaks } from "../../../model/store/executionResults/executionResultsSelectors.js";
|
|
12
|
-
import { selectDashboardTitle, selectIsNewDashboard } from "../../../model/store/meta/metaSelectors.js";
|
|
12
|
+
import { selectDashboardTimezoneConfig, selectDashboardTitle, selectIsNewDashboard, } from "../../../model/store/meta/metaSelectors.js";
|
|
13
13
|
import { selectCanCreateAutomation, selectCanExportPdf, selectCanExportTabular, } from "../../../model/store/permissions/permissionsSelectors.js";
|
|
14
|
-
import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
|
|
14
|
+
import { selectIsInEditMode, selectIsInViewMode, } from "../../../model/store/renderMode/renderModeSelectors.js";
|
|
15
15
|
import { selectLayoutHasAnalyticalWidgets } from "../../../model/store/tabs/layout/layoutSelectors.js";
|
|
16
16
|
import { selectDeleteVisible, selectFilterViewsVisible, selectPdfExportVisible, selectSaveAsVisible, selectSettingsVisible, selectSlideShowExportVisible, } from "../../../model/store/topBar/topBarSelectors.js";
|
|
17
17
|
import { uiActions } from "../../../model/store/ui/index.js";
|
|
@@ -153,6 +153,11 @@ export function useDefaultMenuItems() {
|
|
|
153
153
|
const isDensitySettingEnabled = useDashboardSelector(selectEnableDashboardDensitySetting);
|
|
154
154
|
const isInEditMode = useDashboardSelector(selectIsInEditMode);
|
|
155
155
|
const openDensityDialog = useCallback(() => dispatch(requestOpenDensityDialog()), [dispatch]);
|
|
156
|
+
const isTimezoneEnabled = useDashboardSelector(selectEnableDashboardTimezone);
|
|
157
|
+
const timezoneConfig = useDashboardSelector(selectDashboardTimezoneConfig);
|
|
158
|
+
const isInViewMode = useDashboardSelector(selectIsInViewMode);
|
|
159
|
+
const isTimezoneChangeVisible = isTimezoneEnabled && !!timezoneConfig?.allowUserOverrideInViewMode && isInViewMode;
|
|
160
|
+
const openTimezoneDialog = useCallback(() => dispatch(uiActions.openTimezoneDialog()), [dispatch]);
|
|
156
161
|
// Do not show save as new button in menu item when it is already shown as a standalone top bar button.
|
|
157
162
|
const isSaveAsVisible = useDashboardSelector(selectSaveAsVisible);
|
|
158
163
|
const isSaveAsDisabled = isEmptyLayout || isNewDashboard || isReadOnly;
|
|
@@ -234,6 +239,18 @@ export function useDefaultMenuItems() {
|
|
|
234
239
|
opensDialog: true,
|
|
235
240
|
},
|
|
236
241
|
],
|
|
242
|
+
// timezone section
|
|
243
|
+
[
|
|
244
|
+
{
|
|
245
|
+
type: "button",
|
|
246
|
+
itemId: "change-timezone-item",
|
|
247
|
+
itemName: intl.formatMessage({ id: "options.menu.changeTimezone" }),
|
|
248
|
+
onClick: openTimezoneDialog,
|
|
249
|
+
visible: isTimezoneChangeVisible,
|
|
250
|
+
icon: _jsx(MenuIcon, { type: "timezone" }),
|
|
251
|
+
opensDialog: true,
|
|
252
|
+
},
|
|
253
|
+
],
|
|
237
254
|
// alerts section
|
|
238
255
|
[
|
|
239
256
|
{
|
|
@@ -364,6 +381,8 @@ export function useDefaultMenuItems() {
|
|
|
364
381
|
}, [
|
|
365
382
|
isDensitySettingEnabled,
|
|
366
383
|
openDensityDialog,
|
|
384
|
+
isTimezoneChangeVisible,
|
|
385
|
+
openTimezoneDialog,
|
|
367
386
|
defaultOnExportToPdf,
|
|
368
387
|
defaultOnSaveAs,
|
|
369
388
|
defaultOnScheduleEmailingManagement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimezoneIndicator.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/timezoneIndicator/TimezoneIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAC9B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"TimezoneIndicator.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/timezoneIndicator/TimezoneIndicator.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAO1C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAC9B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAyB/C"}
|
|
@@ -19,9 +19,9 @@ export function TimezoneIndicator({ timezoneConfig, defaultTimezone, timezone, }
|
|
|
19
19
|
if (!resolvedTimezone) {
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
|
-
const { name
|
|
22
|
+
const { name } = resolvedTimezone;
|
|
23
23
|
return (_jsx("div", { className: "s-timezone-indicator gd-timezone-indicator", children: _jsxs(BubbleHoverTrigger, { children: [
|
|
24
24
|
_jsxs("div", { className: "gd-timezone-indicator-content", children: [
|
|
25
|
-
_jsx("i", { "aria-hidden": "true", className: "gd-timezone-indicator-icon" }), name] }), _jsx(Bubble, { alignPoints: [{ align: "bc tc" }], alignTo: ".gd-timezone-indicator-icon", children: _jsx(FormattedMessage, { id: "topBar.timezoneIndicator.tooltip"
|
|
25
|
+
_jsx("i", { "aria-hidden": "true", className: "gd-timezone-indicator-icon" }), name] }), _jsx(Bubble, { alignPoints: [{ align: "bc tc" }], alignTo: ".gd-timezone-indicator-icon", children: _jsx(FormattedMessage, { id: "topBar.timezoneIndicator.tooltip" }) })
|
|
26
26
|
] }) }));
|
|
27
27
|
}
|
|
@@ -4,10 +4,12 @@ import { type IDashboardTimezoneInfo } from "./types.js";
|
|
|
4
4
|
* Resolves the dashboard timezone configuration to displayable timezone information: a concrete
|
|
5
5
|
* IANA timezone ID, the friendly name and the UTC offset label.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* When `effectiveTimezoneId` is provided (the concrete IANA ID already preferred by the
|
|
8
|
+
* dashboard — including any session-only view-mode override), it takes precedence. Otherwise
|
|
9
|
+
* falls back to the configured timezone (resolving the browser-detected sentinel) and then to
|
|
10
|
+
* the effective workspace/organization timezone.
|
|
9
11
|
*
|
|
10
12
|
* @alpha
|
|
11
13
|
*/
|
|
12
|
-
export declare function resolveDashboardTimezoneInfo(timezoneConfig: IDashboardTimezoneConfig | undefined, defaultTimezone?: string): IDashboardTimezoneInfo | undefined;
|
|
14
|
+
export declare function resolveDashboardTimezoneInfo(timezoneConfig: IDashboardTimezoneConfig | undefined, defaultTimezone?: string, effectiveTimezoneId?: string): IDashboardTimezoneInfo | undefined;
|
|
13
15
|
//# sourceMappingURL=resolveDashboardTimezoneInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDashboardTimezoneInfo.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAqB,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"resolveDashboardTimezoneInfo.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/timezoneIndicator/resolveDashboardTimezoneInfo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,wBAAwB,EAAqB,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CACxC,cAAc,EAAE,wBAAwB,GAAG,SAAS,EACpD,eAAe,CAAC,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,MAAM,GAC7B,sBAAsB,GAAG,SAAS,CASpC"}
|
|
@@ -5,13 +5,15 @@ import { getTimezoneLabels } from "@gooddata/sdk-ui-kit";
|
|
|
5
5
|
* Resolves the dashboard timezone configuration to displayable timezone information: a concrete
|
|
6
6
|
* IANA timezone ID, the friendly name and the UTC offset label.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* When `effectiveTimezoneId` is provided (the concrete IANA ID already preferred by the
|
|
9
|
+
* dashboard — including any session-only view-mode override), it takes precedence. Otherwise
|
|
10
|
+
* falls back to the configured timezone (resolving the browser-detected sentinel) and then to
|
|
11
|
+
* the effective workspace/organization timezone.
|
|
10
12
|
*
|
|
11
13
|
* @alpha
|
|
12
14
|
*/
|
|
13
|
-
export function resolveDashboardTimezoneInfo(timezoneConfig, defaultTimezone) {
|
|
14
|
-
const timezoneId = resolveTimezoneId(timezoneConfig?.timezoneId) ?? defaultTimezone;
|
|
15
|
+
export function resolveDashboardTimezoneInfo(timezoneConfig, defaultTimezone, effectiveTimezoneId) {
|
|
16
|
+
const timezoneId = effectiveTimezoneId ?? resolveTimezoneId(timezoneConfig?.timezoneId) ?? defaultTimezone;
|
|
15
17
|
if (!timezoneId) {
|
|
16
18
|
return undefined;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTopBar.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/topBar/DefaultTopBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultTopBar.d.ts","sourceRoot":"","sources":["../../../../src/presentation/topBar/topBar/DefaultTopBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,OAAO,CAAC;AAmCvD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,cAAc,oBA2D1B,CAAC;AAwCF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAS/D"}
|
|
@@ -4,7 +4,7 @@ import { useCallback } from "react";
|
|
|
4
4
|
import { renameDashboard } from "../../../model/commands/dashboard.js";
|
|
5
5
|
import { useDashboardDispatch, useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
6
6
|
import { selectEnableSnapshotExportAccessibility, selectIsExport, selectIsReadOnly, selectTimezone, } from "../../../model/store/config/configSelectors.js";
|
|
7
|
-
import { selectDashboardShareInfo, selectDashboardTimezoneConfig, selectDashboardTitle, selectPersistedDashboard, } from "../../../model/store/meta/metaSelectors.js";
|
|
7
|
+
import { selectDashboardShareInfo, selectDashboardTimezoneConfig, selectDashboardTitle, selectEffectiveDashboardTimezone, selectPersistedDashboard, } from "../../../model/store/meta/metaSelectors.js";
|
|
8
8
|
import { useCancelButtonProps } from "../buttonBar/button/cancelButton/DefaultCancelButton.js";
|
|
9
9
|
import { useEditButtonProps } from "../buttonBar/button/editButton/DefaultEditButton.js";
|
|
10
10
|
import { useSaveAsNewButtonProps } from "../buttonBar/button/saveAsButton/DefaultSaveAsNewButton.js";
|
|
@@ -33,6 +33,7 @@ export const useTopBarProps = () => {
|
|
|
33
33
|
const persistedDashboard = useDashboardSelector(selectPersistedDashboard);
|
|
34
34
|
const timezoneConfig = useDashboardSelector(selectDashboardTimezoneConfig);
|
|
35
35
|
const defaultTimezone = useDashboardSelector(selectTimezone);
|
|
36
|
+
const effectiveTimezone = useDashboardSelector(selectEffectiveDashboardTimezone);
|
|
36
37
|
const defaultMenuItems = useDefaultMenuItems();
|
|
37
38
|
const shareButtonProps = useShareButtonProps();
|
|
38
39
|
const editButtonProps = useEditButtonProps();
|
|
@@ -70,8 +71,9 @@ export const useTopBarProps = () => {
|
|
|
70
71
|
timezoneConfig,
|
|
71
72
|
defaultTimezone,
|
|
72
73
|
// the default indicator shows only the name; the offset label is exposed
|
|
73
|
-
// for custom top bar / indicator renderings
|
|
74
|
-
timezone
|
|
74
|
+
// for custom top bar / indicator renderings. Prefer the effective timezone so the
|
|
75
|
+
// badge updates when the viewer overrides the timezone in view mode.
|
|
76
|
+
timezone: resolveDashboardTimezoneInfo(timezoneConfig, defaultTimezone, effectiveTimezone),
|
|
75
77
|
},
|
|
76
78
|
DefaultTopBar,
|
|
77
79
|
};
|