@backstage-community/plugin-tekton 3.38.0 → 3.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/components/Icons/CriticalRiskIcon.esm.js +5 -1
  3. package/dist/components/Icons/CriticalRiskIcon.esm.js.map +1 -1
  4. package/dist/components/Icons/EqualsIcon.esm.js +5 -1
  5. package/dist/components/Icons/EqualsIcon.esm.js.map +1 -1
  6. package/dist/components/Icons/LinkToSbomIcon.esm.js +5 -16
  7. package/dist/components/Icons/LinkToSbomIcon.esm.js.map +1 -1
  8. package/dist/components/Icons/OutputIcon.esm.js +5 -16
  9. package/dist/components/Icons/OutputIcon.esm.js.map +1 -1
  10. package/dist/components/Icons/ViewLogsIcon.esm.js +5 -16
  11. package/dist/components/Icons/ViewLogsIcon.esm.js.map +1 -1
  12. package/dist/components/PipelineRunList/PipelineRunList.esm.js +64 -60
  13. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  14. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +7 -11
  15. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js.map +1 -1
  16. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js +27 -7
  17. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
  18. package/dist/components/PipelineRunList/PipelineRunRow.esm.js +123 -58
  19. package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
  20. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +1 -1
  21. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  22. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js +216 -146
  23. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
  24. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +10 -16
  25. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js.map +1 -1
  26. package/dist/components/PipelineRunList/ResourceBadge.css.esm.js +1 -1
  27. package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js +58 -0
  28. package/dist/components/PipelineRunList/pipelineRunTableColumns.esm.js.map +1 -0
  29. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +18 -19
  30. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
  31. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js +3 -3
  32. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js.map +1 -1
  33. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +2 -2
  34. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
  35. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js +1 -1
  36. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js.map +1 -1
  37. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +43 -63
  38. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
  39. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +33 -20
  40. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
  41. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js +1 -1
  42. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -1
  43. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js +1 -1
  44. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -1
  45. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js +18 -19
  46. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -1
  47. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js +1 -1
  48. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -1
  49. package/dist/components/Tekton/TektonCIComponent.esm.js +2 -1
  50. package/dist/components/Tekton/TektonCIComponent.esm.js.map +1 -1
  51. package/dist/components/Tekton/TektonStylesProvider.esm.js +8 -0
  52. package/dist/components/Tekton/TektonStylesProvider.esm.js.map +1 -0
  53. package/dist/components/common/ClusterSelector.esm.js +8 -11
  54. package/dist/components/common/ClusterSelector.esm.js.map +1 -1
  55. package/dist/components/common/ErrorPanel.esm.js +1 -1
  56. package/dist/components/common/ErrorPanel.esm.js.map +1 -1
  57. package/dist/components/common/PermissionAlert.esm.js +2 -1
  58. package/dist/components/common/PermissionAlert.esm.js.map +1 -1
  59. package/dist/components/common/Status.esm.js +77 -58
  60. package/dist/components/common/Status.esm.js.map +1 -1
  61. package/dist/components/common/StatusIconAndText.esm.js +17 -23
  62. package/dist/components/common/StatusIconAndText.esm.js.map +1 -1
  63. package/dist/components/common/StatusSelector.esm.js +8 -11
  64. package/dist/components/common/StatusSelector.esm.js.map +1 -1
  65. package/dist/components/common/TableExpandCollapse.esm.js +8 -16
  66. package/dist/components/common/TableExpandCollapse.esm.js.map +1 -1
  67. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
  68. package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js +1 -1
  69. package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js +1 -1
  70. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +100 -3
  71. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -1
  72. package/dist/components/pipeline-topology/TaskGroupEdge.esm.js.map +1 -1
  73. package/dist/hooks/useDarkTheme.esm.js +4 -4
  74. package/dist/hooks/useDarkTheme.esm.js.map +1 -1
  75. package/dist/styles/tektonEmotionCache.esm.js +9 -0
  76. package/dist/styles/tektonEmotionCache.esm.js.map +1 -0
  77. package/package.json +20 -19
@@ -3,7 +3,9 @@ import { useContext, useCallback } from 'react';
3
3
  import { Progress } from '@backstage/core-components';
4
4
  import { useApi } from '@backstage/core-plugin-api';
5
5
  import { usePipelineRunOutput, Output } from '@aonic-ui/pipelines';
