@hisptz/dhis2-analytics 1.0.44 → 1.0.46

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.
Files changed (40) hide show
  1. package/build/cjs/components/CircularProgressDashboard/index.js +15 -0
  2. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +3 -2
  3. package/build/cjs/components/SingleValueContainer/index.js +16 -0
  4. package/build/cjs/components/Visualization/components/VisualizationSelector/index.js +4 -13
  5. package/build/cjs/components/Visualization/index.js +1 -11
  6. package/build/es/components/CircularProgressDashboard/index.js +1 -0
  7. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +2 -1
  8. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +1 -1
  9. package/build/es/components/SingleValueContainer/index.js +1 -0
  10. package/build/es/components/Visualization/components/VisualizationSelector/index.js +4 -13
  11. package/build/es/components/Visualization/index.js +1 -11
  12. package/build/types/components/CircularProgressDashboard/index.d.ts +1 -0
  13. package/build/types/components/SingleValueContainer/index.d.ts +1 -0
  14. package/build/types/components/Visualization/components/VisualizationSelector/index.d.ts +2 -4
  15. package/package.json +12 -8
  16. package/build/cjs/components/ChartAnalytics/ChartAnalytics.stories.js +0 -253
  17. package/build/cjs/components/ChartAnalytics/data/column-data.json +0 -210
  18. package/build/cjs/components/ChartAnalytics/data/complex-multi-series-data.json +0 -124
  19. package/build/cjs/components/ChartAnalytics/data/multi-series-data.json +0 -536
  20. package/build/cjs/components/ChartAnalytics/data/pie-data.json +0 -115
  21. package/build/cjs/components/ChartAnalytics/data/stacked-chart-data.json +0 -415
  22. package/build/cjs/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +0 -45
  23. package/build/cjs/components/CustomPivotTable/CustomPivotTable.stories.js +0 -69
  24. package/build/cjs/components/Map/Map.stories.js +0 -352
  25. package/build/cjs/components/SingleValueContainer/SingleValueContainer.stories.js +0 -127
  26. package/build/cjs/components/Visualization/Visualization.stories.js +0 -138
  27. package/build/cjs/dataProviders/map.js +0 -31
  28. package/build/es/components/ChartAnalytics/ChartAnalytics.stories.js +0 -235
  29. package/build/es/components/ChartAnalytics/data/column-data.json +0 -210
  30. package/build/es/components/ChartAnalytics/data/complex-multi-series-data.json +0 -124
  31. package/build/es/components/ChartAnalytics/data/multi-series-data.json +0 -536
  32. package/build/es/components/ChartAnalytics/data/pie-data.json +0 -115
  33. package/build/es/components/ChartAnalytics/data/stacked-chart-data.json +0 -415
  34. package/build/es/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +0 -34
  35. package/build/es/components/CustomPivotTable/CustomPivotTable.stories.js +0 -59
  36. package/build/es/components/Map/Map.stories.js +0 -334
  37. package/build/es/components/SingleValueContainer/SingleValueContainer.stories.js +0 -115
  38. package/build/es/components/Visualization/Visualization.stories.js +0 -129
  39. package/build/es/dataProviders/map.js +0 -24
  40. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.d.ts +0 -1
@@ -11,8 +11,8 @@ import { find, head, isEmpty } from "lodash";
11
11
  // }
12
12
  // return await import("./api");
13
13
  // }
14
- //
15
14
  // const EE = await importEEModule();
15
+ //@ts-ignore
16
16
  import EE from "./api";
17
17
  // @ts-ignore
18
18
  const ee = EE;
@@ -4,6 +4,7 @@ import { CssReset } from "@dhis2/ui";
4
4
  import React, { Suspense } from "react";
5
5
  import SingleValueItem from "./components/SingleValueItem/SingleValueItem";
6
6
  import styles from "./styles/SingleValueContainer.module.css";
