@kando-env/kando-ui 1.2.75-alpha.78 → 1.2.75-alpha.8

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 (126) hide show
  1. package/lib/Router.js +6 -5
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +9 -7
  3. package/lib/Widgets/EventsRow/EventsRow.js +9 -7
  4. package/lib/Widgets/Map/Map.js +148 -39
  5. package/lib/Widgets/Map/areas/AreaPolygons.js +6 -1
  6. package/lib/Widgets/Map/events/EventIndicator.js +46 -21
  7. package/lib/Widgets/Map/events/EventIndicatorHover.js +252 -0
  8. package/lib/Widgets/Map/events/EventPath.js +37 -16
  9. package/lib/Widgets/Map/events/EventPathHover.js +81 -0
  10. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +102 -10
  11. package/lib/Widgets/Map/points/PointMarker.js +460 -13
  12. package/lib/Widgets/Map/points/PointMarkers.js +12 -31
  13. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +2 -2
  14. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +2 -2
  15. package/lib/Widgets/MostPolluting/components/ChangePercent.js +6 -24
  16. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +4 -6
  17. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +3 -5
  18. package/lib/Widgets/QualitySummary/QualitySummary.js +5 -10
  19. package/lib/assets/icons/index.js +0 -8
  20. package/lib/components/CustomInputs/DoubleTabs/styles.js +2 -2
  21. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +2 -2
  22. package/lib/components/Header/InfoBar/InfoBar.js +2 -6
  23. package/lib/components/Header/KandoNavbar/KandoNavbar.js +1 -3
  24. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +2 -4
  25. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +3 -2
  26. package/lib/components/Sector/Sector.test.js +11 -4
  27. package/lib/components/SevereEvent/SevereEvent.js +7 -5
  28. package/lib/components/TimeRangeSelector/constants.js +2 -2
  29. package/lib/hooks/useApiWithDashboardQuery.js +4 -2
  30. package/lib/hooks/useUserTimeZone.js +2 -2
  31. package/lib/i18n/en.json +29 -63
  32. package/lib/i18n/fr.json +424 -655
  33. package/lib/i18n/he.json +6 -40
  34. package/lib/i18n/it.json +190 -421
  35. package/lib/index.js +1 -8
  36. package/lib/macros/getVersion.js +2 -2
  37. package/lib/pages/AreaPage/AreaPage.js +2 -4
  38. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +3 -3
  39. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +3 -3
  40. package/lib/pages/CovidPage/CovidPage.js +2 -7
  41. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +5 -2
  42. package/lib/pages/EventsPage/EventsPage.js +2 -7
  43. package/lib/pages/EventsPage/events/EventsStyle.scss +0 -5
  44. package/lib/pages/EventsPage/events/event_info/EventDetails.js +18 -74
  45. package/lib/pages/EventsPage/events/event_info/EventInfoStyle.scss +0 -16
  46. package/lib/pages/EventsPage/events/event_info/sources/Source.js +2 -2
  47. package/lib/pages/EventsPage/events/events_list/EventItem.js +19 -9
  48. package/lib/pages/EventsPage/events/events_list/EventsList.js +14 -28
  49. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +2 -2
  50. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +1 -4
  51. package/lib/pages/EventsPage/events/events_list/Filter/FilterStyle.scss +1 -1
  52. package/lib/pages/ImportFileWizard/ValidationForm.js +12 -7
  53. package/lib/pages/NotificationsPage/NotificationsPage.js +2 -9
  54. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +1 -5
  55. package/lib/pages/OldSitePage/OldSitePage.js +2 -4
  56. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +8 -51
  57. package/lib/pages/ProfilePage/ProfilePage.js +2 -10
  58. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +2 -3
  59. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +2 -6
  60. package/lib/pages/SamplingsPage/NavigationDropdown.js +2 -9
  61. package/lib/pages/SamplingsPage/NewSamplingAction.js +4 -10
  62. package/lib/pages/SamplingsPage/SamplingActionDropdown.js +189 -0
  63. package/lib/pages/SamplingsPage/SamplingMobileModal.js +17 -1
  64. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +19 -41
  65. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +2 -2
  66. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +12 -33
  67. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +19 -14
  68. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +19 -26
  69. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +11 -21
  70. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +4 -14
  71. package/lib/pages/SamplingsPage/SamplingProperties/style.module.scss +1 -5
  72. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +3 -12
  73. package/lib/pages/SamplingsPage/SamplingsPage.js +3 -9
  74. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +6 -9
  75. package/lib/pages/SamplingsPage/samplingsPageUtils.js +34 -77
  76. package/lib/pages/SamplingsPage/style.module.scss +1 -1
  77. package/lib/pages/SamplingsPage/table.styles.scss +6 -8
  78. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +4 -5
  79. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +3 -5
  80. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +23 -90
  81. package/lib/pages/SitePage/SamplingParameters/dataParser.js +6 -18
  82. package/lib/pages/SitePage/SitePage.js +2 -4
  83. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +9 -7
  84. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +1 -6
  85. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +2 -4
  86. package/lib/pages/WbeDashboard/SummaryGraph.js +6 -15
  87. package/lib/pages/WbeDashboard/WbeDashboardPage.js +3 -10
  88. package/lib/store/areas/actions.js +2 -19
  89. package/lib/store/events/reducer.js +2 -4
  90. package/lib/store/permissions/permissionsSlice.js +1 -5
  91. package/lib/styles.scss +4 -5
  92. package/lib/ui-kit/Button/Button.test.js +11 -26
  93. package/lib/ui-kit/DropDown/DropDown.js +6 -12
  94. package/lib/ui-kit/DropDown/DropDown.test.js +41 -50
  95. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +2 -9
  96. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +3 -4
  97. package/lib/ui-kit/KandoTable/KandoTable.test.js +43 -46
  98. package/lib/utilities/i18n.js +1 -6
  99. package/lib/utilities/urls.js +5 -8
  100. package/package.json +2 -6
  101. package/lib/Widgets/Map/MapUtils.js +0 -103
  102. package/lib/Widgets/Map/events/Event.js +0 -69
  103. package/lib/Widgets/Map/events/EventUtils.js +0 -211
  104. package/lib/Widgets/Map/events/PointOfEvent.js +0 -135
  105. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +0 -55
  106. package/lib/Widgets/Map/events/Snail.js +0 -60
  107. package/lib/Widgets/Map/points/PointUtils.js +0 -368
  108. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +0 -62
  109. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +0 -75
  110. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +0 -52
  111. package/lib/assets/icons/close-modal.svg +0 -8
  112. package/lib/components/DischargeHeatmap/mocks/handlers.js +0 -19
  113. package/lib/hooks/useUserTimeZone.test.js +0 -45
  114. package/lib/i18n/en_uk.json +0 -3759
  115. package/lib/pages/EventsPage/events/events_list/EventUtils.js +0 -19
  116. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +0 -43
  117. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +0 -39
  118. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +0 -182
  119. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +0 -74
  120. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +0 -48
  121. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +0 -119
  122. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +0 -63
  123. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +0 -57
  124. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +0 -27
  125. package/lib/test/mocks/browser.js +0 -23
  126. package/lib/test/test-utils.js +0 -61
