@adaptabletools/adaptable 23.0.4 → 23.0.5-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agGrid.js +0 -31
- package/index.js +0 -31
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +0 -2
- package/src/AdaptableOptions/AdaptablePlugin.js +1 -9
- package/src/AdaptableOptions/DefaultAdaptableOptions.js +3 -39
- package/src/AdaptableOptions/SettingsPanelOptions.d.ts +44 -16
- package/src/AdaptableState/Aggregations/only.js +0 -11
- package/src/AdaptableState/Aggregations/weightedAverage.js +0 -26
- package/src/AdaptableState/Common/AdaptableColumn.js +0 -1
- package/src/AdaptableState/Common/AdaptableForm.js +0 -49
- package/src/AdaptableState/Common/AdaptableFormatPresets.js +0 -13
- package/src/AdaptableState/Common/AdaptablePredicate.js +3 -125
- package/src/AdaptableState/Common/AggregationColumns.js +0 -10
- package/src/AdaptableState/Common/Enums.js +0 -3
- package/src/AdaptableState/Common/Menu.js +1 -7
- package/src/AdaptableState/Common/MenuItem.js +0 -2
- package/src/AdaptableState/Common/Types.js +2 -5
- package/src/AdaptableState/StatusBarState.js +0 -3
- package/src/AdaptableState/StyledColumns/BadgeStyle.js +0 -1
- package/src/AdaptableState/StyledColumns/Common/BarStyleProperties.js +0 -4
- package/src/AdaptableState/StyledColumns/Common/CellTextOptions.js +0 -5
- package/src/AdaptableState/StyledColumns/Common/NumericStyledColumn.js +0 -8
- package/src/AdaptableState/Uuid.js +0 -1
- package/src/Api/Implementation/AdaptableApiImpl.js +0 -4
- package/src/Api/Implementation/AlertApiImpl.js +0 -21
- package/src/Api/Implementation/ApiBase.js +0 -24
- package/src/Api/Implementation/CalculatedColumnApiImpl.js +0 -1
- package/src/Api/Implementation/ChartingApiImpl.js +0 -3
- package/src/Api/Implementation/ColumnApiImpl.js +1 -15
- package/src/Api/Implementation/ColumnFilterApiImpl.js +0 -9
- package/src/Api/Implementation/ColumnScopeApiImpl.js +0 -21
- package/src/Api/Implementation/DashboardApiImpl.js +0 -1
- package/src/Api/Implementation/EntitlementApiImpl.js +0 -1
- package/src/Api/Implementation/ExportApiImpl.js +0 -10
- package/src/Api/Implementation/ExpressionApiImpl.js +0 -1
- package/src/Api/Implementation/FormatColumnApiImpl.js +0 -3
- package/src/Api/Implementation/FreeTextColumnApiImpl.js +0 -2
- package/src/Api/Implementation/GridApiImpl.js +1 -22
- package/src/Api/Implementation/GridFilterApiImpl.js +0 -2
- package/src/Api/Implementation/LayoutApiImpl.js +0 -18
- package/src/Api/Implementation/LayoutHelpers.js +0 -16
- package/src/Api/Implementation/NamedQueryApiImpl.js +0 -1
- package/src/Api/Implementation/PredicateApiImpl.js +0 -5
- package/src/Api/Implementation/RowFormApiImpl.js +0 -2
- package/src/Api/Implementation/StateApiImpl.js +0 -7
- package/src/Api/Implementation/SystemStatusApiImpl.js +0 -2
- package/src/Api/Implementation/TeamSharingApiImpl.js +0 -3
- package/src/Api/Implementation/UserInterfaceApiImpl.js +0 -1
- package/src/Api/Internal/ActionColumnInternalApi.js +0 -1
- package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -2
- package/src/Api/Internal/AdaptableInternalApi.js +1 -39
- package/src/Api/Internal/AlertInternalApi.js +1 -102
- package/src/Api/Internal/CalculatedColumnInternalApi.js +0 -17
- package/src/Api/Internal/ChartingInternalApi.js +0 -1
- package/src/Api/Internal/ColumnFilterInternalApi.js +0 -52
- package/src/Api/Internal/ColumnInternalApi.js +0 -32
- package/src/Api/Internal/CustomSortInternalApi.js +0 -5
- package/src/Api/Internal/DashboardInternalApi.js +0 -23
- package/src/Api/Internal/DataImportInternalApi.js +0 -1
- package/src/Api/Internal/EventInternalApi.js +0 -2
- package/src/Api/Internal/ExportInternalApi.js +1 -16
- package/src/Api/Internal/ExpressionInternalApi.js +0 -23
- package/src/Api/Internal/Fdc3InternalApi.js +0 -9
- package/src/Api/Internal/FlashingCellInternalApi.js +0 -5
- package/src/Api/Internal/FormatColumnInternalApi.js +5 -107
- package/src/Api/Internal/FreeTextColumnInternalApi.js +0 -8
- package/src/Api/Internal/GridFilterInternalApi.js +0 -3
- package/src/Api/Internal/GridInternalApi.js +0 -37
- package/src/Api/Internal/LayoutInternalApi.js +0 -18
- package/src/Api/Internal/NamedQueryInternalApi.js +0 -9
- package/src/Api/Internal/PredicateInternalApi.js +0 -23
- package/src/Api/Internal/RowFormInternalApi.js +0 -18
- package/src/Api/Internal/StateInternalApi.js +0 -25
- package/src/Api/Internal/StyledColumnInternalApi.js +0 -62
- package/src/Api/Internal/TeamSharingInternalApi.js +0 -9
- package/src/Redux/ActionsReducers/AlertRedux.js +0 -24
- package/src/Redux/ActionsReducers/ApplicationRedux.js +0 -9
- package/src/Redux/ActionsReducers/BulkUpdateRedux.js +0 -6
- package/src/Redux/ActionsReducers/CalculatedColumnRedux.js +1 -16
- package/src/Redux/ActionsReducers/ChartingRedux.js +0 -24
- package/src/Redux/ActionsReducers/CommentsRedux.js +0 -24
- package/src/Redux/ActionsReducers/CustomSortRedux.js +0 -24
- package/src/Redux/ActionsReducers/DashboardRedux.js +0 -33
- package/src/Redux/ActionsReducers/ExportRedux.js +0 -36
- package/src/Redux/ActionsReducers/FlashingCellRedux.js +0 -24
- package/src/Redux/ActionsReducers/FormatColumnRedux.js +0 -36
- package/src/Redux/ActionsReducers/FreeTextColumnRedux.js +1 -20
- package/src/Redux/ActionsReducers/InternalRedux.js +0 -42
- package/src/Redux/ActionsReducers/LayoutRedux.js +1 -67
- package/src/Redux/ActionsReducers/NamedQueryRedux.js +0 -15
- package/src/Redux/ActionsReducers/NoteRedux.js +0 -14
- package/src/Redux/ActionsReducers/PluginsRedux.js +0 -3
- package/src/Redux/ActionsReducers/PlusMinusRedux.js +0 -34
- package/src/Redux/ActionsReducers/PopupRedux.js +2 -6
- package/src/Redux/ActionsReducers/QuickSearchRedux.js +0 -15
- package/src/Redux/ActionsReducers/ShortcutRedux.js +0 -24
- package/src/Redux/ActionsReducers/SmartEditRedux.js +0 -6
- package/src/Redux/ActionsReducers/StatusBarRedux.js +0 -6
- package/src/Redux/ActionsReducers/StyledColumnRedux.js +0 -27
- package/src/Redux/ActionsReducers/SystemStatusRedux.js +0 -6
- package/src/Redux/ActionsReducers/TeamSharingRedux.js +0 -1
- package/src/Redux/ActionsReducers/ThemeRedux.js +0 -26
- package/src/Redux/ActionsReducers/ToolPanelRedux.js +0 -22
- package/src/Redux/ActionsReducers/UserInterfaceRedux.js +0 -3
- package/src/Redux/ActionsReducers/utils.js +0 -6
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +0 -1
- package/src/Redux/Store/AdaptableReduxMerger.js +0 -25
- package/src/Redux/Store/AdaptableStore.js +5 -301
- package/src/Strategy/AdaptableModuleBase.js +0 -35
- package/src/Strategy/AlertModule.js +0 -9
- package/src/Strategy/CellSummaryModule.js +0 -12
- package/src/Strategy/ChartingModule.js +0 -1
- package/src/Strategy/ColumnFilterModule.js +1 -11
- package/src/Strategy/CommentModule.js +0 -2
- package/src/Strategy/DashboardModule.js +0 -4
- package/src/Strategy/ExportModule.js +0 -1
- package/src/Strategy/FlashingCellModule.js +0 -8
- package/src/Strategy/FormatColumnModule.js +0 -3
- package/src/Strategy/FreeTextColumnModule.js +0 -3
- package/src/Strategy/LayoutModule.js +0 -26
- package/src/Strategy/NoteModule.js +0 -3
- package/src/Strategy/PlusMinusModule.js +0 -3
- package/src/Strategy/SettingsPanelModule.js +0 -1
- package/src/Strategy/ShortcutModule.js +0 -1
- package/src/Strategy/SmartEditModule.js +0 -5
- package/src/Strategy/StatusBarModule.js +0 -7
- package/src/Strategy/StyledColumnModule.js +1 -16
- package/src/Strategy/TeamSharingModule.js +0 -9
- package/src/Strategy/Utilities/Layout/columnsSummaryHelpers.js +0 -5
- package/src/Utilities/Constants/DocumentationLinkConstants.js +0 -1
- package/src/Utilities/Constants/GeneralConstants.js +0 -10
- package/src/Utilities/Constants/ObjectDefaultConstants.js +0 -3
- package/src/Utilities/Constants/ReduxConstants.js +4 -8
- package/src/Utilities/Emitter.js +0 -9
- package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +0 -8
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +0 -15
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +0 -3
- package/src/Utilities/ExpressionFunctions/deepMap.js +0 -16
- package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +0 -9
- package/src/Utilities/ExpressionFunctions/groupingMap.js +0 -9
- package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +7 -78
- package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +0 -9
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +2 -16
- package/src/Utilities/Extensions/ArrayExtensions.js +1 -63
- package/src/Utilities/Extensions/NumberExtensions.js +0 -27
- package/src/Utilities/Extensions/ObjectExtensions.js +0 -36
- package/src/Utilities/Extensions/StringExtensions.js +0 -27
- package/src/Utilities/Helpers/ActionColumnHelper.js +0 -4
- package/src/Utilities/Helpers/AdaptableHelper.js +0 -8
- package/src/Utilities/Helpers/DateHelper.js +0 -10
- package/src/Utilities/Helpers/DisplayFormatHelper.js +0 -8
- package/src/Utilities/Helpers/Helper.js +3 -9
- package/src/Utilities/Helpers/PlusMinusHelper.js +0 -20
- package/src/Utilities/Helpers/QuickSearchHelper.js +0 -5
- package/src/Utilities/Helpers/Scheduling/CronExpression.js +0 -43
- package/src/Utilities/Helpers/Scheduling/ScheduledReportHelper.js +0 -4
- package/src/Utilities/Helpers/SettingsPanelHelper.js +40 -4
- package/src/Utilities/Helpers/StyleHelper.js +0 -56
- package/src/Utilities/Helpers/StyledColumns/BarStylesHelper.js +0 -46
- package/src/Utilities/Helpers/StyledColumns/GradientStyleHelper.js +0 -38
- package/src/Utilities/Helpers/StyledColumns/IconStyleHelper.js +0 -39
- package/src/Utilities/Helpers/StyledColumns/PercentBarStyleHelper.js +0 -1
- package/src/Utilities/Helpers/StyledColumns/SparklineStyleHelper.js +0 -5
- package/src/Utilities/Helpers/StyledColumns/StyledColumnHelper.js +0 -37
- package/src/Utilities/Helpers/TimingHelper.js +0 -13
- package/src/Utilities/ObjectFactory.js +2 -4
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +0 -7
- package/src/Utilities/Services/AlertService.js +0 -1
- package/src/Utilities/Services/AnnotationsService.js +0 -22
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +0 -8
- package/src/Utilities/Services/ChartingService.js +0 -9
- package/src/Utilities/Services/DataService.js +0 -11
- package/src/Utilities/Services/Fdc3Service.js +0 -3
- package/src/Utilities/Services/FlashingCellService.js +0 -6
- package/src/Utilities/Services/ModuleService.js +0 -8
- package/src/Utilities/Services/QueryLanguageService.js +2 -25
- package/src/Utilities/Services/RowFormService.js +0 -1
- package/src/Utilities/Services/RowSummaryService.js +1 -20
- package/src/Utilities/Services/TeamSharingService.js +0 -15
- package/src/Utilities/Services/ThemeService.js +0 -7
- package/src/Utilities/Services/ValidationService.js +0 -21
- package/src/Utilities/createAgStatusPanelComponent.js +0 -3
- package/src/Utilities/getExpressionViewItems.js +0 -2
- package/src/Utilities/getObjectTagsViewItems.js +0 -1
- package/src/Utilities/getScrollbarSize.js +0 -1
- package/src/Utilities/logDeprecation.js +0 -3
- package/src/Utilities/resolveContainerElement.js +0 -21
- package/src/Utilities/runIfNotResolvedIn.js +0 -7
- package/src/Utilities/sortColumnStateForVisibleColumns.js +2 -12
- package/src/Utilities/waitForTimeout.js +0 -1
- package/src/Utilities/wizardSelection.js +0 -2
- package/src/View/AdaptablePopover/index.js +1 -1
- package/src/View/AdaptableView.js +1 -5
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +0 -4
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +0 -23
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +0 -2
- package/src/View/AdaptableWizardView/Wizard.js +0 -12
- package/src/View/AdaptableWizardView/helper.js +0 -11
- package/src/View/Alert/ActiveAlertsPanel.js +0 -2
- package/src/View/Alert/AlertStatusSubPanel.js +0 -8
- package/src/View/Alert/Utilities/getAlertType.js +0 -7
- package/src/View/Alert/Utilities/getDefaultAlertDefinition.js +0 -5
- package/src/View/Alert/Utilities/mapAlertDefinition.js +0 -3
- package/src/View/Alert/Wizard/AlertWizard.js +0 -2
- package/src/View/Alert/Wizard/isValidAlertRules.js +0 -1
- package/src/View/BulkUpdate/BulkUpdatePopup.js +0 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -3
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +0 -1
- package/src/View/CalculatedColumn/utils.d.ts +1 -1
- package/src/View/CellSummary/CellSummaryPopup.js +0 -3
- package/src/View/CellSummary/CellSummaryStatusBarSubPanelPopover.js +1 -7
- package/src/View/Charting/EditChartButton.js +1 -4
- package/src/View/Charting/ShowChartButton.js +0 -3
- package/src/View/Charting/useAgChartState.js +0 -5
- package/src/View/Charting/useChartingElements.js +0 -4
- package/src/View/Charting/useExternalChartState.js +0 -6
- package/src/View/ColumnInfo/ColumnInfo.js +7 -17
- package/src/View/Comments/CommentsEditor.js +1 -16
- package/src/View/Components/AdaptableButton/AdaptableButtonComponent.js +0 -1
- package/src/View/Components/AdaptableButton/AdaptableButtonView.js +0 -3
- package/src/View/Components/AdaptableDateInput/index.js +2 -9
- package/src/View/Components/AdaptableIconComponent/index.js +0 -4
- package/src/View/Components/AdaptableIconSelector/index.js +0 -3
- package/src/View/Components/AdaptableInput/index.js +0 -2
- package/src/View/Components/Badge/index.js +0 -8
- package/src/View/Components/Buttons/ButtonNewPage.js +1 -2
- package/src/View/Components/Buttons/EntityListActionButtons.js +0 -1
- package/src/View/Components/CellPopup/index.js +1 -2
- package/src/View/Components/ColumnFilter/AdaptableColumnFilter.js +0 -4
- package/src/View/Components/ColumnFilter/AdaptableFloatingFilter.js +0 -4
- package/src/View/Components/ColumnFilter/ColumnFilter.js +3 -46
- package/src/View/Components/ColumnFilter/ColumnFilterWindow.js +0 -2
- package/src/View/Components/ColumnFilter/FloatingFilter.js +1 -20
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +2 -16
- package/src/View/Components/ColumnFilter/components/ColumnFilterInputList.js +1 -4
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +0 -1
- package/src/View/Components/ColumnFilter/components/FloatingFilterInputList.js +1 -6
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +0 -20
- package/src/View/Components/ColumnFilter/useAdaptableFilterWrapper.js +0 -5
- package/src/View/Components/ColumnFilter/utils.js +2 -9
- package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicateEditor.js +0 -2
- package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.js +0 -1
- package/src/View/Components/EntityRulesEditor/index.js +1 -11
- package/src/View/Components/ExternalRenderer.js +1 -3
- package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -52
- package/src/View/Components/ModuleValueSelector/index.js +0 -2
- package/src/View/Components/Panels/PanelWithImage.js +1 -5
- package/src/View/Components/Panels/PanelWithRow.js +0 -3
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +0 -6
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +0 -3
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +0 -6
- package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +1 -2
- package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +0 -1
- package/src/View/Components/Popups/AdaptablePopupAlert.js +0 -3
- package/src/View/Components/Popups/AdaptableToaster.js +0 -2
- package/src/View/Components/Popups/WindowPopups/WindowPopups.js +0 -8
- package/src/View/Components/RangesComponent.js +0 -57
- package/src/View/Components/Selectors/BulkUpdateValueSelector.js +0 -3
- package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -6
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -18
- package/src/View/Components/ToolPanel/ToolPanelPopupSections.js +0 -4
- package/src/View/Components/ToolPanel/ToolPanelWrapper.js +1 -4
- package/src/View/Components/ValueSelector/index.js +0 -4
- package/src/View/Components/wizardColumnListStyles.js +0 -5
- package/src/View/Dashboard/CustomToolbar.js +1 -25
- package/src/View/Dashboard/PinnedToolbarsSelector.js +0 -1
- package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -22
- package/src/View/DataImport/DataImportWizard/sections/DataPreview.js +0 -1
- package/src/View/DataImport/systemFileHandlers.js +1 -1
- package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +0 -27
- package/src/View/FormatColumn/Wizard/FormatColumnPreview.js +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +0 -7
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +0 -12
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +0 -10
- package/src/View/GridFilter/GridFilterPopup.js +0 -1
- package/src/View/GridFilter/useGridFilterExpressionEditor.js +0 -2
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -31
- package/src/View/Layout/LayoutViewPanel.js +0 -2
- package/src/View/Layout/PivotDetailsPopoup.js +0 -2
- package/src/View/Layout/TransposedPopup.js +0 -7
- package/src/View/Layout/Wizard/LayoutWizard.js +1 -6
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +0 -2
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -32
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +0 -3
- package/src/View/Layout/Wizard/sections/columnLayoutHelpers.js +0 -2
- package/src/View/Layout/Wizard/sections/layoutWizardColumns.js +0 -4
- package/src/View/Note/NotePopup.js +0 -1
- package/src/View/QuickSearch/QuickSearchPopup.js +0 -1
- package/src/View/StatusBar/AdaptableStatusBar.js +0 -4
- package/src/View/StatusBar/StatusBarPanel.js +0 -8
- package/src/View/StatusBar/StatusBarPopup.js +0 -2
- package/src/View/StyledColumn/Wizard/BadgePillStyleEditor.js +0 -11
- package/src/View/StyledColumn/Wizard/StyledColumnSliceStyleEditors.js +0 -28
- package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -25
- package/src/View/StyledColumn/Wizard/StyledColumnWizardBulletSection.js +0 -26
- package/src/View/StyledColumn/Wizard/StyledColumnWizardGradientSection.js +0 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardIconSection.js +0 -40
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRangeBarSection.js +0 -55
- package/src/View/StyledColumn/Wizard/StyledColumnWizardRatingSection.js +0 -15
- package/src/View/StyledColumn/Wizard/StyledColumnWizardScopeSection.js +0 -21
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/BarStyleCellTextPreview.js +0 -10
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/GradientSummaryPreview.js +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/PercentBarStylePreview.js +0 -4
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBadgePreview.js +0 -5
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnBulletPreview.js +0 -3
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnChartListPreviews.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRangeBarPreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnRatingPreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/Components/StyledColumnSparklinePreview.js +0 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardRangesSection.js +0 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +1 -13
- package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +0 -21
- package/src/View/SystemStatus/SystemStatusPopup.js +0 -1
- package/src/View/TeamSharing/SharedEntityObjectView.js +0 -1
- package/src/View/Theme/ThemeSelector.js +0 -1
- package/src/View/UIHelper.js +0 -6
- package/src/View/UIInterfaces.js +0 -1
- package/src/View/Wizard/CollapsibleWizardCard.js +1 -8
- package/src/View/Wizard/OnePageWizards.js +2 -9
- package/src/View/Wizard/SummaryColorTag.js +0 -1
- package/src/View/Wizard/useKeyboardNavigation.js +1 -3
- package/src/agGrid/Adaptable.js +0 -12
- package/src/agGrid/AdaptableAgGrid.d.ts +0 -2
- package/src/agGrid/AdaptableAgGrid.js +3 -482
- package/src/agGrid/AdaptableFilterHandler.js +0 -5
- package/src/agGrid/AdaptableLogger.js +0 -6
- package/src/agGrid/AgGridAdapter.js +3 -90
- package/src/agGrid/AgGridColumnAdapter.js +6 -168
- package/src/agGrid/AgGridExportAdapter.js +4 -106
- package/src/agGrid/AgGridFilterAdapter.js +0 -5
- package/src/agGrid/AgGridFloatingFilterAdapter.js +0 -10
- package/src/agGrid/AgGridMenuAdapter.js +0 -143
- package/src/agGrid/AgGridModulesAdapter.js +0 -2
- package/src/agGrid/AgGridOptionsService.js +0 -2
- package/src/agGrid/AgGridThemeAdapter.js +0 -7
- package/src/agGrid/agGridDataTypeDefinitions.js +0 -8
- package/src/agGrid/cellRenderers/BadgeRenderer.js +0 -10
- package/src/agGrid/cellRenderers/BulletChartRenderer.js +1 -96
- package/src/agGrid/cellRenderers/IconRenderer.js +0 -55
- package/src/agGrid/cellRenderers/PercentBarRenderer.js +0 -51
- package/src/agGrid/cellRenderers/RangeBarRenderer.js +1 -50
- package/src/agGrid/cellRenderers/RatingRenderer.js +0 -40
- package/src/agGrid/editors/AdaptableDateEditor/index.js +0 -18
- package/src/agGrid/editors/AdaptableNumberEditor/InternalAdaptableNumberEditor.js +0 -3
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +0 -11
- package/src/agGrid/editors/AdaptablePercentageEditor/index.js +0 -9
- package/src/agGrid/index.js +1 -9
- package/src/components/AdaptableFormComponent/AdaptableFormComponent.js +1 -73
- package/src/components/ColorPicker/ColorPicker.js +0 -6
- package/src/components/Combobox/VirtualizedList.js +0 -5
- package/src/components/Combobox/index.js +5 -63
- package/src/components/Dashboard/Dashboard.js +1 -4
- package/src/components/Datepicker/index.js +2 -97
- package/src/components/DragAndDropContext/TabList.js +2 -6
- package/src/components/Drawer/index.js +0 -7
- package/src/components/Dropdown/index.js +0 -1
- package/src/components/DropdownButton/index.js +0 -1
- package/src/components/ExpressionEditor/BaseEditorInput.js +1 -16
- package/src/components/ExpressionEditor/EditorButton.js +0 -1
- package/src/components/ExpressionEditor/EditorInput.js +1 -7
- package/src/components/ExpressionEditor/EditorInputWithWhereClause.js +0 -1
- package/src/components/ExpressionEditor/ExpressionPreview.js +4 -14
- package/src/components/ExpressionEditor/NamedQueryContext.js +0 -1
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilderInputs.js +1 -6
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +0 -12
- package/src/components/ExpressionEditor/QueryBuilder/utils.js +0 -4
- package/src/components/ExpressionEditor/index.js +5 -14
- package/src/components/Icon/index.js +0 -2
- package/src/components/Input/NumberInput.js +0 -10
- package/src/components/Modal/Backdrop.js +0 -1
- package/src/components/OverlayTrigger/Overlay.js +0 -1
- package/src/components/OverlayTrigger/index.js +3 -15
- package/src/components/ProgressIndicator/ProgressIndicator.js +3 -16
- package/src/components/ResizeObserver/index.js +0 -7
- package/src/components/SelectableList/index.js +0 -7
- package/src/components/SimpleButton/index.js +2 -16
- package/src/components/Tabs/index.js +0 -3
- package/src/components/Tag/Tag.js +0 -1
- package/src/components/Tag/columnScopeTagHelpers.js +0 -2
- package/src/components/Textarea/index.js +1 -8
- package/src/components/Toggle/Toggle.js +1 -5
- package/src/components/Toggle/ToggleGroup.js +1 -3
- package/src/components/ToggleButton/index.js +1 -3
- package/src/components/Tree/TreeDropdown/index.js +2 -130
- package/src/components/Tree/treeUtils.js +0 -4
- package/src/components/WindowModal/WindowModal.js +1 -14
- package/src/components/WindowModal/useStacking.js +0 -7
- package/src/components/icons/bullet-chart.js +0 -4
- package/src/components/icons/icon-style.js +0 -4
- package/src/components/icons/index.js +26 -36
- package/src/components/icons/range-bar.js +0 -5
- package/src/components/icons/star.js +0 -1
- package/src/components/twUtils.js +3 -12
- package/src/components/ui/calendar.js +1 -9
- package/src/components/ui/combobox.js +0 -4
- package/src/components/utils/captureTabNavigation/getFocusableChildren.js +0 -1
- package/src/components/utils/useDraggable.js +0 -4
- package/src/components/utils/useProperty.js +0 -18
- package/src/devTools/index.js +0 -1
- package/src/env.js +2 -2
- package/src/layout-manager/src/LMEmitter.js +0 -5
- package/src/layout-manager/src/destructurePivotColumnId.js +0 -19
- package/src/layout-manager/src/index.js +2 -182
- package/src/layout-manager/src/isLayoutEqual.js +0 -1
- package/src/layout-manager/src/isPivotColumnTotal.js +0 -2
- package/src/layout-manager/src/normalizeLayoutModel.js +0 -27
- package/src/layout-manager/src/simplifyLayoutModel.js +0 -11
- package/src/layout-manager/src/sortColumnIdsByOrder.js +2 -12
- package/src/lib/utils.js +0 -1
- package/src/migration/AdaptableUpgradeHelper.js +0 -2
- package/src/migration/VersionUpgrade17.js +0 -33
- package/src/migration/VersionUpgrade20.js +1 -21
- package/src/migration/VersionUpgrade21.js +0 -3
- package/src/migration/VersionUpgrade22.js +0 -11
- package/src/migration/VersionUpgrade23.js +0 -73
- package/src/parser/src/evaluator.js +0 -1
- package/src/parser/src/index.js +0 -1
- package/src/parser/src/parser.js +4 -103
- package/src/parser/src/predicate/mapExpressionToQlPredicate.js +0 -5
- package/src/parser/src/predicate/mapQlPredicateToExpression.js +0 -2
- package/src/parser/src/tokenizer.js +0 -2
- package/src/parser/src/utils.js +0 -1
- package/src/renderReactRoot.js +0 -12
- package/src/setupDevTools.js +0 -6
- package/src/twMerge.js +0 -1
- package/src/types.d.ts +1 -1
- package/src/types.js +0 -2
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/Utilities/Services/Interface/IMetamodelService.d.ts +0 -20
- package/src/Utilities/Services/Interface/IMetamodelService.js +0 -1
- package/src/Utilities/Services/MetamodelService.d.ts +0 -17
- package/src/Utilities/Services/MetamodelService.js +0 -162
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.d.ts +0 -6
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +0 -99
- package/src/metamodel/adaptable-metamodel-model.d.ts +0 -26
- package/src/metamodel/adaptable-metamodel-model.js +0 -1
- package/src/metamodel/adaptable.metamodel.d.ts +0 -6244
- package/src/metamodel/adaptable.metamodel.js +0 -1
|
@@ -24,8 +24,7 @@ import { StyledColumnSparklinePreview } from '../View/StyledColumn/Wizard/Styled
|
|
|
24
24
|
import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems';
|
|
25
25
|
export class StyledColumnModule extends AdaptableModuleBase {
|
|
26
26
|
constructor(api) {
|
|
27
|
-
super(ModuleConstants.StyledColumnModuleId, ModuleConstants.StyledColumnFriendlyName, 'brush', 'StyledColumnPopup',
|
|
28
|
-
'Create a Special Column Style e.g Gradient, Percent Bar or Badge', api);
|
|
27
|
+
super(ModuleConstants.StyledColumnModuleId, ModuleConstants.StyledColumnFriendlyName, 'brush', 'StyledColumnPopup', 'Create a Special Column Style e.g Gradient, Percent Bar or Badge', api);
|
|
29
28
|
}
|
|
30
29
|
getModuleAdaptableObjects(config) {
|
|
31
30
|
return this.api.styledColumnApi.getStyledColumns(config);
|
|
@@ -38,17 +37,13 @@ export class StyledColumnModule extends AdaptableModuleBase {
|
|
|
38
37
|
}
|
|
39
38
|
createColumnMenuItems(column) {
|
|
40
39
|
let returnColumnMenuItems = [];
|
|
41
|
-
// Need a Column and an editable Module
|
|
42
40
|
if (column && this.isModuleEditable() && !column.isTreeColumn) {
|
|
43
41
|
let styledColumn = this.api.styledColumnApi.getStyledColumnForColumnId(column.columnId);
|
|
44
|
-
// First look at Sparkline Columns - needs to be editable array type
|
|
45
42
|
if (this.api.columnApi.hasNumericArrayDataType(column.columnId) &&
|
|
46
43
|
column.IsReadOnly !== true &&
|
|
47
44
|
this.api.styledColumnApi.canDisplaySparklines()) {
|
|
48
45
|
let sparklineColumnExists = column.isSparkline && Boolean(styledColumn);
|
|
49
46
|
if (column.isSparkline && !sparklineColumnExists) {
|
|
50
|
-
// do nothing as we only want to continue if there is no sparkline column or if its in state
|
|
51
|
-
// because if just one then it was created in AG Grid and we dont want to edit it
|
|
52
47
|
}
|
|
53
48
|
else {
|
|
54
49
|
const hasSparklineStyle = styledColumn != null && styledColumn.SparklineStyle != null;
|
|
@@ -68,17 +63,13 @@ export class StyledColumnModule extends AdaptableModuleBase {
|
|
|
68
63
|
source: 'ColumnMenu',
|
|
69
64
|
value: styledColumn,
|
|
70
65
|
config: {
|
|
71
|
-
// New Styled Columns must land on the Settings step so the user
|
|
72
|
-
// can enter the (mandatory) Name. Edit jumps straight to Style.
|
|
73
66
|
defaultCurrentSectionName: hasSparklineStyle ? 'Style' : 'Settings',
|
|
74
67
|
},
|
|
75
68
|
};
|
|
76
69
|
returnColumnMenuItems.push(this.createMenuItemShowPopup(name, label + 'Sparkline Column', this.moduleInfo.Popup, this.getGlyphForStyledColumn(styledColumn), popupParam));
|
|
77
70
|
}
|
|
78
71
|
}
|
|
79
|
-
// Next do non sparkline
|
|
80
72
|
else if (!column.isSparkline) {
|
|
81
|
-
// Edit is common
|
|
82
73
|
if (styledColumn) {
|
|
83
74
|
if (!styledColumn.IsReadOnly) {
|
|
84
75
|
const defaultCurrentSectionName = getStyledColumnEditDefaultSectionName(styledColumn);
|
|
@@ -121,8 +112,6 @@ export class StyledColumnModule extends AdaptableModuleBase {
|
|
|
121
112
|
defaultCurrentSectionName: 'Settings',
|
|
122
113
|
},
|
|
123
114
|
});
|
|
124
|
-
// Icon Style resolves one key → glyph per cell; array columns are
|
|
125
|
-
// unsupported (use Badge for per-element visuals).
|
|
126
115
|
const newIconButton = this.createMenuItemShowPopup('styled-column-icon-add', 'Create Icon Column', this.moduleInfo.Popup, 'icon-style', {
|
|
127
116
|
...popupParam,
|
|
128
117
|
value: {
|
|
@@ -136,8 +125,6 @@ export class StyledColumnModule extends AdaptableModuleBase {
|
|
|
136
125
|
},
|
|
137
126
|
});
|
|
138
127
|
switch (column.dataType) {
|
|
139
|
-
// Number
|
|
140
|
-
// Create Styled Column - Gradient | Percent Bar | Badge
|
|
141
128
|
case 'number':
|
|
142
129
|
const emptyRanges = this.api.columnScopeApi.createCellColorRangesForScope({
|
|
143
130
|
ColumnIds: [column.columnId],
|
|
@@ -192,8 +179,6 @@ export class StyledColumnModule extends AdaptableModuleBase {
|
|
|
192
179
|
...popupParam,
|
|
193
180
|
value: {
|
|
194
181
|
...newStyledColumn,
|
|
195
|
-
// Seed with column-wide bounds so the Style step opens
|
|
196
|
-
// with a valid (renderable) configuration.
|
|
197
182
|
RangeBarStyle: {
|
|
198
183
|
Min: 'Col-Min',
|
|
199
184
|
Max: 'Col-Max',
|
|
@@ -26,7 +26,6 @@ export class TeamSharingModule extends AdaptableModuleBase {
|
|
|
26
26
|
}
|
|
27
27
|
onAdaptableReady() {
|
|
28
28
|
if (this.api.teamSharingApi.isTeamSharingAvailable()) {
|
|
29
|
-
// make sure there is no zombie import process remaining (in case a previous import crashed)
|
|
30
29
|
this.api.internalApi.dispatchReduxAction(TeamSharingRedux.TeamSharingCommitImport());
|
|
31
30
|
this.api.teamSharingApi.refreshTeamSharing();
|
|
32
31
|
}
|
|
@@ -45,25 +44,20 @@ export class TeamSharingModule extends AdaptableModuleBase {
|
|
|
45
44
|
return 1000;
|
|
46
45
|
}
|
|
47
46
|
handleStateChanged(adaptableStateChangedInfo) {
|
|
48
|
-
// check if TeamSharing is activated
|
|
49
47
|
if (!this.api.teamSharingApi.isTeamSharingAvailable()) {
|
|
50
48
|
return;
|
|
51
49
|
}
|
|
52
|
-
// skip all teamsharing actions, otherwise we could get in an infinite loop
|
|
53
50
|
if (this.SKIP_TEAMSHARING_UPDATE_ACTIONS.includes(adaptableStateChangedInfo.action.type)) {
|
|
54
51
|
return;
|
|
55
52
|
}
|
|
56
|
-
// check if there is any changed adaptable object
|
|
57
53
|
const changedAdaptableObject = this.extractAdaptableObjectFromAction(adaptableStateChangedInfo.action);
|
|
58
54
|
if (!changedAdaptableObject) {
|
|
59
55
|
return;
|
|
60
56
|
}
|
|
61
|
-
// check if the changed adaptable object is active in TeamSharing
|
|
62
57
|
const activeSharedEntity = this.api.internalApi.getState().TeamSharing.ActiveSharedEntityMap[changedAdaptableObject.Uuid];
|
|
63
58
|
if (!activeSharedEntity) {
|
|
64
59
|
return;
|
|
65
60
|
}
|
|
66
|
-
// handle special case of LAYOUT_SAVE which might be called redundantly without actually changing the state
|
|
67
61
|
const isLayoutStateUnchanged = adaptableStateChangedInfo.action.type === LAYOUT_SAVE &&
|
|
68
62
|
isEqual(adaptableStateChangedInfo.oldState.Layout, adaptableStateChangedInfo.newState.Layout);
|
|
69
63
|
if (isLayoutStateUnchanged) {
|
|
@@ -72,8 +66,6 @@ export class TeamSharingModule extends AdaptableModuleBase {
|
|
|
72
66
|
this.api.internalApi.dispatchReduxAction(TeamSharingUpdateItem(changedAdaptableObject, adaptableStateChangedInfo.userName));
|
|
73
67
|
}
|
|
74
68
|
extractAdaptableObjectFromAction(action) {
|
|
75
|
-
// this implementation is based on the assumption that any action which mutates an AdaptableObject has
|
|
76
|
-
// at most one(1) property which has an 'Uuid:TypeUuid' defined (and that is the AdaptableObject, of course)
|
|
77
69
|
if (!action) {
|
|
78
70
|
return;
|
|
79
71
|
}
|
|
@@ -157,7 +149,6 @@ export class TeamSharingModule extends AdaptableModuleBase {
|
|
|
157
149
|
}
|
|
158
150
|
toViewAll() {
|
|
159
151
|
return ((this.api.teamSharingApi.getLoadedAdaptableSharedEntities() ?? [])
|
|
160
|
-
// only top level
|
|
161
152
|
.filter((sharedEntity) => !this.isSharedEntityADependency(sharedEntity))
|
|
162
153
|
.map((item) => this.toView(item)));
|
|
163
154
|
}
|
|
@@ -92,12 +92,7 @@ export function getTableColumnsSizingSummaryValues(layout, api) {
|
|
|
92
92
|
export function getTableColumnsSortingSummaryValues(layout, api) {
|
|
93
93
|
return (layout.ColumnSorts ?? []).map((sort) => `[${api.columnApi.getFriendlyNameForColumnId(sort.ColumnId, layout)}: ${sort.SortOrder}]`);
|
|
94
94
|
}
|
|
95
|
-
/** Matches legacy Layout settings panel behaviour (`layoutViewOptions.maxColumnsToDisplay`). */
|
|
96
95
|
export const DEFAULT_LAYOUT_VIEW_MAX_COLUMNS = 10;
|
|
97
|
-
/**
|
|
98
|
-
* Collapse a long column list for compact views (e.g. Layout settings panel).
|
|
99
|
-
* Keeps all items when the overflow is only 1 column; otherwise shows `+N more`.
|
|
100
|
-
*/
|
|
101
96
|
export function truncateColumnSummaryValues(values, maxToDisplay = DEFAULT_LAYOUT_VIEW_MAX_COLUMNS) {
|
|
102
97
|
if (maxToDisplay <= 0 || values.length <= maxToDisplay + 1) {
|
|
103
98
|
return values;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export const HOST_URL_ROOT = 'https://www.adaptabletools.com';
|
|
2
2
|
export const HOST_URL_DOCS = `${HOST_URL_ROOT}/docs`;
|
|
3
|
-
//export const HOST_URL_DOCS = 'http://localhost:3000';
|
|
4
3
|
export const ExpressionEditorDocsLink = `${HOST_URL_DOCS}/ui-expression-editor`;
|
|
5
4
|
export const BooleanQueryDocsLink = `${HOST_URL_DOCS}/adaptable-ql-expression-standard`;
|
|
6
5
|
export const ScalarQueryDocsLink = `${HOST_URL_DOCS}/adaptable-ql-expression-standard`;
|
|
@@ -13,7 +13,6 @@ export const ADAPTABLE = 'AdapTable';
|
|
|
13
13
|
export const ADAPTABLE_ID = 'adaptable_id';
|
|
14
14
|
export const ADAPTABLE_TOOLPANEL_ID = 'adaptable';
|
|
15
15
|
export const ADAPTABLE_TOOLPANEL_COMPONENT = 'AdaptableToolPanel';
|
|
16
|
-
// from https://www.ag-grid.com/javascript-data-grid/side-bar/#string-configuration
|
|
17
16
|
export const AGGRID_TOOLPANEL_FILTERS = 'filters';
|
|
18
17
|
export const AGGRID_TOOLPANEL_COLUMNS = 'columns';
|
|
19
18
|
export const READ_ONLY_STYLE = 'ab_readonly';
|
|
@@ -29,7 +28,6 @@ export const AG_GRID_PIVOT_GRAND_TOTAL_COLUMN = 'PivotRowTotal_pivot_';
|
|
|
29
28
|
export const AG_GRID_CHART_WINDOW = 'AG Grid Window';
|
|
30
29
|
export const AG_GRID_GRAND_TOTAL_ROW_ID = 'rowGroupFooter_ROOT_NODE_ID';
|
|
31
30
|
export const ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = '(FDC3ActionColumn)';
|
|
32
|
-
// FIXME AFL - load this from DateInputOptions
|
|
33
31
|
export const DEFAULT_DATE_FORMAT_PATTERN = 'dd-MM-yyyy';
|
|
34
32
|
export const DEFAULT_DATE_FORMAT_PATTERN_WITH_TIME = 'dd-MM-yyyy HH:mm:ss';
|
|
35
33
|
export const DEFAULT_STRING_DISPLAY_VALUE = 'Hello World';
|
|
@@ -37,12 +35,9 @@ export const DEFAULT_INTEGER_DISPLAY_VALUE = 12345;
|
|
|
37
35
|
export const DEFAULT_DOUBLE_DISPLAY_VALUE = 12345.6789;
|
|
38
36
|
export const QUICK_SEARCH_DEBOUNCE_TIME = 350;
|
|
39
37
|
export const MENU_SEPARATOR = '-';
|
|
40
|
-
// Live Report Throttle Time (used in OpenFin, IPushPull etc.)
|
|
41
38
|
export const DEFAULT_LIVE_REPORT_THROTTLE_TIME = 2000;
|
|
42
|
-
// Validation
|
|
43
39
|
export const SERVER_VALIDATION_HEADER = 'Server Validation Message';
|
|
44
40
|
export const SERVER_VALIDATION_MESSAGE_TYPE = 'Info';
|
|
45
|
-
// System Report Name Constants
|
|
46
41
|
export const ALL_DATA_REPORT = 'All Data';
|
|
47
42
|
export const CURRENT_LAYOUT_REPORT = 'Current Layout';
|
|
48
43
|
export const SELECTED_DATA_REPORT = 'Selected Data';
|
|
@@ -51,7 +46,6 @@ export const SYSTEM_REPORT_NAMES = [
|
|
|
51
46
|
ALL_DATA_REPORT,
|
|
52
47
|
SELECTED_DATA_REPORT,
|
|
53
48
|
];
|
|
54
|
-
// Systen Report Format Constants
|
|
55
49
|
export const EXCEL_FORMAT_REPORT = 'Excel';
|
|
56
50
|
export const VISUAL_EXCEL_FORMAT_REPORT = 'VisualExcel';
|
|
57
51
|
export const CSV_FORMAT_REPORT = 'CSV';
|
|
@@ -70,9 +64,7 @@ export const SYSTEM_EXPORT_DESTINATIONS = [
|
|
|
70
64
|
DOWNLOAD_EXPORT_DESTINATION,
|
|
71
65
|
CLIPBOARD_EXPORT_DESTINATION,
|
|
72
66
|
];
|
|
73
|
-
// Theme Constants
|
|
74
67
|
export const THEME_STYLE = `ab--theme-`;
|
|
75
|
-
// Layout UI Constants
|
|
76
68
|
export const LAYOUT_NEW_TABLE_TOOLTIP = 'Create a new Table Layout';
|
|
77
69
|
export const LAYOUT_NEW_PIVOT_TOOLTIP = 'Create a new Pivot Layout';
|
|
78
70
|
export const LAYOUT_NEW_TABLE_OR_PIVOT_TOOLTIP = 'Create a new Layout';
|
|
@@ -80,7 +72,6 @@ export const LAYOUT_SAVE_TOOLTIP = 'Save Changes to Current Layout';
|
|
|
80
72
|
export const LAYOUT_EDIT_TOOLTIP = 'Edit Layout';
|
|
81
73
|
export const LAYOUT_CLONE_TOOLTIP = 'Clone Layout';
|
|
82
74
|
export const LAYOUT_DELETE_TOOLTIP = 'Delete Layout';
|
|
83
|
-
// Standalone Popups
|
|
84
75
|
export const STANDALONE_MODULE_POPUPS = [
|
|
85
76
|
'BulkUpdate',
|
|
86
77
|
'SmartEdit',
|
|
@@ -88,7 +79,6 @@ export const STANDALONE_MODULE_POPUPS = [
|
|
|
88
79
|
];
|
|
89
80
|
export const OBSERVABLE_EXPRESSION_ROW_ADDED = 'ROW_ADDED';
|
|
90
81
|
export const OBSERVABLE_EXPRESSION_ROW_REMOVED = 'ROW_REMOVED';
|
|
91
|
-
// Entitlement Access Level Constants
|
|
92
82
|
export const ACCESS_LEVEL_FULL = 'Full';
|
|
93
83
|
export const ACCESS_LEVEL_READ_ONLY = 'ReadOnly';
|
|
94
84
|
export const ACCESS_LEVEL_HIDDEN = 'Hidden';
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { SummaryOperation } from '../../AdaptableState/Common/Enums';
|
|
2
2
|
import { getSwatchColorVar } from '../../View/UIHelper';
|
|
3
3
|
import { LIGHT_THEME, DARK_THEME, OS_THEME } from './GeneralConstants';
|
|
4
|
-
// Cells Summary
|
|
5
4
|
export const CELL_SUMMARY_DEFAULT_OPERATION = SummaryOperation.Sum;
|
|
6
|
-
|
|
7
|
-
export const
|
|
8
|
-
export const
|
|
9
|
-
export const
|
|
10
|
-
export const QUICK_SEARCH_DEFAULT_CURRENT_BACK_COLOR = getSwatchColorVar(20); // orange
|
|
11
|
-
// theme
|
|
12
|
-
// consts for Themes
|
|
5
|
+
export const QUICK_SEARCH_DEFAULT_TEXT_BACK_COLOR = getSwatchColorVar(9);
|
|
6
|
+
export const QUICK_SEARCH_DEFAULT_CELL_BACK_COLOR = getSwatchColorVar(10);
|
|
7
|
+
export const QUICK_SEARCH_DEFAULT_FORE_COLOR = getSwatchColorVar(1);
|
|
8
|
+
export const QUICK_SEARCH_DEFAULT_CURRENT_BACK_COLOR = getSwatchColorVar(20);
|
|
13
9
|
export const SYSTEM_THEMES = [LIGHT_THEME, DARK_THEME, OS_THEME];
|
|
14
10
|
export const THEME_DEFAULT_CURRENT_THEME = LIGHT_THEME;
|
package/src/Utilities/Emitter.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
/** based on emittery npm package, which is MIT */
|
|
2
1
|
const anyMap = new WeakMap();
|
|
3
2
|
const eventsMap = new WeakMap();
|
|
4
3
|
const triggeredMap = new WeakMap();
|
|
5
4
|
const resolvedPromise = Promise.resolve();
|
|
6
|
-
//type EmitterCallback = (data?: any) => any;
|
|
7
5
|
function assertEventName(eventName) {
|
|
8
6
|
if (typeof eventName !== 'string') {
|
|
9
7
|
throw new TypeError('eventName must be a string');
|
|
@@ -17,8 +15,6 @@ function assertListener(listener) {
|
|
|
17
15
|
function getListeners(instance, eventName) {
|
|
18
16
|
const events = eventsMap.get(instance);
|
|
19
17
|
if (!events) {
|
|
20
|
-
// we're hitting this case only when calling `off` after the instance has been destroyed (so extremely rarely)
|
|
21
|
-
// so we want to return an empty set in order not to make the code throw an error
|
|
22
18
|
return new Set();
|
|
23
19
|
}
|
|
24
20
|
if (!events.has(eventName)) {
|
|
@@ -85,9 +81,6 @@ class Emittery {
|
|
|
85
81
|
}
|
|
86
82
|
destroy() {
|
|
87
83
|
this.clearListeners();
|
|
88
|
-
// should not be needed, since those maps are weak
|
|
89
|
-
// but let's do it anyway - some of our users suggested this Emitter class
|
|
90
|
-
// could be a source of memory leaks, so let's clean this up
|
|
91
84
|
anyMap.delete(this);
|
|
92
85
|
eventsMap.delete(this);
|
|
93
86
|
triggeredMap.delete(this);
|
|
@@ -178,7 +171,6 @@ class Emittery {
|
|
|
178
171
|
const staticListeners = [...listeners];
|
|
179
172
|
const staticAnyListeners = [...anyListeners];
|
|
180
173
|
await resolvedPromise;
|
|
181
|
-
/* eslint-disable no-await-in-loop */
|
|
182
174
|
for (const listener of staticListeners) {
|
|
183
175
|
if (listeners.has(listener)) {
|
|
184
176
|
await listener(eventData);
|
|
@@ -189,7 +181,6 @@ class Emittery {
|
|
|
189
181
|
await listener(eventName, eventData);
|
|
190
182
|
}
|
|
191
183
|
}
|
|
192
|
-
/* eslint-enable no-await-in-loop */
|
|
193
184
|
}
|
|
194
185
|
onAny(listener) {
|
|
195
186
|
assertListener(listener);
|
|
@@ -17,9 +17,6 @@ const aggregationScalarOperandMap = {
|
|
|
17
17
|
AVG: ['string', 'number'],
|
|
18
18
|
COUNT: ['string', 'number'],
|
|
19
19
|
};
|
|
20
|
-
// 0. optional non-capturing block of empty spaces
|
|
21
|
-
// 1. block containing a numeric value (any digits) (required)
|
|
22
|
-
// 2. block containing a single 'K', 'M' or 'B' letter (optional) (case insensitive)
|
|
23
20
|
const CRITERIA_REGEX = /^(?:\s*)(\d+)(K|M|B)?$/i;
|
|
24
21
|
export const aggregatedBooleanExpressionFunctions = {
|
|
25
22
|
WHERE: {
|
|
@@ -141,9 +138,7 @@ export const aggregatedBooleanExpressionFunctions = {
|
|
|
141
138
|
},
|
|
142
139
|
};
|
|
143
140
|
const buildBooleanAggregationParameter = (args, context, comparisonOperator, conditionFn) => {
|
|
144
|
-
// LHS
|
|
145
141
|
const aggregationOperand = extractScalarAggregationOperand(comparisonOperator, args[0]);
|
|
146
|
-
// RHS
|
|
147
142
|
const scalarOperand = extractScalarOperand(comparisonOperator, args[1], aggregationScalarOperandMap[aggregationOperand.name]);
|
|
148
143
|
return {
|
|
149
144
|
type: 'aggregationBoolean',
|
|
@@ -169,7 +164,6 @@ const extractScalarOperand = (consumingFunctionName, value, allowedTypes) => {
|
|
|
169
164
|
if (typeof value === 'number') {
|
|
170
165
|
return value;
|
|
171
166
|
}
|
|
172
|
-
// assertion is safe, we checked in the IF above
|
|
173
167
|
const stringValue = value;
|
|
174
168
|
const matchingResult = stringValue.match(CRITERIA_REGEX);
|
|
175
169
|
const numericString = matchingResult?.[1];
|
|
@@ -177,14 +171,12 @@ const extractScalarOperand = (consumingFunctionName, value, allowedTypes) => {
|
|
|
177
171
|
if (!numericString) {
|
|
178
172
|
throw new ExpressionEvaluationError('Numeric abbreviation', `"${stringValue}" is invalid, expecting a number with a suffix for thousands(K), millions(M) or billions(B)"`);
|
|
179
173
|
}
|
|
180
|
-
// unit -> number
|
|
181
174
|
const numberUnitRatios = {
|
|
182
175
|
number: 1,
|
|
183
176
|
k: 1000,
|
|
184
177
|
m: 1000000,
|
|
185
178
|
b: 1000000000,
|
|
186
179
|
};
|
|
187
|
-
// numeric value
|
|
188
180
|
return parseInt(numericString) * numberUnitRatios[largeNumberUnit.toLowerCase()];
|
|
189
181
|
};
|
|
190
182
|
export const aggregatedBooleanExpressionFunctionNames = getTypedKeys(aggregatedBooleanExpressionFunctions);
|
|
@@ -61,8 +61,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
61
61
|
isOptional: true,
|
|
62
62
|
});
|
|
63
63
|
if (!!groupByParameter) {
|
|
64
|
-
// ensure the GROUP_BY is NOT on the CUMUL function
|
|
65
|
-
// it should be on the AGGREGATION function
|
|
66
64
|
throw new ExpressionEvaluationError('GROUP_BY', `should be passed as an argument to the '${aggregationParameter.name}' aggregation function!`);
|
|
67
65
|
}
|
|
68
66
|
const cumulationExpressionEvaluation = mapAggregationToCumulation(aggregationParameter, overColumnParameter, context);
|
|
@@ -224,7 +222,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
224
222
|
}
|
|
225
223
|
const numericRowValue = getNumericValue(rowValue);
|
|
226
224
|
if (weightParameter) {
|
|
227
|
-
// weighted average
|
|
228
225
|
const weightValue = getNumericValue(context.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, weightParameter.value)) ?? 0;
|
|
229
226
|
aggregatedValue.sumOfValues =
|
|
230
227
|
aggregatedValue.sumOfValues + numericRowValue * weightValue;
|
|
@@ -514,7 +511,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
514
511
|
field: columnName,
|
|
515
512
|
initialValue: { sumOfValues: 0, values: [] },
|
|
516
513
|
reducer: (aggregatedValue, rowValue, rowNode) => {
|
|
517
|
-
// TODO: getNumericValue; allow numeric strings
|
|
518
514
|
if (typeof rowValue !== 'number' || isNaN(rowValue)) {
|
|
519
515
|
return aggregatedValue;
|
|
520
516
|
}
|
|
@@ -584,7 +580,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
584
580
|
return numericRowValue < minValue ? numericRowValue : minValue;
|
|
585
581
|
}
|
|
586
582
|
else {
|
|
587
|
-
// Date
|
|
588
583
|
return isAfter(parseDateValue(rowValue), parseDateValue(minValue))
|
|
589
584
|
? minValue
|
|
590
585
|
: rowValue;
|
|
@@ -648,7 +643,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
648
643
|
return numericRowValue > maxValue ? numericRowValue : maxValue;
|
|
649
644
|
}
|
|
650
645
|
else {
|
|
651
|
-
// Date
|
|
652
646
|
return isAfter(parseDateValue(rowValue), parseDateValue(maxValue))
|
|
653
647
|
? rowValue
|
|
654
648
|
: maxValue;
|
|
@@ -701,7 +695,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
701
695
|
const groupByColumnNames = groupByOperand?.value;
|
|
702
696
|
let quantReducer;
|
|
703
697
|
if (groupByColumnNames?.length) {
|
|
704
|
-
// do the heavy-lifting in done()
|
|
705
698
|
quantReducer = {
|
|
706
699
|
initialValue: {},
|
|
707
700
|
reducer: (nodeValueMap, rowValue, rowNode, rowIndex) => {
|
|
@@ -744,7 +737,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
744
737
|
};
|
|
745
738
|
}
|
|
746
739
|
else {
|
|
747
|
-
// in case of non-grouped quantiles, we are able to calculate the buckets beforehand (which is the most efficient)
|
|
748
740
|
const populationSize = context.adaptableApi.gridApi.getAllRowNodes()?.filter((rowNode) => {
|
|
749
741
|
const rowValue = context.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, quantileColumnName);
|
|
750
742
|
return isDefinedValue(rowValue);
|
|
@@ -1159,8 +1151,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
1159
1151
|
isOptional: true,
|
|
1160
1152
|
});
|
|
1161
1153
|
if (!!groupByParameter) {
|
|
1162
|
-
// ensure the GROUP_BY is NOT on the ABSOLUTE_DIFF function
|
|
1163
|
-
// it should be on the AGGREGATION function
|
|
1164
1154
|
throw new ExpressionEvaluationError('GROUP_BY', `should be passed as an argument to the '${relativeValueParameter.name}' aggregation function!`);
|
|
1165
1155
|
}
|
|
1166
1156
|
const absoluteDiffExpressionEvaluation = mapWrappedAggregationToDiff(context, 'ABSOLUTE_DIFF', relativeValueParameter, absoluteDiffColumnName, columnType);
|
|
@@ -1189,8 +1179,6 @@ export const aggregatedScalarExpressionFunctions = {
|
|
|
1189
1179
|
isOptional: true,
|
|
1190
1180
|
});
|
|
1191
1181
|
if (!!groupByParameter) {
|
|
1192
|
-
// ensure the GROUP_BY is NOT on the ABSOLUTE_DIFF function
|
|
1193
|
-
// it should be on the AGGREGATION function
|
|
1194
1182
|
throw new ExpressionEvaluationError('GROUP_BY', `should be passed as an argument to the '${relativeValueParameter.name}' aggregation function!`);
|
|
1195
1183
|
}
|
|
1196
1184
|
const percentDiffExpressionEvaluation = mapWrappedAggregationToDiff(context, 'PERCENT_DIFF', relativeValueParameter, percentDiffColumnName, columnType);
|
|
@@ -1293,7 +1281,6 @@ const mapAggregationToCumulation = (aggregationParameter, overColumnParameter, c
|
|
|
1293
1281
|
reducer: (cumulationBag, rowValue, rowNode) => {
|
|
1294
1282
|
if (isDefinedValue(rowValue)) {
|
|
1295
1283
|
if (aggregationEvaluation.context?.weightParam) {
|
|
1296
|
-
// weighted average
|
|
1297
1284
|
const weightValue = context.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, aggregationEvaluation.context.weightParam.value) ?? 0;
|
|
1298
1285
|
cumulationBag.currentValue =
|
|
1299
1286
|
cumulationBag.currentValue + rowValue * weightValue;
|
|
@@ -1391,7 +1378,6 @@ const mapWrappedAggregationToDiff = (context, diffWrapperFunction, aggregationPa
|
|
|
1391
1378
|
if (diffWrapperFunction === 'PERCENT_DIFF') {
|
|
1392
1379
|
return ((cellValue - aggregatedValue) / aggregatedValue) * 100;
|
|
1393
1380
|
}
|
|
1394
|
-
// should never happen
|
|
1395
1381
|
return null;
|
|
1396
1382
|
},
|
|
1397
1383
|
rowFilterFn: aggregationEvaluation.rowFilterFn,
|
|
@@ -1403,7 +1389,6 @@ const mapWrappedAggregationToDiff = (context, diffWrapperFunction, aggregationPa
|
|
|
1403
1389
|
return absoluteDiffExpressionEvaluation;
|
|
1404
1390
|
};
|
|
1405
1391
|
export const aggregatedScalarExpressionFunctionNames = getTypedKeys(aggregatedScalarExpressionFunctions);
|
|
1406
|
-
// !! mutates expressionEvaluation
|
|
1407
1392
|
export const addGroupByParams = (groupByColumnNames, expressionEvaluation) => {
|
|
1408
1393
|
if (groupByColumnNames?.length) {
|
|
1409
1394
|
expressionEvaluation.aggregationParams.groupBy = groupByColumnNames.map((columnName) => ({
|
|
@@ -242,8 +242,6 @@ export const booleanExpressionFunctions = {
|
|
|
242
242
|
returnType: 'boolean',
|
|
243
243
|
inputs: [
|
|
244
244
|
['number', 'number[]'],
|
|
245
|
-
// Date is currently not supported in select
|
|
246
|
-
// ['date', 'date[]'],
|
|
247
245
|
['text', 'text[]'],
|
|
248
246
|
],
|
|
249
247
|
},
|
|
@@ -312,7 +310,6 @@ export const booleanExpressionFunctions = {
|
|
|
312
310
|
},
|
|
313
311
|
REGEX: {
|
|
314
312
|
handler(args) {
|
|
315
|
-
// dont need context as here we always want case insenstivity in the Regex
|
|
316
313
|
const firstInput = String(args[0]);
|
|
317
314
|
const regex = String(args[1]);
|
|
318
315
|
return RegExp(regex).test(firstInput);
|
|
@@ -22,9 +22,6 @@ export class DeepMap {
|
|
|
22
22
|
let currentMap = this.map;
|
|
23
23
|
if (!keys.length) {
|
|
24
24
|
throw `Cannot set given keys - please provide a non-empty keys array.`;
|
|
25
|
-
// currentMap.set((EMPTY_KEY as unknown) as K, { value });
|
|
26
|
-
// this.length++;
|
|
27
|
-
// return this;
|
|
28
25
|
}
|
|
29
26
|
for (let i = 0, len = keys.length; i < len; i++) {
|
|
30
27
|
const key = keys[i];
|
|
@@ -51,7 +48,6 @@ export class DeepMap {
|
|
|
51
48
|
let currentMap = this.map;
|
|
52
49
|
if (!keys.length) {
|
|
53
50
|
throw `Cannot get given keys - please provide a non-empty keys array.`;
|
|
54
|
-
// return currentMap.get((EMPTY_KEY as unknown) as K)?.value;
|
|
55
51
|
}
|
|
56
52
|
for (let i = 0, len = keys.length; i < len; i++) {
|
|
57
53
|
const key = keys[i];
|
|
@@ -91,10 +87,6 @@ export class DeepMap {
|
|
|
91
87
|
let currentMap = this.map;
|
|
92
88
|
if (!keys.length) {
|
|
93
89
|
throw `Cannot delete given keys - please provide a non-empty keys array.`;
|
|
94
|
-
// if (currentMap.has(EMPTY_KEY as unknown as K)) {
|
|
95
|
-
// this.length--;
|
|
96
|
-
// }
|
|
97
|
-
// return currentMap.delete((EMPTY_KEY as unknown) as K);
|
|
98
90
|
}
|
|
99
91
|
let maps = [currentMap];
|
|
100
92
|
let result = false;
|
|
@@ -114,7 +106,6 @@ export class DeepMap {
|
|
|
114
106
|
delete pair.map;
|
|
115
107
|
}
|
|
116
108
|
if (!pair.map) {
|
|
117
|
-
// pair is empty, so we can remove it altogether
|
|
118
109
|
currentMap.delete(key);
|
|
119
110
|
}
|
|
120
111
|
}
|
|
@@ -137,10 +128,8 @@ export class DeepMap {
|
|
|
137
128
|
let parentMap = maps[maps.length - 1];
|
|
138
129
|
let pair = parentMap?.get(key);
|
|
139
130
|
if (pair) {
|
|
140
|
-
// pair.map === map ; which can be deleted
|
|
141
131
|
delete pair.map;
|
|
142
132
|
if (!pair.hasOwnProperty('value')) {
|
|
143
|
-
// whole pair can be successfully deleted from parentMap
|
|
144
133
|
parentMap.delete(key);
|
|
145
134
|
}
|
|
146
135
|
}
|
|
@@ -152,10 +141,6 @@ export class DeepMap {
|
|
|
152
141
|
let currentMap = this.map;
|
|
153
142
|
if (!keys.length) {
|
|
154
143
|
throw `Cannot find existing given keys - please provide a non-empty keys array.`;
|
|
155
|
-
// return (
|
|
156
|
-
// currentMap.has((EMPTY_KEY as unknown) as K) &&
|
|
157
|
-
// currentMap.get((EMPTY_KEY as unknown) as K)?.value !== undefined
|
|
158
|
-
// );
|
|
159
144
|
}
|
|
160
145
|
for (let i = 0, len = keys.length; i < len; i++) {
|
|
161
146
|
const key = keys[i];
|
|
@@ -191,7 +176,6 @@ export class DeepMap {
|
|
|
191
176
|
if (pair.hasOwnProperty('value')) {
|
|
192
177
|
fn(pair, keys, next);
|
|
193
178
|
}
|
|
194
|
-
// if it was called by fn, it won't be called again, as it's once-d
|
|
195
179
|
next();
|
|
196
180
|
}
|
|
197
181
|
visit = (fn) => {
|
|
@@ -3,8 +3,6 @@ import StringExtensions from '../Extensions/StringExtensions';
|
|
|
3
3
|
import { filter } from 'rxjs/operators';
|
|
4
4
|
import { toNumber } from '../Extensions/NumberExtensions';
|
|
5
5
|
import { evaluateNode } from '../../parser/src/evaluator';
|
|
6
|
-
// string functions may be case (in)sensitive, see internalApi.isTextComparisonCaseSensitive()
|
|
7
|
-
// if case is insensitive, we convert ALL involved strings to lower case
|
|
8
6
|
export const getStringValues = (context, ...stringArguments) => {
|
|
9
7
|
return isTextSearchCaseInsensitive(context)
|
|
10
8
|
? stringArguments.map((string) => string.toLowerCase())
|
|
@@ -14,13 +12,9 @@ export const getStringValue = (context, stringArgument) => {
|
|
|
14
12
|
return isTextSearchCaseInsensitive(context) ? stringArgument.toLowerCase() : stringArgument;
|
|
15
13
|
};
|
|
16
14
|
export const isTextSearchCaseInsensitive = (context) => !context.adaptableApi.expressionApi.useCaseSensitivity();
|
|
17
|
-
// returns an observable which filters the source$ emissions and emits only if the CellDataChangedInfo relates to the given column
|
|
18
|
-
// optionally, if a filter function (where clause) is provided, it is also evaluated
|
|
19
15
|
export const getDataChangeLog$ = (context, columnNameFilter) => {
|
|
20
16
|
let dataChangeLog$ = context.adaptableApi.internalApi.getDataService().cellDataChangeLog$;
|
|
21
|
-
// filter only the given column changes
|
|
22
17
|
dataChangeLog$ = dataChangeLog$.pipe(filter((dataChangeLog) => dataChangeLog.column.columnId === columnNameFilter));
|
|
23
|
-
// filter based on the WHERE clause
|
|
24
18
|
if (context.filterFn) {
|
|
25
19
|
dataChangeLog$ = dataChangeLog$.pipe(filter((value) => {
|
|
26
20
|
return context.filterFn(value.rowNode);
|
|
@@ -31,7 +25,6 @@ export const getDataChangeLog$ = (context, columnNameFilter) => {
|
|
|
31
25
|
export const getGridChangeLog$ = (context, rowChangeType) => {
|
|
32
26
|
const gridChangeLog$ = context.adaptableApi.internalApi.getDataService().rowDataChangeLog$;
|
|
33
27
|
let gridChangeStream$ = gridChangeLog$.pipe(filter((rowDataChangedInfo) => rowDataChangedInfo.rowTrigger === rowChangeType));
|
|
34
|
-
// filter based on the WHERE clause
|
|
35
28
|
if (context.filterFn) {
|
|
36
29
|
gridChangeStream$ = gridChangeStream$.pipe(filter((value) => value.rowNodes.some((node) => context.filterFn(node))));
|
|
37
30
|
}
|
|
@@ -41,7 +34,6 @@ export const handleWhereFunction = (args, context) => {
|
|
|
41
34
|
const reactiveExpressionNode = args[0];
|
|
42
35
|
const whereClauseExpressionNode = args[1];
|
|
43
36
|
const filterFn = (rowNode) => {
|
|
44
|
-
// whereClauseResult
|
|
45
37
|
return evaluateNode(whereClauseExpressionNode, {
|
|
46
38
|
node: rowNode,
|
|
47
39
|
functions: context.whereClauseFunctions,
|
|
@@ -49,7 +41,6 @@ export const handleWhereFunction = (args, context) => {
|
|
|
49
41
|
...context.adaptableApi.internalApi.buildBaseContext(),
|
|
50
42
|
});
|
|
51
43
|
};
|
|
52
|
-
// observableExpressionResult
|
|
53
44
|
return evaluateExpressionNode(reactiveExpressionNode, context, filterFn);
|
|
54
45
|
};
|
|
55
46
|
export const evaluateExpressionNode = (expressionNode, context, filterFn = context.filterFn) => {
|
|
@@ -62,15 +62,6 @@ function initReducers(reducers) {
|
|
|
62
62
|
}
|
|
63
63
|
return result;
|
|
64
64
|
}
|
|
65
|
-
/**
|
|
66
|
-
*
|
|
67
|
-
* This fn mutates the reducerResults array!!!
|
|
68
|
-
*
|
|
69
|
-
* @param data data item
|
|
70
|
-
* @param reducers an array of reducers
|
|
71
|
-
* @param reducerResults the results on which to operate
|
|
72
|
-
*
|
|
73
|
-
*/
|
|
74
65
|
function computeReducersFor(data, reducers, reducerResults) {
|
|
75
66
|
if (!reducers || !Object.keys(reducers).length) {
|
|
76
67
|
return;
|