@electrolux-oss/plugin-infrawallet 0.1.11 → 0.1.12
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/api/InfraWalletApiClient.esm.js +4 -2
- package/dist/api/InfraWalletApiClient.esm.js.map +1 -1
- package/dist/api/functions.esm.js +15 -3
- package/dist/api/functions.esm.js.map +1 -1
- package/dist/components/ColumnsChartComponent/ColumnsChartComponent.esm.js +142 -173
- package/dist/components/ColumnsChartComponent/ColumnsChartComponent.esm.js.map +1 -1
- package/dist/components/CostReportsTableComponent/CostReportsTableComponent.esm.js +147 -91
- package/dist/components/CostReportsTableComponent/CostReportsTableComponent.esm.js.map +1 -1
- package/dist/components/EntityInfraWalletCard/EntityInfraWalletCard.esm.js +254 -0
- package/dist/components/EntityInfraWalletCard/EntityInfraWalletCard.esm.js.map +1 -0
- package/dist/components/EntityInfraWalletCard/index.esm.js +2 -0
- package/dist/components/EntityInfraWalletCard/index.esm.js.map +1 -0
- package/dist/components/ErrorsAlertComponent/ErrorsAlertComponent.esm.js +4 -4
- package/dist/components/ErrorsAlertComponent/ErrorsAlertComponent.esm.js.map +1 -1
- package/dist/components/FiltersComponent/FiltersComponent.esm.js +27 -27
- package/dist/components/FiltersComponent/FiltersComponent.esm.js.map +1 -1
- package/dist/components/InfraWalletAppData.esm.js +9 -0
- package/dist/components/InfraWalletAppData.esm.js.map +1 -0
- package/dist/components/MetricConfigurationComponent/MetricConfigurationComponent.esm.js +22 -10
- package/dist/components/MetricConfigurationComponent/MetricConfigurationComponent.esm.js.map +1 -1
- package/dist/components/PieChartComponent/PieChartComponent.esm.js +63 -59
- package/dist/components/PieChartComponent/PieChartComponent.esm.js.map +1 -1
- package/dist/components/ProviderIcons/ProviderIcons.esm.js +8 -8
- package/dist/components/ProviderIcons/ProviderIcons.esm.js.map +1 -1
- package/dist/components/ReportsComponent/ReportsComponent.esm.js +24 -20
- package/dist/components/ReportsComponent/ReportsComponent.esm.js.map +1 -1
- package/dist/components/SettingsComponent/SettingsComponent.esm.js +4 -4
- package/dist/components/SettingsComponent/SettingsComponent.esm.js.map +1 -1
- package/dist/components/index.esm.js +36 -0
- package/dist/components/index.esm.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.esm.js +2 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/plugin.esm.js +10 -2
- package/dist/plugin.esm.js.map +1 -1
- package/package.json +9 -11
|
@@ -1,70 +1,74 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import Paper from '@mui/material/Paper';
|
|
2
|
+
import Skeleton from '@mui/material/Skeleton';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
import { PieChart, useDrawingArea } from '@mui/x-charts';
|
|
4
5
|
import React from 'react';
|
|
5
|
-
import
|
|
6
|
+
import { formatCurrency } from '../../api/functions.esm.js';
|
|
6
7
|
import { colorList } from '../constants.esm.js';
|
|
7
8
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const StyledText = styled("text")(({ theme }) => ({
|
|
10
|
+
fill: theme.palette.text.primary,
|
|
11
|
+
textAnchor: "middle",
|
|
12
|
+
dominantBaseline: "central",
|
|
13
|
+
fontSize: "1.2em"
|
|
14
|
+
}));
|
|
15
|
+
function PieCenterLabel({ children }) {
|
|
16
|
+
const { width, height, left, top } = useDrawingArea();
|
|
17
|
+
return /* @__PURE__ */ React.createElement(StyledText, { x: left + width / 2, y: top + height / 2 }, children);
|
|
18
|
+
}
|
|
19
|
+
const PieChartComponent = ({
|
|
20
|
+
categories,
|
|
21
|
+
series,
|
|
22
|
+
height,
|
|
23
|
+
highlightedItem,
|
|
24
|
+
highlightedItemSetter
|
|
25
|
+
}) => {
|
|
26
|
+
const data = [];
|
|
27
|
+
let total = 0;
|
|
28
|
+
if (series) {
|
|
29
|
+
for (let i = 0; i < series.length; i++) {
|
|
30
|
+
const label = categories ? categories[i] : "No label";
|
|
31
|
+
data.push({ id: label, value: series[i], label });
|
|
32
|
+
total += series[i];
|
|
13
33
|
}
|
|
14
|
-
}
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
separator: ""
|
|
40
|
-
})}`;
|
|
41
|
-
}
|
|
34
|
+
}
|
|
35
|
+
const onHighlightChange = (highlighted) => {
|
|
36
|
+
if (highlighted === null) {
|
|
37
|
+
highlightedItemSetter(void 0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const dataIndex = highlighted.dataIndex;
|
|
41
|
+
if (categories) {
|
|
42
|
+
highlightedItemSetter(categories[dataIndex]);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return /* @__PURE__ */ React.createElement(Paper, { sx: { alignContent: "center", height: height ? height : 300 } }, series === void 0 ? /* @__PURE__ */ React.createElement("div", { style: { width: "60%", margin: "auto" } }, /* @__PURE__ */ React.createElement(Skeleton, null), /* @__PURE__ */ React.createElement(Skeleton, null), /* @__PURE__ */ React.createElement(Skeleton, null)) : /* @__PURE__ */ React.createElement(
|
|
46
|
+
PieChart,
|
|
47
|
+
{
|
|
48
|
+
margin: { left: 100 },
|
|
49
|
+
series: [
|
|
50
|
+
{
|
|
51
|
+
id: "cost-summary",
|
|
52
|
+
data,
|
|
53
|
+
valueFormatter: (value) => {
|
|
54
|
+
return formatCurrency(value.value);
|
|
55
|
+
},
|
|
56
|
+
highlightScope: { highlight: "item", fade: "global" },
|
|
57
|
+
innerRadius: 70,
|
|
58
|
+
outerRadius: 120
|
|
42
59
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
labels: {
|
|
48
|
-
show: true,
|
|
49
|
-
value: {
|
|
50
|
-
formatter: (val) => {
|
|
51
|
-
const floatVal = parseFloat(val);
|
|
52
|
-
return `$${humanFormat(floatVal, {
|
|
53
|
-
scale: customScale,
|
|
54
|
-
separator: ""
|
|
55
|
-
})}`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
+
],
|
|
61
|
+
slotProps: {
|
|
62
|
+
legend: {
|
|
63
|
+
hidden: true
|
|
60
64
|
}
|
|
61
65
|
},
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
colors: colorList,
|
|
67
|
+
highlightedItem: highlightedItem ? { seriesId: "cost-summary", dataIndex: categories == null ? void 0 : categories.indexOf(highlightedItem) } : null,
|
|
68
|
+
onHighlightChange
|
|
64
69
|
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return /* @__PURE__ */ React.createElement(Paper, { className: classes.fixedHeightPaper }, /* @__PURE__ */ React.createElement(Chart, { options: state.options, series: state.series, type: "donut", height: height ? height : 300 }));
|
|
70
|
+
/* @__PURE__ */ React.createElement(PieCenterLabel, null, "Total: ", formatCurrency(total))
|
|
71
|
+
));
|
|
68
72
|
};
|
|
69
73
|
|
|
70
74
|
export { PieChartComponent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieChartComponent.esm.js","sources":["../../../src/components/PieChartComponent/PieChartComponent.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"PieChartComponent.esm.js","sources":["../../../src/components/PieChartComponent/PieChartComponent.tsx"],"sourcesContent":["import Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport { styled } from '@mui/material/styles';\nimport { HighlightItemData, PieChart, useDrawingArea } from '@mui/x-charts';\nimport React, { FC } from 'react';\nimport { formatCurrency } from '../../api/functions';\nimport { colorList } from '../constants';\nimport { PieChartComponentProps } from '../types';\n\nconst StyledText = styled('text')(({ theme }) => ({\n fill: theme.palette.text.primary,\n textAnchor: 'middle',\n dominantBaseline: 'central',\n fontSize: '1.2em',\n}));\n\nfunction PieCenterLabel({ children }: { children: React.ReactNode }) {\n const { width, height, left, top } = useDrawingArea();\n return (\n <StyledText x={left + width / 2} y={top + height / 2}>\n {children}\n </StyledText>\n );\n}\n\nexport const PieChartComponent: FC<PieChartComponentProps> = ({\n categories,\n series,\n height,\n highlightedItem,\n highlightedItemSetter,\n}) => {\n const data = [];\n let total = 0;\n if (series) {\n for (let i = 0; i < series.length; i++) {\n const label = categories ? categories[i] : 'No label';\n data.push({ id: label, value: series[i], label: label });\n total += series[i];\n }\n }\n\n const onHighlightChange = (highlighted: HighlightItemData | null) => {\n if (highlighted === null) {\n highlightedItemSetter(undefined);\n return;\n }\n\n const dataIndex = highlighted.dataIndex as number;\n if (categories) {\n highlightedItemSetter(categories[dataIndex]);\n }\n };\n\n return (\n <Paper sx={{ alignContent: 'center', height: height ? height : 300 }}>\n {series === undefined ? (\n <div style={{ width: '60%', margin: 'auto' }}>\n <Skeleton />\n <Skeleton />\n <Skeleton />\n </div>\n ) : (\n <PieChart\n margin={{ left: 100 }}\n series={[\n {\n id: 'cost-summary',\n data: data,\n valueFormatter: value => {\n return formatCurrency(value.value);\n },\n highlightScope: { highlight: 'item', fade: 'global' },\n innerRadius: 70,\n outerRadius: 120,\n },\n ]}\n slotProps={{\n legend: {\n hidden: true,\n },\n }}\n colors={colorList}\n highlightedItem={\n highlightedItem ? { seriesId: 'cost-summary', dataIndex: categories?.indexOf(highlightedItem) } : null\n }\n onHighlightChange={onHighlightChange}\n >\n <PieCenterLabel>Total: {formatCurrency(total)}</PieCenterLabel>\n </PieChart>\n )}\n </Paper>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SvgIcon } from '@material-ui/core';
|
|
3
|
-
import CloudQueueIcon from '@
|
|
3
|
+
import CloudQueueIcon from '@mui/icons-material/CloudQueue';
|
|
4
4
|
|
|
5
5
|
const AWSIcon = () => {
|
|
6
6
|
return (
|
|
@@ -300,19 +300,19 @@ const DatadogIcon = () => {
|
|
|
300
300
|
))));
|
|
301
301
|
};
|
|
302
302
|
const getProviderIcon = (provider) => {
|
|
303
|
-
if (provider === "AWS") {
|
|
303
|
+
if ((provider == null ? void 0 : provider.toLowerCase()) === "AWS".toLowerCase()) {
|
|
304
304
|
return /* @__PURE__ */ React.createElement(AWSIcon, null);
|
|
305
|
-
} else if (provider === "Azure") {
|
|
305
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "Azure".toLowerCase()) {
|
|
306
306
|
return /* @__PURE__ */ React.createElement(AzureIcon, null);
|
|
307
|
-
} else if (provider === "GCP") {
|
|
307
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "GCP".toLowerCase()) {
|
|
308
308
|
return /* @__PURE__ */ React.createElement(GCPIcon, null);
|
|
309
|
-
} else if (provider === "MongoAtlas") {
|
|
309
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "MongoAtlas".toLowerCase()) {
|
|
310
310
|
return /* @__PURE__ */ React.createElement(MongoDBIcon, null);
|
|
311
|
-
} else if (provider === "Confluent") {
|
|
311
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "Confluent".toLowerCase()) {
|
|
312
312
|
return /* @__PURE__ */ React.createElement(ConfluentIcon, null);
|
|
313
|
-
} else if (provider === "Grafana") {
|
|
313
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "Grafana".toLowerCase()) {
|
|
314
314
|
return /* @__PURE__ */ React.createElement(GrafanaIcon, null);
|
|
315
|
-
} else if (provider === "Datadog") {
|
|
315
|
+
} else if ((provider == null ? void 0 : provider.toLowerCase()) === "Datadog".toLowerCase()) {
|
|
316
316
|
return /* @__PURE__ */ React.createElement(DatadogIcon, null);
|
|
317
317
|
}
|
|
318
318
|
return /* @__PURE__ */ React.createElement(CloudQueueIcon, null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderIcons.esm.js","sources":["../../../src/components/ProviderIcons/ProviderIcons.tsx"],"sourcesContent":["import React from 'react';\nimport { SvgIcon } from '@material-ui/core';\nimport CloudQueueIcon from '@material-ui/icons/CloudQueue';\n\nconst AWSIcon = () => {\n return (\n // https://github.com/devicons/devicon/blob/master/icons/amazonwebservices/amazonwebservices-original-wordmark.svg\n <SvgIcon>\n <svg viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#252f3e\"\n d=\"M36.379 53.64c0 1.56.168 2.825.465 3.75.336.926.758 1.938 1.347 3.032.207.336.293.672.293.969 0 .418-.254.84-.8 1.261l-2.653 1.77c-.379.25-.758.379-1.093.379-.422 0-.844-.211-1.266-.59a13.28 13.28 0 0 1-1.516-1.98 34.153 34.153 0 0 1-1.304-2.485c-3.282 3.875-7.41 5.813-12.38 5.813-3.535 0-6.355-1.012-8.421-3.032-2.063-2.023-3.114-4.718-3.114-8.086 0-3.578 1.262-6.484 3.833-8.671 2.566-2.192 5.976-3.286 10.316-3.286 1.43 0 2.902.125 4.46.336 1.56.211 3.161.547 4.845.926v-3.074c0-3.2-.676-5.43-1.98-6.734C26.061 32.633 23.788 32 20.546 32c-1.473 0-2.988.168-4.547.547a33.416 33.416 0 0 0-4.547 1.433c-.676.293-1.18.461-1.473.547-.296.082-.507.125-.675.125-.59 0-.883-.422-.883-1.304v-2.063c0-.676.082-1.18.293-1.476.21-.293.59-.586 1.18-.883 1.472-.758 3.242-1.39 5.304-1.895 2.063-.547 4.254-.8 6.57-.8 5.008 0 8.672 1.136 11.032 3.41 2.316 2.273 3.492 5.726 3.492 10.359v13.64Zm-17.094 6.403c1.387 0 2.82-.254 4.336-.758 1.516-.508 2.863-1.433 4-2.695.672-.8 1.18-1.684 1.43-2.695.254-1.012.422-2.23.422-3.665v-1.765a34.401 34.401 0 0 0-3.871-.719 31.816 31.816 0 0 0-3.961-.25c-2.82 0-4.883.547-6.274 1.684-1.387 1.136-2.062 2.734-2.062 4.84 0 1.98.504 3.453 1.558 4.464 1.012 1.051 2.485 1.559 4.422 1.559Zm33.809 4.547c-.758 0-1.262-.125-1.598-.422-.34-.254-.633-.84-.887-1.64L40.715 29.98c-.25-.843-.38-1.39-.38-1.687 0-.672.337-1.05 1.013-1.05h4.125c.8 0 1.347.124 1.644.421.336.25.59.84.84 1.64l7.074 27.876 6.57-27.875c.208-.84.462-1.39.797-1.64.34-.255.93-.423 1.688-.423h3.367c.8 0 1.348.125 1.684.422.336.25.633.84.8 1.64l6.653 28.212 7.285-28.211c.25-.84.547-1.39.84-1.64.336-.255.887-.423 1.644-.423h3.914c.676 0 1.055.336 1.055 1.051 0 .21-.043.422-.086.676-.043.254-.125.59-.293 1.05L80.801 62.57c-.254.84-.547 1.387-.887 1.64-.336.255-.883.423-1.598.423h-3.62c-.801 0-1.348-.13-1.684-.422-.34-.297-.633-.844-.801-1.684l-6.527-27.16-6.485 27.117c-.21.844-.46 1.391-.8 1.684-.337.297-.926.422-1.684.422Zm54.105 1.137c-2.187 0-4.379-.254-6.484-.758-2.106-.504-3.746-1.055-4.84-1.684-.676-.379-1.137-.8-1.305-1.18a2.919 2.919 0 0 1-.254-1.18v-2.148c0-.882.336-1.304.97-1.304.25 0 .503.043.757.129.25.082.629.25 1.05.418a23.102 23.102 0 0 0 4.634 1.476c1.683.336 3.324.504 5.011.504 2.653 0 4.715-.465 6.145-1.39 1.433-.926 2.191-2.274 2.191-4 0-1.18-.379-2.145-1.136-2.946-.758-.8-2.192-1.516-4.254-2.191l-6.106-1.895c-3.074-.969-5.348-2.398-6.734-4.293-1.39-1.855-2.106-3.918-2.106-6.105 0-1.77.38-3.328 1.137-4.676a10.829 10.829 0 0 1 3.031-3.453c1.262-.965 2.696-1.684 4.38-2.188 1.683-.504 3.452-.715 5.304-.715.926 0 1.894.043 2.82.168.969.125 1.852.293 2.738.461.84.211 1.641.422 2.399.676.758.254 1.348.504 1.77.758.59.336 1.011.672 1.261 1.05.254.34.379.802.379 1.391v1.98c0 .884-.336 1.348-.969 1.348-.336 0-.883-.171-1.597-.507-2.403-1.094-5.098-1.641-8.086-1.641-2.399 0-4.293.379-5.598 1.18-1.309.797-1.98 2.02-1.98 3.746 0 1.18.421 2.191 1.261 2.988.844.8 2.403 1.602 4.633 2.316l5.98 1.895c3.032.969 5.22 2.316 6.524 4.043 1.305 1.727 1.938 3.707 1.938 5.895 0 1.812-.38 3.453-1.094 4.882-.758 1.434-1.77 2.696-3.074 3.707-1.305 1.051-2.864 1.809-4.672 2.36-1.895.586-3.875.883-6.024.883Zm0 0\"\n />\n <path\n fill=\"#f90\"\n d=\"M118 73.348c-4.432.063-9.664 1.052-13.621 3.832-1.223.883-1.012 2.062.336 1.894 4.508-.547 14.44-1.726 16.21.547 1.77 2.23-1.976 11.62-3.663 15.79-.504 1.26.59 1.769 1.726.8 7.41-6.231 9.348-19.242 7.832-21.137-.757-.925-4.388-1.79-8.82-1.726zM1.63 75.859c-.927.116-1.347 1.236-.368 2.121 16.508 14.902 38.359 23.872 62.613 23.872 17.305 0 37.43-5.43 51.281-15.66 2.273-1.688.297-4.254-2.02-3.204-15.534 6.57-32.421 9.77-47.788 9.77-22.778 0-44.8-6.273-62.653-16.633-.39-.231-.755-.304-1.064-.266z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst AzureIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/azure/azure-original.svg\n return (\n <SvgIcon>\n <svg viewBox=\"0 0 155 155\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient\n id=\"azure-original-a\"\n x1=\"60.919\"\n y1=\"9.602\"\n x2=\"18.667\"\n y2=\"134.423\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#114A8B\" />\n <stop offset=\"1\" stopColor=\"#0669BC\" />\n </linearGradient>\n <linearGradient\n id=\"azure-original-b\"\n x1=\"74.117\"\n y1=\"67.772\"\n x2=\"64.344\"\n y2=\"71.076\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity=\".3\" />\n <stop offset=\".071\" stopOpacity=\".2\" />\n <stop offset=\".321\" stopOpacity=\".1\" />\n <stop offset=\".623\" stopOpacity=\".05\" />\n <stop offset=\"1\" stopOpacity=\"0\" />\n </linearGradient>\n <linearGradient\n id=\"azure-original-c\"\n x1=\"68.742\"\n y1=\"5.961\"\n x2=\"115.122\"\n y2=\"129.525\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#3CCBF4\" />\n <stop offset=\"1\" stopColor=\"#2892DF\" />\n </linearGradient>\n </defs>\n <path\n d=\"M46.09.002h40.685L44.541 125.137a6.485 6.485 0 01-6.146 4.413H6.733a6.482 6.482 0 01-5.262-2.699 6.474 6.474 0 01-.876-5.848L39.944 4.414A6.488 6.488 0 0146.09 0z\"\n fill=\"url(#azure-original-a)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n <path\n d=\"M97.28 81.607H37.987a2.743 2.743 0 00-1.874 4.751l38.1 35.562a5.991 5.991 0 004.087 1.61h33.574z\"\n fill=\"#0078d4\"\n />\n <path\n d=\"M46.09.002A6.434 6.434 0 0039.93 4.5L.644 120.897a6.469 6.469 0 006.106 8.653h32.48a6.942 6.942 0 005.328-4.531l7.834-23.089 27.985 26.101a6.618 6.618 0 004.165 1.519h36.396l-15.963-45.616-46.533.011L86.922.002z\"\n fill=\"url(#azure-original-b)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n <path\n d=\"M98.055 4.408A6.476 6.476 0 0091.917.002H46.575a6.478 6.478 0 016.137 4.406l39.35 116.594a6.476 6.476 0 01-6.137 8.55h45.344a6.48 6.48 0 006.136-8.55z\"\n fill=\"url(#azure-original-c)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst GCPIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/googlecloud/googlecloud-original.svg\n return (\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path\n fill=\"#ea4535\"\n d=\"M80.6 40.3h.4l-.2-.2 14-14v-.3c-11.8-10.4-28.1-14-43.2-9.5C36.5 20.8 24.9 32.8 20.7 48c.2-.1.5-.2.8-.2 5.2-3.4 11.4-5.4 17.9-5.4 2.2 0 4.3.2 6.4.6.1-.1.2-.1.3-.1 9-9.9 24.2-11.1 34.6-2.6h-.1z\"\n />\n <path\n fill=\"#557ebf\"\n d=\"M108.1 47.8c-2.3-8.5-7.1-16.2-13.8-22.1L80 39.9c6 4.9 9.5 12.3 9.3 20v2.5c16.9 0 16.9 25.2 0 25.2H63.9v20h-.1l.1.2h25.4c14.6.1 27.5-9.3 31.8-23.1 4.3-13.8-1-28.8-13-36.9z\"\n />\n <path fill=\"#36a852\" d=\"M39 107.9h26.3V87.7H39c-1.9 0-3.7-.4-5.4-1.1l-15.2 14.6v.2c6 4.3 13.2 6.6 20.7 6.6z\" />\n <path\n fill=\"#f9bc15\"\n d=\"M40.2 41.9c-14.9.1-28.1 9.3-32.9 22.8-4.8 13.6 0 28.5 11.8 37.3l15.6-14.9c-8.6-3.7-10.6-14.5-4-20.8 6.6-6.4 17.8-4.4 21.7 3.8L68 55.2C61.4 46.9 51.1 42 40.2 42.1z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst MongoDBIcon = () => {\n return (\n // https://github.com/devicons/devicon/blob/master/icons/mongodb/mongodb-original.svg\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#439934\"\n d=\"M88.038 42.812c1.605 4.643 2.761 9.383 3.141 14.296.472 6.095.256 12.147-1.029 18.142-.035.165-.109.32-.164.48-.403.001-.814-.049-1.208.012-3.329.523-6.655 1.065-9.981 1.604-3.438.557-6.881 1.092-10.313 1.687-1.216.21-2.721-.041-3.212 1.641-.014.046-.154.054-.235.08l.166-10.051-.169-24.252 1.602-.275c2.62-.429 5.24-.864 7.862-1.281 3.129-.497 6.261-.98 9.392-1.465 1.381-.215 2.764-.412 4.148-.618z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#45A538\"\n d=\"M61.729 110.054c-1.69-1.453-3.439-2.842-5.059-4.37-8.717-8.222-15.093-17.899-18.233-29.566-.865-3.211-1.442-6.474-1.627-9.792-.13-2.322-.318-4.665-.154-6.975.437-6.144 1.325-12.229 3.127-18.147l.099-.138c.175.233.427.439.516.702 1.759 5.18 3.505 10.364 5.242 15.551 5.458 16.3 10.909 32.604 16.376 48.9.107.318.384.579.583.866l-.87 2.969z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#46A037\"\n d=\"M88.038 42.812c-1.384.206-2.768.403-4.149.616-3.131.485-6.263.968-9.392 1.465-2.622.417-5.242.852-7.862 1.281l-1.602.275-.012-1.045c-.053-.859-.144-1.717-.154-2.576-.069-5.478-.112-10.956-.18-16.434-.042-3.429-.105-6.857-.175-10.285-.043-2.13-.089-4.261-.185-6.388-.052-1.143-.236-2.28-.311-3.423-.042-.657.016-1.319.029-1.979.817 1.583 1.616 3.178 2.456 4.749 1.327 2.484 3.441 4.314 5.344 6.311 7.523 7.892 12.864 17.068 16.193 27.433z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#409433\"\n d=\"M65.036 80.753c.081-.026.222-.034.235-.08.491-1.682 1.996-1.431 3.212-1.641 3.432-.594 6.875-1.13 10.313-1.687 3.326-.539 6.652-1.081 9.981-1.604.394-.062.805-.011 1.208-.012-.622 2.22-1.112 4.488-1.901 6.647-.896 2.449-1.98 4.839-3.131 7.182a49.142 49.142 0 01-6.353 9.763c-1.919 2.308-4.058 4.441-6.202 6.548-1.185 1.165-2.582 2.114-3.882 3.161l-.337-.23-1.214-1.038-1.256-2.753a41.402 41.402 0 01-1.394-9.838l.023-.561.171-2.426c.057-.828.133-1.655.168-2.485.129-2.982.241-5.964.359-8.946z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4FAA41\"\n d=\"M65.036 80.753c-.118 2.982-.23 5.964-.357 8.947-.035.83-.111 1.657-.168 2.485l-.765.289c-1.699-5.002-3.399-9.951-5.062-14.913-2.75-8.209-5.467-16.431-8.213-24.642a4498.887 4498.887 0 00-6.7-19.867c-.105-.31-.407-.552-.617-.826l4.896-9.002c.168.292.39.565.496.879a6167.476 6167.476 0 016.768 20.118c2.916 8.73 5.814 17.467 8.728 26.198.116.349.308.671.491 1.062l.67-.78-.167 10.052z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4AA73C\"\n d=\"M43.155 32.227c.21.274.511.516.617.826a4498.887 4498.887 0 016.7 19.867c2.746 8.211 5.463 16.433 8.213 24.642 1.662 4.961 3.362 9.911 5.062 14.913l.765-.289-.171 2.426-.155.559c-.266 2.656-.49 5.318-.814 7.968-.163 1.328-.509 2.632-.772 3.947-.198-.287-.476-.548-.583-.866-5.467-16.297-10.918-32.6-16.376-48.9a3888.972 3888.972 0 00-5.242-15.551c-.089-.263-.34-.469-.516-.702l3.272-8.84z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#57AE47\"\n d=\"M65.202 70.702l-.67.78c-.183-.391-.375-.714-.491-1.062-2.913-8.731-5.812-17.468-8.728-26.198a6167.476 6167.476 0 00-6.768-20.118c-.105-.314-.327-.588-.496-.879l6.055-7.965c.191.255.463.482.562.769 1.681 4.921 3.347 9.848 5.003 14.778 1.547 4.604 3.071 9.215 4.636 13.813.105.308.47.526.714.786l.012 1.045c.058 8.082.115 16.167.171 24.251z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#60B24F\"\n d=\"M65.021 45.404c-.244-.26-.609-.478-.714-.786-1.565-4.598-3.089-9.209-4.636-13.813-1.656-4.93-3.322-9.856-5.003-14.778-.099-.287-.371-.514-.562-.769 1.969-1.928 3.877-3.925 5.925-5.764 1.821-1.634 3.285-3.386 3.352-5.968.003-.107.059-.214.145-.514l.519 1.306c-.013.661-.072 1.322-.029 1.979.075 1.143.259 2.28.311 3.423.096 2.127.142 4.258.185 6.388.069 3.428.132 6.856.175 10.285.067 5.478.111 10.956.18 16.434.008.861.098 1.718.152 2.577z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#A9AA88\"\n d=\"M62.598 107.085c.263-1.315.609-2.62.772-3.947.325-2.649.548-5.312.814-7.968l.066-.01.066.011a41.402 41.402 0 001.394 9.838c-.176.232-.425.439-.518.701-.727 2.05-1.412 4.116-2.143 6.166-.1.28-.378.498-.574.744l-.747-2.566.87-2.969z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#B6B598\"\n d=\"M62.476 112.621c.196-.246.475-.464.574-.744.731-2.05 1.417-4.115 2.143-6.166.093-.262.341-.469.518-.701l1.255 2.754c-.248.352-.59.669-.728 1.061l-2.404 7.059c-.099.283-.437.483-.663.722l-.695-3.985z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#C2C1A7\"\n d=\"M63.171 116.605c.227-.238.564-.439.663-.722l2.404-7.059c.137-.391.48-.709.728-1.061l1.215 1.037c-.587.58-.913 1.25-.717 2.097l-.369 1.208c-.168.207-.411.387-.494.624-.839 2.403-1.64 4.819-2.485 7.222-.107.305-.404.544-.614.812-.109-1.387-.22-2.771-.331-4.158z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#CECDB7\"\n d=\"M63.503 120.763c.209-.269.506-.508.614-.812.845-2.402 1.646-4.818 2.485-7.222.083-.236.325-.417.494-.624l-.509 5.545c-.136.157-.333.294-.398.477-.575 1.614-1.117 3.24-1.694 4.854-.119.333-.347.627-.525.938-.158-.207-.441-.407-.454-.623-.051-.841-.016-1.688-.013-2.533z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#DBDAC7\"\n d=\"M63.969 123.919c.178-.312.406-.606.525-.938.578-1.613 1.119-3.239 1.694-4.854.065-.183.263-.319.398-.477l.012 3.64-1.218 3.124-1.411-.495z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#EBE9DC\"\n d=\"M65.38 124.415l1.218-3.124.251 3.696-1.469-.572z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#CECDB7\"\n d=\"M67.464 110.898c-.196-.847.129-1.518.717-2.097l.337.23-1.054 1.867z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4FAA41\"\n d=\"M64.316 95.172l-.066-.011-.066.01.155-.559-.023.56z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst ConfluentIcon = () => {\n // https://grafana.com/static/img/logos/confluent-cloud-logo.svg\n return (\n <SvgIcon>\n <svg viewBox=\"0 0 1000 1000\">\n <path\n fill=\"#00AFBA\"\n d=\"M720.81,547.34c20.42-1.1,40.85-1.76,61.27-3.25v-15.7c-20.43-1.49-40.85-2.15-61.27-3.25l-61.28-1.9\n c-35.96-1.11-71.92-1.4-107.88-1.61c-0.08-35.98-0.25-71.96-1.22-107.94l-1.71-61.28c-1.05-20.42-1.65-40.85-3.09-61.27h-17.31\n c-1.44,20.43-2.04,40.85-3.09,61.27l-1.71,61.28c-0.45,16.88-0.67,33.77-0.85,50.65c-6.63-15.53-13.29-31.05-20.17-46.47\n l-25.03-55.95c-8.79-18.47-17.16-37.11-26.31-55.43l-15.99,6.62c6.48,19.42,13.75,38.52,20.59,57.8l21.87,57.26\n c6.04,15.77,12.31,31.45,18.6,47.12c-12.07-11.81-24.15-23.59-36.41-35.21l-44.54-42.12c-15.18-13.7-30.05-27.72-45.51-41.14\n l-12.24,12.23c13.43,15.47,27.45,30.33,41.14,45.52l42.12,44.54c11.62,12.26,23.41,24.35,35.22,36.42\n c-15.67-6.29-31.35-12.56-47.12-18.6l-57.27-21.86c-19.27-6.85-38.37-14.11-57.8-20.6l-6.62,15.99\n c18.32,9.15,36.96,17.52,55.43,26.3l55.96,25.03c15.42,6.88,30.94,13.53,46.47,20.16c-16.88,0.18-33.77,0.39-50.65,0.85\n l-61.27,1.71c-20.42,1.05-40.85,1.65-61.27,3.09v17.3c20.43,1.44,40.85,2.04,61.27,3.1l61.27,1.71\n c35.98,0.97,71.96,1.14,107.94,1.22c0.22,35.96,0.5,71.92,1.61,107.88l1.9,61.27c1.1,20.42,1.76,40.85,3.25,61.27h15.7\n c1.49-20.43,2.15-40.85,3.25-61.27l1.91-61.27c0.53-17.29,0.81-34.58,1.05-51.87c6.84,15.88,13.71,31.75,20.82,47.52l25.21,55.88\n c8.83,18.45,17.26,37.07,26.45,55.37l14.51-6.01c-6.44-19.44-13.64-38.57-20.45-57.86l-21.69-57.34\n c-6.13-16.18-12.49-32.26-18.88-48.33c12.4,12.06,24.83,24.09,37.43,35.94l44.67,41.98c15.22,13.67,30.13,27.64,45.63,41.03\n l11.1-11.11c-13.39-15.49-27.36-30.41-41.03-45.62l-41.98-44.68c-11.85-12.6-23.88-25.02-35.93-37.42\n c16.07,6.39,32.15,12.75,48.33,18.87l57.34,21.7c19.29,6.8,38.41,14,57.85,20.45l6.01-14.51c-18.3-9.2-36.91-17.63-55.37-26.45\n l-55.88-25.21c-15.77-7.11-31.64-13.99-47.52-20.83c17.29-0.24,34.58-0.52,51.87-1.06L720.81,547.34z\"\n />\n <path\n fill=\"#00AFBA\"\n d=\"M536.98,170.46c-201.69,0-365.77,164.09-365.77,365.77c0,201.69,164.08,365.78,365.77,365.78\n s365.78-164.09,365.78-365.78C902.76,334.55,738.67,170.46,536.98,170.46 M536.98,935.24c-220.01,0-399-178.99-399-399\n c0-220.01,178.99-399,399-399c220.01,0,399,178.99,399,399C935.98,756.25,757,935.24,536.98,935.24\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst GrafanaIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/grafana/grafana-original.svg\n return (\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <linearGradient\n id=\"a\"\n x1=\"45.842\"\n x2=\"45.842\"\n y1=\"89.57\"\n y2=\"8.802\"\n gradientTransform=\"translate(-2.405 27.316) scale(1.4463)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stopColor=\"#fcee1f\" />\n <stop offset=\"1\" stopColor=\"#f15b2a\" />\n </linearGradient>\n <path\n fill=\"url(#a)\"\n d=\"M69.162 0c-9.91 6.4-11.77 14.865-11.77 14.865s.002.206-.101.412c-.62.104-1.033.31-1.549.413-.722.206-1.445.413-2.168.826l-2.168.93c-1.445.722-2.89 1.341-4.336 2.167-1.342.826-2.683 1.548-4.025 2.477a1.266 1.266 0 0 1-.309-.205c-13.316-5.161-25.084 1.031-25.084 1.031-1.032 14.245 5.367 23.02 6.606 24.672-.31.929-.62 1.754-.93 2.58a52.973 52.973 0 0 0-2.166 9.91c-.103.413-.104 1.033-.207 1.445C8.671 67.613 5.06 80.103 5.06 80.103c10.219 11.768 22.193 12.49 22.193 12.49 1.445 2.685 3.302 5.369 5.264 7.743.825 1.032 1.756 1.96 2.582 2.992-3.716 10.632.619 19.613.619 19.613 11.458.413 18.992-4.955 20.54-6.297 1.136.31 2.272.724 3.407 1.034a47.25 47.25 0 0 0 10.633 1.549h4.644C80.31 126.969 89.807 128 89.807 128c6.71-7.123 7.123-14.038 7.123-15.69v-.62c1.342-1.033 2.683-2.064 4.129-3.2 2.684-2.374 4.955-5.264 7.02-8.154.206-.207.309-.62.618-.826 7.639.413 12.903-4.748 12.903-4.748-1.24-7.949-5.78-11.768-6.71-12.49l-.103-.104-.103-.104-.104-.103c0-.413.104-.93.104-1.445.103-.93.103-1.755.103-2.58v-3.407c0-.206 0-.413-.103-.722l-.104-.723-.103-.723c-.104-.929-.31-1.754-.413-2.58-.825-3.406-2.166-6.71-3.818-9.498-1.858-2.993-4.026-5.471-6.504-7.742-2.477-2.168-5.264-4.025-8.154-5.264-2.994-1.342-5.884-2.167-8.98-2.476-1.446-.207-3.098-.207-4.544-.207H79.69c-.825.103-1.546.205-2.27.308-3.096.62-5.883 1.756-8.36 3.201-2.478 1.446-4.646 3.407-6.504 5.575-1.858 2.167-3.2 4.438-4.13 6.916a23.313 23.313 0 0 0-1.548 7.431v2.684c0 .31 0 .62.104.93.103 1.238.31 2.374.722 3.51.723 2.27 1.756 4.334 3.098 6.09a19.973 19.973 0 0 0 4.54 4.335c1.756 1.136 3.408 1.96 5.266 2.477 1.858.516 3.509.826 5.16.722h2.376c.206 0 .412-.101.619-.101.206 0 .31-.104.619-.104.31-.103.825-.207 1.135-.31.722-.207 1.342-.62 2.064-.826.723-.31 1.24-.722 1.756-1.032.103-.103.309-.207.412-.31.62-.413.723-1.238.207-1.858-.413-.413-1.136-.62-1.756-.31-.103.103-.205.104-.412.207-.413.206-1.032.413-1.445.619-.62.103-1.135.31-1.754.414-.31 0-.62.102-.93.102h-2.58c-.103 0-.31.001-.414-.102-1.239-.206-2.58-.62-3.818-1.137-1.239-.619-2.478-1.34-3.51-2.373a15.894 15.894 0 0 1-2.89-3.51c-.826-1.341-1.24-2.89-1.446-4.335-.103-.826-.207-1.55-.103-2.375v-1.239c0-.413.103-.825.207-1.238.619-3.406 2.27-6.71 4.851-9.187.723-.723 1.342-1.238 2.168-1.754.826-.62 1.547-1.032 2.373-1.342.826-.31 1.756-.723 2.582-.93.93-.206 1.858-.414 2.684-.414.413 0 .929-.101 1.342-.101h1.238c1.032.103 2.065.205 2.994.412 1.961.413 3.82 1.135 5.678 2.168 3.613 2.064 6.708 5.16 8.566 8.877.93 1.858 1.548 3.82 1.961 5.988.103.62.104 1.03.207 1.547v2.787c0 .62-.103 1.136-.103 1.756-.104.62-.102 1.134-.205 1.754-.104.619-.208 1.136-.311 1.755-.206 1.136-.722 2.168-1.031 3.303-.826 2.168-1.963 4.232-3.305 5.986-2.684 3.717-6.502 6.815-10.63 8.776-2.169.929-4.337 1.755-6.608 2.064a19.003 19.003 0 0 1-3.407.309h-1.755c-.62 0-1.238.002-1.858-.102-2.477-.206-4.85-.724-7.224-1.343-2.375-.723-4.647-1.548-6.815-2.684-4.335-2.27-8.153-5.573-11.25-9.289-1.445-1.961-2.892-4.027-4.027-6.092-1.136-2.064-1.961-4.438-2.58-6.709-.723-2.27-1.032-4.645-1.135-7.02v-3.613c0-1.135.102-2.372.309-3.61.103-1.24.309-2.376.619-3.614.206-1.239.62-2.375.93-3.614.722-2.374 1.444-4.644 2.476-6.812 2.064-4.335 4.645-8.155 7.742-11.252a24.86 24.86 0 0 1 2.479-2.168c.31-.31 1.135-1.033 2.064-1.549s1.858-1.136 2.89-1.549c.414-.206.93-.413 1.446-.722.206-.103.411-.206.824-.309.207-.103.414-.207.826-.31 1.033-.413 2.066-.825 3.098-1.135.207-.103.62-.104.826-.207.207-.103.618-.102.824-.205.62-.103 1.033-.208 1.55-.414.206-.104.619-.104.825-.207.207 0 .62-.102.827-.102.206 0 .62-.103.826-.103l.412-.104.412-.103c.206 0 .62-.104.826-.104.31 0 .62-.104.93-.104.206 0 .721-.101.928-.101.206 0 .311 0 .62-.104h.723c.31 0 .618 0 .928-.103h4.647c2.064.103 4.128.31 5.986.723 3.82.722 7.638 1.961 10.941 3.613 3.304 1.548 6.4 3.611 8.877 5.78.104.102.311.207.414.413.104.103.31.206.412.412.31.207.62.62.93.826.31.207.62.62.93.827.206.31.618.618.824.927 1.136 1.136 2.169 2.375 3.098 3.51a41.422 41.422 0 0 1 4.44 7.02c.102.103.1.207.204.414.103.103.104.205.207.412.103.206.206.62.412.826.104.206.208.62.31.826.104.207.208.62.311.826.413 1.033.826 2.064 1.135 3.096.62 1.548.929 2.993 1.239 4.13.103.412.62.825 1.033.825.619 0 .927-.414.927-1.033-.31-1.755-.308-3.198-.412-4.953-.206-2.168-.619-4.647-1.238-7.434-.62-2.787-1.86-5.677-3.305-8.877-1.548-3.096-3.509-6.4-6.09-9.394-1.032-1.239-2.167-2.373-3.302-3.612 1.858-7.122-2.168-13.42-2.168-13.42-6.916-.412-11.253 2.168-12.801 3.303-.206-.103-.618-.205-.824-.308-1.136-.413-2.375-.93-3.613-1.342-1.24-.31-2.478-.827-3.717-1.033-1.239-.31-2.58-.62-4.026-.827-.206 0-.413-.103-.722-.103C77.833 4.128 69.162 0 69.162 0z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst DatadogIcon = () => {\n // https://github.com/vscode-icons/vscode-icons/blob/master/icons/file_type_datadog.svg\n return (\n <SvgIcon>\n <svg version=\"1.1\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>file_type_datadog</title>\n <g transform=\"matrix(.032852 0 0 .032852 3.022 1.8624)\">\n <path\n d=\"m584.65 49.556-506.77 58.406-11.799 132.15s43.067 494.97 42.477 493.2c-0.58996-1.7699 60.578 39.195 60.578 39.195s23.451 83.457 107.98 61.068c84.531-22.389 37.507-124.43 30.75-137.67-6.7572-13.246 31.953 36.231 31.953 36.231l46.845-5.6177 7.3802 61.543 372.65-67.16-22.19-268.56z\"\n fill=\"#fff\"\n />\n <path\n className=\"st0\"\n d=\"m670.38 608.27-71.24-46.99-59.43 99.27-69.12-20.21-60.86 92.89 3.12 29.24 330.9-60.97-19.22-206.75zm-308.59-89.14 53.09-7.3c8.59 3.86 14.57 5.33 24.87 7.95 16.04 4.18 34.61 8.19 62.11-5.67 6.4-3.17 19.73-15.36 25.12-22.31l217.52-39.46 22.19 268.56-372.65 67.16zm404.06-96.77-21.47 4.09-41.25-426.18-702.86 81.5 86.59 702.68 82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26-24.23-20.13-15.66-54.32-1.37-75.91 18.91-36.48 116.34-82.84 110.82-141.15-1.98-21.2-5.35-48.8-25.03-67.71-0.74 7.85 0.59 15.41 0.59 15.41s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31-3.03 8.33-2.63 17.99-2.63 17.99s-6.61-15.62-7.68-28.8c-3.92 5.9-4.91 17.11-4.91 17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49 21.45 15.03 68.67 11.46 87.07-15.66 6.11-8.98 10.29-33.5-3.05-81.81-8.57-30.98-29.79-77.11-38.06-94.61l-0.99 0.71c4.36 14.1 13.35 43.66 16.8 57.99 10.44 43.47 13.24 58.6 8.34 78.64-4.17 17.42-14.17 28.82-39.52 41.56-25.35 12.78-58.99-18.32-61.12-20.04-24.63-19.62-43.68-51.63-45.81-67.18-2.21-17.02 9.81-27.24 15.87-41.16-8.67 2.48-18.34 6.88-18.34 6.88s11.54-11.94 25.77-22.27c5.89-3.9 9.35-6.38 15.56-11.54-8.99-0.15-16.29 0.11-16.29 0.11s14.99-8.1 30.53-14c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96 59.87-25.94c18.17-7.45 35.92-5.25 45.89 9.17 13.09 18.89 26.84 29.15 55.98 35.51 17.89-7.93 23.33-12.01 45.81-18.13 19.79-21.76 35.33-24.58 35.33-24.58s-7.71 7.07-9.77 18.18c11.22-8.84 23.52-16.22 23.52-16.22s-4.76 5.88-9.2 15.22l1.03 1.53c13.09-7.85 28.48-14.04 28.48-14.04s-4.4 5.56-9.56 12.76c9.87-0.08 29.89 0.42 37.66 1.3 45.87 1.01 55.39-48.99 72.99-55.26 22.04-7.87 31.89-12.63 69.45 24.26 32.23 31.67 57.41 88.36 44.91 101.06-10.48 10.54-31.16-4.11-54.08-32.68-12.11-15.13-21.27-33.01-25.56-55.74-3.62-19.18-17.71-30.31-17.71-30.31s8.18 18.18 8.18 34.24c0 8.77 1.1 41.56 15.16 59.96-1.39 2.69-2.04 13.31-3.58 15.34-16.36-19.77-51.49-33.92-57.22-38.09 19.39 15.89 63.96 52.39 81.08 87.37 16.19 33.08 6.65 63.4 14.84 71.25 2.33 2.25 34.82 42.73 41.07 63.07 10.9 35.45 0.65 72.7-13.62 95.81l-39.85 6.21c-5.83-1.62-9.76-2.43-14.99-5.46 2.88-5.1 8.61-17.82 8.67-20.44l-2.25-3.95c-12.4 17.57-33.18 34.63-50.44 44.43-22.59 12.8-48.63 10.83-65.58 5.58-48.11-14.84-93.6-47.35-104.57-55.89 0 0-0.34 6.82 1.73 8.35 12.13 13.68 39.92 38.43 66.78 55.68l-57.26 6.3 27.07 210.78c-12 1.72-13.87 2.56-27.01 4.43-11.58-40.91-33.73-67.62-57.94-83.18-21.35-13.72-50.8-16.81-78.99-11.23l-1.81 2.1c19.6-2.04 42.74 0.8 66.51 15.85 23.33 14.75 42.13 52.85 49.05 75.79 8.86 29.32 14.99 60.68-8.86 93.92-16.97 23.63-66.51 36.69-106.53 8.44 10.69 17.19 25.14 31.25 44.59 33.9 28.88 3.92 56.29-1.09 75.16-20.46 16.11-16.56 24.65-51.19 22.4-87.66l25.49-3.7 9.2 65.46 421.98-50.81zm-256.73-177.77c-1.18 2.69-3.03 4.45-0.25 13.2l0.17 0.5 0.44 1.13 1.16 2.62c5.01 10.24 10.51 19.9 19.7 24.83 2.38-0.4 4.84-0.67 7.39-0.8 8.63-0.38 14.08 0.99 17.54 2.85 0.31-1.72 0.38-4.24 0.19-7.95-0.67-12.97 2.57-35.03-22.36-46.64-9.41-4.37-22.61-3.02-27.01 2.43 0.8 0.1 1.52 0.27 2.08 0.46 6.65 2.33 2.14 4.62 0.95 7.37m69.87 121.02c-3.27-1.8-18.55-1.09-29.29 0.19-20.46 2.41-42.55 9.51-47.39 13.29-8.8 6.8-4.8 18.66 1.7 23.53 18.23 13.62 34.21 22.75 51.08 20.53 10.36-1.36 19.49-17.76 25.96-32.64 4.43-10.25 4.43-21.31-2.06-24.9m-181.14-104.96c5.77-5.48-28.74-12.68-55.52 5.58-19.75 13.47-20.38 42.35-1.47 58.72 1.89 1.62 3.45 2.77 4.91 3.71 5.52-2.6 11.81-5.23 19.05-7.58 12.23-3.97 22.4-6.02 30.76-7.11 4-4.47 8.65-12.34 7.49-26.59-1.58-19.33-16.23-16.26-5.22-26.73\"\n clipRule=\"evenodd\"\n fill=\"#632ca6\"\n fillRule=\"evenodd\"\n />\n </g>\n </svg>\n </SvgIcon>\n );\n};\n\nexport const getProviderIcon = (provider: string | undefined) => {\n if (provider === 'AWS') {\n return <AWSIcon />;\n } else if (provider === 'Azure') {\n return <AzureIcon />;\n } else if (provider === 'GCP') {\n return <GCPIcon />;\n } else if (provider === 'MongoAtlas') {\n return <MongoDBIcon />;\n } else if (provider === 'Confluent') {\n return <ConfluentIcon />;\n } else if (provider === 'Grafana') {\n return <GrafanaIcon />;\n } else if (provider === 'Datadog') {\n return <DatadogIcon />;\n }\n\n return <CloudQueueIcon />;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProviderIcons.esm.js","sources":["../../../src/components/ProviderIcons/ProviderIcons.tsx"],"sourcesContent":["import React from 'react';\nimport { SvgIcon } from '@material-ui/core';\nimport CloudQueueIcon from '@mui/icons-material/CloudQueue';\n\nconst AWSIcon = () => {\n return (\n // https://github.com/devicons/devicon/blob/master/icons/amazonwebservices/amazonwebservices-original-wordmark.svg\n <SvgIcon>\n <svg viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#252f3e\"\n d=\"M36.379 53.64c0 1.56.168 2.825.465 3.75.336.926.758 1.938 1.347 3.032.207.336.293.672.293.969 0 .418-.254.84-.8 1.261l-2.653 1.77c-.379.25-.758.379-1.093.379-.422 0-.844-.211-1.266-.59a13.28 13.28 0 0 1-1.516-1.98 34.153 34.153 0 0 1-1.304-2.485c-3.282 3.875-7.41 5.813-12.38 5.813-3.535 0-6.355-1.012-8.421-3.032-2.063-2.023-3.114-4.718-3.114-8.086 0-3.578 1.262-6.484 3.833-8.671 2.566-2.192 5.976-3.286 10.316-3.286 1.43 0 2.902.125 4.46.336 1.56.211 3.161.547 4.845.926v-3.074c0-3.2-.676-5.43-1.98-6.734C26.061 32.633 23.788 32 20.546 32c-1.473 0-2.988.168-4.547.547a33.416 33.416 0 0 0-4.547 1.433c-.676.293-1.18.461-1.473.547-.296.082-.507.125-.675.125-.59 0-.883-.422-.883-1.304v-2.063c0-.676.082-1.18.293-1.476.21-.293.59-.586 1.18-.883 1.472-.758 3.242-1.39 5.304-1.895 2.063-.547 4.254-.8 6.57-.8 5.008 0 8.672 1.136 11.032 3.41 2.316 2.273 3.492 5.726 3.492 10.359v13.64Zm-17.094 6.403c1.387 0 2.82-.254 4.336-.758 1.516-.508 2.863-1.433 4-2.695.672-.8 1.18-1.684 1.43-2.695.254-1.012.422-2.23.422-3.665v-1.765a34.401 34.401 0 0 0-3.871-.719 31.816 31.816 0 0 0-3.961-.25c-2.82 0-4.883.547-6.274 1.684-1.387 1.136-2.062 2.734-2.062 4.84 0 1.98.504 3.453 1.558 4.464 1.012 1.051 2.485 1.559 4.422 1.559Zm33.809 4.547c-.758 0-1.262-.125-1.598-.422-.34-.254-.633-.84-.887-1.64L40.715 29.98c-.25-.843-.38-1.39-.38-1.687 0-.672.337-1.05 1.013-1.05h4.125c.8 0 1.347.124 1.644.421.336.25.59.84.84 1.64l7.074 27.876 6.57-27.875c.208-.84.462-1.39.797-1.64.34-.255.93-.423 1.688-.423h3.367c.8 0 1.348.125 1.684.422.336.25.633.84.8 1.64l6.653 28.212 7.285-28.211c.25-.84.547-1.39.84-1.64.336-.255.887-.423 1.644-.423h3.914c.676 0 1.055.336 1.055 1.051 0 .21-.043.422-.086.676-.043.254-.125.59-.293 1.05L80.801 62.57c-.254.84-.547 1.387-.887 1.64-.336.255-.883.423-1.598.423h-3.62c-.801 0-1.348-.13-1.684-.422-.34-.297-.633-.844-.801-1.684l-6.527-27.16-6.485 27.117c-.21.844-.46 1.391-.8 1.684-.337.297-.926.422-1.684.422Zm54.105 1.137c-2.187 0-4.379-.254-6.484-.758-2.106-.504-3.746-1.055-4.84-1.684-.676-.379-1.137-.8-1.305-1.18a2.919 2.919 0 0 1-.254-1.18v-2.148c0-.882.336-1.304.97-1.304.25 0 .503.043.757.129.25.082.629.25 1.05.418a23.102 23.102 0 0 0 4.634 1.476c1.683.336 3.324.504 5.011.504 2.653 0 4.715-.465 6.145-1.39 1.433-.926 2.191-2.274 2.191-4 0-1.18-.379-2.145-1.136-2.946-.758-.8-2.192-1.516-4.254-2.191l-6.106-1.895c-3.074-.969-5.348-2.398-6.734-4.293-1.39-1.855-2.106-3.918-2.106-6.105 0-1.77.38-3.328 1.137-4.676a10.829 10.829 0 0 1 3.031-3.453c1.262-.965 2.696-1.684 4.38-2.188 1.683-.504 3.452-.715 5.304-.715.926 0 1.894.043 2.82.168.969.125 1.852.293 2.738.461.84.211 1.641.422 2.399.676.758.254 1.348.504 1.77.758.59.336 1.011.672 1.261 1.05.254.34.379.802.379 1.391v1.98c0 .884-.336 1.348-.969 1.348-.336 0-.883-.171-1.597-.507-2.403-1.094-5.098-1.641-8.086-1.641-2.399 0-4.293.379-5.598 1.18-1.309.797-1.98 2.02-1.98 3.746 0 1.18.421 2.191 1.261 2.988.844.8 2.403 1.602 4.633 2.316l5.98 1.895c3.032.969 5.22 2.316 6.524 4.043 1.305 1.727 1.938 3.707 1.938 5.895 0 1.812-.38 3.453-1.094 4.882-.758 1.434-1.77 2.696-3.074 3.707-1.305 1.051-2.864 1.809-4.672 2.36-1.895.586-3.875.883-6.024.883Zm0 0\"\n />\n <path\n fill=\"#f90\"\n d=\"M118 73.348c-4.432.063-9.664 1.052-13.621 3.832-1.223.883-1.012 2.062.336 1.894 4.508-.547 14.44-1.726 16.21.547 1.77 2.23-1.976 11.62-3.663 15.79-.504 1.26.59 1.769 1.726.8 7.41-6.231 9.348-19.242 7.832-21.137-.757-.925-4.388-1.79-8.82-1.726zM1.63 75.859c-.927.116-1.347 1.236-.368 2.121 16.508 14.902 38.359 23.872 62.613 23.872 17.305 0 37.43-5.43 51.281-15.66 2.273-1.688.297-4.254-2.02-3.204-15.534 6.57-32.421 9.77-47.788 9.77-22.778 0-44.8-6.273-62.653-16.633-.39-.231-.755-.304-1.064-.266z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst AzureIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/azure/azure-original.svg\n return (\n <SvgIcon>\n <svg viewBox=\"0 0 155 155\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient\n id=\"azure-original-a\"\n x1=\"60.919\"\n y1=\"9.602\"\n x2=\"18.667\"\n y2=\"134.423\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#114A8B\" />\n <stop offset=\"1\" stopColor=\"#0669BC\" />\n </linearGradient>\n <linearGradient\n id=\"azure-original-b\"\n x1=\"74.117\"\n y1=\"67.772\"\n x2=\"64.344\"\n y2=\"71.076\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity=\".3\" />\n <stop offset=\".071\" stopOpacity=\".2\" />\n <stop offset=\".321\" stopOpacity=\".1\" />\n <stop offset=\".623\" stopOpacity=\".05\" />\n <stop offset=\"1\" stopOpacity=\"0\" />\n </linearGradient>\n <linearGradient\n id=\"azure-original-c\"\n x1=\"68.742\"\n y1=\"5.961\"\n x2=\"115.122\"\n y2=\"129.525\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#3CCBF4\" />\n <stop offset=\"1\" stopColor=\"#2892DF\" />\n </linearGradient>\n </defs>\n <path\n d=\"M46.09.002h40.685L44.541 125.137a6.485 6.485 0 01-6.146 4.413H6.733a6.482 6.482 0 01-5.262-2.699 6.474 6.474 0 01-.876-5.848L39.944 4.414A6.488 6.488 0 0146.09 0z\"\n fill=\"url(#azure-original-a)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n <path\n d=\"M97.28 81.607H37.987a2.743 2.743 0 00-1.874 4.751l38.1 35.562a5.991 5.991 0 004.087 1.61h33.574z\"\n fill=\"#0078d4\"\n />\n <path\n d=\"M46.09.002A6.434 6.434 0 0039.93 4.5L.644 120.897a6.469 6.469 0 006.106 8.653h32.48a6.942 6.942 0 005.328-4.531l7.834-23.089 27.985 26.101a6.618 6.618 0 004.165 1.519h36.396l-15.963-45.616-46.533.011L86.922.002z\"\n fill=\"url(#azure-original-b)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n <path\n d=\"M98.055 4.408A6.476 6.476 0 0091.917.002H46.575a6.478 6.478 0 016.137 4.406l39.35 116.594a6.476 6.476 0 01-6.137 8.55h45.344a6.48 6.48 0 006.136-8.55z\"\n fill=\"url(#azure-original-c)\"\n transform=\"translate(.587 4.468) scale(.91904)\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst GCPIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/googlecloud/googlecloud-original.svg\n return (\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path\n fill=\"#ea4535\"\n d=\"M80.6 40.3h.4l-.2-.2 14-14v-.3c-11.8-10.4-28.1-14-43.2-9.5C36.5 20.8 24.9 32.8 20.7 48c.2-.1.5-.2.8-.2 5.2-3.4 11.4-5.4 17.9-5.4 2.2 0 4.3.2 6.4.6.1-.1.2-.1.3-.1 9-9.9 24.2-11.1 34.6-2.6h-.1z\"\n />\n <path\n fill=\"#557ebf\"\n d=\"M108.1 47.8c-2.3-8.5-7.1-16.2-13.8-22.1L80 39.9c6 4.9 9.5 12.3 9.3 20v2.5c16.9 0 16.9 25.2 0 25.2H63.9v20h-.1l.1.2h25.4c14.6.1 27.5-9.3 31.8-23.1 4.3-13.8-1-28.8-13-36.9z\"\n />\n <path fill=\"#36a852\" d=\"M39 107.9h26.3V87.7H39c-1.9 0-3.7-.4-5.4-1.1l-15.2 14.6v.2c6 4.3 13.2 6.6 20.7 6.6z\" />\n <path\n fill=\"#f9bc15\"\n d=\"M40.2 41.9c-14.9.1-28.1 9.3-32.9 22.8-4.8 13.6 0 28.5 11.8 37.3l15.6-14.9c-8.6-3.7-10.6-14.5-4-20.8 6.6-6.4 17.8-4.4 21.7 3.8L68 55.2C61.4 46.9 51.1 42 40.2 42.1z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst MongoDBIcon = () => {\n return (\n // https://github.com/devicons/devicon/blob/master/icons/mongodb/mongodb-original.svg\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#439934\"\n d=\"M88.038 42.812c1.605 4.643 2.761 9.383 3.141 14.296.472 6.095.256 12.147-1.029 18.142-.035.165-.109.32-.164.48-.403.001-.814-.049-1.208.012-3.329.523-6.655 1.065-9.981 1.604-3.438.557-6.881 1.092-10.313 1.687-1.216.21-2.721-.041-3.212 1.641-.014.046-.154.054-.235.08l.166-10.051-.169-24.252 1.602-.275c2.62-.429 5.24-.864 7.862-1.281 3.129-.497 6.261-.98 9.392-1.465 1.381-.215 2.764-.412 4.148-.618z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#45A538\"\n d=\"M61.729 110.054c-1.69-1.453-3.439-2.842-5.059-4.37-8.717-8.222-15.093-17.899-18.233-29.566-.865-3.211-1.442-6.474-1.627-9.792-.13-2.322-.318-4.665-.154-6.975.437-6.144 1.325-12.229 3.127-18.147l.099-.138c.175.233.427.439.516.702 1.759 5.18 3.505 10.364 5.242 15.551 5.458 16.3 10.909 32.604 16.376 48.9.107.318.384.579.583.866l-.87 2.969z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#46A037\"\n d=\"M88.038 42.812c-1.384.206-2.768.403-4.149.616-3.131.485-6.263.968-9.392 1.465-2.622.417-5.242.852-7.862 1.281l-1.602.275-.012-1.045c-.053-.859-.144-1.717-.154-2.576-.069-5.478-.112-10.956-.18-16.434-.042-3.429-.105-6.857-.175-10.285-.043-2.13-.089-4.261-.185-6.388-.052-1.143-.236-2.28-.311-3.423-.042-.657.016-1.319.029-1.979.817 1.583 1.616 3.178 2.456 4.749 1.327 2.484 3.441 4.314 5.344 6.311 7.523 7.892 12.864 17.068 16.193 27.433z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#409433\"\n d=\"M65.036 80.753c.081-.026.222-.034.235-.08.491-1.682 1.996-1.431 3.212-1.641 3.432-.594 6.875-1.13 10.313-1.687 3.326-.539 6.652-1.081 9.981-1.604.394-.062.805-.011 1.208-.012-.622 2.22-1.112 4.488-1.901 6.647-.896 2.449-1.98 4.839-3.131 7.182a49.142 49.142 0 01-6.353 9.763c-1.919 2.308-4.058 4.441-6.202 6.548-1.185 1.165-2.582 2.114-3.882 3.161l-.337-.23-1.214-1.038-1.256-2.753a41.402 41.402 0 01-1.394-9.838l.023-.561.171-2.426c.057-.828.133-1.655.168-2.485.129-2.982.241-5.964.359-8.946z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4FAA41\"\n d=\"M65.036 80.753c-.118 2.982-.23 5.964-.357 8.947-.035.83-.111 1.657-.168 2.485l-.765.289c-1.699-5.002-3.399-9.951-5.062-14.913-2.75-8.209-5.467-16.431-8.213-24.642a4498.887 4498.887 0 00-6.7-19.867c-.105-.31-.407-.552-.617-.826l4.896-9.002c.168.292.39.565.496.879a6167.476 6167.476 0 016.768 20.118c2.916 8.73 5.814 17.467 8.728 26.198.116.349.308.671.491 1.062l.67-.78-.167 10.052z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4AA73C\"\n d=\"M43.155 32.227c.21.274.511.516.617.826a4498.887 4498.887 0 016.7 19.867c2.746 8.211 5.463 16.433 8.213 24.642 1.662 4.961 3.362 9.911 5.062 14.913l.765-.289-.171 2.426-.155.559c-.266 2.656-.49 5.318-.814 7.968-.163 1.328-.509 2.632-.772 3.947-.198-.287-.476-.548-.583-.866-5.467-16.297-10.918-32.6-16.376-48.9a3888.972 3888.972 0 00-5.242-15.551c-.089-.263-.34-.469-.516-.702l3.272-8.84z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#57AE47\"\n d=\"M65.202 70.702l-.67.78c-.183-.391-.375-.714-.491-1.062-2.913-8.731-5.812-17.468-8.728-26.198a6167.476 6167.476 0 00-6.768-20.118c-.105-.314-.327-.588-.496-.879l6.055-7.965c.191.255.463.482.562.769 1.681 4.921 3.347 9.848 5.003 14.778 1.547 4.604 3.071 9.215 4.636 13.813.105.308.47.526.714.786l.012 1.045c.058 8.082.115 16.167.171 24.251z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#60B24F\"\n d=\"M65.021 45.404c-.244-.26-.609-.478-.714-.786-1.565-4.598-3.089-9.209-4.636-13.813-1.656-4.93-3.322-9.856-5.003-14.778-.099-.287-.371-.514-.562-.769 1.969-1.928 3.877-3.925 5.925-5.764 1.821-1.634 3.285-3.386 3.352-5.968.003-.107.059-.214.145-.514l.519 1.306c-.013.661-.072 1.322-.029 1.979.075 1.143.259 2.28.311 3.423.096 2.127.142 4.258.185 6.388.069 3.428.132 6.856.175 10.285.067 5.478.111 10.956.18 16.434.008.861.098 1.718.152 2.577z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#A9AA88\"\n d=\"M62.598 107.085c.263-1.315.609-2.62.772-3.947.325-2.649.548-5.312.814-7.968l.066-.01.066.011a41.402 41.402 0 001.394 9.838c-.176.232-.425.439-.518.701-.727 2.05-1.412 4.116-2.143 6.166-.1.28-.378.498-.574.744l-.747-2.566.87-2.969z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#B6B598\"\n d=\"M62.476 112.621c.196-.246.475-.464.574-.744.731-2.05 1.417-4.115 2.143-6.166.093-.262.341-.469.518-.701l1.255 2.754c-.248.352-.59.669-.728 1.061l-2.404 7.059c-.099.283-.437.483-.663.722l-.695-3.985z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#C2C1A7\"\n d=\"M63.171 116.605c.227-.238.564-.439.663-.722l2.404-7.059c.137-.391.48-.709.728-1.061l1.215 1.037c-.587.58-.913 1.25-.717 2.097l-.369 1.208c-.168.207-.411.387-.494.624-.839 2.403-1.64 4.819-2.485 7.222-.107.305-.404.544-.614.812-.109-1.387-.22-2.771-.331-4.158z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#CECDB7\"\n d=\"M63.503 120.763c.209-.269.506-.508.614-.812.845-2.402 1.646-4.818 2.485-7.222.083-.236.325-.417.494-.624l-.509 5.545c-.136.157-.333.294-.398.477-.575 1.614-1.117 3.24-1.694 4.854-.119.333-.347.627-.525.938-.158-.207-.441-.407-.454-.623-.051-.841-.016-1.688-.013-2.533z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#DBDAC7\"\n d=\"M63.969 123.919c.178-.312.406-.606.525-.938.578-1.613 1.119-3.239 1.694-4.854.065-.183.263-.319.398-.477l.012 3.64-1.218 3.124-1.411-.495z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#EBE9DC\"\n d=\"M65.38 124.415l1.218-3.124.251 3.696-1.469-.572z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#CECDB7\"\n d=\"M67.464 110.898c-.196-.847.129-1.518.717-2.097l.337.23-1.054 1.867z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"#4FAA41\"\n d=\"M64.316 95.172l-.066-.011-.066.01.155-.559-.023.56z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst ConfluentIcon = () => {\n // https://grafana.com/static/img/logos/confluent-cloud-logo.svg\n return (\n <SvgIcon>\n <svg viewBox=\"0 0 1000 1000\">\n <path\n fill=\"#00AFBA\"\n d=\"M720.81,547.34c20.42-1.1,40.85-1.76,61.27-3.25v-15.7c-20.43-1.49-40.85-2.15-61.27-3.25l-61.28-1.9\n c-35.96-1.11-71.92-1.4-107.88-1.61c-0.08-35.98-0.25-71.96-1.22-107.94l-1.71-61.28c-1.05-20.42-1.65-40.85-3.09-61.27h-17.31\n c-1.44,20.43-2.04,40.85-3.09,61.27l-1.71,61.28c-0.45,16.88-0.67,33.77-0.85,50.65c-6.63-15.53-13.29-31.05-20.17-46.47\n l-25.03-55.95c-8.79-18.47-17.16-37.11-26.31-55.43l-15.99,6.62c6.48,19.42,13.75,38.52,20.59,57.8l21.87,57.26\n c6.04,15.77,12.31,31.45,18.6,47.12c-12.07-11.81-24.15-23.59-36.41-35.21l-44.54-42.12c-15.18-13.7-30.05-27.72-45.51-41.14\n l-12.24,12.23c13.43,15.47,27.45,30.33,41.14,45.52l42.12,44.54c11.62,12.26,23.41,24.35,35.22,36.42\n c-15.67-6.29-31.35-12.56-47.12-18.6l-57.27-21.86c-19.27-6.85-38.37-14.11-57.8-20.6l-6.62,15.99\n c18.32,9.15,36.96,17.52,55.43,26.3l55.96,25.03c15.42,6.88,30.94,13.53,46.47,20.16c-16.88,0.18-33.77,0.39-50.65,0.85\n l-61.27,1.71c-20.42,1.05-40.85,1.65-61.27,3.09v17.3c20.43,1.44,40.85,2.04,61.27,3.1l61.27,1.71\n c35.98,0.97,71.96,1.14,107.94,1.22c0.22,35.96,0.5,71.92,1.61,107.88l1.9,61.27c1.1,20.42,1.76,40.85,3.25,61.27h15.7\n c1.49-20.43,2.15-40.85,3.25-61.27l1.91-61.27c0.53-17.29,0.81-34.58,1.05-51.87c6.84,15.88,13.71,31.75,20.82,47.52l25.21,55.88\n c8.83,18.45,17.26,37.07,26.45,55.37l14.51-6.01c-6.44-19.44-13.64-38.57-20.45-57.86l-21.69-57.34\n c-6.13-16.18-12.49-32.26-18.88-48.33c12.4,12.06,24.83,24.09,37.43,35.94l44.67,41.98c15.22,13.67,30.13,27.64,45.63,41.03\n l11.1-11.11c-13.39-15.49-27.36-30.41-41.03-45.62l-41.98-44.68c-11.85-12.6-23.88-25.02-35.93-37.42\n c16.07,6.39,32.15,12.75,48.33,18.87l57.34,21.7c19.29,6.8,38.41,14,57.85,20.45l6.01-14.51c-18.3-9.2-36.91-17.63-55.37-26.45\n l-55.88-25.21c-15.77-7.11-31.64-13.99-47.52-20.83c17.29-0.24,34.58-0.52,51.87-1.06L720.81,547.34z\"\n />\n <path\n fill=\"#00AFBA\"\n d=\"M536.98,170.46c-201.69,0-365.77,164.09-365.77,365.77c0,201.69,164.08,365.78,365.77,365.78\n s365.78-164.09,365.78-365.78C902.76,334.55,738.67,170.46,536.98,170.46 M536.98,935.24c-220.01,0-399-178.99-399-399\n c0-220.01,178.99-399,399-399c220.01,0,399,178.99,399,399C935.98,756.25,757,935.24,536.98,935.24\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst GrafanaIcon = () => {\n // https://github.com/devicons/devicon/blob/master/icons/grafana/grafana-original.svg\n return (\n <SvgIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <linearGradient\n id=\"a\"\n x1=\"45.842\"\n x2=\"45.842\"\n y1=\"89.57\"\n y2=\"8.802\"\n gradientTransform=\"translate(-2.405 27.316) scale(1.4463)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stopColor=\"#fcee1f\" />\n <stop offset=\"1\" stopColor=\"#f15b2a\" />\n </linearGradient>\n <path\n fill=\"url(#a)\"\n d=\"M69.162 0c-9.91 6.4-11.77 14.865-11.77 14.865s.002.206-.101.412c-.62.104-1.033.31-1.549.413-.722.206-1.445.413-2.168.826l-2.168.93c-1.445.722-2.89 1.341-4.336 2.167-1.342.826-2.683 1.548-4.025 2.477a1.266 1.266 0 0 1-.309-.205c-13.316-5.161-25.084 1.031-25.084 1.031-1.032 14.245 5.367 23.02 6.606 24.672-.31.929-.62 1.754-.93 2.58a52.973 52.973 0 0 0-2.166 9.91c-.103.413-.104 1.033-.207 1.445C8.671 67.613 5.06 80.103 5.06 80.103c10.219 11.768 22.193 12.49 22.193 12.49 1.445 2.685 3.302 5.369 5.264 7.743.825 1.032 1.756 1.96 2.582 2.992-3.716 10.632.619 19.613.619 19.613 11.458.413 18.992-4.955 20.54-6.297 1.136.31 2.272.724 3.407 1.034a47.25 47.25 0 0 0 10.633 1.549h4.644C80.31 126.969 89.807 128 89.807 128c6.71-7.123 7.123-14.038 7.123-15.69v-.62c1.342-1.033 2.683-2.064 4.129-3.2 2.684-2.374 4.955-5.264 7.02-8.154.206-.207.309-.62.618-.826 7.639.413 12.903-4.748 12.903-4.748-1.24-7.949-5.78-11.768-6.71-12.49l-.103-.104-.103-.104-.104-.103c0-.413.104-.93.104-1.445.103-.93.103-1.755.103-2.58v-3.407c0-.206 0-.413-.103-.722l-.104-.723-.103-.723c-.104-.929-.31-1.754-.413-2.58-.825-3.406-2.166-6.71-3.818-9.498-1.858-2.993-4.026-5.471-6.504-7.742-2.477-2.168-5.264-4.025-8.154-5.264-2.994-1.342-5.884-2.167-8.98-2.476-1.446-.207-3.098-.207-4.544-.207H79.69c-.825.103-1.546.205-2.27.308-3.096.62-5.883 1.756-8.36 3.201-2.478 1.446-4.646 3.407-6.504 5.575-1.858 2.167-3.2 4.438-4.13 6.916a23.313 23.313 0 0 0-1.548 7.431v2.684c0 .31 0 .62.104.93.103 1.238.31 2.374.722 3.51.723 2.27 1.756 4.334 3.098 6.09a19.973 19.973 0 0 0 4.54 4.335c1.756 1.136 3.408 1.96 5.266 2.477 1.858.516 3.509.826 5.16.722h2.376c.206 0 .412-.101.619-.101.206 0 .31-.104.619-.104.31-.103.825-.207 1.135-.31.722-.207 1.342-.62 2.064-.826.723-.31 1.24-.722 1.756-1.032.103-.103.309-.207.412-.31.62-.413.723-1.238.207-1.858-.413-.413-1.136-.62-1.756-.31-.103.103-.205.104-.412.207-.413.206-1.032.413-1.445.619-.62.103-1.135.31-1.754.414-.31 0-.62.102-.93.102h-2.58c-.103 0-.31.001-.414-.102-1.239-.206-2.58-.62-3.818-1.137-1.239-.619-2.478-1.34-3.51-2.373a15.894 15.894 0 0 1-2.89-3.51c-.826-1.341-1.24-2.89-1.446-4.335-.103-.826-.207-1.55-.103-2.375v-1.239c0-.413.103-.825.207-1.238.619-3.406 2.27-6.71 4.851-9.187.723-.723 1.342-1.238 2.168-1.754.826-.62 1.547-1.032 2.373-1.342.826-.31 1.756-.723 2.582-.93.93-.206 1.858-.414 2.684-.414.413 0 .929-.101 1.342-.101h1.238c1.032.103 2.065.205 2.994.412 1.961.413 3.82 1.135 5.678 2.168 3.613 2.064 6.708 5.16 8.566 8.877.93 1.858 1.548 3.82 1.961 5.988.103.62.104 1.03.207 1.547v2.787c0 .62-.103 1.136-.103 1.756-.104.62-.102 1.134-.205 1.754-.104.619-.208 1.136-.311 1.755-.206 1.136-.722 2.168-1.031 3.303-.826 2.168-1.963 4.232-3.305 5.986-2.684 3.717-6.502 6.815-10.63 8.776-2.169.929-4.337 1.755-6.608 2.064a19.003 19.003 0 0 1-3.407.309h-1.755c-.62 0-1.238.002-1.858-.102-2.477-.206-4.85-.724-7.224-1.343-2.375-.723-4.647-1.548-6.815-2.684-4.335-2.27-8.153-5.573-11.25-9.289-1.445-1.961-2.892-4.027-4.027-6.092-1.136-2.064-1.961-4.438-2.58-6.709-.723-2.27-1.032-4.645-1.135-7.02v-3.613c0-1.135.102-2.372.309-3.61.103-1.24.309-2.376.619-3.614.206-1.239.62-2.375.93-3.614.722-2.374 1.444-4.644 2.476-6.812 2.064-4.335 4.645-8.155 7.742-11.252a24.86 24.86 0 0 1 2.479-2.168c.31-.31 1.135-1.033 2.064-1.549s1.858-1.136 2.89-1.549c.414-.206.93-.413 1.446-.722.206-.103.411-.206.824-.309.207-.103.414-.207.826-.31 1.033-.413 2.066-.825 3.098-1.135.207-.103.62-.104.826-.207.207-.103.618-.102.824-.205.62-.103 1.033-.208 1.55-.414.206-.104.619-.104.825-.207.207 0 .62-.102.827-.102.206 0 .62-.103.826-.103l.412-.104.412-.103c.206 0 .62-.104.826-.104.31 0 .62-.104.93-.104.206 0 .721-.101.928-.101.206 0 .311 0 .62-.104h.723c.31 0 .618 0 .928-.103h4.647c2.064.103 4.128.31 5.986.723 3.82.722 7.638 1.961 10.941 3.613 3.304 1.548 6.4 3.611 8.877 5.78.104.102.311.207.414.413.104.103.31.206.412.412.31.207.62.62.93.826.31.207.62.62.93.827.206.31.618.618.824.927 1.136 1.136 2.169 2.375 3.098 3.51a41.422 41.422 0 0 1 4.44 7.02c.102.103.1.207.204.414.103.103.104.205.207.412.103.206.206.62.412.826.104.206.208.62.31.826.104.207.208.62.311.826.413 1.033.826 2.064 1.135 3.096.62 1.548.929 2.993 1.239 4.13.103.412.62.825 1.033.825.619 0 .927-.414.927-1.033-.31-1.755-.308-3.198-.412-4.953-.206-2.168-.619-4.647-1.238-7.434-.62-2.787-1.86-5.677-3.305-8.877-1.548-3.096-3.509-6.4-6.09-9.394-1.032-1.239-2.167-2.373-3.302-3.612 1.858-7.122-2.168-13.42-2.168-13.42-6.916-.412-11.253 2.168-12.801 3.303-.206-.103-.618-.205-.824-.308-1.136-.413-2.375-.93-3.613-1.342-1.24-.31-2.478-.827-3.717-1.033-1.239-.31-2.58-.62-4.026-.827-.206 0-.413-.103-.722-.103C77.833 4.128 69.162 0 69.162 0z\"\n />\n </svg>\n </SvgIcon>\n );\n};\n\nconst DatadogIcon = () => {\n // https://github.com/vscode-icons/vscode-icons/blob/master/icons/file_type_datadog.svg\n return (\n <SvgIcon>\n <svg version=\"1.1\" viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>file_type_datadog</title>\n <g transform=\"matrix(.032852 0 0 .032852 3.022 1.8624)\">\n <path\n d=\"m584.65 49.556-506.77 58.406-11.799 132.15s43.067 494.97 42.477 493.2c-0.58996-1.7699 60.578 39.195 60.578 39.195s23.451 83.457 107.98 61.068c84.531-22.389 37.507-124.43 30.75-137.67-6.7572-13.246 31.953 36.231 31.953 36.231l46.845-5.6177 7.3802 61.543 372.65-67.16-22.19-268.56z\"\n fill=\"#fff\"\n />\n <path\n className=\"st0\"\n d=\"m670.38 608.27-71.24-46.99-59.43 99.27-69.12-20.21-60.86 92.89 3.12 29.24 330.9-60.97-19.22-206.75zm-308.59-89.14 53.09-7.3c8.59 3.86 14.57 5.33 24.87 7.95 16.04 4.18 34.61 8.19 62.11-5.67 6.4-3.17 19.73-15.36 25.12-22.31l217.52-39.46 22.19 268.56-372.65 67.16zm404.06-96.77-21.47 4.09-41.25-426.18-702.86 81.5 86.59 702.68 82.27-11.94c-6.57-9.38-16.8-20.73-34.27-35.26-24.23-20.13-15.66-54.32-1.37-75.91 18.91-36.48 116.34-82.84 110.82-141.15-1.98-21.2-5.35-48.8-25.03-67.71-0.74 7.85 0.59 15.41 0.59 15.41s-8.08-10.31-12.11-24.37c-4-5.39-7.14-7.11-11.39-14.31-3.03 8.33-2.63 17.99-2.63 17.99s-6.61-15.62-7.68-28.8c-3.92 5.9-4.91 17.11-4.91 17.11s-8.59-24.62-6.63-37.88c-3.92-11.54-15.54-34.44-12.25-86.49 21.45 15.03 68.67 11.46 87.07-15.66 6.11-8.98 10.29-33.5-3.05-81.81-8.57-30.98-29.79-77.11-38.06-94.61l-0.99 0.71c4.36 14.1 13.35 43.66 16.8 57.99 10.44 43.47 13.24 58.6 8.34 78.64-4.17 17.42-14.17 28.82-39.52 41.56-25.35 12.78-58.99-18.32-61.12-20.04-24.63-19.62-43.68-51.63-45.81-67.18-2.21-17.02 9.81-27.24 15.87-41.16-8.67 2.48-18.34 6.88-18.34 6.88s11.54-11.94 25.77-22.27c5.89-3.9 9.35-6.38 15.56-11.54-8.99-0.15-16.29 0.11-16.29 0.11s14.99-8.1 30.53-14c-11.37-0.5-22.25-0.08-22.25-0.08s33.45-14.96 59.87-25.94c18.17-7.45 35.92-5.25 45.89 9.17 13.09 18.89 26.84 29.15 55.98 35.51 17.89-7.93 23.33-12.01 45.81-18.13 19.79-21.76 35.33-24.58 35.33-24.58s-7.71 7.07-9.77 18.18c11.22-8.84 23.52-16.22 23.52-16.22s-4.76 5.88-9.2 15.22l1.03 1.53c13.09-7.85 28.48-14.04 28.48-14.04s-4.4 5.56-9.56 12.76c9.87-0.08 29.89 0.42 37.66 1.3 45.87 1.01 55.39-48.99 72.99-55.26 22.04-7.87 31.89-12.63 69.45 24.26 32.23 31.67 57.41 88.36 44.91 101.06-10.48 10.54-31.16-4.11-54.08-32.68-12.11-15.13-21.27-33.01-25.56-55.74-3.62-19.18-17.71-30.31-17.71-30.31s8.18 18.18 8.18 34.24c0 8.77 1.1 41.56 15.16 59.96-1.39 2.69-2.04 13.31-3.58 15.34-16.36-19.77-51.49-33.92-57.22-38.09 19.39 15.89 63.96 52.39 81.08 87.37 16.19 33.08 6.65 63.4 14.84 71.25 2.33 2.25 34.82 42.73 41.07 63.07 10.9 35.45 0.65 72.7-13.62 95.81l-39.85 6.21c-5.83-1.62-9.76-2.43-14.99-5.46 2.88-5.1 8.61-17.82 8.67-20.44l-2.25-3.95c-12.4 17.57-33.18 34.63-50.44 44.43-22.59 12.8-48.63 10.83-65.58 5.58-48.11-14.84-93.6-47.35-104.57-55.89 0 0-0.34 6.82 1.73 8.35 12.13 13.68 39.92 38.43 66.78 55.68l-57.26 6.3 27.07 210.78c-12 1.72-13.87 2.56-27.01 4.43-11.58-40.91-33.73-67.62-57.94-83.18-21.35-13.72-50.8-16.81-78.99-11.23l-1.81 2.1c19.6-2.04 42.74 0.8 66.51 15.85 23.33 14.75 42.13 52.85 49.05 75.79 8.86 29.32 14.99 60.68-8.86 93.92-16.97 23.63-66.51 36.69-106.53 8.44 10.69 17.19 25.14 31.25 44.59 33.9 28.88 3.92 56.29-1.09 75.16-20.46 16.11-16.56 24.65-51.19 22.4-87.66l25.49-3.7 9.2 65.46 421.98-50.81zm-256.73-177.77c-1.18 2.69-3.03 4.45-0.25 13.2l0.17 0.5 0.44 1.13 1.16 2.62c5.01 10.24 10.51 19.9 19.7 24.83 2.38-0.4 4.84-0.67 7.39-0.8 8.63-0.38 14.08 0.99 17.54 2.85 0.31-1.72 0.38-4.24 0.19-7.95-0.67-12.97 2.57-35.03-22.36-46.64-9.41-4.37-22.61-3.02-27.01 2.43 0.8 0.1 1.52 0.27 2.08 0.46 6.65 2.33 2.14 4.62 0.95 7.37m69.87 121.02c-3.27-1.8-18.55-1.09-29.29 0.19-20.46 2.41-42.55 9.51-47.39 13.29-8.8 6.8-4.8 18.66 1.7 23.53 18.23 13.62 34.21 22.75 51.08 20.53 10.36-1.36 19.49-17.76 25.96-32.64 4.43-10.25 4.43-21.31-2.06-24.9m-181.14-104.96c5.77-5.48-28.74-12.68-55.52 5.58-19.75 13.47-20.38 42.35-1.47 58.72 1.89 1.62 3.45 2.77 4.91 3.71 5.52-2.6 11.81-5.23 19.05-7.58 12.23-3.97 22.4-6.02 30.76-7.11 4-4.47 8.65-12.34 7.49-26.59-1.58-19.33-16.23-16.26-5.22-26.73\"\n clipRule=\"evenodd\"\n fill=\"#632ca6\"\n fillRule=\"evenodd\"\n />\n </g>\n </svg>\n </SvgIcon>\n );\n};\n\nexport const getProviderIcon = (provider: string | undefined) => {\n if (provider?.toLowerCase() === 'AWS'.toLowerCase()) {\n return <AWSIcon />;\n } else if (provider?.toLowerCase() === 'Azure'.toLowerCase()) {\n return <AzureIcon />;\n } else if (provider?.toLowerCase() === 'GCP'.toLowerCase()) {\n return <GCPIcon />;\n } else if (provider?.toLowerCase() === 'MongoAtlas'.toLowerCase()) {\n return <MongoDBIcon />;\n } else if (provider?.toLowerCase() === 'Confluent'.toLowerCase()) {\n return <ConfluentIcon />;\n } else if (provider?.toLowerCase() === 'Grafana'.toLowerCase()) {\n return <GrafanaIcon />;\n } else if (provider?.toLowerCase() === 'Datadog'.toLowerCase()) {\n return <DatadogIcon />;\n }\n\n return <CloudQueueIcon />;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Page, Header, Content
|
|
1
|
+
import { Page, Header, Content } from '@backstage/core-components';
|
|
2
2
|
import { useApi, configApiRef, alertApiRef } from '@backstage/core-plugin-api';
|
|
3
|
-
import { Grid
|
|
3
|
+
import { Grid } from '@material-ui/core';
|
|
4
4
|
import Accordion from '@material-ui/core/Accordion';
|
|
5
5
|
import AccordionDetails from '@material-ui/core/AccordionDetails';
|
|
6
6
|
import AccordionSummary from '@material-ui/core/AccordionSummary';
|
|
7
7
|
import Typography from '@material-ui/core/Typography';
|
|
8
|
-
import ExpandMoreIcon from '@
|
|
8
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
9
|
+
import Chip from '@mui/material/Chip';
|
|
9
10
|
import { startOfMonth, addMonths, endOfMonth } from 'date-fns';
|
|
10
11
|
import React, { useState, useCallback, useEffect } from 'react';
|
|
11
12
|
import { useParams } from 'react-router-dom';
|
|
@@ -56,14 +57,13 @@ const ReportsComponent = (props) => {
|
|
|
56
57
|
}
|
|
57
58
|
const defaultShowLastXMonths = (_b = configApi.getOptionalNumber("infraWallet.settings.defaultShowLastXMonths")) != null ? _b : 3;
|
|
58
59
|
const MERGE_THRESHOLD = 8;
|
|
59
|
-
const [submittingState, setSubmittingState] = useState(false);
|
|
60
60
|
const [selectedTags, setSelectedTags] = useState([]);
|
|
61
61
|
const [reports, setReports] = useState([]);
|
|
62
62
|
const [metrics, setMetrics] = useState([]);
|
|
63
63
|
const [filters, setFilters] = useState({});
|
|
64
64
|
const [cloudProviderErrors, setCloudProviderErrors] = useState([]);
|
|
65
|
-
const [reportsAggregated, setReportsAggregated] = useState(
|
|
66
|
-
const [reportsAggregatedAndMerged, setReportsAggregatedAndMerged] = useState(
|
|
65
|
+
const [reportsAggregated, setReportsAggregated] = useState(void 0);
|
|
66
|
+
const [reportsAggregatedAndMerged, setReportsAggregatedAndMerged] = useState(void 0);
|
|
67
67
|
const [reportTags, setReportTags] = useState([]);
|
|
68
68
|
const [granularity, setGranularity] = useState("monthly");
|
|
69
69
|
const [aggregatedBy, setAggregatedBy] = useState(defaultGroupBy);
|
|
@@ -73,10 +73,12 @@ const ReportsComponent = (props) => {
|
|
|
73
73
|
endMonth: endOfMonth(/* @__PURE__ */ new Date())
|
|
74
74
|
});
|
|
75
75
|
const [periods, setPeriods] = useState([]);
|
|
76
|
+
const [highlightedItem, setHighLightedItem] = useState(void 0);
|
|
76
77
|
const alertApi = useApi(alertApiRef);
|
|
77
78
|
const infraWalletApi = useApi(infraWalletApiRef);
|
|
78
79
|
const fetchCostReportsCallback = useCallback(async () => {
|
|
79
|
-
|
|
80
|
+
setReportsAggregated(void 0);
|
|
81
|
+
setReportsAggregatedAndMerged(void 0);
|
|
80
82
|
await infraWalletApi.getCostReports("", selectedTags, groups, granularity, monthRange.startMonth, monthRange.endMonth).then((reportsResponse) => {
|
|
81
83
|
if (reportsResponse.data && reportsResponse.data.length > 0) {
|
|
82
84
|
setReports(reportsResponse.data);
|
|
@@ -86,7 +88,6 @@ const ReportsComponent = (props) => {
|
|
|
86
88
|
setCloudProviderErrors(reportsResponse.errors);
|
|
87
89
|
}
|
|
88
90
|
}).catch((e) => alertApi.post({ message: `${e.message}`, severity: "error" }));
|
|
89
|
-
setSubmittingState(false);
|
|
90
91
|
}, [groups, monthRange, granularity, selectedTags, infraWalletApi, alertApi]);
|
|
91
92
|
const fetchMetricsCallback = useCallback(async () => {
|
|
92
93
|
var _a2;
|
|
@@ -114,7 +115,7 @@ const ReportsComponent = (props) => {
|
|
|
114
115
|
fetchCostReportsCallback();
|
|
115
116
|
fetchMetricsCallback();
|
|
116
117
|
}, [fetchCostReportsCallback, fetchMetricsCallback]);
|
|
117
|
-
return /* @__PURE__ */ React.createElement(Page, { themeId: "tool" }, /* @__PURE__ */ React.createElement(Header, { title: title != null ? title : "InfraWallet", subtitle: subTitle != null ? subTitle : "" }), /* @__PURE__ */ React.createElement(Content, null,
|
|
118
|
+
return /* @__PURE__ */ React.createElement(Page, { themeId: "tool" }, /* @__PURE__ */ React.createElement(Header, { title: title != null ? title : "InfraWallet", subtitle: subTitle != null ? subTitle : "" }), /* @__PURE__ */ React.createElement(Content, null, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3 }, cloudProviderErrors.length > 0 && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(ErrorsAlertComponent, { errors: cloudProviderErrors })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(
|
|
118
119
|
TopbarComponent,
|
|
119
120
|
{
|
|
120
121
|
aggregatedBy,
|
|
@@ -133,32 +134,35 @@ const ReportsComponent = (props) => {
|
|
|
133
134
|
selectedTagsSetter: setSelectedTags,
|
|
134
135
|
providerErrorsSetter: setCloudProviderErrors
|
|
135
136
|
}
|
|
136
|
-
)))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 4, lg: 3 },
|
|
137
|
+
)))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 4, lg: 3 }, /* @__PURE__ */ React.createElement(
|
|
137
138
|
PieChartComponent,
|
|
138
139
|
{
|
|
139
|
-
categories: reportsAggregatedAndMerged.map((item) => item.id),
|
|
140
|
-
series: reportsAggregatedAndMerged.map((item) => getTotalCost(item)),
|
|
141
|
-
height: 350
|
|
140
|
+
categories: reportsAggregatedAndMerged ? reportsAggregatedAndMerged.map((item) => item.id) : void 0,
|
|
141
|
+
series: reportsAggregatedAndMerged ? reportsAggregatedAndMerged.map((item) => getTotalCost(item)) : void 0,
|
|
142
|
+
height: 350,
|
|
143
|
+
highlightedItem,
|
|
144
|
+
highlightedItemSetter: setHighLightedItem
|
|
142
145
|
}
|
|
143
|
-
)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 8, lg: 9 },
|
|
146
|
+
)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 8, lg: 9 }, /* @__PURE__ */ React.createElement(
|
|
144
147
|
ColumnsChartComponent,
|
|
145
148
|
{
|
|
149
|
+
granularity,
|
|
146
150
|
granularitySetter: setGranularity,
|
|
147
151
|
categories: periods,
|
|
148
|
-
|
|
152
|
+
costs: reportsAggregatedAndMerged ? reportsAggregatedAndMerged.map((item) => ({
|
|
149
153
|
name: item.id,
|
|
150
|
-
type: "column",
|
|
151
154
|
data: rearrangeData(item, periods)
|
|
152
|
-
})),
|
|
155
|
+
})) : void 0,
|
|
153
156
|
metrics: metrics.map((item) => ({
|
|
154
157
|
name: item.name,
|
|
155
158
|
group: item.group,
|
|
156
|
-
type: "line",
|
|
157
159
|
data: rearrangeData(item, periods)
|
|
158
160
|
})),
|
|
159
|
-
height: 350
|
|
161
|
+
height: 350,
|
|
162
|
+
highlightedItem,
|
|
163
|
+
highlightedItemSetter: setHighLightedItem
|
|
160
164
|
}
|
|
161
|
-
)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 },
|
|
165
|
+
)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(CostReportsTableComponent, { reports: reportsAggregated, aggregatedBy, periods })))));
|
|
162
166
|
};
|
|
163
167
|
|
|
164
168
|
export { ReportsComponent };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportsComponent.esm.js","sources":["../../../src/components/ReportsComponent/ReportsComponent.tsx"],"sourcesContent":["import { Content, Header, Page, Progress } from '@backstage/core-components';\nimport { alertApiRef, configApiRef, useApi } from '@backstage/core-plugin-api';\nimport { Chip, Grid } from '@material-ui/core';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { addMonths, endOfMonth, startOfMonth } from 'date-fns';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { infraWalletApiRef } from '../../api/InfraWalletApi';\nimport {\n aggregateCostReports,\n filterCostReports,\n getAllReportTags,\n getPeriodStrings,\n mergeCostReports,\n} from '../../api/functions';\nimport { CloudProviderError, Filters, Metric, Report, Tag } from '../../api/types';\nimport { ColumnsChartComponent } from '../ColumnsChartComponent';\nimport { CostReportsTableComponent } from '../CostReportsTableComponent';\nimport { ErrorsAlertComponent } from '../ErrorsAlertComponent';\nimport { FiltersComponent } from '../FiltersComponent';\nimport { PieChartComponent } from '../PieChartComponent';\nimport { TopbarComponent } from '../TopbarComponent';\nimport { MonthRange } from '../types';\n\nexport interface ReportsComponentProps {\n title?: string;\n subTitle?: string;\n}\n\nconst getTotalCost = (report: Report): number => {\n let total = 0;\n Object.keys(report.reports).forEach((s: string) => {\n total += report.reports[s];\n });\n return total;\n};\n\nconst rearrangeData = (report: Report, periods: string[]): any[] => {\n const costs: any[] = [];\n periods.forEach((s: string) => {\n if (report.reports[s] !== undefined) {\n costs.push(report.reports[s]);\n } else {\n costs.push(null);\n }\n });\n return costs;\n};\n\nconst checkIfFiltersActivated = (filters: Filters): boolean => {\n let activated = false;\n Object.keys(filters).forEach((key: string) => {\n if (filters[key].length > 0) {\n activated = true;\n }\n });\n return activated;\n};\n\nexport const ReportsComponent = (props: ReportsComponentProps) => {\n const { title, subTitle } = props;\n const configApi = useApi(configApiRef);\n const params = useParams();\n\n let defaultGroupBy = configApi.getOptionalString('infraWallet.settings.defaultGroupBy') ?? 'none';\n // \"name\" is renamed to \"account\", make it backward compatibility\n if (defaultGroupBy === 'name') {\n defaultGroupBy = 'account';\n }\n\n const defaultShowLastXMonths = configApi.getOptionalNumber('infraWallet.settings.defaultShowLastXMonths') ?? 3;\n\n const MERGE_THRESHOLD = 8;\n const [submittingState, setSubmittingState] = useState<boolean>(false);\n const [selectedTags, setSelectedTags] = useState<Tag[]>([]);\n const [reports, setReports] = useState<Report[]>([]);\n const [metrics, setMetrics] = useState<Metric[]>([]);\n const [filters, setFilters] = useState<Filters>({});\n const [cloudProviderErrors, setCloudProviderErrors] = useState<CloudProviderError[]>([]);\n const [reportsAggregated, setReportsAggregated] = useState<Report[]>([]);\n const [reportsAggregatedAndMerged, setReportsAggregatedAndMerged] = useState<Report[]>([]);\n const [reportTags, setReportTags] = useState<string[]>([]);\n const [granularity, setGranularity] = useState<string>('monthly');\n const [aggregatedBy, setAggregatedBy] = useState<string>(defaultGroupBy);\n const [groups] = useState<string>('');\n const [monthRange, setMonthRange] = useState<MonthRange>({\n startMonth: startOfMonth(addMonths(new Date(), defaultShowLastXMonths * -1 + 1)),\n endMonth: endOfMonth(new Date()),\n });\n const [periods, setPeriods] = useState<string[]>([]);\n\n const alertApi = useApi(alertApiRef);\n const infraWalletApi = useApi(infraWalletApiRef);\n\n const fetchCostReportsCallback = useCallback(async () => {\n setSubmittingState(true);\n await infraWalletApi\n .getCostReports('', selectedTags, groups, granularity, monthRange.startMonth, monthRange.endMonth)\n .then(reportsResponse => {\n if (reportsResponse.data && reportsResponse.data.length > 0) {\n setReports(reportsResponse.data);\n setPeriods(getPeriodStrings(granularity, monthRange.startMonth, monthRange.endMonth));\n }\n if (reportsResponse.status === 207 && reportsResponse.errors) {\n setCloudProviderErrors(reportsResponse.errors);\n }\n })\n .catch(e => alertApi.post({ message: `${e.message}`, severity: 'error' }));\n setSubmittingState(false);\n }, [groups, monthRange, granularity, selectedTags, infraWalletApi, alertApi]);\n\n const fetchMetricsCallback = useCallback(async () => {\n await infraWalletApi\n .getMetrics(params.name ?? 'default', granularity, monthRange.startMonth, monthRange.endMonth)\n .then(metricsResponse => {\n if (metricsResponse.data && metricsResponse.data.length > 0) {\n setMetrics(metricsResponse.data);\n }\n if (metricsResponse.status === 207 && metricsResponse.errors) {\n setCloudProviderErrors(metricsResponse.errors);\n }\n })\n .catch(e => alertApi.post({ message: `${e.message}`, severity: 'error' }));\n }, [params.name, monthRange, granularity, infraWalletApi, alertApi]);\n\n useEffect(() => {\n if (reports.length !== 0) {\n const filteredReports = filterCostReports(reports, filters);\n const aggregatedReports = aggregateCostReports(filteredReports, aggregatedBy);\n const aggregatedAndMergedReports = mergeCostReports(aggregatedReports, MERGE_THRESHOLD);\n const allTags = getAllReportTags(reports);\n setReportsAggregated(aggregatedReports);\n setReportsAggregatedAndMerged(aggregatedAndMergedReports);\n setReportTags(allTags);\n }\n }, [filters, reports, aggregatedBy, granularity, monthRange]);\n\n useEffect(() => {\n fetchCostReportsCallback();\n fetchMetricsCallback();\n }, [fetchCostReportsCallback, fetchMetricsCallback]);\n\n return (\n <Page themeId=\"tool\">\n <Header title={title ?? 'InfraWallet'} subtitle={subTitle ?? ''} />\n <Content>\n {submittingState ? <Progress /> : null}\n <Grid container spacing={3}>\n {cloudProviderErrors.length > 0 && (\n <Grid item xs={12}>\n <ErrorsAlertComponent errors={cloudProviderErrors} />\n </Grid>\n )}\n <Grid item xs={12}>\n <TopbarComponent\n aggregatedBy={aggregatedBy}\n aggregatedBySetter={setAggregatedBy}\n tags={reportTags}\n monthRange={monthRange}\n monthRangeSetter={setMonthRange}\n />\n </Grid>\n <Grid item xs={12}>\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />} aria-controls=\"filters-content\" id=\"filters-header\">\n <Typography>\n Filters {checkIfFiltersActivated(filters) && <Chip size=\"small\" label=\"active\" color=\"primary\" />}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <FiltersComponent\n reports={reports}\n filters={filters}\n monthRange={monthRange}\n filtersSetter={setFilters}\n selectedTagsSetter={setSelectedTags}\n providerErrorsSetter={setCloudProviderErrors}\n />\n </AccordionDetails>\n </Accordion>\n </Grid>\n <Grid item xs={12} md={4} lg={3}>\n {reportsAggregatedAndMerged.length > 0 && (\n <PieChartComponent\n categories={reportsAggregatedAndMerged.map((item: any) => item.id)}\n series={reportsAggregatedAndMerged.map((item: any) => getTotalCost(item))}\n height={350}\n />\n )}\n </Grid>\n <Grid item xs={12} md={8} lg={9}>\n {reportsAggregatedAndMerged.length > 0 && (\n <ColumnsChartComponent\n granularitySetter={setGranularity}\n categories={periods}\n series={reportsAggregatedAndMerged.map((item: any) => ({\n name: item.id,\n type: 'column',\n data: rearrangeData(item, periods),\n }))}\n metrics={metrics.map((item: any) => ({\n name: item.name,\n group: item.group,\n type: 'line',\n data: rearrangeData(item, periods),\n }))}\n height={350}\n />\n )}\n </Grid>\n <Grid item xs={12}>\n {reportsAggregated.length > 0 && (\n <CostReportsTableComponent reports={reportsAggregated} aggregatedBy={aggregatedBy} periods={periods} />\n )}\n </Grid>\n </Grid>\n </Content>\n </Page>\n );\n};\n"],"names":["_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReportsComponent.esm.js","sources":["../../../src/components/ReportsComponent/ReportsComponent.tsx"],"sourcesContent":["import { Content, Header, Page } from '@backstage/core-components';\nimport { alertApiRef, configApiRef, useApi } from '@backstage/core-plugin-api';\nimport { Grid } from '@material-ui/core';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Chip from '@mui/material/Chip';\nimport { addMonths, endOfMonth, startOfMonth } from 'date-fns';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { infraWalletApiRef } from '../../api/InfraWalletApi';\nimport {\n aggregateCostReports,\n filterCostReports,\n getAllReportTags,\n getPeriodStrings,\n mergeCostReports,\n} from '../../api/functions';\nimport { CloudProviderError, Filters, Metric, Report, Tag } from '../../api/types';\nimport { ColumnsChartComponent } from '../ColumnsChartComponent';\nimport { CostReportsTableComponent } from '../CostReportsTableComponent';\nimport { ErrorsAlertComponent } from '../ErrorsAlertComponent';\nimport { FiltersComponent } from '../FiltersComponent';\nimport { PieChartComponent } from '../PieChartComponent';\nimport { TopbarComponent } from '../TopbarComponent';\nimport { MonthRange } from '../types';\n\nexport interface ReportsComponentProps {\n title?: string;\n subTitle?: string;\n}\n\nconst getTotalCost = (report: Report): number => {\n let total = 0;\n Object.keys(report.reports).forEach((s: string) => {\n total += report.reports[s];\n });\n return total;\n};\n\nconst rearrangeData = (report: Report, periods: string[]): any[] => {\n const costs: any[] = [];\n periods.forEach((s: string) => {\n if (report.reports[s] !== undefined) {\n costs.push(report.reports[s]);\n } else {\n costs.push(null);\n }\n });\n return costs;\n};\n\nconst checkIfFiltersActivated = (filters: Filters): boolean => {\n let activated = false;\n Object.keys(filters).forEach((key: string) => {\n if (filters[key].length > 0) {\n activated = true;\n }\n });\n return activated;\n};\n\nexport const ReportsComponent = (props: ReportsComponentProps) => {\n const { title, subTitle } = props;\n const configApi = useApi(configApiRef);\n const params = useParams();\n\n let defaultGroupBy = configApi.getOptionalString('infraWallet.settings.defaultGroupBy') ?? 'none';\n // \"name\" is renamed to \"account\", make it backward compatibility\n if (defaultGroupBy === 'name') {\n defaultGroupBy = 'account';\n }\n\n const defaultShowLastXMonths = configApi.getOptionalNumber('infraWallet.settings.defaultShowLastXMonths') ?? 3;\n\n const MERGE_THRESHOLD = 8;\n\n const [selectedTags, setSelectedTags] = useState<Tag[]>([]);\n const [reports, setReports] = useState<Report[]>([]);\n const [metrics, setMetrics] = useState<Metric[]>([]);\n const [filters, setFilters] = useState<Filters>({});\n const [cloudProviderErrors, setCloudProviderErrors] = useState<CloudProviderError[]>([]);\n const [reportsAggregated, setReportsAggregated] = useState<Report[] | undefined>(undefined);\n const [reportsAggregatedAndMerged, setReportsAggregatedAndMerged] = useState<Report[] | undefined>(undefined);\n const [reportTags, setReportTags] = useState<string[]>([]);\n const [granularity, setGranularity] = useState<string>('monthly');\n const [aggregatedBy, setAggregatedBy] = useState<string>(defaultGroupBy);\n const [groups] = useState<string>('');\n const [monthRange, setMonthRange] = useState<MonthRange>({\n startMonth: startOfMonth(addMonths(new Date(), defaultShowLastXMonths * -1 + 1)),\n endMonth: endOfMonth(new Date()),\n });\n const [periods, setPeriods] = useState<string[]>([]);\n const [highlightedItem, setHighLightedItem] = useState<string | undefined>(undefined);\n\n const alertApi = useApi(alertApiRef);\n const infraWalletApi = useApi(infraWalletApiRef);\n\n const fetchCostReportsCallback = useCallback(async () => {\n setReportsAggregated(undefined);\n setReportsAggregatedAndMerged(undefined);\n await infraWalletApi\n .getCostReports('', selectedTags, groups, granularity, monthRange.startMonth, monthRange.endMonth)\n .then(reportsResponse => {\n if (reportsResponse.data && reportsResponse.data.length > 0) {\n setReports(reportsResponse.data);\n setPeriods(getPeriodStrings(granularity, monthRange.startMonth, monthRange.endMonth));\n }\n if (reportsResponse.status === 207 && reportsResponse.errors) {\n setCloudProviderErrors(reportsResponse.errors);\n }\n })\n .catch(e => alertApi.post({ message: `${e.message}`, severity: 'error' }));\n }, [groups, monthRange, granularity, selectedTags, infraWalletApi, alertApi]);\n\n const fetchMetricsCallback = useCallback(async () => {\n await infraWalletApi\n .getMetrics(params.name ?? 'default', granularity, monthRange.startMonth, monthRange.endMonth)\n .then(metricsResponse => {\n if (metricsResponse.data && metricsResponse.data.length > 0) {\n setMetrics(metricsResponse.data);\n }\n if (metricsResponse.status === 207 && metricsResponse.errors) {\n setCloudProviderErrors(metricsResponse.errors);\n }\n })\n .catch(e => alertApi.post({ message: `${e.message}`, severity: 'error' }));\n }, [params.name, monthRange, granularity, infraWalletApi, alertApi]);\n\n useEffect(() => {\n if (reports.length !== 0) {\n const filteredReports = filterCostReports(reports, filters);\n const aggregatedReports = aggregateCostReports(filteredReports, aggregatedBy);\n const aggregatedAndMergedReports = mergeCostReports(aggregatedReports, MERGE_THRESHOLD);\n const allTags = getAllReportTags(reports);\n setReportsAggregated(aggregatedReports);\n setReportsAggregatedAndMerged(aggregatedAndMergedReports);\n setReportTags(allTags);\n }\n }, [filters, reports, aggregatedBy, granularity, monthRange]);\n\n useEffect(() => {\n fetchCostReportsCallback();\n fetchMetricsCallback();\n }, [fetchCostReportsCallback, fetchMetricsCallback]);\n\n return (\n <Page themeId=\"tool\">\n <Header title={title ?? 'InfraWallet'} subtitle={subTitle ?? ''} />\n <Content>\n <Grid container spacing={3}>\n {cloudProviderErrors.length > 0 && (\n <Grid item xs={12}>\n <ErrorsAlertComponent errors={cloudProviderErrors} />\n </Grid>\n )}\n <Grid item xs={12}>\n <TopbarComponent\n aggregatedBy={aggregatedBy}\n aggregatedBySetter={setAggregatedBy}\n tags={reportTags}\n monthRange={monthRange}\n monthRangeSetter={setMonthRange}\n />\n </Grid>\n <Grid item xs={12}>\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />} aria-controls=\"filters-content\" id=\"filters-header\">\n <Typography>\n Filters {checkIfFiltersActivated(filters) && <Chip size=\"small\" label=\"active\" color=\"primary\" />}\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <FiltersComponent\n reports={reports}\n filters={filters}\n monthRange={monthRange}\n filtersSetter={setFilters}\n selectedTagsSetter={setSelectedTags}\n providerErrorsSetter={setCloudProviderErrors}\n />\n </AccordionDetails>\n </Accordion>\n </Grid>\n <Grid item xs={12} md={4} lg={3}>\n <PieChartComponent\n categories={\n reportsAggregatedAndMerged ? reportsAggregatedAndMerged.map((item: any) => item.id) : undefined\n }\n series={\n reportsAggregatedAndMerged\n ? reportsAggregatedAndMerged.map((item: any) => getTotalCost(item))\n : undefined\n }\n height={350}\n highlightedItem={highlightedItem}\n highlightedItemSetter={setHighLightedItem}\n />\n </Grid>\n <Grid item xs={12} md={8} lg={9}>\n <ColumnsChartComponent\n granularity={granularity}\n granularitySetter={setGranularity}\n categories={periods}\n costs={\n reportsAggregatedAndMerged\n ? reportsAggregatedAndMerged.map((item: any) => ({\n name: item.id,\n data: rearrangeData(item, periods),\n }))\n : undefined\n }\n metrics={metrics.map((item: any) => ({\n name: item.name,\n group: item.group,\n data: rearrangeData(item, periods),\n }))}\n height={350}\n highlightedItem={highlightedItem}\n highlightedItemSetter={setHighLightedItem}\n />\n </Grid>\n <Grid item xs={12}>\n <CostReportsTableComponent reports={reportsAggregated} aggregatedBy={aggregatedBy} periods={periods} />\n </Grid>\n </Grid>\n </Content>\n </Page>\n );\n};\n"],"names":["_a"],"mappings":"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"}
|