@dhis2/analytics 28.0.4 → 28.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/__demo__/OpenFileDialog.stories.js +19 -1
- package/build/cjs/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
- package/build/cjs/__demo__/PivotTable.event.stories.js +440 -0
- package/build/cjs/__demo__/data/event/boolean.data.hidena.json +115 -0
- package/build/cjs/__demo__/data/event/boolean.data.json +125 -0
- package/build/cjs/__demo__/data/event/boolean.data.org.json +106 -0
- package/build/cjs/__demo__/data/event/boolean.visualization.json +160 -0
- package/build/cjs/__demo__/data/event/date.data.hidena.json +205 -0
- package/build/cjs/__demo__/data/event/date.data.json +215 -0
- package/build/cjs/__demo__/data/event/date.data.org.json +123 -0
- package/build/cjs/__demo__/data/event/date.visualization.json +160 -0
- package/build/cjs/__demo__/data/event/datetime.data.hidena.json +215 -0
- package/build/cjs/__demo__/data/event/datetime.data.json +225 -0
- package/build/cjs/__demo__/data/event/datetime.data.org.json +124 -0
- package/build/cjs/__demo__/data/event/datetime.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/email.data.hidena.json +192 -0
- package/build/cjs/__demo__/data/event/email.data.json +202 -0
- package/build/cjs/__demo__/data/event/email.data.org.json +123 -0
- package/build/cjs/__demo__/data/event/email.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/integer.data.hidena.json +165 -0
- package/build/cjs/__demo__/data/event/integer.data.json +175 -0
- package/build/cjs/__demo__/data/event/integer.data.org.json +120 -0
- package/build/cjs/__demo__/data/event/integer.visualization.json +163 -0
- package/build/cjs/__demo__/data/event/legendset.data.hidena.json +154 -0
- package/build/cjs/__demo__/data/event/legendset.data.json +164 -0
- package/build/cjs/__demo__/data/event/legendset.visualization.json +166 -0
- package/build/cjs/__demo__/data/event/optionset.data.hidena.json +125 -0
- package/build/cjs/__demo__/data/event/optionset.data.json +134 -0
- package/build/cjs/__demo__/data/event/optionset.data.org.json +125 -0
- package/build/cjs/__demo__/data/event/optionset.visualization.json +158 -0
- package/build/cjs/__demo__/data/event/time.data.hidena.json +165 -0
- package/build/cjs/__demo__/data/event/time.data.json +175 -0
- package/build/cjs/__demo__/data/event/time.data.org.json +128 -0
- package/build/cjs/__demo__/data/event/time.visualization.json +148 -0
- package/build/cjs/__demo__/data/event/yesonly.data.hidena.json +127 -0
- package/build/cjs/__demo__/data/event/yesonly.data.json +136 -0
- package/build/cjs/__demo__/data/event/yesonly.data.org.json +124 -0
- package/build/cjs/__demo__/data/event/yesonly.visualization.json +161 -0
- package/build/cjs/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
- package/build/cjs/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +48 -41
- package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +36 -33
- package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +24 -27
- package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +51 -31
- package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +28 -31
- package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +17 -11
- package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +44 -37
- package/build/cjs/components/Filter/__tests__/Filter.spec.js +29 -34
- package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +9 -1
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +14 -34
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +39 -1
- package/build/cjs/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +51 -0
- package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +78 -44
- package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +14 -21
- package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +27 -23
- package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
- package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
- package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +6 -7
- package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +22 -23
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +52 -42
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +8 -8
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +23 -17
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +19 -18
- package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +8 -8
- package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +14 -11
- package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +16 -14
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +25 -16
- package/build/cjs/index.js +8 -0
- package/build/cjs/locales/en/translations.json +1 -0
- package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +2 -1
- package/build/cjs/modules/pivotTable/getHeaderForDisplay.js +4 -1
- package/build/cjs/modules/pivotTable/measureText.js +7 -6
- package/build/cjs/modules/response/event/__tests__/default.spec.js +77 -0
- package/build/cjs/modules/response/event/__tests__/optionSet.spec.js +35 -0
- package/build/cjs/modules/response/event/__tests__/response.spec.js +125 -0
- package/build/cjs/modules/response/event/default.js +65 -0
- package/build/cjs/modules/response/event/optionSet.js +36 -0
- package/build/cjs/modules/response/event/response.js +95 -0
- package/build/es/__demo__/OpenFileDialog.stories.js +17 -0
- package/build/es/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
- package/build/es/__demo__/PivotTable.event.stories.js +414 -0
- package/build/es/__demo__/data/event/boolean.data.hidena.json +115 -0
- package/build/es/__demo__/data/event/boolean.data.json +125 -0
- package/build/es/__demo__/data/event/boolean.data.org.json +106 -0
- package/build/es/__demo__/data/event/boolean.visualization.json +160 -0
- package/build/es/__demo__/data/event/date.data.hidena.json +205 -0
- package/build/es/__demo__/data/event/date.data.json +215 -0
- package/build/es/__demo__/data/event/date.data.org.json +123 -0
- package/build/es/__demo__/data/event/date.visualization.json +160 -0
- package/build/es/__demo__/data/event/datetime.data.hidena.json +215 -0
- package/build/es/__demo__/data/event/datetime.data.json +225 -0
- package/build/es/__demo__/data/event/datetime.data.org.json +124 -0
- package/build/es/__demo__/data/event/datetime.visualization.json +148 -0
- package/build/es/__demo__/data/event/email.data.hidena.json +192 -0
- package/build/es/__demo__/data/event/email.data.json +202 -0
- package/build/es/__demo__/data/event/email.data.org.json +123 -0
- package/build/es/__demo__/data/event/email.visualization.json +148 -0
- package/build/es/__demo__/data/event/integer.data.hidena.json +165 -0
- package/build/es/__demo__/data/event/integer.data.json +175 -0
- package/build/es/__demo__/data/event/integer.data.org.json +120 -0
- package/build/es/__demo__/data/event/integer.visualization.json +163 -0
- package/build/es/__demo__/data/event/legendset.data.hidena.json +154 -0
- package/build/es/__demo__/data/event/legendset.data.json +164 -0
- package/build/es/__demo__/data/event/legendset.visualization.json +166 -0
- package/build/es/__demo__/data/event/optionset.data.hidena.json +125 -0
- package/build/es/__demo__/data/event/optionset.data.json +134 -0
- package/build/es/__demo__/data/event/optionset.data.org.json +125 -0
- package/build/es/__demo__/data/event/optionset.visualization.json +158 -0
- package/build/es/__demo__/data/event/time.data.hidena.json +165 -0
- package/build/es/__demo__/data/event/time.data.json +175 -0
- package/build/es/__demo__/data/event/time.data.org.json +128 -0
- package/build/es/__demo__/data/event/time.visualization.json +148 -0
- package/build/es/__demo__/data/event/yesonly.data.hidena.json +127 -0
- package/build/es/__demo__/data/event/yesonly.data.json +136 -0
- package/build/es/__demo__/data/event/yesonly.data.org.json +124 -0
- package/build/es/__demo__/data/event/yesonly.visualization.json +161 -0
- package/build/es/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
- package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +47 -40
- package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +35 -32
- package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +23 -26
- package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +52 -32
- package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +27 -30
- package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +18 -12
- package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +43 -36
- package/build/es/components/Filter/__tests__/Filter.spec.js +28 -33
- package/build/es/components/OpenFileDialog/CreatedByFilter.js +7 -0
- package/build/es/components/OpenFileDialog/OpenFileDialog.js +14 -35
- package/build/es/components/OpenFileDialog/VisTypeFilter.js +38 -1
- package/build/es/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +49 -0
- package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +77 -43
- package/build/es/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/es/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +13 -20
- package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +26 -22
- package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
- package/build/es/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
- package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +7 -8
- package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +21 -22
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +53 -43
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +7 -7
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +21 -15
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +18 -17
- package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +7 -7
- package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +13 -10
- package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +15 -13
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +24 -15
- package/build/es/index.js +4 -0
- package/build/es/locales/en/translations.json +1 -0
- package/build/es/modules/pivotTable/AdaptiveClippingController.js +2 -1
- package/build/es/modules/pivotTable/getHeaderForDisplay.js +4 -1
- package/build/es/modules/pivotTable/measureText.js +7 -6
- package/build/es/modules/response/event/__tests__/default.spec.js +75 -0
- package/build/es/modules/response/event/__tests__/optionSet.spec.js +32 -0
- package/build/es/modules/response/event/__tests__/response.spec.js +122 -0
- package/build/es/modules/response/event/default.js +52 -0
- package/build/es/modules/response/event/optionSet.js +27 -0
- package/build/es/modules/response/event/response.js +86 -0
- package/package.json +2 -4
- package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -29
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
- package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -26
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
- /package/build/cjs/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
- /package/build/cjs/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
- /package/build/cjs/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
- /package/build/cjs/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
- /package/build/cjs/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
- /package/build/es/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
- /package/build/es/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
- /package/build/es/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
- /package/build/es/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
- /package/build/es/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
- /package/build/es/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
- /package/build/es/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
- /package/build/es/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
- /package/build/es/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
- /package/build/es/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
- /package/build/es/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
- /package/build/es/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
- /package/build/es/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
- /package/build/es/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
- /package/build/es/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
- /package/build/es/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
- /package/build/es/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
- /package/build/es/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
- /package/build/es/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
- /package/build/es/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
- /package/build/es/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
- /package/build/es/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
- /package/build/es/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.OpenFileDialog = void 0;
|
|
6
|
+
exports.formatFilters = exports.default = exports.OpenFileDialog = void 0;
|
|
7
7
|
var _style = _interopRequireDefault(require("styled-jsx/style"));
|
|
8
8
|
var _appRuntime = require("@dhis2/app-runtime");
|
|
9
9
|
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
@@ -11,7 +11,6 @@ var _ui = require("@dhis2/ui");
|
|
|
11
11
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var _visTypes = require("../../modules/visTypes.js");
|
|
15
14
|
var _CreatedByFilter = require("./CreatedByFilter.js");
|
|
16
15
|
var _FileList = require("./FileList.js");
|
|
17
16
|
var _NameFilter = require("./NameFilter.js");
|
|
@@ -44,6 +43,16 @@ const getQuery = type => ({
|
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
});
|
|
46
|
+
const formatFilters = (currentUser, filters, filterVisTypes) => {
|
|
47
|
+
const queryFilters = [];
|
|
48
|
+
filters.searchTerm && queryFilters.push(`identifiable:token:${filters.searchTerm}`);
|
|
49
|
+
const userFilter = (0, _CreatedByFilter.formatUserFilter)(filters.createdBy, currentUser.id);
|
|
50
|
+
userFilter && queryFilters.push(userFilter);
|
|
51
|
+
const typeFilter = (0, _VisTypeFilter.formatTypeFilter)(filterVisTypes, filters.visType);
|
|
52
|
+
typeFilter && queryFilters.push(typeFilter);
|
|
53
|
+
return queryFilters;
|
|
54
|
+
};
|
|
55
|
+
exports.formatFilters = formatFilters;
|
|
47
56
|
const OpenFileDialog = ({
|
|
48
57
|
type,
|
|
49
58
|
open,
|
|
@@ -76,36 +85,7 @@ const OpenFileDialog = ({
|
|
|
76
85
|
});
|
|
77
86
|
const [nameFilterValue, setNameFilterValue] = (0, _react.useState)(defaultFilters.searchTerm);
|
|
78
87
|
const [searchTimeout, setSearchTimeout] = (0, _react.useState)(null);
|
|
79
|
-
const
|
|
80
|
-
const queryFilters = [];
|
|
81
|
-
switch (filters.createdBy) {
|
|
82
|
-
case _CreatedByFilter.CREATED_BY_ALL_BUT_CURRENT_USER:
|
|
83
|
-
queryFilters.push(`user.id:!eq:${currentUser.id}`);
|
|
84
|
-
break;
|
|
85
|
-
case _CreatedByFilter.CREATED_BY_CURRENT_USER:
|
|
86
|
-
queryFilters.push(`user.id:eq:${currentUser.id}`);
|
|
87
|
-
break;
|
|
88
|
-
case _CreatedByFilter.CREATED_BY_ALL:
|
|
89
|
-
default:
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
if (filters.visType) {
|
|
93
|
-
switch (filters.visType) {
|
|
94
|
-
case _visTypes.VIS_TYPE_GROUP_ALL:
|
|
95
|
-
break;
|
|
96
|
-
case _visTypes.VIS_TYPE_GROUP_CHARTS:
|
|
97
|
-
queryFilters.push('type:!eq:PIVOT_TABLE');
|
|
98
|
-
break;
|
|
99
|
-
default:
|
|
100
|
-
queryFilters.push(`type:eq:${filters.visType}`);
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (filters.searchTerm) {
|
|
105
|
-
queryFilters.push(`identifiable:token:${filters.searchTerm}`);
|
|
106
|
-
}
|
|
107
|
-
return queryFilters;
|
|
108
|
-
}, [currentUser, filters]);
|
|
88
|
+
const formatFiltersCb = (0, _react.useCallback)(() => formatFilters(currentUser, filters, filterVisTypes), [currentUser, filters, filterVisTypes]);
|
|
109
89
|
const formatSortDirection = (0, _react.useCallback)(() => {
|
|
110
90
|
if (sortField === 'displayName' && sortDirection !== 'default') {
|
|
111
91
|
return `i${sortDirection}`;
|
|
@@ -150,10 +130,10 @@ const OpenFileDialog = ({
|
|
|
150
130
|
page,
|
|
151
131
|
sortField,
|
|
152
132
|
sortDirection: formatSortDirection(),
|
|
153
|
-
filters:
|
|
133
|
+
filters: formatFiltersCb()
|
|
154
134
|
});
|
|
155
135
|
}
|
|
156
|
-
}, [open, page, sortField, filters, refetch,
|
|
136
|
+
}, [open, page, sortField, filters, refetch, formatFiltersCb, formatSortDirection]);
|
|
157
137
|
const headers = [{
|
|
158
138
|
field: 'displayName',
|
|
159
139
|
label: _d2I18n.default.t('Name'),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.VisTypeFilter = void 0;
|
|
6
|
+
exports.formatTypeFilter = exports.default = exports.VisTypeFilter = void 0;
|
|
7
7
|
var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n"));
|
|
8
8
|
var _ui = require("@dhis2/ui");
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -12,6 +12,44 @@ var _visTypes = require("../../modules/visTypes.js");
|
|
|
12
12
|
var _VisTypeIcon = require("../VisTypeIcon.js");
|
|
13
13
|
var _CustomSelectOption = require("./CustomSelectOption.js");
|
|
14
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
const formatTypeFilter = (filterVisTypes, visType) => {
|
|
16
|
+
const defaultFilterTypes = [];
|
|
17
|
+
let defaultTypeFilter;
|
|
18
|
+
if (Array.isArray(filterVisTypes)) {
|
|
19
|
+
defaultFilterTypes.push(...filterVisTypes.filter(({
|
|
20
|
+
type,
|
|
21
|
+
disabled
|
|
22
|
+
}) => !(disabled || [_visTypes.VIS_TYPE_GROUP_ALL, _visTypes.VIS_TYPE_GROUP_CHARTS].includes(type))).map(({
|
|
23
|
+
type
|
|
24
|
+
}) => type));
|
|
25
|
+
if (defaultFilterTypes.length) {
|
|
26
|
+
defaultTypeFilter = `type:in:[${defaultFilterTypes.join(',')}]`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
switch (visType) {
|
|
30
|
+
case _visTypes.VIS_TYPE_GROUP_ALL:
|
|
31
|
+
{
|
|
32
|
+
return defaultTypeFilter;
|
|
33
|
+
}
|
|
34
|
+
case _visTypes.VIS_TYPE_GROUP_CHARTS:
|
|
35
|
+
{
|
|
36
|
+
if (defaultFilterTypes.length) {
|
|
37
|
+
return `type:in:[${defaultFilterTypes.filter(item => item !== _visTypes.VIS_TYPE_PIVOT_TABLE).join(',')}]`;
|
|
38
|
+
} else {
|
|
39
|
+
return `type:!eq:${_visTypes.VIS_TYPE_PIVOT_TABLE}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
default:
|
|
43
|
+
{
|
|
44
|
+
if (visType) {
|
|
45
|
+
return `type:eq:${visType}`;
|
|
46
|
+
} else if (defaultTypeFilter) {
|
|
47
|
+
return defaultTypeFilter;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.formatTypeFilter = formatTypeFilter;
|
|
15
53
|
const VisTypeFilter = ({
|
|
16
54
|
visTypes,
|
|
17
55
|
selected,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _visTypes = require("../../../modules/visTypes.js");
|
|
4
|
+
var _CreatedByFilter = require("../CreatedByFilter.js");
|
|
5
|
+
var _OpenFileDialog = require("../OpenFileDialog.js");
|
|
6
|
+
describe('OpenFileDialog - formatFilters', () => {
|
|
7
|
+
const currentUser = {
|
|
8
|
+
id: 'test-user'
|
|
9
|
+
};
|
|
10
|
+
const createdByTestCases = [[_CreatedByFilter.CREATED_BY_ALL, []], [_CreatedByFilter.CREATED_BY_CURRENT_USER, [`user.id:eq:${currentUser.id}`]], [_CreatedByFilter.CREATED_BY_ALL_BUT_CURRENT_USER, [`user.id:!eq:${currentUser.id}`]]];
|
|
11
|
+
test.each(createdByTestCases)('formats the createdBy filter given %p', (createdBy, expected) => expect((0, _OpenFileDialog.formatFilters)(currentUser, {
|
|
12
|
+
createdBy
|
|
13
|
+
})).toEqual(expected));
|
|
14
|
+
test('formats the searchTerm filter', () => {
|
|
15
|
+
const testSearchTerm = 'test search term';
|
|
16
|
+
expect((0, _OpenFileDialog.formatFilters)(currentUser, {
|
|
17
|
+
searchTerm: testSearchTerm
|
|
18
|
+
})).toEqual([`identifiable:token:${testSearchTerm}`]);
|
|
19
|
+
});
|
|
20
|
+
const typeTestCases = [
|
|
21
|
+
// no type filter when no visType nor filterVisTypes
|
|
22
|
+
[undefined, undefined, []],
|
|
23
|
+
// no type filter because VIS_TYPE_GROUP_ALL is selected
|
|
24
|
+
[undefined, _visTypes.VIS_TYPE_GROUP_ALL, []],
|
|
25
|
+
// only VIS_TYPE_PIVOT_TABLE ignored because no filterVisTypes is passed and VIS_TYPE_GROUP_CHARTS is selected
|
|
26
|
+
[undefined, _visTypes.VIS_TYPE_GROUP_CHARTS, [`type:!eq:${_visTypes.VIS_TYPE_PIVOT_TABLE}`]],
|
|
27
|
+
// no filterVisTypes and VIS_TYPE_PIVOT_TABLE selected
|
|
28
|
+
[undefined, _visTypes.VIS_TYPE_PIVOT_TABLE, [`type:eq:${_visTypes.VIS_TYPE_PIVOT_TABLE}`]],
|
|
29
|
+
// group types are ignored
|
|
30
|
+
[[_visTypes.VIS_TYPE_PIVOT_TABLE, _visTypes.VIS_TYPE_GROUP_ALL, _visTypes.VIS_TYPE_GROUP_CHARTS], _visTypes.VIS_TYPE_GROUP_ALL, [`type:in:[${_visTypes.VIS_TYPE_PIVOT_TABLE}]`]],
|
|
31
|
+
// VIS_TYPE_PIVOT_TABLE is ignored because VIS_TYPE_GROUP_CHARTS is selected
|
|
32
|
+
[[_visTypes.VIS_TYPE_PIVOT_TABLE, _visTypes.VIS_TYPE_COLUMN, _visTypes.VIS_TYPE_GROUP_CHARTS], _visTypes.VIS_TYPE_GROUP_CHARTS, [`type:in:[${_visTypes.VIS_TYPE_COLUMN}]`]],
|
|
33
|
+
// when filterVisTypes is passed the default type filter only include those
|
|
34
|
+
[[_visTypes.VIS_TYPE_PIVOT_TABLE], '', [`type:in:[${_visTypes.VIS_TYPE_PIVOT_TABLE}]`]], [[_visTypes.VIS_TYPE_LINE_LIST, _visTypes.VIS_TYPE_PIVOT_TABLE], '', [`type:in:[${_visTypes.VIS_TYPE_LINE_LIST},${_visTypes.VIS_TYPE_PIVOT_TABLE}]`]]];
|
|
35
|
+
test.each(typeTestCases)('formats the type filter given %p and %p', (types, visType, expected) => expect((0, _OpenFileDialog.formatFilters)(currentUser, {
|
|
36
|
+
visType
|
|
37
|
+
}, types === null || types === void 0 ? void 0 : types.map(type => ({
|
|
38
|
+
type
|
|
39
|
+
})))).toEqual(expected));
|
|
40
|
+
test('combined filters', () => {
|
|
41
|
+
expect((0, _OpenFileDialog.formatFilters)(currentUser, {
|
|
42
|
+
createdBy: _CreatedByFilter.CREATED_BY_CURRENT_USER,
|
|
43
|
+
searchTerm: 'test',
|
|
44
|
+
visType: _visTypes.VIS_TYPE_GROUP_ALL
|
|
45
|
+
}, [{
|
|
46
|
+
type: _visTypes.VIS_TYPE_LINE_LIST
|
|
47
|
+
}, {
|
|
48
|
+
type: _visTypes.VIS_TYPE_PIVOT_TABLE
|
|
49
|
+
}])).toEqual([`identifiable:token:test`, `user.id:eq:${currentUser.id}`, `type:in:[${_visTypes.VIS_TYPE_LINE_LIST},${_visTypes.VIS_TYPE_PIVOT_TABLE}]`]);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -1,58 +1,92 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var _react =
|
|
3
|
+
var _appRuntime = require("@dhis2/app-runtime");
|
|
4
|
+
var _react = require("@testing-library/react");
|
|
5
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
6
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
7
|
var _OrgUnitDimension = _interopRequireDefault(require("../OrgUnitDimension.js"));
|
|
6
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
shallowOrgUnitDimension = (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_OrgUnitDimension.default, props));
|
|
13
|
-
}
|
|
14
|
-
return shallowOrgUnitDimension;
|
|
9
|
+
jest.mock('@dhis2-ui/organisation-unit-tree', () => {
|
|
10
|
+
const lib = jest.requireActual('@dhis2-ui/organisation-unit-tree');
|
|
11
|
+
return {
|
|
12
|
+
...lib,
|
|
13
|
+
OrganisationUnitTree: () => /*#__PURE__*/_react2.default.createElement("div", null, "Org unit tree component mock")
|
|
15
14
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
});
|
|
16
|
+
describe('OrgUnitDimension', () => {
|
|
17
|
+
const onSelect = jest.fn();
|
|
18
|
+
const props = {
|
|
19
|
+
roots: [],
|
|
20
|
+
selected: [],
|
|
21
|
+
onSelect: onSelect,
|
|
22
|
+
hideGroupSelect: false,
|
|
23
|
+
hideLevelSelect: false,
|
|
24
|
+
hideUserOrgUnits: false,
|
|
25
|
+
warning: ''
|
|
26
|
+
};
|
|
27
|
+
const renderOrgUnitDimension = props => (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_appRuntime.CustomDataProvider, {
|
|
28
|
+
data: {
|
|
29
|
+
organisationUnitLevels: {
|
|
30
|
+
organisationUnitLevels: []
|
|
31
|
+
},
|
|
32
|
+
organisationUnitGroups: {
|
|
33
|
+
organisationUnitGroups: []
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, /*#__PURE__*/_react2.default.createElement(_OrgUnitDimension.default, props)));
|
|
37
|
+
beforeEach(() => onSelect.mockClear());
|
|
38
|
+
test('OrgUnitDimension is rendered correctly', async () => {
|
|
39
|
+
renderOrgUnitDimension(props);
|
|
40
|
+
|
|
41
|
+
// wait for the component to be loaded, here done by testing that the OrganisationUnitTree component is loaded
|
|
42
|
+
// avoid the act warning due to the snapshot being taken before async code is run
|
|
43
|
+
await _react.screen.findByText('Org unit tree component mock');
|
|
44
|
+
|
|
45
|
+
// the top user org unit checkboxes are rendered
|
|
46
|
+
expect(_react.screen.getByLabelText('User organisation unit')).toBeInTheDocument();
|
|
47
|
+
expect(_react.screen.getByLabelText('User sub-units')).toBeInTheDocument();
|
|
48
|
+
expect(_react.screen.getByLabelText('User sub-x2-units')).toBeInTheDocument();
|
|
49
|
+
|
|
50
|
+
// the OrganisationUnitTree component is rendered
|
|
51
|
+
expect(_react.screen.getByText('Org unit tree component mock')).toBeInTheDocument();
|
|
52
|
+
|
|
53
|
+
// the level selector is rendered
|
|
54
|
+
expect(_react.screen.getByText('Select a level')).toBeInTheDocument();
|
|
55
|
+
|
|
56
|
+
// the group selector is rendered
|
|
57
|
+
expect(_react.screen.getByText('Select a group')).toBeInTheDocument();
|
|
58
|
+
|
|
59
|
+
// the Deselect all button is rendered
|
|
60
|
+
expect(_react.screen.getByRole('button', {
|
|
61
|
+
name: 'Deselect all'
|
|
62
|
+
})).toBeInTheDocument();
|
|
31
63
|
});
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
path: '/testPath',
|
|
38
|
-
displayName: 'Test Org Unit',
|
|
39
|
-
checked: true
|
|
40
|
-
};
|
|
41
|
-
orgUnitTree.props().onChange(testOrgUnit);
|
|
42
|
-
expect(props.onSelect).toHaveBeenCalledWith({
|
|
64
|
+
test('OrgUnitDimension calls onSelect when an organisation unit is selected', async () => {
|
|
65
|
+
const user = _userEvent.default.setup();
|
|
66
|
+
renderOrgUnitDimension(props);
|
|
67
|
+
await user.click(_react.screen.getByText('User organisation unit'));
|
|
68
|
+
expect(onSelect).toHaveBeenCalledWith({
|
|
43
69
|
dimensionId: 'ou',
|
|
44
70
|
items: [{
|
|
45
|
-
id: '
|
|
46
|
-
|
|
47
|
-
name: 'Test Org Unit'
|
|
71
|
+
id: 'USER_ORGUNIT',
|
|
72
|
+
displayName: 'User organisation unit'
|
|
48
73
|
}]
|
|
49
74
|
});
|
|
50
75
|
});
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
76
|
+
test('OrgUnitDimension calls onSelect with an empty array when selection is cleared', async () => {
|
|
77
|
+
const user = _userEvent.default.setup();
|
|
78
|
+
renderOrgUnitDimension({
|
|
79
|
+
...props,
|
|
80
|
+
// make some selection to enable the deselect all button
|
|
81
|
+
selected: [{
|
|
82
|
+
id: 'USER_ORGUNIT_CHILDREN',
|
|
83
|
+
name: 'User sub-units'
|
|
84
|
+
}]
|
|
85
|
+
});
|
|
86
|
+
await user.click(_react.screen.getByRole('button', {
|
|
87
|
+
name: 'Deselect all'
|
|
88
|
+
}));
|
|
89
|
+
expect(onSelect).toHaveBeenLastCalledWith({
|
|
56
90
|
dimensionId: 'ou',
|
|
57
91
|
items: []
|
|
58
92
|
});
|
|
@@ -25,6 +25,7 @@ const FixedPeriodFilter = ({
|
|
|
25
25
|
}) => {
|
|
26
26
|
const onlyAllowedTypeIsSelected = Array.isArray(allowedPeriodTypes) && allowedPeriodTypes.length === 1 && allowedPeriodTypes[0] === currentPeriodType;
|
|
27
27
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
28
|
+
"data-test": dataTest,
|
|
28
29
|
className: `jsx-${_PeriodFilterStyle.default.__hash}` + " " + "leftSection"
|
|
29
30
|
}, /*#__PURE__*/_react.default.createElement(_ui.SingleSelectField, {
|
|
30
31
|
label: _index.default.t('Period type'),
|
|
@@ -19,6 +19,7 @@ const RelativePeriodFilter = ({
|
|
|
19
19
|
dataTest,
|
|
20
20
|
excludedPeriodTypes
|
|
21
21
|
}) => /*#__PURE__*/_react.default.createElement("div", {
|
|
22
|
+
"data-test": dataTest,
|
|
22
23
|
className: `jsx-${_PeriodFilterStyle.default.__hash}` + " " + "leftSection"
|
|
23
24
|
}, /*#__PURE__*/_react.default.createElement(_ui.SingleSelectField, {
|
|
24
25
|
label: _index.default.t('Period type'),
|
|
@@ -28,12 +29,12 @@ const RelativePeriodFilter = ({
|
|
|
28
29
|
dense: true,
|
|
29
30
|
selected: currentFilter,
|
|
30
31
|
className: "filterElement",
|
|
31
|
-
dataTest: dataTest
|
|
32
|
+
dataTest: `${dataTest}-period-type`
|
|
32
33
|
}, (0, _index2.filterPeriodTypesById)((0, _relativePeriods.getRelativePeriodsOptions)(), excludedPeriodTypes).map(option => /*#__PURE__*/_react.default.createElement(_ui.SingleSelectOption, {
|
|
33
34
|
key: option.id,
|
|
34
35
|
value: option.id,
|
|
35
36
|
label: option.name,
|
|
36
|
-
dataTest: `${dataTest}-option-${option.id}`
|
|
37
|
+
dataTest: `${dataTest}-period-type-option-${option.id}`
|
|
37
38
|
}))), /*#__PURE__*/_react.default.createElement(_style.default, {
|
|
38
39
|
id: _PeriodFilterStyle.default.__hash
|
|
39
40
|
}, _PeriodFilterStyle.default));
|
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
5
|
var _FixedPeriodSelect = _interopRequireDefault(require("../FixedPeriodSelect.js"));
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (!shallowFixedPeriodSelect) {
|
|
12
|
-
shallowFixedPeriodSelect = (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_FixedPeriodSelect.default, props));
|
|
13
|
-
}
|
|
14
|
-
return shallowFixedPeriodSelect;
|
|
7
|
+
test('FixedPeriodSelect renders correctly', () => {
|
|
8
|
+
const props = {
|
|
9
|
+
value: '201405',
|
|
10
|
+
onChange: () => {}
|
|
15
11
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const wrapper = getWrapper();
|
|
25
|
-
expect(wrapper).toMatchSnapshot();
|
|
26
|
-
});
|
|
12
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_FixedPeriodSelect.default, props));
|
|
13
|
+
expect(_react.screen.getByTestId('dhis2-analytics-fixedperiodselect')).toBeInTheDocument();
|
|
14
|
+
expect(_react.screen.getByText('Period type')).toBeInTheDocument();
|
|
15
|
+
expect(_react.screen.getByText('Monthly')).toBeInTheDocument();
|
|
16
|
+
expect(_react.screen.getByText('Year')).toBeInTheDocument();
|
|
17
|
+
const yearSelectEl = _react.screen.getByPlaceholderText('Select year');
|
|
18
|
+
expect(yearSelectEl).toBeInTheDocument();
|
|
19
|
+
expect(yearSelectEl.value).toEqual('2014');
|
|
27
20
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
6
|
var _PeriodDimension = _interopRequireDefault(require("../PeriodDimension.js"));
|
|
6
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
jest.mock('@dhis2/app-runtime', () => ({
|
|
@@ -16,26 +17,29 @@ jest.mock('@dhis2/app-runtime', () => ({
|
|
|
16
17
|
}
|
|
17
18
|
})
|
|
18
19
|
}));
|
|
20
|
+
global.ResizeObserver = jest.fn().mockImplementation(() => ({
|
|
21
|
+
observe: jest.fn(),
|
|
22
|
+
unobserve: jest.fn(),
|
|
23
|
+
disconnect: jest.fn()
|
|
24
|
+
}));
|
|
19
25
|
afterEach(jest.clearAllMocks);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
expect(wrapper).toMatchSnapshot();
|
|
40
|
-
});
|
|
26
|
+
const props = {
|
|
27
|
+
selectedPeriods: [],
|
|
28
|
+
onSelect: jest.fn(),
|
|
29
|
+
rightFooter: /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null)
|
|
30
|
+
};
|
|
31
|
+
test('PeriodDimension renders the tabs for relative/fixed with relative pre-selected', () => {
|
|
32
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_PeriodDimension.default, props));
|
|
33
|
+
expect(_react.screen.getByText('Relative periods')).toBeInTheDocument();
|
|
34
|
+
expect(_react.screen.getByTestId('period-dimension-relative-period-filter')).toBeInTheDocument();
|
|
35
|
+
expect(_react.screen.getByText('Fixed periods')).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
test('PeriodDimension can toggle between relative and fixed period tab', async () => {
|
|
38
|
+
const user = _userEvent.default.setup();
|
|
39
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_PeriodDimension.default, props));
|
|
40
|
+
expect(_react.screen.getByText('Relative periods')).toBeInTheDocument();
|
|
41
|
+
const fixedPeriodButton = _react.screen.getByText('Fixed periods');
|
|
42
|
+
expect(fixedPeriodButton).toBeInTheDocument();
|
|
43
|
+
await user.click(fixedPeriodButton);
|
|
44
|
+
expect(_react.screen.getByTestId('period-dimension-fixed-period-filter')).toBeInTheDocument();
|
|
41
45
|
});
|
|
@@ -59,6 +59,9 @@ const PivotTableColumnHeaderCell = ({
|
|
|
59
59
|
className: `jsx-${_PivotTableStyle.cell.__hash}` + " " + "column-header-inner"
|
|
60
60
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
61
61
|
"data-test": "visualization-column-header",
|
|
62
|
+
style: {
|
|
63
|
+
...header.style
|
|
64
|
+
},
|
|
62
65
|
className: `jsx-${_PivotTableStyle.cell.__hash}` + " " + "column-header-label"
|
|
63
66
|
}, header.label), isSortable ? /*#__PURE__*/_react.default.createElement(_PivotTableSortIcon.PivotTableSortIcon, {
|
|
64
67
|
index: index,
|
|
@@ -37,7 +37,8 @@ const PivotTableRowHeaderCell = ({
|
|
|
37
37
|
height,
|
|
38
38
|
left: rowLevel > 0 ?
|
|
39
39
|
// calculate the width of all row header cells on the left of current cell
|
|
40
|
-
engine.adaptiveClippingController.columns.headerSizes.slice(0, rowLevel).reduce((width, acc) => acc += width, 0) : 0
|
|
40
|
+
engine.adaptiveClippingController.columns.headerSizes.slice(0, rowLevel).reduce((width, acc) => acc += width, 0) : 0,
|
|
41
|
+
...header.style
|
|
41
42
|
},
|
|
42
43
|
dataTest: "visualization-row-header"
|
|
43
44
|
}, header.label)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("@testing-library/jest-dom");
|
|
4
3
|
var _react = require("@testing-library/react");
|
|
4
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
5
5
|
var _react2 = _interopRequireDefault(require("react"));
|
|
6
6
|
var _Editor = require("../Editor.js");
|
|
7
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -23,16 +23,15 @@ describe('RichText: Editor component', () => {
|
|
|
23
23
|
const renderComponent = props => {
|
|
24
24
|
return (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Editor.Editor, props));
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
test('renders a result', () => {
|
|
27
27
|
renderComponent(componentProps);
|
|
28
28
|
expect(_react.screen.getByTestId('@dhis2-analytics-richtexteditor')).toBeVisible();
|
|
29
29
|
});
|
|
30
|
-
|
|
30
|
+
test('calls convertCtrlKey on keydown', async () => {
|
|
31
|
+
const user = _userEvent.default.setup();
|
|
31
32
|
renderComponent(componentProps);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
code: 'keyA'
|
|
35
|
-
});
|
|
33
|
+
await user.click(_react.screen.getByRole('textbox'));
|
|
34
|
+
await user.keyboard('A');
|
|
36
35
|
expect(mockConvertCtrlKey).toHaveBeenCalled();
|
|
37
36
|
});
|
|
38
37
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _MdParser = require("../MdParser.js");
|
|
4
4
|
const Parser = new _MdParser.MdParser();
|
|
5
5
|
describe('MdParser class', () => {
|
|
6
|
-
|
|
6
|
+
test('converts text into HTML', () => {
|
|
7
7
|
const inlineTests = [['_italic_', '<em>italic</em>'], ['*bold*', '<strong>bold</strong>'], ['_ not italic because there is a space _', '_ not italic because there is a space _'], [':-)', '<span>\u{1F642}</span>'], [':)', '<span>\u{1F642}</span>'], [':-(', '<span>\u{1F641}</span>'], [':(', '<span>\u{1F641}</span>'], [':+1', '<span>\u{1F44D}</span>'], [':-1', '<span>\u{1F44E}</span>'], ['mixed _italic_ *bold* and :+1', 'mixed <em>italic</em> <strong>bold</strong> and <span>\u{1F44D}</span>'], ['_italic with * inside_', '<em>italic with * inside</em>'], ['*bold with _ inside*', '<strong>bold with _ inside</strong>'],
|
|
8
8
|
// italic marker followed by : should work
|
|
9
9
|
['_italic_:', '<em>italic</em>:'], ['_italic_: some text, *bold*: some other text', '<em>italic</em>: some text, <strong>bold</strong>: some other text'],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
5
|
var _Parser = require("../Parser.js");
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
7
|
jest.mock('../MdParser.js', () => ({
|
|
@@ -12,30 +12,29 @@ jest.mock('../MdParser.js', () => ({
|
|
|
12
12
|
})
|
|
13
13
|
}));
|
|
14
14
|
describe('RichText: Parser component', () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
style: {
|
|
15
|
+
test('should have rendered a result with the style prop', () => {
|
|
16
|
+
const style = {
|
|
18
17
|
color: 'blue',
|
|
19
18
|
whiteSpace: 'pre-line'
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
expect(
|
|
28
|
-
|
|
29
|
-
it('should have rendered a result with the style prop', () => {
|
|
30
|
-
richTextParser = renderComponent(defaultProps, 'test prop');
|
|
31
|
-
expect(richTextParser.props().style).toEqual(defaultProps.style);
|
|
19
|
+
};
|
|
20
|
+
const {
|
|
21
|
+
container
|
|
22
|
+
} = (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Parser.Parser, {
|
|
23
|
+
style: style
|
|
24
|
+
}, 'test prop'));
|
|
25
|
+
const divEl = container.querySelector('div');
|
|
26
|
+
expect(divEl.style.color).toBe(style.color);
|
|
27
|
+
expect(divEl.style.whiteSpace).toBe(style.whiteSpace);
|
|
32
28
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
expect(
|
|
29
|
+
test('should have rendered content', () => {
|
|
30
|
+
(0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Parser.Parser, null, 'plain text'));
|
|
31
|
+
expect(_react.screen.getByText('converted text')).toBeInTheDocument();
|
|
36
32
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
test('should return null if no children is passed', () => {
|
|
34
|
+
const {
|
|
35
|
+
container
|
|
36
|
+
} = (0, _react.render)(/*#__PURE__*/_react2.default.createElement(_Parser.Parser, null));
|
|
37
|
+
const divEl = container.querySelector('div');
|
|
38
|
+
expect(divEl).toBe(null);
|
|
40
39
|
});
|
|
41
40
|
});
|