@dhis2/analytics 28.0.3 → 28.0.4
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/build/cjs/__demo__/DataDimension.stories.js +1 -2
- package/build/cjs/__demo__/Filter.stories.js +1 -2
- package/build/cjs/__demo__/FixedPeriodSelect.stories.js +1 -2
- package/build/cjs/__demo__/OrgUnitDimension.stories.js +1 -2
- package/build/cjs/__demo__/PivotTable.stories.js +166 -224
- package/build/cjs/__demo__/ScatterPlotPdfExport.stories.js +1 -2
- package/build/cjs/__demo__/SingleValue.stories.js +1 -2
- package/build/cjs/__demo__/Toolbar.stories.js +1 -2
- package/build/cjs/api/__tests__/dimensions.spec.js +1 -2
- package/build/cjs/api/analytics/Analytics.js +8 -9
- package/build/cjs/api/analytics/AnalyticsBase.js +58 -77
- package/build/cjs/api/analytics/AnalyticsRequest.js +1 -2
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +18 -21
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -38
- package/build/cjs/api/analytics/AnalyticsResponseHeader.js +5 -7
- package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +9 -12
- package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +8 -2
- package/build/cjs/api/analytics/utils.js +11 -17
- package/build/cjs/api/dimensions.js +119 -148
- package/build/cjs/api/expression.js +39 -60
- package/build/cjs/api/organisationUnits.js +23 -35
- package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +12 -20
- package/build/cjs/components/CachedDataQueryProvider.js +7 -9
- package/build/cjs/components/DashboardPluginWrapper/DashboardPluginWrapper.js +18 -22
- package/build/cjs/components/DataDimension/Calculation/CalculationModal.js +44 -61
- package/build/cjs/components/DataDimension/Calculation/DataElementOption.js +5 -6
- package/build/cjs/components/DataDimension/Calculation/DataElementSelector.js +29 -38
- package/build/cjs/components/DataDimension/Calculation/DndContext.js +29 -37
- package/build/cjs/components/DataDimension/Calculation/DraggingItem.js +5 -6
- package/build/cjs/components/DataDimension/Calculation/DropZone.js +4 -5
- package/build/cjs/components/DataDimension/Calculation/FormulaField.js +29 -32
- package/build/cjs/components/DataDimension/Calculation/FormulaItem.js +14 -16
- package/build/cjs/components/DataDimension/Calculation/MathOperatorSelector.js +23 -29
- package/build/cjs/components/DataDimension/Calculation/Operator.js +6 -7
- package/build/cjs/components/DataDimension/DataDimension.js +20 -32
- package/build/cjs/components/DataDimension/Info/CalculationInfo.js +14 -22
- package/build/cjs/components/DataDimension/Info/DataElementInfo.js +23 -36
- package/build/cjs/components/DataDimension/Info/DataElementOperandInfo.js +30 -44
- package/build/cjs/components/DataDimension/Info/DataSetInfo.js +26 -39
- package/build/cjs/components/DataDimension/Info/EventDataItemInfo.js +21 -34
- package/build/cjs/components/DataDimension/Info/IndicatorInfo.js +21 -32
- package/build/cjs/components/DataDimension/Info/InfoPopover.js +6 -7
- package/build/cjs/components/DataDimension/Info/InfoTable.js +39 -52
- package/build/cjs/components/DataDimension/Info/OptionInfo.js +13 -20
- package/build/cjs/components/DataDimension/Info/ProgramIndicatorInfo.js +46 -58
- package/build/cjs/components/DataDimension/ItemOptionsSelector/ItemOptionsSelector.js +22 -32
- package/build/cjs/components/DataDimension/ItemSelector/DataTypeSelector.js +6 -7
- package/build/cjs/components/DataDimension/ItemSelector/DetailSelector.js +5 -6
- package/build/cjs/components/DataDimension/ItemSelector/GroupSelector.js +10 -12
- package/build/cjs/components/DataDimension/ItemSelector/ItemSelector.js +86 -104
- package/build/cjs/components/DataDimension/ItemSelector/MetricSelector.js +5 -6
- package/build/cjs/components/DataDimension/SourceEmptyPlaceholder.js +10 -13
- package/build/cjs/components/DataDimension/TransferOption.js +35 -39
- package/build/cjs/components/DimensionMenu.js +13 -14
- package/build/cjs/components/DimensionsPanel/DimensionsPanel.js +8 -9
- package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +12 -13
- package/build/cjs/components/DimensionsPanel/List/DimensionList.js +9 -10
- package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +8 -11
- package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +10 -13
- package/build/cjs/components/DynamicDimension/DynamicDimension.js +9 -13
- package/build/cjs/components/DynamicDimension/ItemSelector.js +25 -38
- package/build/cjs/components/FileMenu/DeleteDialog.js +11 -16
- package/build/cjs/components/FileMenu/FileMenu.js +19 -30
- package/build/cjs/components/FileMenu/GetLinkDialog.js +7 -7
- package/build/cjs/components/FileMenu/RenameDialog.js +13 -21
- package/build/cjs/components/FileMenu/SaveAsDialog.js +13 -21
- package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +6 -2
- package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +7 -8
- package/build/cjs/components/FileMenu/utils.js +10 -12
- package/build/cjs/components/Filter/Filter.js +21 -27
- package/build/cjs/components/Interpretations/InterpretationModal/Comment.js +8 -10
- package/build/cjs/components/Interpretations/InterpretationModal/CommentAddForm.js +10 -15
- package/build/cjs/components/Interpretations/InterpretationModal/CommentDeleteButton.js +10 -15
- package/build/cjs/components/Interpretations/InterpretationModal/CommentUpdateForm.js +12 -17
- package/build/cjs/components/Interpretations/InterpretationModal/InterpretationModal.js +19 -25
- package/build/cjs/components/Interpretations/InterpretationModal/InterpretationThread.js +12 -14
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationForm.js +12 -17
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationList.js +10 -11
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +23 -33
- package/build/cjs/components/Interpretations/common/Interpretation/Interpretation.js +13 -15
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationDeleteButton.js +7 -11
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationSharingLink.js +5 -7
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +15 -23
- package/build/cjs/components/Interpretations/common/Interpretation/useLike.js +5 -6
- package/build/cjs/components/Interpretations/common/Message/Message.js +6 -7
- package/build/cjs/components/Interpretations/common/Message/MessageButtonStrip.js +8 -11
- package/build/cjs/components/Interpretations/common/Message/MessageEditorContainer.js +18 -21
- package/build/cjs/components/Interpretations/common/Message/MessageIconButton.js +34 -40
- package/build/cjs/components/Interpretations/common/Message/MessageInput.js +1 -2
- package/build/cjs/components/Interpretations/common/Message/MessageStatsBar.js +8 -11
- package/build/cjs/components/LegendKey/LegendKey.js +3 -4
- package/build/cjs/components/OfflineTooltip.js +18 -26
- package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +20 -26
- package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +23 -26
- package/build/cjs/components/OpenFileDialog/DateField.js +3 -4
- package/build/cjs/components/OpenFileDialog/FileList.js +19 -22
- package/build/cjs/components/OpenFileDialog/NameFilter.js +15 -21
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +36 -45
- package/build/cjs/components/OpenFileDialog/PaginationControls.js +22 -28
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +28 -37
- package/build/cjs/components/Options/VisualizationOptions.js +35 -46
- package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +38 -60
- package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +16 -25
- package/build/cjs/components/PeriodDimension/FixedPeriodSelect.js +15 -21
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +9 -12
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +49 -63
- package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +24 -30
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -1
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -1
- package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +6 -7
- package/build/cjs/components/PeriodDimension/utils/index.js +1 -5
- package/build/cjs/components/PivotTable/PivotTable.js +8 -10
- package/build/cjs/components/PivotTable/PivotTableBody.js +20 -29
- package/build/cjs/components/PivotTable/PivotTableCell.js +8 -12
- package/build/cjs/components/PivotTable/PivotTableClippedAxis.js +14 -17
- package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +7 -8
- package/build/cjs/components/PivotTable/PivotTableColumnHeaders.js +22 -29
- package/build/cjs/components/PivotTable/PivotTableContainer.js +5 -6
- package/build/cjs/components/PivotTable/PivotTableDimensionLabelCell.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableEmptyCell.js +3 -4
- package/build/cjs/components/PivotTable/PivotTableEmptyRow.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableEngineContext.js +5 -7
- package/build/cjs/components/PivotTable/PivotTableHead.js +13 -16
- package/build/cjs/components/PivotTable/PivotTableHeaderCell.js +8 -9
- package/build/cjs/components/PivotTable/PivotTableRow.js +20 -27
- package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +5 -6
- package/build/cjs/components/PivotTable/PivotTableSortIcon.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableTitleRow.js +19 -24
- package/build/cjs/components/PivotTable/PivotTableTitleRows.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableValueCell.js +6 -8
- package/build/cjs/components/RichText/Editor/Editor.js +70 -85
- package/build/cjs/components/RichText/Parser/Parser.js +5 -10
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuBar.js +20 -24
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +8 -13
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuList.js +9 -17
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +11 -16
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +4 -5
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +13 -11
- package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +15 -21
- package/build/cjs/components/Toolbar/Toolbar.js +10 -16
- package/build/cjs/components/Toolbar/ToolbarSidebar.js +12 -18
- package/build/cjs/components/Toolbar/UpdateButton.js +18 -24
- package/build/cjs/components/TransferOption.js +14 -15
- package/build/cjs/components/TranslationDialog/TranslationModal/LocalesSelect.js +19 -27
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationForm.js +17 -25
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +7 -9
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModalActions.js +18 -27
- package/build/cjs/components/TranslationDialog/TranslationModal/useTranslationsResults.js +3 -4
- package/build/cjs/components/UserMention/UserList.js +6 -7
- package/build/cjs/components/UserMention/UserMentionWrapper.js +13 -20
- package/build/cjs/components/UserMention/useUserSearchResults.js +12 -16
- package/build/cjs/components/VisTypeIcon.js +5 -6
- package/build/cjs/index.js +38 -39
- package/build/cjs/locales/ar_IQ/translations.json +20 -11
- package/build/cjs/locales/cs/translations.json +2 -0
- package/build/cjs/locales/en/translations.json +1 -0
- package/build/cjs/locales/es/translations.json +2 -0
- package/build/cjs/locales/fr/translations.json +2 -0
- package/build/cjs/locales/id/translations.json +20 -11
- package/build/cjs/locales/index.js +62 -62
- package/build/cjs/locales/lo/translations.json +2 -0
- package/build/cjs/locales/nb/translations.json +2 -0
- package/build/cjs/locales/prs/translations.json +2 -0
- package/build/cjs/locales/ps/translations.json +2 -0
- package/build/cjs/locales/pt/translations.json +2 -0
- package/build/cjs/locales/pt_BR/translations.json +2 -0
- package/build/cjs/locales/ru/translations.json +2 -0
- package/build/cjs/locales/si/translations.json +20 -11
- package/build/cjs/locales/sv/translations.json +20 -11
- package/build/cjs/locales/tet/translations.json +20 -11
- package/build/cjs/locales/tg/translations.json +2 -0
- package/build/cjs/locales/uk/translations.json +2 -0
- package/build/cjs/locales/ur/translations.json +2 -0
- package/build/cjs/locales/uz_UZ_Cyrl/translations.json +2 -0
- package/build/cjs/locales/uz_UZ_Latn/translations.json +4 -2
- package/build/cjs/locales/vi/translations.json +2 -0
- package/build/cjs/locales/zh/translations.json +2 -0
- package/build/cjs/locales/zh_CN/translations.json +17 -15
- package/build/cjs/modules/__tests__/expressions.spec.js +4 -5
- package/build/cjs/modules/__tests__/isNumeric.spec.js +33 -0
- package/build/cjs/modules/dimensionListItem.js +4 -5
- package/build/cjs/modules/expressions.js +3 -9
- package/build/cjs/modules/getPWAInstallationStatus.js +7 -9
- package/build/cjs/modules/layout/dimensionCreate.js +1 -3
- package/build/cjs/modules/layout/dimensionIsValid.js +3 -4
- package/build/cjs/modules/legends.js +5 -6
- package/build/cjs/modules/outliers/index.js +5 -6
- package/build/cjs/modules/outliers/iqr.js +4 -6
- package/build/cjs/modules/outliers/modZScore.js +6 -14
- package/build/cjs/modules/outliers/zScore.js +3 -4
- package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +12 -16
- package/build/cjs/modules/pivotTable/PivotTableEngine.js +48 -59
- package/build/cjs/modules/pivotTable/clipAxis.js +7 -8
- package/build/cjs/modules/pivotTable/clipPartitionedAxis.js +9 -10
- package/build/cjs/modules/pivotTable/getHeaderForDisplay.js +8 -9
- package/build/cjs/modules/pivotTable/measureText.js +7 -9
- package/build/cjs/modules/pivotTable/useParentSize.js +1 -2
- package/build/cjs/modules/pivotTable/useScrollPosition.js +1 -2
- package/build/cjs/modules/pivotTable/useTableClipping.js +6 -7
- package/build/cjs/modules/relativeItems/index.js +1 -4
- package/build/cjs/modules/renderValue.js +1 -2
- package/build/cjs/modules/utils.js +11 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +3 -8
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +7 -10
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customAxes.js +2 -5
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +7 -8
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +1 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +6 -7
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getFormatter.js +2 -3
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getSteps.js +2 -3
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +3 -4
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +8 -10
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/legend.js +6 -7
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +22 -26
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +8 -9
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +18 -20
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/pie.js +1 -4
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +1 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +1 -3
- package/build/cjs/visualizations/config/index.js +11 -12
- package/build/cjs/visualizations/config/validators/dhis/index.js +3 -4
- package/build/cjs/visualizations/index.js +1 -4
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +7 -8
- package/build/cjs/visualizations/store/index.js +15 -17
- package/build/cjs/visualizations/store/validators/dhis/index.js +5 -6
- package/build/cjs/visualizations/util/getFilterText.js +3 -6
- package/build/cjs/visualizations/util/shouldUseContrastColor.js +1 -2
- package/build/es/__demo__/PivotTable.stories.js +165 -222
- package/build/es/api/__tests__/dimensions.spec.js +1 -2
- package/build/es/api/analytics/Analytics.js +8 -9
- package/build/es/api/analytics/AnalyticsBase.js +58 -77
- package/build/es/api/analytics/AnalyticsRequest.js +1 -2
- package/build/es/api/analytics/AnalyticsRequestBase.js +18 -21
- package/build/es/api/analytics/AnalyticsRequestPropertiesMixin.js +19 -38
- package/build/es/api/analytics/AnalyticsResponseHeader.js +5 -7
- package/build/es/api/analytics/__tests__/AnalyticsBase.spec.js +8 -10
- package/build/es/api/analytics/__tests__/AnalyticsRequest.spec.js +8 -2
- package/build/es/api/analytics/utils.js +11 -17
- package/build/es/api/dimensions.js +119 -148
- package/build/es/api/expression.js +39 -60
- package/build/es/api/organisationUnits.js +23 -35
- package/build/es/components/AboutAOUnit/AboutAOUnit.js +11 -18
- package/build/es/components/CachedDataQueryProvider.js +6 -7
- package/build/es/components/DashboardPluginWrapper/DashboardPluginWrapper.js +17 -20
- package/build/es/components/DataDimension/Calculation/CalculationModal.js +43 -59
- package/build/es/components/DataDimension/Calculation/DataElementOption.js +5 -6
- package/build/es/components/DataDimension/Calculation/DataElementSelector.js +28 -36
- package/build/es/components/DataDimension/Calculation/DndContext.js +28 -35
- package/build/es/components/DataDimension/Calculation/DraggingItem.js +5 -6
- package/build/es/components/DataDimension/Calculation/DropZone.js +4 -5
- package/build/es/components/DataDimension/Calculation/FormulaField.js +29 -32
- package/build/es/components/DataDimension/Calculation/FormulaItem.js +13 -14
- package/build/es/components/DataDimension/Calculation/MathOperatorSelector.js +23 -29
- package/build/es/components/DataDimension/Calculation/Operator.js +6 -7
- package/build/es/components/DataDimension/DataDimension.js +19 -30
- package/build/es/components/DataDimension/Info/CalculationInfo.js +13 -20
- package/build/es/components/DataDimension/Info/DataElementInfo.js +23 -36
- package/build/es/components/DataDimension/Info/DataElementOperandInfo.js +29 -42
- package/build/es/components/DataDimension/Info/DataSetInfo.js +26 -39
- package/build/es/components/DataDimension/Info/EventDataItemInfo.js +21 -34
- package/build/es/components/DataDimension/Info/IndicatorInfo.js +20 -30
- package/build/es/components/DataDimension/Info/InfoPopover.js +6 -7
- package/build/es/components/DataDimension/Info/InfoTable.js +39 -52
- package/build/es/components/DataDimension/Info/OptionInfo.js +13 -20
- package/build/es/components/DataDimension/Info/ProgramIndicatorInfo.js +45 -56
- package/build/es/components/DataDimension/ItemOptionsSelector/ItemOptionsSelector.js +21 -30
- package/build/es/components/DataDimension/ItemSelector/DataTypeSelector.js +6 -7
- package/build/es/components/DataDimension/ItemSelector/DetailSelector.js +5 -6
- package/build/es/components/DataDimension/ItemSelector/GroupSelector.js +9 -10
- package/build/es/components/DataDimension/ItemSelector/ItemSelector.js +85 -102
- package/build/es/components/DataDimension/ItemSelector/MetricSelector.js +5 -6
- package/build/es/components/DataDimension/SourceEmptyPlaceholder.js +10 -13
- package/build/es/components/DataDimension/TransferOption.js +35 -39
- package/build/es/components/DimensionMenu.js +13 -14
- package/build/es/components/DimensionsPanel/DimensionsPanel.js +7 -7
- package/build/es/components/DimensionsPanel/List/DimensionItem.js +11 -11
- package/build/es/components/DimensionsPanel/List/DimensionList.js +8 -8
- package/build/es/components/DimensionsPanel/List/OptionsButton.js +8 -11
- package/build/es/components/DimensionsPanel/List/RecommendedIcon.js +10 -13
- package/build/es/components/DynamicDimension/DynamicDimension.js +9 -13
- package/build/es/components/DynamicDimension/ItemSelector.js +24 -36
- package/build/es/components/FileMenu/DeleteDialog.js +10 -14
- package/build/es/components/FileMenu/FileMenu.js +18 -28
- package/build/es/components/FileMenu/GetLinkDialog.js +7 -7
- package/build/es/components/FileMenu/RenameDialog.js +12 -19
- package/build/es/components/FileMenu/SaveAsDialog.js +12 -19
- package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +6 -2
- package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +7 -8
- package/build/es/components/FileMenu/utils.js +10 -12
- package/build/es/components/Filter/Filter.js +21 -27
- package/build/es/components/Interpretations/InterpretationModal/Comment.js +7 -8
- package/build/es/components/Interpretations/InterpretationModal/CommentAddForm.js +9 -13
- package/build/es/components/Interpretations/InterpretationModal/CommentDeleteButton.js +9 -13
- package/build/es/components/Interpretations/InterpretationModal/CommentUpdateForm.js +11 -15
- package/build/es/components/Interpretations/InterpretationModal/InterpretationModal.js +18 -23
- package/build/es/components/Interpretations/InterpretationModal/InterpretationThread.js +11 -12
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationForm.js +11 -15
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationList.js +10 -11
- package/build/es/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +22 -31
- package/build/es/components/Interpretations/common/Interpretation/Interpretation.js +12 -13
- package/build/es/components/Interpretations/common/Interpretation/InterpretationDeleteButton.js +7 -11
- package/build/es/components/Interpretations/common/Interpretation/InterpretationSharingLink.js +4 -5
- package/build/es/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +14 -21
- package/build/es/components/Interpretations/common/Interpretation/useLike.js +5 -6
- package/build/es/components/Interpretations/common/Message/Message.js +6 -7
- package/build/es/components/Interpretations/common/Message/MessageButtonStrip.js +8 -11
- package/build/es/components/Interpretations/common/Message/MessageEditorContainer.js +18 -21
- package/build/es/components/Interpretations/common/Message/MessageIconButton.js +34 -40
- package/build/es/components/Interpretations/common/Message/MessageStatsBar.js +8 -11
- package/build/es/components/LegendKey/LegendKey.js +3 -4
- package/build/es/components/OfflineTooltip.js +18 -26
- package/build/es/components/OpenFileDialog/CreatedByFilter.js +20 -26
- package/build/es/components/OpenFileDialog/CustomSelectOption.js +23 -26
- package/build/es/components/OpenFileDialog/DateField.js +3 -4
- package/build/es/components/OpenFileDialog/FileList.js +19 -22
- package/build/es/components/OpenFileDialog/NameFilter.js +15 -21
- package/build/es/components/OpenFileDialog/OpenFileDialog.js +35 -43
- package/build/es/components/OpenFileDialog/PaginationControls.js +22 -28
- package/build/es/components/OpenFileDialog/VisTypeFilter.js +28 -37
- package/build/es/components/Options/VisualizationOptions.js +34 -44
- package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +37 -58
- package/build/es/components/PeriodDimension/FixedPeriodFilter.js +16 -25
- package/build/es/components/PeriodDimension/FixedPeriodSelect.js +14 -19
- package/build/es/components/PeriodDimension/PeriodDimension.js +9 -12
- package/build/es/components/PeriodDimension/PeriodTransfer.js +48 -61
- package/build/es/components/PeriodDimension/RelativePeriodFilter.js +24 -30
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -1
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -1
- package/build/es/components/PeriodDimension/utils/fixedPeriods.js +6 -7
- package/build/es/components/PeriodDimension/utils/index.js +1 -5
- package/build/es/components/PivotTable/PivotTable.js +7 -8
- package/build/es/components/PivotTable/PivotTableBody.js +20 -29
- package/build/es/components/PivotTable/PivotTableCell.js +8 -12
- package/build/es/components/PivotTable/PivotTableClippedAxis.js +14 -17
- package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +7 -8
- package/build/es/components/PivotTable/PivotTableColumnHeaders.js +22 -29
- package/build/es/components/PivotTable/PivotTableContainer.js +5 -6
- package/build/es/components/PivotTable/PivotTableDimensionLabelCell.js +4 -5
- package/build/es/components/PivotTable/PivotTableEmptyCell.js +3 -4
- package/build/es/components/PivotTable/PivotTableEmptyRow.js +4 -5
- package/build/es/components/PivotTable/PivotTableEngineContext.js +4 -5
- package/build/es/components/PivotTable/PivotTableHead.js +13 -16
- package/build/es/components/PivotTable/PivotTableHeaderCell.js +8 -9
- package/build/es/components/PivotTable/PivotTableRow.js +20 -27
- package/build/es/components/PivotTable/PivotTableRowHeaderCell.js +5 -6
- package/build/es/components/PivotTable/PivotTableSortIcon.js +4 -5
- package/build/es/components/PivotTable/PivotTableTitleRow.js +18 -22
- package/build/es/components/PivotTable/PivotTableTitleRows.js +4 -5
- package/build/es/components/PivotTable/PivotTableValueCell.js +5 -6
- package/build/es/components/RichText/Editor/Editor.js +69 -83
- package/build/es/components/RichText/Parser/Parser.js +4 -8
- package/build/es/components/Toolbar/HoverMenuBar/HoverMenuBar.js +20 -23
- package/build/es/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +7 -11
- package/build/es/components/Toolbar/HoverMenuBar/HoverMenuList.js +8 -15
- package/build/es/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +10 -14
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +4 -5
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +6 -4
- package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +15 -21
- package/build/es/components/Toolbar/Toolbar.js +10 -16
- package/build/es/components/Toolbar/ToolbarSidebar.js +12 -18
- package/build/es/components/Toolbar/UpdateButton.js +18 -24
- package/build/es/components/TransferOption.js +14 -15
- package/build/es/components/TranslationDialog/TranslationModal/LocalesSelect.js +19 -27
- package/build/es/components/TranslationDialog/TranslationModal/TranslationForm.js +16 -23
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +6 -7
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModalActions.js +18 -27
- package/build/es/components/TranslationDialog/TranslationModal/useTranslationsResults.js +3 -4
- package/build/es/components/UserMention/UserList.js +6 -7
- package/build/es/components/UserMention/UserMentionWrapper.js +12 -18
- package/build/es/components/UserMention/useUserSearchResults.js +12 -16
- package/build/es/components/VisTypeIcon.js +5 -6
- package/build/es/locales/ar_IQ/translations.json +20 -11
- package/build/es/locales/cs/translations.json +2 -0
- package/build/es/locales/en/translations.json +1 -0
- package/build/es/locales/es/translations.json +2 -0
- package/build/es/locales/fr/translations.json +2 -0
- package/build/es/locales/id/translations.json +20 -11
- package/build/es/locales/lo/translations.json +2 -0
- package/build/es/locales/nb/translations.json +2 -0
- package/build/es/locales/prs/translations.json +2 -0
- package/build/es/locales/ps/translations.json +2 -0
- package/build/es/locales/pt/translations.json +2 -0
- package/build/es/locales/pt_BR/translations.json +2 -0
- package/build/es/locales/ru/translations.json +2 -0
- package/build/es/locales/si/translations.json +20 -11
- package/build/es/locales/sv/translations.json +20 -11
- package/build/es/locales/tet/translations.json +20 -11
- package/build/es/locales/tg/translations.json +2 -0
- package/build/es/locales/uk/translations.json +2 -0
- package/build/es/locales/ur/translations.json +2 -0
- package/build/es/locales/uz_UZ_Cyrl/translations.json +2 -0
- package/build/es/locales/uz_UZ_Latn/translations.json +4 -2
- package/build/es/locales/vi/translations.json +2 -0
- package/build/es/locales/zh/translations.json +2 -0
- package/build/es/locales/zh_CN/translations.json +17 -15
- package/build/es/modules/__tests__/expressions.spec.js +4 -5
- package/build/es/modules/__tests__/isNumeric.spec.js +31 -0
- package/build/es/modules/dimensionListItem.js +4 -5
- package/build/es/modules/expressions.js +3 -9
- package/build/es/modules/getPWAInstallationStatus.js +7 -9
- package/build/es/modules/layout/dimensionCreate.js +1 -3
- package/build/es/modules/layout/dimensionIsValid.js +3 -4
- package/build/es/modules/legends.js +5 -6
- package/build/es/modules/outliers/index.js +2 -3
- package/build/es/modules/outliers/iqr.js +4 -6
- package/build/es/modules/outliers/modZScore.js +6 -14
- package/build/es/modules/outliers/zScore.js +3 -4
- package/build/es/modules/pivotTable/AdaptiveClippingController.js +12 -16
- package/build/es/modules/pivotTable/PivotTableEngine.js +48 -59
- package/build/es/modules/pivotTable/clipAxis.js +7 -8
- package/build/es/modules/pivotTable/clipPartitionedAxis.js +9 -10
- package/build/es/modules/pivotTable/getHeaderForDisplay.js +8 -9
- package/build/es/modules/pivotTable/measureText.js +7 -9
- package/build/es/modules/pivotTable/useParentSize.js +1 -2
- package/build/es/modules/pivotTable/useScrollPosition.js +1 -2
- package/build/es/modules/pivotTable/useTableClipping.js +6 -7
- package/build/es/modules/relativeItems/index.js +1 -4
- package/build/es/modules/renderValue.js +1 -2
- package/build/es/modules/utils.js +9 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +3 -8
- package/build/es/visualizations/config/adapters/dhis_highcharts/axis.js +2 -5
- package/build/es/visualizations/config/adapters/dhis_highcharts/customAxes.js +2 -5
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +7 -8
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +1 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +6 -7
- package/build/es/visualizations/config/adapters/dhis_highcharts/getFormatter.js +1 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/getSteps.js +1 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +3 -4
- package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +7 -8
- package/build/es/visualizations/config/adapters/dhis_highcharts/legend.js +6 -7
- package/build/es/visualizations/config/adapters/dhis_highcharts/legendSet.js +22 -26
- package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +8 -9
- package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +18 -20
- package/build/es/visualizations/config/adapters/dhis_highcharts/series/pie.js +1 -4
- package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +1 -3
- package/build/es/visualizations/config/index.js +11 -12
- package/build/es/visualizations/config/validators/dhis/index.js +3 -4
- package/build/es/visualizations/index.js +1 -4
- package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +7 -8
- package/build/es/visualizations/store/index.js +15 -17
- package/build/es/visualizations/store/validators/dhis/index.js +5 -6
- package/build/es/visualizations/util/getFilterText.js +3 -6
- package/build/es/visualizations/util/shouldUseContrastColor.js +1 -2
- package/package.json +12 -12
|
@@ -161,6 +161,7 @@
|
|
|
161
161
|
"line list": "行列表",
|
|
162
162
|
"map": "地图",
|
|
163
163
|
"visualization": "可视化",
|
|
164
|
+
"Untitled {{visualizationType}}, {{date}}": "无标题的{{visualizationType}} 、{{date}}",
|
|
164
165
|
"Edit": "编辑",
|
|
165
166
|
"Write a reply": "书写应答",
|
|
166
167
|
"Post reply": "发表回复",
|
|
@@ -446,6 +447,7 @@
|
|
|
446
447
|
"Single value": "单个值",
|
|
447
448
|
"Outlier table": "异常值表",
|
|
448
449
|
"All charts": "所有图表",
|
|
450
|
+
"Map": "地图",
|
|
449
451
|
"{{seriesName}} (trend)": "{{seriesName}}(趋势)",
|
|
450
452
|
"Trend": "趋势",
|
|
451
453
|
"No legend for this series": "这个系列没有图例",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"All available items are already selected": "",
|
|
109
109
|
"Calculation": "",
|
|
110
110
|
"Metric type": "",
|
|
111
|
-
"All metrics": "",
|
|
111
|
+
"All metrics": "所有尺度",
|
|
112
112
|
"No items selected": "",
|
|
113
113
|
"No indicators found": "",
|
|
114
114
|
"No data sets found": "",
|
|
@@ -126,19 +126,19 @@
|
|
|
126
126
|
"Add to {{axisName}}": "添加到 {{axisName}}",
|
|
127
127
|
"Not available for {{visualizationType}}": "",
|
|
128
128
|
"Remove Assigned Categories": "",
|
|
129
|
-
"Add Assigned Categories": "",
|
|
129
|
+
"Add Assigned Categories": "添加指定的分类",
|
|
130
130
|
"Remove": "移除",
|
|
131
131
|
"Filter dimensions": "过滤器维度",
|
|
132
132
|
"Main dimensions": "主要维度",
|
|
133
133
|
"Your dimensions": "你的维度",
|
|
134
134
|
"Dimension recommended with selected data": "",
|
|
135
|
-
"All items": "",
|
|
135
|
+
"All items": "所有条目",
|
|
136
136
|
"Automatically include all items": "",
|
|
137
137
|
"Select all {{- dimensionTitle}} items. With this option, new items added in the future will be automatically included.": "",
|
|
138
138
|
"Manually select items...": "",
|
|
139
139
|
"Nothing found in {{- dimensionTitle}}": "",
|
|
140
140
|
"Search": "搜索",
|
|
141
|
-
"Delete {{fileType}}": "",
|
|
141
|
+
"Delete {{fileType}}": "删除{{fileType}}",
|
|
142
142
|
"This {{fileType}} and related interpretations will be deleted. Continue?": "",
|
|
143
143
|
"Delete": "删除",
|
|
144
144
|
"File": "文件",
|
|
@@ -161,6 +161,7 @@
|
|
|
161
161
|
"line list": "",
|
|
162
162
|
"map": "",
|
|
163
163
|
"visualization": "",
|
|
164
|
+
"Untitled {{visualizationType}}, {{date}}": "",
|
|
164
165
|
"Edit": "编辑",
|
|
165
166
|
"Write a reply": "",
|
|
166
167
|
"Post reply": "",
|
|
@@ -179,7 +180,7 @@
|
|
|
179
180
|
"Reply": "回复",
|
|
180
181
|
"{{count}} replies": "",
|
|
181
182
|
"View replies": "",
|
|
182
|
-
"Unlike": "",
|
|
183
|
+
"Unlike": "不喜欢",
|
|
183
184
|
"Like": "Like",
|
|
184
185
|
"See interpretation": "",
|
|
185
186
|
"Open in app": "",
|
|
@@ -187,7 +188,7 @@
|
|
|
187
188
|
"Manage sharing": "",
|
|
188
189
|
"Could not update interpretation": "",
|
|
189
190
|
"Enter interpretation text": "",
|
|
190
|
-
"Not available offline": "",
|
|
191
|
+
"Not available offline": "离线不可用",
|
|
191
192
|
"Anyone": "任何人",
|
|
192
193
|
"Only you": "",
|
|
193
194
|
"Others": "其它",
|
|
@@ -240,8 +241,8 @@
|
|
|
240
241
|
"Select year": "选择年份",
|
|
241
242
|
"Period": "周期",
|
|
242
243
|
"Selected Periods": "",
|
|
243
|
-
"Relative periods": "",
|
|
244
|
-
"Fixed periods": "",
|
|
244
|
+
"Relative periods": "相对期间",
|
|
245
|
+
"Fixed periods": "固定期间",
|
|
245
246
|
"No periods selected": "",
|
|
246
247
|
"Daily": "每日",
|
|
247
248
|
"Weekly": "每周",
|
|
@@ -306,8 +307,8 @@
|
|
|
306
307
|
"Weeks": "周",
|
|
307
308
|
"Bi-weeks": "",
|
|
308
309
|
"Months": "月",
|
|
309
|
-
"Bi-months": "",
|
|
310
|
-
"Quarters": "",
|
|
310
|
+
"Bi-months": "俩月",
|
|
311
|
+
"Quarters": "季节",
|
|
311
312
|
"Six-months": "",
|
|
312
313
|
"Financial Years": "",
|
|
313
314
|
"Years": "年",
|
|
@@ -328,12 +329,12 @@
|
|
|
328
329
|
"Save translations": "",
|
|
329
330
|
"Cannot save while offline": "",
|
|
330
331
|
"Could not load translations": "",
|
|
331
|
-
"Retry": "",
|
|
332
|
+
"Retry": "重试",
|
|
332
333
|
"Too many results. Try refining the search.": "",
|
|
333
334
|
"Search for a user": "",
|
|
334
335
|
"Searching for \"{{- searchText}}\"": "",
|
|
335
336
|
"No results found": "没有结果",
|
|
336
|
-
"Series": "",
|
|
337
|
+
"Series": "系列",
|
|
337
338
|
"Category": "分类",
|
|
338
339
|
"Columns": "",
|
|
339
340
|
"Rows": "",
|
|
@@ -379,7 +380,7 @@
|
|
|
379
380
|
"Large": "较大",
|
|
380
381
|
"Extra Large": "",
|
|
381
382
|
"Left": "左",
|
|
382
|
-
"Center": "",
|
|
383
|
+
"Center": "居中",
|
|
383
384
|
"Right": "右",
|
|
384
385
|
"Start": "开始",
|
|
385
386
|
"Middle": "",
|
|
@@ -446,14 +447,15 @@
|
|
|
446
447
|
"Single value": "",
|
|
447
448
|
"Outlier table": "",
|
|
448
449
|
"All charts": "",
|
|
450
|
+
"Map": "地图",
|
|
449
451
|
"{{seriesName}} (trend)": "",
|
|
450
452
|
"Trend": "",
|
|
451
453
|
"No legend for this series": "",
|
|
452
454
|
"and {{amount}} more...": "",
|
|
453
455
|
"Linear Regression": "",
|
|
454
456
|
"Target": "目标",
|
|
455
|
-
"Base": "",
|
|
456
|
-
"Axis {{axisId}}": "",
|
|
457
|
+
"Base": "基",
|
|
458
|
+
"Axis {{axisId}}": "轴{{axisId}}",
|
|
457
459
|
"{{count}} items": "",
|
|
458
460
|
"Reset zoom": ""
|
|
459
461
|
}
|
|
@@ -27,11 +27,10 @@ const invalidTestExpressions = [{
|
|
|
27
27
|
}];
|
|
28
28
|
const validTestExpressions = ['5+9', '((#{cYeuwXTCPkU}*#{Jtf34kNZhzP}))#{iKGjnOOaPlE}', '#{P3jJH5Tu5VC.S34ULMcHMca}*#{Jtf34kNZhzP}', '(5)+9', '(5+9)', '10/-5'];
|
|
29
29
|
describe('validateExpression', () => {
|
|
30
|
-
invalidTestExpressions.forEach(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
} = _ref;
|
|
30
|
+
invalidTestExpressions.forEach(({
|
|
31
|
+
expressions,
|
|
32
|
+
message
|
|
33
|
+
}) => {
|
|
35
34
|
expressions.forEach(exp => {
|
|
36
35
|
test(`Fails: ${message}`, () => {
|
|
37
36
|
expect((0, _expressions.validateExpression)(exp)).toEqual({
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _utils = require("../utils.js");
|
|
4
|
+
describe('isNumeric', () => {
|
|
5
|
+
it('should return true for a number string', () => {
|
|
6
|
+
expect((0, _utils.isNumeric)('01')).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it('should return true for a regular number', () => {
|
|
9
|
+
expect((0, _utils.isNumeric)(10)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it('should not regard infinity as a numeric', () => {
|
|
12
|
+
expect((0, _utils.isNumeric)(Infinity)).toBe(false);
|
|
13
|
+
expect((0, _utils.isNumeric)(-Infinity)).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
it('should return false for NaN', () => {
|
|
16
|
+
expect((0, _utils.isNumeric)(NaN)).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
it('should return false for things other than numbers', () => {
|
|
19
|
+
expect((0, _utils.isNumeric)(null)).toBe(false);
|
|
20
|
+
expect((0, _utils.isNumeric)([1, 2, 3])).toBe(false);
|
|
21
|
+
expect((0, _utils.isNumeric)(true)).toBe(false);
|
|
22
|
+
expect((0, _utils.isNumeric)(new Date())).toBe(false);
|
|
23
|
+
expect((0, _utils.isNumeric)(new Error())).toBe(false);
|
|
24
|
+
expect((0, _utils.isNumeric)(undefined)).toBe(false);
|
|
25
|
+
expect((0, _utils.isNumeric)(() => {})).toBe(false);
|
|
26
|
+
expect((0, _utils.isNumeric)({
|
|
27
|
+
a: 1
|
|
28
|
+
})).toBe(false);
|
|
29
|
+
expect((0, _utils.isNumeric)(/x/)).toBe(false);
|
|
30
|
+
expect((0, _utils.isNumeric)('a')).toBe(false);
|
|
31
|
+
expect((0, _utils.isNumeric)(Symbol())).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -13,12 +13,11 @@ var _CalculationIcon = _interopRequireDefault(require("./../assets/DimensionItem
|
|
|
13
13
|
var _dataSets = require("./dataSets.js");
|
|
14
14
|
var _dataTypes = require("./dataTypes.js");
|
|
15
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
const getDimensionType =
|
|
16
|
+
const getDimensionType = ({
|
|
17
|
+
type,
|
|
18
|
+
expression
|
|
19
|
+
}) => {
|
|
17
20
|
var _dataTypes$type;
|
|
18
|
-
let {
|
|
19
|
-
type,
|
|
20
|
-
expression
|
|
21
|
-
} = _ref;
|
|
22
21
|
if (type === _dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM && expression) {
|
|
23
22
|
return _dataTypes.dataTypeMap[_dataTypes.DIMENSION_TYPE_EXPRESSION_DIMENSION_ITEM].getItemName();
|
|
24
23
|
}
|
|
@@ -46,9 +46,7 @@ const parseExpression = input => {
|
|
|
46
46
|
return input.match(regex) || [];
|
|
47
47
|
};
|
|
48
48
|
exports.parseExpression = parseExpression;
|
|
49
|
-
const parseExpressionToArray =
|
|
50
|
-
let expression = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
51
|
-
let metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
49
|
+
const parseExpressionToArray = (expression = '', metadata = []) => {
|
|
52
50
|
return parseExpression(expression).map(value => {
|
|
53
51
|
if (value.startsWith('#{') && value.endsWith('}')) {
|
|
54
52
|
var _metadata$find;
|
|
@@ -75,10 +73,7 @@ const parseExpressionToArray = function () {
|
|
|
75
73
|
}) || [];
|
|
76
74
|
};
|
|
77
75
|
exports.parseExpressionToArray = parseExpressionToArray;
|
|
78
|
-
const parseArrayToExpression =
|
|
79
|
-
let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
80
|
-
return input.map(item => item.value).join('');
|
|
81
|
-
};
|
|
76
|
+
const parseArrayToExpression = (input = []) => input.map(item => item.value).join('');
|
|
82
77
|
exports.parseArrayToExpression = parseArrayToExpression;
|
|
83
78
|
const validateExpression = expression => {
|
|
84
79
|
let result;
|
|
@@ -131,8 +126,7 @@ const validateExpression = expression => {
|
|
|
131
126
|
return result;
|
|
132
127
|
};
|
|
133
128
|
exports.validateExpression = validateExpression;
|
|
134
|
-
const getItemIdsFromExpression =
|
|
135
|
-
let expression = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
129
|
+
const getItemIdsFromExpression = (expression = '') => {
|
|
136
130
|
const regex = /#{([a-zA-Z0-9#]+.*?)}/g;
|
|
137
131
|
const matches = expression.match(regex);
|
|
138
132
|
return matches ? matches.map(match => match.slice(2, -1)) : [];
|
|
@@ -9,11 +9,10 @@ const INSTALLATION_STATES = exports.INSTALLATION_STATES = {
|
|
|
9
9
|
READY: 'READY',
|
|
10
10
|
INSTALLING: 'INSTALLING'
|
|
11
11
|
};
|
|
12
|
-
function handleInstallingWorker(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} = _ref;
|
|
12
|
+
function handleInstallingWorker({
|
|
13
|
+
installingWorker,
|
|
14
|
+
onStateChange
|
|
15
|
+
}) {
|
|
17
16
|
installingWorker.onstatechange = () => {
|
|
18
17
|
if (installingWorker.state === 'activated') {
|
|
19
18
|
// ... and update state to 'ready'
|
|
@@ -30,10 +29,9 @@ function handleInstallingWorker(_ref) {
|
|
|
30
29
|
*
|
|
31
30
|
* Returns either READY, INSTALLING, or `null` for not installed/won't install
|
|
32
31
|
*/
|
|
33
|
-
async function getPWAInstallationStatus(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
} = _ref2;
|
|
32
|
+
async function getPWAInstallationStatus({
|
|
33
|
+
onStateChange
|
|
34
|
+
}) {
|
|
37
35
|
if (!navigator.serviceWorker) {
|
|
38
36
|
// Nothing to do here
|
|
39
37
|
return null;
|
|
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.dimensionCreate = void 0;
|
|
7
7
|
var _dimension = require("./dimension.js");
|
|
8
|
-
const dimensionCreate =
|
|
9
|
-
let itemIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
10
|
-
let args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
8
|
+
const dimensionCreate = (dimensionId, itemIds = [], args = {}) => {
|
|
11
9
|
const dimension = {
|
|
12
10
|
[_dimension.DIMENSION_PROP_ID.name]: dimensionId,
|
|
13
11
|
...(itemIds.length && {
|
|
@@ -6,10 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.dimensionIsValid = void 0;
|
|
7
7
|
var _dimension = require("./dimension.js");
|
|
8
8
|
var _dimensionIsEmpty = require("./dimensionIsEmpty.js");
|
|
9
|
-
const dimensionIsValid =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
9
|
+
const dimensionIsValid = (dimension, {
|
|
10
|
+
requireItems
|
|
11
|
+
} = {}) => {
|
|
13
12
|
if (!_dimension.DIMENSION.isValid(dimension)) {
|
|
14
13
|
return false;
|
|
15
14
|
}
|
|
@@ -19,12 +19,11 @@ const getColorByValueFromLegendSet = (legendSet, value) => {
|
|
|
19
19
|
return legend && legend.color;
|
|
20
20
|
};
|
|
21
21
|
exports.getColorByValueFromLegendSet = getColorByValueFromLegendSet;
|
|
22
|
-
const getLegendSetByDisplayStrategy =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} = _ref;
|
|
22
|
+
const getLegendSetByDisplayStrategy = ({
|
|
23
|
+
displayStrategy,
|
|
24
|
+
legendSets,
|
|
25
|
+
legendSetId
|
|
26
|
+
}) => {
|
|
28
27
|
if (displayStrategy === LEGEND_DISPLAY_STRATEGY_FIXED && legendSets.length) {
|
|
29
28
|
return legendSets[0];
|
|
30
29
|
} else if (displayStrategy === LEGEND_DISPLAY_STRATEGY_BY_DATA_ITEM) {
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getOutlierHelper = exports.defaultConfig = exports.PROP_THRESHOLD_FACTOR = exports.PROP_OUTLIER_METHOD = exports.PROP_NORMALIZATION_METHOD = exports.PROP_EXTREME_LINES_VALUE = exports.PROP_EXTREME_LINES = exports.PROP_ENABLED = exports.DEFAULT_THRESHOLD_FACTOR = exports.DEFAULT_OUTLIER_METHOD = exports.DEFAULT_NORMALIZATION_METHOD = exports.DEFAULT_EXTREME_LINES_VALUE = exports.DEFAULT_ENABLED = void 0;
|
|
7
7
|
var _isNumber = _interopRequireDefault(require("d2-utilizr/lib/isNumber"));
|
|
8
|
-
var _isNumeric = _interopRequireDefault(require("d2-utilizr/lib/isNumeric"));
|
|
9
8
|
var _index = _interopRequireDefault(require("../../locales/index.js"));
|
|
9
|
+
var _utils = require("../../modules/utils.js");
|
|
10
10
|
var _iqr = require("./iqr.js");
|
|
11
11
|
var _modZScore = require("./modZScore.js");
|
|
12
12
|
var _normalization = require("./normalization.js");
|
|
@@ -36,7 +36,7 @@ const defaultConfig = exports.defaultConfig = {
|
|
|
36
36
|
};
|
|
37
37
|
const getExtremeLines = (percentage, xyStats) => {
|
|
38
38
|
const lines = [];
|
|
39
|
-
if (!(0,
|
|
39
|
+
if (!(0, _utils.isNumeric)(percentage)) {
|
|
40
40
|
return lines;
|
|
41
41
|
}
|
|
42
42
|
const xExtremeValue = xyStats.xSum * (percentage / 100);
|
|
@@ -60,10 +60,9 @@ const getMinMaxValue = (outlierHelper, isVertical, isMax) => {
|
|
|
60
60
|
const prop = (isVertical ? 'y' : 'x') + (isMax ? 'Max' : 'Min');
|
|
61
61
|
const extremeValue = outlierHelper.extremeLines && outlierHelper.extremeLines[isVertical ? 1 : 0].value;
|
|
62
62
|
const extremeFactor = (0, _isNumber.default)(extremeValue) && isMax ? extremeValue + Math.abs(extremeValue) * 0.1 : extremeValue - Math.abs(extremeValue) * 0.1;
|
|
63
|
-
return [...outlierHelper.thresholds.map(t => (0, _xyStats.getXYStats)([t.line[0], t.line[t.line.length - 1]])[prop]), extremeFactor].filter(
|
|
63
|
+
return [...outlierHelper.thresholds.map(t => (0, _xyStats.getXYStats)([t.line[0], t.line[t.line.length - 1]])[prop]), extremeFactor].filter(_utils.isNumeric).sort(isMax ? (a, b) => b - a : (a, b) => a - b)[0];
|
|
64
64
|
};
|
|
65
|
-
const getOutlierHelper =
|
|
66
|
-
let userConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
65
|
+
const getOutlierHelper = (data, userConfig = {}) => {
|
|
67
66
|
if (data.length < 3) {
|
|
68
67
|
return null;
|
|
69
68
|
}
|
|
@@ -94,7 +93,7 @@ const getOutlierHelper = function (data) {
|
|
|
94
93
|
default:
|
|
95
94
|
helper = (0, _iqr.getIQRHelper)(normalizationHelper, config, options);
|
|
96
95
|
}
|
|
97
|
-
if (config[PROP_EXTREME_LINES][PROP_ENABLED] && (0,
|
|
96
|
+
if (config[PROP_EXTREME_LINES][PROP_ENABLED] && (0, _utils.isNumeric)(config[PROP_EXTREME_LINES][PROP_EXTREME_LINES_VALUE])) {
|
|
98
97
|
helper.extremeLines = getExtremeLines(config[PROP_EXTREME_LINES][PROP_EXTREME_LINES_VALUE], options.xyStats);
|
|
99
98
|
}
|
|
100
99
|
|
|
@@ -24,8 +24,7 @@ const getQuartilePosition = (data, quartile) => {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
exports.getQuartilePosition = getQuartilePosition;
|
|
27
|
-
const getQuartileValue =
|
|
28
|
-
let quartile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Q1;
|
|
27
|
+
const getQuartileValue = (data, quartile = Q1) => {
|
|
29
28
|
if (data.length < 3) {
|
|
30
29
|
return;
|
|
31
30
|
}
|
|
@@ -39,10 +38,9 @@ const getQuartileValue = function (data) {
|
|
|
39
38
|
return data[base - 1] + diff * rest;
|
|
40
39
|
};
|
|
41
40
|
exports.getQuartileValue = getQuartileValue;
|
|
42
|
-
const getIQRHelper = (normalizationHelper, config,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
} = _ref;
|
|
41
|
+
const getIQRHelper = (normalizationHelper, config, {
|
|
42
|
+
xyStats
|
|
43
|
+
}) => {
|
|
46
44
|
const sortedNormalized = normalizationHelper.normalized.slice().sort((a, b) => a - b);
|
|
47
45
|
const q1 = getQuartileValue(sortedNormalized, Q1);
|
|
48
46
|
const q3 = getQuartileValue(sortedNormalized, Q3);
|
|
@@ -20,15 +20,9 @@ const getMedian = values => {
|
|
|
20
20
|
|
|
21
21
|
// Absolute deviation
|
|
22
22
|
exports.getMedian = getMedian;
|
|
23
|
-
const getMedianAbsoluteDeviation =
|
|
24
|
-
let median = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getMedian(values);
|
|
25
|
-
return getMedian(values.map(value => Math.abs(value - median)).sort((a, b) => a - b));
|
|
26
|
-
};
|
|
23
|
+
const getMedianAbsoluteDeviation = (values, median = getMedian(values)) => getMedian(values.map(value => Math.abs(value - median)).sort((a, b) => a - b));
|
|
27
24
|
exports.getMedianAbsoluteDeviation = getMedianAbsoluteDeviation;
|
|
28
|
-
const getMeanAbsoluteDeviation =
|
|
29
|
-
let mean = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getMean(values);
|
|
30
|
-
return getMean(values.map(value => Math.abs(value - mean)));
|
|
31
|
-
};
|
|
25
|
+
const getMeanAbsoluteDeviation = (values, mean = getMean(values)) => getMean(values.map(value => Math.abs(value - mean)));
|
|
32
26
|
|
|
33
27
|
// Modified z-scores
|
|
34
28
|
exports.getMeanAbsoluteDeviation = getMeanAbsoluteDeviation;
|
|
@@ -42,8 +36,7 @@ const getModZScoreThresholds = (thresholdFactor, medianAD, median) => [median -
|
|
|
42
36
|
exports.getModZScoreThresholds = getModZScoreThresholds;
|
|
43
37
|
const getModZScoreMAD0Thresholds = (thresholdFactor, meanAD, median) => [median - thresholdFactor * meanAD * MEAN_AD_CORRECTION, median + thresholdFactor * meanAD * MEAN_AD_CORRECTION];
|
|
44
38
|
exports.getModZScoreMAD0Thresholds = getModZScoreMAD0Thresholds;
|
|
45
|
-
const getDataWithZScore =
|
|
46
|
-
let cache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
39
|
+
const getDataWithZScore = (dataWithNormalization, cache = {}) => {
|
|
47
40
|
const normalizedData = cache.normalizedData || dataWithNormalization.map(obj => obj.normalized);
|
|
48
41
|
const median = (0, _isNumber.default)(cache.median) ? cache.median : getMedian(normalizedData);
|
|
49
42
|
const medianAD = (0, _isNumber.default)(cache.medianAD) ? cache.medianAD : getMedianAbsoluteDeviation();
|
|
@@ -63,10 +56,9 @@ const getDataWithZScore = function (dataWithNormalization) {
|
|
|
63
56
|
return dataWithZScore;
|
|
64
57
|
};
|
|
65
58
|
exports.getDataWithZScore = getDataWithZScore;
|
|
66
|
-
const getModZScoreHelper = (normalizationHelper, config,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
} = _ref;
|
|
59
|
+
const getModZScoreHelper = (normalizationHelper, config, {
|
|
60
|
+
xyStats
|
|
61
|
+
}) => {
|
|
70
62
|
const sortedNormalized = normalizationHelper.normalized.slice().sort((a, b) => a - b);
|
|
71
63
|
const median = getMedian(sortedNormalized);
|
|
72
64
|
const medianAD = getMedianAbsoluteDeviation(sortedNormalized, median);
|
|
@@ -13,10 +13,9 @@ const getStdDev = data => (0, _mathjs.std)(data, 'unbiased');
|
|
|
13
13
|
exports.getStdDev = getStdDev;
|
|
14
14
|
const getMean = data => (0, _mathjs.mean)(data);
|
|
15
15
|
exports.getMean = getMean;
|
|
16
|
-
const getZScoreHelper = (normalizationHelper, config,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} = _ref;
|
|
16
|
+
const getZScoreHelper = (normalizationHelper, config, {
|
|
17
|
+
xyStats
|
|
18
|
+
}) => {
|
|
20
19
|
const sortedNormalized = normalizationHelper.normalized.slice().sort((a, b) => a - b);
|
|
21
20
|
const stdDev = getStdDev(sortedNormalized);
|
|
22
21
|
const zScoreThreshold = stdDev * config[_index2.PROP_THRESHOLD_FACTOR];
|
|
@@ -17,15 +17,13 @@ class AdaptiveClippingController {
|
|
|
17
17
|
this.engine = engine;
|
|
18
18
|
this.reset();
|
|
19
19
|
}
|
|
20
|
-
addSize(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
height
|
|
28
|
-
} = _ref2;
|
|
20
|
+
addSize({
|
|
21
|
+
row,
|
|
22
|
+
column
|
|
23
|
+
}, {
|
|
24
|
+
width,
|
|
25
|
+
height
|
|
26
|
+
}) {
|
|
29
27
|
if (column >= 0) {
|
|
30
28
|
const columnSize = this.columns.sizes[column] || {
|
|
31
29
|
pre: 0,
|
|
@@ -49,18 +47,16 @@ class AdaptiveClippingController {
|
|
|
49
47
|
this.rows.headerSizes[index] = Math.max(this.rows.headerSizes[index] || 0, height);
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
|
-
add(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
} = _ref3;
|
|
50
|
+
add({
|
|
51
|
+
row,
|
|
52
|
+
column
|
|
53
|
+
}, renderedValue) {
|
|
57
54
|
this.addSize({
|
|
58
55
|
row,
|
|
59
56
|
column
|
|
60
57
|
}, this.measureText(renderedValue));
|
|
61
58
|
}
|
|
62
|
-
measureText(renderedValue) {
|
|
63
|
-
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
59
|
+
measureText(renderedValue, options = {}) {
|
|
64
60
|
return (0, _measureText.measureTextWithWrapping)(renderedValue, {
|
|
65
61
|
fontSize: this.engine.fontSize,
|
|
66
62
|
...options
|
|
@@ -115,11 +115,10 @@ const buildDimensionLookup = (visualization, metadata, headers) => {
|
|
|
115
115
|
dataHeaders
|
|
116
116
|
};
|
|
117
117
|
};
|
|
118
|
-
const lookup = (dataRow, dimensionLookup,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
} = _ref;
|
|
118
|
+
const lookup = (dataRow, dimensionLookup, {
|
|
119
|
+
doColumnSubtotals,
|
|
120
|
+
doRowSubtotals
|
|
121
|
+
}) => {
|
|
123
122
|
let row = 0;
|
|
124
123
|
for (const headerIndex of dimensionLookup.rowHeaders) {
|
|
125
124
|
const idx = dimensionLookup.headerDimensions[headerIndex].itemIds.indexOf(dataRow[headerIndex]);
|
|
@@ -149,15 +148,14 @@ const lookup = (dataRow, dimensionLookup, _ref) => {
|
|
|
149
148
|
row
|
|
150
149
|
};
|
|
151
150
|
};
|
|
152
|
-
const applyTotalAggregationType = (
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
} = _ref2;
|
|
151
|
+
const applyTotalAggregationType = ({
|
|
152
|
+
totalAggregationType,
|
|
153
|
+
value,
|
|
154
|
+
numerator,
|
|
155
|
+
denominator,
|
|
156
|
+
multiplier,
|
|
157
|
+
divisor
|
|
158
|
+
}, overrideTotalAggregationType) => {
|
|
161
159
|
switch (overrideTotalAggregationType || totalAggregationType) {
|
|
162
160
|
case _pivotTableConstants.AGGREGATE_TYPE_NA:
|
|
163
161
|
return _pivotTableConstants.VALUE_NA;
|
|
@@ -216,12 +214,11 @@ class PivotTableEngine {
|
|
|
216
214
|
this.rowDepth = this.dimensionLookup.rows.length || (this.visualization.showDimensionLabels ? 1 : 0);
|
|
217
215
|
this.buildMatrix();
|
|
218
216
|
}
|
|
219
|
-
getRaw(
|
|
217
|
+
getRaw({
|
|
218
|
+
row,
|
|
219
|
+
column
|
|
220
|
+
}) {
|
|
220
221
|
var _headers$find, _headers$find2;
|
|
221
|
-
let {
|
|
222
|
-
row,
|
|
223
|
-
column
|
|
224
|
-
} = _ref3;
|
|
225
222
|
const cellType = this.getRawCellType({
|
|
226
223
|
row,
|
|
227
224
|
column
|
|
@@ -307,18 +304,16 @@ class PivotTableEngine {
|
|
|
307
304
|
}
|
|
308
305
|
return rawCell;
|
|
309
306
|
}
|
|
310
|
-
getCumulative(
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
} = _ref4;
|
|
307
|
+
getCumulative({
|
|
308
|
+
row,
|
|
309
|
+
column
|
|
310
|
+
}) {
|
|
315
311
|
return this.accumulators.rows[row][column];
|
|
316
312
|
}
|
|
317
|
-
get(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
} = _ref5;
|
|
313
|
+
get({
|
|
314
|
+
row,
|
|
315
|
+
column
|
|
316
|
+
}) {
|
|
322
317
|
const mappedRow = this.rowMap[row],
|
|
323
318
|
mappedColumn = this.columnMap[column];
|
|
324
319
|
if (!mappedRow && mappedRow !== 0 || !mappedColumn && mappedColumn !== 0) {
|
|
@@ -329,11 +324,10 @@ class PivotTableEngine {
|
|
|
329
324
|
column: mappedColumn
|
|
330
325
|
});
|
|
331
326
|
}
|
|
332
|
-
getRawCellType(
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
} = _ref6;
|
|
327
|
+
getRawCellType({
|
|
328
|
+
row,
|
|
329
|
+
column
|
|
330
|
+
}) {
|
|
337
331
|
const isRowTotal = this.doRowTotals && column === this.dataWidth - 1;
|
|
338
332
|
const isColumnTotal = this.doColumnTotals && row === this.dataHeight - 1;
|
|
339
333
|
if (isRowTotal || isColumnTotal) {
|
|
@@ -346,11 +340,10 @@ class PivotTableEngine {
|
|
|
346
340
|
}
|
|
347
341
|
return _pivotTableConstants.CELL_TYPE_VALUE;
|
|
348
342
|
}
|
|
349
|
-
getCellType(
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
} = _ref7;
|
|
343
|
+
getCellType({
|
|
344
|
+
row,
|
|
345
|
+
column
|
|
346
|
+
}) {
|
|
354
347
|
row = this.rowMap[row];
|
|
355
348
|
column = this.columnMap[column];
|
|
356
349
|
return this.getRawCellType({
|
|
@@ -380,21 +373,19 @@ class PivotTableEngine {
|
|
|
380
373
|
return _d2I18n.default.t(this.dimensionLookup.rows[rowLevel].meta.name);
|
|
381
374
|
}
|
|
382
375
|
}
|
|
383
|
-
getCellDxDimension(
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
} = _ref8;
|
|
376
|
+
getCellDxDimension({
|
|
377
|
+
row,
|
|
378
|
+
column
|
|
379
|
+
}) {
|
|
388
380
|
return this.getRawCellDxDimension({
|
|
389
381
|
row: this.rowMap[row],
|
|
390
382
|
column: this.columnMap[column]
|
|
391
383
|
});
|
|
392
384
|
}
|
|
393
|
-
getRawCellDxDimension(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
} = _ref9;
|
|
385
|
+
getRawCellDxDimension({
|
|
386
|
+
row,
|
|
387
|
+
column
|
|
388
|
+
}) {
|
|
398
389
|
if (!this.data[row]) {
|
|
399
390
|
return undefined;
|
|
400
391
|
}
|
|
@@ -491,12 +482,11 @@ class PivotTableEngine {
|
|
|
491
482
|
getRowHeader(row) {
|
|
492
483
|
return this.getRawRowHeader(this.rowMap[row]);
|
|
493
484
|
}
|
|
494
|
-
getDependantTotalCells(
|
|
485
|
+
getDependantTotalCells({
|
|
486
|
+
row,
|
|
487
|
+
column
|
|
488
|
+
}) {
|
|
495
489
|
var _this$dimensionLookup, _this$dimensionLookup2;
|
|
496
|
-
let {
|
|
497
|
-
row,
|
|
498
|
-
column
|
|
499
|
-
} = _ref10;
|
|
500
490
|
const rowSubtotalSize = ((_this$dimensionLookup = this.dimensionLookup.columns[0]) === null || _this$dimensionLookup === void 0 ? void 0 : _this$dimensionLookup.size) + 1;
|
|
501
491
|
const rowSubtotal = rowSubtotalSize && this.doRowSubtotals && {
|
|
502
492
|
row,
|
|
@@ -694,11 +684,10 @@ class PivotTableEngine {
|
|
|
694
684
|
// (numberType option default is VALUE)
|
|
695
685
|
return visualization.numberType && visualization.numberType !== _pivotTableConstants.NUMBER_TYPE_VALUE && _pivotTableConstants.AGGREGATE_TYPE_SUM;
|
|
696
686
|
}
|
|
697
|
-
finalizeTotal(
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
} = _ref11;
|
|
687
|
+
finalizeTotal({
|
|
688
|
+
row,
|
|
689
|
+
column
|
|
690
|
+
}) {
|
|
702
691
|
if (!this.data[row]) {
|
|
703
692
|
return;
|
|
704
693
|
}
|