@dhis2/analytics 26.8.7 → 26.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/build/cjs/__demo__/SingleValue.stories.js +706 -0
  2. package/build/cjs/locales/lo/translations.json +16 -12
  3. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
  4. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
  5. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
  6. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
  7. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
  8. package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +8 -6
  9. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
  10. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
  11. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
  12. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
  13. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
  14. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
  15. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
  16. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
  17. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
  18. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
  19. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
  20. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +11 -0
  21. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
  22. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +48 -0
  23. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
  24. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +109 -0
  25. package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
  26. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +33 -23
  27. package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
  28. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  29. package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +5 -1
  30. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +62 -0
  31. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -22
  32. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
  33. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
  34. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +50 -22
  35. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
  36. package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
  37. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +1 -0
  38. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +4 -5
  39. package/build/cjs/visualizations/config/adapters/index.js +2 -4
  40. package/build/cjs/visualizations/config/generators/highcharts/index.js +8 -0
  41. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +13 -0
  42. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +17 -0
  43. package/build/cjs/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +289 -0
  44. package/build/cjs/visualizations/config/generators/index.js +2 -4
  45. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +3 -0
  46. package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
  47. package/build/cjs/visualizations/store/adapters/index.js +2 -4
  48. package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
  49. package/build/es/__demo__/SingleValue.stories.js +702 -0
  50. package/build/es/locales/lo/translations.json +16 -12
  51. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
  52. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
  53. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
  54. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
  55. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
  56. package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
  57. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
  58. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
  59. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
  60. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
  61. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
  62. package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
  63. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
  64. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
  65. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
  66. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
  67. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
  68. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
  69. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
  70. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +42 -0
  71. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
  72. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +101 -0
  73. package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
  74. package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
  75. package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
  76. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +1 -1
  77. package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
  78. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +59 -0
  79. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
  80. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
  81. package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
  82. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
  83. package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
  84. package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
  85. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
  86. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +5 -6
  87. package/build/es/visualizations/config/adapters/index.js +1 -3
  88. package/build/es/visualizations/config/generators/highcharts/index.js +8 -0
  89. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/index.js +6 -0
  90. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/nonASCIIFont.js +11 -0
  91. package/build/es/visualizations/config/generators/highcharts/pdfExportBugFixPlugin/textShadow.js +283 -0
  92. package/build/es/visualizations/config/generators/index.js +1 -3
  93. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
  94. package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
  95. package/build/es/visualizations/store/adapters/index.js +1 -3
  96. package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
  97. package/package.json +1 -1
  98. package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
  99. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
  100. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
  101. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
  102. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
  103. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
  104. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
  105. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
  106. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
  107. package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
  108. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
  109. package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
  110. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
  111. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
  112. package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
  113. package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
  114. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
  115. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
  116. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
  117. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
  118. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
  119. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
  120. package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
  121. package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
  122. package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
  123. package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
  124. package/build/es/visualizations/config/generators/dhis/index.js +0 -21
  125. package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
  126. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
  127. package/build/es/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -4
