@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
|
@@ -214,7 +214,7 @@ export function resolveMvfDimensionalityLocalRefs(filters, insight) {
|
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
217
|
-
*
|
|
217
|
+
* Matches all-time date filters that are *noop*, i.e. that have no effect on execution.
|
|
218
218
|
*
|
|
219
219
|
* @remarks
|
|
220
220
|
* Noop all-time filters are implicit defaults and have no effect on execution. All-time filters with `emptyValueHandling`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardHeader.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardHeader.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAsE1C,wBAAgB,oBAAoB,4CAGnC;AAID,wBAAgB,eAAe,IAAI,YAAY,CA0B9C"}
|
|
@@ -24,6 +24,7 @@ import { DashboardTabs, useDashboardTabsProps } from "./DashboardTabs.js";
|
|
|
24
24
|
import { DensityDialogProvider } from "./DensityDialogProvider.js";
|
|
25
25
|
import { SettingsDialogProvider } from "./SettingsDialogProvider.js";
|
|
26
26
|
import { ShareDialogDashboardHeader } from "./ShareDialogDashboardHeader.js";
|
|
27
|
+
import { TimezoneDialogProvider } from "./TimezoneDialogProvider.js";
|
|
27
28
|
// these wrapper components are here to prevent the whole DashboardHeader from re-rendering whenever some
|
|
28
29
|
// of the sub-components' props change. by isolating the hooks more, we make sure only the really changed component re-renders.
|
|
29
30
|
function DeleteDialogWrapper() {
|
|
@@ -62,6 +63,6 @@ export function DashboardTabsWrapper() {
|
|
|
62
63
|
// (e.g. opening email dialog) do not re-render the dashboard body
|
|
63
64
|
export function DashboardHeader() {
|
|
64
65
|
return (_jsxs(_Fragment, { children: [
|
|
65
|
-
_jsx(ToastMessages, {}), _jsx(ExportXlsxDialogProvider, {}), _jsx(ExportCsvDialogProvider, {}), _jsx(ExportTabularPdfDialogProvider, {}), _jsx(ExportTemplateDialogProvider, {}), _jsx(ScheduledEmailAutomationsProvider, { children: _jsx(ScheduledEmailConnector, {}) }), _jsx(AlertingDialogProvider, {}), _jsx(ShareDialogDashboardHeader, {}), _jsx(SettingsDialogProvider, {}), _jsx(DensityDialogProvider, {}), _jsx(DeleteDialogWrapper, {}), _jsx(WidgetDeleteDialogWrapper, {}), _jsx(KpiDeleteDialogWrapper, {}), _jsx(SaveAsDialogWrapper, {}), _jsx(TopBarWrapper, {}), _jsx(DashboardTabsWrapper, {}), _jsx(FilterBarWrapper, {}), _jsx(CancelEditDialogWrapper, {})
|
|
66
|
+
_jsx(ToastMessages, {}), _jsx(ExportXlsxDialogProvider, {}), _jsx(ExportCsvDialogProvider, {}), _jsx(ExportTabularPdfDialogProvider, {}), _jsx(ExportTemplateDialogProvider, {}), _jsx(ScheduledEmailAutomationsProvider, { children: _jsx(ScheduledEmailConnector, {}) }), _jsx(AlertingDialogProvider, {}), _jsx(ShareDialogDashboardHeader, {}), _jsx(SettingsDialogProvider, {}), _jsx(DensityDialogProvider, {}), _jsx(TimezoneDialogProvider, {}), _jsx(DeleteDialogWrapper, {}), _jsx(WidgetDeleteDialogWrapper, {}), _jsx(KpiDeleteDialogWrapper, {}), _jsx(SaveAsDialogWrapper, {}), _jsx(TopBarWrapper, {}), _jsx(DashboardTabsWrapper, {}), _jsx(FilterBarWrapper, {}), _jsx(CancelEditDialogWrapper, {})
|
|
66
67
|
] }));
|
|
67
68
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimezoneDialogProvider.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardHeader/TimezoneDialogProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,GAAG,IAAI,CAQ5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
3
|
+
import { selectIsTimezoneDialogOpen } from "../../../model/store/ui/uiSelectors.js";
|
|
4
|
+
import { TimezoneDialog } from "../../timezoneDialog/TimezoneDialog.js";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function TimezoneDialogProvider() {
|
|
9
|
+
const isOpen = useDashboardSelector(selectIsTimezoneDialogOpen);
|
|
10
|
+
if (!isOpen) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return _jsx(TimezoneDialog, {});
|
|
14
|
+
}
|
|
@@ -20,7 +20,7 @@ export function DashboardLoading(props) {
|
|
|
20
20
|
// can tell the rendering has started even before any dashboard data is loaded.
|
|
21
21
|
// The element is a hidden sibling (same as the gd-dashboard-meta export data),
|
|
22
22
|
// so it cannot affect the layout of the loading indicator.
|
|
23
|
-
return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, {
|
|
23
|
+
return (_jsxs(_Fragment, { children: [exportData ? _jsx("div", { style: { display: "none" }, ...exportData }) : null, _jsx(LoadingComponent, {})
|
|
24
24
|
] }));
|
|
25
25
|
}
|
|
26
26
|
return _jsx(DashboardInner, { ...props });
|
|
@@ -1 +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;
|
|
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;AAetF,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"}
|
|
@@ -3,24 +3,26 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { BROWSER_DETECTED } from "@gooddata/sdk-model";
|
|
6
|
-
import { Bubble, BubbleHoverTrigger, TimezoneSelect, } from "@gooddata/sdk-ui-kit";
|
|
6
|
+
import { Bubble, BubbleHoverTrigger, TimezoneSelect, getTimezoneDisplayLabel, } from "@gooddata/sdk-ui-kit";
|
|
7
|
+
import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js";
|
|
8
|
+
import { selectTimezone } from "../../model/store/config/configSelectors.js";
|
|
7
9
|
const BUBBLE_ALIGN_POINTS = [{ align: "bc tl" }];
|
|
8
10
|
export function TimezoneOption({ label, tooltip, timezoneConfig, onChange }) {
|
|
9
11
|
const intl = useIntl();
|
|
12
|
+
const workspaceTimezone = useDashboardSelector(selectTimezone);
|
|
13
|
+
const workspaceTimezoneName = getTimezoneDisplayLabel(workspaceTimezone);
|
|
10
14
|
const specialItems = useMemo(() => {
|
|
11
|
-
// TODO INE (CQ-2726): resolve the effective workspace timezone and include it in the item label
|
|
12
15
|
const workspaceItemLabel = intl.formatMessage({
|
|
13
16
|
id: "settingsDashboardDialog.section.timezone.defaultTimezone.workspace",
|
|
17
|
+
}, { timezone: workspaceTimezoneName });
|
|
18
|
+
const browserItemLabel = intl.formatMessage({
|
|
19
|
+
id: "settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser",
|
|
14
20
|
});
|
|
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
21
|
return [
|
|
20
22
|
{ id: undefined, label: workspaceItemLabel },
|
|
21
23
|
{ id: BROWSER_DETECTED, label: browserItemLabel },
|
|
22
24
|
];
|
|
23
|
-
}, [intl]);
|
|
25
|
+
}, [intl, workspaceTimezoneName]);
|
|
24
26
|
return (_jsxs("div", { className: "configuration-category-item", children: [
|
|
25
27
|
_jsxs("span", { className: "input-label-text", children: [label, _jsxs(BubbleHoverTrigger, { showDelay: 0, hideDelay: 0, eventsOnBubble: true, className: "configuration-category-item-tooltip-icon", children: [
|
|
26
28
|
_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 }) })
|
|
@@ -43,7 +43,6 @@ function DefaultFilterBarContainerCore({ children }) {
|
|
|
43
43
|
}, [dispatch]);
|
|
44
44
|
const configurationStyle = useMemo(() => ({
|
|
45
45
|
alignItems: isApplyAllAtOnceEnabledAndSet ? "center" : undefined,
|
|
46
|
-
paddingRight: isApplyAllAtOnceEnabledAndSet ? "10px" : undefined,
|
|
47
46
|
}), [isApplyAllAtOnceEnabledAndSet]);
|
|
48
47
|
const intl = useIntl();
|
|
49
48
|
const [expandedAutomatically, setExpandedAutomatically] = useState(false);
|
|
@@ -216,15 +215,11 @@ function MeasuredDiv({ measureRef, isAutoExpanded, children, }) {
|
|
|
216
215
|
}
|
|
217
216
|
horizontalKeyboardNavigation(e);
|
|
218
217
|
};
|
|
219
|
-
const setRefs = useCallback((node) => {
|
|
220
|
-
measureRef(node);
|
|
221
|
-
containerRef.current = node;
|
|
222
|
-
}, [measureRef]);
|
|
223
218
|
const intl = useIntl();
|
|
224
219
|
const regionLabel = isAutoExpanded
|
|
225
220
|
? `${intl.formatMessage({ id: "filterBar.label" })}. ${intl.formatMessage({ id: "filterBar.filterListAutoExpanded" })}`
|
|
226
221
|
: intl.formatMessage({ id: "filterBar.label" });
|
|
227
|
-
return (_jsx("div", { className: "dash-filters-all", role: "region", "aria-label": regionLabel, tabIndex: -1, ref:
|
|
222
|
+
return (_jsx("div", { className: "dash-filters-all", role: "region", "aria-label": regionLabel, tabIndex: -1, ref: containerRef, onKeyDown: keyboardNavigation, children: _jsx("div", { className: "dash-filters-toolbar", role: "toolbar", "aria-orientation": "horizontal", ref: measureRef, children: children }) }));
|
|
228
223
|
}
|
|
229
224
|
function FiltersRows({ rows }) {
|
|
230
225
|
return (_jsx(_Fragment, { children: rows.length > 1 && (_jsx("div", { className: "dash-filters-rows", children: rows.map((height, index) => (_jsx("div", { className: "dash-filters-row", style: { height } }, index))) })) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterViews.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilterViews.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx"],"names":[],"mappings":"AAkHA,wBAAgB,WAAW,mDA6G1B"}
|
|
@@ -2,9 +2,9 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
5
|
-
import {
|
|
5
|
+
import { useIntl } from "react-intl";
|
|
6
6
|
import { v4 as uuid } from "uuid";
|
|
7
|
-
import {
|
|
7
|
+
import { UiButton, UiReturnFocusOnUnmount, useIdPrefixed, useMediaQuery, } from "@gooddata/sdk-ui-kit";
|
|
8
8
|
import { useDashboardDispatch, useDashboardSelector, } from "../../../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js";
|
|
10
10
|
import { selectIsApplyFiltersAllAtOnceEnabledAndSet, selectIsReadOnly, } from "../../../../model/store/config/configSelectors.js";
|
|
@@ -13,14 +13,16 @@ import { selectDisableFilterViews, selectIsNewDashboard, } from "../../../../mod
|
|
|
13
13
|
import { selectCanCreateFilterView } from "../../../../model/store/permissions/permissionsSelectors.js";
|
|
14
14
|
import { selectIsInEditMode } from "../../../../model/store/renderMode/renderModeSelectors.js";
|
|
15
15
|
import { uiActions } from "../../../../model/store/ui/index.js";
|
|
16
|
-
import {
|
|
16
|
+
import { selectFilterViewsDialogMode, selectIsFilterViewsDialogOpen, } from "../../../../model/store/ui/uiSelectors.js";
|
|
17
17
|
import { ConfigurationBubble } from "../../../widget/common/configuration/ConfigurationBubble.js";
|
|
18
18
|
import { AddFilterView } from "./AddFilterView.js";
|
|
19
19
|
import { FilterViewsList } from "./FilterViewsList.js";
|
|
20
20
|
import { useFilterViewsToastMessages } from "./useFilterViewsToastMessages.js";
|
|
21
|
-
const BUBBLE_ALIGN_POINTS = [{ align: "br tr", offset: { x: -
|
|
22
|
-
function
|
|
23
|
-
return filterViews.length === 0
|
|
21
|
+
const BUBBLE_ALIGN_POINTS = [{ align: "br tr", offset: { x: -10, y: -10 } }];
|
|
22
|
+
function getButtonLabel(intl, filterViews) {
|
|
23
|
+
return filterViews.length === 0
|
|
24
|
+
? intl.formatMessage({ id: "filters.filterViews.dropdown.buttonEmpty" })
|
|
25
|
+
: intl.formatMessage({ id: "filters.filterViews.dropdown.button" }, { count: filterViews.length });
|
|
24
26
|
}
|
|
25
27
|
const useCallbacks = (isDialogOpen, countOfSavedViews) => {
|
|
26
28
|
const dispatch = useDashboardDispatch();
|
|
@@ -70,7 +72,7 @@ export function FilterViews() {
|
|
|
70
72
|
const isMobile = useMediaQuery("mobileDevice");
|
|
71
73
|
const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet);
|
|
72
74
|
const { toggleDialog, openAddDialog, openListDialog, closeDialog, onSaveDialog } = useCallbacks(isDialogOpen, filterViews.length);
|
|
73
|
-
const
|
|
75
|
+
const intl = useIntl();
|
|
74
76
|
const listDialogTitleId = useIdPrefixed("FilterViewsListTitle");
|
|
75
77
|
const addDialogTitleId = useIdPrefixed("AddFilterViewTitle");
|
|
76
78
|
useFilterViewsToastMessages();
|
|
@@ -84,24 +86,25 @@ export function FilterViews() {
|
|
|
84
86
|
// generate unique anchor class name to open dropdown next to the correct button if app uses multiple
|
|
85
87
|
// dashboard components
|
|
86
88
|
const dropdownAnchorClassName = useMemo(() => `gd-filter-views__dropdown-anchor-${uuid()}`, []);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"gd-filter-views-button--open": isDialogOpen,
|
|
89
|
+
// UiButton has no className prop, so the dropdown anchor and layout tweaks live on a wrapper
|
|
90
|
+
const buttonWrapperClassNames = cx("gd-filter-views-button", dropdownAnchorClassName, {
|
|
90
91
|
"deprecated-margin-top": !isApplyAllAtOnceEnabledAndSet,
|
|
91
92
|
});
|
|
92
93
|
const triggerId = useIdPrefixed("FilterViewsTrigger");
|
|
93
|
-
const triggerLabelId = useIdPrefixed("FilterViewsTriggerLabel");
|
|
94
94
|
const dropdownId = useIdPrefixed("FilterViewsDropdown");
|
|
95
95
|
const isReadOnly = useDashboardSelector(selectIsReadOnly);
|
|
96
96
|
if (isReadOnly) {
|
|
97
97
|
return null;
|
|
98
98
|
}
|
|
99
99
|
return (_jsxs("div", { className: "gd-filter-views", children: [showDropdownButton ? (_jsxs(_Fragment, { children: [
|
|
100
|
-
_jsx(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
_jsx("div", { className: buttonWrapperClassNames, children: _jsx(UiButton, { id: triggerId, variant: "tertiary",
|
|
101
|
+
// tertiary has no padding, so size only drives font-size and height;
|
|
102
|
+
// "medium" keeps the 14px label the button had in both densities
|
|
103
|
+
size: "medium", label: getButtonLabel(intl, filterViews), iconAfter: isDialogOpen ? "navigateUp" : "navigateDown", onClick: toggleDialog, dataTestId: "filter-views-button", accessibilityConfig: {
|
|
104
|
+
ariaHaspopup: "dialog",
|
|
105
|
+
ariaExpanded: isDialogOpen,
|
|
106
|
+
ariaControls: isDialogOpen ? dropdownId : undefined,
|
|
107
|
+
}, disableIconAnimation: true }) }), isDashboardEditMode ? _jsx("div", { className: "gd-filters-views__panel__divider" }) : null] })) : (_jsx("div", { className: dropdownAnchorClassName })), isDialogOpen ? (_jsx(UiReturnFocusOnUnmount, { returnFocusTo: triggerId, children: _jsx(ConfigurationBubble, { id: dropdownId, classNames: "gd-filters-views__panel", onClose: closeDialog, closeOnEscape: true, alignTo: `.${dropdownAnchorClassName}`, alignPoints: BUBBLE_ALIGN_POINTS, accessibilityConfig: {
|
|
105
108
|
role: "dialog",
|
|
106
109
|
ariaLabelledBy: dialogMode === "add" ? addDialogTitleId : listDialogTitleId,
|
|
107
110
|
}, children: dialogMode === "add" ? (_jsx(AddFilterView, { onClose: openListDialog, onSave: onSaveDialog, titleId: addDialogTitleId })) : (_jsx(FilterViewsList, { filterViews: filterViews, onAddNew: openAddDialog, onClose: closeDialog, titleId: listDialogTitleId })) }) })) : null] }));
|
|
@@ -58,6 +58,7 @@ export declare const de_DE: {
|
|
|
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 de_DE: {
|
|
|
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 de_DE: {
|
|
|
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":"de-DE.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/de-DE.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"de-DE.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/de-DE.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA83BjB,CAAC"}
|
|
@@ -60,6 +60,7 @@ export const de_DE = {
|
|
|
60
60
|
"options.menu.data.too.large": "Export aufgrund zu vieler Datenpunkte im Ergebnis nicht verfügbar.",
|
|
61
61
|
"options.menu.unsupported.raw.error": "Export aufgrund zu vieler Datenpunkte oder Fehler im Ergebnis nicht verfügbar",
|
|
62
62
|
"options.menu.density": "Inhaltsdichte",
|
|
63
|
+
"options.menu.changeTimezone": "Zeitzone ändern",
|
|
63
64
|
"density.dialog.title": "Inhaltsdichte",
|
|
64
65
|
"density.dialog.description": "Wählen Sie Ihre bevorzugte Inhaltsdichte für dieses und andere Dashboards.",
|
|
65
66
|
"density.dialog.option.standard": "Komfortabel",
|
|
@@ -111,14 +112,23 @@ export const de_DE = {
|
|
|
111
112
|
"settingsDashboardDialog.section.timezone": "Zeitzone",
|
|
112
113
|
"settingsDashboardDialog.section.timezone.defaultTimezone": "Standardzeitzone",
|
|
113
114
|
"settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": "Zeitzone, die zum Auswerten von Datumsfiltern und zum Anzeigen von Datumsangaben auf diesem Dashboard verwendet wird.",
|
|
114
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "Workspace-
|
|
115
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "
|
|
115
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "Workspace-Standard ({timezone})",
|
|
116
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "Lokale Benutzerzeit (vom Browser erkannt)",
|
|
116
117
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle": "Benutzern erlauben, die Dashboard-Zeitzone zu ändern",
|
|
117
118
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": "Wenn aktiviert, können Betrachtende die Dashboard-Zeitzone vorübergehend ändern. Die Änderung wird nicht gespeichert.",
|
|
118
119
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": "Zeitzone anzeigen",
|
|
119
120
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": "Wenn aktiviert, zeigt das Dashboard an, welche Zeitzone verwendet wird.",
|
|
120
121
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": "Suchen…",
|
|
121
122
|
"settingsDashboardDialog.section.timezone.select.noMatch": "Keine passende Zeitzone.",
|
|
123
|
+
"timezoneDialog.title": "Zeitzone ändern",
|
|
124
|
+
"timezoneDialog.description": "<b>Hinweis:</b> Beim Neuladen der Seite wird die Zeitzone auf den Standard ({timezone}) zurückgesetzt.",
|
|
125
|
+
"timezoneDialog.description.ariaLabel": "Informationsmeldung im Dialog zum Ändern der Zeitzone",
|
|
126
|
+
"timezoneDialog.default": "Standard ({timezone})",
|
|
127
|
+
"timezoneDialog.fromBrowser": "Meine lokale Zeit ({timezone})",
|
|
128
|
+
"timezoneDialog.select.searchPlaceholder": "Suchen…",
|
|
129
|
+
"timezoneDialog.select.noMatch": "Keine passende Zeitzone.",
|
|
130
|
+
"timezoneDialog.currentTime": "Jetzt {time}",
|
|
131
|
+
"timezoneDialog.success": "Großartig! Wir haben die Zeitzone geändert!",
|
|
122
132
|
"deleteDashboardDialog.headline": "Dashboard löschen?",
|
|
123
133
|
"deleteDashboardDialog.submitButtonText": "Löschen",
|
|
124
134
|
"deleteDashboardDialog.defaultMessage": "Sind Sie sicher, dass Sie das Dashboard {title} löschen möchten?",
|
|
@@ -370,6 +380,7 @@ export const de_DE = {
|
|
|
370
380
|
"header.shareStatus.private.text": "Privat",
|
|
371
381
|
"header.shareStatus.private.strict.tooltip": "Nur Sie können dieses Dashboard ansehen und bearbeiten.",
|
|
372
382
|
"header.shareStatus.private.not.strict.tooltip": "Der Ersteller kann dieses Dashboard bearbeiten. Andere Benutzer mit entsprechenden Benutzerrollen können dieses Dashboard bearbeiten, wenn sie danach suchen.",
|
|
383
|
+
"topBar.timezoneIndicator.tooltip": "Zeitzone",
|
|
373
384
|
"dashboard.shareDialog.removeAccessGranteeTooltip": "Entfernt den Zugriff auf dieses Dashboard.",
|
|
374
385
|
"dashboardMeasureValueFilter.section.from_dashboard": "Vom Dashboard",
|
|
375
386
|
"dashboardMeasureValueFilter.section.all_other": "Alle anderen",
|
|
@@ -58,6 +58,7 @@ export declare const en_AU: {
|
|
|
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 en_AU: {
|
|
|
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 en_AU: {
|
|
|
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":"en-AU.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-AU.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"en-AU.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-AU.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA83BjB,CAAC"}
|
|
@@ -60,6 +60,7 @@ export const en_AU = {
|
|
|
60
60
|
"options.menu.data.too.large": "Export unavailable due to too many data points in the result.",
|
|
61
61
|
"options.menu.unsupported.raw.error": "Export unavailable due to too many data points or error in the result.",
|
|
62
62
|
"options.menu.density": "Content density",
|
|
63
|
+
"options.menu.changeTimezone": "Change time zone",
|
|
63
64
|
"density.dialog.title": "Content density",
|
|
64
65
|
"density.dialog.description": "Choose your preferred level of content density for this and other dashboards.",
|
|
65
66
|
"density.dialog.option.standard": "Comfortable",
|
|
@@ -111,14 +112,23 @@ export const en_AU = {
|
|
|
111
112
|
"settingsDashboardDialog.section.timezone": "Time zone",
|
|
112
113
|
"settingsDashboardDialog.section.timezone.defaultTimezone": "Default time zone setting",
|
|
113
114
|
"settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": "Time zone used to evaluate date filters and show dates on this dashboard.",
|
|
114
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "
|
|
115
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "
|
|
115
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "Workspace default ({timezone})",
|
|
116
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "User local time (Browser-detected)",
|
|
116
117
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle": "Allow users to change the dashboard's time zone",
|
|
117
118
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": "When enabled, viewers can temporarily change the dashboard's time zone. The change is not saved.",
|
|
118
119
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": "Show the time zone",
|
|
119
120
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": "When enabled, the dashboard shows which time zone is used.",
|
|
120
121
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": "Search ...",
|
|
121
122
|
"settingsDashboardDialog.section.timezone.select.noMatch": "No matching time zones.",
|
|
123
|
+
"timezoneDialog.title": "Change time zone",
|
|
124
|
+
"timezoneDialog.description": "<b>Note:</b> Time zone resets to the default ({timezone}) when you reload the page.",
|
|
125
|
+
"timezoneDialog.description.ariaLabel": "Change time zone dialog information message",
|
|
126
|
+
"timezoneDialog.default": "Default ({timezone})",
|
|
127
|
+
"timezoneDialog.fromBrowser": "My local time ({timezone})",
|
|
128
|
+
"timezoneDialog.select.searchPlaceholder": "Search ...",
|
|
129
|
+
"timezoneDialog.select.noMatch": "No matching time zones.",
|
|
130
|
+
"timezoneDialog.currentTime": "Now {time}",
|
|
131
|
+
"timezoneDialog.success": "Great! We changed the time zone!",
|
|
122
132
|
"deleteDashboardDialog.headline": "Delete dashboard?",
|
|
123
133
|
"deleteDashboardDialog.submitButtonText": "Delete",
|
|
124
134
|
"deleteDashboardDialog.defaultMessage": "Are you sure you want to delete dashboard {title}?",
|
|
@@ -370,6 +380,7 @@ export const en_AU = {
|
|
|
370
380
|
"header.shareStatus.private.text": "Private",
|
|
371
381
|
"header.shareStatus.private.strict.tooltip": "Only you can view and edit this dashboard.",
|
|
372
382
|
"header.shareStatus.private.not.strict.tooltip": "The creator can edit this dashboard. Other users with suitable user roles can edit this dashboard when they drill to it.",
|
|
383
|
+
"topBar.timezoneIndicator.tooltip": "Time zone",
|
|
373
384
|
"dashboard.shareDialog.removeAccessGranteeTooltip": "Remove access to this dashboard.",
|
|
374
385
|
"dashboardMeasureValueFilter.section.from_dashboard": "From dashboard",
|
|
375
386
|
"dashboardMeasureValueFilter.section.all_other": "All other",
|
|
@@ -58,6 +58,7 @@ export declare const en_GB: {
|
|
|
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 en_GB: {
|
|
|
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 en_GB: {
|
|
|
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":"en-GB.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-GB.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"en-GB.localization-bundle.d.ts","sourceRoot":"","sources":["../../../../src/presentation/localization/bundles/en-GB.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA83BjB,CAAC"}
|
|
@@ -60,6 +60,7 @@ export const en_GB = {
|
|
|
60
60
|
"options.menu.data.too.large": "Export unavailable due to too many data points in the result.",
|
|
61
61
|
"options.menu.unsupported.raw.error": "Export unavailable due to too many data points or error in the result.",
|
|
62
62
|
"options.menu.density": "Content density",
|
|
63
|
+
"options.menu.changeTimezone": "Change time zone",
|
|
63
64
|
"density.dialog.title": "Content density",
|
|
64
65
|
"density.dialog.description": "Choose your preferred level of content density for this and other dashboards.",
|
|
65
66
|
"density.dialog.option.standard": "Comfortable",
|
|
@@ -111,14 +112,23 @@ export const en_GB = {
|
|
|
111
112
|
"settingsDashboardDialog.section.timezone": "Time zone",
|
|
112
113
|
"settingsDashboardDialog.section.timezone.defaultTimezone": "Default time zone",
|
|
113
114
|
"settingsDashboardDialog.section.timezone.defaultTimezone.tooltip": "Time zone used for evaluating date filters and displaying dates on this dashboard.",
|
|
114
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "Workspace
|
|
115
|
-
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "
|
|
115
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.workspace": "Workspace default ({timezone})",
|
|
116
|
+
"settingsDashboardDialog.section.timezone.defaultTimezone.fromBrowser": "User local time (Browser-detected)",
|
|
116
117
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle": "Allow users to change the dashboard's time zone",
|
|
117
118
|
"settingsDashboardDialog.section.timezone.allowUserOverride.toggle.tooltip": "When enabled, viewers can temporarily change the dashboard's time zone. The change is not saved.",
|
|
118
119
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle": "Show time zone",
|
|
119
120
|
"settingsDashboardDialog.section.timezone.showTimezoneInfo.toggle.tooltip": "When enabled, the dashboard shows which time zone is used.",
|
|
120
121
|
"settingsDashboardDialog.section.timezone.select.searchPlaceholder": "Search ...",
|
|
121
122
|
"settingsDashboardDialog.section.timezone.select.noMatch": "No matching time zones.",
|
|
123
|
+
"timezoneDialog.title": "Change time zone",
|
|
124
|
+
"timezoneDialog.description": "<b>Note:</b> Time zone resets to the default ({timezone}) when you reload the page.",
|
|
125
|
+
"timezoneDialog.description.ariaLabel": "Change time zone dialog information message",
|
|
126
|
+
"timezoneDialog.default": "Default ({timezone})",
|
|
127
|
+
"timezoneDialog.fromBrowser": "My local time ({timezone})",
|
|
128
|
+
"timezoneDialog.select.searchPlaceholder": "Search ...",
|
|
129
|
+
"timezoneDialog.select.noMatch": "No matching time zones.",
|
|
130
|
+
"timezoneDialog.currentTime": "Now {time}",
|
|
131
|
+
"timezoneDialog.success": "Great! We changed the time zone!",
|
|
122
132
|
"deleteDashboardDialog.headline": "Delete dashboard?",
|
|
123
133
|
"deleteDashboardDialog.submitButtonText": "Delete",
|
|
124
134
|
"deleteDashboardDialog.defaultMessage": "Are you certain you wish to delete dashboard {title}?",
|
|
@@ -370,6 +380,7 @@ export const en_GB = {
|
|
|
370
380
|
"header.shareStatus.private.text": "Private",
|
|
371
381
|
"header.shareStatus.private.strict.tooltip": "Only you can view and edit this dashboard.",
|
|
372
382
|
"header.shareStatus.private.not.strict.tooltip": "The creator can edit this dashboard. Other users with suitable user roles can edit this dashboard when they drill to it.",
|
|
383
|
+
"topBar.timezoneIndicator.tooltip": "Time zone",
|
|
373
384
|
"dashboard.shareDialog.removeAccessGranteeTooltip": "Remove access to this dashboard.",
|
|
374
385
|
"dashboardMeasureValueFilter.section.from_dashboard": "From dashboard",
|
|
375
386
|
"dashboardMeasureValueFilter.section.all_other": "All other",
|
|
@@ -235,6 +235,10 @@ export declare const en_US: {
|
|
|
235
235
|
text: string;
|
|
236
236
|
crowdinContext: string;
|
|
237
237
|
};
|
|
238
|
+
"options.menu.changeTimezone": {
|
|
239
|
+
text: string;
|
|
240
|
+
crowdinContext: string;
|
|
241
|
+
};
|
|
238
242
|
"density.dialog.title": {
|
|
239
243
|
text: string;
|
|
240
244
|
crowdinContext: string;
|
|
@@ -471,6 +475,42 @@ export declare const en_US: {
|
|
|
471
475
|
text: string;
|
|
472
476
|
crowdinContext: string;
|
|
473
477
|
};
|
|
478
|
+
"timezoneDialog.title": {
|
|
479
|
+
text: string;
|
|
480
|
+
crowdinContext: string;
|
|
481
|
+
};
|
|
482
|
+
"timezoneDialog.description": {
|
|
483
|
+
text: string;
|
|
484
|
+
crowdinContext: string;
|
|
485
|
+
};
|
|
486
|
+
"timezoneDialog.description.ariaLabel": {
|
|
487
|
+
text: string;
|
|
488
|
+
crowdinContext: string;
|
|
489
|
+
};
|
|
490
|
+
"timezoneDialog.default": {
|
|
491
|
+
text: string;
|
|
492
|
+
crowdinContext: string;
|
|
493
|
+
};
|
|
494
|
+
"timezoneDialog.fromBrowser": {
|
|
495
|
+
text: string;
|
|
496
|
+
crowdinContext: string;
|
|
497
|
+
};
|
|
498
|
+
"timezoneDialog.select.searchPlaceholder": {
|
|
499
|
+
text: string;
|
|
500
|
+
crowdinContext: string;
|
|
501
|
+
};
|
|
502
|
+
"timezoneDialog.select.noMatch": {
|
|
503
|
+
text: string;
|
|
504
|
+
crowdinContext: string;
|
|
505
|
+
};
|
|
506
|
+
"timezoneDialog.currentTime": {
|
|
507
|
+
text: string;
|
|
508
|
+
crowdinContext: string;
|
|
509
|
+
};
|
|
510
|
+
"timezoneDialog.success": {
|
|
511
|
+
text: string;
|
|
512
|
+
crowdinContext: string;
|
|
513
|
+
};
|
|
474
514
|
"deleteDashboardDialog.headline": {
|
|
475
515
|
text: string;
|
|
476
516
|
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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAq/GjB,CAAC"}
|