6
- import { Grid, Paper, Typography } from '@material-ui/core';
6
+ import Box from '@mui/material/Box';
7
+ import Paper from '@mui/material/Paper';
8
+ import Typography from '@mui/material/Typography';
7
9
  import { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';
8
10
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
9
11
  import '../../translations/index.esm.js';
@@ -63,14 +65,32 @@ const PipelineRunOutput = ({
63
65
  }
64
66
  );
65
67
  };
66
- return /* @__PURE__ */ jsx(Grid, { children: /* @__PURE__ */ jsx("div", { style: { height: "80vh" }, children: /* @__PURE__ */ jsx(
67
- Paper,
68
+ return /* @__PURE__ */ jsx(
69
+ Box,
68
70
  {
69
- elevation: 1,
70
- style: { height: "100%", width: "100%", minHeight: "30rem" },
71
- children: renderOutput()
71
+ sx: {
72
+ display: "flex",
73
+ flexDirection: "column",
74
+ flex: 1,
75
+ minHeight: 0,
76
+ minWidth: 0
77
+ },
78
+ children: /* @__PURE__ */ jsx(
79
+ Paper,
80
+ {
81
+ elevation: 1,
82
+ sx: {
83
+ flex: 1,
84
+ minHeight: 0,
85
+ minWidth: 0,
86
+ overflow: "auto",
87
+ width: "100%"
88
+ },
89
+ children: renderOutput()
90
+ }
91
+ )
72
92
  }
73
- ) }) });
93
+ );
74
94
  };
75
95
 
