@backstage-community/plugin-apiiro 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +91 -12
- package/config.d.ts +14 -0
- package/dist/App.esm.js +96 -4
- package/dist/App.esm.js.map +1 -1
- package/dist/api/index.esm.js +6 -0
- package/dist/api/index.esm.js.map +1 -1
- package/dist/assets/SettingIcon.esm.js +1 -0
- package/dist/assets/SettingIcon.esm.js.map +1 -1
- package/dist/components/ApiiroSidebar.esm.js.map +1 -1
- package/dist/components/CalendarDatePicker.esm.js.map +1 -1
- package/dist/components/DataGrid/DataGrid.esm.js +1 -0
- package/dist/components/DataGrid/DataGrid.esm.js.map +1 -1
- package/dist/components/MetricsGroup/TabMetricsGroup.esm.js +28 -4
- package/dist/components/MetricsGroup/TabMetricsGroup.esm.js.map +1 -1
- package/dist/components/MetricsGroup/WidgetMetricsGroup.esm.js +30 -7
- package/dist/components/MetricsGroup/WidgetMetricsGroup.esm.js.map +1 -1
- package/dist/components/RiskLevel.esm.js +1 -0
- package/dist/components/RiskLevel.esm.js.map +1 -1
- package/dist/components/charts/GaugeChart.esm.js +8 -6
- package/dist/components/charts/GaugeChart.esm.js.map +1 -1
- package/dist/components/common/StatusContainer.esm.js +123 -0
- package/dist/components/common/StatusContainer.esm.js.map +1 -0
- package/dist/components/filters/DiscoveredOnFilter.esm.js +1 -1
- package/dist/components/filters/DiscoveredOnFilter.esm.js.map +1 -1
- package/dist/components/tiles/MttrVsSLATile.esm.js +31 -14
- package/dist/components/tiles/MttrVsSLATile.esm.js.map +1 -1
- package/dist/components/tiles/RiskOverTimeTile.esm.js +15 -12
- package/dist/components/tiles/RiskOverTimeTile.esm.js.map +1 -1
- package/dist/components/tiles/SLAAdherenceTile.esm.js +15 -12
- package/dist/components/tiles/SLAAdherenceTile.esm.js.map +1 -1
- package/dist/components/tiles/StatusTile.esm.js +98 -66
- package/dist/components/tiles/StatusTile.esm.js.map +1 -1
- package/dist/components/tiles/TopLanguagesTile.esm.js +1 -0
- package/dist/components/tiles/TopLanguagesTile.esm.js.map +1 -1
- package/dist/components/tiles/TopRiskTile.esm.js +19 -16
- package/dist/components/tiles/TopRiskTile.esm.js.map +1 -1
- package/dist/index.d.ts +31 -6
- package/dist/index.esm.js +2 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/pages/Applications/Applications.esm.js +104 -0
- package/dist/pages/Applications/Applications.esm.js.map +1 -0
- package/dist/pages/Applications/tableConfig.esm.js +147 -0
- package/dist/pages/Applications/tableConfig.esm.js.map +1 -0
- package/dist/pages/Repositories/Repositories.esm.js +26 -26
- package/dist/pages/Repositories/Repositories.esm.js.map +1 -1
- package/dist/pages/Repositories/tableConfig.esm.js +3 -2
- package/dist/pages/Repositories/tableConfig.esm.js.map +1 -1
- package/dist/pages/Risks/Risks.esm.js +9 -3
- package/dist/pages/Risks/Risks.esm.js.map +1 -1
- package/dist/pages/Risks/tableConfig.esm.js +25 -11
- package/dist/pages/Risks/tableConfig.esm.js.map +1 -1
- package/dist/pages/tab/ComponentTab.esm.js +72 -0
- package/dist/pages/tab/ComponentTab.esm.js.map +1 -0
- package/dist/pages/tab/SystemTab.esm.js +159 -0
- package/dist/pages/tab/SystemTab.esm.js.map +1 -0
- package/dist/pages/tab/TabProvider.esm.js +9 -3
- package/dist/pages/tab/TabProvider.esm.js.map +1 -1
- package/dist/pages/widget/ComponentWidget.esm.js +67 -0
- package/dist/pages/widget/ComponentWidget.esm.js.map +1 -0
- package/dist/pages/widget/SystemWidget.esm.js +81 -0
- package/dist/pages/widget/SystemWidget.esm.js.map +1 -0
- package/dist/pages/widget/WidgetProvider.esm.js +9 -3
- package/dist/pages/widget/WidgetProvider.esm.js.map +1 -1
- package/dist/plugin.esm.js.map +1 -1
- package/dist/queries/application.queries.esm.js +64 -0
- package/dist/queries/application.queries.esm.js.map +1 -0
- package/dist/queries/mttr-statistics.queries.esm.js +19 -12
- package/dist/queries/mttr-statistics.queries.esm.js.map +1 -1
- package/dist/queries/repository.queries.esm.js +19 -8
- package/dist/queries/repository.queries.esm.js.map +1 -1
- package/dist/queries/risk-score-over-time.queries.esm.js +19 -12
- package/dist/queries/risk-score-over-time.queries.esm.js.map +1 -1
- package/dist/queries/risks.queries.esm.js +19 -7
- package/dist/queries/risks.queries.esm.js.map +1 -1
- package/dist/queries/sla-breach.queries.esm.js +22 -11
- package/dist/queries/sla-breach.queries.esm.js.map +1 -1
- package/dist/queries/top-risks.queries.esm.js +19 -7
- package/dist/queries/top-risks.queries.esm.js.map +1 -1
- package/dist/theme/themeUtils.esm.js +5 -2
- package/dist/theme/themeUtils.esm.js.map +1 -1
- package/dist/utils/utils.esm.js +3 -2
- package/dist/utils/utils.esm.js.map +1 -1
- package/package.json +12 -12
- package/dist/pages/tab/Tab.esm.js +0 -147
- package/dist/pages/tab/Tab.esm.js.map +0 -1
- package/dist/pages/widget/Widget.esm.js +0 -161
- package/dist/pages/widget/Widget.esm.js.map +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useApi, fetchApiRef } from '@backstage/core-plugin-api';
|
|
4
|
+
import { apiiroApiRef } from '../../api/index.esm.js';
|
|
5
|
+
import { DataGrid } from '../../components/DataGrid/DataGrid.esm.js';
|
|
6
|
+
import '@mui/material/Box';
|
|
7
|
+
import '@mui/material/Typography';
|
|
8
|
+
import '@mui/material/Select';
|
|
9
|
+
import '@mui/material/MenuItem';
|
|
10
|
+
import '@mui/material/Pagination';
|
|
11
|
+
import '@mui/material/styles';
|
|
12
|
+
import '@mui/x-data-grid';
|
|
13
|
+
import '@mui/material/ListItemIcon';
|
|
14
|
+
import '@mui/material/ListItemText';
|
|
15
|
+
import '@mui/icons-material';
|
|
16
|
+
import '@mui/material/TextField';
|
|
17
|
+
import '@mui/material/InputAdornment';
|
|
18
|
+
import '@mui/icons-material/Search';
|
|
19
|
+
import '@mui/icons-material/Clear';
|
|
20
|
+
import '@mui/material/IconButton';
|
|
21
|
+
import '@tanstack/react-query';
|
|
22
|
+
import { useApplicationsData } from '../../queries/application.queries.esm.js';
|
|
23
|
+
import { applicationColumnVisibility, applicationColumns } from './tableConfig.esm.js';
|
|
24
|
+
import '../../components/common/ChartBox.esm.js';
|
|
25
|
+
import 'react-dom';
|
|
26
|
+
import { StatusContainer } from '../../components/common/StatusContainer.esm.js';
|
|
27
|
+
import { Content } from '@backstage/core-components';
|
|
28
|
+
|
|
29
|
+
const INITIAL_SORTING = [
|
|
30
|
+
{
|
|
31
|
+
field: "riskScore",
|
|
32
|
+
sort: "desc"
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
const PAGE_SIZE_OPTIONS = [10, 20, 50, 100];
|
|
36
|
+
const DATA_GRID_FEATURES = {
|
|
37
|
+
quickSearch: true,
|
|
38
|
+
columnPinning: true,
|
|
39
|
+
columnReordering: true,
|
|
40
|
+
customPagination: true,
|
|
41
|
+
columnMenu: true,
|
|
42
|
+
persistLayout: true
|
|
43
|
+
};
|
|
44
|
+
const Applications = () => {
|
|
45
|
+
const connectBackendApi = useApi(apiiroApiRef);
|
|
46
|
+
const { fetch } = useApi(fetchApiRef);
|
|
47
|
+
const enableApplicationsView = connectBackendApi.getEnableApplicationsView();
|
|
48
|
+
const { applicationsData, applicationsDataLoading, applicationsDataError } = useApplicationsData({
|
|
49
|
+
connectApi: connectBackendApi,
|
|
50
|
+
fetchApi: fetch,
|
|
51
|
+
enabled: enableApplicationsView
|
|
52
|
+
});
|
|
53
|
+
const rows = useMemo(
|
|
54
|
+
() => applicationsData?.applications || [],
|
|
55
|
+
[applicationsData?.applications]
|
|
56
|
+
);
|
|
57
|
+
if (!enableApplicationsView) {
|
|
58
|
+
return /* @__PURE__ */ jsx(
|
|
59
|
+
StatusContainer,
|
|
60
|
+
{
|
|
61
|
+
isLoading: false,
|
|
62
|
+
isEmpty: true,
|
|
63
|
+
wrapper: Content,
|
|
64
|
+
notFoundMessage: "Please enable the applications view in the Apiiro plugin configuration.",
|
|
65
|
+
showLogo: false,
|
|
66
|
+
children: null
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
StatusContainer,
|
|
72
|
+
{
|
|
73
|
+
isLoading: applicationsDataLoading,
|
|
74
|
+
error: applicationsDataError,
|
|
75
|
+
isEmpty: !rows,
|
|
76
|
+
notFoundMessage: "No Apiiro applications found.",
|
|
77
|
+
showLogo: false,
|
|
78
|
+
children: /* @__PURE__ */ jsx(
|
|
79
|
+
DataGrid,
|
|
80
|
+
{
|
|
81
|
+
getRowId: (row) => `${row.key}-${row.entityUrl}`,
|
|
82
|
+
loading: applicationsDataLoading,
|
|
83
|
+
tableKey: "applications",
|
|
84
|
+
columns: applicationColumns,
|
|
85
|
+
rows,
|
|
86
|
+
dataLabel: "applications",
|
|
87
|
+
searchBarPlaceHolder: "Search application name...",
|
|
88
|
+
features: DATA_GRID_FEATURES,
|
|
89
|
+
initialState: {
|
|
90
|
+
sorting: {
|
|
91
|
+
sortModel: INITIAL_SORTING
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
initialPageSize: PAGE_SIZE_OPTIONS[0],
|
|
95
|
+
pageSizeOptions: PAGE_SIZE_OPTIONS,
|
|
96
|
+
columnVisibility: applicationColumnVisibility
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export { Applications };
|
|
104
|
+
//# sourceMappingURL=Applications.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Applications.esm.js","sources":["../../../src/pages/Applications/Applications.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useMemo } from 'react';\nimport { fetchApiRef, useApi } from '@backstage/core-plugin-api';\nimport { apiiroApiRef } from '../../api';\nimport { DataGrid } from '../../components/DataGrid';\nimport { ApplicationType, useApplicationsData } from '../../queries';\nimport { applicationColumns, applicationColumnVisibility } from './tableConfig';\nimport { StatusContainer } from '../../components/common';\nimport { Content } from '@backstage/core-components';\n\nconst INITIAL_SORTING = [\n {\n field: 'riskScore',\n sort: 'desc' as const,\n },\n];\n\nconst PAGE_SIZE_OPTIONS = [10, 20, 50, 100];\n\nconst DATA_GRID_FEATURES = {\n quickSearch: true,\n columnPinning: true,\n columnReordering: true,\n customPagination: true,\n columnMenu: true,\n persistLayout: true,\n} as const;\n\nexport const Applications = () => {\n const connectBackendApi = useApi(apiiroApiRef);\n const { fetch } = useApi(fetchApiRef);\n const enableApplicationsView = connectBackendApi.getEnableApplicationsView();\n\n const { applicationsData, applicationsDataLoading, applicationsDataError } =\n useApplicationsData({\n connectApi: connectBackendApi,\n fetchApi: fetch,\n enabled: enableApplicationsView,\n });\n\n const rows = useMemo(\n () => applicationsData?.applications || [],\n [applicationsData?.applications],\n );\n\n if (!enableApplicationsView) {\n return (\n <StatusContainer\n isLoading={false}\n isEmpty\n wrapper={Content}\n notFoundMessage=\"Please enable the applications view in the Apiiro plugin configuration.\"\n showLogo={false}\n >\n {null}\n </StatusContainer>\n );\n }\n\n return (\n <StatusContainer\n isLoading={applicationsDataLoading}\n error={applicationsDataError}\n isEmpty={!rows}\n notFoundMessage=\"No Apiiro applications found.\"\n showLogo={false}\n >\n <DataGrid<ApplicationType>\n getRowId={row => `${row.key}-${row.entityUrl}`}\n loading={applicationsDataLoading}\n tableKey=\"applications\"\n columns={applicationColumns}\n rows={rows}\n dataLabel=\"applications\"\n searchBarPlaceHolder=\"Search application name...\"\n features={DATA_GRID_FEATURES}\n initialState={{\n sorting: {\n sortModel: INITIAL_SORTING,\n },\n }}\n initialPageSize={PAGE_SIZE_OPTIONS[0]}\n pageSizeOptions={PAGE_SIZE_OPTIONS}\n columnVisibility={applicationColumnVisibility}\n />\n </StatusContainer>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,eAAA,GAAkB;AAAA,EACtB;AAAA,IACE,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAE1C,MAAM,kBAAA,GAAqB;AAAA,EACzB,WAAA,EAAa,IAAA;AAAA,EACb,aAAA,EAAe,IAAA;AAAA,EACf,gBAAA,EAAkB,IAAA;AAAA,EAClB,gBAAA,EAAkB,IAAA;AAAA,EAClB,UAAA,EAAY,IAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAEO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,iBAAA,GAAoB,OAAO,YAAY,CAAA;AAC7C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAA,CAAO,WAAW,CAAA;AACpC,EAAA,MAAM,sBAAA,GAAyB,kBAAkB,yBAAA,EAA0B;AAE3E,EAAA,MAAM,EAAE,gBAAA,EAAkB,uBAAA,EAAyB,qBAAA,KACjD,mBAAA,CAAoB;AAAA,IAClB,UAAA,EAAY,iBAAA;AAAA,IACZ,QAAA,EAAU,KAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACV,CAAA;AAEH,EAAA,MAAM,IAAA,GAAO,OAAA;AAAA,IACX,MAAM,gBAAA,EAAkB,YAAA,IAAgB,EAAC;AAAA,IACzC,CAAC,kBAAkB,YAAY;AAAA,GACjC;AAEA,EAAA,IAAI,CAAC,sBAAA,EAAwB;AAC3B,IAAA,uBACE,GAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAO,IAAA;AAAA,QACP,OAAA,EAAS,OAAA;AAAA,QACT,eAAA,EAAgB,yEAAA;AAAA,QAChB,QAAA,EAAU,KAAA;AAAA,QAET,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,uBAAA;AAAA,MACX,KAAA,EAAO,qBAAA;AAAA,MACP,SAAS,CAAC,IAAA;AAAA,MACV,eAAA,EAAgB,+BAAA;AAAA,MAChB,QAAA,EAAU,KAAA;AAAA,MAEV,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,UAAU,CAAA,GAAA,KAAO,CAAA,EAAG,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,SAAS,CAAA,CAAA;AAAA,UAC5C,OAAA,EAAS,uBAAA;AAAA,UACT,QAAA,EAAS,cAAA;AAAA,UACT,OAAA,EAAS,kBAAA;AAAA,UACT,IAAA;AAAA,UACA,SAAA,EAAU,cAAA;AAAA,UACV,oBAAA,EAAqB,4BAAA;AAAA,UACrB,QAAA,EAAU,kBAAA;AAAA,UACV,YAAA,EAAc;AAAA,YACZ,OAAA,EAAS;AAAA,cACP,SAAA,EAAW;AAAA;AACb,WACF;AAAA,UACA,eAAA,EAAiB,kBAAkB,CAAC,CAAA;AAAA,UACpC,eAAA,EAAiB,iBAAA;AAAA,UACjB,gBAAA,EAAkB;AAAA;AAAA;AACpB;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Link } from 'react-router-dom';
|
|
3
|
+
import '@backstage/core-components';
|
|
4
|
+
import '@mui/material/SvgIcon';
|
|
5
|
+
import 'react';
|
|
6
|
+
import '@mui/x-data-grid';
|
|
7
|
+
import '@mui/material/Box';
|
|
8
|
+
import '@mui/material/styles';
|
|
9
|
+
import '@mui/material/MenuItem';
|
|
10
|
+
import '@mui/material/ListItemIcon';
|
|
11
|
+
import '@mui/material/ListItemText';
|
|
12
|
+
import '@mui/icons-material';
|
|
13
|
+
import '@mui/material/Typography';
|
|
14
|
+
import '@mui/material/Select';
|
|
15
|
+
import '@mui/material/Pagination';
|
|
16
|
+
import '@mui/material/TextField';
|
|
17
|
+
import '@mui/material/InputAdornment';
|
|
18
|
+
import '@mui/icons-material/Search';
|
|
19
|
+
import '@mui/icons-material/Clear';
|
|
20
|
+
import '@mui/material/IconButton';
|
|
21
|
+
import '../../components/common/ChartBox.esm.js';
|
|
22
|
+
import 'react-dom';
|
|
23
|
+
import '../../components/common/StatusContainer.esm.js';
|
|
24
|
+
import '../../components/common/logoSpinner.esm.js';
|
|
25
|
+
import { Chip } from '../../components/Chip.esm.js';
|
|
26
|
+
import { SimpleTooltip } from '../../components/SimpleTooltip.esm.js';
|
|
27
|
+
import { RiskLevel } from '../../components/RiskLevel.esm.js';
|
|
28
|
+
import '@mui/material/Avatar';
|
|
29
|
+
import '@mui/material/Chip';
|
|
30
|
+
import '@mui/material/Link';
|
|
31
|
+
import 'react-icons/vsc';
|
|
32
|
+
import 'react-icons/si';
|
|
33
|
+
import '@backstage-community/plugin-apiiro-common';
|
|
34
|
+
import '../../components/filters/FilterDropdown.esm.js';
|
|
35
|
+
import '../../components/filters/RiskInsightFilter.esm.js';
|
|
36
|
+
import '../../components/CalendarDatePicker.esm.js';
|
|
37
|
+
import '@mui/material/ButtonBase';
|
|
38
|
+
import '@mui/material/Popper';
|
|
39
|
+
import '@mui/material/ClickAwayListener';
|
|
40
|
+
import '@mui/material/Tooltip';
|
|
41
|
+
import '@mui/material/Skeleton';
|
|
42
|
+
import '@mui/icons-material/KeyboardArrowDown';
|
|
43
|
+
import '@mui/icons-material/Close';
|
|
44
|
+
|
|
45
|
+
const businessImpactColorMapping = {
|
|
46
|
+
High: "error",
|
|
47
|
+
Medium: "warning",
|
|
48
|
+
Low: "warning"
|
|
49
|
+
};
|
|
50
|
+
const applicationColumns = [
|
|
51
|
+
{
|
|
52
|
+
field: "name",
|
|
53
|
+
headerName: "Application Name",
|
|
54
|
+
flex: 1.5,
|
|
55
|
+
hideable: false,
|
|
56
|
+
minWidth: 230,
|
|
57
|
+
renderCell: (params) => {
|
|
58
|
+
const redirectURL = `${params.row.entityUrl}/apiiro`;
|
|
59
|
+
return /* @__PURE__ */ jsx(SimpleTooltip, { title: params.value || "", children: /* @__PURE__ */ jsx(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
style: {
|
|
63
|
+
display: "flex",
|
|
64
|
+
alignItems: "center",
|
|
65
|
+
gap: "5px",
|
|
66
|
+
width: "100%",
|
|
67
|
+
minWidth: 0
|
|
68
|
+
},
|
|
69
|
+
children: /* @__PURE__ */ jsx(
|
|
70
|
+
Link,
|
|
71
|
+
{
|
|
72
|
+
to: redirectURL,
|
|
73
|
+
style: {
|
|
74
|
+
overflow: "hidden",
|
|
75
|
+
textOverflow: "ellipsis",
|
|
76
|
+
whiteSpace: "nowrap",
|
|
77
|
+
minWidth: 0,
|
|
78
|
+
flex: 1
|
|
79
|
+
},
|
|
80
|
+
children: params.value
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
) });
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
field: "description",
|
|
89
|
+
headerName: "Description",
|
|
90
|
+
flex: 2,
|
|
91
|
+
minWidth: 250,
|
|
92
|
+
renderCell: (params) => /* @__PURE__ */ jsx(SimpleTooltip, { title: params.value ?? "", children: params.value ?? "" })
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
field: "businessImpact",
|
|
96
|
+
headerName: "Business Impact",
|
|
97
|
+
flex: 1.2,
|
|
98
|
+
minWidth: 150,
|
|
99
|
+
headerAlign: "center",
|
|
100
|
+
renderCell: (params) => /* @__PURE__ */ jsx(SimpleTooltip, { title: params.value ?? "", centered: true, children: /* @__PURE__ */ jsx(
|
|
101
|
+
Chip,
|
|
102
|
+
{
|
|
103
|
+
label: params.value,
|
|
104
|
+
colorMapping: businessImpactColorMapping,
|
|
105
|
+
size: "small",
|
|
106
|
+
variant: "outlined",
|
|
107
|
+
chipSx: { marginBottom: "0" }
|
|
108
|
+
}
|
|
109
|
+
) })
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
field: "riskLevel",
|
|
113
|
+
headerName: "Risk Level",
|
|
114
|
+
flex: 1,
|
|
115
|
+
minWidth: 150,
|
|
116
|
+
headerAlign: "center",
|
|
117
|
+
renderCell: (params) => /* @__PURE__ */ jsx(SimpleTooltip, { title: params.value ?? "", centered: true, children: /* @__PURE__ */ jsx(RiskLevel, { level: params.value, iconSize: "large" }) })
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
field: "riskScore",
|
|
121
|
+
headerName: "Risk Score",
|
|
122
|
+
flex: 1,
|
|
123
|
+
minWidth: 120,
|
|
124
|
+
headerAlign: "center",
|
|
125
|
+
renderCell: (params) => /* @__PURE__ */ jsx(SimpleTooltip, { title: params.value ?? "", centered: true, children: params.value ?? "" })
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
field: "isActive",
|
|
129
|
+
headerName: "Status",
|
|
130
|
+
flex: 1,
|
|
131
|
+
minWidth: 120,
|
|
132
|
+
headerAlign: "center",
|
|
133
|
+
valueGetter: (_, row) => row.isActive ? "Active" : "Inactive",
|
|
134
|
+
renderCell: (params) => /* @__PURE__ */ jsx(SimpleTooltip, { title: params.formattedValue || "", centered: true, children: params.formattedValue })
|
|
135
|
+
}
|
|
136
|
+
];
|
|
137
|
+
const applicationColumnVisibility = {
|
|
138
|
+
name: true,
|
|
139
|
+
description: true,
|
|
140
|
+
businessImpact: true,
|
|
141
|
+
riskLevel: true,
|
|
142
|
+
riskScore: true,
|
|
143
|
+
isActive: true
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export { applicationColumnVisibility, applicationColumns, businessImpactColorMapping };
|
|
147
|
+
//# sourceMappingURL=tableConfig.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableConfig.esm.js","sources":["../../../src/pages/Applications/tableConfig.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { GridColDef } from '@mui/x-data-grid';\nimport { Link } from 'react-router-dom';\nimport { Chip, RiskLevel, SimpleTooltip } from '../../components';\n\n// Color mapping for business impact\nexport const businessImpactColorMapping = {\n High: 'error',\n Medium: 'warning',\n Low: 'warning',\n} as const;\n\n// Application columns configuration\nexport const applicationColumns: GridColDef[] = [\n {\n field: 'name',\n headerName: 'Application Name',\n flex: 1.5,\n hideable: false,\n minWidth: 230,\n renderCell: (params: any) => {\n const redirectURL = `${params.row.entityUrl}/apiiro`;\n return (\n <SimpleTooltip title={params.value || ''}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n width: '100%',\n minWidth: 0,\n }}\n >\n <Link\n to={redirectURL}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n flex: 1,\n }}\n >\n {params.value}\n </Link>\n </div>\n </SimpleTooltip>\n );\n },\n },\n {\n field: 'description',\n headerName: 'Description',\n flex: 2,\n minWidth: 250,\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''}>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'businessImpact',\n headerName: 'Business Impact',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <Chip\n label={params.value}\n colorMapping={businessImpactColorMapping}\n size=\"small\"\n variant=\"outlined\"\n chipSx={{ marginBottom: '0' }}\n />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskLevel',\n headerName: 'Risk Level',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <RiskLevel level={params.value} iconSize=\"large\" />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskScore',\n headerName: 'Risk Score',\n flex: 1,\n minWidth: 120,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'isActive',\n headerName: 'Status',\n flex: 1,\n minWidth: 120,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isActive ? 'Active' : 'Inactive'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n];\n\nexport const applicationColumnVisibility = {\n name: true,\n description: true,\n businessImpact: true,\n riskLevel: true,\n riskScore: true,\n isActive: true,\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ import { useMemo } from 'react';
|
|
|
3
3
|
import { Page, Content } from '@backstage/core-components';
|
|
4
4
|
import { useApi, fetchApiRef } from '@backstage/core-plugin-api';
|
|
5
5
|
import Typography from '@mui/material/Typography';
|
|
6
|
-
import Box from '@mui/material/Box';
|
|
7
6
|
import { apiiroApiRef } from '../../api/index.esm.js';
|
|
8
7
|
import { DataGrid } from '../../components/DataGrid/DataGrid.esm.js';
|
|
8
|
+
import '@mui/material/Box';
|
|
9
9
|
import '@mui/material/Select';
|
|
10
10
|
import '@mui/material/MenuItem';
|
|
11
11
|
import '@mui/material/Pagination';
|
|
@@ -25,21 +25,8 @@ import '@tanstack/react-query';
|
|
|
25
25
|
import { columnVisibilityModal, repositoryColumns } from './tableConfig.esm.js';
|
|
26
26
|
import '../../components/common/ChartBox.esm.js';
|
|
27
27
|
import 'react-dom';
|
|
28
|
-
import {
|
|
28
|
+
import { StatusContainer } from '../../components/common/StatusContainer.esm.js';
|
|
29
29
|
|
|
30
|
-
const SomethingWentWrongBox = ({ statusCode }) => {
|
|
31
|
-
return /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(
|
|
32
|
-
Box,
|
|
33
|
-
{
|
|
34
|
-
display: "flex",
|
|
35
|
-
justifyContent: "center",
|
|
36
|
-
alignItems: "center",
|
|
37
|
-
flexDirection: "column",
|
|
38
|
-
minHeight: "300px",
|
|
39
|
-
children: /* @__PURE__ */ jsx(SomethingWentWrong, { statusCode })
|
|
40
|
-
}
|
|
41
|
-
) });
|
|
42
|
-
};
|
|
43
30
|
const INITIAL_SORTING = [
|
|
44
31
|
{
|
|
45
32
|
field: "riskScore",
|
|
@@ -55,25 +42,29 @@ const DATA_GRID_FEATURES = {
|
|
|
55
42
|
columnMenu: true,
|
|
56
43
|
persistLayout: true
|
|
57
44
|
};
|
|
58
|
-
const
|
|
45
|
+
const RepositoriesContent = ({
|
|
46
|
+
applicationId
|
|
47
|
+
}) => {
|
|
59
48
|
const connectBackendApi = useApi(apiiroApiRef);
|
|
60
49
|
const { fetch } = useApi(fetchApiRef);
|
|
61
50
|
const { repositoriesData, repositoriesDataLoading, repositoriesDataError } = useRepositoriesData({
|
|
62
51
|
connectApi: connectBackendApi,
|
|
63
|
-
fetchApi: fetch
|
|
52
|
+
fetchApi: fetch,
|
|
53
|
+
applicationId
|
|
64
54
|
});
|
|
65
55
|
const rows = useMemo(
|
|
66
56
|
() => repositoriesData?.repositories || [],
|
|
67
57
|
[repositoriesData?.repositories]
|
|
68
58
|
);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
StatusContainer,
|
|
61
|
+
{
|
|
62
|
+
isLoading: repositoriesDataLoading,
|
|
63
|
+
error: repositoriesDataError,
|
|
64
|
+
isEmpty: !rows,
|
|
65
|
+
notFoundMessage: "No repositories found.",
|
|
66
|
+
showLogo: applicationId ? true : false,
|
|
67
|
+
children: /* @__PURE__ */ jsx(
|
|
77
68
|
DataGrid,
|
|
78
69
|
{
|
|
79
70
|
getRowId: (row) => `${row.key}-${row.entityUrl}`,
|
|
@@ -94,9 +85,18 @@ const Repositories = () => {
|
|
|
94
85
|
columnVisibility: columnVisibilityModal
|
|
95
86
|
}
|
|
96
87
|
)
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
};
|
|
91
|
+
const Repositories = () => {
|
|
92
|
+
return /* @__PURE__ */ jsxs(Page, { themeId: "tool", children: [
|
|
93
|
+
/* @__PURE__ */ jsx(Header, {}),
|
|
94
|
+
/* @__PURE__ */ jsxs(Content, { children: [
|
|
95
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h4", sx: { color: "text.primary", mb: 2 }, children: "Repositories" }),
|
|
96
|
+
/* @__PURE__ */ jsx(RepositoriesContent, {})
|
|
97
97
|
] })
|
|
98
98
|
] });
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
export { Repositories };
|
|
101
|
+
export { Repositories, RepositoriesContent };
|
|
102
102
|
//# sourceMappingURL=Repositories.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repositories.esm.js","sources":["../../../src/pages/Repositories/Repositories.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useMemo } from 'react';\nimport { Content, Page } from '@backstage/core-components';\nimport { fetchApiRef, useApi } from '@backstage/core-plugin-api';\nimport Typography from '@mui/material/Typography';\nimport
|
|
1
|
+
{"version":3,"file":"Repositories.esm.js","sources":["../../../src/pages/Repositories/Repositories.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useMemo } from 'react';\nimport { Content, Page } from '@backstage/core-components';\nimport { fetchApiRef, useApi } from '@backstage/core-plugin-api';\nimport Typography from '@mui/material/Typography';\nimport { apiiroApiRef } from '../../api';\nimport { DataGrid } from '../../components/DataGrid';\nimport { Header } from '../../components/Header';\nimport { RepositoryType, useRepositoriesData } from '../../queries';\nimport { columnVisibilityModal, repositoryColumns } from './tableConfig';\nimport { StatusContainer } from '../../components/common';\n\nconst INITIAL_SORTING = [\n {\n field: 'riskScore',\n sort: 'desc' as const,\n },\n];\n\nconst PAGE_SIZE_OPTIONS = [10, 20, 50, 100];\n\nconst DATA_GRID_FEATURES = {\n quickSearch: true,\n columnPinning: true,\n columnReordering: true,\n customPagination: true,\n columnMenu: true,\n persistLayout: true,\n} as const;\n\nexport const RepositoriesContent = ({\n applicationId,\n}: {\n applicationId?: string;\n}) => {\n const connectBackendApi = useApi(apiiroApiRef);\n const { fetch } = useApi(fetchApiRef);\n\n const { repositoriesData, repositoriesDataLoading, repositoriesDataError } =\n useRepositoriesData({\n connectApi: connectBackendApi,\n fetchApi: fetch,\n applicationId,\n });\n\n const rows = useMemo(\n () => repositoriesData?.repositories || [],\n [repositoriesData?.repositories],\n );\n\n return (\n <StatusContainer\n isLoading={repositoriesDataLoading}\n error={repositoriesDataError}\n isEmpty={!rows}\n notFoundMessage=\"No repositories found.\"\n showLogo={applicationId ? true : false}\n >\n <DataGrid<RepositoryType>\n getRowId={row => `${row.key}-${row.entityUrl}`}\n loading={repositoriesDataLoading}\n tableKey=\"repositories\"\n columns={repositoryColumns}\n rows={rows}\n dataLabel=\"repositories\"\n searchBarPlaceHolder=\"Search repository name...\"\n features={DATA_GRID_FEATURES}\n initialState={{\n sorting: {\n sortModel: INITIAL_SORTING,\n },\n }}\n initialPageSize={PAGE_SIZE_OPTIONS[0]}\n pageSizeOptions={PAGE_SIZE_OPTIONS}\n columnVisibility={columnVisibilityModal}\n />\n </StatusContainer>\n );\n};\n\nexport const Repositories = () => {\n return (\n <Page themeId=\"tool\">\n <Header />\n <Content>\n <Typography variant=\"h4\" sx={{ color: 'text.primary', mb: 2 }}>\n Repositories\n </Typography>\n <RepositoriesContent />\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,eAAA,GAAkB;AAAA,EACtB;AAAA,IACE,KAAA,EAAO,WAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAE1C,MAAM,kBAAA,GAAqB;AAAA,EACzB,WAAA,EAAa,IAAA;AAAA,EACb,aAAA,EAAe,IAAA;AAAA,EACf,gBAAA,EAAkB,IAAA;AAAA,EAClB,gBAAA,EAAkB,IAAA;AAAA,EAClB,UAAA,EAAY,IAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAEO,MAAM,sBAAsB,CAAC;AAAA,EAClC;AACF,CAAA,KAEM;AACJ,EAAA,MAAM,iBAAA,GAAoB,OAAO,YAAY,CAAA;AAC7C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAA,CAAO,WAAW,CAAA;AAEpC,EAAA,MAAM,EAAE,gBAAA,EAAkB,uBAAA,EAAyB,qBAAA,KACjD,mBAAA,CAAoB;AAAA,IAClB,UAAA,EAAY,iBAAA;AAAA,IACZ,QAAA,EAAU,KAAA;AAAA,IACV;AAAA,GACD,CAAA;AAEH,EAAA,MAAM,IAAA,GAAO,OAAA;AAAA,IACX,MAAM,gBAAA,EAAkB,YAAA,IAAgB,EAAC;AAAA,IACzC,CAAC,kBAAkB,YAAY;AAAA,GACjC;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,uBAAA;AAAA,MACX,KAAA,EAAO,qBAAA;AAAA,MACP,SAAS,CAAC,IAAA;AAAA,MACV,eAAA,EAAgB,wBAAA;AAAA,MAChB,QAAA,EAAU,gBAAgB,IAAA,GAAO,KAAA;AAAA,MAEjC,QAAA,kBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,UAAU,CAAA,GAAA,KAAO,CAAA,EAAG,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,SAAS,CAAA,CAAA;AAAA,UAC5C,OAAA,EAAS,uBAAA;AAAA,UACT,QAAA,EAAS,cAAA;AAAA,UACT,OAAA,EAAS,iBAAA;AAAA,UACT,IAAA;AAAA,UACA,SAAA,EAAU,cAAA;AAAA,UACV,oBAAA,EAAqB,2BAAA;AAAA,UACrB,QAAA,EAAU,kBAAA;AAAA,UACV,YAAA,EAAc;AAAA,YACZ,OAAA,EAAS;AAAA,cACP,SAAA,EAAW;AAAA;AACb,WACF;AAAA,UACA,eAAA,EAAiB,kBAAkB,CAAC,CAAA;AAAA,UACpC,eAAA,EAAiB,iBAAA;AAAA,UACjB,gBAAA,EAAkB;AAAA;AAAA;AACpB;AAAA,GACF;AAEJ;AAEO,MAAM,eAAe,MAAM;AAChC,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,yBACP,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAK,EAAA,EAAI,EAAE,OAAO,cAAA,EAAgB,EAAA,EAAI,CAAA,EAAE,EAAG,QAAA,EAAA,cAAA,EAE/D,CAAA;AAAA,0BACC,mBAAA,EAAA,EAAoB;AAAA,KAAA,EACvB;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -10,7 +10,7 @@ import '@mui/material/MenuItem';
|
|
|
10
10
|
import '@mui/material/ListItemIcon';
|
|
11
11
|
import '@mui/material/ListItemText';
|
|
12
12
|
import '@mui/icons-material';
|
|
13
|
-
import
|
|
13
|
+
import '@mui/material/Typography';
|
|
14
14
|
import '@mui/material/Select';
|
|
15
15
|
import '@mui/material/Pagination';
|
|
16
16
|
import '@mui/material/TextField';
|
|
@@ -20,6 +20,7 @@ import '@mui/icons-material/Clear';
|
|
|
20
20
|
import '@mui/material/IconButton';
|
|
21
21
|
import '../../components/common/ChartBox.esm.js';
|
|
22
22
|
import 'react-dom';
|
|
23
|
+
import '../../components/common/StatusContainer.esm.js';
|
|
23
24
|
import '../../components/common/logoSpinner.esm.js';
|
|
24
25
|
import { Chip } from '../../components/Chip.esm.js';
|
|
25
26
|
import { ChipsList } from '../../components/ChipsList.esm.js';
|
|
@@ -218,7 +219,7 @@ const repositoryColumns = [
|
|
|
218
219
|
if (params.row.hasPaymentsData) sensitiveTypes.push("Payments");
|
|
219
220
|
const displayValue = sensitiveTypes.length > 0 ? "Yes" : "No";
|
|
220
221
|
const tooltipText = sensitiveTypes.length > 0 ? `Contains: ${sensitiveTypes.join(", ")}` : "No sensitive data";
|
|
221
|
-
return /* @__PURE__ */ jsx(SimpleTooltip, { title: tooltipText, centered: true, children:
|
|
222
|
+
return /* @__PURE__ */ jsx(SimpleTooltip, { title: tooltipText, centered: true, children: displayValue });
|
|
222
223
|
}
|
|
223
224
|
},
|
|
224
225
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableConfig.esm.js","sources":["../../../src/pages/Repositories/tableConfig.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { GridColDef } from '@mui/x-data-grid';\nimport { Link } from 'react-router-dom';\nimport { Chip, ChipsList, RiskLevel, SimpleTooltip } from '../../components';\nimport { scmProviderIcons } from '../../components/common/scmProviders';\nimport { formatDate } from '../../utils/dateFormatter';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\n// Color mapping for business impact\nexport const businessImpactColorMapping = {\n High: 'error',\n Medium: 'warning',\n Low: 'warning',\n} as const;\n\n// Repository columns configuration\nexport const repositoryColumns: GridColDef[] = [\n {\n field: 'name',\n headerName: 'Repository Name',\n flex: 1.5,\n hideable: false,\n minWidth: 230,\n valueGetter: (_, row) => `${row.name} (${row.branchName})`,\n renderCell: (params: any) => {\n const IconComponent = scmProviderIcons[params.row.provider as string];\n const redirectURL = `${params.row.entityUrl}/apiiro`;\n return (\n <SimpleTooltip title={params.formattedValue || ''}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n width: '100%',\n minWidth: 0,\n }}\n >\n {IconComponent && <IconComponent style={{ flexShrink: 0 }} />}\n <Link\n to={redirectURL}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n flex: 1,\n }}\n >\n {params.formattedValue}\n </Link>\n </div>\n </SimpleTooltip>\n );\n },\n },\n {\n field: 'visibility',\n headerName: 'Public/Private',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isPublic ? 'Public' : 'Private'),\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.formattedValue || ''}\n centered\n tooltipProps={{\n PopperProps: {\n modifiers: [{ name: 'offset', options: { offset: [0, -20] } }],\n },\n }}\n >\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'businessImpact',\n headerName: 'Business Impact',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <Chip\n label={params.value}\n colorMapping={businessImpactColorMapping}\n size=\"small\"\n variant=\"outlined\"\n chipSx={{ marginBottom: '0' }}\n />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskLevel',\n headerName: 'Risk Level',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <RiskLevel level={params.value} iconSize=\"large\" />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskScore',\n headerName: 'Risk Score',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'languages',\n headerName: 'Languages',\n flex: 1.5,\n minWidth: 200,\n valueGetter: (_, row) => row.languages,\n renderCell: (params: any) => {\n return (\n <Box\n sx={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n }}\n >\n <ChipsList\n items={params.value.map((item: any) => ({\n id: item,\n label: item,\n }))}\n maxVisible={2}\n gap={0}\n variant=\"outlined\"\n />\n </Box>\n );\n },\n },\n {\n field: 'isDeployed',\n headerName: 'Deployed',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isDeployed ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'isInternetExposed',\n headerName: 'Internet Exposed',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isInternetExposed ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'apiCount',\n headerName: 'APIs',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'sensitiveData',\n headerName: 'Sensitive Data',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => {\n const sensitiveTypes = [];\n if (params.row.hasPiiData) sensitiveTypes.push('PII');\n if (params.row.hasPhiData) sensitiveTypes.push('PHI');\n if (params.row.hasPaymentsData) sensitiveTypes.push('Payments');\n const displayValue = sensitiveTypes.length > 0 ? 'Yes' : 'No';\n const tooltipText =\n sensitiveTypes.length > 0\n ? `Contains: ${sensitiveTypes.join(', ')}`\n : 'No sensitive data';\n return (\n <SimpleTooltip title={tooltipText} centered>\n <Typography>{displayValue}</Typography>\n </SimpleTooltip>\n );\n },\n },\n {\n field: 'contributorCount',\n headerName: 'Contributors',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'activeSince',\n headerName: 'Active Since',\n type: 'date',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) =>\n row.activeSince ? new Date(row.activeSince) : null,\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.value?.toLocaleDateString() || 'N/A'}\n centered\n >\n {params.value ? formatDate(params.value) : 'N/A'}\n </SimpleTooltip>\n ),\n },\n {\n field: 'lastActivity',\n headerName: 'Last Activity',\n type: 'date',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) =>\n row.lastActivity ? new Date(row.lastActivity) : null,\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.value?.toLocaleDateString() || 'N/A'}\n centered\n >\n {params.value ? formatDate(params.value) : 'N/A'}\n </SimpleTooltip>\n ),\n },\n {\n field: 'isArchived',\n headerName: 'Archived',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isArchived ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n];\n\nexport const columnVisibilityModal = {\n name: true,\n visibility: true,\n businessImpact: true,\n riskLevel: true,\n riskScore: true,\n languages: true,\n isDeployed: false,\n isInternetExposed: false,\n apiCount: false,\n sensitiveData: false,\n contributorCount: false,\n activeSince: false,\n lastActivity: false,\n isArchived: false,\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tableConfig.esm.js","sources":["../../../src/pages/Repositories/tableConfig.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { GridColDef } from '@mui/x-data-grid';\nimport { Link } from 'react-router-dom';\nimport { Chip, ChipsList, RiskLevel, SimpleTooltip } from '../../components';\nimport { scmProviderIcons } from '../../components/common/scmProviders';\nimport { formatDate } from '../../utils/dateFormatter';\nimport Box from '@mui/material/Box';\n\n// Color mapping for business impact\nexport const businessImpactColorMapping = {\n High: 'error',\n Medium: 'warning',\n Low: 'warning',\n} as const;\n\n// Repository columns configuration\nexport const repositoryColumns: GridColDef[] = [\n {\n field: 'name',\n headerName: 'Repository Name',\n flex: 1.5,\n hideable: false,\n minWidth: 230,\n valueGetter: (_, row) => `${row.name} (${row.branchName})`,\n renderCell: (params: any) => {\n const IconComponent = scmProviderIcons[params.row.provider as string];\n const redirectURL = `${params.row.entityUrl}/apiiro`;\n return (\n <SimpleTooltip title={params.formattedValue || ''}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n width: '100%',\n minWidth: 0,\n }}\n >\n {IconComponent && <IconComponent style={{ flexShrink: 0 }} />}\n <Link\n to={redirectURL}\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n flex: 1,\n }}\n >\n {params.formattedValue}\n </Link>\n </div>\n </SimpleTooltip>\n );\n },\n },\n {\n field: 'visibility',\n headerName: 'Public/Private',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isPublic ? 'Public' : 'Private'),\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.formattedValue || ''}\n centered\n tooltipProps={{\n PopperProps: {\n modifiers: [{ name: 'offset', options: { offset: [0, -20] } }],\n },\n }}\n >\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'businessImpact',\n headerName: 'Business Impact',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <Chip\n label={params.value}\n colorMapping={businessImpactColorMapping}\n size=\"small\"\n variant=\"outlined\"\n chipSx={{ marginBottom: '0' }}\n />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskLevel',\n headerName: 'Risk Level',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n <RiskLevel level={params.value} iconSize=\"large\" />\n </SimpleTooltip>\n ),\n },\n {\n field: 'riskScore',\n headerName: 'Risk Score',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'languages',\n headerName: 'Languages',\n flex: 1.5,\n minWidth: 200,\n valueGetter: (_, row) => row.languages,\n renderCell: (params: any) => {\n return (\n <Box\n sx={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n }}\n >\n <ChipsList\n items={params.value.map((item: any) => ({\n id: item,\n label: item,\n }))}\n maxVisible={2}\n gap={0}\n variant=\"outlined\"\n />\n </Box>\n );\n },\n },\n {\n field: 'isDeployed',\n headerName: 'Deployed',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isDeployed ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'isInternetExposed',\n headerName: 'Internet Exposed',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isInternetExposed ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n {\n field: 'apiCount',\n headerName: 'APIs',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'sensitiveData',\n headerName: 'Sensitive Data',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => {\n const sensitiveTypes = [];\n if (params.row.hasPiiData) sensitiveTypes.push('PII');\n if (params.row.hasPhiData) sensitiveTypes.push('PHI');\n if (params.row.hasPaymentsData) sensitiveTypes.push('Payments');\n const displayValue = sensitiveTypes.length > 0 ? 'Yes' : 'No';\n const tooltipText =\n sensitiveTypes.length > 0\n ? `Contains: ${sensitiveTypes.join(', ')}`\n : 'No sensitive data';\n return (\n <SimpleTooltip title={tooltipText} centered>\n {displayValue}\n </SimpleTooltip>\n );\n },\n },\n {\n field: 'contributorCount',\n headerName: 'Contributors',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n renderCell: (params: any) => (\n <SimpleTooltip title={params.value ?? ''} centered>\n {params.value ?? ''}\n </SimpleTooltip>\n ),\n },\n {\n field: 'activeSince',\n headerName: 'Active Since',\n type: 'date',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) =>\n row.activeSince ? new Date(row.activeSince) : null,\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.value?.toLocaleDateString() || 'N/A'}\n centered\n >\n {params.value ? formatDate(params.value) : 'N/A'}\n </SimpleTooltip>\n ),\n },\n {\n field: 'lastActivity',\n headerName: 'Last Activity',\n type: 'date',\n flex: 1.2,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) =>\n row.lastActivity ? new Date(row.lastActivity) : null,\n renderCell: (params: any) => (\n <SimpleTooltip\n title={params.value?.toLocaleDateString() || 'N/A'}\n centered\n >\n {params.value ? formatDate(params.value) : 'N/A'}\n </SimpleTooltip>\n ),\n },\n {\n field: 'isArchived',\n headerName: 'Archived',\n flex: 1,\n minWidth: 150,\n headerAlign: 'center',\n valueGetter: (_, row) => (row.isArchived ? 'Yes' : 'No'),\n renderCell: (params: any) => (\n <SimpleTooltip title={params.formattedValue || ''} centered>\n {params.formattedValue}\n </SimpleTooltip>\n ),\n },\n];\n\nexport const columnVisibilityModal = {\n name: true,\n visibility: true,\n businessImpact: true,\n riskLevel: true,\n riskScore: true,\n languages: true,\n isDeployed: false,\n isInternetExposed: false,\n apiCount: false,\n sensitiveData: false,\n contributorCount: false,\n activeSince: false,\n lastActivity: false,\n isArchived: false,\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,0BAAA,GAA6B;AAAA,EACxC,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,SAAA;AAAA,EACR,GAAA,EAAK;AACP;AAGO,MAAM,iBAAA,GAAkC;AAAA,EAC7C;AAAA,IACE,KAAA,EAAO,MAAA;AAAA,IACP,UAAA,EAAY,iBAAA;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,KAAA;AAAA,IACV,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,CAAC,CAAA,EAAG,GAAA,KAAQ,GAAG,GAAA,CAAI,IAAI,CAAA,EAAA,EAAK,GAAA,CAAI,UAAU,CAAA,CAAA,CAAA;AAAA,IACvD,UAAA,EAAY,CAAC,MAAA,KAAgB;AAC3B,MAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,MAAA,CAAO,GAAA,CAAI,QAAkB,CAAA;AACpE,MAAA,MAAM,WAAA,GAAc,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA,OAAA,CAAA;AAC3C,MAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,kBAAkB,EAAA,EAC7C,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAK,KAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,QAAA,EAAU;AAAA,WACZ;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,aAAA,wBAAkB,aAAA,EAAA,EAAc,KAAA,EAAO,EAAE,UAAA,EAAY,GAAE,EAAG,CAAA;AAAA,4BAC3D,GAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,WAAA;AAAA,gBACJ,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,QAAA;AAAA,kBACV,YAAA,EAAc,UAAA;AAAA,kBACd,UAAA,EAAY,QAAA;AAAA,kBACZ,QAAA,EAAU,CAAA;AAAA,kBACV,IAAA,EAAM;AAAA,iBACR;AAAA,gBAEC,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA;AAAA,OACF,EACF,CAAA;AAAA,IAEJ;AAAA,GACF;AAAA,EACA;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,UAAA,EAAY,gBAAA;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,aAAa,CAAC,CAAA,EAAG,GAAA,KAAS,GAAA,CAAI,WAAW,QAAA,GAAW,SAAA;AAAA,IACpD,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,OAAO,cAAA,IAAkB,EAAA;AAAA,QAChC,QAAA,EAAQ,IAAA;AAAA,QACR,YAAA,EAAc;AAAA,UACZ,WAAA,EAAa;AAAA,YACX,SAAA,EAAW,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAC,CAAA,EAAG,GAAG,CAAA,IAAK;AAAA;AAC/D,SACF;AAAA,QAEC,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,gBAAA;AAAA,IACP,UAAA,EAAY,iBAAA;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,OAAO,MAAA,CAAO,KAAA,IAAS,EAAA,EAAI,QAAA,EAAQ,IAAA,EAChD,QAAA,kBAAA,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,YAAA,EAAc,0BAAA;AAAA,QACd,IAAA,EAAK,OAAA;AAAA,QACL,OAAA,EAAQ,UAAA;AAAA,QACR,MAAA,EAAQ,EAAE,YAAA,EAAc,GAAA;AAAI;AAAA,KAC9B,EACF;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY,YAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,YAAY,CAAC,MAAA,yBACV,aAAA,EAAA,EAAc,KAAA,EAAO,OAAO,KAAA,IAAS,EAAA,EAAI,QAAA,EAAQ,IAAA,EAChD,8BAAC,SAAA,EAAA,EAAU,KAAA,EAAO,OAAO,KAAA,EAAO,QAAA,EAAS,SAAQ,CAAA,EACnD;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY,YAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,KAAA,IAAS,EAAA,EAAI,QAAA,EAAQ,IAAA,EAC/C,QAAA,EAAA,MAAA,CAAO,SAAS,EAAA,EACnB;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY,WAAA;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,CAAC,CAAA,EAAG,GAAA,KAAQ,GAAA,CAAI,SAAA;AAAA,IAC7B,UAAA,EAAY,CAAC,MAAA,KAAgB;AAC3B,MAAA,uBACE,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI;AAAA,YACF,QAAA,EAAU,UAAA;AAAA,YACV,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,cAAA,EAAgB,QAAA;AAAA,YAChB,MAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAO;AAAA,WACT;AAAA,UAEA,QAAA,kBAAA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAe;AAAA,gBACtC,EAAA,EAAI,IAAA;AAAA,gBACJ,KAAA,EAAO;AAAA,eACT,CAAE,CAAA;AAAA,cACF,UAAA,EAAY,CAAA;AAAA,cACZ,GAAA,EAAK,CAAA;AAAA,cACL,OAAA,EAAQ;AAAA;AAAA;AACV;AAAA,OACF;AAAA,IAEJ;AAAA,GACF;AAAA,EACA;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,UAAA,EAAY,UAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,aAAa,CAAC,CAAA,EAAG,GAAA,KAAS,GAAA,CAAI,aAAa,KAAA,GAAQ,IAAA;AAAA,IACnD,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,cAAA,IAAkB,EAAA,EAAI,QAAA,EAAQ,IAAA,EACxD,QAAA,EAAA,MAAA,CAAO,cAAA,EACV;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,mBAAA;AAAA,IACP,UAAA,EAAY,kBAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,aAAa,CAAC,CAAA,EAAG,GAAA,KAAS,GAAA,CAAI,oBAAoB,KAAA,GAAQ,IAAA;AAAA,IAC1D,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,cAAA,IAAkB,EAAA,EAAI,QAAA,EAAQ,IAAA,EACxD,QAAA,EAAA,MAAA,CAAO,cAAA,EACV;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY,MAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,KAAA,IAAS,EAAA,EAAI,QAAA,EAAQ,IAAA,EAC/C,QAAA,EAAA,MAAA,CAAO,SAAS,EAAA,EACnB;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,eAAA;AAAA,IACP,UAAA,EAAY,gBAAA;AAAA,IACZ,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,CAAC,MAAA,KAAgB;AAC3B,MAAA,MAAM,iBAAiB,EAAC;AACxB,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,cAAA,CAAe,KAAK,KAAK,CAAA;AACpD,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,cAAA,CAAe,KAAK,KAAK,CAAA;AACpD,MAAA,IAAI,MAAA,CAAO,GAAA,CAAI,eAAA,EAAiB,cAAA,CAAe,KAAK,UAAU,CAAA;AAC9D,MAAA,MAAM,YAAA,GAAe,cAAA,CAAe,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,IAAA;AACzD,MAAA,MAAM,WAAA,GACJ,eAAe,MAAA,GAAS,CAAA,GACpB,aAAa,cAAA,CAAe,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,GACtC,mBAAA;AACN,MAAA,2BACG,aAAA,EAAA,EAAc,KAAA,EAAO,WAAA,EAAa,QAAA,EAAQ,MACxC,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,IAEJ;AAAA,GACF;AAAA,EACA;AAAA,IACE,KAAA,EAAO,kBAAA;AAAA,IACP,UAAA,EAAY,cAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,KAAA,IAAS,EAAA,EAAI,QAAA,EAAQ,IAAA,EAC/C,QAAA,EAAA,MAAA,CAAO,SAAS,EAAA,EACnB;AAAA,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,aAAA;AAAA,IACP,UAAA,EAAY,cAAA;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,WAAA,EAAa,CAAC,CAAA,EAAG,GAAA,KACf,GAAA,CAAI,cAAc,IAAI,IAAA,CAAK,GAAA,CAAI,WAAW,CAAA,GAAI,IAAA;AAAA,IAChD,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,kBAAA,EAAmB,IAAK,KAAA;AAAA,QAC7C,QAAA,EAAQ,IAAA;AAAA,QAEP,QAAA,EAAA,MAAA,CAAO,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA,GAAI;AAAA;AAAA;AAC7C,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,cAAA;AAAA,IACP,UAAA,EAAY,eAAA;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,GAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,WAAA,EAAa,CAAC,CAAA,EAAG,GAAA,KACf,GAAA,CAAI,eAAe,IAAI,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA,GAAI,IAAA;AAAA,IAClD,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,kBAAA,EAAmB,IAAK,KAAA;AAAA,QAC7C,QAAA,EAAQ,IAAA;AAAA,QAEP,QAAA,EAAA,MAAA,CAAO,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA,GAAI;AAAA;AAAA;AAC7C,GAEJ;AAAA,EACA;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,UAAA,EAAY,UAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,GAAA;AAAA,IACV,WAAA,EAAa,QAAA;AAAA,IACb,aAAa,CAAC,CAAA,EAAG,GAAA,KAAS,GAAA,CAAI,aAAa,KAAA,GAAQ,IAAA;AAAA,IACnD,UAAA,EAAY,CAAC,MAAA,qBACX,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,MAAA,CAAO,cAAA,IAAkB,EAAA,EAAI,QAAA,EAAQ,IAAA,EACxD,QAAA,EAAA,MAAA,CAAO,cAAA,EACV;AAAA;AAGN;AAEO,MAAM,qBAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,IAAA;AAAA,EACN,UAAA,EAAY,IAAA;AAAA,EACZ,cAAA,EAAgB,IAAA;AAAA,EAChB,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,UAAA,EAAY,KAAA;AAAA,EACZ,iBAAA,EAAmB,KAAA;AAAA,EACnB,QAAA,EAAU,KAAA;AAAA,EACV,aAAA,EAAe,KAAA;AAAA,EACf,gBAAA,EAAkB,KAAA;AAAA,EAClB,WAAA,EAAa,KAAA;AAAA,EACb,YAAA,EAAc,KAAA;AAAA,EACd,UAAA,EAAY;AACd;;;;"}
|
|
@@ -37,7 +37,7 @@ import { ErrorSnackbar } from '../../components/common/ErrorSnackbar.esm.js';
|
|
|
37
37
|
import '@tanstack/react-query';
|
|
38
38
|
import { useRisksData } from '../../queries/risks.queries.esm.js';
|
|
39
39
|
import { useFilterOptionsData } from '../../queries/filterOptions.queries.esm.js';
|
|
40
|
-
import {
|
|
40
|
+
import { getRisksColumns, columnVisibilityModal } from './tableConfig.esm.js';
|
|
41
41
|
|
|
42
42
|
const formatDateForAPI = (date) => {
|
|
43
43
|
const year = date.getFullYear();
|
|
@@ -87,7 +87,8 @@ const DATA_GRID_FEATURES = {
|
|
|
87
87
|
};
|
|
88
88
|
const Risks = ({
|
|
89
89
|
repoId,
|
|
90
|
-
entityRef
|
|
90
|
+
entityRef,
|
|
91
|
+
applicationId
|
|
91
92
|
}) => {
|
|
92
93
|
const connectBackendApi = useApi(apiiroApiRef);
|
|
93
94
|
const { fetch } = useApi(fetchApiRef);
|
|
@@ -138,8 +139,9 @@ const Risks = ({
|
|
|
138
139
|
const { risksData, risksDataLoading, risksDataError } = useRisksData({
|
|
139
140
|
connectApi: connectBackendApi,
|
|
140
141
|
fetchApi: fetch,
|
|
141
|
-
|
|
142
|
+
repositoryId: repoId,
|
|
142
143
|
entityRef,
|
|
144
|
+
applicationId,
|
|
143
145
|
filters: {
|
|
144
146
|
...riskCategoryFilter.length > 0 && {
|
|
145
147
|
RiskCategory: riskCategoryFilter
|
|
@@ -158,6 +160,10 @@ const Risks = ({
|
|
|
158
160
|
}
|
|
159
161
|
});
|
|
160
162
|
const rows = useMemo(() => risksData?.risks || [], [risksData?.risks]);
|
|
163
|
+
const risksColumns = useMemo(
|
|
164
|
+
() => getRisksColumns(connectBackendApi, repoId, applicationId),
|
|
165
|
+
[connectBackendApi, repoId, applicationId]
|
|
166
|
+
);
|
|
161
167
|
const handlePresetSelect = (range) => {
|
|
162
168
|
setIsPresetSelection(true);
|
|
163
169
|
presetSelectionRef.current = true;
|