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