@adaptabletools/adaptable 23.0.4 → 23.0.5-canary.1
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.css +0 -64
- 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.d.ts +0 -1
- package/src/AdaptableState/Aggregations/weightedAverage.js +1 -27
- 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/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/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/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/CodeBlock/index.d.ts +0 -1
- package/src/components/CodeBlock/index.js +1 -2
- 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/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/AdaptableState/Common/NamedObject.d.ts +0 -10
- package/src/AdaptableState/Common/NamedObject.js +0 -1
- package/src/Utilities/ExpressionFunctions/groupingMap.d.ts +0 -35
- package/src/Utilities/ExpressionFunctions/groupingMap.js +0 -100
- package/src/Utilities/Interface/AdaptableToolPanelContext.d.ts +0 -4
- package/src/Utilities/Interface/AdaptableToolPanelContext.js +0 -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/View/Components/Buttons/EntityListActionButtons.d.ts +0 -38
- package/src/View/Components/Buttons/EntityListActionButtons.js +0 -42
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.d.ts +0 -12
- package/src/View/Components/ColumnFilter/components/ColumnFilterMenu.js +0 -67
- package/src/View/Components/EntityRowItem.d.ts +0 -7
- package/src/View/Components/EntityRowItem.js +0 -7
- package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.d.ts +0 -3
- package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.js +0 -5
- package/src/View/Components/ModuleProfile.d.ts +0 -8
- package/src/View/Components/ModuleProfile.js +0 -10
- package/src/View/Components/ModuleSummary/ModuleDetail.d.ts +0 -23
- package/src/View/Components/ModuleSummary/ModuleDetail.js +0 -15
- package/src/View/Components/ModuleSummary/ModuleHeader.d.ts +0 -15
- package/src/View/Components/ModuleSummary/ModuleHeader.js +0 -15
- package/src/View/Components/ModuleSummary/SummaryRowItem.d.ts +0 -7
- package/src/View/Components/ModuleSummary/SummaryRowItem.js +0 -12
- package/src/View/Components/SharedProps/ModuleSummaryProps.d.ts +0 -9
- package/src/View/Components/SharedProps/ModuleSummaryProps.js +0 -1
- package/src/View/Components/SharedProps/ToolPanelModuleViewPopupProps.d.ts +0 -13
- package/src/View/Components/SharedProps/ToolPanelModuleViewPopupProps.js +0 -1
- package/src/View/Components/SharedProps/ToolbarModuleViewPopupProps.d.ts +0 -14
- package/src/View/Components/SharedProps/ToolbarModuleViewPopupProps.js +0 -1
- package/src/View/Components/StyleVisualItem.d.ts +0 -9
- package/src/View/Components/StyleVisualItem.js +0 -40
- package/src/View/Components/WizardSummaryPage.d.ts +0 -7
- package/src/View/Components/WizardSummaryPage.js +0 -17
- package/src/components/Accordion.d.ts +0 -7
- package/src/components/Accordion.js +0 -33
- package/src/components/FlexWithFooter.d.ts +0 -9
- package/src/components/FlexWithFooter.js +0 -13
- package/src/components/NotifyResize/index.d.ts +0 -9
- package/src/components/NotifyResize/index.js +0 -35
- package/src/components/PopupWithFooter.d.ts +0 -14
- package/src/components/PopupWithFooter.js +0 -11
- package/src/components/SelectableList/index.d.ts +0 -15
- package/src/components/SelectableList/index.js +0 -95
- package/src/components/SizedContainer/index.d.ts +0 -17
- package/src/components/SizedContainer/index.js +0 -20
- package/src/components/Table/index.d.ts +0 -4
- package/src/components/Table/index.js +0 -6
- package/src/components/WizardPanel/index.d.ts +0 -9
- package/src/components/WizardPanel/index.js +0 -7
- package/src/components/icons/align-justify.d.ts +0 -3
- package/src/components/icons/align-justify.js +0 -3
- package/src/components/icons/column-info.d.ts +0 -3
- package/src/components/icons/column-info.js +0 -3
- package/src/components/icons/gradient-column.d.ts +0 -3
- package/src/components/icons/gradient-column.js +0 -3
- package/src/components/icons/invalid.d.ts +0 -3
- package/src/components/icons/invalid.js +0 -3
- package/src/components/icons/logout copy.d.ts +0 -3
- package/src/components/icons/logout copy.js +0 -3
- package/src/components/icons/smart-edit.d.ts +0 -3
- package/src/components/icons/smart-edit.js +0 -3
- package/src/components/icons/team-share.d.ts +0 -3
- package/src/components/icons/team-share.js +0 -3
- package/src/components/icons/unchecked.d.ts +0 -3
- package/src/components/icons/unchecked.js +0 -3
- package/src/components/icons/user-filter.d.ts +0 -3
- package/src/components/icons/user-filter.js +0 -3
- package/src/components/utils/useContainerScrollObserver/index.d.ts +0 -6
- package/src/components/utils/useContainerScrollObserver/index.js +0 -79
- package/src/components/utils/useGlobalEvent.d.ts +0 -1
- package/src/components/utils/useGlobalEvent.js +0 -7
- package/src/components/utils/useLatest.d.ts +0 -1
- package/src/components/utils/useLatest.js +0 -6
- package/src/components/utils/usePropState.d.ts +0 -2
- package/src/components/utils/usePropState.js +0 -8
- 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
|
@@ -4,9 +4,8 @@ import { parseIntFn as parseInt } from '../Extensions/NumberExtensions';
|
|
|
4
4
|
import { ExpressionEvaluationError } from '../../parser/src/ExpressionEvaluationError';
|
|
5
5
|
import { extractColumnParameter, extractParameter, getDataChangeLog$, getGridChangeLog$, getNumericValue, handleColumnFunction, handleWhereFunction, validateColumnType, } from './expressionFunctionUtils';
|
|
6
6
|
import { getTypedKeys } from '../Extensions/TypeExtensions';
|
|
7
|
-
// numeric value(digits) followed by a single 's', 'm' or 'h' letter (case insensitive)
|
|
8
7
|
const TIMEFRAME_REGEX = /^(\d+)(s|m|h)$/i;
|
|
9
|
-
const SYSTEM_MAX_TIMEFRAME_SIZE = 86400000;
|
|
8
|
+
const SYSTEM_MAX_TIMEFRAME_SIZE = 86400000;
|
|
10
9
|
export const observableExpressionFunctions = {
|
|
11
10
|
WHERE: {
|
|
12
11
|
handler(args, context) {
|
|
@@ -40,13 +39,7 @@ export const observableExpressionFunctions = {
|
|
|
40
39
|
return getDataChangeMax$(dataChangeLog$, timeframeChange$);
|
|
41
40
|
}
|
|
42
41
|
case 'NONE': {
|
|
43
|
-
return dataChangeLog$.pipe(
|
|
44
|
-
// wait for the given time
|
|
45
|
-
debounceTime(timeframeParameter.value),
|
|
46
|
-
// completing the observable (ex. alert deletion) will also fire the NONE event
|
|
47
|
-
// takeUntil takes care of this, ignoring any emissions as soon as the source completes
|
|
48
|
-
// (count() result is irrelevant here, the main thing is that it emits an source completion)
|
|
49
|
-
takeUntil(dataChangeLog$.pipe(count())));
|
|
42
|
+
return dataChangeLog$.pipe(debounceTime(timeframeParameter.value), takeUntil(dataChangeLog$.pipe(count())));
|
|
50
43
|
}
|
|
51
44
|
}
|
|
52
45
|
},
|
|
@@ -80,15 +73,7 @@ export const observableExpressionFunctions = {
|
|
|
80
73
|
return getDataChangeMax$(dataChangeLog$, timeframeChange$);
|
|
81
74
|
}
|
|
82
75
|
case 'NONE': {
|
|
83
|
-
return dataChangeLog$.pipe(
|
|
84
|
-
// add a synthetic first value to ensure the grid is observed even when there are no changes
|
|
85
|
-
startWith(getDataChangedInfoStub(context)),
|
|
86
|
-
// wait for the given time
|
|
87
|
-
debounceTime(timeframeParameter.value),
|
|
88
|
-
// completing the observable (ex. alert deletion) will also fire the NONE event
|
|
89
|
-
// takeUntil takes care of this, ignoring any emissions as soon as the source completes
|
|
90
|
-
// (count() result is irrelevant here, the main thing is that it emits a source completion)
|
|
91
|
-
takeUntil(dataChangeLog$.pipe(count())));
|
|
76
|
+
return dataChangeLog$.pipe(startWith(getDataChangedInfoStub(context)), debounceTime(timeframeParameter.value), takeUntil(dataChangeLog$.pipe(count())));
|
|
92
77
|
}
|
|
93
78
|
}
|
|
94
79
|
},
|
|
@@ -222,14 +207,12 @@ export const observableExpressionFunctions = {
|
|
|
222
207
|
},
|
|
223
208
|
TIMEFRAME: {
|
|
224
209
|
handler(args, context) {
|
|
225
|
-
// unit -> milliseconds
|
|
226
210
|
const durationUnitRatios = {
|
|
227
211
|
s: 1000,
|
|
228
212
|
m: 60000,
|
|
229
213
|
h: 3600000,
|
|
230
214
|
};
|
|
231
215
|
const input = args[0] + '';
|
|
232
|
-
//we allow only seconds, minutes & hours durations
|
|
233
216
|
const matchingResult = input.match(TIMEFRAME_REGEX);
|
|
234
217
|
const value = matchingResult?.[1];
|
|
235
218
|
const unit = matchingResult?.[2]?.toLowerCase();
|
|
@@ -240,7 +223,6 @@ export const observableExpressionFunctions = {
|
|
|
240
223
|
if (!duration) {
|
|
241
224
|
throw new ExpressionEvaluationError('TIMEFRAME', `timeframe expression is invalid`);
|
|
242
225
|
}
|
|
243
|
-
// check if the given duration is greater than the generally defined maxTimeframe size
|
|
244
226
|
duration = getMaxTimeframeSize(duration, context);
|
|
245
227
|
const result = {
|
|
246
228
|
type: 'config',
|
|
@@ -260,26 +242,22 @@ export const observableExpressionFunctions = {
|
|
|
260
242
|
},
|
|
261
243
|
};
|
|
262
244
|
export const observableExpressionFunctionNames = getTypedKeys(observableExpressionFunctions);
|
|
263
|
-
// return TRUE if the last(tail) element has the greatest value
|
|
264
245
|
const isLastElementMaxValue = (values) => {
|
|
265
246
|
const [tailValue] = values.slice(-1);
|
|
266
247
|
const restValues = values.slice(0, -1);
|
|
267
248
|
return restValues.every((value) => value < tailValue);
|
|
268
249
|
};
|
|
269
|
-
// return TRUE if the last(tail) element has the greatest value
|
|
270
250
|
const isLastElementMinValue = (values) => {
|
|
271
251
|
const [tailValue] = values.slice(-1);
|
|
272
252
|
const restValues = values.slice(0, -1);
|
|
273
253
|
return restValues.every((value) => value > tailValue);
|
|
274
254
|
};
|
|
275
|
-
// useful for functions which do NOT have an initial change (ex. GRID_CHANGE NONE)
|
|
276
255
|
const getDataChangedInfoStub = (context) => {
|
|
277
256
|
let rowNodeStub;
|
|
278
257
|
if (!context.filterFn) {
|
|
279
258
|
rowNodeStub = context.node ?? context.adaptableApi.gridApi.getFirstRowNode();
|
|
280
259
|
}
|
|
281
260
|
else {
|
|
282
|
-
// if there is a WHERE clause defined, find the first rowNode which satisfies the condition
|
|
283
261
|
context.adaptableApi.internalApi.forAllRowNodesDo((rowNode) => {
|
|
284
262
|
if (!rowNodeStub) {
|
|
285
263
|
if (context.filterFn(rowNode)) {
|
|
@@ -310,13 +288,11 @@ const getDataChangedInfoStub = (context) => {
|
|
|
310
288
|
};
|
|
311
289
|
}
|
|
312
290
|
};
|
|
313
|
-
// returns an observable which fires if the source$ emitted `targetCount` times in the given `timeframeChange$` period
|
|
314
291
|
const getDataChangeCount$ = (dataChangeLog$, timeframeChange$, targetCount) => {
|
|
315
292
|
return dataChangeLog$.pipe(withLatestFrom(timeframeChange$), filter(([_, changeCountWithinTimeframe]) => {
|
|
316
293
|
return targetCount === changeCountWithinTimeframe;
|
|
317
294
|
}), map(([source]) => source));
|
|
318
295
|
};
|
|
319
|
-
// returns an observable which fires if the last source$ emission had the lowest(min) value in the given `timeframeChange$` period
|
|
320
296
|
const getDataChangeMin$ = (dataChangeLog$, timeframeChange$) => {
|
|
321
297
|
return dataChangeLog$.pipe(withLatestFrom(timeframeChange$), filter(([changeLog, values]) => {
|
|
322
298
|
return values.length > 1
|
|
@@ -326,7 +302,6 @@ const getDataChangeMin$ = (dataChangeLog$, timeframeChange$) => {
|
|
|
326
302
|
return changeLog;
|
|
327
303
|
}));
|
|
328
304
|
};
|
|
329
|
-
// returns an observable which fires if the last source$ emission had the highest(max) value in the given `timeframeChange$` period
|
|
330
305
|
const getDataChangeMax$ = (dataChangeLog$, timeframeChange$) => {
|
|
331
306
|
return dataChangeLog$.pipe(withLatestFrom(timeframeChange$), filter(([changeLog, values]) => {
|
|
332
307
|
return values.length > 1
|
|
@@ -336,17 +311,12 @@ const getDataChangeMax$ = (dataChangeLog$, timeframeChange$) => {
|
|
|
336
311
|
return changeLog;
|
|
337
312
|
}));
|
|
338
313
|
};
|
|
339
|
-
// returns an observable which maps a dataChangeLogEntry to the number(count) of changed values in the entire grid
|
|
340
|
-
// the counter is continuously up-to-date in the given timeframe
|
|
341
|
-
// if the given counterLimit is reached, the counter is reset
|
|
342
314
|
const getTrailingGridCountChange$ = (source$, trailingPeriod, counterLimit) => {
|
|
343
315
|
return defer(() => {
|
|
344
|
-
// keep the counter value in an internal intermediary state
|
|
345
316
|
let counter = 0;
|
|
346
317
|
const movingTimeWindow$ = getSlidingTimeframe$(source$, trailingPeriod, (dataChangeLog) => {
|
|
347
318
|
counter++;
|
|
348
319
|
}, (dataChangeLog) => {
|
|
349
|
-
// counter may have been reset during the timeframe, in which case we skip the decrement
|
|
350
320
|
if (counter > 0) {
|
|
351
321
|
counter--;
|
|
352
322
|
}
|
|
@@ -354,19 +324,14 @@ const getTrailingGridCountChange$ = (source$, trailingPeriod, counterLimit) => {
|
|
|
354
324
|
return movingTimeWindow$.pipe(map(() => {
|
|
355
325
|
const gridCounter = counter;
|
|
356
326
|
if (gridCounter === counterLimit) {
|
|
357
|
-
// reset counter
|
|
358
327
|
counter = 0;
|
|
359
328
|
}
|
|
360
329
|
return gridCounter;
|
|
361
330
|
}));
|
|
362
331
|
});
|
|
363
332
|
};
|
|
364
|
-
// returns an observable which maps a dataChangeLogEntry to the number(count) of changed values in the row of the given dataChangeLogEntry
|
|
365
|
-
// the counter is continuously up-to-date in the given timeframe
|
|
366
|
-
// if the given counterLimit is reached, the counter is reset
|
|
367
333
|
const getTrailingRowCountChange$ = (source$, trailingPeriod, counterLimit) => {
|
|
368
334
|
return defer(() => {
|
|
369
|
-
// keep the counter value in an internal intermediary state (distinct per row PK)
|
|
370
335
|
const counterMap = new Map();
|
|
371
336
|
const getCellCounter = (dataChangeLog) => counterMap.get(dataChangeLog.primaryKeyValue) ?? 0;
|
|
372
337
|
const slidingTimeframe$ = getSlidingTimeframe$(source$, trailingPeriod, (dataChangeLog) => {
|
|
@@ -374,7 +339,6 @@ const getTrailingRowCountChange$ = (source$, trailingPeriod, counterLimit) => {
|
|
|
374
339
|
counterMap.set(dataChangeLog.primaryKeyValue, ++currentCounter);
|
|
375
340
|
}, (dataChangeLog) => {
|
|
376
341
|
let currentCounter = getCellCounter(dataChangeLog);
|
|
377
|
-
// counter may have been reset during the timeframe, in which case we skip the decrement
|
|
378
342
|
if (currentCounter > 0) {
|
|
379
343
|
counterMap.set(dataChangeLog.primaryKeyValue, --currentCounter);
|
|
380
344
|
}
|
|
@@ -382,32 +346,25 @@ const getTrailingRowCountChange$ = (source$, trailingPeriod, counterLimit) => {
|
|
|
382
346
|
return slidingTimeframe$.pipe(map((dataChangeLog) => {
|
|
383
347
|
const cellCounter = getCellCounter(dataChangeLog);
|
|
384
348
|
if (cellCounter === counterLimit) {
|
|
385
|
-
// reset counter
|
|
386
349
|
counterMap.set(dataChangeLog.primaryKeyValue, 0);
|
|
387
350
|
}
|
|
388
351
|
return cellCounter;
|
|
389
352
|
}));
|
|
390
353
|
});
|
|
391
354
|
};
|
|
392
|
-
// returns an observable which maps a dataChangeLogEntry to the array of changed values in the entire grid
|
|
393
|
-
// the changed values array is continuously up-to-date in the given timeframe
|
|
394
355
|
const getTrailingGridValueChange$ = (source$, trailingPeriod) => {
|
|
395
356
|
return defer(() => {
|
|
396
|
-
// keep the changed values in an internal intermediary state
|
|
397
357
|
let values = [];
|
|
398
358
|
const doubleInsertionsMap = new WeakMap();
|
|
399
359
|
const slidingTimeframe$ = getSlidingTimeframe$(source$, trailingPeriod, (dataChangeLog) => {
|
|
400
360
|
if (!values.length) {
|
|
401
|
-
// values is empty, so we evaluate both old & new node values
|
|
402
361
|
values.push(getNumericValue(dataChangeLog.oldValue));
|
|
403
|
-
// mark the double insertion, we will have to pop 2 elements
|
|
404
362
|
doubleInsertionsMap.set(dataChangeLog, true);
|
|
405
363
|
}
|
|
406
364
|
values.push(getNumericValue(dataChangeLog.newValue));
|
|
407
365
|
}, (dataChangeLog) => {
|
|
408
366
|
values.shift();
|
|
409
367
|
if (doubleInsertionsMap.get(dataChangeLog)) {
|
|
410
|
-
// the current change inserted both old and new values, so we have to extract 2 elements
|
|
411
368
|
values.shift();
|
|
412
369
|
doubleInsertionsMap.delete(dataChangeLog);
|
|
413
370
|
}
|
|
@@ -415,20 +372,15 @@ const getTrailingGridValueChange$ = (source$, trailingPeriod) => {
|
|
|
415
372
|
return slidingTimeframe$.pipe(map(() => values));
|
|
416
373
|
});
|
|
417
374
|
};
|
|
418
|
-
// returns an observable which maps a dataChangeLogEntry to the array of changed values in the row of the given dataChangeLogEntry
|
|
419
|
-
// the changed values array is continuously up-to-date in the given timeframe
|
|
420
375
|
const getTrailingRowValueChange$ = (source$, trailingPeriod) => {
|
|
421
376
|
return defer(() => {
|
|
422
|
-
// keep the changed values in an internal intermediary state (distinct per row PK)
|
|
423
377
|
const rowValuesMap = new Map();
|
|
424
378
|
const doubleInsertionsMap = new WeakMap();
|
|
425
379
|
const getRowValues = (dataChangeLog) => rowValuesMap.get(dataChangeLog.primaryKeyValue) ?? [];
|
|
426
380
|
const slidingTimeframe$ = getSlidingTimeframe$(source$, trailingPeriod, (dataChangeLog) => {
|
|
427
381
|
let rowValues = getRowValues(dataChangeLog);
|
|
428
382
|
if (!rowValues.length) {
|
|
429
|
-
// values is empty, so we evaluate both old & new node values
|
|
430
383
|
rowValues.push(getNumericValue(dataChangeLog.oldValue));
|
|
431
|
-
// mark the double insertion, we will have to pop 2 elements
|
|
432
384
|
doubleInsertionsMap.set(dataChangeLog, true);
|
|
433
385
|
}
|
|
434
386
|
rowValues.push(getNumericValue(dataChangeLog.newValue));
|
|
@@ -437,7 +389,6 @@ const getTrailingRowValueChange$ = (source$, trailingPeriod) => {
|
|
|
437
389
|
let rowValues = getRowValues(dataChangeLog);
|
|
438
390
|
rowValues.shift();
|
|
439
391
|
if (doubleInsertionsMap.get(dataChangeLog)) {
|
|
440
|
-
// the current change inserted both old and new values, so we have to extract 2 elements
|
|
441
392
|
rowValues.shift();
|
|
442
393
|
doubleInsertionsMap.delete(dataChangeLog);
|
|
443
394
|
}
|
|
@@ -446,20 +397,10 @@ const getTrailingRowValueChange$ = (source$, trailingPeriod) => {
|
|
|
446
397
|
return slidingTimeframe$.pipe(map((dataChangeLog) => getRowValues(dataChangeLog)));
|
|
447
398
|
});
|
|
448
399
|
};
|
|
449
|
-
// return an observable which will emit when the source$ event enters, respectively exits the timeframe
|
|
450
|
-
// it also executes the provided onEnter/onExit handlers
|
|
451
400
|
const getSlidingTimeframe$ = (source$, timeframeDuration, onTimeframeEnter, onTimeframeExit) => {
|
|
452
|
-
return source$.pipe(
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
// 1. it will emit the payload immediately...
|
|
456
|
-
const enter$ = of(dataChangeLog).pipe(
|
|
457
|
-
// ...and execute the provided onPushHandler() callback
|
|
458
|
-
tap((dataChangeLog) => onTimeframeEnter(dataChangeLog)));
|
|
459
|
-
// 2. and after a given 'timeWindowSize' delay it will re-emit the payload...
|
|
460
|
-
const exit$ = of(dataChangeLog).pipe(delay(timeframeDuration),
|
|
461
|
-
// ...and execute the provided onPopHandler() callback
|
|
462
|
-
tap((dataChangeLog) => onTimeframeExit(dataChangeLog)));
|
|
401
|
+
return source$.pipe(mergeMap((dataChangeLog) => {
|
|
402
|
+
const enter$ = of(dataChangeLog).pipe(tap((dataChangeLog) => onTimeframeEnter(dataChangeLog)));
|
|
403
|
+
const exit$ = of(dataChangeLog).pipe(delay(timeframeDuration), tap((dataChangeLog) => onTimeframeExit(dataChangeLog)));
|
|
463
404
|
return of(enter$, exit$).pipe(mergeAll());
|
|
464
405
|
}));
|
|
465
406
|
};
|
|
@@ -480,15 +421,12 @@ const handleGridRowAddedOrRemoved = (args, gridChangeLog$, consumingFunction, co
|
|
|
480
421
|
throw new ExpressionEvaluationError(consumingFunction, 'requires a TIMEFRAME parameter when observing for no changes');
|
|
481
422
|
}
|
|
482
423
|
if (countValue == null && timeframeParameter == null) {
|
|
483
|
-
// default - return all new rows
|
|
484
424
|
return gridChangeLog$;
|
|
485
425
|
}
|
|
486
426
|
if (countValue == null) {
|
|
487
|
-
// default count value of 1
|
|
488
427
|
countValue = 1;
|
|
489
428
|
}
|
|
490
429
|
if (timeframeParameter == null) {
|
|
491
|
-
// default time parameter of max
|
|
492
430
|
timeframeParameter = {
|
|
493
431
|
name: 'TIMEFRAME',
|
|
494
432
|
type: 'config',
|
|
@@ -496,7 +434,6 @@ const handleGridRowAddedOrRemoved = (args, gridChangeLog$, consumingFunction, co
|
|
|
496
434
|
};
|
|
497
435
|
}
|
|
498
436
|
if (countValue === 0) {
|
|
499
|
-
// handle special case when observing NO changes
|
|
500
437
|
const rowDataChangeInfoStub = {
|
|
501
438
|
rowTrigger: consumingFunction === 'ROW_ADDED' ? 'Add' : 'Delete',
|
|
502
439
|
rowNodes: [],
|
|
@@ -504,15 +441,7 @@ const handleGridRowAddedOrRemoved = (args, gridChangeLog$, consumingFunction, co
|
|
|
504
441
|
changedAt: Date.now(),
|
|
505
442
|
...context.adaptableApi.internalApi.buildBaseContext(),
|
|
506
443
|
};
|
|
507
|
-
return gridChangeLog$.pipe(
|
|
508
|
-
// add a synthetic first value to ensure the grid is observed even when there are no changes
|
|
509
|
-
startWith(rowDataChangeInfoStub),
|
|
510
|
-
// wait for the given time
|
|
511
|
-
debounceTime(timeframeParameter.value),
|
|
512
|
-
// completing the observable (ex. alert deletion) will also fire the NONE event
|
|
513
|
-
// takeUntil takes care of this, ignoring any emissions as soon as the source completes
|
|
514
|
-
// (count() result is irrelevant here, the main thing is that it emits a source completion)
|
|
515
|
-
takeUntil(gridChangeLog$.pipe(count())));
|
|
444
|
+
return gridChangeLog$.pipe(startWith(rowDataChangeInfoStub), debounceTime(timeframeParameter.value), takeUntil(gridChangeLog$.pipe(count())));
|
|
516
445
|
}
|
|
517
446
|
const timeframeChange$ = getTrailingGridCountChange$(gridChangeLog$, timeframeParameter.value, countValue);
|
|
518
447
|
return getDataChangeCount$(gridChangeLog$, timeframeChange$, countValue);
|
|
@@ -63,15 +63,6 @@ function initReducers(reducers) {
|
|
|
63
63
|
}
|
|
64
64
|
return result;
|
|
65
65
|
}
|
|
66
|
-
/**
|
|
67
|
-
*
|
|
68
|
-
* This fn mutates the reducerResults array!!!
|
|
69
|
-
*
|
|
70
|
-
* @param data data item
|
|
71
|
-
* @param reducers an array of reducers
|
|
72
|
-
* @param reducerResults the results on which to operate
|
|
73
|
-
*
|
|
74
|
-
*/
|
|
75
66
|
function computeReducersFor(data, reducers, reducerResults, dataIndex) {
|
|
76
67
|
if (!reducers || !Object.keys(reducers).length) {
|
|
77
68
|
return;
|
|
@@ -18,8 +18,6 @@ import StringExtensions from '../Extensions/StringExtensions';
|
|
|
18
18
|
import { getTypedKeys } from '../Extensions/TypeExtensions';
|
|
19
19
|
import { evaluate } from '../../parser/src';
|
|
20
20
|
import { evaluateNode } from '../../parser/src/evaluator';
|
|
21
|
-
// useful for unary operators which expect a list of arguments
|
|
22
|
-
// we extract the provided array elements into a list
|
|
23
21
|
const flattenArguments = (values) => {
|
|
24
22
|
if (!Array.isArray(values)) {
|
|
25
23
|
return values;
|
|
@@ -60,11 +58,9 @@ export const scalarExpressionFunctions = {
|
|
|
60
58
|
if (!column.queryable) {
|
|
61
59
|
throw new ExpressionEvaluationError('COL', `Column name "${columnId}" is not queryable`);
|
|
62
60
|
}
|
|
63
|
-
// see #derived_pivot_cell_style
|
|
64
61
|
if (context.pivotResultColumn) {
|
|
65
62
|
const baseColumnId = context.pivotResultColumn.getColDef()?.pivotValueColumn?.getColId();
|
|
66
63
|
if (baseColumnId === columnId) {
|
|
67
|
-
// we evaluate the pivot result column instead of the base column
|
|
68
64
|
return context.adaptableApi?.gridApi.getNormalisedValueFromRowNode(context.node, context.pivotResultColumn.getColId());
|
|
69
65
|
}
|
|
70
66
|
}
|
|
@@ -103,11 +99,9 @@ export const scalarExpressionFunctions = {
|
|
|
103
99
|
if (!column.queryable) {
|
|
104
100
|
throw new ExpressionEvaluationError('$SCOPE', `Column name "${scopeColumnId}" is not queryable`);
|
|
105
101
|
}
|
|
106
|
-
// see #derived_pivot_cell_style
|
|
107
102
|
if (context.pivotResultColumn) {
|
|
108
103
|
const baseColumnId = context.pivotResultColumn.getColDef()?.pivotValueColumn?.getColId();
|
|
109
104
|
if (baseColumnId === scopeColumnId) {
|
|
110
|
-
// we evaluate the pivot result column instead of the base column
|
|
111
105
|
return context.adaptableApi?.gridApi.getNormalisedValueFromRowNode(context.node, context.pivotResultColumn.getColId());
|
|
112
106
|
}
|
|
113
107
|
}
|
|
@@ -129,12 +123,10 @@ export const scalarExpressionFunctions = {
|
|
|
129
123
|
if (!namedQuery) {
|
|
130
124
|
throw new ExpressionEvaluationError('QUERY', `Named Query with name ${namedQueryName} not found!`);
|
|
131
125
|
}
|
|
132
|
-
// add query to call stack
|
|
133
126
|
if (!context.namedQueryCallStack) {
|
|
134
127
|
context.namedQueryCallStack = [];
|
|
135
128
|
}
|
|
136
129
|
context.namedQueryCallStack.push(namedQueryName);
|
|
137
|
-
//check if this Named Query is not already evaluated, in which case this would lead to an infinite evaluation cycle
|
|
138
130
|
const firstIndex = context.namedQueryCallStack.indexOf(namedQueryName);
|
|
139
131
|
const lastIndex = context.namedQueryCallStack.lastIndexOf(namedQueryName);
|
|
140
132
|
if (firstIndex !== lastIndex) {
|
|
@@ -142,7 +134,6 @@ export const scalarExpressionFunctions = {
|
|
|
142
134
|
throw new ExpressionEvaluationError(`${namedQueryName}`, ` contains a circular reference: ${cycle.join(' -> ')}`);
|
|
143
135
|
}
|
|
144
136
|
const queryEvaluationResult = evaluate(namedQuery.BooleanExpression, context);
|
|
145
|
-
// remove query name from callstack
|
|
146
137
|
context.namedQueryCallStack?.pop();
|
|
147
138
|
return queryEvaluationResult;
|
|
148
139
|
},
|
|
@@ -273,7 +264,6 @@ export const scalarExpressionFunctions = {
|
|
|
273
264
|
handler(args) {
|
|
274
265
|
const sanitizedArguments = sanitizeArguments(flattenArguments(args));
|
|
275
266
|
if (args.length && !sanitizedArguments.length) {
|
|
276
|
-
// expression is syntactically valid, but operates with incompatible values
|
|
277
267
|
return;
|
|
278
268
|
}
|
|
279
269
|
return sanitizedArguments.reduce((a, b) => a + b) / sanitizedArguments.length;
|
|
@@ -288,7 +278,6 @@ export const scalarExpressionFunctions = {
|
|
|
288
278
|
handler(args) {
|
|
289
279
|
const sanitizedArguments = sanitizeArguments(args, true);
|
|
290
280
|
if (args.length && !sanitizedArguments.length) {
|
|
291
|
-
// expression is syntactically valid, but operates with incompatible values
|
|
292
281
|
return;
|
|
293
282
|
}
|
|
294
283
|
return sanitizedArguments.reduce((a, b) => a + b);
|
|
@@ -304,7 +293,6 @@ export const scalarExpressionFunctions = {
|
|
|
304
293
|
handler(args) {
|
|
305
294
|
const sanitizedArguments = sanitizeArguments(args);
|
|
306
295
|
if (args.length && !sanitizedArguments.length) {
|
|
307
|
-
// expression is syntactically valid, but operates with incompatible values
|
|
308
296
|
return;
|
|
309
297
|
}
|
|
310
298
|
return sanitizedArguments.reduce((a, b) => a - b);
|
|
@@ -363,9 +351,9 @@ export const scalarExpressionFunctions = {
|
|
|
363
351
|
CASE: {
|
|
364
352
|
handler([expressionValueNode, whenThenListNodes, defaultValueNode], context) {
|
|
365
353
|
const caseExpressionValue = expressionValueNode != undefined
|
|
366
|
-
?
|
|
354
|
+
?
|
|
367
355
|
evaluateExpressionNode(expressionValueNode, context)
|
|
368
|
-
:
|
|
356
|
+
:
|
|
369
357
|
true;
|
|
370
358
|
const matchingWhen = whenThenListNodes.find((whenThenStatement) => {
|
|
371
359
|
const whenValue = evaluateExpressionNode(whenThenStatement.WHEN, context);
|
|
@@ -734,10 +722,8 @@ export const scalarExpressionFunctions = {
|
|
|
734
722
|
}
|
|
735
723
|
const columnArg = args[0];
|
|
736
724
|
if (!columnArg) {
|
|
737
|
-
// if no column is provided, we check if any value has changed
|
|
738
725
|
return context.dataChangedEvent.oldValue !== context.dataChangedEvent.newValue;
|
|
739
726
|
}
|
|
740
|
-
// only COL argument is supported
|
|
741
727
|
if (columnArg.type !== 'COL' && columnArg.type !== '$SCOPE') {
|
|
742
728
|
throw new ExpressionEvaluationError('ANY_CHANGE', 'accepts only a column reference or scope as an argument');
|
|
743
729
|
}
|
|
@@ -89,7 +89,6 @@ export function hasItemsOfCount(arrayToCheck, numberOfItems) {
|
|
|
89
89
|
export function moveArray(array, from, to) {
|
|
90
90
|
array.splice(to, 0, array.splice(from, 1)[0]);
|
|
91
91
|
}
|
|
92
|
-
//This deliberately only checks contents equality and not positional so [1, 2, 3]== [1, 3, 2]
|
|
93
92
|
export function areArraysEqual(arr1, arr2) {
|
|
94
93
|
if (IsNullOrEmpty(arr1) && IsNotNullOrEmpty(arr2)) {
|
|
95
94
|
return false;
|
|
@@ -114,29 +113,17 @@ export function areArraysEqualWithOrder(arr1, arr2) {
|
|
|
114
113
|
}
|
|
115
114
|
return arr1.every((x, index) => arr2.indexOf(x) == index);
|
|
116
115
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Checks if two arrays contain the same elements (order-independent).
|
|
119
|
-
*
|
|
120
|
-
* @param arr1 First array to compare
|
|
121
|
-
* @param arr2 Second array to compare
|
|
122
|
-
* @param equalityFn Optional function to determine if two elements are equal
|
|
123
|
-
* @returns True if arrays contain the same elements, false otherwise
|
|
124
|
-
*/
|
|
125
116
|
export function areArraysEqualWithCustomComparator(arr1, arr2, equalityFn) {
|
|
126
|
-
// Handle null/undefined cases
|
|
127
117
|
if (!arr1 && !arr2) {
|
|
128
118
|
return true;
|
|
129
119
|
}
|
|
130
120
|
if (!arr1 || !arr2) {
|
|
131
121
|
return false;
|
|
132
122
|
}
|
|
133
|
-
// Check length
|
|
134
123
|
if (arr1.length !== arr2.length) {
|
|
135
124
|
return false;
|
|
136
125
|
}
|
|
137
|
-
// Use default equality comparison if no custom function provided
|
|
138
126
|
const compareElements = equalityFn || ((a, b) => a === b);
|
|
139
|
-
// For each element in arr1, find a matching element in arr2
|
|
140
127
|
const arr2Copy = [...arr2];
|
|
141
128
|
for (let i = 0; i < arr1.length; i++) {
|
|
142
129
|
const element = arr1[i];
|
|
@@ -144,45 +131,34 @@ export function areArraysEqualWithCustomComparator(arr1, arr2, equalityFn) {
|
|
|
144
131
|
if (matchIndex === -1) {
|
|
145
132
|
return false;
|
|
146
133
|
}
|
|
147
|
-
// Remove the matched element to prevent duplicate matches
|
|
148
134
|
arr2Copy.splice(matchIndex, 1);
|
|
149
135
|
}
|
|
150
136
|
return true;
|
|
151
137
|
}
|
|
152
138
|
export function areArraysEqualWithOrderAndProperties(value, other) {
|
|
153
139
|
const type = Object.prototype.toString.call(value);
|
|
154
|
-
// If the two objects are not the same type, return false
|
|
155
140
|
if (type !== Object.prototype.toString.call(other)) {
|
|
156
141
|
return false;
|
|
157
142
|
}
|
|
158
|
-
// If items are not an object or array, return false
|
|
159
143
|
if (['[object Array]', '[object Object]'].indexOf(type) < 0) {
|
|
160
144
|
return false;
|
|
161
145
|
}
|
|
162
|
-
// Compare the length of the length of the two items
|
|
163
146
|
const valueLen = type === '[object Array]' ? value.length : Object.keys(value).length;
|
|
164
147
|
const otherLen = type === '[object Array]' ? other.length : Object.keys(other).length;
|
|
165
148
|
if (valueLen !== otherLen) {
|
|
166
149
|
return false;
|
|
167
150
|
}
|
|
168
|
-
// Compare two items
|
|
169
151
|
const compare = function (item1, item2) {
|
|
170
|
-
// Get the object type
|
|
171
152
|
const itemType = Object.prototype.toString.call(item1);
|
|
172
|
-
// If an object or array, compare recursively
|
|
173
153
|
if (['[object Array]', '[object Object]'].indexOf(itemType) >= 0) {
|
|
174
154
|
if (!areArraysEqualWithOrderAndProperties(item1, item2)) {
|
|
175
155
|
return false;
|
|
176
156
|
}
|
|
177
157
|
}
|
|
178
|
-
// Otherwise, do a simple comparison
|
|
179
158
|
else {
|
|
180
|
-
// If the two items are not the same type, return false
|
|
181
159
|
if (itemType !== Object.prototype.toString.call(item2)) {
|
|
182
160
|
return false;
|
|
183
161
|
}
|
|
184
|
-
// Else if it's a function, convert to a string and compare
|
|
185
|
-
// Otherwise, just compare
|
|
186
162
|
if (itemType === '[object Function]') {
|
|
187
163
|
if (item1.toString() !== item2.toString()) {
|
|
188
164
|
return false;
|
|
@@ -195,7 +171,6 @@ export function areArraysEqualWithOrderAndProperties(value, other) {
|
|
|
195
171
|
}
|
|
196
172
|
}
|
|
197
173
|
};
|
|
198
|
-
// Compare properties
|
|
199
174
|
if (type === '[object Array]') {
|
|
200
175
|
for (let i = 0; i < valueLen; i++) {
|
|
201
176
|
if (compare(value[i], other[i]) === false) {
|
|
@@ -212,7 +187,6 @@ export function areArraysEqualWithOrderAndProperties(value, other) {
|
|
|
212
187
|
}
|
|
213
188
|
}
|
|
214
189
|
}
|
|
215
|
-
// If nothing failed, return true
|
|
216
190
|
return true;
|
|
217
191
|
}
|
|
218
192
|
export function sortArrayWithProperty(sortOrder, values, sortProperty) {
|
|
@@ -308,7 +282,6 @@ export function SumArray(array) {
|
|
|
308
282
|
export function reorderArray(array, startIndex, endIndex) {
|
|
309
283
|
const result = [...array];
|
|
310
284
|
if (startIndex > array.length - 1) {
|
|
311
|
-
// not much that we can do if the dragged item is out of bounds...
|
|
312
285
|
return result;
|
|
313
286
|
}
|
|
314
287
|
if (endIndex > array.length - 1) {
|
|
@@ -318,15 +291,7 @@ export function reorderArray(array, startIndex, endIndex) {
|
|
|
318
291
|
result.splice(endIndex, 0, removed);
|
|
319
292
|
return result;
|
|
320
293
|
}
|
|
321
|
-
export function sortArrayWithOrder(array, order,
|
|
322
|
-
/**
|
|
323
|
-
*
|
|
324
|
-
* The array can contain items which are not listed in the order array.
|
|
325
|
-
* So sortUnorderedItems decides whether to leave these items untouched
|
|
326
|
-
* in the current order in which they are in the array (sortUnorderedItems: false)
|
|
327
|
-
* or to sort them using normal comparison rules
|
|
328
|
-
*/
|
|
329
|
-
{ sortUnorderedItems }) {
|
|
294
|
+
export function sortArrayWithOrder(array, order, { sortUnorderedItems }) {
|
|
330
295
|
const itemsToIndex = array.reduce((acc, x, i) => {
|
|
331
296
|
acc.set(x, i);
|
|
332
297
|
return acc;
|
|
@@ -344,10 +309,8 @@ export function sortArrayWithOrder(array, order,
|
|
|
344
309
|
const indexInOrderSecondElement = orderContainsSecondElement
|
|
345
310
|
? orderItemsToIndex.get(valueB)
|
|
346
311
|
: -1;
|
|
347
|
-
//if none of the element are in the order list we just return normal compare
|
|
348
312
|
if (!orderContainsFirstElement && !orderContainsSecondElement) {
|
|
349
313
|
if (!sortUnorderedItems) {
|
|
350
|
-
// keep the original order
|
|
351
314
|
return itemsToIndex.get(valueA) - itemsToIndex.get(valueB);
|
|
352
315
|
}
|
|
353
316
|
if (valueA == valueB) {
|
|
@@ -355,24 +318,16 @@ export function sortArrayWithOrder(array, order,
|
|
|
355
318
|
}
|
|
356
319
|
return valueA < valueB ? -1 : 1;
|
|
357
320
|
}
|
|
358
|
-
//if first item not in the list make sure we put it after the second item
|
|
359
321
|
if (!orderContainsFirstElement) {
|
|
360
322
|
return 1;
|
|
361
323
|
}
|
|
362
|
-
//if second item not in the list make sure we put it after the first item
|
|
363
324
|
if (!orderContainsSecondElement) {
|
|
364
325
|
return -1;
|
|
365
326
|
}
|
|
366
|
-
//return the comparison from the list if the two items are in the list
|
|
367
327
|
return indexInOrderOfFirstElement - indexInOrderSecondElement;
|
|
368
328
|
}
|
|
369
329
|
return [].concat(array).sort(compareItemsOfCustomSort);
|
|
370
330
|
}
|
|
371
|
-
/**
|
|
372
|
-
* Creates an array of elements split into groups the length of `size`.
|
|
373
|
-
* If `array` can't be split evenly, the final chunk will be the remaining elements.
|
|
374
|
-
* Drop-in replacement for lodash/chunk.
|
|
375
|
-
*/
|
|
376
331
|
export function chunk(array, size = 1) {
|
|
377
332
|
const length = array.length;
|
|
378
333
|
if (!length || !(size >= 1)) {
|
|
@@ -385,32 +340,15 @@ export function chunk(array, size = 1) {
|
|
|
385
340
|
}
|
|
386
341
|
return result;
|
|
387
342
|
}
|
|
388
|
-
/**
|
|
389
|
-
* Flattens array a single level deep.
|
|
390
|
-
* Drop-in replacement for lodash/flatten.
|
|
391
|
-
*/
|
|
392
343
|
export function flatten(array) {
|
|
393
344
|
return array.flat();
|
|
394
345
|
}
|
|
395
|
-
/**
|
|
396
|
-
* Recursively flattens array.
|
|
397
|
-
* Drop-in replacement for lodash/flattenDeep.
|
|
398
|
-
*/
|
|
399
346
|
export function flattenDeep(array) {
|
|
400
347
|
return array.flat(Infinity);
|
|
401
348
|
}
|
|
402
|
-
/**
|
|
403
|
-
* Creates a duplicate-free version of an array, using SameValueZero for equality
|
|
404
|
-
* comparisons, in which only the first occurrence of each element is kept.
|
|
405
|
-
* Drop-in replacement for lodash/uniq.
|
|
406
|
-
*/
|
|
407
349
|
export function uniq(array) {
|
|
408
350
|
return [...new Set(array)];
|
|
409
351
|
}
|
|
410
|
-
/**
|
|
411
|
-
* Checks if `value` is classified as an Array object.
|
|
412
|
-
* Drop-in replacement for lodash/isArray.
|
|
413
|
-
*/
|
|
414
352
|
export const isArray = Array.isArray;
|
|
415
353
|
export const ArrayExtensions = {
|
|
416
354
|
GetLength,
|
|
@@ -18,14 +18,6 @@ export function wrapInParentheses(numberToWrap) {
|
|
|
18
18
|
return ' (' + numberToWrap + ')';
|
|
19
19
|
}
|
|
20
20
|
export function timesBy100(value) {
|
|
21
|
-
// the simple solution does not work
|
|
22
|
-
// return value * 100;
|
|
23
|
-
// needed because 0.12676 * 100 = 12.676000000000002
|
|
24
|
-
// but we dont want that to happen
|
|
25
|
-
// this solution does not handle -0 correctly
|
|
26
|
-
// also 1267.6 * 100 is 126759.99999999999
|
|
27
|
-
// which is not what we want
|
|
28
|
-
// return parseFloat((value * 100).toFixed(12));
|
|
29
21
|
if (isNaN(value) || !value) {
|
|
30
22
|
return value;
|
|
31
23
|
}
|
|
@@ -41,12 +33,6 @@ export function timesBy100(value) {
|
|
|
41
33
|
return Number(num.join(''));
|
|
42
34
|
}
|
|
43
35
|
export function divideBy100(value) {
|
|
44
|
-
// the simple solution does not work
|
|
45
|
-
// return value / 100;
|
|
46
|
-
// needed because 4012.3456/100 = 40.123456000000004
|
|
47
|
-
// but we dont want that to happen
|
|
48
|
-
// this solution does not handle -0 correctly
|
|
49
|
-
// return parseFloat((value / 100).toFixed(12));
|
|
50
36
|
if (isNaN(value) || !value) {
|
|
51
37
|
return value;
|
|
52
38
|
}
|
|
@@ -77,10 +63,6 @@ export function avoidJavascriptPrecisionIssues(value) {
|
|
|
77
63
|
}
|
|
78
64
|
return newValue;
|
|
79
65
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Clamps `number` within the inclusive `lower` and `upper` bounds.
|
|
82
|
-
* Drop-in replacement for lodash/clamp.
|
|
83
|
-
*/
|
|
84
66
|
export function clamp(value, lower, upper) {
|
|
85
67
|
return Math.min(Math.max(value, lower), upper);
|
|
86
68
|
}
|
|
@@ -105,10 +87,6 @@ const _reTrimEnd = /\s+$/;
|
|
|
105
87
|
const _reIsBinary = /^0b[01]+$/i;
|
|
106
88
|
const _reIsOctal = /^0o[0-7]+$/i;
|
|
107
89
|
const _reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
|
|
108
|
-
/**
|
|
109
|
-
* Converts value to a number.
|
|
110
|
-
* Drop-in replacement for lodash/toNumber.
|
|
111
|
-
*/
|
|
112
90
|
export function toNumber(value) {
|
|
113
91
|
if (typeof value === 'number') {
|
|
114
92
|
return value;
|
|
@@ -138,11 +116,6 @@ export function toNumber(value) {
|
|
|
138
116
|
const other = typeof value.valueOf === 'function' ? value.valueOf() : value;
|
|
139
117
|
return +other;
|
|
140
118
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Converts string to an integer of the specified radix.
|
|
143
|
-
* If radix is undefined or 0, a radix of 10 is used (unlike native parseInt which auto-detects).
|
|
144
|
-
* Drop-in replacement for lodash/parseInt.
|
|
145
|
-
*/
|
|
146
119
|
export function parseIntFn(string, radix) {
|
|
147
120
|
const str = typeof string === 'string' ? string.trim() : String(string);
|
|
148
121
|
return globalThis.parseInt(str, radix || 10);
|