@aclymatepackages/modules 1.0.17 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CustomTooltipDisplayRow.js +11 -13
- package/dist/components/EmissionsChart.js +9 -4
- package/dist/components/EmissionsCustomTooltip.js +39 -79
- package/dist/components/EmissionsPieChart.js +11 -13
- package/package.json +2 -2
- package/src/components/CustomTooltipDisplayRow.js +11 -7
- package/src/components/EmissionsChart.js +8 -2
- package/src/components/EmissionsCustomTooltip.js +26 -67
- package/src/components/EmissionsPieChart.js +11 -7
|
@@ -6,17 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _material = require("@mui/material");
|
|
9
|
+
var _atoms = require("@aclymatepackages/atoms");
|
|
9
10
|
var _formatters = require("@aclymatepackages/formatters");
|
|
10
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
12
|
const CustomTooltipDisplayRow = _ref => {
|
|
12
13
|
let {
|
|
13
14
|
category,
|
|
14
|
-
Icon,
|
|
15
|
-
icon,
|
|
16
15
|
customAvatar,
|
|
17
16
|
color,
|
|
18
17
|
name,
|
|
19
|
-
subtitle
|
|
18
|
+
subtitle,
|
|
19
|
+
viewMode,
|
|
20
|
+
subcategory,
|
|
21
|
+
scope
|
|
20
22
|
} = _ref;
|
|
21
23
|
return /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
22
24
|
item: true,
|
|
@@ -26,16 +28,12 @@ const CustomTooltipDisplayRow = _ref => {
|
|
|
26
28
|
alignItems: "center"
|
|
27
29
|
}, /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
28
30
|
item: true
|
|
29
|
-
}, customAvatar || /*#__PURE__*/_react.default.createElement(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
style: {
|
|
36
|
-
color: "inherit"
|
|
37
|
-
}
|
|
38
|
-
}))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
31
|
+
}, customAvatar || /*#__PURE__*/_react.default.createElement(_atoms.CategoriesAvatar, {
|
|
32
|
+
viewMode: viewMode,
|
|
33
|
+
color: color,
|
|
34
|
+
subcategory: subcategory,
|
|
35
|
+
scope: scope
|
|
36
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
39
37
|
item: true,
|
|
40
38
|
container: true,
|
|
41
39
|
direction: "column",
|
|
@@ -36,7 +36,8 @@ const findObjectValuesSum = object => Object.values(object).reduce((sum, value)
|
|
|
36
36
|
const buildGroupedChartData = _ref => {
|
|
37
37
|
let {
|
|
38
38
|
groupedEmissions,
|
|
39
|
-
buildRealDataObj
|
|
39
|
+
buildRealDataObj,
|
|
40
|
+
viewMode
|
|
40
41
|
} = _ref;
|
|
41
42
|
return groupedEmissions.map((emissionsArray, idx) => {
|
|
42
43
|
const subcategoriesObj = buildRealDataObj(emissionsArray, _subcategories.allSubcategoriesWithOther);
|
|
@@ -59,7 +60,8 @@ const buildGroupedChartData = _ref => {
|
|
|
59
60
|
warning: buildWarningObj(),
|
|
60
61
|
id: "emissions-chart-group-".concat(idx),
|
|
61
62
|
emissionsSumTons: (0, _otherHelpers.sumTonsCo2e)(emissionsArray),
|
|
62
|
-
totalEmissionsSumTons: findObjectValuesSum(subcategoriesObj)
|
|
63
|
+
totalEmissionsSumTons: findObjectValuesSum(subcategoriesObj),
|
|
64
|
+
viewMode
|
|
63
65
|
});
|
|
64
66
|
});
|
|
65
67
|
};
|
|
@@ -212,7 +214,8 @@ const EmissionsChart = _ref10 => {
|
|
|
212
214
|
const buildChartData = () => {
|
|
213
215
|
const preliminaryChartData = buildGroupedChartData({
|
|
214
216
|
groupedEmissions,
|
|
215
|
-
buildRealDataObj
|
|
217
|
+
buildRealDataObj,
|
|
218
|
+
viewMode
|
|
216
219
|
});
|
|
217
220
|
const convertChartDataObject = (chartDataObj, converter) => Object.fromEntries(Object.entries(chartDataObj).map(_ref11 => {
|
|
218
221
|
let [key, value] = _ref11;
|
|
@@ -273,7 +276,9 @@ const EmissionsChart = _ref10 => {
|
|
|
273
276
|
chartRef: chartRef,
|
|
274
277
|
type: type,
|
|
275
278
|
displayUnitLabel: isPercentageChart ? "%" : displayUnit || displayUnitLabel,
|
|
276
|
-
chartArray: chartArray,
|
|
279
|
+
chartArray: chartArray.map(obj => _objectSpread(_objectSpread({}, obj), {}, {
|
|
280
|
+
viewMode
|
|
281
|
+
})),
|
|
277
282
|
aspect: aspect,
|
|
278
283
|
showTooltip: showTooltip
|
|
279
284
|
})));
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.symbol.description.js");
|
|
4
3
|
require("core-js/modules/es.object.assign.js");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
require("core-js/modules/es.
|
|
10
|
-
require("core-js/modules/es.
|
|
11
|
-
require("core-js/modules/esnext.string.replace-all.js");
|
|
12
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
8
|
+
require("core-js/modules/es.array.reduce.js");
|
|
9
|
+
require("core-js/modules/es.symbol.description.js");
|
|
13
10
|
var _react = _interopRequireDefault(require("react"));
|
|
14
11
|
var _material = require("@mui/material");
|
|
15
12
|
var _atoms = require("@aclymatepackages/atoms");
|
|
@@ -17,8 +14,6 @@ var _formatters = require("@aclymatepackages/formatters");
|
|
|
17
14
|
var _themes = require("@aclymatepackages/themes");
|
|
18
15
|
var _CustomTooltipDisplayRow = _interopRequireDefault(require("./CustomTooltipDisplayRow"));
|
|
19
16
|
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
20
|
-
const _excluded = ["label", "trendline", "emissionsSumTons", "projectedEmissionsSumTons", "id"],
|
|
21
|
-
_excluded2 = ["subcategory"];
|
|
22
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
18
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
24
19
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -26,8 +21,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
26
21
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
22
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
28
23
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
29
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
30
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
31
24
|
const StatusDisplay = _ref => {
|
|
32
25
|
let {
|
|
33
26
|
dataArray,
|
|
@@ -74,85 +67,52 @@ const StatusDisplay = _ref => {
|
|
|
74
67
|
}, tooltip)))))));
|
|
75
68
|
};
|
|
76
69
|
const EmissionsCustomTooltip = _ref2 => {
|
|
77
|
-
var _payload$;
|
|
78
70
|
let {
|
|
79
|
-
payload,
|
|
71
|
+
payload: passedPayload,
|
|
80
72
|
categoriesArray,
|
|
81
73
|
labelAnnotation = "",
|
|
82
74
|
dataArray = [],
|
|
83
75
|
displayUnitLabel
|
|
84
76
|
} = _ref2;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
};
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
emissionsSumTons,
|
|
98
|
-
projectedEmissionsSumTons,
|
|
99
|
-
id
|
|
100
|
-
} = _ref3,
|
|
101
|
-
graphValues = _objectWithoutProperties(_ref3, _excluded);
|
|
102
|
-
const cleanLabel = label.replaceAll(/[*]/gi, "");
|
|
103
|
-
const filteredFormattedGraphValuesArray = Object.entries(graphValues).filter(_ref4 => {
|
|
104
|
-
let [_, value] = _ref4;
|
|
105
|
-
return value;
|
|
106
|
-
}).map(_ref5 => {
|
|
107
|
-
let [key, value] = _ref5;
|
|
108
|
-
const [subcategory, projected] = key.split("_");
|
|
109
|
-
return {
|
|
110
|
-
subcategory,
|
|
111
|
-
projected: !!projected,
|
|
112
|
-
value
|
|
113
|
-
};
|
|
114
|
-
});
|
|
115
|
-
const uniqueSubcategories = [...new Set(filteredFormattedGraphValuesArray.map(_ref6 => {
|
|
77
|
+
if (!passedPayload.length) {
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
79
|
+
}
|
|
80
|
+
const buildSubtitle = carbonValue => "".concat((0, _formatters.formatDecimal)(carbonValue), " ").concat(displayUnitLabel, " CO2");
|
|
81
|
+
const {
|
|
82
|
+
payload: columnDetails
|
|
83
|
+
} = passedPayload[0];
|
|
84
|
+
const {
|
|
85
|
+
label = "",
|
|
86
|
+
id
|
|
87
|
+
} = columnDetails || {};
|
|
88
|
+
const payloadDisplayArray = passedPayload.filter(_ref3 => {
|
|
116
89
|
let {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const subcategoryDisplayArray = uniqueSubcategories.map(subcategory => {
|
|
122
|
-
var _filteredFormattedGra, _filteredFormattedGra2;
|
|
123
|
-
const realValue = (_filteredFormattedGra = filteredFormattedGraphValuesArray.find(graphValue => graphValue.subcategory === subcategory && !graphValue.projected)) === null || _filteredFormattedGra === void 0 ? void 0 : _filteredFormattedGra.value;
|
|
124
|
-
const projectedValue = (_filteredFormattedGra2 = filteredFormattedGraphValuesArray.find(graphValue => graphValue.subcategory === subcategory && !!graphValue.projected)) === null || _filteredFormattedGra2 === void 0 ? void 0 : _filteredFormattedGra2.value;
|
|
125
|
-
return {
|
|
126
|
-
subcategory,
|
|
127
|
-
realValue,
|
|
128
|
-
projectedValue,
|
|
129
|
-
subtitle: buildSubtitle(realValue, projectedValue)
|
|
130
|
-
};
|
|
90
|
+
value,
|
|
91
|
+
dataKey
|
|
92
|
+
} = _ref3;
|
|
93
|
+
return !!value && dataKey !== "trendline";
|
|
131
94
|
});
|
|
132
|
-
const
|
|
95
|
+
const formattedDisplayArray = payloadDisplayArray.map(_ref4 => {
|
|
133
96
|
let {
|
|
97
|
+
dataKey,
|
|
98
|
+
value
|
|
99
|
+
} = _ref4;
|
|
100
|
+
const chartSubcategory = categoriesArray.find(_ref5 => {
|
|
101
|
+
let {
|
|
134
102
|
subcategory
|
|
135
|
-
} =
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
name
|
|
142
|
-
} = categoriesArray.find(categoryObj => categoryObj.subcategory === subcategory) || {};
|
|
143
|
-
return _objectSpread({
|
|
144
|
-
subcategory,
|
|
145
|
-
Icon,
|
|
146
|
-
icon,
|
|
147
|
-
color,
|
|
148
|
-
name
|
|
149
|
-
}, otherProps);
|
|
150
|
-
}).filter(_ref8 => {
|
|
151
|
-
let {
|
|
152
|
-
color
|
|
153
|
-
} = _ref8;
|
|
154
|
-
return color;
|
|
103
|
+
} = _ref5;
|
|
104
|
+
return subcategory === dataKey;
|
|
105
|
+
});
|
|
106
|
+
return _objectSpread(_objectSpread({}, chartSubcategory), {}, {
|
|
107
|
+
subtitle: buildSubtitle(value)
|
|
108
|
+
});
|
|
155
109
|
});
|
|
110
|
+
const emissionsSumTons = payloadDisplayArray.reduce((sum, _ref6) => {
|
|
111
|
+
let {
|
|
112
|
+
value
|
|
113
|
+
} = _ref6;
|
|
114
|
+
return value + sum;
|
|
115
|
+
}, 0);
|
|
156
116
|
return /*#__PURE__*/_react.default.createElement(_atoms.DefaultPaper, {
|
|
157
117
|
style: {
|
|
158
118
|
zIndex: 99999,
|
|
@@ -167,10 +127,10 @@ const EmissionsCustomTooltip = _ref2 => {
|
|
|
167
127
|
}, /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
168
128
|
variant: "h6",
|
|
169
129
|
color: "textPrimary"
|
|
170
|
-
}, "".concat(
|
|
130
|
+
}, "".concat(label, " Emissions")), /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
171
131
|
variant: "subtitle2",
|
|
172
132
|
color: "textSecondary"
|
|
173
|
-
}, "".concat(buildSubtitle(emissionsSumTons
|
|
133
|
+
}, "".concat(buildSubtitle(emissionsSumTons), " ").concat(labelAnnotation))), formattedDisplayArray.map((displayData, idx) => /*#__PURE__*/_react.default.createElement(_CustomTooltipDisplayRow.default, _extends({
|
|
174
134
|
key: "tooltip-display-row-".concat(idx)
|
|
175
135
|
}, displayData))), /*#__PURE__*/_react.default.createElement(StatusDisplay, {
|
|
176
136
|
id: id,
|
|
@@ -30,9 +30,10 @@ const PieChartCustomTooltip = _ref => {
|
|
|
30
30
|
const {
|
|
31
31
|
name,
|
|
32
32
|
emissionPercentage,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
scope,
|
|
34
|
+
subcategory,
|
|
35
|
+
viewMode,
|
|
36
|
+
color
|
|
36
37
|
} = payload;
|
|
37
38
|
return /*#__PURE__*/_react.default.createElement(_atoms.DefaultPaper, null, /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
38
39
|
container: true,
|
|
@@ -40,16 +41,12 @@ const PieChartCustomTooltip = _ref => {
|
|
|
40
41
|
alignItems: "center"
|
|
41
42
|
}, /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
42
43
|
item: true
|
|
43
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
style: {
|
|
50
|
-
color: "inherit"
|
|
51
|
-
}
|
|
52
|
-
}))), /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_atoms.CategoriesAvatar, {
|
|
45
|
+
scope: scope,
|
|
46
|
+
subcategory: subcategory,
|
|
47
|
+
viewMode: viewMode,
|
|
48
|
+
color: color
|
|
49
|
+
})), /*#__PURE__*/_react.default.createElement(_material.Grid, {
|
|
53
50
|
item: true
|
|
54
51
|
}, /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
55
52
|
variant: "subtitle1",
|
|
@@ -92,6 +89,7 @@ const EmissionsPieChart = _ref2 => {
|
|
|
92
89
|
const emissionsWithThisCategory = emissions.filter(filterFunction(subcategory));
|
|
93
90
|
const categoryEmissionsSum = (0, _otherHelpers.sumTonsCo2e)(emissionsWithThisCategory);
|
|
94
91
|
return _objectSpread(_objectSpread({}, subcategoryObj), {}, {
|
|
92
|
+
viewMode,
|
|
95
93
|
emissionPercentage: categoryEmissionsSum / emissionsSum * 100
|
|
96
94
|
});
|
|
97
95
|
});
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aclymatepackages/modules",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "Aclymate modules",
|
|
5
5
|
"author": "William Loopesko",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@aclymatepackages/array-immutability-helpers": "^1.0.0",
|
|
9
|
-
"@aclymatepackages/atoms": "^1.0.
|
|
9
|
+
"@aclymatepackages/atoms": "^1.0.14",
|
|
10
10
|
"@aclymatepackages/chart-helpers": "^1.0.10",
|
|
11
11
|
"@aclymatepackages/converters": "^1.0.0",
|
|
12
12
|
"@aclymatepackages/emissions-calcs": "^1.1.1",
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import { Grid, Typography
|
|
3
|
+
import { Grid, Typography } from "@mui/material";
|
|
4
4
|
|
|
5
|
+
import { CategoriesAvatar } from "@aclymatepackages/atoms";
|
|
5
6
|
import { ucFirstLetters } from "@aclymatepackages/formatters";
|
|
6
7
|
|
|
7
8
|
const CustomTooltipDisplayRow = ({
|
|
8
9
|
category,
|
|
9
|
-
Icon,
|
|
10
|
-
icon,
|
|
11
10
|
customAvatar,
|
|
12
11
|
color,
|
|
13
12
|
name,
|
|
14
13
|
subtitle,
|
|
14
|
+
viewMode,
|
|
15
|
+
subcategory,
|
|
16
|
+
scope,
|
|
15
17
|
}) => (
|
|
16
18
|
<Grid item container spacing={1} wrap="nowrap" alignItems="center">
|
|
17
19
|
<Grid item>
|
|
18
20
|
{customAvatar || (
|
|
19
|
-
<
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
<CategoriesAvatar
|
|
22
|
+
viewMode={viewMode}
|
|
23
|
+
color={color}
|
|
24
|
+
subcategory={subcategory}
|
|
25
|
+
scope={scope}
|
|
26
|
+
/>
|
|
23
27
|
)}
|
|
24
28
|
</Grid>
|
|
25
29
|
<Grid item container direction="column" wrap="nowrap">
|
|
@@ -37,7 +37,11 @@ dayjs.extend(dayOfYear);
|
|
|
37
37
|
const findObjectValuesSum = (object) =>
|
|
38
38
|
Object.values(object).reduce((sum, value) => sum + value, 0);
|
|
39
39
|
|
|
40
|
-
const buildGroupedChartData = ({
|
|
40
|
+
const buildGroupedChartData = ({
|
|
41
|
+
groupedEmissions,
|
|
42
|
+
buildRealDataObj,
|
|
43
|
+
viewMode,
|
|
44
|
+
}) => {
|
|
41
45
|
return groupedEmissions.map((emissionsArray, idx) => {
|
|
42
46
|
const subcategoriesObj = buildRealDataObj(
|
|
43
47
|
emissionsArray,
|
|
@@ -63,6 +67,7 @@ const buildGroupedChartData = ({ groupedEmissions, buildRealDataObj }) => {
|
|
|
63
67
|
id: `emissions-chart-group-${idx}`,
|
|
64
68
|
emissionsSumTons: sumTonsCo2e(emissionsArray),
|
|
65
69
|
totalEmissionsSumTons: findObjectValuesSum(subcategoriesObj),
|
|
70
|
+
viewMode,
|
|
66
71
|
};
|
|
67
72
|
});
|
|
68
73
|
};
|
|
@@ -214,6 +219,7 @@ const EmissionsChart = ({
|
|
|
214
219
|
const preliminaryChartData = buildGroupedChartData({
|
|
215
220
|
groupedEmissions,
|
|
216
221
|
buildRealDataObj,
|
|
222
|
+
viewMode,
|
|
217
223
|
});
|
|
218
224
|
|
|
219
225
|
const convertChartDataObject = (chartDataObj, converter) =>
|
|
@@ -293,7 +299,7 @@ const EmissionsChart = ({
|
|
|
293
299
|
displayUnitLabel={
|
|
294
300
|
isPercentageChart ? "%" : displayUnit || displayUnitLabel
|
|
295
301
|
}
|
|
296
|
-
chartArray={chartArray}
|
|
302
|
+
chartArray={chartArray.map((obj) => ({ ...obj, viewMode }))}
|
|
297
303
|
aspect={aspect}
|
|
298
304
|
showTooltip={showTooltip}
|
|
299
305
|
/>
|
|
@@ -44,78 +44,40 @@ const StatusDisplay = ({ dataArray, id }) => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
const EmissionsCustomTooltip = ({
|
|
47
|
-
payload,
|
|
47
|
+
payload: passedPayload,
|
|
48
48
|
categoriesArray,
|
|
49
49
|
labelAnnotation = "",
|
|
50
50
|
dataArray = [],
|
|
51
51
|
displayUnitLabel,
|
|
52
52
|
}) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)} ${displayUnitLabel} CO2`;
|
|
57
|
-
|
|
58
|
-
if (!projectedCarbonVolume) {
|
|
59
|
-
return baseSubtitle;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return `${baseSubtitle} (${formatDecimal(
|
|
63
|
-
projectedCarbonVolume
|
|
64
|
-
)} projected)`;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const columnDetails = payload?.[0]?.payload;
|
|
68
|
-
const {
|
|
69
|
-
label = "",
|
|
70
|
-
trendline,
|
|
71
|
-
emissionsSumTons,
|
|
72
|
-
projectedEmissionsSumTons,
|
|
73
|
-
id,
|
|
74
|
-
...graphValues
|
|
75
|
-
} = columnDetails || {};
|
|
76
|
-
const cleanLabel = label.replaceAll(/[*]/gi, "");
|
|
53
|
+
if (!passedPayload.length) {
|
|
54
|
+
return <></>;
|
|
55
|
+
}
|
|
77
56
|
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
.map(([key, value]) => {
|
|
81
|
-
const [subcategory, projected] = key.split("_");
|
|
82
|
-
return { subcategory, projected: !!projected, value };
|
|
83
|
-
});
|
|
57
|
+
const buildSubtitle = (carbonValue) =>
|
|
58
|
+
`${formatDecimal(carbonValue)} ${displayUnitLabel} CO2`;
|
|
84
59
|
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
filteredFormattedGraphValuesArray.map(({ subcategory }) => subcategory)
|
|
88
|
-
),
|
|
89
|
-
];
|
|
60
|
+
const { payload: columnDetails } = passedPayload[0];
|
|
61
|
+
const { label = "", id } = columnDetails || {};
|
|
90
62
|
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
graphValue.subcategory === subcategory && !graphValue.projected
|
|
95
|
-
)?.value;
|
|
63
|
+
const payloadDisplayArray = passedPayload.filter(
|
|
64
|
+
({ value, dataKey }) => !!value && dataKey !== "trendline"
|
|
65
|
+
);
|
|
96
66
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
67
|
+
const formattedDisplayArray = payloadDisplayArray.map(
|
|
68
|
+
({ dataKey, value }) => {
|
|
69
|
+
const chartSubcategory = categoriesArray.find(
|
|
70
|
+
({ subcategory }) => subcategory === dataKey
|
|
71
|
+
);
|
|
101
72
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
projectedValue,
|
|
106
|
-
subtitle: buildSubtitle(realValue, projectedValue),
|
|
107
|
-
};
|
|
108
|
-
});
|
|
73
|
+
return { ...chartSubcategory, subtitle: buildSubtitle(value) };
|
|
74
|
+
}
|
|
75
|
+
);
|
|
109
76
|
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
(categoryObj) => categoryObj.subcategory === subcategory
|
|
115
|
-
) || {};
|
|
116
|
-
return { subcategory, Icon, icon, color, name, ...otherProps };
|
|
117
|
-
})
|
|
118
|
-
.filter(({ color }) => color);
|
|
77
|
+
const emissionsSumTons = payloadDisplayArray.reduce(
|
|
78
|
+
(sum, { value }) => value + sum,
|
|
79
|
+
0
|
|
80
|
+
);
|
|
119
81
|
|
|
120
82
|
return (
|
|
121
83
|
<DefaultPaper style={{ zIndex: 99999, borderColor: "transparent" }}>
|
|
@@ -124,15 +86,12 @@ const EmissionsCustomTooltip = ({
|
|
|
124
86
|
<Typography
|
|
125
87
|
variant="h6"
|
|
126
88
|
color="textPrimary"
|
|
127
|
-
>{`${
|
|
89
|
+
>{`${label} Emissions`}</Typography>
|
|
128
90
|
<Typography variant="subtitle2" color="textSecondary">
|
|
129
|
-
{`${buildSubtitle(
|
|
130
|
-
emissionsSumTons,
|
|
131
|
-
projectedEmissionsSumTons
|
|
132
|
-
)} ${labelAnnotation}`}
|
|
91
|
+
{`${buildSubtitle(emissionsSumTons)} ${labelAnnotation}`}
|
|
133
92
|
</Typography>
|
|
134
93
|
</Grid>
|
|
135
|
-
{
|
|
94
|
+
{formattedDisplayArray.map((displayData, idx) => (
|
|
136
95
|
<CustomTooltipDisplayRow
|
|
137
96
|
key={`tooltip-display-row-${idx}`}
|
|
138
97
|
{...displayData}
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
Cell,
|
|
9
9
|
} from "recharts";
|
|
10
10
|
|
|
11
|
-
import { Typography, Grid
|
|
11
|
+
import { Typography, Grid } from "@mui/material";
|
|
12
12
|
|
|
13
|
-
import { DefaultPaper } from "@aclymatepackages/atoms";
|
|
13
|
+
import { DefaultPaper, CategoriesAvatar } from "@aclymatepackages/atoms";
|
|
14
14
|
import { formatDecimal } from "@aclymatepackages/formatters";
|
|
15
15
|
import { sumTonsCo2e } from "@aclymatepackages/other-helpers";
|
|
16
16
|
import {
|
|
@@ -21,16 +21,19 @@ import {
|
|
|
21
21
|
const PieChartCustomTooltip = ({ payload: passedPayload }) => {
|
|
22
22
|
const [payloadObj] = passedPayload;
|
|
23
23
|
const { payload = {} } = payloadObj || [{}];
|
|
24
|
-
const { name, emissionPercentage,
|
|
24
|
+
const { name, emissionPercentage, scope, subcategory, viewMode, color } =
|
|
25
|
+
payload;
|
|
25
26
|
|
|
26
27
|
return (
|
|
27
28
|
<DefaultPaper>
|
|
28
29
|
<Grid container spacing={2} alignItems="center">
|
|
29
30
|
<Grid item>
|
|
30
|
-
<
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
<CategoriesAvatar
|
|
32
|
+
scope={scope}
|
|
33
|
+
subcategory={subcategory}
|
|
34
|
+
viewMode={viewMode}
|
|
35
|
+
color={color}
|
|
36
|
+
/>
|
|
34
37
|
</Grid>
|
|
35
38
|
<Grid item>
|
|
36
39
|
<Typography variant="subtitle1" color="textPrimary">
|
|
@@ -84,6 +87,7 @@ const EmissionsPieChart = ({
|
|
|
84
87
|
|
|
85
88
|
return {
|
|
86
89
|
...subcategoryObj,
|
|
90
|
+
viewMode,
|
|
87
91
|
emissionPercentage: (categoryEmissionsSum / emissionsSum) * 100,
|
|
88
92
|
};
|
|
89
93
|
});
|