76
96
  export { PipelineRunOutput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunOutput.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunOutput.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { FC } from 'react';\n\nimport { useContext, useCallback } from 'react';\n\nimport { Progress } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nimport {\n ACSCheckResults,\n ACSImageScanResult,\n Output,\n PipelineRunKind as PipelineRunV1Kind,\n TaskRunKind as TaskRunV1Kind,\n usePipelineRunOutput,\n} from '@aonic-ui/pipelines';\nimport { Grid, Paper, Typography } from '@material-ui/core';\n\nimport {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype PipelineRunOutputProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\n\nconst PipelineRunOutput: FC<PipelineRunOutputProps> = ({\n pipelineRun,\n taskRuns,\n}) => {\n const { clusters, selectedCluster } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const currCluster =\n (clusters.length > 0 && clusters[selectedCluster || 0]) || '';\n\n const getLogs = useCallback(\n async (podName: string, containerName: string): Promise<string> => {\n return await kubernetesProxyApi\n .getPodLogs({\n podName: podName,\n namespace: pipelineRun?.metadata?.namespace ?? '',\n containerName: containerName,\n clusterName: currCluster,\n })\n .then(res => res?.text);\n },\n [kubernetesProxyApi, currCluster, pipelineRun],\n );\n\n const outputGroup = usePipelineRunOutput(\n pipelineRun as PipelineRunV1Kind,\n taskRuns as TaskRunV1Kind[],\n getLogs,\n );\n\n const stillLoading =\n outputGroup?.ec?.loading &&\n (outputGroup?.acsImageScan?.loading ||\n outputGroup?.acsImageCheck?.loading ||\n outputGroup?.acsDeploymentCheck?.loading);\n\n const isEmpty = (data: ACSCheckResults | ACSImageScanResult) =>\n Object.keys(data).length === 0;\n const noDataAvailable =\n outputGroup?.ec?.data.length === 0 &&\n outputGroup.results.data.length === 0 &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data);\n\n const renderOutput = () => {\n if (stillLoading && noDataAvailable) {\n return <Progress />;\n }\n\n if (!stillLoading && noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunOutput.noOutput')}\n </Typography>\n );\n }\n\n const metadata =\n outputGroup?.acsImageCheck?.data?.results?.[0]?.metadata?.additionalInfo;\n if (metadata?.name?.includes('@')) {\n metadata.name = metadata?.name.substr(0, metadata?.name.lastIndexOf('@'));\n }\n\n return (\n <Output\n enterpriseContractPolicies={outputGroup?.ec?.data ?? []}\n acsImageScanResult={outputGroup?.acsImageScan?.data}\n acsImageCheckResults={outputGroup?.acsImageCheck?.data}\n acsDeploymentCheckResults={outputGroup?.acsDeploymentCheck?.data}\n pipelineRunName={pipelineRun?.metadata?.name ?? ''}\n pipelineRunStatus={outputGroup.status}\n results={outputGroup.results.data}\n />\n );\n };\n\n return (\n <Grid>\n <div style={{ height: '80vh' }}>\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n {renderOutput()}\n </Paper>\n </div>\n </Grid>\n );\n};\nexport default PipelineRunOutput;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunOutput.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunOutput.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { FC } from 'react';\n\nimport { useContext, useCallback } from 'react';\n\nimport { Progress } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nimport {\n ACSCheckResults,\n ACSImageScanResult,\n Output,\n PipelineRunKind as PipelineRunV1Kind,\n TaskRunKind as TaskRunV1Kind,\n usePipelineRunOutput,\n} from '@aonic-ui/pipelines';\nimport Box from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\n\nimport {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype PipelineRunOutputProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\n\nconst PipelineRunOutput: FC<PipelineRunOutputProps> = ({\n pipelineRun,\n taskRuns,\n}) => {\n const { clusters, selectedCluster } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const currCluster =\n (clusters.length > 0 && clusters[selectedCluster || 0]) || '';\n\n const getLogs = useCallback(\n async (podName: string, containerName: string): Promise<string> => {\n return await kubernetesProxyApi\n .getPodLogs({\n podName: podName,\n namespace: pipelineRun?.metadata?.namespace ?? '',\n containerName: containerName,\n clusterName: currCluster,\n })\n .then(res => res?.text);\n },\n [kubernetesProxyApi, currCluster, pipelineRun],\n );\n\n const outputGroup = usePipelineRunOutput(\n pipelineRun as PipelineRunV1Kind,\n taskRuns as TaskRunV1Kind[],\n getLogs,\n );\n\n const stillLoading =\n outputGroup?.ec?.loading &&\n (outputGroup?.acsImageScan?.loading ||\n outputGroup?.acsImageCheck?.loading ||\n outputGroup?.acsDeploymentCheck?.loading);\n\n const isEmpty = (data: ACSCheckResults | ACSImageScanResult) =>\n Object.keys(data).length === 0;\n const noDataAvailable =\n outputGroup?.ec?.data.length === 0 &&\n outputGroup.results.data.length === 0 &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data);\n\n const renderOutput = () => {\n if (stillLoading && noDataAvailable) {\n return <Progress />;\n }\n\n if (!stillLoading && noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunOutput.noOutput')}\n </Typography>\n );\n }\n\n const metadata =\n outputGroup?.acsImageCheck?.data?.results?.[0]?.metadata?.additionalInfo;\n if (metadata?.name?.includes('@')) {\n metadata.name = metadata?.name.substr(0, metadata?.name.lastIndexOf('@'));\n }\n\n return (\n <Output\n enterpriseContractPolicies={outputGroup?.ec?.data ?? []}\n acsImageScanResult={outputGroup?.acsImageScan?.data}\n acsImageCheckResults={outputGroup?.acsImageCheck?.data}\n acsDeploymentCheckResults={outputGroup?.acsDeploymentCheck?.data}\n pipelineRunName={pipelineRun?.metadata?.name ?? ''}\n pipelineRunStatus={outputGroup.status}\n results={outputGroup.results.data}\n />\n );\n };\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n minWidth: 0,\n }}\n >\n <Paper\n elevation={1}\n sx={{\n flex: 1,\n minHeight: 0,\n minWidth: 0,\n overflow: 'auto',\n width: '100%',\n }}\n >\n {renderOutput()}\n </Paper>\n </Box>\n );\n};\nexport default PipelineRunOutput;\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useEffect, Fragment } from 'react';
3
- import { TableRow, TableCell, IconButton, Collapse, Box, makeStyles } from '@material-ui/core';
4
- import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';
5
- import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';
3
+ import Box from '@mui/material/Box';
4
+ import Collapse from '@mui/material/Collapse';
5
+ import IconButton from '@mui/material/IconButton';
6
+ import TableCell from '@mui/material/TableCell';
7
+ import TableRow from '@mui/material/TableRow';
8
+ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';
9
+ import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';
6
10
  import { Timestamp, Tooltip } from '@patternfly/react-core';
7
11
  import { TEKTON_SIGNED_ANNOTATION } from '../../consts/tekton-const.esm.js';
8
12
  import { tektonGroupColor } from '../../types/types.esm.js';
