@dhis2/analytics 26.8.7 → 26.9.3
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__/CalculationModal.stories.js +38 -16
- package/build/cjs/__demo__/DimensionsPanel.stories.js +65 -27
- package/build/cjs/__demo__/DynamicDimension.stories.js +30 -12
- package/build/cjs/__demo__/FileMenu.stories.js +27 -10
- package/build/cjs/__demo__/Filter.stories.js +20 -10
- package/build/cjs/__demo__/FixedPeriodSelect.stories.js +35 -17
- package/build/cjs/__demo__/InterpretationsUnit.stories.js +22 -11
- package/build/cjs/__demo__/OpenFileDialog.stories.js +44 -27
- package/build/cjs/__demo__/OrgUnitDimension.stories.js +103 -54
- package/build/cjs/__demo__/PeriodDimension.stories.js +64 -23
- package/build/cjs/__demo__/PivotTable.stories.js +413 -210
- package/build/cjs/__demo__/SingleValue.stories.js +684 -0
- package/build/cjs/__demo__/Toolbar.stories.js +44 -34
- package/build/cjs/__fixtures__/fixtures.js +2 -3
- package/build/cjs/api/analytics/Analytics.js +2 -3
- package/build/cjs/api/analytics/AnalyticsAggregate.js +2 -3
- package/build/cjs/api/analytics/AnalyticsBase.js +2 -3
- package/build/cjs/api/analytics/AnalyticsEnrollments.js +2 -3
- package/build/cjs/api/analytics/AnalyticsEvents.js +2 -3
- package/build/cjs/api/analytics/AnalyticsRequest.js +2 -3
- package/build/cjs/api/analytics/AnalyticsRequestBase.js +2 -3
- package/build/cjs/api/analytics/AnalyticsRequestDimensionsMixin.js +2 -3
- package/build/cjs/api/analytics/AnalyticsRequestFiltersMixin.js +2 -3
- package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +2 -3
- package/build/cjs/api/analytics/AnalyticsResponse.js +2 -4
- package/build/cjs/api/analytics/AnalyticsResponseHeader.js +1 -2
- package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +2 -3
- package/build/cjs/api/analytics/__tests__/Analytics.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +2 -2
- package/build/cjs/api/analytics/__tests__/AnalyticsEnrollments.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsEvents.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsRequestBase.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsResponse.spec.js +1 -1
- package/build/cjs/api/analytics/__tests__/AnalyticsResponseHeader.spec.js +1 -1
- package/build/cjs/api/dimensions.js +11 -21
- package/build/cjs/api/expression.js +5 -9
- package/build/cjs/assets/AssignedCategoriesIcon.js +2 -3
- package/build/cjs/assets/DimensionItemIcons/CalculationIcon.js +3 -4
- package/build/cjs/assets/DimensionItemIcons/DataElementIcon.js +3 -4
- package/build/cjs/assets/DimensionItemIcons/GenericIcon.js +3 -4
- package/build/cjs/assets/DimensionItemIcons/PeriodIcon.js +3 -4
- package/build/cjs/assets/DynamicDimensionIcon.js +2 -3
- package/build/cjs/assets/FormulaIcon.js +2 -3
- package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +4 -5
- package/build/cjs/components/AboutAOUnit/styles/AboutAOUnit.style.js +1 -2
- package/build/cjs/components/AboutAOUnit/utils.js +7 -13
- package/build/cjs/components/CachedDataQueryProvider.js +3 -3
- package/build/cjs/components/DataDimension/Calculation/CalculationModal.js +4 -5
- package/build/cjs/components/DataDimension/Calculation/DataElementOption.js +3 -4
- package/build/cjs/components/DataDimension/Calculation/DataElementSelector.js +4 -5
- package/build/cjs/components/DataDimension/Calculation/DndContext.js +8 -10
- package/build/cjs/components/DataDimension/Calculation/DragHandleIcon.js +3 -4
- package/build/cjs/components/DataDimension/Calculation/DraggingItem.js +2 -3
- package/build/cjs/components/DataDimension/Calculation/DropZone.js +2 -3
- package/build/cjs/components/DataDimension/Calculation/FormulaField.js +4 -7
- package/build/cjs/components/DataDimension/Calculation/FormulaItem.js +5 -6
- package/build/cjs/components/DataDimension/Calculation/MathOperatorSelector.js +2 -3
- package/build/cjs/components/DataDimension/Calculation/Operator.js +3 -4
- package/build/cjs/components/DataDimension/Calculation/styles/CalculationModal.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/DataElementOption.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/DataElementSelector.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/DraggingItem.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/DropZone.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/FormulaField.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/FormulaItem.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/MathOperatorSelector.style.js +1 -2
- package/build/cjs/components/DataDimension/Calculation/styles/Operator.style.js +1 -2
- package/build/cjs/components/DataDimension/DataDimension.js +4 -5
- package/build/cjs/components/DataDimension/DataTypeSelector.js +2 -3
- package/build/cjs/components/DataDimension/DetailSelector.js +2 -3
- package/build/cjs/components/DataDimension/GroupSelector.js +4 -5
- package/build/cjs/components/DataDimension/ItemSelector.js +5 -7
- package/build/cjs/components/DataDimension/MetricSelector.js +2 -3
- package/build/cjs/components/DataDimension/styles/DataTypeSelector.style.js +1 -2
- package/build/cjs/components/DataDimension/styles/DetailSelector.style.js +1 -2
- package/build/cjs/components/DataDimension/styles/GroupSelector.style.js +1 -2
- package/build/cjs/components/DataDimension/styles/MetricSelector.style.js +1 -2
- package/build/cjs/components/DimensionMenu.js +5 -6
- package/build/cjs/components/DimensionsPanel/DimensionsPanel.js +7 -8
- package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +8 -9
- package/build/cjs/components/DimensionsPanel/List/DimensionList.js +7 -8
- package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +2 -3
- package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +2 -3
- package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +2 -2
- package/build/cjs/components/DimensionsPanel/List/styles/DimensionItem.style.js +1 -2
- package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -2
- package/build/cjs/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +2 -3
- package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +2 -2
- package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +2 -3
- package/build/cjs/components/DynamicDimension/DynamicDimension.js +3 -5
- package/build/cjs/components/DynamicDimension/ItemSelector.js +5 -7
- package/build/cjs/components/DynamicDimension/styles/DynamicDimension.style.js +1 -2
- package/build/cjs/components/FileMenu/DeleteDialog.js +3 -3
- package/build/cjs/components/FileMenu/FileMenu.js +4 -5
- package/build/cjs/components/FileMenu/FileMenu.styles.js +2 -4
- package/build/cjs/components/FileMenu/GetLinkDialog.js +1 -1
- package/build/cjs/components/FileMenu/GetLinkDialog.styles.js +1 -2
- package/build/cjs/components/FileMenu/RenameDialog.js +3 -3
- package/build/cjs/components/FileMenu/SaveAsDialog.js +3 -3
- package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +2 -2
- package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +2 -2
- package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +2 -2
- package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +2 -2
- package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +2 -2
- package/build/cjs/components/FileMenu/utils.js +6 -11
- package/build/cjs/components/Filter/Filter.js +2 -3
- package/build/cjs/components/Filter/__tests__/Filter.spec.js +2 -2
- package/build/cjs/components/Filter/styles/Filter.style.js +1 -2
- package/build/cjs/components/Interpretations/InterpretationModal/Comment.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationModal/CommentAddForm.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationModal/CommentDeleteButton.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationModal/CommentUpdateForm.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationModal/InterpretationModal.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationModal/InterpretationThread.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationForm.js +3 -3
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationList.js +1 -1
- package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +4 -5
- package/build/cjs/components/Interpretations/common/Interpretation/Interpretation.js +3 -3
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationDeleteButton.js +1 -1
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationSharingLink.js +3 -3
- package/build/cjs/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +3 -3
- package/build/cjs/components/Interpretations/common/Message/Message.js +1 -1
- package/build/cjs/components/Interpretations/common/Message/MessageButtonStrip.js +1 -1
- package/build/cjs/components/Interpretations/common/Message/MessageEditorContainer.js +1 -1
- package/build/cjs/components/Interpretations/common/Message/MessageIconButton.js +1 -1
- package/build/cjs/components/Interpretations/common/Message/MessageInput.js +5 -6
- package/build/cjs/components/Interpretations/common/Message/MessageStatsBar.js +1 -1
- package/build/cjs/components/LegendKey/LegendKey.js +2 -3
- package/build/cjs/components/LegendKey/styles/LegendKey.style.js +1 -2
- package/build/cjs/components/OfflineTooltip.js +1 -1
- package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +5 -9
- package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +2 -3
- package/build/cjs/components/OpenFileDialog/DateField.js +2 -3
- package/build/cjs/components/OpenFileDialog/FileList.js +2 -3
- package/build/cjs/components/OpenFileDialog/NameFilter.js +2 -3
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +4 -5
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +1 -2
- package/build/cjs/components/OpenFileDialog/PaginationControls.js +2 -3
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +2 -3
- package/build/cjs/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -2
- package/build/cjs/components/OpenFileDialog/utils.js +5 -9
- package/build/cjs/components/Options/VisualizationOptions.js +4 -5
- package/build/cjs/components/Options/styles/VisualizationOptions.style.js +17 -32
- package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +6 -10
- package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +60 -0
- package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +94 -0
- package/build/cjs/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +1 -2
- package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +2 -3
- package/build/cjs/components/PeriodDimension/FixedPeriodSelect.js +7 -8
- package/build/cjs/components/PeriodDimension/PeriodDimension.js +2 -3
- package/build/cjs/components/PeriodDimension/PeriodTransfer.js +5 -6
- package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +2 -3
- package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +2 -2
- package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +2 -2
- package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +2 -2
- package/build/cjs/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -2
- package/build/cjs/components/PeriodDimension/styles/PeriodFilter.style.js +1 -2
- package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +1 -2
- package/build/cjs/components/PeriodDimension/utils/index.js +19 -38
- package/build/cjs/components/PeriodDimension/utils/relativePeriods.js +1 -1
- package/build/cjs/components/PivotTable/PivotTable.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableBody.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableCell.js +3 -4
- package/build/cjs/components/PivotTable/PivotTableClippedAxis.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableColumnHeaders.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableContainer.js +2 -3
- package/build/cjs/components/PivotTable/PivotTableDimensionLabelCell.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableEmptyCell.js +3 -4
- package/build/cjs/components/PivotTable/PivotTableEmptyRow.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableEngineContext.js +4 -5
- package/build/cjs/components/PivotTable/PivotTableHead.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableHeaderCell.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableRow.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableSortIcon.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableTitleRow.js +3 -3
- package/build/cjs/components/PivotTable/PivotTableTitleRows.js +1 -1
- package/build/cjs/components/PivotTable/PivotTableValueCell.js +3 -3
- package/build/cjs/components/PivotTable/icons/SortIconAscending.js +1 -1
- package/build/cjs/components/PivotTable/icons/SortIconDescending.js +1 -1
- package/build/cjs/components/PivotTable/icons/SortIconIdle.js +1 -1
- package/build/cjs/components/PivotTable/styles/PivotTable.style.js +3 -6
- package/build/cjs/components/RichText/Editor/Editor.js +4 -5
- package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +2 -2
- package/build/cjs/components/RichText/Editor/markdownHandler.js +9 -18
- package/build/cjs/components/RichText/Editor/styles/Editor.style.js +4 -8
- package/build/cjs/components/RichText/Parser/MdParser.js +1 -1
- package/build/cjs/components/RichText/Parser/Parser.js +3 -3
- package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +2 -2
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuBar.js +3 -3
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +3 -3
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuList.js +3 -3
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +4 -4
- package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuListItem.styles.js +1 -2
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +4 -4
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +3 -3
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +7 -7
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +5 -5
- package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +1 -1
- package/build/cjs/components/Toolbar/MenuButton.styles.js +1 -2
- package/build/cjs/components/Toolbar/Toolbar.js +1 -1
- package/build/cjs/components/Toolbar/ToolbarSidebar.js +1 -1
- package/build/cjs/components/Toolbar/UpdateButton.js +2 -2
- package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +6 -6
- package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +3 -3
- package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +4 -4
- package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +5 -5
- package/build/cjs/components/TransferOption.js +1 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/LocalesSelect.js +1 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationForm.js +3 -3
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +3 -3
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModalActions.js +1 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/useTranslationsResults.js +1 -1
- package/build/cjs/components/UserMention/UserList.js +1 -1
- package/build/cjs/components/UserMention/UserMentionWrapper.js +3 -4
- package/build/cjs/components/UserMention/styles/UserMentionWrapper.style.js +4 -6
- package/build/cjs/components/UserMention/useUserSearchResults.js +1 -1
- package/build/cjs/components/VisTypeIcon.js +2 -3
- package/build/cjs/components/styles/DimensionSelector.style.js +1 -2
- package/build/cjs/components/styles/DimensionsPanel.style.js +2 -3
- package/build/cjs/components/styles/OfflineTooltip.style.js +1 -2
- package/build/cjs/components/styles/TransferOption.style.js +1 -2
- package/build/cjs/index.js +3 -3
- package/build/cjs/locales/index.js +2 -3
- package/build/cjs/locales/lo/translations.json +16 -12
- package/build/cjs/locales/pt/translations.json +251 -242
- package/build/cjs/locales/vi/translations.json +16 -12
- package/build/cjs/locales/zh/translations.json +2 -0
- package/build/cjs/modules/__tests__/getOuLevelAndGroupText.spec.js +9 -0
- package/build/cjs/modules/axis.js +1 -1
- package/build/cjs/modules/dataSets.js +8 -14
- package/build/cjs/modules/dataTypes.js +24 -47
- package/build/cjs/modules/dimensionListItem.js +1 -1
- package/build/cjs/modules/dimensionSelectorHelper.js +3 -6
- package/build/cjs/modules/expressions.js +6 -11
- package/build/cjs/modules/fontStyle.js +19 -37
- package/build/cjs/modules/getAdaptedUiLayoutByType.js +1 -1
- package/build/cjs/modules/getOuLevelAndGroupText.js +5 -2
- package/build/cjs/modules/hash.js +1 -1
- package/build/cjs/modules/layout/axis.js +10 -16
- package/build/cjs/modules/layout/dimension.js +11 -19
- package/build/cjs/modules/layout/item.js +5 -7
- package/build/cjs/modules/layout/layout.js +3 -4
- package/build/cjs/modules/layout/testResources.js +39 -71
- package/build/cjs/modules/layoutTypes.js +8 -16
- package/build/cjs/modules/layoutUiRules/rules.js +4 -7
- package/build/cjs/modules/legends.js +4 -8
- package/build/cjs/modules/list.js +1 -1
- package/build/cjs/modules/ouIdHelper/index.js +5 -9
- package/build/cjs/modules/outliers/index.js +13 -25
- package/build/cjs/modules/outliers/iqr.js +5 -9
- package/build/cjs/modules/outliers/modZScore.js +2 -3
- package/build/cjs/modules/outliers/normalization.js +2 -2
- package/build/cjs/modules/outliers/zScore.js +2 -3
- package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +3 -3
- package/build/cjs/modules/pivotTable/PivotTableEngine.js +4 -4
- package/build/cjs/modules/pivotTable/clipAxis.js +1 -1
- package/build/cjs/modules/pivotTable/pivotTableConstants.js +32 -62
- package/build/cjs/modules/pivotTable/useParentSize.js +1 -1
- package/build/cjs/modules/pivotTable/useScrollPosition.js +1 -1
- package/build/cjs/modules/pivotTable/useSortableColumns.js +0 -1
- package/build/cjs/modules/predefinedDimensions.js +6 -11
- package/build/cjs/modules/valueTypes.js +21 -42
- package/build/cjs/modules/visTypes.js +24 -47
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customAxes.js +2 -4
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
- package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +7 -6
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +10 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +47 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +107 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getCategories.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getCumulativeData.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getFormatter.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getSortedConfig.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getSteps.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +36 -26
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/pane/index.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +2 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/scatter.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +61 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/gauge.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +58 -24
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +51 -23
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js +3 -3
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/scatter.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +1 -1
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +7 -8
- package/build/cjs/visualizations/config/adapters/index.js +5 -8
- package/build/cjs/visualizations/config/generators/highcharts/index.js +5 -1
- package/build/cjs/visualizations/config/generators/index.js +5 -8
- package/build/cjs/visualizations/config/index.js +1 -1
- package/build/cjs/visualizations/config/validators/index.js +3 -4
- package/build/cjs/visualizations/index.js +2 -3
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
- package/build/cjs/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
- package/build/cjs/visualizations/store/adapters/index.js +5 -8
- package/build/cjs/visualizations/store/index.js +1 -1
- package/build/cjs/visualizations/store/validators/dhis/index.js +1 -1
- package/build/cjs/visualizations/store/validators/index.js +3 -4
- package/build/cjs/visualizations/util/__tests__/getFilterText.spec.js +1 -1
- package/build/cjs/visualizations/util/colors/colorSets.js +11 -20
- package/build/cjs/visualizations/util/colors/themes.js +3 -5
- package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
- package/build/es/__demo__/CalculationModal.stories.js +20 -6
- package/build/es/__demo__/DimensionsPanel.stories.js +43 -17
- package/build/es/__demo__/DynamicDimension.stories.js +18 -7
- package/build/es/__demo__/FileMenu.stories.js +15 -5
- package/build/es/__demo__/Filter.stories.js +8 -3
- package/build/es/__demo__/FixedPeriodSelect.stories.js +18 -7
- package/build/es/__demo__/InterpretationsUnit.stories.js +10 -5
- package/build/es/__demo__/OpenFileDialog.stories.js +34 -26
- package/build/es/__demo__/OrgUnitDimension.stories.js +61 -26
- package/build/es/__demo__/PeriodDimension.stories.js +44 -13
- package/build/es/__demo__/PivotTable.stories.js +249 -99
- package/build/es/__demo__/SingleValue.stories.js +675 -0
- package/build/es/__demo__/Toolbar.stories.js +8 -3
- package/build/es/api/analytics/AnalyticsResponse.js +0 -1
- package/build/es/components/DataDimension/Calculation/DataElementOption.js +1 -1
- package/build/es/components/DataDimension/Calculation/DndContext.js +3 -3
- package/build/es/components/DataDimension/Calculation/FormulaItem.js +1 -1
- package/build/es/components/DataDimension/Calculation/Operator.js +1 -1
- package/build/es/components/DataDimension/ItemSelector.js +1 -2
- package/build/es/components/DimensionMenu.js +3 -3
- package/build/es/components/DimensionsPanel/DimensionsPanel.js +3 -3
- package/build/es/components/DimensionsPanel/List/DimensionItem.js +4 -4
- package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -3
- package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +1 -1
- package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +1 -1
- package/build/es/components/DynamicDimension/ItemSelector.js +1 -2
- package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
- package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +1 -1
- package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +1 -1
- package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
- package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
- package/build/es/components/Filter/__tests__/Filter.spec.js +1 -1
- package/build/es/components/Interpretations/common/Message/MessageInput.js +1 -1
- package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +2 -5
- package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +57 -0
- package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +94 -0
- package/build/es/components/PeriodDimension/FixedPeriodSelect.js +3 -3
- package/build/es/components/PeriodDimension/PeriodTransfer.js +1 -1
- package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +1 -1
- package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +1 -1
- package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +1 -1
- package/build/es/components/PeriodDimension/utils/fixedPeriods.js +0 -1
- package/build/es/components/PivotTable/PivotTableCell.js +1 -1
- package/build/es/components/PivotTable/PivotTableEmptyCell.js +1 -1
- package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +1 -1
- package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +1 -1
- package/build/es/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +1 -1
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +3 -3
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +2 -2
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +6 -6
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +4 -4
- package/build/es/components/Toolbar/UpdateButton.js +1 -1
- package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +5 -5
- package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +2 -2
- package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +3 -3
- package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +4 -4
- package/build/es/components/UserMention/UserMentionWrapper.js +0 -1
- package/build/es/locales/lo/translations.json +16 -12
- package/build/es/locales/pt/translations.json +251 -242
- package/build/es/locales/vi/translations.json +16 -12
- package/build/es/locales/zh/translations.json +2 -0
- package/build/es/modules/__tests__/getOuLevelAndGroupText.spec.js +9 -0
- package/build/es/modules/getOuLevelAndGroupText.js +4 -1
- package/build/es/modules/pivotTable/AdaptiveClippingController.js +3 -3
- package/build/es/modules/pivotTable/PivotTableEngine.js +3 -3
- package/build/es/modules/pivotTable/useSortableColumns.js +0 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
- package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +41 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +100 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
- package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +3 -3
- package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/series/scatter.js +2 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +58 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
- package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
- package/build/es/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js +1 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
- package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js +2 -2
- package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +6 -7
- package/build/es/visualizations/config/adapters/index.js +1 -3
- package/build/es/visualizations/config/generators/highcharts/index.js +4 -0
- package/build/es/visualizations/config/generators/index.js +1 -3
- package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
- package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
- package/build/es/visualizations/store/adapters/index.js +1 -3
- package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
- package/package.json +13 -11
- package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
- package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
- package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
- package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
- package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
- package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
- package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
- package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
- package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
- package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
- package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
- package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
- package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
- package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
- package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
- package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
- package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
- package/build/es/visualizations/config/generators/dhis/index.js +0 -21
- package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
- package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
- package/build/es/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -4
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
"About this map": "",
|
|
19
19
|
"About this line list": "",
|
|
20
20
|
"About this visualization": "",
|
|
21
|
+
"About this event chart": "",
|
|
22
|
+
"About this event report": "",
|
|
21
23
|
"This app could not retrieve required data.": "",
|
|
22
24
|
"Network error": "Lỗi mạng",
|
|
23
25
|
"Data / Edit calculation": "",
|
|
@@ -132,17 +134,6 @@
|
|
|
132
134
|
"Manage sharing": "Quản lý chia sẻ",
|
|
133
135
|
"Could not update interpretation": "",
|
|
134
136
|
"Enter interpretation text": "",
|
|
135
|
-
"Bold text": "",
|
|
136
|
-
"Italic text": "",
|
|
137
|
-
"Link to a URL": "",
|
|
138
|
-
"Mention a user": "",
|
|
139
|
-
"Add emoji": "",
|
|
140
|
-
"Preview": "Xem thử",
|
|
141
|
-
"Back to write mode": "",
|
|
142
|
-
"Too many results. Try refining the search.": "",
|
|
143
|
-
"Search for a user": "",
|
|
144
|
-
"Searching for \"{{- searchText}}\"": "",
|
|
145
|
-
"No results found": "Không tìm thấy kết quả nào",
|
|
146
137
|
"Not available offline": "",
|
|
147
138
|
"Created by": "Được tạo bởi",
|
|
148
139
|
"Anyone": "Bất kỳ ai",
|
|
@@ -215,7 +206,7 @@
|
|
|
215
206
|
"Quarterly": "Hàng quý",
|
|
216
207
|
"Six-monthly": "Hàng 6 tháng",
|
|
217
208
|
"Six-monthly April": "Hàng 6 tháng - tháng 4",
|
|
218
|
-
"Yearly": "
|
|
209
|
+
"Yearly": "Hàng năm",
|
|
219
210
|
"Financial year (Start November)": "Năm tài chính (Bắt đầu từ tháng 11)",
|
|
220
211
|
"Financial year (Start October)": "Năm Tài Chính - Tháng 10",
|
|
221
212
|
"Financial year (Start July)": "Năm Tài Chính - Tháng 7",
|
|
@@ -271,6 +262,14 @@
|
|
|
271
262
|
"Six-months": "Sáu-tháng",
|
|
272
263
|
"Financial Years": "Năm tài chính",
|
|
273
264
|
"Years": "Năm",
|
|
265
|
+
"Value: {{value}}": "",
|
|
266
|
+
"Bold text": "",
|
|
267
|
+
"Italic text": "",
|
|
268
|
+
"Link to a URL": "",
|
|
269
|
+
"Mention a user": "",
|
|
270
|
+
"Add emoji": "",
|
|
271
|
+
"Preview": "Xem thử",
|
|
272
|
+
"Back to write mode": "",
|
|
274
273
|
"Interpretations and details": "",
|
|
275
274
|
"Translating to": "",
|
|
276
275
|
"Choose a locale": "",
|
|
@@ -281,6 +280,10 @@
|
|
|
281
280
|
"Cannot save while offline": "",
|
|
282
281
|
"Could not load translations": "",
|
|
283
282
|
"Retry": "",
|
|
283
|
+
"Too many results. Try refining the search.": "",
|
|
284
|
+
"Search for a user": "",
|
|
285
|
+
"Searching for \"{{- searchText}}\"": "",
|
|
286
|
+
"No results found": "Không tìm thấy kết quả nào",
|
|
284
287
|
"Series": "Chuỗi Dữ Liệu",
|
|
285
288
|
"Category": "Phân loại",
|
|
286
289
|
"Filter": "Lọc",
|
|
@@ -350,6 +353,7 @@
|
|
|
350
353
|
"{{thresholdFactor}} × Modified Z-score high": "",
|
|
351
354
|
"{{thresholdFactor}} × Z-score low": "",
|
|
352
355
|
"{{thresholdFactor}} × Z-score high": "",
|
|
356
|
+
"Not applicable": "",
|
|
353
357
|
"Data": "Lấy dữ liệu",
|
|
354
358
|
"Organisation unit": "Đơn vị",
|
|
355
359
|
"Assigned Categories": "Phân loại được chỉ định",
|
|
@@ -262,6 +262,7 @@
|
|
|
262
262
|
"Six-months": "六个月",
|
|
263
263
|
"Financial Years": "财政年度",
|
|
264
264
|
"Years": "年",
|
|
265
|
+
"Value: {{value}}": "值{{value}}",
|
|
265
266
|
"Bold text": "粗体文字",
|
|
266
267
|
"Italic text": "斜体文字",
|
|
267
268
|
"Link to a URL": "链接到 URL",
|
|
@@ -352,6 +353,7 @@
|
|
|
352
353
|
"{{thresholdFactor}} × Modified Z-score high": "{{thresholdFactor}}×修改后的Z分数高值",
|
|
353
354
|
"{{thresholdFactor}} × Z-score low": "{{thresholdFactor}}×Z分数低",
|
|
354
355
|
"{{thresholdFactor}} × Z-score high": "{{thresholdFactor}}×Z分数高",
|
|
356
|
+
"Not applicable": "不适用",
|
|
355
357
|
"Data": "数据",
|
|
356
358
|
"Organisation unit": "机构",
|
|
357
359
|
"Assigned Categories": "指定的分类",
|
|
@@ -51,4 +51,13 @@ describe('getOuLevelAndGroupText', () => {
|
|
|
51
51
|
}];
|
|
52
52
|
expect(getOuLevelAndGroupText(filter, metaData)).toEqual('Fruit and Veggies groups - Second floor levels');
|
|
53
53
|
});
|
|
54
|
+
it('grabs name for user orgunits from items when not present in metaData', () => {
|
|
55
|
+
filter.items = [{
|
|
56
|
+
id: 'USER_ORGUNIT',
|
|
57
|
+
name: 'User organisation unit'
|
|
58
|
+
}, {
|
|
59
|
+
id: 'LEVEL-2nd-floor'
|
|
60
|
+
}];
|
|
61
|
+
expect(getOuLevelAndGroupText(filter, metaData)).toEqual('Second floor levels in User organisation unit');
|
|
62
|
+
});
|
|
54
63
|
});
|
|
@@ -20,7 +20,10 @@ export const getOuLevelAndGroupText = (filter, metaData) => {
|
|
|
20
20
|
return filterFragments.join(' - ');
|
|
21
21
|
};
|
|
22
22
|
const getLevelAndGroupText = (items, metaData, isLevel) => {
|
|
23
|
-
const getNameFromMetadata = id =>
|
|
23
|
+
const getNameFromMetadata = id => {
|
|
24
|
+
var _items$find;
|
|
25
|
+
return metaData.items[id] ? metaData.items[id].name : ((_items$find = items.find(item => item.id === id)) === null || _items$find === void 0 ? void 0 : _items$find.name) || id;
|
|
26
|
+
};
|
|
24
27
|
const dynamicOuItems = items.filter(item => isLevel ? ouIdHelper.hasLevelPrefix(item.id) : ouIdHelper.hasGroupPrefix(item.id));
|
|
25
28
|
const lastItem = dynamicOuItems.length > 1 ? dynamicOuItems.pop() : null;
|
|
26
29
|
const dynamicOuNames = dynamicOuItems.map(item => getNameFromMetadata(ouIdHelper.removePrefix(item.id))).join(', ');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function _defineProperty(
|
|
2
|
-
function _toPropertyKey(
|
|
3
|
-
function _toPrimitive(
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import { measureTextWithWrapping } from './measureText.js';
|
|
5
5
|
import { CLIPPED_AXIS_PARTITION_SIZE_PX, CLIPPED_CELL_MIN_SIZE } from './pivotTableConstants.js';
|
|
6
6
|
export class AdaptiveClippingController {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function _defineProperty(
|
|
2
|
-
function _toPropertyKey(
|
|
3
|
-
function _toPrimitive(
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import i18n from '@dhis2/d2-i18n';
|
|
5
5
|
import times from 'lodash/times';
|
|
6
6
|
import { DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET, DIMENSION_TYPE_ORGANISATION_UNIT, DIMENSION_TYPE_PERIOD } from '../dataTypes.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getEvents } from '../events/index.js';
|
|
2
|
+
import getType from '../type.js';
|
|
3
|
+
const DEFAULT_CHART = {
|
|
4
|
+
spacingTop: 20,
|
|
5
|
+
style: {
|
|
6
|
+
fontFamily: 'Roboto,Helvetica Neue,Helvetica,Arial,sans-serif'
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
const DASHBOARD_CHART = {
|
|
10
|
+
spacingTop: 0,
|
|
11
|
+
spacingRight: 5,
|
|
12
|
+
spacingBottom: 2,
|
|
13
|
+
spacingLeft: 5
|
|
14
|
+
};
|
|
15
|
+
export default function getDefaultChart(layout, el, extraOptions) {
|
|
16
|
+
return Object.assign({}, getType(layout.type), {
|
|
17
|
+
renderTo: el || layout.el
|
|
18
|
+
}, DEFAULT_CHART, extraOptions.dashboard ? DASHBOARD_CHART : undefined, getEvents(layout.type));
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
2
|
+
import getDefaultChart from './default.js';
|
|
3
|
+
import getSingleValueChart from './singleValue.js';
|
|
4
|
+
export default function getChart(layout, el, extraOptions, series) {
|
|
5
|
+
switch (layout.type) {
|
|
6
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
7
|
+
return getSingleValueChart(layout, el, extraOptions, series);
|
|
8
|
+
default:
|
|
9
|
+
return getDefaultChart(layout, el, extraOptions);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getSingleValueBackgroundColor } from '../customSVGOptions/singleValue/getSingleValueBackgroundColor.js';
|
|
2
|
+
import getDefaultChart from './default.js';
|
|
3
|
+
export default function getSingleValueChart(layout, el, extraOptions, series) {
|
|
4
|
+
const chart = {
|
|
5
|
+
...getDefaultChart(layout, el, extraOptions),
|
|
6
|
+
backgroundColor: getSingleValueBackgroundColor(layout.legend, extraOptions.legendSets, series[0])
|
|
7
|
+
};
|
|
8
|
+
if (extraOptions.dashboard) {
|
|
9
|
+
chart.spacingTop = 7;
|
|
10
|
+
}
|
|
11
|
+
return chart;
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
|
|
2
|
+
import getSingleValueCustomSVGOptions from './singleValue/index.js';
|
|
3
|
+
export default function getCustomSVGOptions(_ref) {
|
|
4
|
+
let {
|
|
5
|
+
extraConfig,
|
|
6
|
+
layout,
|
|
7
|
+
extraOptions,
|
|
8
|
+
metaData,
|
|
9
|
+
series
|
|
10
|
+
} = _ref;
|
|
11
|
+
const baseOptions = {
|
|
12
|
+
visualizationType: layout.type
|
|
13
|
+
};
|
|
14
|
+
switch (layout.type) {
|
|
15
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
16
|
+
return {
|
|
17
|
+
...baseOptions,
|
|
18
|
+
...getSingleValueCustomSVGOptions({
|
|
19
|
+
extraConfig,
|
|
20
|
+
layout,
|
|
21
|
+
extraOptions,
|
|
22
|
+
metaData,
|
|
23
|
+
series
|
|
24
|
+
})
|
|
25
|
+
};
|
|
26
|
+
default:
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LEGEND_DISPLAY_STYLE_FILL } from '../../../../../../modules/legends.js';
|
|
2
|
+
import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
|
|
3
|
+
export function getSingleValueBackgroundColor(legendOptions, legendSets, value) {
|
|
4
|
+
const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
|
|
5
|
+
return legendColor && legendOptions.style === LEGEND_DISPLAY_STYLE_FILL ? legendColor : 'transparent';
|
|
6
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { renderValue } from '
|
|
2
|
-
import { VALUE_TYPE_TEXT } from '
|
|
3
|
-
|
|
4
|
-
export
|
|
1
|
+
import { renderValue } from '../../../../../../modules/renderValue.js';
|
|
2
|
+
import { VALUE_TYPE_TEXT } from '../../../../../../modules/valueTypes.js';
|
|
3
|
+
export const INDICATOR_FACTOR_100 = 100;
|
|
4
|
+
export function getSingleValueFormattedValue(value, layout, metaData) {
|
|
5
5
|
const valueType = metaData.items[metaData.dimensions.dx[0]].valueType;
|
|
6
6
|
const indicatorType = metaData.items[metaData.dimensions.dx[0]].indicatorType;
|
|
7
7
|
let formattedValue = renderValue(value, valueType || VALUE_TYPE_TEXT, {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { getColorByValueFromLegendSet } from '../../../../../../modules/legends.js';
|
|
2
|
+
export function getSingleValueLegendColor(legendOptions, legendSets, value) {
|
|
3
|
+
const legendSet = legendOptions && legendSets[0];
|
|
4
|
+
return legendSet ? getColorByValueFromLegendSet(legendSet, value) : undefined;
|
|
5
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { INDICATOR_FACTOR_100 } from './getSingleValueFormattedValue.js';
|
|
2
|
+
export function getSingleValueSubtext(metaData) {
|
|
3
|
+
const indicatorType = metaData.items[metaData.dimensions.dx[0]].indicatorType;
|
|
4
|
+
return indicatorType !== null && indicatorType !== void 0 && indicatorType.displayName && (indicatorType === null || indicatorType === void 0 ? void 0 : indicatorType.factor) !== INDICATOR_FACTOR_100 ? indicatorType === null || indicatorType === void 0 ? void 0 : indicatorType.displayName : undefined;
|
|
5
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { colors } from '@dhis2/ui';
|
|
2
|
+
import { LEGEND_DISPLAY_STYLE_TEXT } from '../../../../../../modules/legends.js';
|
|
3
|
+
import { shouldUseContrastColor } from '../../../../../util/shouldUseContrastColor.js';
|
|
4
|
+
import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
|
|
5
|
+
export function getSingleValueTextColor(baseColor, value, legendOptions, legendSets) {
|
|
6
|
+
const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
|
|
7
|
+
if (!legendColor) {
|
|
8
|
+
return baseColor;
|
|
9
|
+
}
|
|
10
|
+
if (legendOptions.style === LEGEND_DISPLAY_STYLE_TEXT) {
|
|
11
|
+
return legendColor;
|
|
12
|
+
}
|
|
13
|
+
return shouldUseContrastColor(legendColor) ? colors.white : baseColor;
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { colors } from '@dhis2/ui';
|
|
2
|
+
import { LEGEND_DISPLAY_STYLE_FILL } from '../../../../../../modules/legends.js';
|
|
3
|
+
import { shouldUseContrastColor } from '../../../../../util/shouldUseContrastColor.js';
|
|
4
|
+
import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
|
|
5
|
+
export function getSingleValueTitleColor(customColor, defaultColor, value, legendOptions, legendSets) {
|
|
6
|
+
// Never override custom color
|
|
7
|
+
if (customColor) {
|
|
8
|
+
return customColor;
|
|
9
|
+
}
|
|
10
|
+
const isUsingLegendBackground = (legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.style) === LEGEND_DISPLAY_STYLE_FILL;
|
|
11
|
+
|
|
12
|
+
// If not using legend background, always return default color
|
|
13
|
+
if (!isUsingLegendBackground) {
|
|
14
|
+
return defaultColor;
|
|
15
|
+
}
|
|
16
|
+
const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
|
|
17
|
+
|
|
18
|
+
// Return default color or contrasting color when using legend background and default color
|
|
19
|
+
return shouldUseContrastColor(legendColor) ? colors.white : defaultColor;
|
|
20
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { colors } from '@dhis2/ui';
|
|
2
|
+
import { getSingleValueFormattedValue } from './getSingleValueFormattedValue.js';
|
|
3
|
+
import { getSingleValueSubtext } from './getSingleValueSubtext.js';
|
|
4
|
+
import { getSingleValueTextColor } from './getSingleValueTextColor.js';
|
|
5
|
+
export default function getSingleValueCustomSVGOptions(_ref) {
|
|
6
|
+
let {
|
|
7
|
+
layout,
|
|
8
|
+
extraOptions,
|
|
9
|
+
metaData,
|
|
10
|
+
series
|
|
11
|
+
} = _ref;
|
|
12
|
+
const {
|
|
13
|
+
dashboard,
|
|
14
|
+
icon
|
|
15
|
+
} = extraOptions;
|
|
16
|
+
const value = series[0];
|
|
17
|
+
return {
|
|
18
|
+
value,
|
|
19
|
+
fontColor: getSingleValueTextColor(colors.grey900, value, layout.legend, extraOptions.legendSets),
|
|
20
|
+
formattedValue: getSingleValueFormattedValue(value, layout, metaData),
|
|
21
|
+
icon,
|
|
22
|
+
dashboard,
|
|
23
|
+
subText: getSingleValueSubtext(metaData)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import loadCustomSVG from './loadCustomSVG/index.js';
|
|
2
|
+
export const getEvents = visType => ({
|
|
3
|
+
events: {
|
|
4
|
+
load: function () {
|
|
5
|
+
// Align legend icon with legend text
|
|
6
|
+
this.legend.allItems.forEach(item => {
|
|
7
|
+
if (item.legendSymbol) {
|
|
8
|
+
item.legendSymbol.attr({
|
|
9
|
+
translateY: -(item.legendItem.label.getBBox().height * 0.75 / 4) + item.legendSymbol.r / 2
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
loadCustomSVG.call(this, visType);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VIS_TYPE_SINGLE_VALUE } from '../../../../../../modules/visTypes.js';
|
|
2
|
+
import loadSingleValueSVG from './singleValue/index.js';
|
|
3
|
+
export default function loadCustomSVG(visType) {
|
|
4
|
+
switch (visType) {
|
|
5
|
+
case VIS_TYPE_SINGLE_VALUE:
|
|
6
|
+
loadSingleValueSVG.call(this);
|
|
7
|
+
break;
|
|
8
|
+
default:
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const parser = new DOMParser();
|
|
2
|
+
export function addIconElement(svgString, color) {
|
|
3
|
+
const svgIconDocument = parser.parseFromString(svgString, 'image/svg+xml');
|
|
4
|
+
const iconElHeight = svgIconDocument.documentElement.getAttribute('height');
|
|
5
|
+
const iconElWidth = svgIconDocument.documentElement.getAttribute('width');
|
|
6
|
+
const iconGroup = this.renderer.g('icon').attr({
|
|
7
|
+
color,
|
|
8
|
+
'data-test': 'visualization-icon'
|
|
9
|
+
}).css({
|
|
10
|
+
visibility: 'hidden'
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
/* Force the group element to have the same dimensions as the original
|
|
14
|
+
* SVG image by adding this rect. This ensures the icon has the intended
|
|
15
|
+
* whitespace around it and makes scaling and translating easier. */
|
|
16
|
+
this.renderer.rect(0, 0, iconElWidth, iconElHeight).add(iconGroup);
|
|
17
|
+
Array.from(svgIconDocument.documentElement.children).forEach(pathNode => {
|
|
18
|
+
/* It is also possible to use the SVGRenderer to draw the icon but that
|
|
19
|
+
* approach is more error prone, so during review it was decided to just
|
|
20
|
+
* append the SVG children to the iconGroup using native the native DOM
|
|
21
|
+
* API. For reference see this commit, for an implementation using the
|
|
22
|
+
* SVVGRenderer:
|
|
23
|
+
* https://github.com/dhis2/analytics/pull/1698/commits/f95bee838e07f4cdfc3cab6e92f28f49a386a0ad */
|
|
24
|
+
iconGroup.element.appendChild(pathNode);
|
|
25
|
+
});
|
|
26
|
+
iconGroup.add();
|
|
27
|
+
return iconGroup;
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
|
|
2
|
+
export function checkIfFitsWithinContainer(availableSpace, valueElement, subTextElement, icon, subText, spacing) {
|
|
3
|
+
const valueRect = valueElement.getBBox(true);
|
|
4
|
+
const subTextRect = subText ? subTextElement.getBBox(true) : {
|
|
5
|
+
width: 0,
|
|
6
|
+
height: 0
|
|
7
|
+
};
|
|
8
|
+
const requiredValueWidth = icon ? valueRect.width + spacing.iconGap + spacing.iconSize : valueRect.width;
|
|
9
|
+
const requiredHeight = subText ? valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR + spacing.subTextTop + subTextRect.height : valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
|
|
10
|
+
const fitsHorizontally = availableSpace.width > requiredValueWidth && availableSpace.width > subTextRect.width;
|
|
11
|
+
const fitsVertically = availableSpace.height > requiredHeight;
|
|
12
|
+
return fitsHorizontally && fitsVertically;
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { computeSpacingTop } from './computeSpacingTop.js';
|
|
2
|
+
import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
|
|
3
|
+
export function computeLayoutRect(valueElement, subTextElement, iconElement, spacing) {
|
|
4
|
+
const valueRect = valueElement.getBBox();
|
|
5
|
+
const containerCenterY = this.chartHeight / 2;
|
|
6
|
+
const containerCenterX = this.chartWidth / 2;
|
|
7
|
+
const minY = computeSpacingTop.call(this, spacing.valueTop);
|
|
8
|
+
let width = valueRect.width;
|
|
9
|
+
let height = valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
|
|
10
|
+
let sideMarginTop = 0;
|
|
11
|
+
let sideMarginBottom = 0;
|
|
12
|
+
if (iconElement) {
|
|
13
|
+
width += spacing.iconGap + spacing.iconSize;
|
|
14
|
+
}
|
|
15
|
+
if (subTextElement) {
|
|
16
|
+
const subTextRect = subTextElement.getBBox();
|
|
17
|
+
if (subTextRect.width > width) {
|
|
18
|
+
sideMarginTop = (subTextRect.width - width) / 2;
|
|
19
|
+
width = subTextRect.width;
|
|
20
|
+
} else {
|
|
21
|
+
sideMarginBottom = (width - subTextRect.width) / 2;
|
|
22
|
+
}
|
|
23
|
+
height += spacing.subTextTop + subTextRect.height;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
x: containerCenterX - width / 2,
|
|
27
|
+
y: Math.max(containerCenterY - height / 2, minY),
|
|
28
|
+
width,
|
|
29
|
+
height,
|
|
30
|
+
sideMarginTop,
|
|
31
|
+
sideMarginBottom
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function computeSpacingTop(valueSpacingTop) {
|
|
2
|
+
if (this.subtitle.textStr) {
|
|
3
|
+
/* If a subtitle is present this will be below the title so base
|
|
4
|
+
* the value X position on this */
|
|
5
|
+
const subTitleRect = this.subtitle.element.getBBox();
|
|
6
|
+
return subTitleRect.y + subTitleRect.height + valueSpacingTop;
|
|
7
|
+
} else if (this.title.textStr) {
|
|
8
|
+
// Otherwise base on title
|
|
9
|
+
const titleRect = this.title.element.getBBox();
|
|
10
|
+
return titleRect.y + titleRect.height + valueSpacingTop;
|
|
11
|
+
} else {
|
|
12
|
+
// If neither are present only adjust for valueSpacingTop
|
|
13
|
+
return valueSpacingTop;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { computeSpacingTop } from './computeSpacingTop.js';
|
|
2
|
+
import { MIN_SIDE_WHITESPACE } from './styles.js';
|
|
3
|
+
export function getAvailableSpace(valueSpacingTop) {
|
|
4
|
+
return {
|
|
5
|
+
height: this.chartHeight - computeSpacingTop.call(this, valueSpacingTop),
|
|
6
|
+
width: this.chartWidth - MIN_SIDE_WHITESPACE * 2
|
|
7
|
+
};
|
|
8
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { addIconElement } from './addIconElement.js';
|
|
2
|
+
import { checkIfFitsWithinContainer } from './checkIfFitsWithinContainer.js';
|
|
3
|
+
import { getAvailableSpace } from './getAvailableSpace.js';
|
|
4
|
+
import { positionElements } from './positionElements.js';
|
|
5
|
+
import { DynamicStyles } from './styles.js';
|
|
6
|
+
export default function loadSingleValueSVG() {
|
|
7
|
+
const {
|
|
8
|
+
formattedValue,
|
|
9
|
+
icon,
|
|
10
|
+
subText,
|
|
11
|
+
fontColor
|
|
12
|
+
} = this.userOptions.customSVGOptions;
|
|
13
|
+
const dynamicStyles = new DynamicStyles();
|
|
14
|
+
const valueElement = this.renderer.text(formattedValue).attr('data-test', 'visualization-primary-value').css({
|
|
15
|
+
color: fontColor,
|
|
16
|
+
visibility: 'hidden'
|
|
17
|
+
}).add();
|
|
18
|
+
const subTextElement = subText ? this.renderer.text(subText).attr('data-test', 'visualization-subtext').css({
|
|
19
|
+
color: fontColor,
|
|
20
|
+
visibility: 'hidden'
|
|
21
|
+
}).add() : null;
|
|
22
|
+
const iconElement = icon ? addIconElement.call(this, icon, fontColor) : null;
|
|
23
|
+
let fitsWithinContainer = false;
|
|
24
|
+
let styles = {};
|
|
25
|
+
while (!fitsWithinContainer && dynamicStyles.hasNext()) {
|
|
26
|
+
styles = dynamicStyles.next();
|
|
27
|
+
valueElement.css(styles.value);
|
|
28
|
+
subTextElement === null || subTextElement === void 0 ? void 0 : subTextElement.css(styles.subText);
|
|
29
|
+
fitsWithinContainer = checkIfFitsWithinContainer(getAvailableSpace.call(this, styles.spacing.valueTop), valueElement, subTextElement, icon, subText, styles.spacing);
|
|
30
|
+
}
|
|
31
|
+
positionElements.call(this, valueElement, subTextElement, iconElement, styles.spacing);
|
|
32
|
+
valueElement.css({
|
|
33
|
+
visibility: 'visible'
|
|
34
|
+
});
|
|
35
|
+
iconElement === null || iconElement === void 0 ? void 0 : iconElement.css({
|
|
36
|
+
visibility: 'visible'
|
|
37
|
+
});
|
|
38
|
+
subTextElement === null || subTextElement === void 0 ? void 0 : subTextElement.css({
|
|
39
|
+
visibility: 'visible'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { computeLayoutRect } from './computeLayoutRect.js';
|
|
2
|
+
import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
|
|
3
|
+
export function positionElements(valueElement, subTextElement, iconElement, spacing) {
|
|
4
|
+
const valueElementBox = valueElement.getBBox();
|
|
5
|
+
/* Layout here refers to a virtual rect that wraps
|
|
6
|
+
* all indiviual parts of the single value visualization
|
|
7
|
+
* (value, subtext and icon) */
|
|
8
|
+
const layoutRect = computeLayoutRect.call(this, valueElement, subTextElement, iconElement, spacing);
|
|
9
|
+
valueElement.align({
|
|
10
|
+
align: 'right',
|
|
11
|
+
verticalAlign: 'top',
|
|
12
|
+
alignByTranslate: false,
|
|
13
|
+
x: (valueElementBox.width + layoutRect.sideMarginTop) * -1,
|
|
14
|
+
y: valueElementBox.height * ACTUAL_NUMBER_HEIGHT_FACTOR
|
|
15
|
+
}, false, layoutRect);
|
|
16
|
+
if (iconElement) {
|
|
17
|
+
const {
|
|
18
|
+
height
|
|
19
|
+
} = iconElement.getBBox();
|
|
20
|
+
const scale = spacing.iconSize / height;
|
|
21
|
+
const translateX = layoutRect.x + layoutRect.sideMarginTop;
|
|
22
|
+
const iconHeight = height * scale;
|
|
23
|
+
const valueElementHeight = valueElementBox.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
|
|
24
|
+
const translateY = layoutRect.y + (valueElementHeight - iconHeight) / 2;
|
|
25
|
+
|
|
26
|
+
/* The icon is a <g> with <path> elements that contain coordinates.
|
|
27
|
+
* These path-coordinates only scale correctly when using CSS translate */
|
|
28
|
+
iconElement.css({
|
|
29
|
+
transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (subTextElement) {
|
|
33
|
+
subTextElement.align({
|
|
34
|
+
align: 'left',
|
|
35
|
+
verticalAlign: 'bottom',
|
|
36
|
+
alignByTranslate: false,
|
|
37
|
+
x: layoutRect.sideMarginBottom
|
|
38
|
+
}, false, layoutRect);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
const valueStyles = [{
|
|
2
|
+
'font-size': '164px',
|
|
3
|
+
'letter-spacing': '-5px'
|
|
4
|
+
}, {
|
|
5
|
+
'font-size': '128px',
|
|
6
|
+
'letter-spacing': '-4px'
|
|
7
|
+
}, {
|
|
8
|
+
'font-size': '96px',
|
|
9
|
+
'letter-spacing': '-3px'
|
|
10
|
+
}, {
|
|
11
|
+
'font-size': '64px',
|
|
12
|
+
'letter-spacing': '-2.5px'
|
|
13
|
+
}, {
|
|
14
|
+
'font-size': '40px',
|
|
15
|
+
'letter-spacing': '-1.5px'
|
|
16
|
+
}, {
|
|
17
|
+
'font-size': '20px',
|
|
18
|
+
'letter-spacing': '-1px'
|
|
19
|
+
}];
|
|
20
|
+
const subTextStyles = [{
|
|
21
|
+
'font-size': '36px',
|
|
22
|
+
'letter-spacing': '-1.4px'
|
|
23
|
+
}, {
|
|
24
|
+
'font-size': '32px',
|
|
25
|
+
'letter-spacing': '-1.2px'
|
|
26
|
+
}, {
|
|
27
|
+
'font-size': '26px',
|
|
28
|
+
'letter-spacing': '-0.8px'
|
|
29
|
+
}, {
|
|
30
|
+
'font-size': '20px',
|
|
31
|
+
'letter-spacing': '-0.6px'
|
|
32
|
+
}, {
|
|
33
|
+
'font-size': '14px',
|
|
34
|
+
'letter-spacing': '0.2px'
|
|
35
|
+
}, {
|
|
36
|
+
'font-size': '9px',
|
|
37
|
+
'letter-spacing': '0px'
|
|
38
|
+
}];
|
|
39
|
+
const spacings = [{
|
|
40
|
+
valueTop: 8,
|
|
41
|
+
subTextTop: 12,
|
|
42
|
+
iconGap: 8,
|
|
43
|
+
iconSize: 164
|
|
44
|
+
}, {
|
|
45
|
+
valueTop: 8,
|
|
46
|
+
subTextTop: 12,
|
|
47
|
+
iconGap: 6,
|
|
48
|
+
iconSize: 128
|
|
49
|
+
}, {
|
|
50
|
+
valueTop: 8,
|
|
51
|
+
subTextTop: 8,
|
|
52
|
+
iconGap: 4,
|
|
53
|
+
iconSize: 96
|
|
54
|
+
}, {
|
|
55
|
+
valueTop: 8,
|
|
56
|
+
subTextTop: 8,
|
|
57
|
+
iconGap: 4,
|
|
58
|
+
iconSize: 64
|
|
59
|
+
}, {
|
|
60
|
+
valueTop: 8,
|
|
61
|
+
subTextTop: 8,
|
|
62
|
+
iconGap: 4,
|
|
63
|
+
iconSize: 40
|
|
64
|
+
}, {
|
|
65
|
+
valueTop: 8,
|
|
66
|
+
subTextTop: 4,
|
|
67
|
+
iconGap: 2,
|
|
68
|
+
iconSize: 20
|
|
69
|
+
}];
|
|
70
|
+
export const MIN_SIDE_WHITESPACE = 4;
|
|
71
|
+
export class DynamicStyles {
|
|
72
|
+
constructor() {
|
|
73
|
+
this.currentIndex = 0;
|
|
74
|
+
}
|
|
75
|
+
getStyle() {
|
|
76
|
+
return {
|
|
77
|
+
value: {
|
|
78
|
+
...valueStyles[this.currentIndex],
|
|
79
|
+
'font-weight': '300'
|
|
80
|
+
},
|
|
81
|
+
subText: subTextStyles[this.currentIndex],
|
|
82
|
+
spacing: spacings[this.currentIndex]
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
next() {
|
|
86
|
+
if (this.currentIndex === valueStyles.length - 1) {
|
|
87
|
+
throw new Error('No next available, already on the smallest style');
|
|
88
|
+
} else {
|
|
89
|
+
++this.currentIndex;
|
|
90
|
+
}
|
|
91
|
+
return this.getStyle();
|
|
92
|
+
}
|
|
93
|
+
first() {
|
|
94
|
+
this.currentIndex = 0;
|
|
95
|
+
return this.getStyle();
|
|
96
|
+
}
|
|
97
|
+
hasNext() {
|
|
98
|
+
return this.currentIndex < valueStyles.length - 1;
|
|
99
|
+
}
|
|
100
|
+
}
|