7
+ export * from "./types/props";
7
8
  export function SingleValueContainer(_ref) {
8
9
  let {
9
10
  title,
@@ -77,8 +77,7 @@ export function PivotTableRenderer(_ref) {
77
77
  }
78
78
  export function ChartRenderer(_ref2) {
79
79
  let {
80
- options,
81
- height
80
+ options
82
81
  } = _ref2;
83
82
  const {
84
83
  analytics
@@ -89,8 +88,7 @@ export function ChartRenderer(_ref2) {
89
88
  return /*#__PURE__*/React.createElement(ChartAnalytics, {
90
89
  analytics: analytics,
91
90
  config: {
92
- ...options,
93
- height
91
+ ...options
94
92
  }
95
93
  });
96
94
  }
@@ -134,8 +132,7 @@ export function MapRenderer(_ref3) {
134
132
  }
135
133
  export function VisualizationSelector(_ref4) {
136
134
  let {
137
- config,
138
- height
135
+ config
139
136
  } = _ref4;
140
137
  const [type] = useVisualizationType();
141
138
  const {
@@ -158,15 +155,9 @@ export function VisualizationSelector(_ref4) {
158
155
  if (!analytics) {
159
156
  return null;
160
157
  }
161
- return /*#__PURE__*/React.createElement("div", {
162
- style: {
163
- width: "100%",
164
- height: "100%"
165
- }
166
- }, type === "pivotTable" && /*#__PURE__*/React.createElement(PivotTableRenderer, {
158
+ return /*#__PURE__*/React.createElement(React.Fragment, null, type === "pivotTable" && /*#__PURE__*/React.createElement(PivotTableRenderer, {
167
159
  options: config === null || config === void 0 ? void 0 : config.pivotTable
168
160
  }), type === "chart" && /*#__PURE__*/React.createElement(ChartRenderer, {
169
- height: height,
170
161
  options: config === null || config === void 0 ? void 0 : config.chart
171
162
  }), type === "map" && /*#__PURE__*/React.createElement(MapRenderer, {
172
163
  options: config === null || config === void 0 ? void 0 : config.map
@@ -72,7 +72,6 @@ export function Visualization(_ref2) {
72
72
  flexDirection: "column",
73
73
  width: "100%",
74
74
  height: "100%",
75
- padding: 16,
76
75
  gap: 16
77
76
  }
78
77
  }, showToolbar && /*#__PURE__*/React.createElement("div", {
@@ -82,16 +81,7 @@ export function Visualization(_ref2) {
82
81
  gap: 16,
83
82
  justifyContent: "space-between"
84
83
  }
85
- }, /*#__PURE__*/React.createElement(VisualizationTypeSelector, null), /*#__PURE__*/React.createElement(VisualizationDimensionSelector, null)), /*#__PURE__*/React.createElement("div", {
86
- style: {
87
- display: "flex",
88
- flexDirection: "column",
89
- alignItems: "center",
90
- justifyContent: "center",
91
- height: height !== null && height !== void 0 ? height : 500
92
- }
93
- }, /*#__PURE__*/React.createElement(VisualizationSelector, {
94
- height: height !== null && height !== void 0 ? height : 500,
84
+ }, /*#__PURE__*/React.createElement(VisualizationTypeSelector, null), /*#__PURE__*/React.createElement(VisualizationDimensionSelector, null)), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(VisualizationSelector, {
95
85
  config: config
96
86
  })))));
97
87
  }
@@ -1,3 +1,4 @@
1
1
  import React from "react";
2
2
  import { CircularDashboardProps } from "./types/props";
3
+ export * from "./types/props";
3
4
  export declare function CircularProgressDashboard({ numerator, size, denominator, value, textStyle, strokeStyle }: CircularDashboardProps): React.ReactElement;
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
2
  import SingleValueItem from "./components/SingleValueItem/SingleValueItem";
3
3
  import { SingleValueContainerProps } from "./types/props";
4
+ export * from "./types/props";
4
5
  export declare function SingleValueContainer({ title, singleValueItems, animationDuration, animationDelay }: SingleValueContainerProps): React.ReactElement;
5
6
  export { SingleValueItem };
@@ -8,18 +8,16 @@ import { OrgUnitSelection } from "@hisptz/dhis2-utils";
8
8
  import { PivotTableLayoutProps } from "../../../CustomPivotTable/components/Table";
9
9
  export interface VisualizationSelectorProps {
10
10
  config: VisualizationConfig;
11
- height: number;
12
11
  }
13
12
  export declare function getDimensionLabel(dimension: Dimension): any;
14
13
  export declare function getOrgUnitSelectionFromIds(ous: string[]): OrgUnitSelection;
15
14
  export declare function PivotTableRenderer({ options }: {
16
15
  options: CustomPivotTableOptions & PivotTableLayoutProps;
17
16
  }): JSX.Element | null;
18
- export declare function ChartRenderer({ options, height }: {
17
+ export declare function ChartRenderer({ options }: {
19
18
  options: ChartConfig;
20
- height: number;
21
19
  }): JSX.Element | null;
22
20
  export declare function MapRenderer({ options }: {
23
21
  options: Omit<MapProps, "orgUnitSelection" | "periodSelection">;
24
22
  }): JSX.Element;
25
- export declare function VisualizationSelector({ config, height }: VisualizationSelectorProps): JSX.Element | null;
23
+ export declare function VisualizationSelector({ config }: VisualizationSelectorProps): JSX.Element | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "1.0.44",
3
+ "version": "1.0.46",
4
4
  "description": "A collection of reusable react components for visualizing analytics data from DHIS2",
5
5
  "license": "BSD-3-Clause",
6
6
  "scripts": {
@@ -17,6 +17,7 @@
17
17
  "@dhis2/cli-app-scripts": "^10.2.0",
18
18
  "@dhis2/cypress-commands": "^9.0.2",
19
19
  "@dhis2/cypress-plugins": "^9.0.2",
20
+ "@dhis2/ui": "^8.13.0",
20
21
  "@google/earthengine": "^0.1.336",
21
22
  "@types/d3-color": "^3.1.0",
22
23
  "@types/d3-scale": "^4.0.3",
@@ -25,14 +26,13 @@
25
26
  "@types/react-helmet": "^6.1.6",
26
27
  "cypress": "^12.3.0",
27
28
  "lodash": "^4.17.21",
28
- "react-hook-form": "^7.42.1",
29
+ "react-hook-form": "^7.43.9",
29
30
  "typescript": "^4.9.5"
30
31
  },
31
32
  "dependencies": {
32
- "@dhis2/analytics": "^24.4.2",
33
33
  "@dhis2/app-runtime": "^3.7.0",
34
- "@hisptz/dhis2-ui": "^1.0.42",
35
- "@hisptz/dhis2-utils": "^1.0.42",
34
+ "@hisptz/dhis2-ui": "^1.0.45",
35
+ "@hisptz/dhis2-utils": "*",
36
36
  "@react-leaflet/core": "^2.1.0",
37
37
  "async-es": "^3.2.4",
38
38
  "d3-color": "^3.1.0",
@@ -45,7 +45,6 @@
45
45
  "react-circular-progressbar": "^2.1.0",
46
46
  "react-error-boundary": "^4.0.4",
47
47
  "react-helmet": "^6.1.0",
48
- "react-hook-form": "^7.43.9",
49
48
  "react-leaflet": "^4.2.0",
50
49
  "react-leaflet-custom-control": "^1.3.1",
51
50
  "react-spring": "^9.6.1",
@@ -81,7 +80,12 @@
81
80
  "url": "https://github.com/hisptz/dhis2-utils/issues"
82
81
  },
83
82
  "peerDependencies": {
84
- "lodash": "^4"
83
+ "@dhis2/d2-i18n": "^1.1",
84
+ "@dhis2/ui": "^8.13",
85
+ "lodash": "^4",
86
+ "react": "*",
87
+ "react-hook-form": "^7.43",
88
+ "recoil": "*"
85
89
  },
86
- "gitHead": "6f9f77d73df7acac380db5ded5cac234494b21f3"
90
+ "gitHead": "7bd2883e4e4ebad6f2d45b81adbde2c41cf452d5"
87
91
  }
@@ -1,253 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.StackedColumn = exports.PieChart = exports.MultipleLines = exports.MultipleColumns = exports.MultiSeries = exports.Line = exports.ComplexMultiSeries = exports.Column = void 0;
7
- var _ui = require("@dhis2/ui");
8
- var _highcharts = _interopRequireDefault(require("highcharts"));
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _DownloadMenu = require("./components/DownloadMenu");
11
- var _columnData = _interopRequireDefault(require("./data/column-data.json"));
12
- var _complexMultiSeriesData = _interopRequireDefault(require("./data/complex-multi-series-data.json"));
13
- var _multiSeriesData = _interopRequireDefault(require("./data/multi-series-data.json"));
14
- var _pieData = _interopRequireDefault(require("./data/pie-data.json"));
15
- var _stackedChartData = _interopRequireDefault(require("./data/stacked-chart-data.json"));
16
- var _export = require("./services/export");
17
- var _ = require(".");
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
- const Template = args => /*#__PURE__*/_react.default.createElement(_.ChartAnalytics, args);
22
- (0, _export.setupHighchartsModules)(_highcharts.default);
23
- const Column = Template.bind({});
24
- exports.Column = Column;
25
- Column.args = {
26
- analytics: _columnData.default,
27
- config: {
28
- layout: {
29
- series: ["dx"],
30
- category: ["ou"],
31
- filter: ["pe"]
32
- },
33
- type: "column",
34
- height: 500,
35
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"]
36
- }
37
- };
38
- const MultipleColumns = Template.bind({});
39
- exports.MultipleColumns = MultipleColumns;
40
- MultipleColumns.args = {
41
- analytics: _multiSeriesData.default,
42
- config: {
43
- layout: {
44
- series: ["ou"],
45
- category: ["pe"],
46
- filter: ["dx"]
47
- },
48
- type: "column",
49
- height: 1000,
50
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"]
51
- }
52
- };
53
- const StackedColumn = Template.bind({});
54
- exports.StackedColumn = StackedColumn;
55
- StackedColumn.args = {
56
- analytics: _stackedChartData.default,
57
- config: {
58
- layout: {
59
- series: ["ou"],
60
- category: ["pe"],
61
- filter: ["dx"]
62
- },
63
- type: "stacked-column",
64
- height: 1000,
65
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"]
66
- }
67
- };
68
- const Line = Template.bind({});
69
- exports.Line = Line;
70
- Line.args = {
71
- analytics: _columnData.default,
72
- config: {
73
- layout: {
74
- series: ["dx"],
75
- category: ["ou"],
76
- filter: ["pe"]
77
- },
78
- type: "line",
79
- height: 1000,
80
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"]
81
- }
82
- };
83
- const MultipleLines = Template.bind({});
84
- exports.MultipleLines = MultipleLines;
85
- MultipleLines.args = {
86
- analytics: _multiSeriesData.default,
87
- config: {
88
- layout: {
89
- series: ["ou"],
90
- category: ["pe"],
91
- filter: ["dx"]
92
- },
93
- type: "line",
94
- height: 500,
95
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"]
96
- }
97
- };
98
- const PieChart = Template.bind({});
99
- exports.PieChart = PieChart;
100
- PieChart.args = {
101
- analytics: _pieData.default,
102
- config: {
103
- layout: {
104
- series: ["dx"],
105
- category: [],
106
- filter: ["dx", "pe"]
107
- },
108
- type: "pie",
109
- height: 500,
110
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c4255", "#a6c96a"]
111
- }
112
- };
113
- const MultiSeries = Template.bind({});
114
- exports.MultiSeries = MultiSeries;
115
- MultiSeries.args = {
116
- analytics: _multiSeriesData.default,
117
- config: {
118
- layout: {
119
- series: ["ou"],
120
- category: ["pe"],
121
- filter: ["dx"]
122
- },
123
- type: "multi-series",
124
- height: 500,
125
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"],
126
- multiSeries: {
127
- series: [{
128
- id: "qhqAxPSTUXp",
129
- as: "column",
130
- yAxis: 0
131
- }, {
132
- id: "Vth0fbpFcsO",
133
- as: "line",
134
- cumulative: true,
135
- yAxis: 1
136
- }],
137
- yAxes: [{
138
- id: "yAxis1",
139
- title: {
140
- text: "Koinandugu"
141
- },
142
- labels: {
143
- format: "{value}"
144
- }
145
- }, {
146
- id: "yAxis2",
147
- title: {
148
- text: "Kono"
149
- },
150
- labels: {
151
- format: "{value}"
152
- },
153
- opposite: true
154
- }],
155
- target: {
156
- id: "",
157
- styles: {
158
- color: "blue"
159
- },
160
- value: 45,
161
- label: {
162
- text: "Target",
163
- textAlign: "center",
164
- verticalAlign: "middle"
165
- }
166
- }
167
- }
168
- }
169
- };
170
- const ComplexMultiSeries = Template.bind({});
171
- exports.ComplexMultiSeries = ComplexMultiSeries;
172
- ComplexMultiSeries.args = {
173
- analytics: _complexMultiSeriesData.default,
174
- config: {
175
- layout: {
176
- series: ["dx"],
177
- category: ["pe"],
178
- filter: ["ou"]
179
- },
180
- type: "multi-series",
181
- height: 500,
182
- colors: ["#2f7ed8", "#0d233a", "#8bbc21", "#910000", "#1aadce", "#492970", "#f28f43", "#77a1e5", "#c42525", "#a6c96a"],
183
- multiSeries: {
184
- series: [{
185
- id: "QQkOAJFukyY",
186
- as: "column",
187
- yAxis: 0
188
- }, {
189
- id: "QQkOAJFukyY",
190
- as: "line",
191
- cumulative: true,
192
- yAxis: 1
193
- }],
194
- yAxes: [{
195
- id: "yAxis1",
196
- title: {
197
- text: "Koinandugu"
198
- },
199
- labels: {
200
- format: "{value}"
201
- }
202
- }, {
203
- id: "yAxis2",
204
- title: {
205
- text: "Kono"
206
- },
207
- labels: {
208
- format: "{value}"
209
- },
210
- opposite: true
211
- }],
212
- target: {
213
- id: "",
214
- styles: {
215
- color: "blue"
216
- },
217
- value: 45,
218
- label: {
219
- text: "Target",
220
- textAlign: "center",
221
- verticalAlign: "middle"
222
- }
223
- }
224
- }
225
- }
226
- };
227
- var _default = {
228
- title: "Analytics/Chart Analytics",
229
- component: _.ChartAnalytics,
230
- decorators: [ChartStory => {
231
- const [chartRef, setChartRef] = (0, _react.useState)(null);
232
- return /*#__PURE__*/_react.default.createElement("div", {
233
- style: {
234
- width: 1000,
235
- height: "100%",
236
- display: "flex",
237
- gap: 8,
238
- flexDirection: "column"
239
- }
240
- }, /*#__PURE__*/_react.default.createElement(_ui.CssReset, null), /*#__PURE__*/_react.default.createElement("div", {
241
- style: {
242
- width: "100%",
243
- display: "flex",
244
- justifyContent: "end"
245
- }
246
- }, /*#__PURE__*/_react.default.createElement(_DownloadMenu.ChartDownloadMenu, {
247
- chartRef: chartRef
248
- })), /*#__PURE__*/_react.default.createElement(ChartStory, {
249
- ref: setChartRef
250
- }));
251
- }]
252
- };
253
- exports.default = _default;
@@ -1,210 +0,0 @@
1
- {
2
- "headers": [
3
- {
4
- "name": "dx",
5
- "column": "Data",
6
- "valueType": "TEXT",
7
- "type": "java.lang.String",
8
- "hidden": false,
9
- "meta": true
10
- },
11
- {
12
- "name": "ou",
13
- "column": "Organisation unit",
14
- "valueType": "TEXT",
15
- "type": "java.lang.String",
16
- "hidden": false,
17
- "meta": true
18
- },
19
- {
20
- "name": "value",
21
- "column": "Value",
22
- "valueType": "NUMBER",
23
- "type": "java.lang.Double",
24
- "hidden": false,
25
- "meta": false
26
- }
27
- ],
28
- "metaData": {
29
- "items": {
30
- "2022": {
31
- "name": "2022"
32
- },
33
- "KctpIIucige": {
34
- "name": "Selenga"
35
- },
36
- "YmmeuGbqOwR": {
37
- "name": "Gbo"
38
- },
39
- "daJPPxtIrQn": {
40
- "name": "Jaiama Bongor"
41
- },
42
- "tTUf91fCytl": {
43
- "uid": "tTUf91fCytl",
44
- "name": "Chiefdom"
45
- },
46
- "ou": {
47
- "name": "Organisation unit"
48
- },
49
- "sxRd2XOzFbz": {
50
- "name": "Tikonko"
51
- },
52
- "THIS_YEAR": {
53
- "name": "This year"
54
- },
55
- "O6uvpzGd5pu": {
56
- "uid": "O6uvpzGd5pu",
57
- "code": "OU_264",
58
- "name": "Bo"
59
- },
60
- "U6Kr7Gtpidn": {
61
- "name": "Kakua"
62
- },
63
- "YuQRtpLP10I": {
64
- "name": "Badjia"
65
- },
66
- "zFDYIgyGmXG": {
67
- "name": "Bargbo"
68
- },
69
- "I4jWcnFmgEC": {
70
- "name": "Niawa Lenga"
71
- },
72
- "dx": {
73
- "name": "Data"
74
- },
75
- "BGGmAwx33dj": {
76
- "name": "Bumpe Ngao"
77
- },
78
- "pe": {
79
- "name": "Period"
80
- },
81
- "Uvn6LCg7dVU": {
82
- "name": "ANC 1 Coverage"
83
- },
84
- "ARZ4y5i4reU": {
85
- "name": "Wonde"
86
- },
87
- "JdhagCUEMbj": {
88
- "name": "Komboya"
89
- },
90
- "vWbkYPRmKyS": {
91
- "name": "Baoma"
92
- },
93
- "dGheVylzol6": {
94
- "name": "Bargbe"
95
- },
96
- "kU8vhUkAGaT": {
97
- "name": "Lugbu"
98
- },
99
- "npWGUj37qDe": {
100
- "name": "Valunia"
101
- }
102
- },
103
- "dimensions": {
104
- "dx": [
105
- "Uvn6LCg7dVU"
106
- ],
107
- "pe": [
108
- "2022"
109
- ],
110
- "ou": [
111
- "YuQRtpLP10I",
112
- "vWbkYPRmKyS",
113
- "dGheVylzol6",
114
- "zFDYIgyGmXG",
115
- "BGGmAwx33dj",
116
- "YmmeuGbqOwR",
117
- "daJPPxtIrQn",
118
- "U6Kr7Gtpidn",
119
- "JdhagCUEMbj",
120
- "kU8vhUkAGaT",
121
- "I4jWcnFmgEC",
122
- "KctpIIucige",
123
- "sxRd2XOzFbz",
124
- "npWGUj37qDe",
125
- "ARZ4y5i4reU"
126
- ],
127
- "co": []
128
- }
129
- },
130
- "rows": [
131
- [
132
- "Uvn6LCg7dVU",
133
- "YuQRtpLP10I",
134
- "304.1"
135
- ],
136
- [
137
- "Uvn6LCg7dVU",
138
- "vWbkYPRmKyS",
139
- "213.7"
140
- ],
141
- [
142
- "Uvn6LCg7dVU",
143
- "dGheVylzol6",
144
- "126.5"
145
- ],
146
- [
147
- "Uvn6LCg7dVU",
148
- "zFDYIgyGmXG",
149
- "206.4"
150
- ],
151
- [
152
- "Uvn6LCg7dVU",
153
- "BGGmAwx33dj",
154
- "120.9"
155
- ],
156
- [
157
- "Uvn6LCg7dVU",
158
- "YmmeuGbqOwR",
159
- "203.1"
160
- ],
161
- [
162
- "Uvn6LCg7dVU",
163
- "daJPPxtIrQn",
164
- "89.3"
165
- ],
166
- [
167
- "Uvn6LCg7dVU",
168
- "U6Kr7Gtpidn",
169
- "104.4"
170
- ],
171
- [
172
- "Uvn6LCg7dVU",
173
- "JdhagCUEMbj",
174
- "187.1"
175
- ],
176
- [
177
- "Uvn6LCg7dVU",
178
- "kU8vhUkAGaT",
179
- "96.1"
180
- ],
181
- [
182
- "Uvn6LCg7dVU",
183
- "I4jWcnFmgEC",
184
- "147.9"
185
- ],
186
- [
187
- "Uvn6LCg7dVU",
188
- "KctpIIucige",
189
- "91.1"
190
- ],
191
- [
192
- "Uvn6LCg7dVU",
193
- "sxRd2XOzFbz",
194
- "203.2"
195
- ],
196
- [
197
- "Uvn6LCg7dVU",
198
- "npWGUj37qDe",
199
- "95.7"
200
- ],
201
- [
202
- "Uvn6LCg7dVU",
203
- "ARZ4y5i4reU",
204
- "84.3"
205
- ]
206
- ],
207
- "height": 15,
208
- "width": 3,
209
- "headerWidth": 3
210
- }