9
13
  import { pipelineRunDuration } from '../../utils/tekton-utils.esm.js';
10
- import '@material-ui/core/styles';
14
+ import { getMergedPipelineRunTableCellSx } from './pipelineRunTableColumns.esm.js';
15
+ import '@mui/material/styles';
11
16
  import '../../utils/pipeline-topology-utils.esm.js';
12
17
  import '@patternfly/react-topology';
13
18
  import '../../consts/pipeline-topology-const.esm.js';
@@ -27,24 +32,7 @@ import classNames from 'classnames';
27
32
  import SignedBadgeIcon from '../Icons/SignedBadge.esm.js';
28
33
  import { tektonTranslationRef } from '../../translations/ref.esm.js';
29
34
 
30
- const useStyles = makeStyles((theme) => ({
31
- plrRow: {
32
- "&:nth-of-type(odd)": {
33
- backgroundColor: `${theme.palette.background.paper}`
34
- }
35
- },
36
- plrVisRow: {
37
- borderBottom: `1px solid ${theme.palette.grey.A100}`
38
- },
39
- signedIndicator: {
40
- display: "inline-block",
41
- width: theme.spacing(2.5),
42
- position: "relative",
43
- top: theme.spacing(0.5)
44
- }
45
- }));
46
35
  const PipelineRunName = ({ row }) => {
47
- const classes = useStyles();
48
36
  const name = row.metadata?.name;
49
37
  const signed = row?.metadata?.annotations?.[TEKTON_SIGNED_ANNOTATION] === "true";
50
38
  return /* @__PURE__ */ jsx("div", { children: name ? /* @__PURE__ */ jsx(
@@ -54,13 +42,16 @@ const PipelineRunName = ({ row }) => {
54
42
  abbr: "PLR",
55
43
  name: name || "",
56
44
  suffix: signed ? /* @__PURE__ */ jsx(Tooltip, { content: "Signed", children: /* @__PURE__ */ jsx(
57
- "div",
45
+ Box,
58
46
  {
59
47
  "data-testid": "pipelinerun-signed",
60
- className: classNames(
61
- classes.signedIndicator,
62
- "signed-indicator"
63
- ),
48
+ className: classNames("signed-indicator"),
49
+ sx: {
50
+ display: "inline-block",
51
+ width: (theme) => theme.spacing(2.5),
52
+ position: "relative",
53
+ top: (theme) => theme.spacing(0.5)
54
+ },
64
55
  children: /* @__PURE__ */ jsx(SignedBadgeIcon, {})
65
56
  }
66
57
  ) }) : null
@@ -74,7 +65,6 @@ const PipelineRunRow = ({
74
65
  open,
75
66
  setOpen
76
67
  }) => {
77
- const classes = useStyles();
78
68
  const uid = row.metadata?.uid;
79
69
  const { t } = useTranslationRef(tektonTranslationRef);
80
70
  useEffect(() => {
@@ -96,41 +86,116 @@ const PipelineRunRow = ({
96
86
  });
97
87
  };
98
88
  return /* @__PURE__ */ jsxs(Fragment, { children: [
99
- /* @__PURE__ */ jsxs(TableRow, { className: classes.plrRow, "data-testid": "pipelinerun-row", children: [
100
- /* @__PURE__ */ jsx(TableCell, { "data-testid": "pipelinerun-expand-cell", children: /* @__PURE__ */ jsx(
101
- IconButton,
102
- {
103
- "aria-label": "expand row",
104
- size: "small",
105
- onClick: expandCollapseClickHandler,
106
- role: "button",
107
- "data-testid": "pipelinerun-expand-btn",
108
- children: open ? /* @__PURE__ */ jsx(KeyboardArrowDownIcon, {}) : /* @__PURE__ */ jsx(KeyboardArrowRightIcon, {})
109
- }
110
- ) }),
111
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-name-cell", children: /* @__PURE__ */ jsx(PipelineRunName, { row }) }),
112
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-vulnerabilities-cell", children: /* @__PURE__ */ jsx(PipelineRunVulnerabilities, { pipelineRun: row, condensed: true }) }),
113
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-status-cell", children: /* @__PURE__ */ jsx(PlrStatus, { obj: row }) }),
114
- /* @__PURE__ */ jsxs(TableCell, { align: "left", "data-testid": "pipelinerun-task-status-cell", children: [
115
- /* @__PURE__ */ jsx(PipelineRunTaskStatus, { pipelineRun: row }),
116
- " "
117
- ] }),
118
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-start-time-cell", children: startTime ? /* @__PURE__ */ jsx(
119
- Timestamp,
120
- {
121
- "data-testid": "pipelinerun-start-time",
122
- className: "bs-tkn-timestamp",
123
- date: new Date(startTime)
124
- }
125
- ) : "-" }),
126
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-duration-cell", children: pipelineRunDuration(row, t) }),
127
- /* @__PURE__ */ jsx(TableCell, { align: "left", "data-testid": "pipelinerun-actions-cell", children: /* @__PURE__ */ jsx(PipelineRunRowActions, { pipelineRun: row }) })
128
- ] }),
89
+ /* @__PURE__ */ jsxs(
90
+ TableRow,
91
+ {
92
+ "data-testid": "pipelinerun-row",
93
+ sx: {
94
+ "&:nth-of-type(odd)": {
95
+ backgroundColor: (theme) => theme.palette.background.paper
96
+ }
97
+ },
98
+ children: [
99
+ /* @__PURE__ */ jsx(
100
+ TableCell,
101
+ {
102
+ "data-testid": "pipelinerun-expand-cell",
103
+ padding: "checkbox",
104
+ sx: getMergedPipelineRunTableCellSx("expander"),
105
+ children: /* @__PURE__ */ jsx(
106
+ IconButton,
107
+ {
108
+ "aria-label": "expand row",
109
+ size: "small",
110
+ onClick: expandCollapseClickHandler,
111
+ role: "button",
112
+ "data-testid": "pipelinerun-expand-btn",
113
+ sx: { p: 0.5 },
114
+ children: open ? /* @__PURE__ */ jsx(KeyboardArrowDownIcon, {}) : /* @__PURE__ */ jsx(KeyboardArrowRightIcon, {})
115
+ }
116
+ )
117
+ }
118
+ ),
119
+ /* @__PURE__ */ jsx(
120
+ TableCell,
121
+ {
122
+ align: "left",
123
+ "data-testid": "pipelinerun-name-cell",
124
+ sx: getMergedPipelineRunTableCellSx("name"),
125
+ children: /* @__PURE__ */ jsx(PipelineRunName, { row })
126
+ }
127
+ ),
128
+ /* @__PURE__ */ jsx(
129
+ TableCell,
130
+ {
131
+ align: "left",
132
+ "data-testid": "pipelinerun-vulnerabilities-cell",
133
+ sx: getMergedPipelineRunTableCellSx("vulnerabilities"),
134
+ children: /* @__PURE__ */ jsx(PipelineRunVulnerabilities, { pipelineRun: row, condensed: true })
135
+ }
136
+ ),
137
+ /* @__PURE__ */ jsx(
138
+ TableCell,
139
+ {
140
+ align: "left",
141
+ "data-testid": "pipelinerun-status-cell",
142
+ sx: getMergedPipelineRunTableCellSx("status"),
143
+ children: /* @__PURE__ */ jsx(PlrStatus, { obj: row })
144
+ }
145
+ ),
146
+ /* @__PURE__ */ jsx(
147
+ TableCell,
148
+ {
149
+ align: "left",
150
+ "data-testid": "pipelinerun-task-status-cell",
151
+ sx: getMergedPipelineRunTableCellSx("task-status"),
152
+ children: /* @__PURE__ */ jsx(PipelineRunTaskStatus, { pipelineRun: row })
153
+ }
154
+ ),
155
+ /* @__PURE__ */ jsx(
156
+ TableCell,
157
+ {
158
+ align: "left",
159
+ "data-testid": "pipelinerun-start-time-cell",
160
+ sx: getMergedPipelineRunTableCellSx("start-time"),
161
+ children: startTime ? /* @__PURE__ */ jsx(
162
+ Timestamp,
163
+ {
164
+ "data-testid": "pipelinerun-start-time",
165
+ className: "bs-tkn-timestamp",
166
+ date: new Date(startTime)
167
+ }
168
+ ) : "-"
169
+ }
170
+ ),
171
+ /* @__PURE__ */ jsx(
172
+ TableCell,
173
+ {
174
+ align: "left",
175
+ "data-testid": "pipelinerun-duration-cell",
176
+ sx: getMergedPipelineRunTableCellSx("duration"),
177
+ children: pipelineRunDuration(row, t)
178
+ }
179
+ ),
180
+ /* @__PURE__ */ jsx(
181
+ TableCell,
182
+ {
183
+ align: "left",
184
+ "data-testid": "pipelinerun-actions-cell",
185
+ sx: getMergedPipelineRunTableCellSx("actions"),
186
+ children: /* @__PURE__ */ jsx(PipelineRunRowActions, { pipelineRun: row })
187
+ }
188
+ )
189
+ ]
190
+ }
191
+ ),
129
192
  /* @__PURE__ */ jsx(
130
193
  TableRow,
131
194
  {
132
- className: classes.plrVisRow,
133
195
  "data-testid": "pipelinerun-visualisation-row",
196
+ sx: {
197
+ borderBottom: (theme) => `1px solid ${theme.palette.grey.A100}`
198
+ },
134
199
  children: /* @__PURE__ */ jsx(TableCell, { style: { paddingBottom: 0, paddingTop: 0 }, colSpan: 8, children: /* @__PURE__ */ jsx(Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: /* @__PURE__ */ jsx(Box, { marginTop: 1, marginBottom: 1, children: /* @__PURE__ */ jsx(PipelineRunVisualization, { pipelineRunName: row.metadata?.name }) }) }) })
135
200
  }
136
201
  )
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunRow.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRow.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { SetStateAction, Dispatch } from 'react';\n\nimport { useEffect, Fragment } from 'react';\n\nimport {\n Box,\n Collapse,\n IconButton,\n makeStyles,\n TableCell,\n TableRow,\n Theme,\n} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport { Timestamp, Tooltip } from '@patternfly/react-core';\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport { TEKTON_SIGNED_ANNOTATION } from '../../consts/tekton-const';\nimport { OpenRowStatus, tektonGroupColor } from '../../types/types';\nimport { pipelineRunDuration } from '../../utils/tekton-utils';\nimport { PipelineRunVisualization } from '../pipeline-topology';\nimport PipelineRunRowActions from './PipelineRunRowActions';\nimport PipelineRunTaskStatus from './PipelineRunTaskStatus';\nimport PipelineRunVulnerabilities from './PipelineRunVulnerabilities';\nimport PlrStatus from './PlrStatus';\nimport ResourceBadge from './ResourceBadge';\n\nimport './PipelineRunRow.css';\n\nimport classNames from 'classnames';\n\nimport SignedBadgeIcon from '../Icons/SignedBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n plrRow: {\n '&:nth-of-type(odd)': {\n backgroundColor: `${theme.palette.background.paper}`,\n },\n },\n plrVisRow: {\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n },\n signedIndicator: {\n display: 'inline-block',\n width: theme.spacing(2.5),\n position: 'relative',\n top: theme.spacing(0.5),\n },\n}));\n\ntype PipelineRunRowProps = {\n row: PipelineRunKind;\n startTime: string;\n isExpanded?: boolean;\n open: boolean;\n setOpen: Dispatch<SetStateAction<OpenRowStatus>>;\n};\n\ntype PipelineRunNameProps = { row: PipelineRunKind };\n\nconst PipelineRunName = ({ row }: PipelineRunNameProps) => {\n const classes = useStyles();\n const name = row.metadata?.name;\n const signed =\n row?.metadata?.annotations?.[TEKTON_SIGNED_ANNOTATION] === 'true';\n\n return (\n <div>\n {name ? (\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={name || ''}\n suffix={\n signed ? (\n <Tooltip content=\"Signed\">\n <div\n data-testid=\"pipelinerun-signed\"\n className={classNames(\n classes.signedIndicator,\n 'signed-indicator',\n )}\n >\n <SignedBadgeIcon />\n </div>\n </Tooltip>\n ) : null\n }\n />\n ) : (\n '-'\n )}\n </div>\n );\n};\n\nexport const PipelineRunRow = ({\n row,\n startTime,\n isExpanded = false,\n open,\n setOpen,\n}: PipelineRunRowProps) => {\n const classes = useStyles();\n const uid = row.metadata?.uid;\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n return setOpen((val: OpenRowStatus) => {\n return {\n ...val,\n ...(uid && { [uid]: isExpanded }),\n };\n });\n }, [isExpanded, uid, setOpen]);\n\n const expandCollapseClickHandler = () => {\n setOpen((val: OpenRowStatus) => {\n return {\n ...val,\n ...(uid && {\n [uid]: !val[uid],\n }),\n };\n });\n };\n\n return (\n <Fragment key={uid}>\n <TableRow className={classes.plrRow} data-testid=\"pipelinerun-row\">\n <TableCell data-testid=\"pipelinerun-expand-cell\">\n <IconButton\n aria-label=\"expand row\"\n size=\"small\"\n onClick={expandCollapseClickHandler}\n role=\"button\"\n data-testid=\"pipelinerun-expand-btn\"\n >\n {open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}\n </IconButton>\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-name-cell\">\n <PipelineRunName row={row} />\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-vulnerabilities-cell\">\n <PipelineRunVulnerabilities pipelineRun={row} condensed />\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-status-cell\">\n <PlrStatus obj={row} />\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-task-status-cell\">\n <PipelineRunTaskStatus pipelineRun={row} /> {/* Missed here */}\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-start-time-cell\">\n {startTime ? (\n <Timestamp\n data-testid=\"pipelinerun-start-time\"\n className=\"bs-tkn-timestamp\"\n date={new Date(startTime)}\n />\n ) : (\n '-'\n )}\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-duration-cell\">\n {pipelineRunDuration(row, t)}\n </TableCell>\n <TableCell align=\"left\" data-testid=\"pipelinerun-actions-cell\">\n <PipelineRunRowActions pipelineRun={row} />\n </TableCell>\n </TableRow>\n <TableRow\n className={classes.plrVisRow}\n data-testid=\"pipelinerun-visualisation-row\"\n >\n <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={8}>\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <Box marginTop={1} marginBottom={1}>\n <PipelineRunVisualization pipelineRunName={row.metadata?.name} />\n </Box>\n </Collapse>\n </TableCell>\n </TableRow>\n </Fragment>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunRow.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRow.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { SetStateAction, Dispatch } from 'react';\n\nimport { useEffect, Fragment } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport IconButton from '@mui/material/IconButton';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport { Timestamp, Tooltip } from '@patternfly/react-core';\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport { TEKTON_SIGNED_ANNOTATION } from '../../consts/tekton-const';\nimport { OpenRowStatus, tektonGroupColor } from '../../types/types';\nimport { pipelineRunDuration } from '../../utils/tekton-utils';\nimport { getMergedPipelineRunTableCellSx } from './pipelineRunTableColumns';\nimport { PipelineRunVisualization } from '../pipeline-topology';\nimport PipelineRunRowActions from './PipelineRunRowActions';\nimport PipelineRunTaskStatus from './PipelineRunTaskStatus';\nimport PipelineRunVulnerabilities from './PipelineRunVulnerabilities';\nimport PlrStatus from './PlrStatus';\nimport ResourceBadge from './ResourceBadge';\n\nimport './PipelineRunRow.css';\n\nimport classNames from 'classnames';\n\nimport SignedBadgeIcon from '../Icons/SignedBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunRowProps = {\n row: PipelineRunKind;\n startTime: string;\n isExpanded?: boolean;\n open: boolean;\n setOpen: Dispatch<SetStateAction<OpenRowStatus>>;\n};\n\ntype PipelineRunNameProps = { row: PipelineRunKind };\n\nconst PipelineRunName = ({ row }: PipelineRunNameProps) => {\n const name = row.metadata?.name;\n const signed =\n row?.metadata?.annotations?.[TEKTON_SIGNED_ANNOTATION] === 'true';\n\n return (\n <div>\n {name ? (\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={name || ''}\n suffix={\n signed ? (\n <Tooltip content=\"Signed\">\n <Box\n data-testid=\"pipelinerun-signed\"\n className={classNames('signed-indicator')}\n sx={{\n display: 'inline-block',\n width: theme => theme.spacing(2.5),\n position: 'relative',\n top: theme => theme.spacing(0.5),\n }}\n >\n <SignedBadgeIcon />\n </Box>\n </Tooltip>\n ) : null\n }\n />\n ) : (\n '-'\n )}\n </div>\n );\n};\n\nexport const PipelineRunRow = ({\n row,\n startTime,\n isExpanded = false,\n open,\n setOpen,\n}: PipelineRunRowProps) => {\n const uid = row.metadata?.uid;\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n return setOpen((val: OpenRowStatus) => {\n return {\n ...val,\n ...(uid && { [uid]: isExpanded }),\n };\n });\n }, [isExpanded, uid, setOpen]);\n\n const expandCollapseClickHandler = () => {\n setOpen((val: OpenRowStatus) => {\n return {\n ...val,\n ...(uid && {\n [uid]: !val[uid],\n }),\n };\n });\n };\n\n return (\n <Fragment key={uid}>\n <TableRow\n data-testid=\"pipelinerun-row\"\n sx={{\n '&:nth-of-type(odd)': {\n backgroundColor: theme => theme.palette.background.paper,\n },\n }}\n >\n <TableCell\n data-testid=\"pipelinerun-expand-cell\"\n padding=\"checkbox\"\n sx={getMergedPipelineRunTableCellSx('expander')}\n >\n <IconButton\n aria-label=\"expand row\"\n size=\"small\"\n onClick={expandCollapseClickHandler}\n role=\"button\"\n data-testid=\"pipelinerun-expand-btn\"\n sx={{ p: 0.5 }}\n >\n {open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}\n </IconButton>\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-name-cell\"\n sx={getMergedPipelineRunTableCellSx('name')}\n >\n <PipelineRunName row={row} />\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-vulnerabilities-cell\"\n sx={getMergedPipelineRunTableCellSx('vulnerabilities')}\n >\n <PipelineRunVulnerabilities pipelineRun={row} condensed />\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-status-cell\"\n sx={getMergedPipelineRunTableCellSx('status')}\n >\n <PlrStatus obj={row} />\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-task-status-cell\"\n sx={getMergedPipelineRunTableCellSx('task-status')}\n >\n <PipelineRunTaskStatus pipelineRun={row} />\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-start-time-cell\"\n sx={getMergedPipelineRunTableCellSx('start-time')}\n >\n {startTime ? (\n <Timestamp\n data-testid=\"pipelinerun-start-time\"\n className=\"bs-tkn-timestamp\"\n date={new Date(startTime)}\n />\n ) : (\n '-'\n )}\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-duration-cell\"\n sx={getMergedPipelineRunTableCellSx('duration')}\n >\n {pipelineRunDuration(row, t)}\n </TableCell>\n <TableCell\n align=\"left\"\n data-testid=\"pipelinerun-actions-cell\"\n sx={getMergedPipelineRunTableCellSx('actions')}\n >\n <PipelineRunRowActions pipelineRun={row} />\n </TableCell>\n </TableRow>\n <TableRow\n data-testid=\"pipelinerun-visualisation-row\"\n sx={{\n borderBottom: theme => `1px solid ${theme.palette.grey.A100}`,\n }}\n >\n <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={8}>\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <Box marginTop={1} marginBottom={1}>\n <PipelineRunVisualization pipelineRunName={row.metadata?.name} />\n </Box>\n </Collapse>\n </TableCell>\n </TableRow>\n </Fragment>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { memo, useContext, useState } from 'react';
3
3
  import { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common';
4
4
  import { usePermission } from '@backstage/plugin-permission-react';
5
- import { IconButton } from '@material-ui/core';
5
+ import IconButton from '@mui/material/IconButton';
6
6
  import { Flex, FlexItem } from '@patternfly/react-core';
7
7
  import { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';
8
8
  import { ComputedStatus, pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunRowActions.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRowActions.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { FC } from 'react';\n\nimport { useContext, useState, memo } from 'react';\n\nimport { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport { IconButton } from '@material-ui/core';\nimport { Flex, FlexItem } from '@patternfly/react-core';\nimport { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport {\n getTaskrunsOutputGroup,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport OutputIcon from '../Icons/OutputIcon';\nimport ViewLogsIcon from '../Icons/ViewLogsIcon';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":["PipelineRunRowActions"],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunRowActions.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRowActions.tsx"],"sourcesContent":["/*\n * Copyright 2024 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 type { FC } from 'react';\n\nimport { useContext, useState, memo } from 'react';\n\nimport { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport IconButton from '@mui/material/IconButton';\nimport { Flex, FlexItem } from '@patternfly/react-core';\nimport { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport {\n getTaskrunsOutputGroup,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport OutputIcon from '../Icons/OutputIcon';\nimport ViewLogsIcon from '../Icons/ViewLogsIcon';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":["PipelineRunRowActions"],"mappings":"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"}