@@ -1,368 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.popupContent = exports.createSamplingIcons = exports.createObservationIconPoint = exports.createSamplingIconPoint = exports.markerBelongsToSource = exports.markerBelongsToSelectedSource = exports.belongsToSourceBackground = exports.selectedBackground = exports.combinedWWTPIcon = exports.combinedCollectorsIcon = exports.combinedPumpStationIcon = exports.combinedFactoryIcon = exports.standardBackground = exports.matchIconToPoint = exports.createManholePoint = exports.createBubblePoint = exports.isCollectorFocused = void 0;
9
-
10
- var _lineChart = _interopRequireDefault(require("../../../assets/line-chart.svg"));
11
-
12
- var _leaflet = _interopRequireDefault(require("leaflet"));
13
-
14
- var _i18n = _interopRequireDefault(require("../../../utilities/i18n"));
15
-
16
- var _blueCircle = _interopRequireDefault(require("../../../assets/point_icons/blue-circle.svg"));
17
-
18
- var _samplingIcon = _interopRequireDefault(require("../../../assets/point_icons/sampling-icon.svg"));
19
-
20
- var _pinkCircle = _interopRequireDefault(require("../../../assets/point_icons/pink-circle.svg"));
21
-
22
- var _observationIcon = _interopRequireDefault(require("../../../assets/point_icons/observation-icon.svg"));
23
-
24
- var _redPinRedShadow = _interopRequireDefault(require("../../../assets/point_icons/red-pin-red-shadow.png"));
25
-
26
- var _whitePinRedShadow = _interopRequireDefault(require("../../../assets/point_icons/white-pin-red-shadow.png"));
27
-
28
- var _whitePinBlackShadow = _interopRequireDefault(require("../../../assets/point_icons/white-pin-black-shadow.png"));
29
-
30
- var _yellowCircle = _interopRequireDefault(require("../../../assets/point_icons/yellow-circle.svg"));
31
-
32
- var _factoryIcon = _interopRequireDefault(require("../../../assets/point_icons/factory-icon.svg"));
33
-
34
- var _greenCircle = _interopRequireDefault(require("../../../assets/point_icons/green-circle.svg"));
35
-
36
- var _pumpStationIcon = _interopRequireDefault(require("../../../assets/point_icons/pump-station-icon.svg"));
37
-
38
- var _pinWater = _interopRequireDefault(require("../../../assets/map/pin-water.svg"));
39
-
40
- var _brightBlueCircle = _interopRequireDefault(require("../../../assets/point_icons/bright-blue-circle.svg"));
41
-
42
- var _WWTPIcon = _interopRequireDefault(require("../../../assets/point_icons/WWTP-icon.svg"));
43
-
44
- var _waterNoBackground = _interopRequireDefault(require("../../../assets/point_icons/water-no-background.svg"));
45
-
46
- var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.png"));
47
-
48
- var isCollectorFocused = function isCollectorFocused(point, event) {
49
- var _event$observations;
50
-
51
- return (event === null || event === void 0 ? void 0 : (_event$observations = event.observations) === null || _event$observations === void 0 ? void 0 : _event$observations.length) === 1 && point.id === event.observations[0].point_id;
52
- }; // iconSize: [width, height],
53
- // IconAnchor: [(-right)(+left), (-down)(+up)]
54
-
55
-
56
- exports.isCollectorFocused = isCollectorFocused;
57
-
58
- var createBubblePoint = function createBubblePoint(markerLocation, point, map) {
59
- // @ts-ignore
60
- matchIconToPoint(point) !== null && // @ts-ignore
61
- matchIconToPoint(point).forEach(function (icon) {
62
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
63
- icon: icon,
64
- riseOnHover: false
65
- }).addTo(map);
66
-
67
- pointCustomIcon.bindTooltip("".concat(point.group.name, " (").concat(point.id, ")"));
68
- pointCustomIcon['kando_object_id'] = point.id;
69
- pointCustomIcon['kando_object'] = 'Point';
70
- });
71
-
72
- if (point.relatedEventsAmount) {
73
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
74
- icon: _leaflet.default.divIcon({
75
- className: "\n ".concat(point.relatedEventsAmount >= 100 ? 'circle-events-amount circle-events-amount--tridigit' : 'circle-events-amount', " \n ").concat(point.relatedEventsAmount > 2 ? 'alert-color' : '', "\n "),
76
- html: "<p>".concat(point.relatedEventsAmount, "</p>"),
77
- iconAnchor: [-5, 42]
78
- }),
79
- riseOnHover: false
80
- }).addTo(map);
81
-
82
- pointCustomIcon['kando_object_id'] = point.id;
83
- pointCustomIcon['kando_object'] = 'IconNumber';
84
- }
85
- };
86
-
87
- exports.createBubblePoint = createBubblePoint;
88
-
89
- var createManholePoint = function createManholePoint(markerLocation, point, map) {
90
- var pointIcon = _leaflet.default.icon({
91
- iconUrl: _whitePoint.default,
92
- iconSize: [9, 9],
93
- iconAnchor: [4.5, 4.5]
94
- });
95
-
96
- var manholeIcon = _leaflet.default.marker(markerLocation, {
97
- icon: pointIcon,
98
- riseOnHover: true
99
- }).addTo(map);
100
-
101
- manholeIcon.bindTooltip("".concat(point.group.name, " (").concat(point.id, ")"));
102
- manholeIcon['kando_object_id'] = point.id;
103
- manholeIcon['kando_object'] = 'Point';
104
- };
105
-
106
- exports.createManholePoint = createManholePoint;
107
-
108
- var matchIconToPoint = function matchIconToPoint(point, event) {
109
- switch (point.group.type) {
110
- case 'Groups::Factory':
111
- if (combinedFactoryIcon.length === 2) {
112
- if (markerBelongsToSelectedSource(event, point)) {
113
- combinedFactoryIcon.unshift(selectedBackground());
114
- } else if (markerBelongsToSource(event, point)) {
115
- combinedFactoryIcon.unshift(belongsToSourceBackground());
116
- } else {
117
- combinedFactoryIcon.unshift(standardBackground());
118
- }
119
- }
120
-
121
- return combinedFactoryIcon;
122
-
123
- case 'Groups::PumpStation':
124
- if (combinedPumpStationIcon.length === 2) {
125
- if (markerBelongsToSelectedSource(event, point)) {
126
- combinedPumpStationIcon.unshift(selectedBackground());
127
- } else if (markerBelongsToSource(event, point)) {
128
- combinedPumpStationIcon.unshift(belongsToSourceBackground());
129
- } else {
130
- combinedPumpStationIcon.unshift(standardBackground());
131
- }
132
- }
133
-
134
- return combinedPumpStationIcon;
135
-
136
- case 'Groups::WastewaterTreatmentPlant':
137
- if (combinedWWTPIcon.length === 2) {
138
- if (markerBelongsToSelectedSource(event, point)) {
139
- combinedWWTPIcon.unshift(selectedBackground());
140
- } else if (markerBelongsToSource(event, point)) {
141
- combinedWWTPIcon.unshift(belongsToSourceBackground());
142
- } else {
143
- combinedWWTPIcon.unshift(standardBackground());
144
- }
145
- }
146
-
147
- return combinedWWTPIcon;
148
-
149
- case 'Groups::Collectors':
150
- if (isCollectorFocused(point, event)) {
151
- return [_leaflet.default.icon({
152
- iconUrl: _redPinRedShadow.default,
153
- iconSize: [62, 62],
154
- iconAnchor: [30, 52]
155
- }), _leaflet.default.icon({
156
- iconUrl: _waterNoBackground.default,
157
- iconSize: [46, 46],
158
- iconAnchor: [22, 44],
159
- popupAnchor: [0, -30]
160
- })];
161
- }
162
-
163
- return combinedCollectorsIcon;
164
-
165
- default:
166
- return null;
167
- }
168
- };
169
-
170
- exports.matchIconToPoint = matchIconToPoint;
171
-
172
- var standardBackground = function standardBackground() {
173
- var secondary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
174
- var third = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
175
- return _leaflet.default.icon({
176
- iconUrl: _whitePinBlackShadow.default,
177
- iconSize: secondary ? [20, 20] : [43, 46],
178
- iconAnchor: secondary && third ? [-2, 19] : secondary ? [-2, 44] : [20, 42],
179
- popupAnchor: [0, -30]
180
- });
181
- };
182
-
183
- exports.standardBackground = standardBackground;
184
- var combinedFactoryIcon = [_leaflet.default.icon({
185
- iconUrl: _yellowCircle.default,
186
- iconSize: [25, 24],
187
- iconAnchor: [10.7, 33.7],
188
- popupAnchor: [0, -30]
189
- }), _leaflet.default.icon({
190
- iconUrl: _factoryIcon.default,
191
- iconSize: [15, 15],
192
- iconAnchor: [5, 30],
193
- popupAnchor: [0, -30]
194
- })];
195
- exports.combinedFactoryIcon = combinedFactoryIcon;
196
- var combinedPumpStationIcon = [_leaflet.default.icon({
197
- iconUrl: _greenCircle.default,
198
- iconSize: [25, 24],
199
- iconAnchor: [10.7, 33.7],
200
- popupAnchor: [0, -30]
201
- }), _leaflet.default.icon({
202
- iconUrl: _pumpStationIcon.default,
203
- iconSize: [20, 20],
204
- iconAnchor: [7, 32],
205
- popupAnchor: [0, -30]
206
- })];
207
- exports.combinedPumpStationIcon = combinedPumpStationIcon;
208
- var combinedCollectorsIcon = [_leaflet.default.icon({
209
- iconUrl: _pinWater.default,
210
- iconSize: [45, 45],
211
- iconAnchor: [25, 50],
212
- popupAnchor: [0, -30]
213
- })];
214
- exports.combinedCollectorsIcon = combinedCollectorsIcon;
215
- var combinedWWTPIcon = [_leaflet.default.icon({
216
- iconUrl: _brightBlueCircle.default,
217
- iconSize: [25, 25],
218
- iconAnchor: [10.7, 33.7],
219
- popupAnchor: [0, -30]
220
- }), _leaflet.default.icon({
221
- iconUrl: _WWTPIcon.default,
222
- iconSize: [20, 20],
223
- iconAnchor: [8, 31],
224
- popupAnchor: [0, -30]
225
- })];
226
- exports.combinedWWTPIcon = combinedWWTPIcon;
227
-
228
- var selectedBackground = function selectedBackground() {
229
- return _leaflet.default.icon({
230
- iconUrl: _redPinRedShadow.default,
231
- iconSize: [67, 70],
232
- iconAnchor: [32, 54],
233
- popupAnchor: [0, -30]
234
- });
235
- };
236
-
237
- exports.selectedBackground = selectedBackground;
238
-
239
- var belongsToSourceBackground = function belongsToSourceBackground() {
240
- return _leaflet.default.icon({
241
- iconUrl: _whitePinRedShadow.default,
242
- iconSize: [67, 70],
243
- iconAnchor: [32, 54],
244
- popupAnchor: [0, -30]
245
- });
246
- };
247
-
248
- exports.belongsToSourceBackground = belongsToSourceBackground;
249
-
250
- var markerBelongsToSelectedSource = function markerBelongsToSelectedSource(event, point) {
251
- var source;
252
-
253
- if (event !== null && event !== undefined) {
254
- source = event.sources.filter(function (source) {
255
- return source.point_id === point.id;
256
- })[0];
257
- }
258
-
259
- return event !== null && source && event.selected_source === source.point_id;
260
- };
261
-
262
- exports.markerBelongsToSelectedSource = markerBelongsToSelectedSource;
263
-
264
- var markerBelongsToSource = function markerBelongsToSource(event, point) {
265
- if (event === undefined) return;
266
- return event !== null && event.sources.filter(function (source) {
267
- return source.point_id === point.id;
268
- })[0];
269
- };
270
-
271
- exports.markerBelongsToSource = markerBelongsToSource;
272
-
273
- var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, secondaryIcon, map, point, event) {
274
- // iconSize: [width, height],
275
- // Icon Anchor: [(-right)(+left), (-down)(+up)]
276
- var samplingIcon = [_leaflet.default.icon({
277
- iconUrl: _blueCircle.default,
278
- iconSize: secondaryIcon ? [10, 10] : [25, 24],
279
- iconAnchor: secondaryIcon ? [-7, 15] : [10.7, 33.7],
280
- popupAnchor: [0, -30]
281
- }), _leaflet.default.icon({
282
- iconUrl: _samplingIcon.default,
283
- iconSize: secondaryIcon ? [7, 7] : [13, 15],
284
- iconAnchor: secondaryIcon ? [-8, 13] : [5, 30],
285
- popupAnchor: [0, -30]
286
- })];
287
-
288
- if (markerBelongsToSelectedSource(event, point) && !secondaryIcon) {
289
- samplingIcon.unshift(selectedBackground());
290
- } else if (markerBelongsToSource(event, point) && !secondaryIcon) {
291
- samplingIcon.unshift(belongsToSourceBackground());
292
- } else {
293
- samplingIcon.unshift(standardBackground(secondaryIcon, true));
294
- }
295
-
296
- samplingIcon.forEach(function (icon) {
297
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
298
- icon: icon,
299
- riseOnHover: false
300
- }).addTo(map);
301
-
302
- pointCustomIcon.bindTooltip("".concat(point.group.name, " (").concat(point.id, ")"));
303
- pointCustomIcon['kando_object_id'] = point.id;
304
- pointCustomIcon['kando_object'] = 'Sampling';
305
- });
306
- };
307
-
308
- exports.createSamplingIconPoint = createSamplingIconPoint;
309
-
310
- var createObservationIconPoint = function createObservationIconPoint(markerLocation, secondaryIcon, map, point, event) {
311
- // iconSize: [width, height],
312
- // Icon Anchor: [(-right)(+left), (-down)(+up)]
313
- var observationIcon = [_leaflet.default.icon({
314
- iconUrl: _pinkCircle.default,
315
- iconSize: secondaryIcon ? [10, 10] : [25, 24],
316
- iconAnchor: secondaryIcon ? [-7, 40] : [10.7, 33.7],
317
- popupAnchor: [0, -30]
318
- }), _leaflet.default.icon({
319
- iconUrl: _observationIcon.default,
320
- iconSize: secondaryIcon ? [7, 7] : [13, 15],
321
- iconAnchor: secondaryIcon ? [-8, 38] : [5, 30],
322
- popupAnchor: [0, -30]
323
- })];
324
-
325
- if (markerBelongsToSelectedSource(event, point) && !secondaryIcon) {
326
- observationIcon.unshift(selectedBackground());
327
- } else if (markerBelongsToSource(event, point) && !secondaryIcon) {
328
- observationIcon.unshift(belongsToSourceBackground());
329
- } else {
330
- observationIcon.unshift(standardBackground(secondaryIcon));
331
- }
332
-
333
- observationIcon.forEach(function (icon) {
334
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
335
- icon: icon,
336
- riseOnHover: false
337
- }).addTo(map);
338
-
339
- pointCustomIcon.bindTooltip("".concat(point.group.name, " (").concat(point.id, ")"));
340
- pointCustomIcon['kando_object_id'] = point.id;
341
- pointCustomIcon['kando_object'] = 'Observation';
342
- });
343
- };
344
-
345
- exports.createObservationIconPoint = createObservationIconPoint;
346
-
347
- var createSamplingIcons = function createSamplingIcons(markerLocation, event, point, map) {
348
- var sampledPointIds = event.samplings.map(function (s) {
349
- return s.point_id;
350
- });
351
-
352
- if (event !== null && event.samplings.length !== 0 && sampledPointIds.includes(point.id)) {
353
- createSamplingIconPoint(markerLocation, matchIconToPoint(point, event) !== null, map, point, event);
354
- }
355
- };
356
-
357
- exports.createSamplingIcons = createSamplingIcons;
358
-
359
- var popupContent = function popupContent(obs, point) {
360
- if (obs === null) {
361
- return "\n <div class=\"event-popup\">\n <div class=\"popup-graph-icon popup-graph-icon-".concat(point.id, "\">\n <img src=\"").concat(_lineChart.default, "\"/>\n </div>\n <div class=\"popup-content\">\n <h5 class=\"popup-content__site-name\"><b>").concat(point.group.name, "</b></h5>\n <hr/>\n \n <div id=\"sector\"></div>\n </div>\n </div>\n ");
362
- } else {
363
- return "\n <div class=\"event-popup\">\n <div class=\"popup-graph-icon popup-graph-icon-".concat(obs.id, "\">\n <img src=\"").concat(_lineChart.default, "\"/>\n </div>\n <div class=\"popup-content\">\n <h5 class=\"popup-content__site-name\"><b>").concat(point.group.name, "</b></h5>\n <div class=\"popup-content__severity\">\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.severity"), "</p>\n <span class=\"").concat('popup-content__severity--' + obs.severity, "\">\n <b class=\"popup-content__severity-b\">\n ").concat(_i18n.default.t("events_overview.severities.".concat(obs.severity)), "\n </b>\n </span>\n </div>\n \n <hr class=\"popup-content__hr\" />\n\n <div class=\"popup-content__discharge-time\">\n <div>\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.first_seen"), ":</p>\n <span><b id=\"first-seen-popup\"></b></span>\n </div>\n <div>\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.last_seen"), ":</p>\n <span><b id=\"last-seen-popup\"></b></span>\n </div> \n </div>\n </div>\n </div>\n ");
364
- }
365
- };
366
-
367
- exports.popupContent = popupContent;
368
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJuYW1lcyI6WyJpc0NvbGxlY3RvckZvY3VzZWQiLCJwb2ludCIsImV2ZW50Iiwib2JzZXJ2YXRpb25zIiwibGVuZ3RoIiwiaWQiLCJwb2ludF9pZCIsImNyZWF0ZUJ1YmJsZVBvaW50IiwibWFya2VyTG9jYXRpb24iLCJtYXAiLCJtYXRjaEljb25Ub1BvaW50IiwiZm9yRWFjaCIsImljb24iLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwiZ3JvdXAiLCJuYW1lIiwicmVsYXRlZEV2ZW50c0Ftb3VudCIsImRpdkljb24iLCJjbGFzc05hbWUiLCJodG1sIiwiaWNvbkFuY2hvciIsImNyZWF0ZU1hbmhvbGVQb2ludCIsInBvaW50SWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsInR5cGUiLCJjb21iaW5lZEZhY3RvcnlJY29uIiwibWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UiLCJ1bnNoaWZ0Iiwic2VsZWN0ZWRCYWNrZ3JvdW5kIiwibWFya2VyQmVsb25nc1RvU291cmNlIiwiYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCIsInN0YW5kYXJkQmFja2dyb3VuZCIsImNvbWJpbmVkUHVtcFN0YXRpb25JY29uIiwiY29tYmluZWRXV1RQSWNvbiIsInJlZFBpblJlZFNoYWRvdyIsIndhdGVySWNvbk5vQmFja2dyb3VuZCIsInBvcHVwQW5jaG9yIiwiY29tYmluZWRDb2xsZWN0b3JzSWNvbiIsInNlY29uZGFyeSIsInRoaXJkIiwid2hpdGVQaW5CbGFja1NoYWRvdyIsInllbGxvd0NpcmNsZVVSTCIsInBsYW50SWNvblVSTCIsImdyZWVuQ2lyY2xlVVJMIiwicHVtcFN0YXRpb25JY29uVVJMIiwiY29sbGVjdG9ySWNvbiIsImJyaWdodEJsdWVDaXJjbGVVUkwiLCJXV1RQSWNvblVSTCIsIndoaXRlUGluUmVkU2hhZG93Iiwic291cmNlIiwidW5kZWZpbmVkIiwic291cmNlcyIsImZpbHRlciIsInNlbGVjdGVkX3NvdXJjZSIsImNyZWF0ZVNhbXBsaW5nSWNvblBvaW50Iiwic2Vjb25kYXJ5SWNvbiIsInNhbXBsaW5nSWNvbiIsImJsdWVDaXJjbGVVUkwiLCJzYW1wbGluZ0ljb25VUkwiLCJjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCIsIm9ic2VydmF0aW9uSWNvbiIsInBpbmtDaXJjbGVVUkwiLCJvYnNlcnZhdGlvbkljb25VUkwiLCJjcmVhdGVTYW1wbGluZ0ljb25zIiwic2FtcGxlZFBvaW50SWRzIiwic2FtcGxpbmdzIiwicyIsImluY2x1ZGVzIiwicG9wdXBDb250ZW50Iiwib2JzIiwiR3JhcGhJY29uIiwiaTE4biIsInQiLCJzZXZlcml0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQU9BOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQTs7QUFFTyxJQUFNQSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLENBQUNDLEtBQUQsRUFBZ0JDLEtBQWhCLEVBQWtDO0FBQUE7O0FBQ2xFLFNBQ0UsQ0FBQUEsS0FBSyxTQUFMLElBQUFBLEtBQUssV0FBTCxtQ0FBQUEsS0FBSyxDQUFFQyxZQUFQLDRFQUFxQkMsTUFBckIsTUFBZ0MsQ0FBaEMsSUFDQUgsS0FBSyxDQUFDSSxFQUFOLEtBQWFILEtBQUssQ0FBQ0MsWUFBTixDQUFtQixDQUFuQixFQUFzQkcsUUFGckM7QUFJRCxDQUxNLEMsQ0FPUDtBQUNBOzs7OztBQUNPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBb0IsQ0FDL0JDLGNBRCtCLEVBRS9CUCxLQUYrQixFQUcvQlEsR0FIK0IsRUFJNUI7QUFDSDtBQUNBQyxFQUFBQSxnQkFBZ0IsQ0FBQ1QsS0FBRCxDQUFoQixLQUE0QixJQUE1QixJQUNFO0FBQ0FTLEVBQUFBLGdCQUFn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cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuXG5leHBvcnQgY29uc3QgaXNDb2xsZWN0b3JGb2N1c2VkID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgcmV0dXJuIChcbiAgICBldmVudD8ub2JzZXJ2YXRpb25zPy5sZW5ndGggPT09IDEgJiZcbiAgICBwb2ludC5pZCA9PT0gZXZlbnQub2JzZXJ2YXRpb25zWzBdLnBvaW50X2lkXG4gICk7XG59O1xuXG4vLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuLy8gSWNvbkFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJ1YmJsZVBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbikgPT4ge1xuICAvLyBAdHMtaWdub3JlXG4gIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpICE9PSBudWxsICYmXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpLmZvckVhY2goKGljb246IGFueSkgPT4ge1xuICAgICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgICAgaWNvbjogaWNvbixcbiAgICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChgJHtwb2ludC5ncm91cC5uYW1lfSAoJHtwb2ludC5pZH0pYCk7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgICB9KTtcblxuICBpZiAocG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCkge1xuICAgIGxldCBwb2ludEN1c3RvbUljb24gPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgaWNvbjogTC5kaXZJY29uKHtcbiAgICAgICAgY2xhc3NOYW1lOiBgXG4gICAgICAgICAgJHtcbiAgICAgICAgICAgIHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQgPj0gMTAwXG4gICAgICAgICAgICAgID8gJ2NpcmNsZS1ldmVudHMtYW1vdW50IGNpcmNsZS1ldmVudHMtYW1vdW50LS10cmlkaWdpdCdcbiAgICAgICAgICAgICAgOiAnY2lyY2xlLWV2ZW50cy1hbW91bnQnXG4gICAgICAgICAgfSBcbiAgICAgICAgICAke3BvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQgPiAyID8gJ2FsZXJ0LWNvbG9yJyA6ICcnfVxuICAgICAgICAgICAgYCxcbiAgICAgICAgaHRtbDogYDxwPiR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudH08L3A+YCxcbiAgICAgICAgaWNvbkFuY2hvcjogWy01LCA0Ml0sXG4gICAgICB9KSxcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICB9KS5hZGRUbyhtYXApO1xuXG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnSWNvbk51bWJlcic7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYW5ob2xlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuKSA9PiB7XG4gIGxldCBwb2ludEljb24gPSBMLmljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICBpY29uQW5jaG9yOiBbNC41LCA0LjVdLFxuICB9KTtcbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSkuYWRkVG8obWFwKTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoYCR7cG9pbnQuZ3JvdXAubmFtZX0gKCR7cG9pbnQuaWR9KWApO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50Jztcbn07XG5cbmV4cG9ydCBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgc3dpdGNoIChwb2ludC5ncm91cC50eXBlKSB7XG4gICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6UHVtcFN0YXRpb24nOlxuICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICBpZiAoY29tYmluZWRXV1RQSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRXV1RQSWNvbjtcblxuICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50LCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgICAgICAgaWNvblNpemU6IFs2MiwgNjJdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFs0NiwgNDZdLFxuXG4gICAgICAgICAgICBpY29uQW5jaG9yOiBbMjIsIDQ0XSxcbiAgICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkQ29sbGVjdG9yc0ljb247XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzdGFuZGFyZEJhY2tncm91bmQgPSAoXG4gIHNlY29uZGFyeTogYm9vbGVhbiA9IGZhbHNlLFxuICB0aGlyZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUGluQmxhY2tTaGFkb3csXG4gICAgaWNvblNpemU6IHNlY29uZGFyeSA/IFsyMCwgMjBdIDogWzQzLCA0Nl0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFsyNSwgMjRdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IHBsYW50SWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzE1LCAxNV0sXG4gICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGdyZWVuQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMjUsIDI0XSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFsyMCwgMjBdLFxuICAgIGljb25BbmNob3I6IFs3LCAzMl0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZENvbGxlY3RvcnNJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGNvbGxlY3Rvckljb24sXG4gICAgaWNvblNpemU6IFs0NSwgNDVdLFxuXG4gICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGJyaWdodEJsdWVDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFsyNSwgMjVdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMjAsIDIwXSxcbiAgICBpY29uQW5jaG9yOiBbOCwgMzFdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFs2NywgNzBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFs2NywgNzBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMTAsIDEwXSA6IFsyNSwgMjRdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstNywgMTVdIDogWzEwLjcsIDMzLjddLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBzYW1wbGluZ0ljb25VUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFs3LCA3XSA6IFsxMywgMTVdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRydWUpKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uKSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSkuYWRkVG8obWFwKTtcbiAgICBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYCR7cG9pbnQuZ3JvdXAubmFtZX0gKCR7cG9pbnQuaWR9KWApO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nJztcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgc2Vjb25kYXJ5SWNvbjogYm9vbGVhbixcbiAgbWFwLFxuICBwb2ludDogSVBvaW50LFxuICBldmVudDogSUV2ZW50LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFsxMCwgMTBdIDogWzI1LCAyNF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCA0MF0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IG9ic2VydmF0aW9uSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzcsIDddIDogWzEzLCAxNV0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24pID0+IHtcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgaWNvbjogaWNvbixcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICB9KS5hZGRUbyhtYXApO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChgJHtwb2ludC5ncm91cC5uYW1lfSAoJHtwb2ludC5pZH0pYCk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25zID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbikgPT4ge1xuICBsZXQgc2FtcGxlZFBvaW50SWRzID0gZXZlbnQuc2FtcGxpbmdzLm1hcCgocykgPT4gcy5wb2ludF9pZCk7XG4gIGlmIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNhbXBsaW5ncy5sZW5ndGggIT09IDAgJiZcbiAgICBzYW1wbGVkUG9pbnRJZHMuaW5jbHVkZXMocG9pbnQuaWQpXG4gICkge1xuICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KFxuICAgICAgbWFya2VyTG9jYXRpb24sXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50LCBldmVudCkgIT09IG51bGwsXG4gICAgICBtYXAsXG4gICAgICBwb2ludCxcbiAgICAgIGV2ZW50LFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1cENvbnRlbnQgPSAob2JzOiBhbnksIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH1cbn07XG4iXX0=
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _ChangePercent = require("./ChangePercent");
6
-
7
- var _react = _interopRequireDefault(require("react"));
8
-
9
- require("@testing-library/jest-dom/extend-expect");
10
-
11
- var _StylesLayout = _interopRequireDefault(require("styles/StylesLayout"));
12
-
13
- var _i18n = _interopRequireDefault(require("utilities/i18n"));
14
-
15
- var _require = require('@testing-library/react'),
16
- screen = _require.screen,
17
- render = _require.render;
18
-
19
- describe('ChangePercent unit tests', function () {
20
- test('change above 0', function () {
21
- var _render = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_ChangePercent.ChangePercent, {
22
- change: 15
23
- }))),
24
- container = _render.container;
25
-
26
- screen.getByText('15%');
27
- var arrow_icon = container.querySelector('svg');
28
- expect(arrow_icon).toHaveAttribute('fill', '#1db232');
29
- });
30
- test('change 0', function () {
31
- var _render2 = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_ChangePercent.ChangePercent, {
32
- change: 0
33
- }))),
34
- container = _render2.container;
35
-
36
- screen.getByText(_i18n.default.t('dashboard_v2.utility_dashboard.no_change'));
37
- var arrow_icon = container.querySelector('svg');
38
- expect(arrow_icon).toBeNull();
39
- });
40
- test('change below 0', function () {
41
- var _render3 = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_ChangePercent.ChangePercent, {
42
- change: -15
43
- }))),
44
- container = _render3.container;
45
-
46
- screen.getByText('15%');
47
- var arrow_icon = container.querySelector('svg');
48
- expect(arrow_icon).toHaveAttribute('fill', '#f6004f');
49
- });
50
- test('change -999', function () {
51
- var _render4 = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_ChangePercent.ChangePercent, {
52
- change: -999
53
- }))),
54
- container = _render4.container;
55
-
56
- var text = screen.queryByText(_i18n.default.t('dashboard_v2.utility_dashboard.no_change'));
57
- var arrow_icon = container.querySelector('svg');
58
- expect(arrow_icon).toBeNull();
59
- expect(text).toBeNull();
60
- });
61
- });
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvY29tcG9uZW50cy9DaGFuZ2VQZXJjZW50LnRlc3QudHN4Il0sIm5hbWVzIjpbInJlcXVpcmUiLCJzY3JlZW4iLCJyZW5kZXIiLCJkZXNjcmliZSIsInRlc3QiLCJjb250YWluZXIiLCJnZXRCeVRleHQiLCJhcnJvd19pY29uIiwicXVlcnlTZWxlY3RvciIsImV4cGVjdCIsInRvSGF2ZUF0dHJpYnV0ZSIsImkxOG4iLCJ0IiwidG9CZU51bGwiLCJ0ZXh0IiwicXVlcnlCeVRleHQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSxlQUEyQkEsT0FBTyxDQUFDLHdCQUFELENBQWxDO0FBQUEsSUFBUUMsTUFBUixZQUFRQSxNQUFSO0FBQUEsSUFBZ0JDLE1BQWhCLFlBQWdCQSxNQUFoQjs7QUFFQUMsUUFBUSxDQUFDLDBCQUFELEVBQTZCLFlBQU07QUFDekNDLEVBQUFBLElBQUksQ0FBQyxnQkFBRCxFQUFtQixZQUFNO0FBQzNCLGtCQUFzQkYsTUFBTSxlQUMxQiw2QkFBQyxxQkFBRCxxQkFDRSw2QkFBQyw0QkFBRDtBQUFlLE1BQUEsTUFBTSxFQUFFO0FBQXZCLE1BREYsQ0FEMEIsQ0FBNUI7QUFBQSxRQUFRRyxTQUFSLFdBQVFBLFNBQVI7O0FBS0FKLElBQUFBLE1BQU0sQ0FBQ0ssU0FBUCxDQUFpQixLQUFqQjtBQUNBLFFBQU1DLFVBQVUsR0FBR0YsU0FBUyxDQUFDRyxhQUFWLENBQXdCLEtBQXhCLENBQW5CO0FBQ0FDLElBQUFBLE1BQU0sQ0FBQ0YsVUFBRCxDQUFOLENBQW1CRyxlQUFuQixDQUFtQyxNQUFuQyxFQUEyQyxTQUEzQztBQUNELEdBVEcsQ0FBSjtBQVdBTixFQUFBQSxJQUFJLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDckIsbUJBQXNCRixNQUFNLGVBQzFCLDZCQUFDLHFCQUFELHFCQUNFLDZCQUFDLDRCQUFEO0FBQWUsTUFBQSxNQUFNLEVBQUU7QUFBdkIsTUFERixDQUQwQixDQUE1QjtBQUFBLFFBQVFHLFNBQVIsWUFBUUEsU0FBUjs7QUFLQUosSUFBQUEsTUFBTSxDQUFDSyxTQUFQLENBQWlCSyxjQUFLQyxDQUFMLENBQU8sMENBQVAsQ0FBakI7QUFDQSxRQUFNTCxVQUFVLEdBQUdGLFNBQVMsQ0FBQ0csYUFBVixDQUF3QixLQUF4QixDQUFuQjtBQUNBQyxJQUFBQSxNQUFNLENBQUNGLFVBQUQsQ0FBTixDQUFtQk0sUUFBbkI7QUFDRCxHQVRHLENBQUo7QUFXQVQsRUFBQUEsSUFBSSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDM0IsbUJBQXNCRixNQUFNLGVBQzFCLDZCQUFDLHFCQUFELHFCQUNFLDZCQUFDLDRCQUFEO0FBQWUsTUFBQSxNQUFNLEVBQUUsQ0FBQztBQUF4QixNQURGLENBRDBCLENBQTVCO0FBQUEsUUFBUUcsU0FBUixZQUFRQSxTQUFSOztBQUtBSixJQUFBQSxNQUFNLENBQUNLLFNBQVAsQ0FBaUIsS0FBakI7QUFDQSxRQUFNQyxVQUFVLEdBQUdGLFNBQVMsQ0FBQ0csYUFBVixDQUF3QixLQUF4QixDQUFuQjtBQUNBQyxJQUFBQSxNQUFNLENBQUNGLFVBQUQsQ0FBTixDQUFtQkcsZUFBbkIsQ0FBbUMsTUFBbkMsRUFBMkMsU0FBM0M7QUFDRCxHQVRHLENBQUo7QUFXQU4sRUFBQUEsSUFBSSxDQUFDLGFBQUQsRUFBZ0IsWUFBTTtBQUN4QixtQkFBc0JGLE1BQU0sZUFDMUIsNkJBQUMscUJBQUQscUJBQ0UsNkJBQUMsNEJBQUQ7QUFBZSxNQUFBLE1BQU0sRUFBRSxDQUFDO0FBQXhCLE1BREYsQ0FEMEIsQ0FBNUI7QUFBQSxRQUFRRyxTQUFSLFlBQVFBLFNBQVI7O0FBS0EsUUFBTVMsSUFBSSxHQUFHYixNQUFNLENBQUNjLFdBQVAsQ0FDWEosY0FBS0MsQ0FBTCxDQUFPLDBDQUFQLENBRFcsQ0FBYjtBQUdBLFFBQU1MLFVBQVUsR0FBR0YsU0FBUyxDQUFDRyxhQUFWLENBQXdCLEtBQXhCLENBQW5CO0FBQ0FDLElBQUFBLE1BQU0sQ0FBQ0YsVUFBRCxDQUFOLENBQW1CTSxRQUFuQjtBQUNBSixJQUFBQSxNQUFNLENBQUNLLElBQUQsQ0FBTixDQUFhRCxRQUFiO0FBQ0QsR0FaRyxDQUFKO0FBYUQsQ0EvQ08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZVBlcmNlbnQgfSBmcm9tICcuL0NoYW5nZVBlcmNlbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnQHRlc3RpbmctbGlicmFyeS9qZXN0LWRvbS9leHRlbmQtZXhwZWN0JztcbmltcG9ydCBTdHlsZXNMYXlvdXQgZnJvbSAnc3JjL3N0eWxlcy9TdHlsZXNMYXlvdXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmNvbnN0IHsgc2NyZWVuLCByZW5kZXIgfSA9IHJlcXVpcmUoJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnKTtcblxuZGVzY3JpYmUoJ0NoYW5nZVBlcmNlbnQgdW5pdCB0ZXN0cycsICgpID0+IHtcbiAgdGVzdCgnY2hhbmdlIGFib3ZlIDAnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxTdHlsZXNMYXlvdXQ+XG4gICAgICAgIDxDaGFuZ2VQZXJjZW50IGNoYW5nZT17MTV9IC8+XG4gICAgICA8L1N0eWxlc0xheW91dD4sXG4gICAgKTtcbiAgICBzY3JlZW4uZ2V0QnlUZXh0KCcxNSUnKTtcbiAgICBjb25zdCBhcnJvd19pY29uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGV4cGVjdChhcnJvd19pY29uKS50b0hhdmVBdHRyaWJ1dGUoJ2ZpbGwnLCAnIzFkYjIzMicpO1xuICB9KTtcblxuICB0ZXN0KCdjaGFuZ2UgMCcsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPFN0eWxlc0xheW91dD5cbiAgICAgICAgPENoYW5nZVBlcmNlbnQgY2hhbmdlPXswfSAvPlxuICAgICAgPC9TdHlsZXNMYXlvdXQ+LFxuICAgICk7XG4gICAgc2NyZWVuLmdldEJ5VGV4dChpMThuLnQoJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC5ub19jaGFuZ2UnKSk7XG4gICAgY29uc3QgYXJyb3dfaWNvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3QoYXJyb3dfaWNvbikudG9CZU51bGwoKTtcbiAgfSk7XG5cbiAgdGVzdCgnY2hhbmdlIGJlbG93IDAnLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxTdHlsZXNMYXlvdXQ+XG4gICAgICAgIDxDaGFuZ2VQZXJjZW50IGNoYW5nZT17LTE1fSAvPlxuICAgICAgPC9TdHlsZXNMYXlvdXQ+LFxuICAgICk7XG4gICAgc2NyZWVuLmdldEJ5VGV4dCgnMTUlJyk7XG4gICAgY29uc3QgYXJyb3dfaWNvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcbiAgICBleHBlY3QoYXJyb3dfaWNvbikudG9IYXZlQXR0cmlidXRlKCdmaWxsJywgJyNmNjAwNGYnKTtcbiAgfSk7XG5cbiAgdGVzdCgnY2hhbmdlIC05OTknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxTdHlsZXNMYXlvdXQ+XG4gICAgICAgIDxDaGFuZ2VQZXJjZW50IGNoYW5nZT17LTk5OX0gLz5cbiAgICAgIDwvU3R5bGVzTGF5b3V0PixcbiAgICApO1xuICAgIGNvbnN0IHRleHQgPSBzY3JlZW4ucXVlcnlCeVRleHQoXG4gICAgICBpMThuLnQoJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC5ub19jaGFuZ2UnKSxcbiAgICApO1xuICAgIGNvbnN0IGFycm93X2ljb24gPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgZXhwZWN0KGFycm93X2ljb24pLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KHRleHQpLnRvQmVOdWxsKCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,75 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
6
-
7
- var _PieChart = require("./PieChart");
8
-
9
- var _react = _interopRequireDefault(require("react"));
10
-
11
- require("@testing-library/jest-dom/extend-expect");
12
-
13
- var _StylesLayout = _interopRequireDefault(require("styles/StylesLayout"));
14
-
15
- var _require = require('@testing-library/react'),
16
- screen = _require.screen,
17
- render = _require.render;
18
-
19
- describe('PieChart unit tests', function () {
20
- var qualityExample = {
21
- clean: 0,
22
- clean_percents: 0,
23
- clean_percent_change: 0,
24
- polluted: 0,
25
- polluted_percents: 0,
26
- polluted_percent_change: 0,
27
- medium: 0,
28
- medium_percents: 0,
29
- medium_percent_change: 0,
30
- high: 0,
31
- high_percents: 0,
32
- high_percent_change: 0,
33
- extreme: 0,
34
- extreme_percents: 0,
35
- extreme_percent_change: 0,
36
- weighted_pi_sum: 0,
37
- multipliers_sum: 0
38
- };
39
- test('test missing data', function () {
40
- var qualitySummary = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, qualityExample), {}, {
41
- polluted_percent_change: -999
42
- });
43
-
44
- var _render = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_PieChart.PieChart, {
45
- title: 'title',
46
- changePercent: 14,
47
- clearPercent: 14,
48
- isUp: true,
49
- isValidData: false,
50
- qualitySummary: qualitySummary
51
- }))),
52
- container = _render.container;
53
-
54
- var text = screen.queryByText('14%');
55
- var arrow_icon = container.querySelector('.change svg');
56
- expect(arrow_icon).toBeNull();
57
- expect(text).toBeNull();
58
- });
59
- test('test have data', function () {
60
- var _render2 = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_PieChart.PieChart, {
61
- title: 'title',
62
- changePercent: 14,
63
- clearPercent: 14,
64
- isUp: true,
65
- isValidData: true,
66
- qualitySummary: qualityExample
67
- }))),
68
- container = _render2.container;
69
-
70
- screen.getByText('14%');
71
- var arrow_icon = container.querySelector('.change svg');
72
- expect(arrow_icon).toHaveAttribute('fill', '#1db232');
73
- });
74
- });
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL1F1YWxpdHlTdW1tYXJ5L1BpZUNoYXJ0L1BpZUNoYXJ0LnRlc3QudHN4Il0sIm5hbWVzIjpbInJlcXVpcmUiLCJzY3JlZW4iLCJyZW5kZXIiLCJkZXNjcmliZSIsInF1YWxpdHlFeGFtcGxlIiwiY2xlYW4iLCJjbGVhbl9wZXJjZW50cyIsImNsZWFuX3BlcmNlbnRfY2hhbmdlIiwicG9sbHV0ZWQiLCJwb2xsdXRlZF9wZXJjZW50cyIsInBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlIiwibWVkaXVtIiwibWVkaXVtX3BlcmNlbnRzIiwibWVkaXVtX3BlcmNlbnRfY2hhbmdlIiwiaGlnaCIsImhpZ2hfcGVyY2VudHMiLCJoaWdoX3BlcmNlbnRfY2hhbmdlIiwiZXh0cmVtZSIsImV4dHJlbWVfcGVyY2VudHMiLCJleHRyZW1lX3BlcmNlbnRfY2hhbmdlIiwid2VpZ2h0ZWRfcGlfc3VtIiwibXVsdGlwbGllcnNfc3VtIiwidGVzdCIsInF1YWxpdHlTdW1tYXJ5IiwiY29udGFpbmVyIiwidGV4dCIsInF1ZXJ5QnlUZXh0IiwiYXJyb3dfaWNvbiIsInF1ZXJ5U2VsZWN0b3IiLCJleHBlY3QiLCJ0b0JlTnVsbCIsImdldEJ5VGV4dCIsInRvSGF2ZUF0dHJpYnV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsZUFBMkJBLE9BQU8sQ0FBQyx3QkFBRCxDQUFsQztBQUFBLElBQVFDLE1BQVIsWUFBUUEsTUFBUjtBQUFBLElBQWdCQyxNQUFoQixZQUFnQkEsTUFBaEI7O0FBRUFDLFFBQVEsQ0FBQyxxQkFBRCxFQUF3QixZQUFNO0FBQ3BDLE1BQU1DLGNBQWMsR0FBRztBQUNyQkMsSUFBQUEsS0FBSyxFQUFFLENBRGM7QUFFckJDLElBQUFBLGNBQWMsRUFBRSxDQUZLO0FBR3JCQyxJQUFBQSxvQkFBb0IsRUFBRSxDQUhEO0FBSXJCQyxJQUFBQSxRQUFRLEVBQUUsQ0FKVztBQUtyQkMsSUFBQUEsaUJBQWlCLEVBQUUsQ0FMRTtBQU1yQkMsSUFBQUEsdUJBQXVCLEVBQUUsQ0FOSjtBQU9yQkMsSUFBQUEsTUFBTSxFQUFFLENBUGE7QUFRckJDLElBQUFBLGVBQWUsRUFBRSxDQVJJO0FBU3JCQyxJQUFBQSxxQkFBcUIsRUFBRSxDQVRGO0FBVXJCQyxJQUFBQSxJQUFJLEVBQUUsQ0FWZTtBQVdyQkMsSUFBQUEsYUFBYSxFQUFFLENBWE07QUFZckJDLElBQUFBLG1CQUFtQixFQUFFLENBWkE7QUFhckJDLElBQUFBLE9BQU8sRUFBRSxDQWJZO0FBY3JCQyxJQUFBQSxnQkFBZ0IsRUFBRSxDQWRHO0FBZXJCQyxJQUFBQSxzQkFBc0IsRUFBRSxDQWZIO0FBZ0JyQkMsSUFBQUEsZUFBZSxFQUFFLENBaEJJO0FBaUJyQkMsSUFBQUEsZUFBZSxFQUFFO0FBakJJLEdBQXZCO0FBb0JBQyxFQUFBQSxJQUFJLENBQUMsbUJBQUQsRUFBc0IsWUFBTTtBQUM5QixRQUFNQyxjQUFjLCtEQUFRbkIsY0FBUjtBQUF3Qk0sTUFBQUEsdUJBQXVCLEVBQUUsQ0FBQztBQUFsRCxNQUFwQjs7QUFDQSxrQkFBc0JSLE1BQU0sZUFDMUIsNkJBQUMscUJBQUQscUJBQ0UsNkJBQUMsa0JBQUQ7QUFDRSxNQUFBLEtBQUssRUFBRSxPQURUO0FBRUUsTUFBQSxhQUFhLEVBQUUsRUFGakI7QUFHRSxNQUFBLFlBQVksRUFBRSxFQUhoQjtBQUlFLE1BQUEsSUFBSSxFQUFFLElBSlI7QUFLRSxNQUFBLFdBQVcsRUFBRSxLQUxmO0FBTUUsTUFBQSxjQUFjLEVBQUVxQjtBQU5sQixNQURGLENBRDBCLENBQTVCO0FBQUEsUUFBUUMsU0FBUixXQUFRQSxTQUFSOztBQVlBLFFBQU1DLElBQUksR0FBR3hCLE1BQU0sQ0FBQ3lCLFdBQVAsQ0FBbUIsS0FBbkIsQ0FBYjtBQUNBLFFBQU1DLFVBQVUsR0FBR0gsU0FBUyxDQUFDSSxhQUFWLENBQXdCLGFBQXhCLENBQW5CO0FBQ0FDLElBQUFBLE1BQU0sQ0FBQ0YsVUFBRCxDQUFOLENBQW1CRyxRQUFuQjtBQUNBRCxJQUFBQSxNQUFNLENBQUNKLElBQUQsQ0FBTixDQUFhSyxRQUFiO0FBQ0QsR0FsQkcsQ0FBSjtBQW9CQVIsRUFBQUEsSUFBSSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDM0IsbUJBQXNCcEIsTUFBTSxlQUMxQiw2QkFBQyxxQkFBRCxxQkFDRSw2QkFBQyxrQkFBRDtBQUNFLE1BQUEsS0FBSyxFQUFFLE9BRFQ7QUFFRSxNQUFBLGFBQWEsRUFBRSxFQUZqQjtBQUdFLE1BQUEsWUFBWSxFQUFFLEVBSGhCO0FBSUUsTUFBQSxJQUFJLEVBQUUsSUFKUjtBQUtFLE1BQUEsV0FBVyxFQUFFLElBTGY7QUFNRSxNQUFBLGNBQWMsRUFBRUU7QUFObEIsTUFERixDQUQwQixDQUE1QjtBQUFBLFFBQVFvQixTQUFSLFlBQVFBLFNBQVI7O0FBWUF2QixJQUFBQSxNQUFNLENBQUM4QixTQUFQLENBQWlCLEtBQWpCO0FBQ0EsUUFBTUosVUFBVSxHQUFHSCxTQUFTLENBQUNJLGFBQVYsQ0FBd0IsYUFBeEIsQ0FBbkI7QUFDQUMsSUFBQUEsTUFBTSxDQUFDRixVQUFELENBQU4sQ0FBbUJLLGVBQW5CLENBQW1DLE1BQW5DLEVBQTJDLFNBQTNDO0FBQ0QsR0FoQkcsQ0FBSjtBQWlCRCxDQTFETyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGllQ2hhcnQgfSBmcm9tICcuL1BpZUNoYXJ0JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20vZXh0ZW5kLWV4cGVjdCc7XG5pbXBvcnQgU3R5bGVzTGF5b3V0IGZyb20gJ3NyYy9zdHlsZXMvU3R5bGVzTGF5b3V0JztcblxuY29uc3QgeyBzY3JlZW4sIHJlbmRlciB9ID0gcmVxdWlyZSgnQHRlc3RpbmctbGlicmFyeS9yZWFjdCcpO1xuXG5kZXNjcmliZSgnUGllQ2hhcnQgdW5pdCB0ZXN0cycsICgpID0+IHtcbiAgY29uc3QgcXVhbGl0eUV4YW1wbGUgPSB7XG4gICAgY2xlYW46IDAsXG4gICAgY2xlYW5fcGVyY2VudHM6IDAsXG4gICAgY2xlYW5fcGVyY2VudF9jaGFuZ2U6IDAsXG4gICAgcG9sbHV0ZWQ6IDAsXG4gICAgcG9sbHV0ZWRfcGVyY2VudHM6IDAsXG4gICAgcG9sbHV0ZWRfcGVyY2VudF9jaGFuZ2U6IDAsXG4gICAgbWVkaXVtOiAwLFxuICAgIG1lZGl1bV9wZXJjZW50czogMCxcbiAgICBtZWRpdW1fcGVyY2VudF9jaGFuZ2U6IDAsXG4gICAgaGlnaDogMCxcbiAgICBoaWdoX3BlcmNlbnRzOiAwLFxuICAgIGhpZ2hfcGVyY2VudF9jaGFuZ2U6IDAsXG4gICAgZXh0cmVtZTogMCxcbiAgICBleHRyZW1lX3BlcmNlbnRzOiAwLFxuICAgIGV4dHJlbWVfcGVyY2VudF9jaGFuZ2U6IDAsXG4gICAgd2VpZ2h0ZWRfcGlfc3VtOiAwLFxuICAgIG11bHRpcGxpZXJzX3N1bTogMCxcbiAgfTtcblxuICB0ZXN0KCd0ZXN0IG1pc3NpbmcgZGF0YScsICgpID0+IHtcbiAgICBjb25zdCBxdWFsaXR5U3VtbWFyeSA9IHsgLi4ucXVhbGl0eUV4YW1wbGUsIHBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlOiAtOTk5IH07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcihcbiAgICAgIDxTdHlsZXNMYXlvdXQ+XG4gICAgICAgIDxQaWVDaGFydFxuICAgICAgICAgIHRpdGxlPXsndGl0bGUnfVxuICAgICAgICAgIGNoYW5nZVBlcmNlbnQ9ezE0fVxuICAgICAgICAgIGNsZWFyUGVyY2VudD17MTR9XG4gICAgICAgICAgaXNVcD17dHJ1ZX1cbiAgICAgICAgICBpc1ZhbGlkRGF0YT17ZmFsc2V9XG4gICAgICAgICAgcXVhbGl0eVN1bW1hcnk9e3F1YWxpdHlTdW1tYXJ5fVxuICAgICAgICAvPlxuICAgICAgPC9TdHlsZXNMYXlvdXQ+LFxuICAgICk7XG4gICAgY29uc3QgdGV4dCA9IHNjcmVlbi5xdWVyeUJ5VGV4dCgnMTQlJyk7XG4gICAgY29uc3QgYXJyb3dfaWNvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuY2hhbmdlIHN2ZycpO1xuICAgIGV4cGVjdChhcnJvd19pY29uKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdCh0ZXh0KS50b0JlTnVsbCgpO1xuICB9KTtcblxuICB0ZXN0KCd0ZXN0IGhhdmUgZGF0YScsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPFN0eWxlc0xheW91dD5cbiAgICAgICAgPFBpZUNoYXJ0XG4gICAgICAgICAgdGl0bGU9eyd0aXRsZSd9XG4gICAgICAgICAgY2hhbmdlUGVyY2VudD17MTR9XG4gICAgICAgICAgY2xlYXJQZXJjZW50PXsxNH1cbiAgICAgICAgICBpc1VwPXt0cnVlfVxuICAgICAgICAgIGlzVmFsaWREYXRhPXt0cnVlfVxuICAgICAgICAgIHF1YWxpdHlTdW1tYXJ5PXtxdWFsaXR5RXhhbXBsZX1cbiAgICAgICAgLz5cbiAgICAgIDwvU3R5bGVzTGF5b3V0PixcbiAgICApO1xuICAgIHNjcmVlbi5nZXRCeVRleHQoJzE0JScpO1xuICAgIGNvbnN0IGFycm93X2ljb24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmNoYW5nZSBzdmcnKTtcbiAgICBleHBlY3QoYXJyb3dfaWNvbikudG9IYXZlQXR0cmlidXRlKCdmaWxsJywgJyMxZGIyMzInKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _PollutedLine = require("./PollutedLine");
6
-
7
- var _react = _interopRequireDefault(require("react"));
8
-
9
- require("@testing-library/jest-dom/extend-expect");
10
-
11
- var _StylesLayout = _interopRequireDefault(require("styles/StylesLayout"));
12
-
13
- var _require = require('@testing-library/react'),
14
- screen = _require.screen,
15
- render = _require.render;
16
-
17
- describe('PollutedLine unit tests', function () {
18
- var props = {
19
- color: '#f4f4f4',
20
- percent: 5,
21
- title: 'title',
22
- up: true,
23
- upPercent: 15,
24
- graphBackgroundColor: '#f4f4f4',
25
- isValidData: true
26
- };
27
- test('valid data', function () {
28
- var _render = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_PollutedLine.PollutedLine, props))),
29
- container = _render.container;
30
-
31
- screen.getByText('15%');
32
- var arrow_icon = container.querySelector('svg');
33
- var up_down = container.querySelector('.up-down');
34
- expect(up_down).toBeInTheDocument();
35
- expect(arrow_icon).toHaveAttribute('fill', '#1db232');
36
- });
37
- test('invalid data', function () {
38
- var _render2 = render( /*#__PURE__*/_react.default.createElement(_StylesLayout.default, null, /*#__PURE__*/_react.default.createElement(_PollutedLine.PollutedLine, Object.assign({}, props, {
39
- isValidData: false
40
- })))),
41
- container = _render2.container;
42
-
43
- screen.getByText('5%');
44
- var change = screen.queryByText('15%');
45
- var arrow_icon = container.querySelector('svg');
46
- var up_down = container.querySelector('.up-down');
47
- expect(up_down).toBeNull();
48
- expect(change).toBeNull();
49
- expect(arrow_icon).toBeNull();
50
- });
51
- });
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL1F1YWxpdHlTdW1tYXJ5L1BvbGx1dGVkTGluZS9Qb2xsdXRlZExpbmUudGVzdC50c3giXSwibmFtZXMiOlsicmVxdWlyZSIsInNjcmVlbiIsInJlbmRlciIsImRlc2NyaWJlIiwicHJvcHMiLCJjb2xvciIsInBlcmNlbnQiLCJ0aXRsZSIsInVwIiwidXBQZXJjZW50IiwiZ3JhcGhCYWNrZ3JvdW5kQ29sb3IiLCJpc1ZhbGlkRGF0YSIsInRlc3QiLCJjb250YWluZXIiLCJnZXRCeVRleHQiLCJhcnJvd19pY29uIiwicXVlcnlTZWxlY3RvciIsInVwX2Rvd24iLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInRvSGF2ZUF0dHJpYnV0ZSIsImNoYW5nZSIsInF1ZXJ5QnlUZXh0IiwidG9CZU51bGwiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxlQUEyQkEsT0FBTyxDQUFDLHdCQUFELENBQWxDO0FBQUEsSUFBUUMsTUFBUixZQUFRQSxNQUFSO0FBQUEsSUFBZ0JDLE1BQWhCLFlBQWdCQSxNQUFoQjs7QUFFQUMsUUFBUSxDQUFDLHlCQUFELEVBQTRCLFlBQU07QUFDeEMsTUFBTUMsS0FBSyxHQUFHO0FBQ1pDLElBQUFBLEtBQUssRUFBRSxTQURLO0FBRVpDLElBQUFBLE9BQU8sRUFBRSxDQUZHO0FBR1pDLElBQUFBLEtBQUssRUFBRSxPQUhLO0FBSVpDLElBQUFBLEVBQUUsRUFBRSxJQUpRO0FBS1pDLElBQUFBLFNBQVMsRUFBRSxFQUxDO0FBTVpDLElBQUFBLG9CQUFvQixFQUFFLFNBTlY7QUFPWkMsSUFBQUEsV0FBVyxFQUFFO0FBUEQsR0FBZDtBQVNBQyxFQUFBQSxJQUFJLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDdkIsa0JBQXNCVixNQUFNLGVBQzFCLDZCQUFDLHFCQUFELHFCQUNFLDZCQUFDLDBCQUFELEVBQWtCRSxLQUFsQixDQURGLENBRDBCLENBQTVCO0FBQUEsUUFBUVMsU0FBUixXQUFRQSxTQUFSOztBQUtBWixJQUFBQSxNQUFNLENBQUNhLFNBQVAsQ0FBaUIsS0FBakI7QUFDQSxRQUFNQyxVQUFVLEdBQUdGLFNBQVMsQ0FBQ0csYUFBVixDQUF3QixLQUF4QixDQUFuQjtBQUNBLFFBQU1DLE9BQU8sR0FBR0osU0FBUyxDQUFDRyxhQUFWLENBQXdCLFVBQXhCLENBQWhCO0FBQ0FFLElBQUFBLE1BQU0sQ0FBQ0QsT0FBRCxDQUFOLENBQWdCRSxpQkFBaEI7QUFDQUQsSUFBQUEsTUFBTSxDQUFDSCxVQUFELENBQU4sQ0FBbUJLLGVBQW5CLENBQW1DLE1BQW5DLEVBQTJDLFNBQTNDO0FBQ0QsR0FYRyxDQUFKO0FBYUFSLEVBQUFBLElBQUksQ0FBQyxjQUFELEVBQWlCLFlBQU07QUFDekIsbUJBQXNCVixNQUFNLGVBQzFCLDZCQUFDLHFCQUFELHFCQUNFLDZCQUFDLDBCQUFELG9CQUFrQkUsS0FBbEI7QUFBeUIsTUFBQSxXQUFXLEVBQUU7QUFBdEMsT0FERixDQUQwQixDQUE1QjtBQUFBLFFBQVFTLFNBQVIsWUFBUUEsU0FBUjs7QUFLQVosSUFBQUEsTUFBTSxDQUFDYSxTQUFQLENBQWlCLElBQWpCO0FBQ0EsUUFBTU8sTUFBTSxHQUFHcEIsTUFBTSxDQUFDcUIsV0FBUCxDQUFtQixLQUFuQixDQUFmO0FBQ0EsUUFBTVAsVUFBVSxHQUFHRixTQUFTLENBQUNHLGFBQVYsQ0FBd0IsS0FBeEIsQ0FBbkI7QUFDQSxRQUFNQyxPQUFPLEdBQUdKLFNBQVMsQ0FBQ0csYUFBVixDQUF3QixVQUF4QixDQUFoQjtBQUNBRSxJQUFBQSxNQUFNLENBQUNELE9BQUQsQ0FBTixDQUFnQk0sUUFBaEI7QUFDQUwsSUFBQUEsTUFBTSxDQUFDRyxNQUFELENBQU4sQ0FBZUUsUUFBZjtBQUNBTCxJQUFBQSxNQUFNLENBQUNILFVBQUQsQ0FBTixDQUFtQlEsUUFBbkI7QUFDRCxHQWJHLENBQUo7QUFjRCxDQXJDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9sbHV0ZWRMaW5lIH0gZnJvbSAnLi9Qb2xsdXRlZExpbmUnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnQHRlc3RpbmctbGlicmFyeS9qZXN0LWRvbS9leHRlbmQtZXhwZWN0JztcbmltcG9ydCBTdHlsZXNMYXlvdXQgZnJvbSAnc3JjL3N0eWxlcy9TdHlsZXNMYXlvdXQnO1xuXG5jb25zdCB7IHNjcmVlbiwgcmVuZGVyIH0gPSByZXF1aXJlKCdAdGVzdGluZy1saWJyYXJ5L3JlYWN0Jyk7XG5cbmRlc2NyaWJlKCdQb2xsdXRlZExpbmUgdW5pdCB0ZXN0cycsICgpID0+IHtcbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgY29sb3I6ICcjZjRmNGY0JyxcbiAgICBwZXJjZW50OiA1LFxuICAgIHRpdGxlOiAndGl0bGUnLFxuICAgIHVwOiB0cnVlLFxuICAgIHVwUGVyY2VudDogMTUsXG4gICAgZ3JhcGhCYWNrZ3JvdW5kQ29sb3I6ICcjZjRmNGY0JyxcbiAgICBpc1ZhbGlkRGF0YTogdHJ1ZSxcbiAgfTtcbiAgdGVzdCgndmFsaWQgZGF0YScsICgpID0+IHtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgPFN0eWxlc0xheW91dD5cbiAgICAgICAgPFBvbGx1dGVkTGluZSB7Li4ucHJvcHN9IC8+XG4gICAgICA8L1N0eWxlc0xheW91dD4sXG4gICAgKTtcbiAgICBzY3JlZW4uZ2V0QnlUZXh0KCcxNSUnKTtcbiAgICBjb25zdCBhcnJvd19pY29uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpO1xuICAgIGNvbnN0IHVwX2Rvd24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnVwLWRvd24nKTtcbiAgICBleHBlY3QodXBfZG93bikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICBleHBlY3QoYXJyb3dfaWNvbikudG9IYXZlQXR0cmlidXRlKCdmaWxsJywgJyMxZGIyMzInKTtcbiAgfSk7XG5cbiAgdGVzdCgnaW52YWxpZCBkYXRhJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICA8U3R5bGVzTGF5b3V0PlxuICAgICAgICA8UG9sbHV0ZWRMaW5lIHsuLi5wcm9wc30gaXNWYWxpZERhdGE9e2ZhbHNlfSAvPlxuICAgICAgPC9TdHlsZXNMYXlvdXQ+LFxuICAgICk7XG4gICAgc2NyZWVuLmdldEJ5VGV4dCgnNSUnKTtcbiAgICBjb25zdCBjaGFuZ2UgPSBzY3JlZW4ucXVlcnlCeVRleHQoJzE1JScpO1xuICAgIGNvbnN0IGFycm93X2ljb24gPSBjb250YWluZXIucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG4gICAgY29uc3QgdXBfZG93biA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudXAtZG93bicpO1xuICAgIGV4cGVjdCh1cF9kb3duKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChjaGFuZ2UpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KGFycm93X2ljb24pLnRvQmVOdWxsKCk7XG4gIH0pO1xufSk7XG4iXX0=