@hisptz/dhis2-scorecard 1.2.22 → 1.2.24
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/dist/Scorecard.js.map +1 -1
- package/dist/components/ColGroup.js.map +1 -1
- package/dist/components/ConfigProvider.js.map +1 -1
- package/dist/components/DataProvider.js.map +1 -1
- package/dist/components/LoadingIndicator.js.map +1 -1
- package/dist/components/MetaProvider.js.map +1 -1
- package/dist/components/ScorecardContext.js.map +1 -1
- package/dist/components/ScorecardHeader.js.map +1 -1
- package/dist/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js.map +1 -1
- package/dist/components/ScorecardPrint/ScorecardPrint.js.map +1 -1
- package/dist/components/ScorecardPrint/components/ScorecardDownloadButton.js.map +1 -1
- package/dist/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
- package/dist/components/ScorecardPrint/utils/download.js.map +1 -1
- package/dist/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -1
- package/dist/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -1
- package/dist/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -1
- package/dist/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -1
- package/dist/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/components/ScorecardTable/components/AverageCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/AverageFooterCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/CellLoader.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataContainer.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataRow.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataValue.js.map +1 -1
- package/dist/components/ScorecardTable/components/DraggableCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/DroppableCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -1
- package/dist/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -1
- package/dist/components/ScorecardTable/components/LinkedCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/LinkedDataCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/MetaFooterCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/PaginatedToolbar.js.map +1 -1
- package/dist/components/ScorecardTable/components/SingleDataCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableBody.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableFoot.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -1
- package/dist/components/StateProvider.js.map +1 -1
- package/dist/components/TableStateProvider.js.map +1 -1
- package/dist/esm/Scorecard.js.map +1 -1
- package/dist/esm/components/ColGroup.js.map +1 -1
- package/dist/esm/components/ConfigProvider.js.map +1 -1
- package/dist/esm/components/DataProvider.js.map +1 -1
- package/dist/esm/components/LoadingIndicator.js.map +1 -1
- package/dist/esm/components/MetaProvider.js.map +1 -1
- package/dist/esm/components/ScorecardContext.js.map +1 -1
- package/dist/esm/components/ScorecardHeader.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js.map +1 -1
- package/dist/esm/components/ScorecardPrint/ScorecardPrint.js.map +1 -1
- package/dist/esm/components/ScorecardPrint/components/ScorecardDownloadButton.js.map +1 -1
- package/dist/esm/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
- package/dist/esm/components/ScorecardPrint/utils/download.js.map +1 -1
- package/dist/esm/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -1
- package/dist/esm/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -1
- package/dist/esm/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -1
- package/dist/esm/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -1
- package/dist/esm/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/AverageCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/AverageFooterCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/CellLoader.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataContainer.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataRow.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataValue.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DraggableCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DroppableCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/LinkedCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/LinkedDataCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/MetaFooterCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/PaginatedToolbar.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/SingleDataCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableBody.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableFoot.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -1
- package/dist/esm/components/StateProvider.js.map +1 -1
- package/dist/esm/components/TableStateProvider.js.map +1 -1
- package/dist/esm/hooks/cellData.js.map +1 -1
- package/dist/esm/hooks/columns.js.map +1 -1
- package/dist/esm/hooks/data.js.map +1 -1
- package/dist/esm/hooks/dataItem.js.map +1 -1
- package/dist/esm/hooks/metadata.js.map +1 -1
- package/dist/esm/hooks/orgUnit.js.map +1 -1
- package/dist/esm/hooks/table.js.map +1 -1
- package/dist/esm/hooks/value.js.map +1 -1
- package/dist/esm/schemas/config.js.map +1 -1
- package/dist/esm/utils/analytics.js.map +1 -1
- package/dist/esm/utils/columns.js.map +1 -1
- package/dist/esm/utils/data.js.map +1 -1
- package/dist/esm/utils/dataEngine.js.map +1 -1
- package/dist/esm/utils/dataSources.js.map +1 -1
- package/dist/esm/utils/dimensionState.js.map +1 -1
- package/dist/esm/utils/legends.js.map +1 -1
- package/dist/esm/utils/orgUnits.js.map +1 -1
- package/dist/esm/utils/state.js.map +1 -1
- package/dist/esm/utils/viewState.js.map +1 -1
- package/dist/hooks/cellData.js.map +1 -1
- package/dist/hooks/columns.js.map +1 -1
- package/dist/hooks/data.js.map +1 -1
- package/dist/hooks/dataItem.js.map +1 -1
- package/dist/hooks/metadata.js.map +1 -1
- package/dist/hooks/orgUnit.js.map +1 -1
- package/dist/hooks/table.js.map +1 -1
- package/dist/hooks/value.js.map +1 -1
- package/dist/package.json +59 -0
- package/dist/schemas/config.js.map +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/columns.js.map +1 -1
- package/dist/utils/data.js.map +1 -1
- package/dist/utils/dataEngine.js.map +1 -1
- package/dist/utils/dataSources.js.map +1 -1
- package/dist/utils/dimensionState.js.map +1 -1
- package/dist/utils/legends.js.map +1 -1
- package/dist/utils/orgUnits.js.map +1 -1
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/viewState.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hisptz/dhis2-scorecard",
|
|
3
|
+
"version": "1.2.22",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"module": "./dist/esm/index.js",
|
|
6
|
+
"types": "./dist/types/index.d.ts",
|
|
7
|
+
"typings": "./dist/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
"import": "./dist/esm/index.js",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"types": "./dist/types/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"files": [
|
|
16
|
+
"dist/**",
|
|
17
|
+
"package.json"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsup && tsc",
|
|
21
|
+
"dev": "tsup --watch",
|
|
22
|
+
"lint": "eslint . --max-warnings 0",
|
|
23
|
+
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@hisptz/dhis2-analytics": "workspace:*",
|
|
27
|
+
"@hisptz/dhis2-ui": "workspace:*",
|
|
28
|
+
"@hisptz/dhis2-utils": "workspace:*",
|
|
29
|
+
"@tanstack/react-table": "^8.21.3",
|
|
30
|
+
"async-es": "^3.2.5",
|
|
31
|
+
"file-saver": "^2.0.5",
|
|
32
|
+
"luxon": "^3.4.4",
|
|
33
|
+
"react-dnd": "^16.0.1",
|
|
34
|
+
"react-dnd-html5-backend": "^16.0.1",
|
|
35
|
+
"react-error-boundary": "^4.0.12",
|
|
36
|
+
"react-jsx-parser": "^2.2.0",
|
|
37
|
+
"react-to-print": "^3.0.1",
|
|
38
|
+
"xlsx": "^0.18.5"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@dhis2/app-runtime": "^3",
|
|
42
|
+
"@dhis2/d2-i18n": "^1.1.3",
|
|
43
|
+
"@dhis2/multi-calendar-dates": "^1.2.4",
|
|
44
|
+
"@dhis2/ui": "^10",
|
|
45
|
+
"classnames": "^2.5.1",
|
|
46
|
+
"eslint": "^8.56.0",
|
|
47
|
+
"lodash": "^4.17.21",
|
|
48
|
+
"react": "^18 || ^19",
|
|
49
|
+
"react-dom": "^18 || ^19",
|
|
50
|
+
"styled-jsx": "^5.1.2",
|
|
51
|
+
"tsup": "^8.0.1",
|
|
52
|
+
"typescript": "^5.3.3",
|
|
53
|
+
"usehooks-ts": "^2.9.2",
|
|
54
|
+
"zod": "^3"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/config.ts"],"names":["z","ScorecardTableOrientation","ScorecardTableDimension","ScorecardDraggableItems"],"mappings":"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","file":"config.js","sourcesContent":["import { z } from \"zod\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport const supportedDataSources = z.enum([\n\t\"indicator\",\n\t\"programIndicator\",\n\t\"dataSet\",\n\t\"dataElement\",\n\t\"customFunction\",\n\t\"sqlView\",\n]);\n\nexport const scorecardSharing = z.object({\n\towner: z.string(),\n\texternal: z.boolean(),\n\tpublic: z.string(),\n\tusers: z.record(\n\t\tz.string(),\n\t\tz.object({ access: z.string(), id: z.string() }),\n\t),\n\tuserGroups: z.record(\n\t\tz.string(),\n\t\tz.object({ access: z.string(), id: z.string() }),\n\t),\n});\n\nexport type ScorecardSharing = z.infer<typeof scorecardSharing>;\n\nexport type SupportedDataSources = z.infer<typeof supportedDataSources>;\n\nexport const legendDefinitionSchema = z.object({\n\tid: z.string(),\n\tcolor: z.string(),\n\tname: z.string(),\n\tisDefault: z.boolean().optional(),\n});\n\nexport type LegendDefinition = z.infer<typeof legendDefinitionSchema>;\n\nexport const scorecardViewOptionsSchema = z.object({\n\taverageColumn: z.boolean().optional(),\n\taverageDisplayType: z\n\t\t.enum([\"ALL\", \"ABOVE_AVERAGE\", \"BELOW_AVERAGE\"])\n\t\t.optional(),\n\taverageRow: z.boolean().optional(),\n\temptyRows: z.boolean().optional(),\n\thighlightedIndicators: z.boolean().optional(),\n\titemNumber: z.boolean().optional(),\n\tlegend: z.boolean().optional(),\n\tshowHierarchy: z.boolean().optional(),\n\ttitle: z.boolean().optional(),\n\tarrows: z.boolean().optional(),\n\tshowDataInRows: z.boolean().optional(),\n\tdisableExpanding: z.boolean().optional(),\n\tdisablePagination: z.boolean().optional(),\n\tprintMode: z.boolean().optional(),\n\tdisableFurtherAnalysis: z.boolean().optional(),\n});\n\nexport type ScorecardViewOptions = z.infer<typeof scorecardViewOptionsSchema>;\n\nexport const organisationUnitSelectionSchema = z.object({\n\tuserOrgUnit: z.boolean().optional(),\n\tuserSubUnit: z.boolean().optional(),\n\tuserSubX2Unit: z.boolean().optional(),\n\torgUnits: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\tgroups: z.array(z.string()).optional(),\n\tlevels: z.array(z.string()).optional(),\n});\n\nexport type OrgUnitSelection = z.infer<typeof organisationUnitSelectionSchema>;\n\nexport const periodSelectionSchema = z.object({\n\tperiods: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\ttype: z.string().optional(),\n});\n\nexport type PeriodSelection = z.infer<typeof periodSelectionSchema>;\n\nexport const legendSchema = z.object({\n\tlegendDefinitionId: z.string(),\n\tid: z.string(),\n\tstartValue: z.union([z.string(), z.number()]),\n\tendValue: z.union([z.string(), z.number()]),\n});\n\nexport type ScorecardLegend = z.infer<typeof legendSchema>;\n\nexport const specificTargetSchema = z.object({\n\ttype: z.enum([\"periods\", \"orgUnit\"]),\n\titems: z.array(z.string()),\n\tlegends: z.array(legendSchema),\n});\n\nexport type SpecificTarget = z.infer<typeof specificTargetSchema>;\n\nexport const orgUnitLevelLegendSchema = z.record(\n\tz.string(),\n\tz.array(legendSchema),\n);\n\nexport type OrgUnitLevelLegend = z.infer<typeof orgUnitLevelLegendSchema>;\n\nexport const dataSourceSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tlabel: z.string().optional(),\n\ttype: supportedDataSources,\n\tdisplayArrows: z.boolean(),\n\thighIsGood: z.boolean(),\n\teffectiveGap: z.number(),\n\tshowColors: z.boolean(),\n\tweight: z.number(),\n\tlegends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),\n\tspecificTargets: z.array(specificTargetSchema).optional(),\n\tspecificTargetsSet: z.boolean().optional(),\n\tdescription: z.string().optional(),\n});\n\nexport type ScorecardDataSource = z.infer<typeof dataSourceSchema>;\n\nexport const dataHolderSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataSources: z.array(dataSourceSchema),\n});\n\nexport type ScorecardDataHolder = z.infer<typeof dataHolderSchema>;\n\nexport const dataGroupSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataHolders: z.array(dataHolderSchema),\n\tstyle: z.object({}),\n\ttitle: z.string(),\n});\n\nexport type ScorecardDataGroup = z.infer<typeof dataGroupSchema>;\n\nconst sharingObject = z.object({ access: z.string(), id: z.string() });\n\nexport const scorecardConfig = z.object({\n\tid: z.string(),\n\ttitle: z.string(),\n\tsubtitle: z.string().optional(),\n\tcustomHeader: z.string().optional(),\n\tdescription: z.string().optional(),\n\tlegendDefinitions: z.array(legendDefinitionSchema),\n\toptions: scorecardViewOptionsSchema,\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\tdataSelection: z.object({\n\t\tdataGroups: z.array(dataGroupSchema),\n\t}),\n\thighlightedIndicators: z.array(dataSourceSchema),\n\tadditionalLabels: z.array(z.string()).optional(),\n\tsharing: scorecardSharing.optional(),\n\t//These are placed as optional and they will be removed in future versions\n\tuser: z\n\t\t.object({\n\t\t\tid: z.string(),\n\t\t})\n\t\t.optional(),\n\tuserAccesses: z.array(sharingObject).optional(),\n\tuserGroupAccesses: z.array(sharingObject).optional(),\n\tpublicAccess: z\n\t\t.object({\n\t\t\taccess: z.string(),\n\t\t\tid: z.string(),\n\t\t})\n\t\t.optional(),\n});\n\nexport type ScorecardConfig = z.infer<typeof scorecardConfig>;\n\nconst scorecardStateSchema = z.object({\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\toptions: scorecardViewOptionsSchema,\n\tnested: z.boolean().optional(),\n\thasOnePeriod: z.boolean().optional(),\n});\n\nexport type ScorecardState = z.infer<typeof scorecardStateSchema>;\n\nexport const scorecardAnalyticsData = z.object({\n\tdx: z.string().optional(),\n\tpe: z.string().optional(),\n\tou: z.string().optional(),\n\tvalue: z.string().optional(),\n});\n\nexport type ScorecardAnalyticsData = z.infer<typeof scorecardAnalyticsData>;\n\nexport const scorecardTableData = z.object({\n\tlabel: z.string(),\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n\texpand: z.boolean().optional(),\n});\n\nexport type ScorecardTableData = z.infer<typeof scorecardTableData> & RowData;\n\nexport const scorecardTableCellConfig = z.object({\n\tdataSources: z.array(dataSourceSchema),\n\torgUnit: z.object({\n\t\tuid: z.string(),\n\t\tname: z.string(),\n\t\thierarchy: z.string(),\n\t}),\n\tpreviousPeriod: z.string().optional(),\n\tcurrentPeriod: z.string().optional(),\n});\nexport type ScorecardTableCellConfig = z.infer<typeof scorecardTableCellConfig>;\n\nexport const scorecardTableAverageCellConfig = z.object({\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n});\nexport type ScorecardTableAverageCellConfig = z.infer<\n\ttypeof scorecardTableAverageCellConfig\n>;\n\nexport const scorecardCellDataSchema = dataSourceSchema.extend({\n\tdata: z.object({\n\t\tprevious: z.number().optional(),\n\t\tcurrent: z.number().optional(),\n\t}),\n});\nexport type ScorecardCellData = z.infer<typeof scorecardCellDataSchema>;\n\nexport const scorecardAverageCellDataSchema = dataSourceSchema.extend({\n\tdata: z.object({\n\t\taverage: z.number().optional(),\n\t}),\n});\nexport type ScorecardAverageCellData = z.infer<\n\ttypeof scorecardAverageCellDataSchema\n>;\n\nexport type SanitizedScorecardTableData = z.infer<typeof scorecardTableData>;\n\nexport enum ScorecardTableOrientation {\n\tORG_UNIT_VS_DATA = \"orgUnitsVsData\",\n\tDATA_VS_ORG_UNIT = \"dataVsOrgUnits\",\n}\n\nexport enum ScorecardTableDimension {\n\tGROUP = \"group\",\n\tORG_UNITS = \"orgUnits\",\n\tPERIODS = \"periods\",\n\tDATA = \"data\",\n}\n\nexport enum ScorecardDraggableItems {\n\tou = \"ou\",\n\tdata = \"data\",\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/config.ts"],"names":["z","ScorecardTableOrientation","ScorecardTableDimension","ScorecardDraggableItems"],"mappings":"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","file":"config.js","sourcesContent":["import { z } from \"zod\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport const supportedDataSources = z.enum([\n\t\"indicator\",\n\t\"programIndicator\",\n\t\"dataSet\",\n\t\"dataElement\",\n\t\"customFunction\",\n\t\"sqlView\",\n]);\n\nexport const scorecardSharing = z.object({\n\towner: z.string(),\n\texternal: z.boolean(),\n\tpublic: z.string(),\n\tusers: z.record(\n\t\tz.string(),\n\t\tz.object({ access: z.string(), id: z.string() }),\n\t),\n\tuserGroups: z.record(\n\t\tz.string(),\n\t\tz.object({ access: z.string(), id: z.string() }),\n\t),\n});\n\nexport type ScorecardSharing = z.infer<typeof scorecardSharing>;\n\nexport type SupportedDataSources = z.infer<typeof supportedDataSources>;\n\nexport const legendDefinitionSchema = z.object({\n\tid: z.string(),\n\tcolor: z.string(),\n\tname: z.string(),\n\tisDefault: z.boolean().optional(),\n});\n\nexport type LegendDefinition = z.infer<typeof legendDefinitionSchema>;\n\nexport const scorecardViewOptionsSchema = z.object({\n\taverageColumn: z.boolean().optional(),\n\taverageDisplayType: z\n\t\t.enum([\"ALL\", \"ABOVE_AVERAGE\", \"BELOW_AVERAGE\"])\n\t\t.optional(),\n\taverageRow: z.boolean().optional(),\n\temptyRows: z.boolean().optional(),\n\thighlightedIndicators: z.boolean().optional(),\n\titemNumber: z.boolean().optional(),\n\tlegend: z.boolean().optional(),\n\tshowHierarchy: z.boolean().optional(),\n\ttitle: z.boolean().optional(),\n\tarrows: z.boolean().optional(),\n\tshowDataInRows: z.boolean().optional(),\n\tdisableExpanding: z.boolean().optional(),\n\tdisablePagination: z.boolean().optional(),\n\tprintMode: z.boolean().optional(),\n\tdisableFurtherAnalysis: z.boolean().optional(),\n});\n\nexport type ScorecardViewOptions = z.infer<typeof scorecardViewOptionsSchema>;\n\nexport const organisationUnitSelectionSchema = z.object({\n\tuserOrgUnit: z.boolean().optional(),\n\tuserSubUnit: z.boolean().optional(),\n\tuserSubX2Unit: z.boolean().optional(),\n\torgUnits: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\tgroups: z.array(z.string()).optional(),\n\tlevels: z.array(z.string()).optional(),\n});\n\nexport type OrgUnitSelection = z.infer<typeof organisationUnitSelectionSchema>;\n\nexport const periodSelectionSchema = z.object({\n\tperiods: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\ttype: z.string().optional(),\n});\n\nexport type PeriodSelection = z.infer<typeof periodSelectionSchema>;\n\nexport const legendSchema = z.object({\n\tlegendDefinitionId: z.string(),\n\tid: z.string(),\n\tstartValue: z.union([z.string(), z.number()]),\n\tendValue: z.union([z.string(), z.number()]),\n});\n\nexport type ScorecardLegend = z.infer<typeof legendSchema>;\n\nexport const specificTargetSchema = z.object({\n\ttype: z.enum([\"periods\", \"orgUnit\"]),\n\titems: z.array(z.string()),\n\tlegends: z.array(legendSchema),\n});\n\nexport type SpecificTarget = z.infer<typeof specificTargetSchema>;\n\nexport const orgUnitLevelLegendSchema = z.record(\n\tz.string(),\n\tz.array(legendSchema),\n);\n\nexport type OrgUnitLevelLegend = z.infer<typeof orgUnitLevelLegendSchema>;\n\nexport const dataSourceSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tlabel: z.string().optional(),\n\ttype: supportedDataSources,\n\tdisplayArrows: z.boolean(),\n\thighIsGood: z.boolean(),\n\teffectiveGap: z.number(),\n\tshowColors: z.boolean(),\n\tweight: z.number(),\n\tlegends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),\n\tspecificTargets: z.array(specificTargetSchema).optional(),\n\tspecificTargetsSet: z.boolean().optional(),\n\tdescription: z.string().optional(),\n});\n\nexport type ScorecardDataSource = z.infer<typeof dataSourceSchema>;\n\nexport const dataHolderSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataSources: z.array(dataSourceSchema),\n});\n\nexport type ScorecardDataHolder = z.infer<typeof dataHolderSchema>;\n\nexport const dataGroupSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataHolders: z.array(dataHolderSchema),\n\tstyle: z.object({}),\n\ttitle: z.string(),\n});\n\nexport type ScorecardDataGroup = z.infer<typeof dataGroupSchema>;\n\nconst sharingObject = z.object({ access: z.string(), id: z.string() });\n\nexport const scorecardConfig = z.object({\n\tid: z.string(),\n\ttitle: z.string(),\n\tsubtitle: z.string().optional(),\n\tcustomHeader: z.string().optional(),\n\tdescription: z.string().optional(),\n\tlegendDefinitions: z.array(legendDefinitionSchema),\n\toptions: scorecardViewOptionsSchema,\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\tdataSelection: z.object({\n\t\tdataGroups: z.array(dataGroupSchema),\n\t}),\n\thighlightedIndicators: z.array(dataSourceSchema),\n\tadditionalLabels: z.array(z.string()).optional(),\n\tsharing: scorecardSharing.optional(),\n\t//These are placed as optional and they will be removed in future versions\n\tuser: z\n\t\t.object({\n\t\t\tid: z.string(),\n\t\t})\n\t\t.optional(),\n\tuserAccesses: z.array(sharingObject).optional(),\n\tuserGroupAccesses: z.array(sharingObject).optional(),\n\tpublicAccess: z\n\t\t.object({\n\t\t\taccess: z.string(),\n\t\t\tid: z.string(),\n\t\t})\n\t\t.optional(),\n});\n\nexport type ScorecardConfig = z.infer<typeof scorecardConfig>;\n\nconst scorecardStateSchema = z.object({\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\toptions: scorecardViewOptionsSchema,\n\tnested: z.boolean().optional(),\n\thasOnePeriod: z.boolean().optional(),\n});\n\nexport type ScorecardState = z.infer<typeof scorecardStateSchema>;\n\nexport const scorecardAnalyticsData = z.object({\n\tdx: z.string().optional(),\n\tpe: z.string().optional(),\n\tou: z.string().optional(),\n\tvalue: z.string().optional(),\n});\n\nexport type ScorecardAnalyticsData = z.infer<typeof scorecardAnalyticsData>;\n\nexport const scorecardTableData = z.object({\n\tlabel: z.string(),\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n\texpand: z.boolean().optional(),\n});\n\nexport type ScorecardTableData = z.infer<typeof scorecardTableData> & RowData;\n\nexport const scorecardTableCellConfig = z.object({\n\tdataSources: z.array(dataSourceSchema),\n\torgUnit: z.object({\n\t\tuid: z.string(),\n\t\tname: z.string(),\n\t\thierarchy: z.string(),\n\t}),\n\tpreviousPeriod: z.string().optional(),\n\tcurrentPeriod: z.string().optional(),\n});\nexport type ScorecardTableCellConfig = z.infer<typeof scorecardTableCellConfig>;\n\nexport const scorecardTableAverageCellConfig = z.object({\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n});\nexport type ScorecardTableAverageCellConfig = z.infer<\n\ttypeof scorecardTableAverageCellConfig\n>;\n\nexport const scorecardCellDataSchema = dataSourceSchema.extend({\n\tdata: z.object({\n\t\tprevious: z.number().optional(),\n\t\tcurrent: z.number().optional(),\n\t}),\n});\nexport type ScorecardCellData = z.infer<typeof scorecardCellDataSchema>;\n\nexport const scorecardAverageCellDataSchema = dataSourceSchema.extend({\n\tdata: z.object({\n\t\taverage: z.number().optional(),\n\t}),\n});\nexport type ScorecardAverageCellData = z.infer<\n\ttypeof scorecardAverageCellDataSchema\n>;\n\nexport type SanitizedScorecardTableData = z.infer<typeof scorecardTableData>;\n\nexport enum ScorecardTableOrientation {\n\tORG_UNIT_VS_DATA = \"orgUnitsVsData\",\n\tDATA_VS_ORG_UNIT = \"dataVsOrgUnits\",\n}\n\nexport enum ScorecardTableDimension {\n\tGROUP = \"group\",\n\tORG_UNITS = \"orgUnits\",\n\tPERIODS = \"periods\",\n\tDATA = \"data\",\n}\n\nexport enum ScorecardDraggableItems {\n\tou = \"ou\",\n\tdata = \"data\",\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/analytics.ts"],"names":["getDataSourcesFromGroups","getOrgUnitsForAnalytics"],"mappings":";;;;;AAKO,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/analytics.ts"],"names":["getDataSourcesFromGroups","getOrgUnitsForAnalytics"],"mappings":";;;;;AAKO,SAAS,aAAA,CAAc;AAAA,EAC7B,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAA,MAAM,eAAA,GAAkBA,oCAAA;AAAA,IACvB,MAAA,EAAQ,aAAA,EAAe,UAAA,IAAc;AAAC,GACvC;AAEA,EAAA,MAAM,eAAe,eAAA,EAAiB,GAAA,CAAI,CAAC,IAAA,KAAS,MAAM,EAAE,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAcC,gCAAA;AAAA,IACnB,oBAAoB,MAAA,EAAQ;AAAA,GAC7B;AACA,EAAA,MAAM,aAAa,eAAA,CAAgB,OAAA,CAAQ,IAAI,CAAC,MAAA,KAAW,OAAO,EAAE,CAAA;AAEpE,EAAA,OAAO;AAAA,IACN,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,qBAAA,CAAsB,EAAE,IAAA,EAAK,EAA4B;AACxE,EAAA,MAAM,eAAe,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,IAAA,KAAS,KAAK,GAAG,CAAA;AAC1D,EAAA,MAAM,cAAc,IAAA,CAAK,QAAA,CAAS,IAAI,CAAC,OAAA,KAAY,QAAQ,GAAG,CAAA;AAC9D,EAAA,MAAM,aAAa,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAC,MAAA,KAAW,OAAO,GAAG,CAAA;AAE1D,EAAA,OAAO;AAAA,IACN,YAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD;AACD","file":"analytics.js","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\nimport { getDataSourcesFromGroups } from \"./dataSources\";\nimport { getOrgUnitsForAnalytics } from \"./orgUnits\";\nimport type { ScorecardMeta } from \"../components\";\n\nexport function getDimensions({\n\tconfig,\n\torgUnitSelection,\n\tperiodSelection,\n}: {\n\tconfig: ScorecardConfig;\n\torgUnitSelection: ScorecardState[\"orgUnitSelection\"];\n\tperiodSelection: ScorecardState[\"periodSelection\"];\n}) {\n\tconst dataItemObjects = getDataSourcesFromGroups(\n\t\tconfig?.dataSelection?.dataGroups ?? [],\n\t);\n\n\tconst dataItemsIds = dataItemObjects?.map((item) => item?.id);\n\tconst orgUnitsIds = getOrgUnitsForAnalytics(\n\t\torgUnitSelection ?? config?.orgUnitSelection,\n\t);\n\tconst periodsIds = periodSelection.periods.map((period) => period.id);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n\nexport function getDimensionsFromMeta({ meta }: { meta: ScorecardMeta }) {\n\tconst dataItemsIds = meta.dataItems.map((item) => item.uid);\n\tconst orgUnitsIds = meta.orgUnits.map((orgUnit) => orgUnit.uid);\n\tconst periodsIds = meta.periods.map((period) => period.uid);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/columns.ts"],"names":["createColumnHelper","head","sum","DataHeaderCell","getAdjacentFixedPeriods","createFixedPeriodFromPeriodId","DataContainer","DataFooterCell","AverageHeaderCell","AverageCell","AverageFooterCell","EmptyDataHeaderCell"],"mappings":"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","file":"columns.js","sourcesContent":["import type { ScorecardMeta } from \"../components\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardCellData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableAverageCellConfig,\n\tScorecardTableCellConfig,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport {\n\tDataHeaderCell,\n\tEmptyDataHeaderCell,\n} from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\nimport type { ScorecardDataEngine } from \"./dataEngine\";\nimport type { AnalyticsData } from \"./data\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction getValueFromConfig({\n\tconfig,\n\tdata,\n}: {\n\tconfig: ScorecardTableCellConfig;\n\tdata: AnalyticsData[];\n}): ScorecardCellData {\n\tconst dataValues = data.filter((datum) => {\n\t\treturn (\n\t\t\tconfig.orgUnit.uid === datum.ou &&\n\t\t\tconfig.currentPeriod === datum.pe &&\n\t\t\tdatum.dx === head(config.dataSources)!.id\n\t\t);\n\t});\n\n\treturn {\n\t\t...head(config.dataSources)!,\n\t\tdata: getValues({\n\t\t\tvalues: dataValues,\n\t\t\tcurrentPeriod: config.currentPeriod!,\n\t\t\tpreviousPeriod: config.previousPeriod,\n\t\t}),\n\t};\n}\n\nfunction getSortingFunction(dataEngine: ScorecardDataEngine) {\n\treturn function sortingFunction(\n\t\trowA: Row<ScorecardTableData>,\n\t\trowB: Row<ScorecardTableData>,\n\t\tcolumnId: string,\n\t) {\n\t\tif (!dataEngine.isDone) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellConfig;\n\t\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellConfig;\n\n\t\tconst dataAValue = getValueFromConfig({\n\t\t\tconfig: dataA,\n\t\t\tdata: dataEngine.data,\n\t\t});\n\n\t\tconst dataBValue = getValueFromConfig({\n\t\t\tconfig: dataB,\n\t\t\tdata: dataEngine.data,\n\t\t});\n\n\t\tconst valueA = dataAValue.data.current ?? 0;\n\t\tconst valueB = dataBValue.data.current ?? 0;\n\n\t\tif (valueA === valueB) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn valueA > valueB ? 1 : -1;\n\t};\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nexport function getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n\tdataEngine,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellConfig>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst dataSources = rowData.dataHolder?.dataSources;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tsize: 120,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}): ColumnDef<ScorecardTableData, ScorecardTableAverageCellConfig> {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tsize: 120,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n\tdataEngine,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label }, index) =>\n\t\t\t\t\t\tindex === 0 ? `${label}` : `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources,\n\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\tcurrentPeriod,\n\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tsize: 120,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tsize: 120,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: getSortingFunction(dataEngine),\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n\tdataEngine,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellConfig>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: EmptyDataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tdataEngine,\n\t\t\t\t\t});\n\t\t\t\t}),\n\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tdataEngine,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/columns.ts"],"names":["createColumnHelper","head","sum","DataHeaderCell","getAdjacentFixedPeriods","createFixedPeriodFromPeriodId","DataContainer","DataFooterCell","AverageHeaderCell","AverageCell","AverageFooterCell","EmptyDataHeaderCell"],"mappings":"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","file":"columns.js","sourcesContent":["import type { ScorecardMeta } from \"../components\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardCellData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableAverageCellConfig,\n\tScorecardTableCellConfig,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport {\n\tDataHeaderCell,\n\tEmptyDataHeaderCell,\n} from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\nimport type { ScorecardDataEngine } from \"./dataEngine\";\nimport type { AnalyticsData } from \"./data\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction getValueFromConfig({\n\tconfig,\n\tdata,\n}: {\n\tconfig: ScorecardTableCellConfig;\n\tdata: AnalyticsData[];\n}): ScorecardCellData {\n\tconst dataValues = data.filter((datum) => {\n\t\treturn (\n\t\t\tconfig.orgUnit.uid === datum.ou &&\n\t\t\tconfig.currentPeriod === datum.pe &&\n\t\t\tdatum.dx === head(config.dataSources)!.id\n\t\t);\n\t});\n\n\treturn {\n\t\t...head(config.dataSources)!,\n\t\tdata: getValues({\n\t\t\tvalues: dataValues,\n\t\t\tcurrentPeriod: config.currentPeriod!,\n\t\t\tpreviousPeriod: config.previousPeriod,\n\t\t}),\n\t};\n}\n\nfunction getSortingFunction(dataEngine: ScorecardDataEngine) {\n\treturn function sortingFunction(\n\t\trowA: Row<ScorecardTableData>,\n\t\trowB: Row<ScorecardTableData>,\n\t\tcolumnId: string,\n\t) {\n\t\tif (!dataEngine.isDone) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellConfig;\n\t\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellConfig;\n\n\t\tconst dataAValue = getValueFromConfig({\n\t\t\tconfig: dataA,\n\t\t\tdata: dataEngine.data,\n\t\t});\n\n\t\tconst dataBValue = getValueFromConfig({\n\t\t\tconfig: dataB,\n\t\t\tdata: dataEngine.data,\n\t\t});\n\n\t\tconst valueA = dataAValue.data.current ?? 0;\n\t\tconst valueB = dataBValue.data.current ?? 0;\n\n\t\tif (valueA === valueB) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn valueA > valueB ? 1 : -1;\n\t};\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nexport function getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n\tdataEngine,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellConfig>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\t\t\t\t\t\tconst dataSources = rowData.dataHolder?.dataSources;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tsize: 120,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}): ColumnDef<ScorecardTableData, ScorecardTableAverageCellConfig> {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tsize: 120,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n\tdataEngine,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label }, index) =>\n\t\t\t\t\t\tindex === 0 ? `${label}` : `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources,\n\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\tcurrentPeriod,\n\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tsize: 120,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t} as ScorecardTableCellConfig;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tsize: 120,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: getSortingFunction(dataEngine),\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: getSortingFunction(dataEngine),\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n\tdataEngine,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n\tdataEngine: ScorecardDataEngine;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellConfig>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: EmptyDataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tdataEngine,\n\t\t\t\t\t});\n\t\t\t\t}),\n\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tdataEngine,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
|
package/dist/utils/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/data.ts"],"names":["fromPairs","head","label"],"mappings":";;;;AAkBO,SAAS,sBAAsB,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/data.ts"],"names":["fromPairs","head","label"],"mappings":";;;;AAkBO,SAAS,sBAAsB,IAAA,EAAkC;AACvE,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAK,GAAI,IAAA,CAAK,IAAA;AAC/B,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AACxB,IAAA,OAAOA,gBAAA;AAAA,MACN,GAAA,CAAI,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AACzB,QAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAA;AAC3B,QAAA,OAAO,CAAC,KAAK,KAAK,CAAA;AAAA,MACnB,CAAC;AAAA,KACF;AAAA,EACD,CAAC,CAAA;AACF;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC/B,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACD,CAAA,EAIyB;AACxB,EAAA,SAAS,cAAA,GAAiB;AACzB,IAAA,OAAO,IAAA,CAAK,QAAA,CACV,GAAA,CAAI,CAAC,OAAA,KAAY;AACjB,MAAA,MAAM,KAAA,GAAQ,QAAQ,IAAA,IAAQ,EAAA;AAC9B,MAAA,OAAO;AAAA,QACN,KAAA;AAAA,QACA;AAAA,OACD;AAAA,IACD,CAAC,EACA,IAAA,EAAK;AAAA,EACR;AAEA,EAAA,SAAS,kBAAkB,UAAA,EAAkC;AAC5D,IAAA,OAAO,UAAA,CACL,GAAA,CAAI,CAAC,EAAE,aAAY,KAAM;AACzB,MAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,KAAe;AACtC,QAAA,MAAM,EAAE,WAAA,EAAa,EAAA,EAAG,GAAI,UAAA;AAC5B,QAAA,MAAM,KAAA,GAAA,CACJ,YAAY,MAAA,KAAW,CAAA,GACrBC,YAAK,WAAW,CAAA,EAAG,QACnB,WAAA,CAAY,MAAA;AAAA,UACZ,CAAC,GAAA,EAAK,EAAE,KAAA,EAAAC,QAAM,EAAG,KAAA,KAChB,KAAA,KAAU,CAAA,GACP,GAAGA,MAAK,CAAA,CAAA,GACR,CAAA,EAAG,GAAG,MAAMA,MAAK,CAAA,CAAA;AAAA,UACrB;AAAA,SACD,KAAM,EAAA;AAET,QAAA,OAAO;AAAA,UACN,EAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACD;AAAA,MACD,CAAC,CAAA;AAAA,IACF,CAAC,EACA,IAAA,EAAK;AAAA,EACR;AAGA,EAAA,IAAI,cAAA,EAAgB;AAEnB,IAAA,MAAM,UAAA,GAAa,OAAO,aAAA,CAAc,UAAA;AACxC,IAAA,OAAO,kBAAkB,UAAU,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,cAAA,EAAe;AACvB","file":"data.js","sourcesContent":["import type { ScorecardDataQueryResponse } from \"../hooks/data\";\nimport type { ScorecardMeta } from \"../components\";\nimport type {\n\tScorecardConfig,\n\tScorecardDataGroup,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport { fromPairs, head } from \"lodash\";\n\nexport interface AnalyticsData {\n\tdx?: string;\n\tpe?: string;\n\tou?: string;\n\tvalue?: string;\n\n\t[key: string]: string | undefined;\n}\n\nexport function sanitizeAnalyticsData(data: ScorecardDataQueryResponse) {\n\tconst { headers, rows } = data.data;\n\treturn rows.map((row) => {\n\t\treturn fromPairs(\n\t\t\trow.map((value, index) => {\n\t\t\t\tconst key = headers[index].name as \"dx\" | \"ou\" | \"pe\";\n\t\t\t\treturn [key, value];\n\t\t\t}),\n\t\t) as AnalyticsData;\n\t});\n}\n\nexport function getRowsFromMeta({\n\tmeta,\n\tconfig,\n\tshowDataInRows,\n}: {\n\tmeta: ScorecardMeta;\n\tshowDataInRows: boolean;\n\tconfig: ScorecardConfig;\n}): ScorecardTableData[] {\n\tfunction getOrgUnitData() {\n\t\treturn meta.orgUnits\n\t\t\t.map((orgUnit) => {\n\t\t\t\tconst label = orgUnit.name ?? \"\";\n\t\t\t\treturn {\n\t\t\t\t\tlabel,\n\t\t\t\t\torgUnit,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\tfunction getDataGroupsData(dataGroups: ScorecardDataGroup[]) {\n\t\treturn dataGroups\n\t\t\t.map(({ dataHolders }) => {\n\t\t\t\treturn dataHolders.map((dataHolder) => {\n\t\t\t\t\tconst { dataSources, id } = dataHolder;\n\t\t\t\t\tconst label =\n\t\t\t\t\t\t(dataSources.length === 1\n\t\t\t\t\t\t\t? head(dataSources)?.label\n\t\t\t\t\t\t\t: dataSources.reduce(\n\t\t\t\t\t\t\t\t\t(acc, { label }, index) =>\n\t\t\t\t\t\t\t\t\t\tindex === 0\n\t\t\t\t\t\t\t\t\t\t\t? `${label}`\n\t\t\t\t\t\t\t\t\t\t\t: `${acc} / ${label}`,\n\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t)) ?? \"\";\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\t//No need of computing the average of each row\n\tif (showDataInRows) {\n\t\t//Rows are derived from groups\n\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\treturn getDataGroupsData(dataGroups);\n\t}\n\treturn getOrgUnitData();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/dataEngine.ts"],"names":["queue","maxBy","chunk","asyncify"],"mappings":"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","file":"dataEngine.js","sourcesContent":["import type { AnalyticsData } from \"./data\";\nimport { asyncify, queue } from \"async-es\";\nimport { chunk, maxBy } from \"lodash\";\nimport type { QueueObject } from \"async\";\n\nexport type RemoveListener = () => void;\nexport type DataEngineListener = (data: AnalyticsData[]) => void;\nexport type OnCompleteDataEngineListener = (completed: boolean) => void;\nexport type ProgressListeners = (progress: number) => void;\n\nconst chunkSize = 5;\n\nexport type ScorecardDataEngine = ReturnType<typeof createScorecardDataEngine>;\n\nexport function createScorecardDataEngine() {\n\treturn {\n\t\tqueue: queue(async () => Promise.resolve([])) as QueueObject<{\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}>,\n\t\tdata: [] as AnalyticsData[],\n\t\ttotalRequests: 0,\n\t\tcompletedRequests: 0,\n\t\tisDone: false,\n\t\tinitialized: false,\n\t\tdataListeners: [] as DataEngineListener[],\n\t\tonCompleteListeners: [] as OnCompleteDataEngineListener[],\n\t\tprogressListeners: [] as ProgressListeners[],\n\t\tdimensions: {\n\t\t\torgUnits: [] as string[],\n\t\t\tperiods: [] as string[],\n\t\t\tdataItems: [] as string[],\n\t\t},\n\t\tupdateProgress() {\n\t\t\tconst progress = this.completedRequests / this.totalRequests;\n\t\t\tfor (const listener of this.progressListeners) {\n\t\t\t\tlistener(progress);\n\t\t\t}\n\t\t},\n\t\tupdateTotalRequests(value: number) {\n\t\t\tthis.totalRequests = value;\n\t\t\tthis.updateProgress();\n\t\t},\n\t\tupdateCompleteRequests(value: number) {\n\t\t\tthis.completedRequests = value;\n\t\t\tthis.updateProgress();\n\t\t},\n\t\taddDataListener(listener: DataEngineListener): RemoveListener {\n\t\t\tthis.dataListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.dataListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\taddOnCompleteListener(\n\t\t\tlistener: OnCompleteDataEngineListener,\n\t\t): RemoveListener {\n\t\t\tthis.onCompleteListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.onCompleteListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\taddProgressListener(listener: ProgressListeners): RemoveListener {\n\t\t\tthis.progressListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.progressListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: DataEngineListener) {\n\t\t\treturn this.dataListeners.filter((l) => l !== listener);\n\t\t},\n\t\tupdateData(data: AnalyticsData[]) {\n\t\t\tthis.data = [...this.data, ...data];\n\t\t\tfor (const listener of this.dataListeners) {\n\t\t\t\tlistener(this.data);\n\t\t\t}\n\t\t},\n\t\tcomplete() {\n\t\t\tthis.isDone = true;\n\t\t\tfor (const listener of this.onCompleteListeners) {\n\t\t\t\tlistener(this.isDone);\n\t\t\t}\n\t\t},\n\t\tclear() {\n\t\t\tthis.data = [];\n\t\t\tthis.isDone = false;\n\t\t\tthis.initialized = false;\n\t\t},\n\t\tsetupDataFetch() {\n\t\t\tconst getTheLongestDimension = () => {\n\t\t\t\tconst dimensions = [\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"pe\",\n\t\t\t\t\t\tlength: this.dimensions.periods.length,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"dx\",\n\t\t\t\t\t\tlength: this.dimensions.dataItems.length,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"ou\",\n\t\t\t\t\t\tlength: this.dimensions.orgUnits.length,\n\t\t\t\t\t},\n\t\t\t\t] as const;\n\n\t\t\t\treturn maxBy(dimensions, \"length\")!.dimension;\n\t\t\t};\n\t\t\tconst getChunkedData = async (maxItem: \"dx\" | \"pe\" | \"ou\") => {\n\t\t\t\tswitch (maxItem) {\n\t\t\t\t\tcase \"dx\":\n\t\t\t\t\t\tconst dataItemChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.dataItems,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(dataItemChunks.length);\n\t\t\t\t\t\tfor (const dataItemChunk of dataItemChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: this.dimensions.periods,\n\t\t\t\t\t\t\t\t\tdataItems: dataItemChunk,\n\t\t\t\t\t\t\t\t\torgUnits: this.dimensions.orgUnits,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"pe\":\n\t\t\t\t\t\tconst periodChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.periods,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(periodChunks.length);\n\t\t\t\t\t\tfor (const periodChunk of periodChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: periodChunk,\n\t\t\t\t\t\t\t\t\tdataItems: this.dimensions.dataItems,\n\t\t\t\t\t\t\t\t\torgUnits: this.dimensions.orgUnits,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ou\":\n\t\t\t\t\t\tconst orgUnitChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.orgUnits,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(orgUnitChunks.length);\n\t\t\t\t\t\tfor (const orgUnitChunk of orgUnitChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: this.dimensions.periods,\n\t\t\t\t\t\t\t\t\tdataItems: this.dimensions.dataItems,\n\t\t\t\t\t\t\t\t\torgUnits: orgUnitChunk,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.queue.remove(() => true);\n\t\t\tif (\n\t\t\t\tthis.dimensions.periods.length < 5 &&\n\t\t\t\tthis.dimensions.dataItems.length < 5 &&\n\t\t\t\tthis.dimensions.orgUnits.length < 5\n\t\t\t) {\n\t\t\t\tconst { orgUnits, periods, dataItems } = this.dimensions;\n\t\t\t\tthis.updateTotalRequests(1);\n\t\t\t\tthis.updateCompleteRequests(0);\n\t\t\t\tthis.queue\n\t\t\t\t\t.push({\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\torgUnits,\n\t\t\t\t\t\tdataItems,\n\t\t\t\t\t})\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\tthis.updateCompleteRequests(1);\n\t\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst dimensionWithMaxItems = getTheLongestDimension();\n\t\t\tgetChunkedData(dimensionWithMaxItems);\n\t\t},\n\t\tinitialize(\n\t\t\tfetch: (dimensions: {\n\t\t\t\tperiods: string[];\n\t\t\t\torgUnits: string[];\n\t\t\t\tdataItems: string[];\n\t\t\t}) => Promise<AnalyticsData[]>,\n\t\t\t{\n\t\t\t\tdimensions,\n\t\t\t}: {\n\t\t\t\tdimensions: {\n\t\t\t\t\tdataItems: string[];\n\t\t\t\t\torgUnits: string[];\n\t\t\t\t\tperiods: string[];\n\t\t\t\t};\n\t\t\t},\n\t\t) {\n\t\t\tthis.dimensions = dimensions;\n\t\t\tthis.queue = queue(asyncify(fetch));\n\t\t\tthis.queue.drain(() => {\n\t\t\t\tthis.complete();\n\t\t\t});\n\t\t\tthis.initialized = true;\n\t\t\tthis.clear();\n\t\t\tthis.setupDataFetch();\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/dataEngine.ts"],"names":["queue","maxBy","chunk","asyncify"],"mappings":"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","file":"dataEngine.js","sourcesContent":["import type { AnalyticsData } from \"./data\";\nimport { asyncify, queue } from \"async-es\";\nimport { chunk, maxBy } from \"lodash\";\nimport type { QueueObject } from \"async\";\n\nexport type RemoveListener = () => void;\nexport type DataEngineListener = (data: AnalyticsData[]) => void;\nexport type OnCompleteDataEngineListener = (completed: boolean) => void;\nexport type ProgressListeners = (progress: number) => void;\n\nconst chunkSize = 5;\n\nexport type ScorecardDataEngine = ReturnType<typeof createScorecardDataEngine>;\n\nexport function createScorecardDataEngine() {\n\treturn {\n\t\tqueue: queue(async () => Promise.resolve([])) as QueueObject<{\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}>,\n\t\tdata: [] as AnalyticsData[],\n\t\ttotalRequests: 0,\n\t\tcompletedRequests: 0,\n\t\tisDone: false,\n\t\tinitialized: false,\n\t\tdataListeners: [] as DataEngineListener[],\n\t\tonCompleteListeners: [] as OnCompleteDataEngineListener[],\n\t\tprogressListeners: [] as ProgressListeners[],\n\t\tdimensions: {\n\t\t\torgUnits: [] as string[],\n\t\t\tperiods: [] as string[],\n\t\t\tdataItems: [] as string[],\n\t\t},\n\t\tupdateProgress() {\n\t\t\tconst progress = this.completedRequests / this.totalRequests;\n\t\t\tfor (const listener of this.progressListeners) {\n\t\t\t\tlistener(progress);\n\t\t\t}\n\t\t},\n\t\tupdateTotalRequests(value: number) {\n\t\t\tthis.totalRequests = value;\n\t\t\tthis.updateProgress();\n\t\t},\n\t\tupdateCompleteRequests(value: number) {\n\t\t\tthis.completedRequests = value;\n\t\t\tthis.updateProgress();\n\t\t},\n\t\taddDataListener(listener: DataEngineListener): RemoveListener {\n\t\t\tthis.dataListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.dataListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\taddOnCompleteListener(\n\t\t\tlistener: OnCompleteDataEngineListener,\n\t\t): RemoveListener {\n\t\t\tthis.onCompleteListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.onCompleteListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\taddProgressListener(listener: ProgressListeners): RemoveListener {\n\t\t\tthis.progressListeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.progressListeners.filter((l) => l !== listener);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: DataEngineListener) {\n\t\t\treturn this.dataListeners.filter((l) => l !== listener);\n\t\t},\n\t\tupdateData(data: AnalyticsData[]) {\n\t\t\tthis.data = [...this.data, ...data];\n\t\t\tfor (const listener of this.dataListeners) {\n\t\t\t\tlistener(this.data);\n\t\t\t}\n\t\t},\n\t\tcomplete() {\n\t\t\tthis.isDone = true;\n\t\t\tfor (const listener of this.onCompleteListeners) {\n\t\t\t\tlistener(this.isDone);\n\t\t\t}\n\t\t},\n\t\tclear() {\n\t\t\tthis.data = [];\n\t\t\tthis.isDone = false;\n\t\t\tthis.initialized = false;\n\t\t},\n\t\tsetupDataFetch() {\n\t\t\tconst getTheLongestDimension = () => {\n\t\t\t\tconst dimensions = [\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"pe\",\n\t\t\t\t\t\tlength: this.dimensions.periods.length,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"dx\",\n\t\t\t\t\t\tlength: this.dimensions.dataItems.length,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdimension: \"ou\",\n\t\t\t\t\t\tlength: this.dimensions.orgUnits.length,\n\t\t\t\t\t},\n\t\t\t\t] as const;\n\n\t\t\t\treturn maxBy(dimensions, \"length\")!.dimension;\n\t\t\t};\n\t\t\tconst getChunkedData = async (maxItem: \"dx\" | \"pe\" | \"ou\") => {\n\t\t\t\tswitch (maxItem) {\n\t\t\t\t\tcase \"dx\":\n\t\t\t\t\t\tconst dataItemChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.dataItems,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(dataItemChunks.length);\n\t\t\t\t\t\tfor (const dataItemChunk of dataItemChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: this.dimensions.periods,\n\t\t\t\t\t\t\t\t\tdataItems: dataItemChunk,\n\t\t\t\t\t\t\t\t\torgUnits: this.dimensions.orgUnits,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"pe\":\n\t\t\t\t\t\tconst periodChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.periods,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(periodChunks.length);\n\t\t\t\t\t\tfor (const periodChunk of periodChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: periodChunk,\n\t\t\t\t\t\t\t\t\tdataItems: this.dimensions.dataItems,\n\t\t\t\t\t\t\t\t\torgUnits: this.dimensions.orgUnits,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"ou\":\n\t\t\t\t\t\tconst orgUnitChunks = chunk(\n\t\t\t\t\t\t\tthis.dimensions.orgUnits,\n\t\t\t\t\t\t\tchunkSize,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.updateTotalRequests(orgUnitChunks.length);\n\t\t\t\t\t\tfor (const orgUnitChunk of orgUnitChunks) {\n\t\t\t\t\t\t\tthis.queue\n\t\t\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\t\t\tperiods: this.dimensions.periods,\n\t\t\t\t\t\t\t\t\tdataItems: this.dimensions.dataItems,\n\t\t\t\t\t\t\t\t\torgUnits: orgUnitChunk,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\t\t\tthis.updateCompleteRequests(\n\t\t\t\t\t\t\t\t\t\tthis.completedRequests + 1,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.queue.remove(() => true);\n\t\t\tif (\n\t\t\t\tthis.dimensions.periods.length < 5 &&\n\t\t\t\tthis.dimensions.dataItems.length < 5 &&\n\t\t\t\tthis.dimensions.orgUnits.length < 5\n\t\t\t) {\n\t\t\t\tconst { orgUnits, periods, dataItems } = this.dimensions;\n\t\t\t\tthis.updateTotalRequests(1);\n\t\t\t\tthis.updateCompleteRequests(0);\n\t\t\t\tthis.queue\n\t\t\t\t\t.push({\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\torgUnits,\n\t\t\t\t\t\tdataItems,\n\t\t\t\t\t})\n\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\tthis.updateData(data as AnalyticsData[]);\n\t\t\t\t\t\tthis.updateCompleteRequests(1);\n\t\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst dimensionWithMaxItems = getTheLongestDimension();\n\t\t\tgetChunkedData(dimensionWithMaxItems);\n\t\t},\n\t\tinitialize(\n\t\t\tfetch: (dimensions: {\n\t\t\t\tperiods: string[];\n\t\t\t\torgUnits: string[];\n\t\t\t\tdataItems: string[];\n\t\t\t}) => Promise<AnalyticsData[]>,\n\t\t\t{\n\t\t\t\tdimensions,\n\t\t\t}: {\n\t\t\t\tdimensions: {\n\t\t\t\t\tdataItems: string[];\n\t\t\t\t\torgUnits: string[];\n\t\t\t\t\tperiods: string[];\n\t\t\t\t};\n\t\t\t},\n\t\t) {\n\t\t\tthis.dimensions = dimensions;\n\t\t\tthis.queue = queue(asyncify(fetch));\n\t\t\tthis.queue.drain(() => {\n\t\t\t\tthis.complete();\n\t\t\t});\n\t\t\tthis.initialized = true;\n\t\t\tthis.clear();\n\t\t\tthis.setupDataFetch();\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/dataSources.ts"],"names":["flattenDeep","compact"],"mappings":";;;;AAMO,SAAS,qBACf,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/dataSources.ts"],"names":["flattenDeep","compact"],"mappings":";;;;AAMO,SAAS,qBACf,UAAA,EACwB;AACxB,EAAA,OAAOA,kBAAA,CAAY,UAAA,EAAY,GAAA,CAAI,CAAC,EAAE,aAAY,KAAM,WAAW,CAAA,IAAK,EAAE,CAAA;AAC3E;AAEO,SAAS,yBAAyB,UAAA,EAAkC;AAC1E,EAAA,MAAM,WAAA,GAAcC,cAAA,CAAQ,oBAAA,CAAqB,UAAU,CAAC,CAAA;AAC5D,EAAA,OAAOD,kBAAA,CAAY,aAAa,GAAA,CAAI,CAAC,EAAE,WAAA,EAAY,KAAM,WAAW,CAAC,CAAA;AACtE","file":"dataSources.js","sourcesContent":["import { compact, flattenDeep } from \"lodash\";\nimport type {\n\tScorecardDataGroup,\n\tScorecardDataHolder,\n} from \"../schemas/config\";\n\nexport function getHoldersFromGroups(\n\tdataGroups: ScorecardDataGroup[],\n): ScorecardDataHolder[] {\n\treturn flattenDeep(dataGroups?.map(({ dataHolders }) => dataHolders) ?? []);\n}\n\nexport function getDataSourcesFromGroups(dataGroups: ScorecardDataGroup[]) {\n\tconst dataHolders = compact(getHoldersFromGroups(dataGroups));\n\treturn flattenDeep(dataHolders?.map(({ dataSources }) => dataSources));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/dimensionState.ts"],"names":["orgUnitSelection","periodSelection","useScorecardDimensionStateEngine","useState","useEffect","useScorecardMeta"],"mappings":";;;;;AAgCO,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/dimensionState.ts"],"names":["orgUnitSelection","periodSelection","useScorecardDimensionStateEngine","useState","useEffect","useScorecardMeta"],"mappings":"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","file":"dimensionState.js","sourcesContent":["import type { OrgUnitSelection, PeriodSelection } from \"../schemas/config\";\nimport {\n\tuseScorecardDimensionStateEngine,\n\tuseScorecardMeta,\n} from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type DimensionState = {\n\torgUnitSelection: OrgUnitSelection;\n\tperiodSelection: PeriodSelection;\n};\nexport type OrgUnitListener = {\n\ttype: \"orgUnit\";\n\tlistener: (orgUnitSelection: OrgUnitSelection) => void;\n};\nexport type PeriodListener = {\n\ttype: \"period\";\n\tlistener: (periodSelection: PeriodSelection) => void;\n};\nexport type AllDimensionListener = {\n\ttype: \"all\";\n\tlistener: (dimensionState: DimensionState) => void;\n};\nexport type DimensionListener =\n\t| OrgUnitListener\n\t| PeriodListener\n\t| AllDimensionListener;\n\nexport type DimensionStateEngine = ReturnType<\n\ttypeof createDimensionStateEngine\n>;\n\nexport function createDimensionStateEngine({\n\torgUnitSelection,\n\tperiodSelection,\n}: DimensionState) {\n\treturn {\n\t\torgUnitSelection,\n\t\tperiodSelection,\n\t\tlisteners: [] as DimensionListener[],\n\t\taddListener(listener: DimensionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: DimensionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: DimensionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: DimensionListener) => l !== listener,\n\t\t\t);\n\t\t},\n\t\tupdate({ orgUnitSelection, periodSelection }: DimensionState) {\n\t\t\tthis.orgUnitSelection = orgUnitSelection;\n\t\t\tthis.periodSelection = periodSelection;\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tif (listener.type === \"orgUnit\") {\n\t\t\t\t\tlistener.listener(orgUnitSelection);\n\t\t\t\t}\n\t\t\t\tif (listener.type === \"period\") {\n\t\t\t\t\tlistener.listener(periodSelection);\n\t\t\t\t}\n\t\t\t\tif (listener.type === \"all\") {\n\t\t\t\t\tlistener.listener({\n\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t\tperiodSelection,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdatePeriodSelection(periodSelection: PeriodSelection) {\n\t\t\tthis.periodSelection = periodSelection;\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tif (listener.type === \"period\") {\n\t\t\t\t\tlistener.listener(periodSelection);\n\t\t\t\t}\n\t\t\t\tif (listener.type === \"all\") {\n\t\t\t\t\tlistener.listener({\n\t\t\t\t\t\torgUnitSelection: this.orgUnitSelection,\n\t\t\t\t\t\tperiodSelection,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdateOrgUnitSelection(orgUnitSelection: OrgUnitSelection) {\n\t\t\tthis.orgUnitSelection = orgUnitSelection;\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tif (listener.type === \"orgUnit\") {\n\t\t\t\t\tlistener.listener(orgUnitSelection);\n\t\t\t\t}\n\t\t\t\tif (listener.type === \"all\") {\n\t\t\t\t\tlistener.listener({\n\t\t\t\t\t\torgUnitSelection: orgUnitSelection,\n\t\t\t\t\t\tperiodSelection: this.periodSelection,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport function useUpdateDimensionState(type: \"orgUnit\" | \"period\" | \"all\") {\n\tconst dimensionEngine = useScorecardDimensionStateEngine();\n\treturn (value: OrgUnitSelection | PeriodSelection | DimensionState) => {\n\t\tswitch (type) {\n\t\t\tcase \"orgUnit\":\n\t\t\t\tdimensionEngine.updateOrgUnitSelection(\n\t\t\t\t\tvalue as OrgUnitSelection,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase \"period\":\n\t\t\t\tdimensionEngine.updatePeriodSelection(value as PeriodSelection);\n\t\t\t\tbreak;\n\t\t\tcase \"all\":\n\t\t\t\tdimensionEngine.update(value as DimensionState);\n\t\t}\n\t};\n}\n\nexport function usePeriodSelectionValue() {\n\tconst dimensionEngine = useScorecardDimensionStateEngine();\n\tconst [periodSelection, setPeriodSelection] = useState<PeriodSelection>(\n\t\tdimensionEngine.periodSelection,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = dimensionEngine.addListener({\n\t\t\ttype: \"period\",\n\t\t\tlistener: (periodSelection) => {\n\t\t\t\tsetPeriodSelection(periodSelection);\n\t\t\t},\n\t\t});\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn periodSelection;\n}\n\nexport function useHasOnePeriod() {\n\tconst scorecardMeta = useScorecardMeta();\n\tconst periodSelection = usePeriodSelectionValue();\n\tif (scorecardMeta) {\n\t\treturn scorecardMeta.periods.length === 1;\n\t}\n\treturn periodSelection.periods.length === 1;\n}\n\nexport function useOrgUnitSelectionValue() {\n\tconst dimensionEngine = useScorecardDimensionStateEngine();\n\tconst [orgUnitSelection, setOrgUnitSelection] = useState<OrgUnitSelection>(\n\t\tdimensionEngine.orgUnitSelection,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = dimensionEngine.addListener({\n\t\t\ttype: \"orgUnit\",\n\t\t\tlistener: (periodSelection) => {\n\t\t\t\tsetOrgUnitSelection(periodSelection);\n\t\t\t},\n\t\t});\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn orgUnitSelection;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/legends.ts"],"names":["find","isEmpty","head"],"mappings":";;;;AAWA,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/legends.ts"],"names":["find","isEmpty","head"],"mappings":";;;;AAWA,SAAS,UAAA,CAAW;AAAA,EACnB,GAAA;AAAA,EACA,iBAAA;AAAA,EACA,KAAA;AAAA,EACA;AACD,CAAA,EAKiC;AAChC,EAAA,IAAI,CAAC,KAAA,EAAO;AACX,IAAA,OAAOA,WAAA,CAAK,iBAAA,EAAmB,EAAE,EAAA,EAAI,WAAW,CAAA;AAAA,EACjD;AACA,EAAA,MAAM,YAAA,GAAe,KAAA;AACrB,EAAA,IAAI,eAAe,GAAA,EAAK;AACvB,IAAA,OAAOA,WAAA,CAAK,iBAAA,EAAmB,EAAE,EAAA,EAAI,OAAO,CAAA;AAAA,EAC7C;AACA,EAAA,IAAI,KAAA,CAAM,YAAY,CAAA,EAAG;AACxB,IAAA,OAAOA,WAAA,CAAK,iBAAA,EAAmB,EAAE,EAAA,EAAI,WAAW,CAAA;AAAA,EACjD;AAEA,EAAA,MAAM,EAAE,kBAAA,EAAmB,GAC1BA,WAAA,CAAK,OAAA,EAAS,CAAC,MAAA,KAAW;AACzB,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAS,GAAI,MAAA;AACjC,MAAA,IAAI,CAAC,aAAa,GAAA,EAAK;AACtB,QAAA,OACC,CAAC,UAAA,IAAc,YAAA,IAAgB,CAAC,QAAA,IAAY,YAAA;AAAA,MAE9C;AACA,MAAA,OAAO,CAAC,UAAA,IAAc,YAAA,IAAgB,CAAC,QAAA,GAAW,YAAA;AAAA,IACnD;AACA,IAAA,OAAO,KAAA;AAAA,EACR,CAAC,KAAK,EAAC;AAER,EAAA,OAAOA,WAAA,CAAK,iBAAA,EAAmB,CAAC,IAAA,EAAM,kBAAkB,CAAC,CAAA;AAC1D;AAEA,SAAS,wBAAA,CAAyB,gBAAgC,EAAA,EAAY;AAC7E,EAAA,IAAI,cAAA,CAAe,KAAA,CAAM,QAAA,CAAS,EAAE,CAAA,EAAG;AACtC,IAAA,OAAO,cAAA,CAAe,OAAA;AAAA,EACvB;AACD;AAEA,SAAS,uBAAA,CAAwB;AAAA,EAChC,OAAA;AAAA,EACA,aAAA;AAAA,EACA;AACD,CAAA,EAOsB;AACrB,EAAA,MAAM,eAAe,aAAA,CAAc,IAAA,CAAK,CAAC,EAAE,EAAA,EAAI,OAAM,KAAM;AAC1D,IAAA,MAAM,OAAA,GAAU,QAAQ,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA;AAC7D,IAAA,OAAO,KAAA,KAAU,OAAA;AAAA,EAClB,CAAC,CAAA;AAED,EAAA,IAAI,CAAC,YAAA,EAAc;AAClB,IAAA,MAAM,IAAI,MAAM,mBAAmB,CAAA;AAAA,EACpC;AAEA,EAAA,OAAO,OAAA,CAAQ,aAAa,EAAE,CAAA;AAC/B;AAEO,SAAS,SAAA,CAAU;AAAA,EACzB,UAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAAA,EAUG;AACF,EAAA,IAAI,UAA6B,EAAC;AAElC,EAAA,IAAI,QAAA,IAAY,WAAW,aAAA,EAAe;AACzC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,EAAG;AACvC,MAAA,OAAA,GAAU,uBAAA,CAAwB;AAAA,QACjC,OAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAS,UAAA,CAAW;AAAA,OACpB,CAAA;AAAA,IACF,CAAA,MAAO;AACN,MAAA,MAAM,kBAAkB,UAAA,CAAW,eAAA;AACnC,MAAA,IAAI,CAACC,cAAA,CAAQ,eAAe,CAAA,EAAG;AAC9B,QAAA,MAAM,cAAA,GAAiBC,YAAK,eAAe,CAAA;AAC3C,QAAA,QAAQ,eAAe,IAAA;AAAM,UAC5B,KAAK,SAAA;AACJ,YAAA,MAAM,aAAA,GAAgB,wBAAA;AAAA,cACrB,cAAA;AAAA,cACA;AAAA,aACD;AACA,YAAA,OAAA,GAAU,iBAAiB,UAAA,CAAW,OAAA;AACtC,YAAA;AAAA,UACD,KAAK,SAAA;AACJ,YAAA,MAAM,oBAAA,GAAuB,wBAAA;AAAA,cAC5B,cAAA;AAAA,cACA,OAAA,CAAQ;AAAA,aACT;AACA,YAAA,OAAA,GAAU,wBAAwB,UAAA,CAAW,OAAA;AAC7C,YAAA;AAAA,UACD;AACC,YAAA,OAAA,GAAU,UAAA,CAAW,OAAA;AAAA;AACvB,MACD,CAAA,MAAO;AACN,QAAA,OAAA,GAAU,UAAA,CAAW,OAAA;AAAA,MACtB;AAAA,IACD;AAAA,EACD,CAAA,MAAO;AACN,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,EAAG;AACtC,MAAA,OAAA,GAAU,UAAA,CAAW,OAAA;AAAA,IACtB;AAAA,EACD;AAEA,EAAA,OAAO,UAAA,CAAW;AAAA,IACjB,OAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAK,UAAA,CAAW,MAAA;AAAA,IAChB,mBAAmB,MAAA,CAAO;AAAA,GAC1B,CAAA;AACF;AAEO,SAAS,gCAAgC,UAAA,EAA4B;AAE3E,EAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAGxC,EAAA,IAAI,IAAI,QAAA,CAAS,UAAA,CAAW,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC/C,EAAA,IAAI,IAAI,QAAA,CAAS,UAAA,CAAW,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAC/C,EAAA,IAAI,IAAI,QAAA,CAAS,UAAA,CAAW,UAAU,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AAG/C,EAAA,IAAI,OAAO,CAAA,GAAI,GAAA,GAAM,CAAA,GAAI,GAAA,GAAM,IAAI,GAAA,IAAO,GAAA;AAG1C,EAAA,OAAO,GAAA,IAAO,MAAM,SAAA,GAAY,SAAA;AACjC","file":"legends.js","sourcesContent":["import type {\n\tLegendDefinition,\n\tOrgUnitLevelLegend,\n\tScorecardConfig,\n\tScorecardDataSource,\n\tScorecardLegend,\n\tSpecificTarget,\n} from \"../schemas/config\";\nimport { find, head, isEmpty } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\n\nfunction findLegend({\n\tmax,\n\tlegendDefinitions,\n\tvalue,\n\tlegends,\n}: {\n\tmax: number;\n\tlegendDefinitions: LegendDefinition[];\n\tlegends: ScorecardLegend[];\n\tvalue?: number;\n}): LegendDefinition | undefined {\n\tif (!value) {\n\t\treturn find(legendDefinitions, { id: \"No Data\" });\n\t}\n\tconst numericValue = value;\n\tif (numericValue > max) {\n\t\treturn find(legendDefinitions, { id: \"N/A\" });\n\t}\n\tif (isNaN(numericValue)) {\n\t\treturn find(legendDefinitions, { id: \"No Data\" });\n\t}\n\n\tconst { legendDefinitionId } =\n\t\tfind(legends, (legend) => {\n\t\t\tif (legend) {\n\t\t\t\tconst { startValue, endValue } = legend;\n\t\t\t\tif (+endValue === max) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t+startValue <= numericValue && +endValue >= numericValue\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn +startValue <= numericValue && +endValue > numericValue;\n\t\t\t}\n\t\t\treturn false;\n\t\t}) ?? {};\n\n\treturn find(legendDefinitions, [\"id\", legendDefinitionId]);\n}\n\nfunction getSpecificTargetLegends(specificTarget: SpecificTarget, id: string) {\n\tif (specificTarget.items.includes(id)) {\n\t\treturn specificTarget.legends;\n\t}\n}\n\nfunction getLegendByOrgUnitLevel({\n\torgUnit,\n\torgUnitLevels,\n\tlegends,\n}: {\n\torgUnit: ItemMeta & { hierarchy: string };\n\tlegends: Record<string, ScorecardLegend[]>;\n\torgUnitLevels: Array<{\n\t\tid: string;\n\t\tlevel: number;\n\t}>;\n}): ScorecardLegend[] {\n\tconst orgUnitLevel = orgUnitLevels.find(({ id, level }) => {\n\t\tconst ouLevel = orgUnit.hierarchy.split(\"/\").filter(Boolean).length;\n\t\treturn level === ouLevel;\n\t});\n\n\tif (!orgUnitLevel) {\n\t\tthrow new Error(\"Invalid orgUnitId\");\n\t}\n\n\treturn legends[orgUnitLevel.id];\n}\n\nexport function getLegend({\n\tdataSource,\n\tconfig,\n\tvalue,\n\tperiodId,\n\torgUnit,\n\torgUnitLevels,\n}: {\n\tdataSource: ScorecardDataSource;\n\tvalue?: number;\n\tconfig: ScorecardConfig;\n\tperiodId?: string;\n\torgUnit?: ItemMeta & { hierarchy: string };\n\torgUnitLevels?: Array<{\n\t\tid: string;\n\t\tlevel: number;\n\t}>;\n}) {\n\tlet legends: ScorecardLegend[] = [];\n\n\tif (periodId && orgUnit && orgUnitLevels) {\n\t\tif (!Array.isArray(dataSource.legends)) {\n\t\t\tlegends = getLegendByOrgUnitLevel({\n\t\t\t\torgUnit,\n\t\t\t\torgUnitLevels,\n\t\t\t\tlegends: dataSource.legends as OrgUnitLevelLegend,\n\t\t\t});\n\t\t} else {\n\t\t\tconst specificTargets = dataSource.specificTargets;\n\t\t\tif (!isEmpty(specificTargets)) {\n\t\t\t\tconst specificTarget = head(specificTargets)!;\n\t\t\t\tswitch (specificTarget.type) {\n\t\t\t\t\tcase \"periods\":\n\t\t\t\t\t\tconst targetLegends = getSpecificTargetLegends(\n\t\t\t\t\t\t\tspecificTarget,\n\t\t\t\t\t\t\tperiodId,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends = targetLegends ?? dataSource.legends;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"orgUnit\":\n\t\t\t\t\t\tconst targetOrgUnitLegends = getSpecificTargetLegends(\n\t\t\t\t\t\t\tspecificTarget,\n\t\t\t\t\t\t\torgUnit.uid,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends = targetOrgUnitLegends ?? dataSource.legends;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlegends = dataSource.legends;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlegends = dataSource.legends;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (Array.isArray(dataSource.legends)) {\n\t\t\tlegends = dataSource.legends;\n\t\t}\n\t}\n\n\treturn findLegend({\n\t\tlegends,\n\t\tvalue: value,\n\t\tmax: dataSource.weight,\n\t\tlegendDefinitions: config.legendDefinitions,\n\t});\n}\n\nexport function getTextColorFromBackgroundColor(background: string): string {\n\t// Remove the hash at the start if it's there\n\tbackground = background.replace(/^#/, \"\");\n\n\t// Convert hex to RGB\n\tlet r = parseInt(background.substring(0, 2), 16);\n\tlet g = parseInt(background.substring(2, 4), 16);\n\tlet b = parseInt(background.substring(4, 6), 16);\n\n\t// Calculate the YIQ value\n\tlet yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n\t// Return black for light backgrounds and white for dark backgrounds\n\treturn yiq >= 128 ? \"#000000\" : \"#FFFFFF\";\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/orgUnits.ts"],"names":[],"mappings":";;AAGO,SAAS,wBACf,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/orgUnits.ts"],"names":[],"mappings":";;AAGO,SAAS,wBACf,gBAAA,EACW;AACX,EAAA,MAAM;AAAA,IACL,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACD,GAAI,oBAAoB,EAAC;AACzB,EAAA,MAAM,UAAU,EAAC;AAEjB,EAAA,IAAI,WAAA,EAAa;AAChB,IAAA,OAAA,CAAQ,KAAK,cAAc,CAAA;AAAA,EAC5B;AACA,EAAA,IAAI,WAAA,EAAa;AAChB,IAAA,OAAA,CAAQ,KAAK,uBAAuB,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,aAAA,EAAe;AAClB,IAAA,OAAA,CAAQ,KAAK,4BAA4B,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,QAAA,EAAU;AACb,IAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,KAAY,OAAA,CAAQ,EAAE,CAAC,CAAA;AAAA,EACtD;AACA,EAAA,IAAI,MAAA,EAAQ;AACX,IAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE,CAAC,CAAA;AAAA,EAC3D;AACA,EAAA,IAAI,MAAA,EAAQ;AACX,IAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,OAAA;AACR;AAEO,SAAS,gBAAgB,OAAA,EAA2C;AAC1E,EAAA,OAAO,QAAQ,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA;AACrD","file":"orgUnits.js","sourcesContent":["import type { OrgUnitSelection } from \"../schemas/config\";\nimport type { ItemMeta } from \"../hooks/metadata\";\n\nexport function getOrgUnitsForAnalytics(\n\torgUnitSelection: OrgUnitSelection,\n): string[] {\n\tconst {\n\t\tuserOrgUnit,\n\t\torgUnits,\n\t\tuserSubUnit,\n\t\tuserSubX2Unit,\n\t\tlevels,\n\t\tgroups,\n\t} = orgUnitSelection ?? {};\n\tconst results = [];\n\n\tif (userOrgUnit) {\n\t\tresults.push(\"USER_ORGUNIT\");\n\t}\n\tif (userSubUnit) {\n\t\tresults.push(\"USER_ORGUNIT_CHILDREN\");\n\t}\n\tif (userSubX2Unit) {\n\t\tresults.push(\"USER_ORGUNIT_GRANDCHILDREN\");\n\t}\n\n\tif (orgUnits) {\n\t\tresults.push(...orgUnits.map((orgUnit) => orgUnit.id));\n\t}\n\tif (groups) {\n\t\tresults.push(...groups.map((group) => `OU_GROUP-${group}`));\n\t}\n\tif (levels) {\n\t\tresults.push(...levels.map((level) => `LEVEL-${level}`));\n\t}\n\treturn results;\n}\n\nexport function getOrgUnitLevel(orgUnit: ItemMeta & { hierarchy: string }) {\n\treturn orgUnit.hierarchy.split(\"/\").filter(Boolean).length;\n}\n"]}
|
package/dist/utils/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/state.ts"],"names":[],"mappings":";;AAEO,SAAS,yBAAA,CACf,QACA,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/state.ts"],"names":[],"mappings":";;AAEO,SAAS,yBAAA,CACf,QACA,OAAA,EACiB;AACjB,EAAA,OAAO;AAAA,IACN,iBAAiB,MAAA,CAAO,eAAA;AAAA,IACxB,kBAAkB,MAAA,CAAO,gBAAA;AAAA,IACzB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,MAAA,EAAQ,SAAS,MAAA,IAAU,KAAA;AAAA,IAC3B,YAAA,EAAc,MAAA,CAAO,eAAA,CAAgB,OAAA,CAAQ,MAAA,KAAW;AAAA,GACzD;AACD","file":"state.js","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\n\nexport function getInitialStateFromConfig(\n\tconfig: ScorecardConfig,\n\toptions?: { nested: boolean },\n): ScorecardState {\n\treturn {\n\t\tperiodSelection: config.periodSelection,\n\t\torgUnitSelection: config.orgUnitSelection,\n\t\toptions: config.options,\n\t\tnested: options?.nested ?? false,\n\t\thasOnePeriod: config.periodSelection.periods.length === 1,\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/viewState.ts"],"names":["set","useScorecardViewStateEngine","useState","get","useEffect","value"],"mappings":";;;;;;AAgBO,SAAS,+BACf,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/viewState.ts"],"names":["set","useScorecardViewStateEngine","useState","get","useEffect","value"],"mappings":"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","file":"viewState.js","sourcesContent":["import type { ScorecardViewOptions } from \"../schemas/config\";\nimport { get, set } from \"lodash\";\nimport { useScorecardViewStateEngine } from \"../components\";\nimport { useEffect, useState } from \"react\";\n\nexport type ViewOptionListener = {\n\tkey: keyof ScorecardViewOptions;\n\tlistener: (\n\t\tvalue?: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t) => void;\n};\n\nexport type ScorecardViewStateEngine = ReturnType<\n\ttypeof createScorecardViewStateEngine\n>;\n\nexport function createScorecardViewStateEngine(\n\tdefaultOptions: ScorecardViewOptions,\n) {\n\treturn {\n\t\toptions: defaultOptions as ScorecardViewOptions,\n\t\tlisteners: [] as ViewOptionListener[],\n\t\toptionsListeners: [] as Array<(options: ScorecardViewOptions) => void>,\n\t\tupdateOption(\n\t\t\tkey: keyof ScorecardViewOptions,\n\t\t\tvalue: ScorecardViewOptions[keyof ScorecardViewOptions],\n\t\t) {\n\t\t\tset(this.options, key, value);\n\t\t\tconst listeners: ViewOptionListener[] = this.listeners.filter(\n\t\t\t\t(listener: ViewOptionListener) => listener.key === key,\n\t\t\t);\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener.listener(value);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\tupdateOptions(options: ScorecardViewOptions) {\n\t\t\tthis.options = {\n\t\t\t\t...this.options,\n\t\t\t\t...options,\n\t\t\t};\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tlistener.listener(options[listener.key]);\n\t\t\t}\n\t\t\tfor (const listener of this.optionsListeners) {\n\t\t\t\tlistener(this.options);\n\t\t\t}\n\t\t},\n\t\taddOptionListener(listener: (options: ScorecardViewOptions) => void) {\n\t\t\tthis.optionsListeners.push(listener);\n\n\t\t\treturn () => {\n\t\t\t\tthis.optionsListeners = this.optionsListeners.filter(\n\t\t\t\t\t(l: (options: ScorecardViewOptions) => void) =>\n\t\t\t\t\t\tl !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\taddListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners.push(listener);\n\t\t\treturn () => {\n\t\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t\t(l: ViewOptionListener) => l !== listener,\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\tremoveListener(listener: ViewOptionListener) {\n\t\t\tthis.listeners = this.listeners.filter(\n\t\t\t\t(l: ViewOptionListener) => listener !== l,\n\t\t\t);\n\t\t},\n\t};\n}\n\nexport function useScorecardViewStateValue<\n\tValueType extends ScorecardViewOptions[keyof ScorecardViewOptions],\n>(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [value, setValue] = useState<ValueType>(\n\t\tget(viewEngine.options, key) as ValueType,\n\t);\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addListener({\n\t\t\tkey,\n\t\t\tlistener(value) {\n\t\t\t\tsetValue(value as ValueType);\n\t\t\t},\n\t\t});\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\treturn value;\n}\n\nexport function useScorecardViewOptions() {\n\tconst viewEngine = useScorecardViewStateEngine();\n\tconst [options, setOptions] = useState<ScorecardViewOptions>(\n\t\tviewEngine.options,\n\t);\n\n\tuseEffect(() => {\n\t\tconst unsubscribe = viewEngine.addOptionListener(setOptions);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, []);\n\n\treturn options;\n}\n\nexport function useUpdateScorecardViewState(key: keyof ScorecardViewOptions) {\n\tconst viewEngine = useScorecardViewStateEngine();\n\treturn (value: ScorecardViewOptions[keyof ScorecardViewOptions]) => {\n\t\tviewEngine.updateOption(key, value);\n\t};\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hisptz/dhis2-scorecard",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.24",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"react-jsx-parser": "^2.2.0",
|
|
58
58
|
"react-to-print": "^3.0.1",
|
|
59
59
|
"xlsx": "^0.18.5",
|
|
60
|
-
"@hisptz/dhis2-
|
|
61
|
-
"@hisptz/dhis2-ui": "2.0.
|
|
62
|
-
"@hisptz/dhis2-
|
|
60
|
+
"@hisptz/dhis2-analytics": "2.1.29",
|
|
61
|
+
"@hisptz/dhis2-ui": "2.0.51",
|
|
62
|
+
"@hisptz/dhis2-utils": "2.0.19"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@dhis2/app-runtime": "^3",
|