@@ -0,0 +1,702 @@
1
+ import { storiesOf } from '@storybook/react';
2
+ import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
3
+ import { createVisualization } from '../index.js';
4
+ const constainerStyleBase = {
5
+ width: 800,
6
+ height: 800,
7
+ border: '1px solid magenta',
8
+ marginBottom: 14
9
+ };
10
+ const innerContainerStyle = {
11
+ overflow: 'hidden',
12
+ display: 'flex',
13
+ justifyContent: 'center',
14
+ height: '100%'
15
+ };
16
+ const baseDataObj = {
17
+ response: {
18
+ headers: [{
19
+ name: 'dx',
20
+ column: 'Data',
21
+ valueType: 'TEXT',
22
+ type: 'java.lang.String',
23
+ hidden: false,
24
+ meta: true
25
+ }, {
26
+ name: 'value',
27
+ column: 'Value',
28
+ valueType: 'NUMBER',
29
+ type: 'java.lang.Double',
30
+ hidden: false,
31
+ meta: false
32
+ }],
33
+ metaData: {
34
+ items: {
35
+ 202308: {
36
+ uid: '202308',
37
+ code: '202308',
38
+ name: 'August 2023',
39
+ dimensionItemType: 'PERIOD',
40
+ valueType: 'TEXT',
41
+ totalAggregationType: 'SUM',
42
+ startDate: '2023-08-01T00:00:00.000',
43
+ endDate: '2023-08-31T00:00:00.000'
44
+ },
45
+ 202309: {
46
+ uid: '202309',
47
+ code: '202309',
48
+ name: 'September 2023',
49
+ dimensionItemType: 'PERIOD',
50
+ valueType: 'TEXT',
51
+ totalAggregationType: 'SUM',
52
+ startDate: '2023-09-01T00:00:00.000',
53
+ endDate: '2023-09-30T00:00:00.000'
54
+ },
55
+ 202310: {
56
+ uid: '202310',
57
+ code: '202310',
58
+ name: 'October 2023',
59
+ dimensionItemType: 'PERIOD',
60
+ valueType: 'TEXT',
61
+ totalAggregationType: 'SUM',
62
+ startDate: '2023-10-01T00:00:00.000',
63
+ endDate: '2023-10-31T00:00:00.000'
64
+ },
65
+ 202311: {
66
+ uid: '202311',
67
+ code: '202311',
68
+ name: 'November 2023',
69
+ dimensionItemType: 'PERIOD',
70
+ valueType: 'TEXT',
71
+ totalAggregationType: 'SUM',
72
+ startDate: '2023-11-01T00:00:00.000',
73
+ endDate: '2023-11-30T00:00:00.000'
74
+ },
75
+ 202312: {
76
+ uid: '202312',
77
+ code: '202312',
78
+ name: 'December 2023',
79
+ dimensionItemType: 'PERIOD',
80
+ valueType: 'TEXT',
81
+ totalAggregationType: 'SUM',
82
+ startDate: '2023-12-01T00:00:00.000',
83
+ endDate: '2023-12-31T00:00:00.000'
84
+ },
85
+ 202401: {
86
+ uid: '202401',
87
+ code: '202401',
88
+ name: 'January 2024',
89
+ dimensionItemType: 'PERIOD',
90
+ valueType: 'TEXT',
91
+ totalAggregationType: 'SUM',
92
+ startDate: '2024-01-01T00:00:00.000',
93
+ endDate: '2024-01-31T00:00:00.000'
94
+ },
95
+ 202402: {
96
+ uid: '202402',
97
+ code: '202402',
98
+ name: 'February 2024',
99
+ dimensionItemType: 'PERIOD',
100
+ valueType: 'TEXT',
101
+ totalAggregationType: 'SUM',
102
+ startDate: '2024-02-01T00:00:00.000',
103
+ endDate: '2024-02-29T00:00:00.000'
104
+ },
105
+ 202403: {
106
+ uid: '202403',
107
+ code: '202403',
108
+ name: 'March 2024',
109
+ dimensionItemType: 'PERIOD',
110
+ valueType: 'TEXT',
111
+ totalAggregationType: 'SUM',
112
+ startDate: '2024-03-01T00:00:00.000',
113
+ endDate: '2024-03-31T00:00:00.000'
114
+ },
115
+ 202404: {
116
+ uid: '202404',
117
+ code: '202404',
118
+ name: 'April 2024',
119
+ dimensionItemType: 'PERIOD',
120
+ valueType: 'TEXT',
121
+ totalAggregationType: 'SUM',
122
+ startDate: '2024-04-01T00:00:00.000',
123
+ endDate: '2024-04-30T00:00:00.000'
124
+ },
125
+ 202405: {
126
+ uid: '202405',
127
+ code: '202405',
128
+ name: 'May 2024',
129
+ dimensionItemType: 'PERIOD',
130
+ valueType: 'TEXT',
131
+ totalAggregationType: 'SUM',
132
+ startDate: '2024-05-01T00:00:00.000',
133
+ endDate: '2024-05-31T00:00:00.000'
134
+ },
135
+ 202406: {
136
+ uid: '202406',
137
+ code: '202406',
138
+ name: 'June 2024',
139
+ dimensionItemType: 'PERIOD',
140
+ valueType: 'TEXT',
141
+ totalAggregationType: 'SUM',
142
+ startDate: '2024-06-01T00:00:00.000',
143
+ endDate: '2024-06-30T00:00:00.000'
144
+ },
145
+ 202407: {
146
+ uid: '202407',
147
+ code: '202407',
148
+ name: 'July 2024',
149
+ dimensionItemType: 'PERIOD',
150
+ valueType: 'TEXT',
151
+ totalAggregationType: 'SUM',
152
+ startDate: '2024-07-01T00:00:00.000',
153
+ endDate: '2024-07-31T00:00:00.000'
154
+ },
155
+ ou: {
156
+ uid: 'ou',
157
+ name: 'Organisation unit',
158
+ dimensionType: 'ORGANISATION_UNIT'
159
+ },
160
+ O6uvpzGd5pu: {
161
+ uid: 'O6uvpzGd5pu',
162
+ code: 'OU_264',
163
+ name: 'Bo',
164
+ dimensionItemType: 'ORGANISATION_UNIT',
165
+ valueType: 'TEXT',
166
+ totalAggregationType: 'SUM'
167
+ },
168
+ LAST_12_MONTHS: {
169
+ name: 'Last 12 months'
170
+ },
171
+ dx: {
172
+ uid: 'dx',
173
+ name: 'Data',
174
+ dimensionType: 'DATA_X'
175
+ },
176
+ pe: {
177
+ uid: 'pe',
178
+ name: 'Period',
179
+ dimensionType: 'PERIOD'
180
+ },
181
+ FnYCr2EAzWS: {
182
+ uid: 'FnYCr2EAzWS',
183
+ code: 'IN_52493',
184
+ name: 'BCG Coverage <1y',
185
+ legendSet: 'BtxOoQuLyg1',
186
+ dimensionItemType: 'INDICATOR',
187
+ valueType: 'NUMBER',
188
+ totalAggregationType: 'AVERAGE',
189
+ indicatorType: {
190
+ name: 'Per cent',
191
+ displayName: 'Per cent',
192
+ factor: 100,
193
+ number: false
194
+ }
195
+ }
196
+ },
197
+ dimensions: {
198
+ dx: ['FnYCr2EAzWS'],
199
+ pe: ['202308', '202309', '202310', '202311', '202312', '202401', '202402', '202403', '202404', '202405', '202406', '202407'],
200
+ ou: ['O6uvpzGd5pu'],
201
+ co: []
202
+ }
203
+ },
204
+ rowContext: {},
205
+ rows: [['FnYCr2EAzWS', '34.19']],
206
+ width: 2,
207
+ height: 1,
208
+ headerWidth: 2
209
+ },
210
+ headers: [{
211
+ name: 'dx',
212
+ column: 'Data',
213
+ valueType: 'TEXT',
214
+ type: 'java.lang.String',
215
+ hidden: false,
216
+ meta: true,
217
+ isPrefix: false,
218
+ isCollect: false,
219
+ index: 0
220
+ }, {
221
+ name: 'value',
222
+ column: 'Value',
223
+ valueType: 'NUMBER',
224
+ type: 'java.lang.Double',
225
+ hidden: false,
226
+ meta: false,
227
+ isPrefix: false,
228
+ isCollect: false,
229
+ index: 1
230
+ }],
231
+ rows: [['FnYCr2EAzWS', '34.19']],
232
+ metaData: {
233
+ items: {
234
+ 202308: {
235
+ uid: '202308',
236
+ code: '202308',
237
+ name: 'August 2023',
238
+ dimensionItemType: 'PERIOD',
239
+ valueType: 'TEXT',
240
+ totalAggregationType: 'SUM',
241
+ startDate: '2023-08-01T00:00:00.000',
242
+ endDate: '2023-08-31T00:00:00.000'
243
+ },
244
+ 202309: {
245
+ uid: '202309',
246
+ code: '202309',
247
+ name: 'September 2023',
248
+ dimensionItemType: 'PERIOD',
249
+ valueType: 'TEXT',
250
+ totalAggregationType: 'SUM',
251
+ startDate: '2023-09-01T00:00:00.000',
252
+ endDate: '2023-09-30T00:00:00.000'
253
+ },
254
+ 202310: {
255
+ uid: '202310',
256
+ code: '202310',
257
+ name: 'October 2023',
258
+ dimensionItemType: 'PERIOD',
259
+ valueType: 'TEXT',
260
+ totalAggregationType: 'SUM',
261
+ startDate: '2023-10-01T00:00:00.000',
262
+ endDate: '2023-10-31T00:00:00.000'
263
+ },
264
+ 202311: {
265
+ uid: '202311',
266
+ code: '202311',
267
+ name: 'November 2023',
268
+ dimensionItemType: 'PERIOD',
269
+ valueType: 'TEXT',
270
+ totalAggregationType: 'SUM',
271
+ startDate: '2023-11-01T00:00:00.000',
272
+ endDate: '2023-11-30T00:00:00.000'
273
+ },
274
+ 202312: {
275
+ uid: '202312',
276
+ code: '202312',
277
+ name: 'December 2023',
278
+ dimensionItemType: 'PERIOD',
279
+ valueType: 'TEXT',
280
+ totalAggregationType: 'SUM',
281
+ startDate: '2023-12-01T00:00:00.000',
282
+ endDate: '2023-12-31T00:00:00.000'
283
+ },
284
+ 202401: {
285
+ uid: '202401',
286
+ code: '202401',
287
+ name: 'January 2024',
288
+ dimensionItemType: 'PERIOD',
289
+ valueType: 'TEXT',
290
+ totalAggregationType: 'SUM',
291
+ startDate: '2024-01-01T00:00:00.000',
292
+ endDate: '2024-01-31T00:00:00.000'
293
+ },
294
+ 202402: {
295
+ uid: '202402',
296
+ code: '202402',
297
+ name: 'February 2024',
298
+ dimensionItemType: 'PERIOD',
299
+ valueType: 'TEXT',
300
+ totalAggregationType: 'SUM',
301
+ startDate: '2024-02-01T00:00:00.000',
302
+ endDate: '2024-02-29T00:00:00.000'
303
+ },
304
+ 202403: {
305
+ uid: '202403',
306
+ code: '202403',
307
+ name: 'March 2024',
308
+ dimensionItemType: 'PERIOD',
309
+ valueType: 'TEXT',
310
+ totalAggregationType: 'SUM',
311
+ startDate: '2024-03-01T00:00:00.000',
312
+ endDate: '2024-03-31T00:00:00.000'
313
+ },
314
+ 202404: {
315
+ uid: '202404',
316
+ code: '202404',
317
+ name: 'April 2024',
318
+ dimensionItemType: 'PERIOD',
319
+ valueType: 'TEXT',
320
+ totalAggregationType: 'SUM',
321
+ startDate: '2024-04-01T00:00:00.000',
322
+ endDate: '2024-04-30T00:00:00.000'
323
+ },
324
+ 202405: {
325
+ uid: '202405',
326
+ code: '202405',
327
+ name: 'May 2024',
328
+ dimensionItemType: 'PERIOD',
329
+ valueType: 'TEXT',
330
+ totalAggregationType: 'SUM',
331
+ startDate: '2024-05-01T00:00:00.000',
332
+ endDate: '2024-05-31T00:00:00.000'
333
+ },
334
+ 202406: {
335
+ uid: '202406',
336
+ code: '202406',
337
+ name: 'June 2024',
338
+ dimensionItemType: 'PERIOD',
339
+ valueType: 'TEXT',
340
+ totalAggregationType: 'SUM',
341
+ startDate: '2024-06-01T00:00:00.000',
342
+ endDate: '2024-06-30T00:00:00.000'
343
+ },
344
+ 202407: {
345
+ uid: '202407',
346
+ code: '202407',
347
+ name: 'July 2024',
348
+ dimensionItemType: 'PERIOD',
349
+ valueType: 'TEXT',
350
+ totalAggregationType: 'SUM',
351
+ startDate: '2024-07-01T00:00:00.000',
352
+ endDate: '2024-07-31T00:00:00.000'
353
+ },
354
+ ou: {
355
+ uid: 'ou',
356
+ name: 'Organisation unit',
357
+ dimensionType: 'ORGANISATION_UNIT'
358
+ },
359
+ O6uvpzGd5pu: {
360
+ uid: 'O6uvpzGd5pu',
361
+ code: 'OU_264',
362
+ name: 'Bo',
363
+ dimensionItemType: 'ORGANISATION_UNIT',
364
+ valueType: 'TEXT',
365
+ totalAggregationType: 'SUM'
366
+ },
367
+ LAST_12_MONTHS: {
368
+ name: 'Last 12 months'
369
+ },
370
+ dx: {
371
+ uid: 'dx',
372
+ name: 'Data',
373
+ dimensionType: 'DATA_X'
374
+ },
375
+ pe: {
376
+ uid: 'pe',
377
+ name: 'Period',
378
+ dimensionType: 'PERIOD'
379
+ },
380
+ FnYCr2EAzWS: {
381
+ uid: 'FnYCr2EAzWS',
382
+ code: 'IN_52493',
383
+ name: 'BCG Coverage <1y',
384
+ legendSet: 'BtxOoQuLyg1',
385
+ dimensionItemType: 'INDICATOR',
386
+ valueType: 'NUMBER',
387
+ totalAggregationType: 'AVERAGE'
388
+ }
389
+ },
390
+ dimensions: {
391
+ dx: ['FnYCr2EAzWS'],
392
+ pe: ['202308', '202309', '202310', '202311', '202312', '202401', '202402', '202403', '202404', '202405', '202406', '202407'],
393
+ ou: ['O6uvpzGd5pu'],
394
+ co: []
395
+ }
396
+ }
397
+ };
398
+ const numberIndicatorType = {
399
+ name: 'Plain',
400
+ number: true
401
+ };
402
+ const subtextIndicatorType = {
403
+ name: 'Custom',
404
+ displayName: 'Custom subtext',
405
+ number: true
406
+ };
407
+ const percentIndicatorType = {
408
+ name: 'Per cent',
409
+ displayName: 'Per cent',
410
+ factor: 100,
411
+ number: false
412
+ };
413
+ const layout = {
414
+ name: 'BCG coverage last 12 months - Bo',
415
+ created: '2013-10-16T19:50:52.464',
416
+ lastUpdated: '2021-07-06T12:53:57.296',
417
+ translations: [],
418
+ favorites: [],
419
+ lastUpdatedBy: {
420
+ id: 'xE7jOejl9FI',
421
+ code: null,
422
+ name: 'John Traore',
423
+ displayName: 'John Traore',
424
+ username: 'admin'
425
+ },
426
+ regressionType: 'NONE',
427
+ displayDensity: 'NORMAL',
428
+ fontSize: 'NORMAL',
429
+ sortOrder: 0,
430
+ topLimit: 0,
431
+ hideEmptyRows: false,
432
+ showHierarchy: false,
433
+ completedOnly: false,
434
+ skipRounding: false,
435
+ dataDimensionItems: [{
436
+ indicator: {
437
+ name: 'BCG Coverage <1y',
438
+ dimensionItemType: 'INDICATOR',
439
+ displayName: 'BCG Coverage <1y',
440
+ access: {
441
+ manage: true,
442
+ externalize: true,
443
+ write: true,
444
+ read: true,
445
+ update: true,
446
+ delete: true
447
+ },
448
+ displayShortName: 'BCG Coverage <1y',
449
+ id: 'FnYCr2EAzWS'
450
+ },
451
+ dataDimensionItemType: 'INDICATOR'
452
+ }],
453
+ subscribers: [],
454
+ aggregationType: 'DEFAULT',
455
+ digitGroupSeparator: 'SPACE',
456
+ hideEmptyRowItems: 'NONE',
457
+ noSpaceBetweenColumns: false,
458
+ cumulativeValues: false,
459
+ percentStackedValues: false,
460
+ showData: true,
461
+ colTotals: false,
462
+ rowTotals: false,
463
+ rowSubTotals: false,
464
+ colSubTotals: false,
465
+ hideTitle: false,
466
+ hideSubtitle: false,
467
+ showDimensionLabels: false,
468
+ interpretations: [],
469
+ type: 'SINGLE_VALUE',
470
+ reportingParams: {
471
+ grandParentOrganisationUnit: false,
472
+ parentOrganisationUnit: false,
473
+ organisationUnit: false,
474
+ reportingPeriod: false
475
+ },
476
+ numberType: 'VALUE',
477
+ fontStyle: {},
478
+ colorSet: 'DEFAULT',
479
+ yearlySeries: [],
480
+ regression: false,
481
+ hideEmptyColumns: false,
482
+ fixColumnHeaders: false,
483
+ fixRowHeaders: false,
484
+ filters: [{
485
+ items: [{
486
+ name: 'Bo',
487
+ dimensionItemType: 'ORGANISATION_UNIT',
488
+ displayShortName: 'Bo',
489
+ displayName: 'Bo',
490
+ access: {
491
+ manage: true,
492
+ externalize: true,
493
+ write: true,
494
+ read: true,
495
+ update: true,
496
+ delete: true
497
+ },
498
+ id: 'O6uvpzGd5pu'
499
+ }],
500
+ dimension: 'ou'
501
+ }, {
502
+ items: [{
503
+ name: 'LAST_12_MONTHS',
504
+ dimensionItemType: 'PERIOD',
505
+ displayShortName: 'LAST_12_MONTHS',
506
+ displayName: 'LAST_12_MONTHS',
507
+ access: {
508
+ manage: true,
509
+ externalize: true,
510
+ write: true,
511
+ read: true,
512
+ update: true,
513
+ delete: true
514
+ },
515
+ id: 'LAST_12_MONTHS'
516
+ }],
517
+ dimension: 'pe'
518
+ }],
519
+ parentGraphMap: {
520
+ O6uvpzGd5pu: 'ImspTQPwCqd'
521
+ },
522
+ columns: [{
523
+ items: [{
524
+ name: 'BCG Coverage <1y',
525
+ dimensionItemType: 'INDICATOR',
526
+ displayName: 'BCG Coverage <1y',
527
+ access: {
528
+ manage: true,
529
+ externalize: true,
530
+ write: true,
531
+ read: true,
532
+ update: true,
533
+ delete: true
534
+ },
535
+ displayShortName: 'BCG Coverage <1y',
536
+ id: 'FnYCr2EAzWS'
537
+ }],
538
+ dimension: 'dx'
539
+ }],
540
+ rows: [],
541
+ subscribed: false,
542
+ displayName: 'BCG coverage last 12 months - Bo',
543
+ access: {
544
+ manage: true,
545
+ externalize: true,
546
+ write: true,
547
+ read: true,
548
+ update: true,
549
+ delete: true
550
+ },
551
+ favorite: false,
552
+ user: {
553
+ id: 'xE7jOejl9FI',
554
+ code: null,
555
+ name: 'John Traore',
556
+ displayName: 'John Traore',
557
+ username: 'admin'
558
+ },
559
+ href: 'http://localhost:8080/api/41/visualizations/mYMnDl5Z9oD',
560
+ id: 'mYMnDl5Z9oD',
561
+ legend: {
562
+ showKey: false
563
+ },
564
+ sorting: [],
565
+ series: [],
566
+ icons: [],
567
+ seriesKey: {
568
+ hidden: false
569
+ },
570
+ axes: []
571
+ };
572
+ const icon = '<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M32 12.5C32 13.0523 32.4477 13.5 33 13.5C33.5523 13.5 34 13.0523 34 12.5V11C34 10.4477 33.5523 10 33 10C32.4477 10 32 10.4477 32 11V12.5Z" fill="currentColor"/><path d="M16 24V27H18V24H21V22H18V19H16V22H13V24H16Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M4 17C4 15.3431 5.34315 14 7 14H27C28.6569 14 30 15.3431 30 17V19H31V18H32V17C32 16.4477 32.4477 16 33 16C33.5523 16 34 16.4477 34 17V18H35V19H35.718C36.4722 19 37.1987 19.284 37.7529 19.7956L43.0348 24.6713C43.6501 25.2392 44 26.0384 44 26.8757V35H38.874C38.4299 36.7252 36.8638 38 35 38C33.1362 38 31.5701 36.7252 31.126 35H15.874C15.4299 36.7252 13.8638 38 12 38C10.1362 38 8.57006 36.7252 8.12602 35H4V17ZM31.126 33C31.5701 31.2748 33.1362 30 35 30C36.8638 30 38.4299 31.2748 38.874 33H42V28L30 28V33H31.126ZM30 26L41.5257 26L36.3963 21.2652C36.2116 21.0947 35.9694 21 35.718 21H30V26ZM27 16C27.5523 16 28 16.4477 28 17V33H15.874C15.4299 31.2748 13.8638 30 12 30C10.1362 30 8.57006 31.2748 8.12602 33H6V17C6 16.4477 6.44772 16 7 16H27ZM12 36C13.1046 36 14 35.1046 14 34C14 32.8954 13.1046 32 12 32C10.8954 32 10 32.8954 10 34C10 35.1046 10.8954 36 12 36ZM37 34C37 35.1046 36.1046 36 35 36C33.8954 36 33 35.1046 33 34C33 32.8954 33.8954 32 35 32C36.1046 32 37 32.8954 37 34Z" fill="currentColor"/><path d="M36.5 17C36.5 16.4477 36.9477 16 37.5 16H39C39.5523 16 40 16.4477 40 17C40 17.5523 39.5523 18 39 18H37.5C36.9477 18 36.5 17.5523 36.5 17Z" fill="currentColor"/><path d="M35.8285 12.759C35.4193 13.1298 35.3881 13.7622 35.759 14.1715C36.1298 14.5807 36.7622 14.6119 37.1715 14.241L38.0857 13.4126C38.4949 13.0417 38.5261 12.4093 38.1552 12.0001C37.7844 11.5908 37.152 11.5597 36.7427 11.9306L35.8285 12.759Z" fill="currentColor"/></svg>';
573
+ const baseExtraOptions = {
574
+ dashboard: true,
575
+ animation: 200,
576
+ legendSets: [],
577
+ icon
578
+ };
579
+ const indicatorTypes = ['plain', 'percent', 'subtext'];
580
+ storiesOf('SingleValue', module).add('default', () => {
581
+ const newChartRef = useRef(null);
582
+ const newContainerRef = useRef(null);
583
+ const [dashboard, setDashboard] = useState(false);
584
+ const [showIcon, setShowIcon] = useState(true);
585
+ const [indicatorType, setIndicatorType] = useState('plain');
586
+ const [exportAsPdf, setExportAsPdf] = useState(true);
587
+ const [width, setWidth] = useState(constainerStyleBase.width);
588
+ const [height, setHeight] = useState(constainerStyleBase.height);
589
+ const containerStyle = useMemo(() => ({
590
+ ...constainerStyleBase,
591
+ width,
592
+ height
593
+ }), [width, height]);
594
+ useEffect(() => {
595
+ if (newContainerRef.current) {
596
+ requestAnimationFrame(() => {
597
+ const extraOptions = {
598
+ ...baseExtraOptions,
599
+ dashboard,
600
+ icon: showIcon ? icon : undefined
601
+ };
602
+ const dataObj = {
603
+ ...baseDataObj
604
+ };
605
+ if (indicatorType === 'plain') {
606
+ dataObj.metaData.items.FnYCr2EAzWS.indicatorType = numberIndicatorType;
607
+ }
608
+ if (indicatorType === 'percent') {
609
+ dataObj.metaData.items.FnYCr2EAzWS.indicatorType = percentIndicatorType;
610
+ }
611
+ if (indicatorType === 'subtext') {
612
+ dataObj.metaData.items.FnYCr2EAzWS.indicatorType = subtextIndicatorType;
613
+ }
614
+ const newVisualization = createVisualization([dataObj], layout, newContainerRef.current, extraOptions, undefined, undefined, 'highcharts');
615
+ newChartRef.current = newVisualization.visualization;
616
+ });
617
+ }
618
+ }, [containerStyle, dashboard, showIcon, indicatorType]);
619
+ const downloadOffline = useCallback(() => {
620
+ if (newChartRef.current) {
621
+ const currentBackgroundColor = newChartRef.current.userOptions.chart.backgroundColor;
622
+ newChartRef.current.update({
623
+ exporting: {
624
+ chartOptions: {
625
+ isPdfExport: exportAsPdf
626
+ }
627
+ }
628
+ });
629
+ newChartRef.current.exportChartLocal({
630
+ sourceHeight: 768,
631
+ sourceWidth: 1024,
632
+ scale: 1,
633
+ fallbackToExportServer: false,
634
+ filename: 'testOfflineDownload',
635
+ showExportInProgress: true,
636
+ type: exportAsPdf ? 'application/pdf' : 'image/png'
637
+ }, {
638
+ chart: {
639
+ backgroundColor: currentBackgroundColor === 'transparent' ? '#ffffff' : currentBackgroundColor
640
+ }
641
+ });
642
+ }
643
+ }, [exportAsPdf]);
644
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
645
+ style: {
646
+ display: 'flex',
647
+ gap: 12,
648
+ marginBottom: 20,
649
+ alignItems: 'center'
650
+ }
651
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", {
652
+ htmlFor: "width"
653
+ }, "Width"), /*#__PURE__*/React.createElement("input", {
654
+ type: "number",
655
+ name: "width",
656
+ id: "width",
657
+ min: "1",
658
+ step: "5",
659
+ onChange: event => setWidth(parseInt(event.target.value)),
660
+ value: width.toString()
661
+ })), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("label", {
662
+ htmlFor: "height"
663
+ }, "Height"), /*#__PURE__*/React.createElement("input", {
664
+ type: "number",
665
+ name: "height",
666
+ id: "height",
667
+ min: "1",
668
+ step: "5",
669
+ onChange: event => setHeight(parseInt(event.target.value)),
670
+ value: height.toString()
671
+ })), /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
672
+ checked: dashboard,
673
+ onChange: () => setDashboard(!dashboard),
674
+ type: "checkbox"
675
+ }), "\xA0Dashboard view"), /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
676
+ checked: showIcon,
677
+ onChange: () => setShowIcon(!showIcon),
678
+ type: "checkbox"
679
+ }), "\xA0Show icon"), /*#__PURE__*/React.createElement("label", null, "Indicator type\xA0", /*#__PURE__*/React.createElement("select", {
680
+ onChange: event => setIndicatorType(event.target.value)
681
+ }, indicatorTypes.map((type, index) => {
682
+ return /*#__PURE__*/React.createElement("option", {
683
+ key: index
684
+ }, type);
685
+ }))), /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", {
686
+ checked: exportAsPdf,
687
+ onChange: () => setExportAsPdf(!exportAsPdf),
688
+ type: "checkbox"
689
+ }), "\xA0Export as PDF"), /*#__PURE__*/React.createElement("button", {
690
+ onClick: downloadOffline
691
+ }, "Download offline")), /*#__PURE__*/React.createElement("div", {
692
+ style: {
693
+ display: 'flex',
694
+ gap: 12
695
+ }
696
+ }, /*#__PURE__*/React.createElement("div", {
697
+ style: containerStyle
698
+ }, /*#__PURE__*/React.createElement("div", {
699
+ ref: newContainerRef,
700
+ style: innerContainerStyle
701
+ }))));
702
+ });