@gooddata/sdk-ui-dashboard 11.56.0-alpha.6 → 11.56.0-alpha.8
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 +1 -1
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/_staging/catalog/computedAttributes.d.ts +43 -0
- package/esm/_staging/catalog/computedAttributes.d.ts.map +1 -0
- package/esm/_staging/catalog/computedAttributes.js +93 -0
- package/esm/_staging/catalog/displayFormMap.d.ts +3 -2
- package/esm/_staging/catalog/displayFormMap.d.ts.map +1 -1
- package/esm/_staging/catalog/displayFormMap.js +9 -3
- package/esm/_staging/metadata/objRefMap.d.ts.map +1 -1
- package/esm/_staging/metadata/objRefMap.js +11 -1
- package/esm/index.d.ts +9 -5
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -3
- package/esm/kdaDialog/composition/hooks/useKdaValidAttributes.js +2 -2
- package/esm/kdaDialog/dialog/hooks/useValidAttributes.d.ts.map +1 -1
- package/esm/kdaDialog/dialog/hooks/useValidAttributes.js +21 -6
- package/esm/kdaDialog/hooks/useAttribute.d.ts.map +1 -1
- package/esm/kdaDialog/hooks/useAttribute.js +16 -8
- package/esm/locales.d.ts +3 -0
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +3 -0
- package/esm/model/commandHandlers/dashboard/common/loadAvailableDisplayFormRefs.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/common/loadAvailableDisplayFormRefs.js +15 -6
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts +2 -3
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/index.js +26 -17
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.d.ts +6 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/loadCatalog.js +37 -4
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts +7 -2
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.d.ts.map +1 -1
- package/esm/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.js +15 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/filterDisplayFormValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/filterDisplayFormValidation.js +10 -3
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/uniqueFiltersValidation.d.ts.map +1 -1
- package/esm/model/commandHandlers/filterContext/attributeFilter/validation/uniqueFiltersValidation.js +24 -14
- package/esm/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.js +2 -2
- package/esm/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.js +6 -0
- package/esm/model/commandHandlers/widgets/exportInsightWidgetHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/widgets/exportInsightWidgetHandler.js +2 -2
- package/esm/model/commandHandlers/widgets/exportRawInsightWidgetHandler.js +2 -2
- package/esm/model/queries/base.d.ts +1 -1
- package/esm/model/queries/base.d.ts.map +1 -1
- package/esm/model/queries/base.js +1 -1
- package/esm/model/queries/computedAttributeExpression.d.ts +27 -0
- package/esm/model/queries/computedAttributeExpression.d.ts.map +1 -0
- package/esm/model/queries/computedAttributeExpression.js +21 -0
- package/esm/model/queries/connectedAttributes.d.ts +19 -1
- package/esm/model/queries/connectedAttributes.d.ts.map +1 -1
- package/esm/model/queries/connectedAttributes.js +3 -1
- package/esm/model/queries/index.d.ts +2 -1
- package/esm/model/queries/index.d.ts.map +1 -1
- package/esm/model/queryServices/index.d.ts +1 -1
- package/esm/model/queryServices/index.d.ts.map +1 -1
- package/esm/model/queryServices/index.js +2 -0
- package/esm/model/queryServices/queryAttributeByDisplayForm.d.ts.map +1 -1
- package/esm/model/queryServices/queryAttributeByDisplayForm.js +12 -3
- package/esm/model/queryServices/queryAttributeDataset.d.ts.map +1 -1
- package/esm/model/queryServices/queryAttributeDataset.js +9 -1
- package/esm/model/queryServices/queryComputedAttributeExpression.d.ts +4 -0
- package/esm/model/queryServices/queryComputedAttributeExpression.d.ts.map +1 -0
- package/esm/model/queryServices/queryComputedAttributeExpression.js +17 -0
- package/esm/model/queryServices/queryConnectedAttributes.d.ts.map +1 -1
- package/esm/model/queryServices/queryConnectedAttributes.js +20 -5
- package/esm/model/queryServices/queryInsightAttributesMeta.d.ts.map +1 -1
- package/esm/model/queryServices/queryInsightAttributesMeta.js +20 -11
- package/esm/model/react/useIsWidgetRestricted.d.ts +9 -0
- package/esm/model/react/useIsWidgetRestricted.d.ts.map +1 -0
- package/esm/model/react/useIsWidgetRestricted.js +14 -0
- package/esm/model/store/catalog/catalogReducers.d.ts +2 -1
- package/esm/model/store/catalog/catalogReducers.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogReducers.js +2 -1
- package/esm/model/store/catalog/catalogSelectors.d.ts +21 -1
- package/esm/model/store/catalog/catalogSelectors.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogSelectors.js +26 -2
- package/esm/model/store/catalog/catalogState.d.ts +8 -1
- package/esm/model/store/catalog/catalogState.d.ts.map +1 -1
- package/esm/model/store/catalog/catalogState.js +1 -0
- package/esm/model/store/config/configSelectors.d.ts +11 -0
- package/esm/model/store/config/configSelectors.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.js +13 -0
- package/esm/model/store/insights/insightsSelectors.js +3 -3
- package/esm/model/store/tabs/filterContext/filterContextSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/filterContext/filterContextSelectors.js +8 -4
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.d.ts +8 -0
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.d.ts.map +1 -1
- package/esm/model/store/unavailableObjects/unavailableObjectsSelectors.js +8 -0
- package/esm/model/utils/displayFormResolver.d.ts.map +1 -1
- package/esm/model/utils/displayFormResolver.js +11 -1
- package/esm/plugins/customizationApis/customizationBuilder.d.ts.map +1 -1
- package/esm/plugins/customizationApis/customizationBuilder.js +1 -0
- package/esm/plugins/customizationApis/insightCustomizer.d.ts +4 -2
- package/esm/plugins/customizationApis/insightCustomizer.d.ts.map +1 -1
- package/esm/plugins/customizationApis/insightCustomizer.js +43 -3
- package/esm/plugins/customizer.d.ts +14 -1
- package/esm/plugins/customizer.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts +2 -0
- package/esm/presentation/automations/alerting/AlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/AlertingDialog.js +12 -2
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/DefaultAlertingDialog.js +1 -1
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/AlertingDialogStateProvider.js +23 -58
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.d.ts +33 -0
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.d.ts.map +1 -0
- package/esm/presentation/automations/alerting/state/useAlertDraftFilterWrites.js +61 -0
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.d.ts +3 -17
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/state/useAlertFiltersModel.js +3 -52
- package/esm/presentation/automations/alerting/state/useAlertFormState.js +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.js +1 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts +3 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/ScheduledEmailDialog.js +13 -3
- package/esm/presentation/automations/scheduledEmail/blocks/ScheduledEmailDialogShell.js +2 -5
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/ScheduledEmailDialogStateProvider.js +22 -40
- package/esm/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useSaveScheduledEmailToBackend.js +14 -3
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.d.ts +27 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.d.ts.map +1 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailDraftFilterWrites.js +142 -0
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts +4 -6
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/state/useScheduledEmailFiltersModel.js +9 -151
- package/esm/presentation/automations/shared/filters/conversions.d.ts +4 -0
- package/esm/presentation/automations/shared/filters/conversions.d.ts.map +1 -1
- package/esm/presentation/automations/shared/filters/conversions.js +28 -24
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.d.ts +16 -0
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useDecoratorContractCheck.js +38 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.d.ts +10 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.d.ts.map +1 -0
- package/esm/presentation/automations/shared/hooks/useShallowStable.js +18 -0
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.js +17 -4
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts +10 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.d.ts.map +1 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarCollapseToggle.js +19 -0
- package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.js +8 -2
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeChrome.js +4 -2
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts +8 -3
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/SidebarResizeContext.js +65 -25
- package/esm/presentation/dashboard/components/DashboardInner.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardInner.js +4 -4
- package/esm/presentation/dashboard/components/DashboardRenderer.d.ts.map +1 -1
- package/esm/presentation/dashboard/components/DashboardRenderer.js +2 -2
- package/esm/presentation/dashboard/hooks/useDashboard.d.ts +2 -1
- package/esm/presentation/dashboard/hooks/useDashboard.d.ts.map +1 -1
- package/esm/presentation/dashboard/hooks/useDashboard.js +7 -1
- package/esm/presentation/dashboard/types.d.ts +14 -1
- package/esm/presentation/dashboard/types.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts +2 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.d.ts.map +1 -1
- package/esm/presentation/dashboardContexts/DashboardComponentsContext.js +1 -0
- package/esm/presentation/dashboardContexts/types.d.ts +20 -0
- package/esm/presentation/dashboardContexts/types.d.ts.map +1 -1
- package/esm/presentation/dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.d.ts.map +1 -1
- package/esm/presentation/dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.js +4 -3
- package/esm/presentation/export/useExportData.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.js +8 -2
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.d.ts +12 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltipContent.js +19 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/displayForms/AttributeDisplayFormsDropdown.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/displayForms/AttributeDisplayFormsDropdown.js +3 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.d.ts +14 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.d.ts.map +1 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useComputedAttributeExpression.js +28 -0
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDisplayFormConfiguration.js +2 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useValidNeighbourAttributes.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useValidNeighbourAttributes.js +12 -2
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/shared/limitingItemsHook.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/shared/limitingItemsHook.js +6 -5
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersDisabledItem.js +2 -2
- package/esm/presentation/filterBar/filterBar/DefaultFilterBarItem.js +2 -2
- package/esm/presentation/filterBar/filterBar/useFiltersWithAddedPlaceholder.js +2 -2
- package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.d.ts.map +1 -1
- package/esm/presentation/filterBar/measureValueFilter/useDashboardMeasureValueFilterData.js +55 -17
- package/esm/presentation/flexibleLayout/DashboardLayoutWidget.d.ts.map +1 -1
- package/esm/presentation/flexibleLayout/DashboardLayoutWidget.js +6 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/de-DE.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-AU.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/en-GB.localization-bundle.js +5 -4
- 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 +40 -0
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-419.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/es-ES.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fi-FI.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-CA.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/fr-FR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/id-ID.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/it-IT.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +33 -32
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ko-KR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/nl-NL.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pl-PL.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-BR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/pt-PT.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/ru-RU.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/sl-SI.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/th-TH.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/tr-TR.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/uk-UA.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/vi-VN.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-HK.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hans.localization-bundle.js +5 -4
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts +5 -4
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/presentation/localization/bundles/zh-Hant.localization-bundle.js +5 -4
- package/esm/presentation/widget/common/RestrictedPlaceholder.d.ts +54 -0
- package/esm/presentation/widget/common/RestrictedPlaceholder.d.ts.map +1 -0
- package/esm/presentation/widget/common/RestrictedPlaceholder.js +49 -0
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.d.ts +6 -1
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/DateDatasetFilter.js +2 -2
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.d.ts +6 -1
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.d.ts.map +1 -1
- package/esm/presentation/widget/common/configuration/DateFilterCheckbox.js +10 -3
- package/esm/presentation/widget/insight/DefaultInsightBody/DefaultInsightBody.js +2 -2
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.js +2 -2
- package/esm/presentation/widget/insight/configuration/InsightDateDataSetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDateDataSetFilter.js +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.d.ts +6 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigList.js +13 -2
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.js +5 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.d.ts +1 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/useDrillTargetTypeItems.js +2 -2
- package/esm/presentation/widget/richText/configuration/RichTextDateDataSetFilter.d.ts.map +1 -1
- package/esm/presentation/widget/richText/configuration/RichTextDateDataSetFilter.js +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.d.ts.map +1 -1
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js +8 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.d.ts +16 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.d.ts.map +1 -0
- package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcherRestricted.js +19 -0
- package/esm/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.d.ts.map +1 -1
- package/esm/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.js +11 -1
- package/esm/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.js +2 -2
- package/esm/presentation/widget/widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.d.ts.map +1 -1
- package/esm/presentation/widget/widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.js +25 -12
- package/esm/sdk-ui-dashboard.d.ts +206 -4
- package/package.json +22 -22
- package/styles/css/alerting.css +3 -1
- package/styles/css/alerting.css.map +1 -1
- package/styles/css/configurationPanel.css +1 -5
- package/styles/css/configurationPanel.css.map +1 -1
- package/styles/css/dashboard.css +5 -3
- package/styles/css/dashboard.css.map +1 -1
- package/styles/css/export.css +10 -8
- package/styles/css/export.css.map +1 -1
- package/styles/css/filterBar.css +29 -0
- package/styles/css/filterBar.css.map +1 -1
- package/styles/css/main.css +230 -22
- package/styles/css/main.css.map +1 -1
- package/styles/css/sidebar.css +165 -0
- package/styles/css/sidebar.css.map +1 -1
- package/styles/css/visualizationSwitcherWidget.css +8 -0
- package/styles/css/visualizationSwitcherWidget.css.map +1 -1
- package/styles/scss/configurationPanel.scss +1 -7
- package/styles/scss/filterBar.scss +38 -0
- package/styles/scss/sidebar.scss +215 -0
- package/styles/scss/visualizationSwitcherWidget.scss +9 -0
|
@@ -4,7 +4,7 @@ import { defWithDimensions, defaultDimensionsGenerator, idRef, insightRef, insig
|
|
|
4
4
|
import { fillMissingTitles, resolveDefaultDisplayFormRefForDisplayForm, resolveMessages, } from "@gooddata/sdk-ui";
|
|
5
5
|
import { scheduledEmailCreated } from "../../events/scheduledEmail.js";
|
|
6
6
|
import { queryWithInsight } from "../../queryServices/queryWidgetFilters.js";
|
|
7
|
-
import {
|
|
7
|
+
import { selectCatalogAttributesWithComputed } from "../../store/catalog/catalogSelectors.js";
|
|
8
8
|
import { selectEnableStringParameters, selectLocale, selectSettings, } from "../../store/config/configSelectors.js";
|
|
9
9
|
import { selectExecutionResultByRef } from "../../store/executionResults/executionResultsSelectors.js";
|
|
10
10
|
import { selectAutomationCommonDateFilterId } from "../../store/filtering/dashboardFilterSelectors.js";
|
|
@@ -63,7 +63,7 @@ export function* createScheduledEmailHandler(ctx, cmd) {
|
|
|
63
63
|
commonDateFilterId,
|
|
64
64
|
});
|
|
65
65
|
const settings = yield select(selectSettings);
|
|
66
|
-
const catalogAttributes = yield select(
|
|
66
|
+
const catalogAttributes = yield select(selectCatalogAttributesWithComputed);
|
|
67
67
|
const preloadedAttributesWithReferences = yield select(selectPreloadedAttributesWithReferences);
|
|
68
68
|
const preparedGeoRawExport = lookupInsight && filledInsight && preparedExecutionDefinitionWithFilters
|
|
69
69
|
? prepareGeoRawExportDefinition({
|
|
@@ -4,7 +4,7 @@ import { defWithDimensions, defaultDimensionsGenerator, idRef, insightRef, insig
|
|
|
4
4
|
import { fillMissingTitles, resolveDefaultDisplayFormRefForDisplayForm, resolveMessages, } from "@gooddata/sdk-ui";
|
|
5
5
|
import { scheduledEmailSaved } from "../../events/scheduledEmail.js";
|
|
6
6
|
import { queryWithInsight } from "../../queryServices/queryWidgetFilters.js";
|
|
7
|
-
import {
|
|
7
|
+
import { selectCatalogAttributesWithComputed } from "../../store/catalog/catalogSelectors.js";
|
|
8
8
|
import { selectEnableStringParameters, selectLocale, selectSettings, } from "../../store/config/configSelectors.js";
|
|
9
9
|
import { selectExecutionResultByRef } from "../../store/executionResults/executionResultsSelectors.js";
|
|
10
10
|
import { selectAutomationCommonDateFilterId } from "../../store/filtering/dashboardFilterSelectors.js";
|
|
@@ -67,7 +67,7 @@ export function* saveScheduledEmailHandler(ctx, cmd) {
|
|
|
67
67
|
commonDateFilterId,
|
|
68
68
|
});
|
|
69
69
|
const settings = yield select(selectSettings);
|
|
70
|
-
const catalogAttributes = yield select(
|
|
70
|
+
const catalogAttributes = yield select(selectCatalogAttributesWithComputed);
|
|
71
71
|
const preloadedAttributesWithReferences = yield select(selectPreloadedAttributesWithReferences);
|
|
72
72
|
const preparedGeoRawExport = lookupInsight && filledInsight && preparedExecutionDefinitionWithFilters
|
|
73
73
|
? prepareGeoRawExportDefinition({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributeHierarchyModifiedHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACH,KAAK,gCAAgC,EAExC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"attributeHierarchyModifiedHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/attributeHierarchyModifiedHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACH,KAAK,gCAAgC,EAExC,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,KAAK,gBAAgB,EAAiC,MAAM,4BAA4B,CAAC;AAiClG,wBAAiB,iCAAiC,CAC9C,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,2BAA2B,GACjC,YAAY,CAAC,gCAAgC,CAAC,CAkChD"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { call, put, select } from "redux-saga/effects";
|
|
3
3
|
import { idRef } from "@gooddata/sdk-model";
|
|
4
4
|
import { attributeHierarchyModifiedEvent, } from "../../events/insight.js";
|
|
5
|
+
import { selectCatalogComputedAttributes } from "../../store/catalog/catalogSelectors.js";
|
|
5
6
|
import { catalogActions } from "../../store/catalog/index.js";
|
|
6
7
|
import { selectObjectAvailabilityConfig } from "../../store/config/configSelectors.js";
|
|
7
8
|
import { loadDateHierarchyTemplates } from "../dashboard/initializeDashboardHandler/loadDateHierarchyTemplates.js";
|
|
@@ -32,12 +33,17 @@ export function* attributeHierarchyModifiedHandler(ctx, cmd) {
|
|
|
32
33
|
const availability = yield select(selectObjectAvailabilityConfig);
|
|
33
34
|
const catalog = yield call(loadCatalog, ctx, availability);
|
|
34
35
|
const dateHierarchyTemplates = yield call(loadDateHierarchyTemplates, ctx);
|
|
36
|
+
// setCatalogItems replaces the whole catalog, but this reload does not ask for computed
|
|
37
|
+
// attributes (a hierarchy cannot contain one, so their state cannot have changed) - the
|
|
38
|
+
// already-loaded slice is carried over so it is not wiped by the hierarchy refresh
|
|
39
|
+
const computedAttributes = yield select(selectCatalogComputedAttributes);
|
|
35
40
|
yield put(catalogActions.setCatalogItems({
|
|
36
41
|
attributes: catalog.attributes(),
|
|
37
42
|
dateDatasets: catalog.dateDatasets(),
|
|
38
43
|
facts: catalog.facts(),
|
|
39
44
|
measures: catalog.measures(),
|
|
40
45
|
attributeHierarchies: catalog.attributeHierarchies(),
|
|
46
|
+
computedAttributes,
|
|
41
47
|
dateHierarchyTemplates,
|
|
42
48
|
}));
|
|
43
49
|
return attributeHierarchyModifiedEvent(ctx, correlationId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/exportInsightWidgetHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAyB/C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EACH,KAAK,qCAAqC,EAG7C,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAsFnE,wBAAiB,0BAA0B,CACvC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,oBAAoB,GAC1B,YAAY,CAAC,qCAAqC,CAAC,
|
|
1
|
+
{"version":3,"file":"exportInsightWidgetHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/widgets/exportInsightWidgetHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAyB/C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EACH,KAAK,qCAAqC,EAG7C,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAsFnE,wBAAiB,0BAA0B,CACvC,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,oBAAoB,GAC1B,YAAY,CAAC,qCAAqC,CAAC,CAsHrD"}
|
|
@@ -8,7 +8,7 @@ import { createExportExecutionDefinition, } from "@gooddata/sdk-ui/internal";
|
|
|
8
8
|
import { mergeInsightWithWidgetProperties } from "../../../_staging/insight/insightWidgetProperties.js";
|
|
9
9
|
import { invalidArgumentsProvided } from "../../events/general.js";
|
|
10
10
|
import { insightWidgetExportRequested, insightWidgetExportResolved, } from "../../events/insight.js";
|
|
11
|
-
import {
|
|
11
|
+
import { selectCatalogAttributesWithComputed } from "../../store/catalog/catalogSelectors.js";
|
|
12
12
|
import { selectExportResultPollingTimeout, selectSettings } from "../../store/config/configSelectors.js";
|
|
13
13
|
import { selectExecutionResultByRef, selectIsExecutionResultExportableToCsvByRef, selectIsExecutionResultExportableToPdfByRef, selectIsExecutionResultExportableToXlsxByRef, selectIsExecutionResultReadyForExportByRef, } from "../../store/executionResults/executionResultsSelectors.js";
|
|
14
14
|
import { selectInsightByWidgetRef } from "../../store/insights/insightsSelectors.js";
|
|
@@ -67,7 +67,7 @@ export function* exportInsightWidgetHandler(ctx, cmd) {
|
|
|
67
67
|
const executionResult = executionEnvelope.executionResult;
|
|
68
68
|
const insight = payloadInsight ?? (yield select(selectInsightByWidgetRef(ref)));
|
|
69
69
|
const settings = yield select(selectSettings);
|
|
70
|
-
const catalogAttributes = yield select(
|
|
70
|
+
const catalogAttributes = yield select(selectCatalogAttributesWithComputed);
|
|
71
71
|
const preloadedAttributesWithReferences = yield select(selectPreloadedAttributesWithReferences);
|
|
72
72
|
const widget = yield select(selectWidgetByRef(ref));
|
|
73
73
|
const effectiveInsight = insight && isInsightWidget(widget) ? mergeInsightWithWidgetProperties(insight, widget) : insight;
|
|
@@ -4,7 +4,7 @@ import { invariant } from "ts-invariant";
|
|
|
4
4
|
import { defWithDimensions, defaultDimensionsGenerator, filterContextItemsToDashboardFiltersByWidget, insightRef, newDefForInsight, } from "@gooddata/sdk-model";
|
|
5
5
|
import { fillMissingTitles, resolveDefaultDisplayFormRefForDisplayForm } from "@gooddata/sdk-ui";
|
|
6
6
|
import { insightWidgetExportResolved, } from "../../events/insight.js";
|
|
7
|
-
import {
|
|
7
|
+
import { selectCatalogAttributesWithComputed } from "../../store/catalog/catalogSelectors.js";
|
|
8
8
|
import { selectExportResultPollingTimeout, selectLocale, selectSettings, } from "../../store/config/configSelectors.js";
|
|
9
9
|
import { selectExecutionResultByRef } from "../../store/executionResults/executionResultsSelectors.js";
|
|
10
10
|
import { selectInsightByRef, selectRawExportOverridesForInsight, } from "../../store/insights/insightsSelectors.js";
|
|
@@ -30,7 +30,7 @@ export function* exportRawInsightWidgetHandler(ctx, cmd) {
|
|
|
30
30
|
const locale = yield select(selectLocale);
|
|
31
31
|
const filledInsight = yield call(fillMissingTitles, selectedInsight, locale, undefined);
|
|
32
32
|
const settings = yield select(selectSettings);
|
|
33
|
-
const catalogAttributes = yield select(
|
|
33
|
+
const catalogAttributes = yield select(selectCatalogAttributesWithComputed);
|
|
34
34
|
const preloadedAttributesWithReferences = yield select(selectPreloadedAttributesWithReferences);
|
|
35
35
|
const baseExecutionDefinition = executionEnvelope?.executionResult?.definition ?? definition;
|
|
36
36
|
const { executionDefinition: preparedExecutionDefinition, filledInsight: preparedFilledInsight } = prepareGeoRawExportDefinition({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @beta
|
|
3
3
|
*/
|
|
4
|
-
export type DashboardQueryType = "GDC.DASH/QUERY.INSIGHT.DATE.DATASETS" | "GDC.DASH/QUERY.INSIGHT.ATTRIBUTE.META" | "GDC.DASH/QUERY.MEASURE.DATE.DATASETS" | "GDC.DASH/QUERY.WIDGET.FILTERS" | "GDC.DASH/QUERY.WIDGET.BROKEN_ALERTS" | "GDC.DASH/QUERY.WIDGET.ALERT_COUNT" | "GDC.DASH/QUERY.CONNECTING.ATTRIBUTES" | "GDC.DASH/QUERY.DISPLAY.FORM.ATTRIBUTE" | "GDC.DASH/QUERY.DATA.SET.ATTRIBUTE" | "GDC.DASH/QUERY.ELEMENTS.ATTRIBUTE" | "GDC.DASH/QUERY.CONNECTED.ATTRIBUTES" | "GDC.DASH/QUERY.METRICS_AND_FACTS" | "GDC.DASH/QUERY.AVAILABLE.DATA.SETS.FOR.ITEMS";
|
|
4
|
+
export type DashboardQueryType = "GDC.DASH/QUERY.INSIGHT.DATE.DATASETS" | "GDC.DASH/QUERY.INSIGHT.ATTRIBUTE.META" | "GDC.DASH/QUERY.MEASURE.DATE.DATASETS" | "GDC.DASH/QUERY.WIDGET.FILTERS" | "GDC.DASH/QUERY.WIDGET.BROKEN_ALERTS" | "GDC.DASH/QUERY.WIDGET.ALERT_COUNT" | "GDC.DASH/QUERY.CONNECTING.ATTRIBUTES" | "GDC.DASH/QUERY.DISPLAY.FORM.ATTRIBUTE" | "GDC.DASH/QUERY.DATA.SET.ATTRIBUTE" | "GDC.DASH/QUERY.ELEMENTS.ATTRIBUTE" | "GDC.DASH/QUERY.CONNECTED.ATTRIBUTES" | "GDC.DASH/QUERY.COMPUTED.ATTRIBUTE.EXPRESSION" | "GDC.DASH/QUERY.METRICS_AND_FACTS" | "GDC.DASH/QUERY.AVAILABLE.DATA.SETS.FOR.ITEMS";
|
|
5
5
|
/**
|
|
6
6
|
* Base type for all dashboard queries. A dashboard query encapsulates how complex, read-only dashboard-specific logic
|
|
7
7
|
* can be can be executed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/model/queries/base.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GACxB,sCAAsC,GACtC,uCAAuC,GACvC,sCAAsC,GACtC,+BAA+B,GAC/B,qCAAqC,GACrC,mCAAmC,GACnC,sCAAsC,GACtC,uCAAuC,GACvC,mCAAmC,GACnC,mCAAmC,GACnC,qCAAqC,GACrC,kCAAkC,GAClC,8CAA8C,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACnC"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/model/queries/base.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GACxB,sCAAsC,GACtC,uCAAuC,GACvC,sCAAsC,GACtC,+BAA+B,GAC/B,qCAAqC,GACrC,mCAAmC,GACnC,sCAAsC,GACtC,uCAAuC,GACvC,mCAAmC,GACnC,mCAAmC,GACnC,qCAAqC,GACrC,8CAA8C,GAC9C,kCAAkC,GAClC,8CAA8C,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACnC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// (C) 2021-
|
|
1
|
+
// (C) 2021-2026 GoodData Corporation
|
|
2
2
|
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ObjRef } from "@gooddata/sdk-model";
|
|
2
|
+
import { type IDashboardQuery } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export interface IQueryComputedAttributeExpression extends IDashboardQuery {
|
|
7
|
+
type: "GDC.DASH/QUERY.COMPUTED.ATTRIBUTE.EXPRESSION";
|
|
8
|
+
payload: {
|
|
9
|
+
/**
|
|
10
|
+
* Reference of the computed attribute.
|
|
11
|
+
*/
|
|
12
|
+
readonly ref: ObjRef;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates action through which you can query the MAQL expression of a computed attribute, tokenized
|
|
17
|
+
* with the referenced objects resolved to their metadata (titles) instead of raw id references.
|
|
18
|
+
*
|
|
19
|
+
* @param ref - computed attribute reference
|
|
20
|
+
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
21
|
+
* events that will be emitted during the command processing
|
|
22
|
+
* @returns tokenized computed attribute expression
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function queryComputedAttributeExpression(ref: ObjRef, correlationId?: string): IQueryComputedAttributeExpression;
|
|
27
|
+
//# sourceMappingURL=computedAttributeExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computedAttributeExpression.d.ts","sourceRoot":"","sources":["../../../src/model/queries/computedAttributeExpression.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,iCAAkC,SAAQ,eAAe;IACtE,IAAI,EAAE,8CAA8C,CAAC;IACrD,OAAO,EAAE;QACL;;WAEG;QACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACxB,CAAC;CACL;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC5C,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,GACvB,iCAAiC,CAQnC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* Creates action through which you can query the MAQL expression of a computed attribute, tokenized
|
|
4
|
+
* with the referenced objects resolved to their metadata (titles) instead of raw id references.
|
|
5
|
+
*
|
|
6
|
+
* @param ref - computed attribute reference
|
|
7
|
+
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
8
|
+
* events that will be emitted during the command processing
|
|
9
|
+
* @returns tokenized computed attribute expression
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export function queryComputedAttributeExpression(ref, correlationId) {
|
|
14
|
+
return {
|
|
15
|
+
type: "GDC.DASH/QUERY.COMPUTED.ATTRIBUTE.EXPRESSION",
|
|
16
|
+
correlationId,
|
|
17
|
+
payload: {
|
|
18
|
+
ref,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -7,19 +7,37 @@ export interface IQueryConnectedAttributes extends IDashboardQuery {
|
|
|
7
7
|
type: "GDC.DASH/QUERY.CONNECTED.ATTRIBUTES";
|
|
8
8
|
payload: {
|
|
9
9
|
readonly ref: ObjRef;
|
|
10
|
+
/**
|
|
11
|
+
* Also count computed attributes among the connected attributes. The query creator
|
|
12
|
+
* defaults this to false; pass the enableComputedAttributes setting of the dashboard
|
|
13
|
+
* to opt in.
|
|
14
|
+
*/
|
|
15
|
+
readonly includeComputedAttributes?: boolean;
|
|
10
16
|
};
|
|
11
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Options for {@link queryConnectedAttributes}.
|
|
20
|
+
*
|
|
21
|
+
* @alpha
|
|
22
|
+
*/
|
|
23
|
+
export interface IQueryConnectedAttributesOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Also count computed attributes among the connected attributes. Defaults to false.
|
|
26
|
+
*/
|
|
27
|
+
includeComputedAttributes?: boolean;
|
|
28
|
+
}
|
|
12
29
|
/**
|
|
13
30
|
* Creates action through which you can query connected attributes for the information about
|
|
14
31
|
* possibility of parent-child attribute filter relationship as only connected attributes may
|
|
15
32
|
* be dependent on each other.
|
|
16
33
|
*
|
|
17
34
|
* @param ref - reference of the attribute filter display form
|
|
35
|
+
* @param options - query options
|
|
18
36
|
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
19
37
|
* events that will be emitted during the command processing
|
|
20
38
|
* @returns array of connected attributes for given reference
|
|
21
39
|
*
|
|
22
40
|
* @alpha
|
|
23
41
|
*/
|
|
24
|
-
export declare function queryConnectedAttributes(ref: ObjRef, correlationId?: string): IQueryConnectedAttributes;
|
|
42
|
+
export declare function queryConnectedAttributes(ref: ObjRef, options?: IQueryConnectedAttributesOptions, correlationId?: string): IQueryConnectedAttributes;
|
|
25
43
|
//# sourceMappingURL=connectedAttributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectedAttributes.d.ts","sourceRoot":"","sources":["../../../src/model/queries/connectedAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D,IAAI,EAAE,qCAAqC,CAAC;IAC5C,OAAO,EAAE;QACL,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"connectedAttributes.d.ts","sourceRoot":"","sources":["../../../src/model/queries/connectedAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D,IAAI,EAAE,qCAAqC,CAAC;IAC5C,OAAO,EAAE;QACL,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB;;;;WAIG;QACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;KAChD,CAAC;CACL;AAED;;;;GAIG;AACH,MAAM,WAAW,gCAAgC;IAC7C;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gCAAgC,EAC1C,aAAa,CAAC,EAAE,MAAM,GACvB,yBAAyB,CAS3B"}
|
|
@@ -5,18 +5,20 @@
|
|
|
5
5
|
* be dependent on each other.
|
|
6
6
|
*
|
|
7
7
|
* @param ref - reference of the attribute filter display form
|
|
8
|
+
* @param options - query options
|
|
8
9
|
* @param correlationId - specify correlation id to use for this command. this will be included in all
|
|
9
10
|
* events that will be emitted during the command processing
|
|
10
11
|
* @returns array of connected attributes for given reference
|
|
11
12
|
*
|
|
12
13
|
* @alpha
|
|
13
14
|
*/
|
|
14
|
-
export function queryConnectedAttributes(ref, correlationId) {
|
|
15
|
+
export function queryConnectedAttributes(ref, options, correlationId) {
|
|
15
16
|
return {
|
|
16
17
|
type: "GDC.DASH/QUERY.CONNECTED.ATTRIBUTES",
|
|
17
18
|
correlationId,
|
|
18
19
|
payload: {
|
|
19
20
|
ref,
|
|
21
|
+
includeComputedAttributes: options?.includeComputedAttributes ?? false,
|
|
20
22
|
},
|
|
21
23
|
};
|
|
22
24
|
}
|
|
@@ -2,6 +2,7 @@ import { type IQueryAttributeDataSet } from "./attributeDataSet.js";
|
|
|
2
2
|
import { type IQueryAttributeElements } from "./attributeElements.js";
|
|
3
3
|
import { type IQueryAttributeByDisplayForm } from "./attributes.js";
|
|
4
4
|
import { type IQueryAvailableDatasetsForItems } from "./availableDatasetsForItems.js";
|
|
5
|
+
import { type IQueryComputedAttributeExpression } from "./computedAttributeExpression.js";
|
|
5
6
|
import { type IQueryConnectedAttributes } from "./connectedAttributes.js";
|
|
6
7
|
import { type IQueryConnectingAttributes } from "./connectingAttributes.js";
|
|
7
8
|
import { type IQueryInsightAttributesMeta, type IQueryInsightDateDatasets } from "./insights.js";
|
|
@@ -11,5 +12,5 @@ import { type IQueryWidgetAlertCount, type IQueryWidgetBrokenAlerts, type IQuery
|
|
|
11
12
|
/**
|
|
12
13
|
* @alpha
|
|
13
14
|
*/
|
|
14
|
-
export type DashboardQueries = IQueryInsightDateDatasets | IQueryMeasureDateDatasets | IQueryInsightAttributesMeta | IQueryWidgetFilters | IQueryWidgetBrokenAlerts | IQueryWidgetAlertCount | IQueryConnectingAttributes | IQueryAttributeByDisplayForm | IQueryAttributeDataSet | IQueryAttributeElements | IQueryConnectedAttributes | IQueryMetricsAndFacts | IQueryAvailableDatasetsForItems;
|
|
15
|
+
export type DashboardQueries = IQueryInsightDateDatasets | IQueryMeasureDateDatasets | IQueryInsightAttributesMeta | IQueryWidgetFilters | IQueryWidgetBrokenAlerts | IQueryWidgetAlertCount | IQueryConnectingAttributes | IQueryAttributeByDisplayForm | IQueryAttributeDataSet | IQueryAttributeElements | IQueryComputedAttributeExpression | IQueryConnectedAttributes | IQueryMetricsAndFacts | IQueryAvailableDatasetsForItems;
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/queries/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAC3B,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACtB,yBAAyB,GACzB,yBAAyB,GACzB,2BAA2B,GAC3B,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,0BAA0B,GAC1B,4BAA4B,GAC5B,sBAAsB,GACtB,uBAAuB,GACvB,yBAAyB,GACzB,qBAAqB,GACrB,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/queries/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAC3B,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACtB,yBAAyB,GACzB,yBAAyB,GACzB,2BAA2B,GAC3B,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,0BAA0B,GAC1B,4BAA4B,GAC5B,sBAAsB,GACtB,uBAAuB,GACvB,iCAAiC,GACjC,yBAAyB,GACzB,qBAAqB,GACrB,+BAA+B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const AllQueryServices: (import("../../index.js").IDashboardQueryService<import("../queries/availableDatasetsForItems.js").IQueryAvailableDatasetsForItems, import("@gooddata/sdk-model").ICatalogDateDataset[]> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetAlertCount, number> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetBrokenAlerts, import("../types/alertTypes.js").IBrokenAlertFilterBasicInfo<import("@gooddata/sdk-model").FilterContextItem>[]> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetFilters, import("@gooddata/sdk-model").IFilter[]> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributes.js").IQueryAttributeByDisplayForm, import("@gooddata/sdk-model").IAttributeMetadataObject[]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributeDataSet.js").IQueryAttributeDataSet, import("@gooddata/sdk-model").IMetadataObject>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributeElements.js").IQueryAttributeElements, import("../types/attributeFilterTypes.js").IUseAttributeElements>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/connectedAttributes.js").IQueryConnectedAttributes, import("@gooddata/sdk-model").ObjRef[]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/connectingAttributes.js").IQueryConnectingAttributes, import("../types/attributeFilterTypes.js").IConnectingAttribute[][]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/insights.js").IQueryInsightAttributesMeta, import("../queries/insights.js").IInsightAttributesMeta>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/insights.js").IQueryInsightDateDatasets, import("../queries/insights.js").IInsightDateDatasets>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/kpis.js").IQueryMeasureDateDatasets, import("../queries/kpis.js").IMeasureDateDatasets>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/metricsAndFacts.js").IQueryMetricsAndFacts, import("../queries/metricsAndFacts.js").IMetricsAndFacts>>)[];
|
|
1
|
+
export declare const AllQueryServices: (import("../../index.js").IDashboardQueryService<import("../queries/availableDatasetsForItems.js").IQueryAvailableDatasetsForItems, import("@gooddata/sdk-model").ICatalogDateDataset[]> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetAlertCount, number> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetBrokenAlerts, import("../types/alertTypes.js").IBrokenAlertFilterBasicInfo<import("@gooddata/sdk-model").FilterContextItem>[]> | import("../../index.js").IDashboardQueryService<import("../queries/widgets.js").IQueryWidgetFilters, import("@gooddata/sdk-model").IFilter[]> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributes.js").IQueryAttributeByDisplayForm, import("@gooddata/sdk-model").IAttributeMetadataObject[]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributeDataSet.js").IQueryAttributeDataSet, import("@gooddata/sdk-model").IMetadataObject>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/attributeElements.js").IQueryAttributeElements, import("../types/attributeFilterTypes.js").IUseAttributeElements>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/computedAttributeExpression.js").IQueryComputedAttributeExpression, import("@gooddata/sdk-backend-spi").IMeasureExpressionToken[]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/connectedAttributes.js").IQueryConnectedAttributes, import("@gooddata/sdk-model").ObjRef[]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/connectingAttributes.js").IQueryConnectingAttributes, import("../types/attributeFilterTypes.js").IConnectingAttribute[][]>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/insights.js").IQueryInsightAttributesMeta, import("../queries/insights.js").IInsightAttributesMeta>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/insights.js").IQueryInsightDateDatasets, import("../queries/insights.js").IInsightDateDatasets>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/kpis.js").IQueryMeasureDateDatasets, import("../queries/kpis.js").IMeasureDateDatasets>> | Required<import("../../index.js").IDashboardQueryService<import("../queries/metricsAndFacts.js").IQueryMetricsAndFacts, import("../queries/metricsAndFacts.js").IMetricsAndFacts>>)[];
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/index.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,gBAAgB,q8EAe5B,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { QueryAttributeByDisplayFormService } from "./queryAttributeByDisplayFor
|
|
|
3
3
|
import { QueryAttributeDataSetService } from "./queryAttributeDataset.js";
|
|
4
4
|
import { QueryAttributeElementsService } from "./queryAttributeElements.js";
|
|
5
5
|
import { QueryAvailableDatasetForItemsService } from "./queryAvailableDatasetsForItems.js";
|
|
6
|
+
import { QueryComputedAttributeExpressionService } from "./queryComputedAttributeExpression.js";
|
|
6
7
|
import { QueryConnectedAttributesService } from "./queryConnectedAttributes.js";
|
|
7
8
|
import { QueryConnectingAttributesService } from "./queryConnectingAttributes.js";
|
|
8
9
|
import { QueryInsightAttributesMetaService } from "./queryInsightAttributesMeta.js";
|
|
@@ -23,6 +24,7 @@ export const AllQueryServices = [
|
|
|
23
24
|
QueryAttributeByDisplayFormService,
|
|
24
25
|
QueryAttributeDataSetService,
|
|
25
26
|
QueryAttributeElementsService,
|
|
27
|
+
QueryComputedAttributeExpressionService,
|
|
26
28
|
QueryConnectedAttributesService,
|
|
27
29
|
QueryMetricsAndFactsService,
|
|
28
30
|
QueryAvailableDatasetForItemsService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryAttributeByDisplayForm.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryAttributeByDisplayForm.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"queryAttributeByDisplayForm.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryAttributeByDisplayForm.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,wBAAwB,EAOhC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAM7E,eAAO,MAAM,kCAAkC,sIAU9C,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { call, select } from "redux-saga/effects";
|
|
3
|
-
import { areObjRefsEqual, serializeObjRef, } from "@gooddata/sdk-model";
|
|
3
|
+
import { areObjRefsEqual, computedAttributeAsAttributeMetadataObject, isComputedAttributeRef, serializeObjRef, } from "@gooddata/sdk-model";
|
|
4
4
|
import { invalidQueryArguments } from "../events/general.js";
|
|
5
5
|
import { createCachedQueryService } from "../store/_infra/queryService.js";
|
|
6
|
-
import {
|
|
6
|
+
import { selectCatalogAttributesWithComputed } from "../store/catalog/catalogSelectors.js";
|
|
7
7
|
import { selectPreloadedAttributesWithReferences } from "../store/tabs/filterContext/filterContextSelectors.js";
|
|
8
8
|
export const QueryAttributeByDisplayFormService = createCachedQueryService("GDC.DASH/QUERY.DISPLAY.FORM.ATTRIBUTE", queryService, (query) => {
|
|
9
9
|
const { payload: { displayForms }, } = query;
|
|
@@ -25,6 +25,15 @@ async function loadAttributeByDisplayForm(ctx, catalogAttributes, displayFormRef
|
|
|
25
25
|
if (attribute) {
|
|
26
26
|
return attribute;
|
|
27
27
|
}
|
|
28
|
+
// A computed-attribute-typed display form ref resolves through the computedAttributes service;
|
|
29
|
+
// the fabricated display form shares the computed attribute's own ref.
|
|
30
|
+
if (isComputedAttributeRef(displayFormRef)) {
|
|
31
|
+
return backend
|
|
32
|
+
.workspace(workspace)
|
|
33
|
+
.computedAttributes()
|
|
34
|
+
.getComputedAttribute(displayFormRef)
|
|
35
|
+
.then(computedAttributeAsAttributeMetadataObject);
|
|
36
|
+
}
|
|
28
37
|
// If attribute is not in preloaded filters or catalog attributes, fetch it from backend
|
|
29
38
|
return backend.workspace(workspace).attributes().getAttributeByDisplayForm(displayFormRef);
|
|
30
39
|
}
|
|
@@ -34,7 +43,7 @@ async function loadAttributes(ctx, catalogAttributes, displayForms, preloadedAtt
|
|
|
34
43
|
function* queryService(ctx, query) {
|
|
35
44
|
const { payload: { displayForms }, correlationId, } = query;
|
|
36
45
|
const preloadedAttributesWithReferences = yield select(selectPreloadedAttributesWithReferences);
|
|
37
|
-
const catalogAttributes = yield select(
|
|
46
|
+
const catalogAttributes = yield select(selectCatalogAttributesWithComputed);
|
|
38
47
|
const attributes = yield call(loadAttributes, ctx, catalogAttributes, displayForms, preloadedAttributesWithReferences);
|
|
39
48
|
if (!attributes) {
|
|
40
49
|
throw invalidQueryArguments(ctx, `Cannot find attribute for given displayForm`, correlationId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryAttributeDataset.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryAttributeDataset.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"queryAttributeDataset.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryAttributeDataset.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,eAAe,EAKvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAK7E,eAAO,MAAM,4BAA4B,qHAUxC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { call, select } from "redux-saga/effects";
|
|
3
|
-
import { areObjRefsEqual, serializeObjRef } from "@gooddata/sdk-model";
|
|
3
|
+
import { areObjRefsEqual, isComputedAttributeRef, serializeObjRef, } from "@gooddata/sdk-model";
|
|
4
4
|
import { invalidQueryArguments } from "../events/general.js";
|
|
5
5
|
import { createCachedQueryService } from "../store/_infra/queryService.js";
|
|
6
6
|
import { selectPreloadedAttributesWithReferences } from "../store/tabs/filterContext/filterContextSelectors.js";
|
|
@@ -15,6 +15,14 @@ async function loadAttributeDataSetMeta(ctx, attributeRef, preloadedAttributesWi
|
|
|
15
15
|
if (dataSet) {
|
|
16
16
|
return dataSet;
|
|
17
17
|
}
|
|
18
|
+
// A computed attribute never matches a label; take the dataset from its own metadata (if any)
|
|
19
|
+
if (isComputedAttributeRef(attributeRef)) {
|
|
20
|
+
const computedAttribute = await backend
|
|
21
|
+
.workspace(workspace)
|
|
22
|
+
.computedAttributes()
|
|
23
|
+
.getComputedAttribute(attributeRef);
|
|
24
|
+
return computedAttribute.dataSet;
|
|
25
|
+
}
|
|
18
26
|
// If dataSet is not in preloaded filters, fetch it from backend
|
|
19
27
|
return backend.workspace(workspace).attributes().getAttributeDatasetMeta(attributeRef);
|
|
20
28
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type IMeasureExpressionToken } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import { type IQueryComputedAttributeExpression } from "../queries/computedAttributeExpression.js";
|
|
3
|
+
export declare const QueryComputedAttributeExpressionService: Required<import("../store/_infra/queryService.js").IDashboardQueryService<IQueryComputedAttributeExpression, IMeasureExpressionToken[]>>;
|
|
4
|
+
//# sourceMappingURL=queryComputedAttributeExpression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryComputedAttributeExpression.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryComputedAttributeExpression.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAInG,eAAO,MAAM,uCAAuC,0IAUnD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { call } from "redux-saga/effects";
|
|
3
|
+
import { serializeObjRef } from "@gooddata/sdk-model";
|
|
4
|
+
import { createCachedQueryService } from "../store/_infra/queryService.js";
|
|
5
|
+
export const QueryComputedAttributeExpressionService = createCachedQueryService("GDC.DASH/QUERY.COMPUTED.ATTRIBUTE.EXPRESSION", queryService, (query) => {
|
|
6
|
+
const { payload: { ref }, } = query;
|
|
7
|
+
return serializeObjRef(ref);
|
|
8
|
+
});
|
|
9
|
+
async function loadComputedAttributeExpressionTokens(ctx, ref) {
|
|
10
|
+
const { backend, workspace } = ctx;
|
|
11
|
+
return backend.workspace(workspace).computedAttributes().getComputedAttributeExpressionTokens(ref);
|
|
12
|
+
}
|
|
13
|
+
function* queryService(ctx, query) {
|
|
14
|
+
const { payload: { ref }, } = query;
|
|
15
|
+
const tokens = yield call(loadComputedAttributeExpressionTokens, ctx, ref);
|
|
16
|
+
return tokens;
|
|
17
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConnectedAttributes.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryConnectedAttributes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"queryConnectedAttributes.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryConnectedAttributes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAInF,eAAO,MAAM,+BAA+B,iHAa3C,CAAC"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
// (C) 2022-2026 GoodData Corporation
|
|
2
2
|
import { call } from "redux-saga/effects";
|
|
3
3
|
import { serializeObjRef } from "@gooddata/sdk-model";
|
|
4
|
+
import { isComputedAttributesUnavailableError } from "../../_staging/catalog/computedAttributes.js";
|
|
4
5
|
import { createCachedQueryService } from "../store/_infra/queryService.js";
|
|
5
6
|
export const QueryConnectedAttributesService = createCachedQueryService("GDC.DASH/QUERY.CONNECTED.ATTRIBUTES", queryService, (query) => {
|
|
6
|
-
const { payload: { ref }, } = query;
|
|
7
|
-
|
|
7
|
+
const { payload: { ref, includeComputedAttributes }, } = query;
|
|
8
|
+
// the flag is part of the cache identity: the same ref yields a different result with and
|
|
9
|
+
// without computed attributes (the ?? false mirrors the query creator's default, for
|
|
10
|
+
// queries constructed without the creator)
|
|
11
|
+
return `${serializeObjRef(ref)}:${includeComputedAttributes ?? false}`;
|
|
8
12
|
});
|
|
9
|
-
async function loadConnectedAttributes(ctx, ref) {
|
|
13
|
+
async function loadConnectedAttributes(ctx, ref, includeComputedAttributes) {
|
|
10
14
|
const { backend, workspace } = ctx;
|
|
11
|
-
|
|
15
|
+
const attributes = backend.workspace(workspace).attributes();
|
|
16
|
+
try {
|
|
17
|
+
return await attributes.getConnectedAttributesByDisplayForm(ref, { includeComputedAttributes });
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
// when the backend refuses computed attributes (enableComputedAttributes off), fall back
|
|
21
|
+
// to plain attributes; a genuine failure propagates
|
|
22
|
+
if (!includeComputedAttributes || !isComputedAttributesUnavailableError(error)) {
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
return attributes.getConnectedAttributesByDisplayForm(ref, { includeComputedAttributes: false });
|
|
26
|
+
}
|
|
12
27
|
}
|
|
13
28
|
function* queryService(ctx, query) {
|
|
14
29
|
const { payload: { ref }, } = query;
|
|
15
|
-
const connectedAttributes = yield call(loadConnectedAttributes, ctx, ref);
|
|
30
|
+
const connectedAttributes = yield call(loadConnectedAttributes, ctx, ref, query.payload.includeComputedAttributes ?? false);
|
|
16
31
|
return connectedAttributes;
|
|
17
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryInsightAttributesMeta.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryInsightAttributesMeta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queryInsightAttributesMeta.d.ts","sourceRoot":"","sources":["../../../src/model/queryServices/queryInsightAttributesMeta.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,KAAK,qBAAqB,EAA4B,MAAM,iCAAiC,CAAC;AAMvG,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,iCAAiC,iIAW7C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC1C,KAAK,EAAE,2BAA2B,KACjC,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,qBAAqB,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;AAE5G;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,EAAE,+BACmB,CAAC"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { uniqBy } from "lodash-es";
|
|
3
3
|
import { call, select } from "redux-saga/effects";
|
|
4
4
|
import { invariant } from "ts-invariant";
|
|
5
|
-
import { insightDisplayFormUsage, insightRef, isObjRef, objRefToString, serializeObjRef, } from "@gooddata/sdk-model";
|
|
5
|
+
import { computedAttributeAsAttributeMetadataObject, insightDisplayFormUsage, insightRef, isObjRef, objRefToString, serializeObjRef, } from "@gooddata/sdk-model";
|
|
6
|
+
import { loadComputedAttributesByRefs, partitionComputedAttributeRefs, } from "../../_staging/catalog/computedAttributes.js";
|
|
6
7
|
import { invalidQueryArguments } from "../events/general.js";
|
|
7
8
|
import { createCachedQueryService } from "../store/_infra/queryService.js";
|
|
8
9
|
import { selectAllCatalogAttributesMap, selectAllCatalogDisplayFormsMap, } from "../store/catalog/catalogSelectors.js";
|
|
@@ -29,17 +30,25 @@ export const selectInsightAttributesMeta = QueryInsightAttributesMetaService.cac
|
|
|
29
30
|
//
|
|
30
31
|
async function loadDisplayFormsAndAttributes(ctx, displayFormRefs) {
|
|
31
32
|
const { backend, workspace } = ctx;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
.workspace(workspace)
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
// computed-attribute-typed display form refs never match labels; the computed attribute
|
|
34
|
+
// resolves through its own service and doubles as both the display form and the attribute
|
|
35
|
+
const { computedAttributeRefs, otherRefs } = partitionComputedAttributeRefs(displayFormRefs);
|
|
36
|
+
const computedAttributes = await loadComputedAttributesByRefs(backend, workspace, computedAttributeRefs);
|
|
37
|
+
const loadedDisplayForms = otherRefs.length
|
|
38
|
+
? await backend.workspace(workspace).attributes().getAttributeDisplayForms(otherRefs)
|
|
39
|
+
: [];
|
|
40
|
+
const loadedAttributes = loadedDisplayForms.length
|
|
41
|
+
? await backend
|
|
42
|
+
.workspace(workspace)
|
|
43
|
+
.attributes()
|
|
44
|
+
.getAttributes(loadedDisplayForms.map((df) => df.attribute))
|
|
45
|
+
: [];
|
|
40
46
|
return {
|
|
41
|
-
loadedDisplayForms,
|
|
42
|
-
loadedAttributes
|
|
47
|
+
loadedDisplayForms: [...loadedDisplayForms, ...computedAttributes.flatMap((ca) => ca.displayForms)],
|
|
48
|
+
loadedAttributes: [
|
|
49
|
+
...loadedAttributes,
|
|
50
|
+
...computedAttributes.map(computedAttributeAsAttributeMetadataObject),
|
|
51
|
+
],
|
|
43
52
|
};
|
|
44
53
|
}
|
|
45
54
|
/**
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ExtendedDashboardWidget } from "../types/layoutTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Tells whether the widget renders an insight the current user is not allowed to see. A widget whose
|
|
4
|
+
* insight is merely deleted is not restricted — that one keeps rendering the missing-visualization tile.
|
|
5
|
+
*
|
|
6
|
+
* @alpha
|
|
7
|
+
*/
|
|
8
|
+
export declare function useIsWidgetRestricted(widget: ExtendedDashboardWidget): boolean;
|
|
9
|
+
//# sourceMappingURL=useIsWidgetRestricted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsWidgetRestricted.d.ts","sourceRoot":"","sources":["../../../src/model/react/useIsWidgetRestricted.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIvE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAI9E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { isInsightWidget } from "@gooddata/sdk-model";
|
|
3
|
+
import { selectRestrictedInsightsMap } from "../store/unavailableObjects/unavailableObjectsSelectors.js";
|
|
4
|
+
import { useDashboardSelector } from "./DashboardStoreProvider.js";
|
|
5
|
+
/**
|
|
6
|
+
* Tells whether the widget renders an insight the current user is not allowed to see. A widget whose
|
|
7
|
+
* insight is merely deleted is not restricted — that one keeps rendering the missing-visualization tile.
|
|
8
|
+
*
|
|
9
|
+
* @alpha
|
|
10
|
+
*/
|
|
11
|
+
export function useIsWidgetRestricted(widget) {
|
|
12
|
+
const restrictedInsights = useDashboardSelector(selectRestrictedInsightsMap);
|
|
13
|
+
return isInsightWidget(widget) && restrictedInsights.has(widget.insight);
|
|
14
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Action, type CaseReducer } from "@reduxjs/toolkit";
|
|
2
|
-
import { type ICatalogAttribute, type ICatalogAttributeHierarchy, type ICatalogDateDataset, type ICatalogFact, type ICatalogMeasure, type IDateHierarchyTemplate } from "@gooddata/sdk-model";
|
|
2
|
+
import { type ICatalogAttribute, type ICatalogAttributeHierarchy, type ICatalogComputedAttribute, type ICatalogDateDataset, type ICatalogFact, type ICatalogMeasure, type IDateHierarchyTemplate } from "@gooddata/sdk-model";
|
|
3
3
|
import { type CatalogState, type ICatalogMeasureParametersState, type ICatalogParametersState } from "./catalogState.js";
|
|
4
4
|
type CatalogReducer<A extends Action> = CaseReducer<CatalogState, A>;
|
|
5
5
|
/**
|
|
@@ -11,6 +11,7 @@ export type SetCatalogItemsPayload = {
|
|
|
11
11
|
facts?: ICatalogFact[];
|
|
12
12
|
dateDatasets?: ICatalogDateDataset[];
|
|
13
13
|
attributeHierarchies?: ICatalogAttributeHierarchy[];
|
|
14
|
+
computedAttributes?: ICatalogComputedAttribute[];
|
|
14
15
|
dateHierarchyTemplates?: IDateHierarchyTemplate[];
|
|
15
16
|
};
|
|
16
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogReducers.d.ts","sourceRoot":"","sources":["../../../../src/model/store/catalog/catalogReducers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,oBAAoB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACpD,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACrD,CAAC;
|
|
1
|
+
{"version":3,"file":"catalogReducers.d.ts","sourceRoot":"","sources":["../../../../src/model/store/catalog/catalogReducers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,oBAAoB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACpD,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACjD,sBAAsB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACrD,CAAC;AAsBF;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC5C,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAqDF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3B,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// (C) 2021-2026 GoodData Corporation
|
|
2
2
|
import { castDraft } from "immer";
|
|
3
3
|
const setCatalogItems = (state, action) => {
|
|
4
|
-
const { attributes, measures, dateDatasets, facts, attributeHierarchies, dateHierarchyTemplates } = action.payload;
|
|
4
|
+
const { attributes, measures, dateDatasets, facts, attributeHierarchies, computedAttributes, dateHierarchyTemplates, } = action.payload;
|
|
5
5
|
state.attributes = attributes;
|
|
6
6
|
state.measures = castDraft(measures);
|
|
7
7
|
state.facts = facts;
|
|
8
8
|
state.dateDatasets = dateDatasets;
|
|
9
9
|
state.attributeHierarchies = attributeHierarchies;
|
|
10
|
+
state.computedAttributes = computedAttributes;
|
|
10
11
|
state.dateHierarchyTemplates = dateHierarchyTemplates;
|
|
11
12
|
};
|
|
12
13
|
const setCatalogMeasuresAndFacts = (state, action) => {
|