@backstage-community/plugin-tekton 3.28.0 → 3.29.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 (58) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/PipelineRunList/PipelineRunColumnHeader.esm.js.map +1 -1
  3. package/dist/components/PipelineRunList/PipelineRunList.esm.js +2 -1
  4. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  5. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +2 -1
  6. package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js.map +1 -1
  7. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js +2 -1
  8. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
  9. package/dist/components/PipelineRunList/PipelineRunRow.esm.js +2 -1
  10. package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
  11. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +2 -1
  12. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  13. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js +2 -1
  14. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
  15. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +2 -1
  16. package/dist/components/PipelineRunList/PipelineTableHeader.esm.js.map +1 -1
  17. package/dist/components/PipelineRunList/PlrStatus.esm.js +2 -1
  18. package/dist/components/PipelineRunList/PlrStatus.esm.js.map +1 -1
  19. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +2 -1
  20. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
  21. package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js +2 -1
  22. package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js.map +1 -1
  23. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js +2 -1
  24. package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js.map +1 -1
  25. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +2 -1
  26. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
  27. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js +2 -1
  28. package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js.map +1 -1
  29. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +2 -1
  30. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
  31. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +2 -1
  32. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
  33. package/dist/components/common/ErrorPanel.esm.js +2 -1
  34. package/dist/components/common/ErrorPanel.esm.js.map +1 -1
  35. package/dist/components/common/PermissionAlert.esm.js +2 -1
  36. package/dist/components/common/PermissionAlert.esm.js.map +1 -1
  37. package/dist/components/common/StatusSelector.esm.js +2 -1
  38. package/dist/components/common/StatusSelector.esm.js.map +1 -1
  39. package/dist/components/common/TableExpandCollapse.esm.js +2 -1
  40. package/dist/components/common/TableExpandCollapse.esm.js.map +1 -1
  41. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js +2 -1
  42. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
  43. package/dist/components/pipeline-topology/PipelineVisualization.esm.js +2 -1
  44. package/dist/components/pipeline-topology/PipelineVisualization.esm.js.map +1 -1
  45. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +2 -1
  46. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -1
  47. package/dist/components/pipeline-topology/PipelineVisualizationView.esm.js +2 -1
  48. package/dist/components/pipeline-topology/PipelineVisualizationView.esm.js.map +1 -1
  49. package/dist/index.d.ts +7 -1
  50. package/dist/index.esm.js +2 -1
  51. package/dist/index.esm.js.map +1 -1
  52. package/dist/translations/index.esm.js +10 -0
  53. package/dist/translations/index.esm.js.map +1 -0
  54. package/dist/{translation.esm.js → translations/ref.esm.js} +1 -1
  55. package/dist/{translation.esm.js.map → translations/ref.esm.js.map} +1 -1
  56. package/dist/utils/pipeline-step-utils.esm.js.map +1 -1
  57. package/dist/utils/tekton-utils.esm.js.map +1 -1
  58. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  ### Dependencies
2
2
 
3
+ ## 3.29.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 99b0588: Standardize i18n in Tekton plugin
8
+
9
+ ### Patch Changes
10
+
11
+ - 9ffcad1: Updated dependency `start-server-and-test` to `2.1.2`.
12
+ - 773c07a: Fix broken url in package.json
13
+
3
14
  ## 3.28.0
4
15
 
5
16
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunColumnHeader.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunColumnHeader.ts"],"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 { TableColumn } from '@backstage/core-components';\nimport { TranslationFunction } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\nexport const getPipelineRunColumnHeader = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n): TableColumn[] => {\n return [\n {\n id: 'expander',\n },\n {\n id: 'name',\n title: t('pipelineRunList.tableHeaderTitle.name'),\n field: 'metadata.name',\n },\n {\n id: 'vulnerabilities',\n title: t('pipelineRunList.tableHeaderTitle.vulnerabilities'),\n field: 'status.results',\n },\n {\n id: 'status',\n title: t('pipelineRunList.tableHeaderTitle.status'),\n field: 'status.conditions[0].reason',\n },\n {\n id: 'task-status',\n title: t('pipelineRunList.tableHeaderTitle.taskStatus'),\n field: 'status.conditions[0].reason',\n },\n {\n id: 'start-time',\n title: t('pipelineRunList.tableHeaderTitle.startTime'),\n field: 'status.startTime',\n defaultSort: 'desc',\n },\n {\n id: 'duration',\n title: t('pipelineRunList.tableHeaderTitle.duration'),\n field: 'status.completionTime',\n },\n {\n id: 'actions',\n title: t('pipelineRunList.tableHeaderTitle.actions'),\n },\n ];\n};\n"],"names":[],"mappings":"AAmBO,MAAM,0BAAA,GAA6B,CACxC,CAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACL;AAAA,MACE,EAAA,EAAI;AAAA,KACN;AAAA,IACA;AAAA,MACE,EAAA,EAAI,MAAA;AAAA,MACJ,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,MAChD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,iBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,kDAAkD,CAAA;AAAA,MAC3D,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,QAAA;AAAA,MACJ,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,MAClD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,aAAA;AAAA,MACJ,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,MACtD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,YAAA;AAAA,MACJ,KAAA,EAAO,EAAE,4CAA4C,CAAA;AAAA,MACrD,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,MACE,EAAA,EAAI,UAAA;AAAA,MACJ,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,MACpD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,SAAA;AAAA,MACJ,KAAA,EAAO,EAAE,0CAA0C;AAAA;AACrD,GACF;AACF;;;;"}
1
+ {"version":3,"file":"PipelineRunColumnHeader.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunColumnHeader.ts"],"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 { TableColumn } from '@backstage/core-components';\nimport { TranslationFunction } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nexport const getPipelineRunColumnHeader = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n): TableColumn[] => {\n return [\n {\n id: 'expander',\n },\n {\n id: 'name',\n title: t('pipelineRunList.tableHeaderTitle.name'),\n field: 'metadata.name',\n },\n {\n id: 'vulnerabilities',\n title: t('pipelineRunList.tableHeaderTitle.vulnerabilities'),\n field: 'status.results',\n },\n {\n id: 'status',\n title: t('pipelineRunList.tableHeaderTitle.status'),\n field: 'status.conditions[0].reason',\n },\n {\n id: 'task-status',\n title: t('pipelineRunList.tableHeaderTitle.taskStatus'),\n field: 'status.conditions[0].reason',\n },\n {\n id: 'start-time',\n title: t('pipelineRunList.tableHeaderTitle.startTime'),\n field: 'status.startTime',\n defaultSort: 'desc',\n },\n {\n id: 'duration',\n title: t('pipelineRunList.tableHeaderTitle.duration'),\n field: 'status.completionTime',\n },\n {\n id: 'actions',\n title: t('pipelineRunList.tableHeaderTitle.actions'),\n },\n ];\n};\n"],"names":[],"mappings":"AAmBO,MAAM,0BAAA,GAA6B,CACxC,CAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACL;AAAA,MACE,EAAA,EAAI;AAAA,KACN;AAAA,IACA;AAAA,MACE,EAAA,EAAI,MAAA;AAAA,MACJ,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,MAChD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,iBAAA;AAAA,MACJ,KAAA,EAAO,EAAE,kDAAkD,CAAA;AAAA,MAC3D,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,QAAA;AAAA,MACJ,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,MAClD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,aAAA;AAAA,MACJ,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,MACtD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,YAAA;AAAA,MACJ,KAAA,EAAO,EAAE,4CAA4C,CAAA;AAAA,MACrD,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACf;AAAA,IACA;AAAA,MACE,EAAA,EAAI,UAAA;AAAA,MACJ,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,MACpD,KAAA,EAAO;AAAA,KACT;AAAA,IACA;AAAA,MACE,EAAA,EAAI,SAAA;AAAA,MACJ,KAAA,EAAO,EAAE,0CAA0C;AAAA;AACrD,GACF;AACF;;;;"}
@@ -17,7 +17,8 @@ import { PipelineRunListSearchBar } from './PipelineRunListSearchBar.esm.js';
17
17
  import { PipelineRunTableBody } from './PipelineRunTableBody.esm.js';
18
18
  import { EnhancedTableHead } from './PipelineTableHeader.esm.js';
19
19
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
20
- import { tektonTranslationRef } from '../../translation.esm.js';
20
+ import '../../translations/index.esm.js';
21
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
21
22
 
22
23
  const useStyles = makeStyles((theme) => ({
23
24
  root: {
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunList.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunList.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 { PropsWithChildren, MouseEvent, ChangeEvent } from 'react';\n\nimport {\n useContext,\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n memo,\n} from 'react';\n\nimport { InfoCard, Progress } from '@backstage/core-components';\n\nimport {\n Box,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TablePagination,\n TableRow,\n Toolbar,\n Typography,\n} from '@material-ui/core';\n\nimport {\n ComputedStatus,\n PipelineRunKind,\n pipelineRunStatus,\n} from '@janus-idp/shared-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { ClusterErrors, Order } from '../../types/types';\nimport { getComparator } from '../../utils/tekton-utils';\nimport { ClusterSelector, ErrorPanel } from '../common';\nimport { StatusSelector } from '../common/StatusSelector';\nimport { TableExpandCollapse } from '../common/TableExpandCollapse';\nimport { getPipelineRunColumnHeader } from './PipelineRunColumnHeader';\nimport { PipelineRunListSearchBar } from './PipelineRunListSearchBar';\nimport { PipelineRunTableBody } from './PipelineRunTableBody';\nimport { EnhancedTableHead } from './PipelineTableHeader';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\ntype WrapperInfoCardProps = {\n allErrors?: ClusterErrors;\n showClusterSelector?: boolean;\n titleClassName?: string;\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: 'start',\n padding: theme.spacing(3, 0, 2.5, 2.5),\n },\n empty: {\n padding: theme.spacing(2),\n display: 'flex',\n justifyContent: 'center',\n },\n title: {\n display: 'flex',\n gap: '20px',\n alignItems: 'center',\n },\n footer: {\n '&:nth-of-type(odd)': {\n backgroundColor: `${theme.palette.background.paper}`,\n },\n },\n}));\n\nconst WrapperInfoCard = ({\n children,\n allErrors,\n showClusterSelector = true,\n titleClassName,\n}: PropsWithChildren<WrapperInfoCardProps>) => (\n <>\n {allErrors && allErrors.length > 0 && <ErrorPanel allErrors={allErrors} />}\n <InfoCard\n {...(showClusterSelector && {\n title: (\n <div className={titleClassName}>\n <ClusterSelector />\n <StatusSelector />\n <TableExpandCollapse />\n </div>\n ),\n })}\n >\n {children}\n </InfoCard>\n </>\n);\n\nconst PipelineRunList = () => {\n const {\n loaded,\n responseError,\n watchResourcesData,\n selectedClusterErrors,\n clusters,\n selectedCluster,\n selectedStatus,\n } = useContext(TektonResourcesContext);\n const [search, setSearch] = useState<string>('');\n const [order, setOrder] = useState<Order>('desc');\n const [orderBy, setOrderBy] = useState<string>('status.startTime');\n const [orderById, setOrderById] = useState<string>('startTime'); // 2 columns have the same field\n const [page, setPage] = useState<number>(0);\n const [rowsPerPage, setRowsPerPage] = useState<number>(5);\n const { t } = useTranslationRef(tektonTranslationRef);\n const pipelineRunColumnHeader = getPipelineRunColumnHeader(t);\n\n // Jump to first page when cluster, status and search filter changed\n const updateStateOnFilterChanges = useRef(false);\n useEffect(() => {\n if (updateStateOnFilterChanges.current) {\n setPage(0);\n } else {\n updateStateOnFilterChanges.current = true;\n }\n }, [selectedCluster, selectedStatus, search]);\n\n const allPipelineRuns = useMemo(() => {\n const plrs =\n watchResourcesData?.pipelineruns?.data?.map(d => ({\n ...d,\n id: d.metadata.uid,\n })) ?? [];\n return plrs as PipelineRunKind[];\n }, [watchResourcesData]);\n\n const filteredPipelineRuns = useMemo(() => {\n let plrs = allPipelineRuns;\n\n if (selectedStatus && selectedStatus !== ComputedStatus.All) {\n plrs = plrs.filter(plr => pipelineRunStatus(plr) === selectedStatus);\n }\n\n if (search) {\n const f = search.toLocaleUpperCase('en-US');\n plrs = plrs.filter((plr: PipelineRunKind) => {\n const n = plr.metadata?.name?.toLocaleUpperCase('en-US');\n return n?.includes(f);\n });\n }\n\n plrs = plrs.sort(getComparator(order, orderBy, orderById));\n\n return plrs;\n }, [allPipelineRuns, selectedStatus, search, order, orderBy, orderById]);\n\n const visibleRows = useMemo(() => {\n return filteredPipelineRuns.slice(\n page * rowsPerPage,\n page * rowsPerPage + rowsPerPage,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredPipelineRuns, page, rowsPerPage, order, orderById]);\n\n const handleRequestSort = useCallback(\n (_event: MouseEvent<unknown>, property: string, id: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n setOrderById(id);\n },\n [order, orderBy],\n );\n\n const handleChangePage = (_event: unknown, newPage: number) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows =\n page > 0\n ? Math.max(\n 0,\n (1 + page) * rowsPerPage - (filteredPipelineRuns.length ?? 0),\n )\n : 0;\n\n const classes = useStyles();\n\n const allErrors: ClusterErrors = [\n ...(responseError ? [{ message: responseError }] : []),\n ...(selectedClusterErrors ?? []),\n ];\n\n if (!loaded && !responseError)\n return (\n <div data-testid=\"tekton-progress\">\n <Progress />\n </div>\n );\n\n return (\n <WrapperInfoCard\n allErrors={allErrors}\n showClusterSelector={clusters.length > 0}\n titleClassName={classes.title}\n >\n <Box>\n <Paper>\n <Toolbar>\n <Typography variant=\"h5\" component=\"h2\">\n {t('pipelineRunList.title')}\n </Typography>\n <PipelineRunListSearchBar value={search} onChange={setSearch} />\n </Toolbar>\n <Table\n aria-labelledby=\"Pipeline Runs\"\n size=\"small\"\n style={{ width: '100%' }}\n >\n <EnhancedTableHead\n order={order}\n orderBy={orderBy}\n orderById={orderById}\n onRequestSort={handleRequestSort}\n />\n {visibleRows?.length > 0 ? (\n <TableBody>\n <PipelineRunTableBody rows={visibleRows} />\n {emptyRows > 0 && (\n <TableRow style={{ height: 55 * emptyRows }}>\n <TableCell colSpan={pipelineRunColumnHeader.length} />\n </TableRow>\n )}\n <TableRow className={classes.footer}>\n <TablePagination\n rowsPerPageOptions={[\n { value: 5, label: '5 rows' },\n { value: 10, label: '10 rows' },\n { value: 25, label: '25 rows' },\n ]}\n count={filteredPipelineRuns.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={null}\n />\n </TableRow>\n </TableBody>\n ) : (\n <tbody>\n <tr>\n <td colSpan={pipelineRunColumnHeader.length}>\n <div\n data-testid=\"no-pipeline-runs\"\n className={classes.empty}\n >\n {t('pipelineRunList.noPipelineRuns')}\n </div>\n </td>\n </tr>\n </tbody>\n )}\n </Table>\n </Paper>\n </Box>\n </WrapperInfoCard>\n );\n};\n\nexport default memo(PipelineRunList);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunList.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunList.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 { PropsWithChildren, MouseEvent, ChangeEvent } from 'react';\n\nimport {\n useContext,\n useState,\n useRef,\n useEffect,\n useMemo,\n useCallback,\n memo,\n} from 'react';\n\nimport { InfoCard, Progress } from '@backstage/core-components';\n\nimport {\n Box,\n makeStyles,\n Paper,\n Table,\n TableBody,\n TableCell,\n TablePagination,\n TableRow,\n Toolbar,\n Typography,\n} from '@material-ui/core';\n\nimport {\n ComputedStatus,\n PipelineRunKind,\n pipelineRunStatus,\n} from '@janus-idp/shared-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { ClusterErrors, Order } from '../../types/types';\nimport { getComparator } from '../../utils/tekton-utils';\nimport { ClusterSelector, ErrorPanel } from '../common';\nimport { StatusSelector } from '../common/StatusSelector';\nimport { TableExpandCollapse } from '../common/TableExpandCollapse';\nimport { getPipelineRunColumnHeader } from './PipelineRunColumnHeader';\nimport { PipelineRunListSearchBar } from './PipelineRunListSearchBar';\nimport { PipelineRunTableBody } from './PipelineRunTableBody';\nimport { EnhancedTableHead } from './PipelineTableHeader';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype WrapperInfoCardProps = {\n allErrors?: ClusterErrors;\n showClusterSelector?: boolean;\n titleClassName?: string;\n};\n\nconst useStyles = makeStyles(theme => ({\n root: {\n alignItems: 'start',\n padding: theme.spacing(3, 0, 2.5, 2.5),\n },\n empty: {\n padding: theme.spacing(2),\n display: 'flex',\n justifyContent: 'center',\n },\n title: {\n display: 'flex',\n gap: '20px',\n alignItems: 'center',\n },\n footer: {\n '&:nth-of-type(odd)': {\n backgroundColor: `${theme.palette.background.paper}`,\n },\n },\n}));\n\nconst WrapperInfoCard = ({\n children,\n allErrors,\n showClusterSelector = true,\n titleClassName,\n}: PropsWithChildren<WrapperInfoCardProps>) => (\n <>\n {allErrors && allErrors.length > 0 && <ErrorPanel allErrors={allErrors} />}\n <InfoCard\n {...(showClusterSelector && {\n title: (\n <div className={titleClassName}>\n <ClusterSelector />\n <StatusSelector />\n <TableExpandCollapse />\n </div>\n ),\n })}\n >\n {children}\n </InfoCard>\n </>\n);\n\nconst PipelineRunList = () => {\n const {\n loaded,\n responseError,\n watchResourcesData,\n selectedClusterErrors,\n clusters,\n selectedCluster,\n selectedStatus,\n } = useContext(TektonResourcesContext);\n const [search, setSearch] = useState<string>('');\n const [order, setOrder] = useState<Order>('desc');\n const [orderBy, setOrderBy] = useState<string>('status.startTime');\n const [orderById, setOrderById] = useState<string>('startTime'); // 2 columns have the same field\n const [page, setPage] = useState<number>(0);\n const [rowsPerPage, setRowsPerPage] = useState<number>(5);\n const { t } = useTranslationRef(tektonTranslationRef);\n const pipelineRunColumnHeader = getPipelineRunColumnHeader(t);\n\n // Jump to first page when cluster, status and search filter changed\n const updateStateOnFilterChanges = useRef(false);\n useEffect(() => {\n if (updateStateOnFilterChanges.current) {\n setPage(0);\n } else {\n updateStateOnFilterChanges.current = true;\n }\n }, [selectedCluster, selectedStatus, search]);\n\n const allPipelineRuns = useMemo(() => {\n const plrs =\n watchResourcesData?.pipelineruns?.data?.map(d => ({\n ...d,\n id: d.metadata.uid,\n })) ?? [];\n return plrs as PipelineRunKind[];\n }, [watchResourcesData]);\n\n const filteredPipelineRuns = useMemo(() => {\n let plrs = allPipelineRuns;\n\n if (selectedStatus && selectedStatus !== ComputedStatus.All) {\n plrs = plrs.filter(plr => pipelineRunStatus(plr) === selectedStatus);\n }\n\n if (search) {\n const f = search.toLocaleUpperCase('en-US');\n plrs = plrs.filter((plr: PipelineRunKind) => {\n const n = plr.metadata?.name?.toLocaleUpperCase('en-US');\n return n?.includes(f);\n });\n }\n\n plrs = plrs.sort(getComparator(order, orderBy, orderById));\n\n return plrs;\n }, [allPipelineRuns, selectedStatus, search, order, orderBy, orderById]);\n\n const visibleRows = useMemo(() => {\n return filteredPipelineRuns.slice(\n page * rowsPerPage,\n page * rowsPerPage + rowsPerPage,\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredPipelineRuns, page, rowsPerPage, order, orderById]);\n\n const handleRequestSort = useCallback(\n (_event: MouseEvent<unknown>, property: string, id: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n setOrderById(id);\n },\n [order, orderBy],\n );\n\n const handleChangePage = (_event: unknown, newPage: number) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows =\n page > 0\n ? Math.max(\n 0,\n (1 + page) * rowsPerPage - (filteredPipelineRuns.length ?? 0),\n )\n : 0;\n\n const classes = useStyles();\n\n const allErrors: ClusterErrors = [\n ...(responseError ? [{ message: responseError }] : []),\n ...(selectedClusterErrors ?? []),\n ];\n\n if (!loaded && !responseError)\n return (\n <div data-testid=\"tekton-progress\">\n <Progress />\n </div>\n );\n\n return (\n <WrapperInfoCard\n allErrors={allErrors}\n showClusterSelector={clusters.length > 0}\n titleClassName={classes.title}\n >\n <Box>\n <Paper>\n <Toolbar>\n <Typography variant=\"h5\" component=\"h2\">\n {t('pipelineRunList.title')}\n </Typography>\n <PipelineRunListSearchBar value={search} onChange={setSearch} />\n </Toolbar>\n <Table\n aria-labelledby=\"Pipeline Runs\"\n size=\"small\"\n style={{ width: '100%' }}\n >\n <EnhancedTableHead\n order={order}\n orderBy={orderBy}\n orderById={orderById}\n onRequestSort={handleRequestSort}\n />\n {visibleRows?.length > 0 ? (\n <TableBody>\n <PipelineRunTableBody rows={visibleRows} />\n {emptyRows > 0 && (\n <TableRow style={{ height: 55 * emptyRows }}>\n <TableCell colSpan={pipelineRunColumnHeader.length} />\n </TableRow>\n )}\n <TableRow className={classes.footer}>\n <TablePagination\n rowsPerPageOptions={[\n { value: 5, label: '5 rows' },\n { value: 10, label: '10 rows' },\n { value: 25, label: '25 rows' },\n ]}\n count={filteredPipelineRuns.length}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n labelRowsPerPage={null}\n />\n </TableRow>\n </TableBody>\n ) : (\n <tbody>\n <tr>\n <td colSpan={pipelineRunColumnHeader.length}>\n <div\n data-testid=\"no-pipeline-runs\"\n className={classes.empty}\n >\n {t('pipelineRunList.noPipelineRuns')}\n </div>\n </td>\n </tr>\n </tbody>\n )}\n </Table>\n </Paper>\n </Box>\n </WrapperInfoCard>\n );\n};\n\nexport default memo(PipelineRunList);\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { makeStyles, FormControl, Input, InputAdornment, IconButton } from '@mat
3
3
  import Clear from '@material-ui/icons/Clear';
4
4
  import Search from '@material-ui/icons/Search';
5
5
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
6
- import { tektonTranslationRef } from '../../translation.esm.js';
6
+ import '../../translations/index.esm.js';
7
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
7
8
 
8
9
  const useStyles = makeStyles({
9
10
  formControl: {
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunListSearchBar.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunListSearchBar.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 {\n FormControl,\n IconButton,\n Input,\n InputAdornment,\n makeStyles,\n} from '@material-ui/core';\nimport Clear from '@material-ui/icons/Clear';\nimport Search from '@material-ui/icons/Search';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\ntype PipelineRunListSearchBarProps = {\n value: string;\n onChange: (filter: string) => void;\n};\n\nconst useStyles = makeStyles({\n formControl: {\n alignItems: 'flex-end',\n flexGrow: 1,\n },\n});\n\nexport const PipelineRunListSearchBar = ({\n value,\n onChange,\n}: PipelineRunListSearchBarProps) => {\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <FormControl className={classes.formControl}>\n <Input\n aria-label=\"search\"\n placeholder={t('pipelineRunList.searchBarPlaceholder')}\n autoComplete=\"off\"\n onChange={event => onChange(event.target.value)}\n value={value}\n startAdornment={\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"clear search\"\n onClick={() => onChange('')}\n edge=\"end\"\n disabled={!value}\n data-testid=\"clear-search\"\n >\n <Clear />\n </IconButton>\n </InputAdornment>\n }\n />\n </FormControl>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAgCA,MAAM,YAAY,UAAA,CAAW;AAAA,EAC3B,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,UAAA;AAAA,IACZ,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAEM,MAAM,2BAA2B,CAAC;AAAA,EACvC,KAAA;AAAA,EACA;AACF,CAAA,KAAqC;AACnC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,OAAA,CAAQ,WAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,EAAE,sCAAsC,CAAA;AAAA,MACrD,YAAA,EAAa,KAAA;AAAA,MACb,QAAA,EAAU,CAAA,KAAA,KAAS,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MAC9C,KAAA;AAAA,MACA,gCACE,GAAA,CAAC,cAAA,EAAA,EAAe,UAAS,OAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,UAAO,CAAA,EACV,CAAA;AAAA,MAEF,YAAA,kBACE,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,KAAA,EACvB,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,cAAA;AAAA,UACX,OAAA,EAAS,MAAM,QAAA,CAAS,EAAE,CAAA;AAAA,UAC1B,IAAA,EAAK,KAAA;AAAA,UACL,UAAU,CAAC,KAAA;AAAA,UACX,aAAA,EAAY,cAAA;AAAA,UAEZ,8BAAC,KAAA,EAAA,EAAM;AAAA;AAAA,OACT,EACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineRunListSearchBar.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunListSearchBar.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 {\n FormControl,\n IconButton,\n Input,\n InputAdornment,\n makeStyles,\n} from '@material-ui/core';\nimport Clear from '@material-ui/icons/Clear';\nimport Search from '@material-ui/icons/Search';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunListSearchBarProps = {\n value: string;\n onChange: (filter: string) => void;\n};\n\nconst useStyles = makeStyles({\n formControl: {\n alignItems: 'flex-end',\n flexGrow: 1,\n },\n});\n\nexport const PipelineRunListSearchBar = ({\n value,\n onChange,\n}: PipelineRunListSearchBarProps) => {\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <FormControl className={classes.formControl}>\n <Input\n aria-label=\"search\"\n placeholder={t('pipelineRunList.searchBarPlaceholder')}\n autoComplete=\"off\"\n onChange={event => onChange(event.target.value)}\n value={value}\n startAdornment={\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n }\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"clear search\"\n onClick={() => onChange('')}\n edge=\"end\"\n disabled={!value}\n data-testid=\"clear-search\"\n >\n <Clear />\n </IconButton>\n </InputAdornment>\n }\n />\n </FormControl>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAgCA,MAAM,YAAY,UAAA,CAAW;AAAA,EAC3B,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,UAAA;AAAA,IACZ,QAAA,EAAU;AAAA;AAEd,CAAC,CAAA;AAEM,MAAM,2BAA2B,CAAC;AAAA,EACvC,KAAA;AAAA,EACA;AACF,CAAA,KAAqC;AACnC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,OAAA,CAAQ,WAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,EAAE,sCAAsC,CAAA;AAAA,MACrD,YAAA,EAAa,KAAA;AAAA,MACb,QAAA,EAAU,CAAA,KAAA,KAAS,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MAC9C,KAAA;AAAA,MACA,gCACE,GAAA,CAAC,cAAA,EAAA,EAAe,UAAS,OAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,UAAO,CAAA,EACV,CAAA;AAAA,MAEF,YAAA,kBACE,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,KAAA,EACvB,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,cAAA;AAAA,UACX,OAAA,EAAS,MAAM,QAAA,CAAS,EAAE,CAAA;AAAA,UAC1B,IAAA,EAAK,KAAA;AAAA,UACL,UAAU,CAAC,KAAA;AAAA,UACX,aAAA,EAAY,cAAA;AAAA,UAEZ,8BAAC,KAAA,EAAA,EAAM;AAAA;AAAA,OACT,EACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;;;;"}
@@ -6,8 +6,9 @@ import { usePipelineRunOutput, Output } from '@aonic-ui/pipelines';
6
6
  import { Grid, Paper, Typography } from '@material-ui/core';
7
7
  import { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';
8
8
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
9
- import { tektonTranslationRef } from '../../translation.esm.js';
9
+ import '../../translations/index.esm.js';
10
10
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
11
12
 
12
13
  const PipelineRunOutput = ({
13
14
  pipelineRun,
@@ -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 { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { tektonTranslationRef } from '../../translation';\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 { Grid, Paper, Typography } from '@material-ui/core';\n\nimport { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-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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"}
@@ -15,7 +15,7 @@ import '../pipeline-topology/PipelineTaskNode.esm.js';
15
15
  import '../pipeline-topology/TaskGroupEdge.esm.js';
16
16
  import '../pipeline-topology/PipelineVisualization.css.esm.js';
17
17
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
18
- import { tektonTranslationRef } from '../../translation.esm.js';
18
+ import '../../translations/index.esm.js';
19
19
  import { PipelineRunVisualization } from '../pipeline-topology/PipelineRunVisualization.esm.js';
20
20
  import PipelineRunRowActions from './PipelineRunRowActions.esm.js';
21
21
  import PipelineRunTaskStatus from './PipelineRunTaskStatus.esm.js';
@@ -25,6 +25,7 @@ import ResourceBadge from './ResourceBadge.esm.js';
25
25
  import './PipelineRunRow.css.esm.js';
26
26
  import classNames from 'classnames';
27
27
  import SignedBadgeIcon from '../Icons/SignedBadge.esm.js';
28
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
28
29
 
29
30
  const useStyles = makeStyles((theme) => ({
30
31
  plrRow: {
@@ -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 '@janus-idp/shared-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 '../../translation';\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 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}>\n <TableCell>\n <IconButton\n aria-label=\"expand row\"\n size=\"small\"\n onClick={expandCollapseClickHandler}\n >\n {open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}\n </IconButton>\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunName row={row} />\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunVulnerabilities pipelineRun={row} condensed />\n </TableCell>\n <TableCell align=\"left\">\n <PlrStatus obj={row} />\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunTaskStatus pipelineRun={row} />\n </TableCell>\n <TableCell align=\"left\">\n {startTime ? (\n <Timestamp\n className=\"bs-tkn-timestamp\"\n date={new Date(startTime)}\n />\n ) : (\n '-'\n )}\n </TableCell>\n <TableCell align=\"left\">{pipelineRunDuration(row, t)}</TableCell>\n <TableCell align=\"left\">\n <PipelineRunRowActions pipelineRun={row} />\n </TableCell>\n </TableRow>\n <TableRow className={classes.plrVisRow}>\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 {\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 '@janus-idp/shared-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 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}>\n <TableCell>\n <IconButton\n aria-label=\"expand row\"\n size=\"small\"\n onClick={expandCollapseClickHandler}\n >\n {open ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}\n </IconButton>\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunName row={row} />\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunVulnerabilities pipelineRun={row} condensed />\n </TableCell>\n <TableCell align=\"left\">\n <PlrStatus obj={row} />\n </TableCell>\n <TableCell align=\"left\">\n <PipelineRunTaskStatus pipelineRun={row} />\n </TableCell>\n <TableCell align=\"left\">\n {startTime ? (\n <Timestamp\n className=\"bs-tkn-timestamp\"\n date={new Date(startTime)}\n />\n ) : (\n '-'\n )}\n </TableCell>\n <TableCell align=\"left\">{pipelineRunDuration(row, t)}</TableCell>\n <TableCell align=\"left\">\n <PipelineRunRowActions pipelineRun={row} />\n </TableCell>\n </TableRow>\n <TableRow className={classes.plrVisRow}>\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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"}
@@ -14,7 +14,8 @@ import PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog.esm.js
14
14
  import PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog.esm.js';
15
15
  import PipelineRunSBOMLink from './PipelineRunSBOMLink.esm.js';
16
16
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
17
- import { tektonTranslationRef } from '../../translation.esm.js';
17
+ import '../../translations/index.esm.js';
18
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
18
19
 
19
20
  const PipelineRunRowActions = ({
20
21
  pipelineRun
@@ -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 '@janus-idp/shared-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 PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\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 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 <Flex gap={{ default: 'gapXs' }}>\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":[],"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 '@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 '@janus-idp/shared-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 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';\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 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 <Flex gap={{ default: 'gapXs' }}>\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":[],"mappings":"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"}
@@ -9,8 +9,9 @@ import classNames from 'classnames';
9
9
  import { usePipelineRunScanResults } from '../../hooks/usePipelineRunScanResults.esm.js';
10
10
  import CriticalRiskIcon from '../Icons/CriticalRiskIcon.esm.js';
11
11
  import EqualsIcon from '../Icons/EqualsIcon.esm.js';
12
- import { tektonTranslationRef } from '../../translation.esm.js';
12
+ import '../../translations/index.esm.js';
13
13
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
14
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
14
15
 
15
16
  const useVStyles = makeStyles((theme) => ({
16
17
  pipelineVulnerabilities: {
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunVulnerabilities.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunVulnerabilities.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 { makeStyles, Theme } from '@material-ui/core';\nimport AngleDoubleDownIcon from '@mui/icons-material/KeyboardDoubleArrowDownOutlined';\nimport AngleDoubleUpIcon from '@mui/icons-material/KeyboardDoubleArrowUpOutlined';\nimport { Tooltip } from '@patternfly/react-core';\nimport { t_color_yellow_40 as mediumColor } from '@patternfly/react-tokens/dist/js/t_color_yellow_40';\nimport { t_color_orange_40 as highColor } from '@patternfly/react-tokens/dist/js/t_color_orange_40';\nimport classNames from 'classnames';\n\nimport { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport { usePipelineRunScanResults } from '../../hooks/usePipelineRunScanResults';\nimport CriticalRiskIcon from '../Icons/CriticalRiskIcon';\nimport EqualsIcon from '../Icons/EqualsIcon';\nimport { tektonTranslationRef } from '../../translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst useVStyles = makeStyles((theme: Theme) => ({\n pipelineVulnerabilities: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(1),\n },\n severityContainer: {\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'nowrap',\n gap: theme.spacing(0.5),\n },\n severityStatus: {\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'nowrap',\n gap: theme.spacing(0.5),\n },\n severityCount: {\n fontWeight: 'bold',\n },\n criticalStatus: {\n height: '1em',\n width: '1em',\n },\n highStatus: {\n color: highColor.value,\n height: '0.8em',\n width: '0.8em',\n },\n mediumStatus: {\n color: mediumColor.value,\n height: '1.3em',\n width: '1.3em',\n },\n lowStatus: {\n height: '0.8em',\n width: '0.8em',\n },\n}));\n\ntype PipelineRunVulnerabilitiesProps = {\n pipelineRun: PipelineRunKind;\n condensed?: boolean;\n};\n\nconst PipelineRunVulnerabilities: FC<PipelineRunVulnerabilitiesProps> = ({\n pipelineRun,\n condensed,\n}) => {\n const classes = useVStyles();\n const scanResults = usePipelineRunScanResults(pipelineRun);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <div className={classes.pipelineVulnerabilities}>\n {scanResults?.vulnerabilities ? (\n <>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.critical',\n )}\n >\n <CriticalRiskIcon\n className={classes.criticalStatus}\n title={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.critical',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.critical')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.critical || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.high')}\n >\n <AngleDoubleUpIcon\n className={classes.highStatus}\n titleAccess={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.high',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.high')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.high || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.medium')}\n >\n <EqualsIcon\n className={classes.mediumStatus}\n title={t('pipelineRunList.vulnerabilitySeverityTitle.medium')}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.medium')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.medium || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.low')}\n >\n <AngleDoubleDownIcon\n className={classes.lowStatus}\n titleAccess={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.low',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.low')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.low || 0}\n </span>\n </div>\n </>\n ) : (\n '-'\n )}\n </div>\n );\n};\n\nexport default PipelineRunVulnerabilities;\n"],"names":["highColor","mediumColor"],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunVulnerabilities.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunVulnerabilities.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 { makeStyles, Theme } from '@material-ui/core';\nimport AngleDoubleDownIcon from '@mui/icons-material/KeyboardDoubleArrowDownOutlined';\nimport AngleDoubleUpIcon from '@mui/icons-material/KeyboardDoubleArrowUpOutlined';\nimport { Tooltip } from '@patternfly/react-core';\nimport { t_color_yellow_40 as mediumColor } from '@patternfly/react-tokens/dist/js/t_color_yellow_40';\nimport { t_color_orange_40 as highColor } from '@patternfly/react-tokens/dist/js/t_color_orange_40';\nimport classNames from 'classnames';\n\nimport { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport { usePipelineRunScanResults } from '../../hooks/usePipelineRunScanResults';\nimport CriticalRiskIcon from '../Icons/CriticalRiskIcon';\nimport EqualsIcon from '../Icons/EqualsIcon';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst useVStyles = makeStyles((theme: Theme) => ({\n pipelineVulnerabilities: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(1),\n },\n severityContainer: {\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'nowrap',\n gap: theme.spacing(0.5),\n },\n severityStatus: {\n alignItems: 'center',\n display: 'flex',\n flexWrap: 'nowrap',\n gap: theme.spacing(0.5),\n },\n severityCount: {\n fontWeight: 'bold',\n },\n criticalStatus: {\n height: '1em',\n width: '1em',\n },\n highStatus: {\n color: highColor.value,\n height: '0.8em',\n width: '0.8em',\n },\n mediumStatus: {\n color: mediumColor.value,\n height: '1.3em',\n width: '1.3em',\n },\n lowStatus: {\n height: '0.8em',\n width: '0.8em',\n },\n}));\n\ntype PipelineRunVulnerabilitiesProps = {\n pipelineRun: PipelineRunKind;\n condensed?: boolean;\n};\n\nconst PipelineRunVulnerabilities: FC<PipelineRunVulnerabilitiesProps> = ({\n pipelineRun,\n condensed,\n}) => {\n const classes = useVStyles();\n const scanResults = usePipelineRunScanResults(pipelineRun);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <div className={classes.pipelineVulnerabilities}>\n {scanResults?.vulnerabilities ? (\n <>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.critical',\n )}\n >\n <CriticalRiskIcon\n className={classes.criticalStatus}\n title={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.critical',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.critical')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.critical || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.high')}\n >\n <AngleDoubleUpIcon\n className={classes.highStatus}\n titleAccess={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.high',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.high')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.high || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.medium')}\n >\n <EqualsIcon\n className={classes.mediumStatus}\n title={t('pipelineRunList.vulnerabilitySeverityTitle.medium')}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.medium')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.medium || 0}\n </span>\n </div>\n <div className={classNames(classes.severityContainer, 'severity')}>\n <span className={classes.severityStatus}>\n <Tooltip\n content={t('pipelineRunList.vulnerabilitySeverityTitle.low')}\n >\n <AngleDoubleDownIcon\n className={classes.lowStatus}\n titleAccess={t(\n 'pipelineRunList.vulnerabilitySeverityTitle.low',\n )}\n />\n </Tooltip>\n {!condensed\n ? t('pipelineRunList.vulnerabilitySeverityTitle.low')\n : null}\n </span>\n <span className={classes.severityCount}>\n {scanResults.vulnerabilities.low || 0}\n </span>\n </div>\n </>\n ) : (\n '-'\n )}\n </div>\n );\n};\n\nexport default PipelineRunVulnerabilities;\n"],"names":["highColor","mediumColor"],"mappings":"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"}
@@ -2,7 +2,8 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { makeStyles, TableHead, TableRow, TableCell, TableSortLabel } from '@material-ui/core';
3
3
  import { getPipelineRunColumnHeader } from './PipelineRunColumnHeader.esm.js';
4
4
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
5
- import { tektonTranslationRef } from '../../translation.esm.js';
5
+ import '../../translations/index.esm.js';
6
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
6
7
 
7
8
  const useStyles = makeStyles((theme) => ({
8
9
  header: {
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineTableHeader.esm.js","sources":["../../../src/components/PipelineRunList/PipelineTableHeader.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 { MouseEvent } from 'react';\n\nimport {\n makeStyles,\n TableCell,\n TableHead,\n TableRow,\n TableSortLabel,\n} from '@material-ui/core';\n\nimport { Order } from '../../types/types';\nimport { getPipelineRunColumnHeader } from './PipelineRunColumnHeader';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\ntype EnhancedTableProps = {\n onRequestSort: (\n event: MouseEvent<unknown>,\n property: string,\n id: string,\n ) => void;\n order: Order;\n orderBy: string;\n orderById: string;\n};\n\nconst useStyles = makeStyles(theme => ({\n header: {\n padding: theme.spacing(1, 2, 1, 2.5),\n borderTop: `1px solid ${theme.palette.grey.A100}`,\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n // withStyles hasn't a generic overload for theme\n fontWeight: 'bold',\n position: 'static',\n wordBreak: 'normal',\n },\n}));\n\nexport const EnhancedTableHead = ({\n order,\n orderBy,\n orderById,\n onRequestSort,\n}: EnhancedTableProps) => {\n const createSortHandler =\n (property: string, id: string) => (event: MouseEvent<unknown>) => {\n onRequestSort(event, property, id);\n };\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n const pipelineRunColumnHeader = getPipelineRunColumnHeader(t);\n\n return (\n <TableHead>\n <TableRow>\n {pipelineRunColumnHeader.map(headCell => {\n return (\n <TableCell\n className={classes.header}\n key={headCell.id as string}\n align=\"left\"\n padding=\"normal\"\n sortDirection={\n orderBy === headCell.field ? headCell.defaultSort : false\n }\n >\n {headCell.field ? (\n <TableSortLabel\n active={\n orderBy === headCell.field && orderById === headCell.id\n }\n direction={order}\n onClick={createSortHandler(\n headCell.field as string,\n headCell.id as string,\n )}\n >\n {headCell.title}\n </TableSortLabel>\n ) : (\n <> {headCell.title}</>\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableHead>\n );\n};\n"],"names":[],"mappings":";;;;;;AAyCA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,MAAA,EAAQ;AAAA,IACN,SAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,GAAG,GAAG,CAAA;AAAA,IACnC,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,IAC/C,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA;AAAA,IAElD,UAAA,EAAY,MAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW;AAAA;AAEf,CAAA,CAAE,CAAA;AAEK,MAAM,oBAAoB,CAAC;AAAA,EAChC,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,iBAAA,GACJ,CAAC,QAAA,EAAkB,EAAA,KAAe,CAAC,KAAA,KAA+B;AAChE,IAAA,aAAA,CAAc,KAAA,EAAO,UAAU,EAAE,CAAA;AAAA,EACnC,CAAA;AACF,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,uBAAA,GAA0B,2BAA2B,CAAC,CAAA;AAE5D,EAAA,2BACG,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,uBAAA,CAAwB,IAAI,CAAA,QAAA,KAAY;AACvC,IAAA,uBACE,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,MAAA;AAAA,QAEnB,KAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAQ,QAAA;AAAA,QACR,aAAA,EACE,OAAA,KAAY,QAAA,CAAS,KAAA,GAAQ,SAAS,WAAA,GAAc,KAAA;AAAA,QAGrD,mBAAS,KAAA,mBACR,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,MAAA,EACE,OAAA,KAAY,QAAA,CAAS,KAAA,IAAS,cAAc,QAAA,CAAS,EAAA;AAAA,YAEvD,SAAA,EAAW,KAAA;AAAA,YACX,OAAA,EAAS,iBAAA;AAAA,cACP,QAAA,CAAS,KAAA;AAAA,cACT,QAAA,CAAS;AAAA,aACX;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,4BAGZ,IAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,QAAA,CAAS;AAAA,SAAA,EAAM;AAAA,OAAA;AAAA,MArBhB,QAAA,CAAS;AAAA,KAuBhB;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineTableHeader.esm.js","sources":["../../../src/components/PipelineRunList/PipelineTableHeader.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 { MouseEvent } from 'react';\n\nimport {\n makeStyles,\n TableCell,\n TableHead,\n TableRow,\n TableSortLabel,\n} from '@material-ui/core';\n\nimport { Order } from '../../types/types';\nimport { getPipelineRunColumnHeader } from './PipelineRunColumnHeader';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype EnhancedTableProps = {\n onRequestSort: (\n event: MouseEvent<unknown>,\n property: string,\n id: string,\n ) => void;\n order: Order;\n orderBy: string;\n orderById: string;\n};\n\nconst useStyles = makeStyles(theme => ({\n header: {\n padding: theme.spacing(1, 2, 1, 2.5),\n borderTop: `1px solid ${theme.palette.grey.A100}`,\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n // withStyles hasn't a generic overload for theme\n fontWeight: 'bold',\n position: 'static',\n wordBreak: 'normal',\n },\n}));\n\nexport const EnhancedTableHead = ({\n order,\n orderBy,\n orderById,\n onRequestSort,\n}: EnhancedTableProps) => {\n const createSortHandler =\n (property: string, id: string) => (event: MouseEvent<unknown>) => {\n onRequestSort(event, property, id);\n };\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n const pipelineRunColumnHeader = getPipelineRunColumnHeader(t);\n\n return (\n <TableHead>\n <TableRow>\n {pipelineRunColumnHeader.map(headCell => {\n return (\n <TableCell\n className={classes.header}\n key={headCell.id as string}\n align=\"left\"\n padding=\"normal\"\n sortDirection={\n orderBy === headCell.field ? headCell.defaultSort : false\n }\n >\n {headCell.field ? (\n <TableSortLabel\n active={\n orderBy === headCell.field && orderById === headCell.id\n }\n direction={order}\n onClick={createSortHandler(\n headCell.field as string,\n headCell.id as string,\n )}\n >\n {headCell.title}\n </TableSortLabel>\n ) : (\n <> {headCell.title}</>\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableHead>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAyCA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,MAAA,EAAQ;AAAA,IACN,SAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,GAAG,GAAG,CAAA;AAAA,IACnC,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,IAC/C,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA;AAAA,IAElD,UAAA,EAAY,MAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW;AAAA;AAEf,CAAA,CAAE,CAAA;AAEK,MAAM,oBAAoB,CAAC;AAAA,EAChC,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,iBAAA,GACJ,CAAC,QAAA,EAAkB,EAAA,KAAe,CAAC,KAAA,KAA+B;AAChE,IAAA,aAAA,CAAc,KAAA,EAAO,UAAU,EAAE,CAAA;AAAA,EACnC,CAAA;AACF,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,uBAAA,GAA0B,2BAA2B,CAAC,CAAA;AAE5D,EAAA,2BACG,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,uBAAA,CAAwB,IAAI,CAAA,QAAA,KAAY;AACvC,IAAA,uBACE,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,MAAA;AAAA,QAEnB,KAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAQ,QAAA;AAAA,QACR,aAAA,EACE,OAAA,KAAY,QAAA,CAAS,KAAA,GAAQ,SAAS,WAAA,GAAc,KAAA;AAAA,QAGrD,mBAAS,KAAA,mBACR,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,MAAA,EACE,OAAA,KAAY,QAAA,CAAS,KAAA,IAAS,cAAc,QAAA,CAAS,EAAA;AAAA,YAEvD,SAAA,EAAW,KAAA;AAAA,YACX,OAAA,EAAS,iBAAA;AAAA,cACP,QAAA,CAAS,KAAA;AAAA,cACT,QAAA,CAAS;AAAA,aACX;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,4BAGZ,IAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,QAAA,CAAS;AAAA,SAAA,EAAM;AAAA,OAAA;AAAA,MArBhB,QAAA,CAAS;AAAA,KAuBhB;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;;;;"}
@@ -2,7 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { pipelineRunFilterReducer, Status } from '@janus-idp/shared-react';
3
3
  import './PlrStatus.css.esm.js';
4
4
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
5
- import { tektonTranslationRef } from '../../translation.esm.js';
5
+ import '../../translations/index.esm.js';
6
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
6
7
 
7
8
  const PlrStatus = ({ obj }) => {
8
9
  const plrStatus = pipelineRunFilterReducer(obj);
@@ -1 +1 @@
1
- {"version":3,"file":"PlrStatus.esm.js","sources":["../../../src/components/PipelineRunList/PlrStatus.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 {\n pipelineRunFilterReducer,\n PipelineRunKind,\n Status,\n} from '@janus-idp/shared-react';\n\nimport './PlrStatus.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\ntype PlrStatusProps = { obj: PipelineRunKind };\n\nconst PlrStatus = ({ obj }: PlrStatusProps) => {\n const plrStatus = pipelineRunFilterReducer(obj);\n const { t } = useTranslationRef(tektonTranslationRef);\n return (\n <Status\n status={plrStatus}\n displayStatusText={t(`pipelineRunStatus.${plrStatus}` as any, {\n defaultValue: plrStatus,\n })}\n className=\"bs-tkn-plrstatus\"\n />\n );\n};\n\nexport default PlrStatus;\n"],"names":[],"mappings":";;;;;;AA2BA,MAAM,SAAA,GAAY,CAAC,EAAE,GAAA,EAAI,KAAsB;AAC7C,EAAA,MAAM,SAAA,GAAY,yBAAyB,GAAG,CAAA;AAC9C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,SAAA;AAAA,MACR,iBAAA,EAAmB,CAAA,CAAE,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,EAAW;AAAA,QAC5D,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,SAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;;;;"}
1
+ {"version":3,"file":"PlrStatus.esm.js","sources":["../../../src/components/PipelineRunList/PlrStatus.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 {\n pipelineRunFilterReducer,\n PipelineRunKind,\n Status,\n} from '@janus-idp/shared-react';\n\nimport './PlrStatus.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PlrStatusProps = { obj: PipelineRunKind };\n\nconst PlrStatus = ({ obj }: PlrStatusProps) => {\n const plrStatus = pipelineRunFilterReducer(obj);\n const { t } = useTranslationRef(tektonTranslationRef);\n return (\n <Status\n status={plrStatus}\n displayStatusText={t(`pipelineRunStatus.${plrStatus}` as any, {\n defaultValue: plrStatus,\n })}\n className=\"bs-tkn-plrstatus\"\n />\n );\n};\n\nexport default PlrStatus;\n"],"names":[],"mappings":";;;;;;;AA2BA,MAAM,SAAA,GAAY,CAAC,EAAE,GAAA,EAAI,KAAsB;AAC7C,EAAA,MAAM,SAAA,GAAY,yBAAyB,GAAG,CAAA;AAC9C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,SAAA;AAAA,MACR,iBAAA,EAAmB,CAAA,CAAE,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,EAAW;AAAA,QAC5D,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,MACD,SAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;;;;"}
@@ -8,7 +8,8 @@ import ResourceBadge from '../PipelineRunList/ResourceBadge.esm.js';
8
8
  import PipelineRunLogDownloader from './PipelineRunLogDownloader.esm.js';
9
9
  import { PipelineRunLogs } from './PipelineRunLogs.esm.js';
10
10
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
- import { tektonTranslationRef } from '../../translation.esm.js';
11
+ import '../../translations/index.esm.js';
12
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
12
13
 
13
14
  const useStyles = makeStyles(
14
15
  (theme) => createStyles({
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogDialog.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDialog.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 { useState, useEffect, memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport {\n Box,\n createStyles,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport PipelineRunLogDownloader from './PipelineRunLogDownloader';\nimport PipelineRunLogs from './PipelineRunLogs';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n }),\n);\n\ntype PipelineRunLogDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n forSBOM?: boolean;\n};\nconst PipelineRunLogDialog = ({\n open,\n closeDialog,\n pipelineRun,\n pods,\n taskRuns,\n activeTask,\n forSBOM,\n}: PipelineRunLogDialogProps) => {\n const classes = useStyles();\n\n const [task, setTask] = useState(activeTask);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n // If we trigger this dialog for the SBOM task, update the current active task.\n if (forSBOM && activeTask) {\n setTask(activeTask);\n }\n }, [forSBOM, activeTask]);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-logs-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-logs\" title={t('pipelineRunLogs.title')}>\n <Box className={classes.titleContainer}>\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={pipelineRun?.metadata?.name ?? ''}\n />\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <ErrorBoundary>\n <PipelineRunLogDownloader\n pods={pods}\n activeTask={task}\n pipelineRun={pipelineRun}\n />\n <PipelineRunLogs\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n pods={pods}\n activeTask={task}\n setActiveTask={setTask}\n />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunLogDialog);\n"],"names":[],"mappings":";;;;;;;;;;;;AAyCA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAW,CAAC,UAC5B,YAAA,CAAa;AAAA,IACX,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KACtB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACtB,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA;AAC/B,GACD;AACH,CAAA;AAWA,MAAM,uBAAuB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAiC;AAC/B,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,UAAU,CAAA;AAC3C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,yBAAA;AAAA,MACZ,QAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAS,IAAA;AAAA,MACT,IAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,EAAA,EAAG,kBAAA,EAAmB,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EACjE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,gBAAA;AAAA,cACP,IAAA,EAAK,KAAA;AAAA,cACL,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,IAAA,IAAQ;AAAA;AAAA,WACvC;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,WAAW,OAAA,CAAQ,WAAA;AAAA,cACnB,OAAA,EAAS,WAAA;AAAA,cAET,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,wBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ;AAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ,aAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,6BAAe,KAAK,oBAAoB,CAAA;;;;"}
1
+ {"version":3,"file":"PipelineRunLogDialog.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDialog.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 { useState, useEffect, memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport {\n Box,\n createStyles,\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react';\n\nimport { tektonGroupColor } from '../../types/types';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\nimport PipelineRunLogDownloader from './PipelineRunLogDownloader';\nimport PipelineRunLogs from './PipelineRunLogs';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n }),\n);\n\ntype PipelineRunLogDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n forSBOM?: boolean;\n};\nconst PipelineRunLogDialog = ({\n open,\n closeDialog,\n pipelineRun,\n pods,\n taskRuns,\n activeTask,\n forSBOM,\n}: PipelineRunLogDialogProps) => {\n const classes = useStyles();\n\n const [task, setTask] = useState(activeTask);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n // If we trigger this dialog for the SBOM task, update the current active task.\n if (forSBOM && activeTask) {\n setTask(activeTask);\n }\n }, [forSBOM, activeTask]);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-logs-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-logs\" title={t('pipelineRunLogs.title')}>\n <Box className={classes.titleContainer}>\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={pipelineRun?.metadata?.name ?? ''}\n />\n <IconButton\n aria-label=\"close\"\n className={classes.closeButton}\n onClick={closeDialog}\n >\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <ErrorBoundary>\n <PipelineRunLogDownloader\n pods={pods}\n activeTask={task}\n pipelineRun={pipelineRun}\n />\n <PipelineRunLogs\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n pods={pods}\n activeTask={task}\n setActiveTask={setTask}\n />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunLogDialog);\n"],"names":[],"mappings":";;;;;;;;;;;;;AAyCA,MAAM,SAAA,GAAY,UAAA;AAAA,EAAW,CAAC,UAC5B,YAAA,CAAa;AAAA,IACX,cAAA,EAAgB;AAAA,MACd,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KACtB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACtB,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA;AAC/B,GACD;AACH,CAAA;AAWA,MAAM,uBAAuB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAiC;AAC/B,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,UAAU,CAAA;AAC3C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAExB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,yBAAA;AAAA,MACZ,QAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAS,IAAA;AAAA,MACT,IAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,EAAA,EAAG,kBAAA,EAAmB,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EACjE,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,gBAAA;AAAA,cACP,IAAA,EAAK,KAAA;AAAA,cACL,IAAA,EAAM,WAAA,EAAa,QAAA,EAAU,IAAA,IAAQ;AAAA;AAAA,WACvC;AAAA,0BACA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAW,OAAA;AAAA,cACX,WAAW,OAAA,CAAQ,WAAA;AAAA,cACnB,OAAA,EAAS,WAAA;AAAA,cAET,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,wBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ;AAAA;AAAA,WACF;AAAA,0BACA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,UAAA,EAAY,IAAA;AAAA,cACZ,aAAA,EAAe;AAAA;AAAA;AACjB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,6BAAe,KAAK,oBAAoB,CAAA;;;;"}
@@ -4,7 +4,8 @@ import { Flex, FlexItem } from '@patternfly/react-core';
4
4
  import { TEKTON_PIPELINE_RUN, TEKTON_PIPELINE_TASKRUN, TEKTON_PIPELINE_TASK } from '../../consts/tekton-const.esm.js';
5
5
  import PodLogsDownloadLink from './PodLogsDownloadLink.esm.js';
6
6
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
7
- import { tektonTranslationRef } from '../../translation.esm.js';
7
+ import '../../translations/index.esm.js';
8
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
8
9
 
9
10
  const PipelineRunLogDownloader = ({ pods, pipelineRun, activeTask }) => {
10
11
  const filteredPods = pods?.filter(
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogDownloader.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDownloader.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 { useMemo } from 'react';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Flex, FlexItem } from '@patternfly/react-core';\n\nimport { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n TEKTON_PIPELINE_TASKRUN,\n} from '../../consts/tekton-const';\nimport PodLogsDownloadLink from './PodLogsDownloadLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translation';\n\nconst PipelineRunLogDownloader: FC<{\n pods: V1Pod[];\n pipelineRun: PipelineRunKind;\n activeTask: string | undefined;\n}> = ({ pods, pipelineRun, activeTask }) => {\n const filteredPods: V1Pod[] = pods?.filter(\n (p: V1Pod) =>\n p?.metadata?.labels?.[TEKTON_PIPELINE_RUN] ===\n pipelineRun?.metadata?.name,\n );\n\n const sortedPods: V1Pod[] = useMemo(\n () =>\n Array.from(filteredPods)?.sort(\n (a: V1Pod, b: V1Pod) =>\n new Date(a?.status?.startTime as Date).getTime() -\n new Date(b?.status?.startTime as Date).getTime(),\n ),\n [filteredPods],\n );\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const activeTaskPod: V1Pod =\n sortedPods.find(\n (sp: V1Pod) =>\n sp.metadata?.labels?.[TEKTON_PIPELINE_TASKRUN] === activeTask,\n ) ?? sortedPods[sortedPods.length - 1];\n\n return sortedPods.length > 0 ? (\n <Flex\n data-testid=\"pipelinerun-logs-downloader\"\n justifyContent={{ default: 'justifyContentFlexEnd' }}\n >\n <FlexItem>\n <PodLogsDownloadLink\n data-testid=\"download-task-logs\"\n pods={activeTaskPod ? [activeTaskPod] : []}\n fileName={`${\n activeTaskPod?.metadata?.labels?.[TEKTON_PIPELINE_TASK] ?? 'task'\n }.log`}\n downloadTitle={t('pipelineRunLogs.downloader.downloadTaskLogs')}\n />\n </FlexItem>\n <FlexItem>\n <PodLogsDownloadLink\n data-testid=\"download-pipelinerun-logs\"\n pods={sortedPods}\n fileName={`${pipelineRun?.metadata?.name ?? 'pipelinerun'}.log`}\n downloadTitle={t(\n 'pipelineRunLogs.downloader.downloadPipelineRunLogs',\n )}\n />\n </FlexItem>\n </Flex>\n ) : null;\n};\nexport default PipelineRunLogDownloader;\n"],"names":[],"mappings":";;;;;;;;AAiCA,MAAM,2BAID,CAAC,EAAE,IAAA,EAAM,WAAA,EAAa,YAAW,KAAM;AAC1C,EAAA,MAAM,eAAwB,IAAA,EAAM,MAAA;AAAA,IAClC,CAAC,MACC,CAAA,EAAG,QAAA,EAAU,SAAS,mBAAmB,CAAA,KACzC,aAAa,QAAA,EAAU;AAAA,GAC3B;AAEA,EAAA,MAAM,UAAA,GAAsB,OAAA;AAAA,IAC1B,MACE,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA,EAAG,IAAA;AAAA,MACxB,CAAC,CAAA,EAAU,CAAA,KACT,IAAI,IAAA,CAAK,GAAG,MAAA,EAAQ,SAAiB,CAAA,CAAE,OAAA,KACvC,IAAI,IAAA,CAAK,GAAG,MAAA,EAAQ,SAAiB,EAAE,OAAA;AAAQ,KACnD;AAAA,IACF,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,gBACJ,UAAA,CAAW,IAAA;AAAA,IACT,CAAC,EAAA,KACC,EAAA,CAAG,QAAA,EAAU,MAAA,GAAS,uBAAuB,CAAA,KAAM;AAAA,GACvD,IAAK,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEvC,EAAA,OAAO,UAAA,CAAW,SAAS,CAAA,mBACzB,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,6BAAA;AAAA,MACZ,cAAA,EAAgB,EAAE,OAAA,EAAS,uBAAA,EAAwB;AAAA,MAEnD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,oBAAA;AAAA,YACZ,IAAA,EAAM,aAAA,GAAgB,CAAC,aAAa,IAAI,EAAC;AAAA,YACzC,UAAU,CAAA,EACR,aAAA,EAAe,UAAU,MAAA,GAAS,oBAAoB,KAAK,MAC7D,CAAA,IAAA,CAAA;AAAA,YACA,aAAA,EAAe,EAAE,6CAA6C;AAAA;AAAA,SAChE,EACF,CAAA;AAAA,4BACC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,2BAAA;AAAA,YACZ,IAAA,EAAM,UAAA;AAAA,YACN,QAAA,EAAU,CAAA,EAAG,WAAA,EAAa,QAAA,EAAU,QAAQ,aAAa,CAAA,IAAA,CAAA;AAAA,YACzD,aAAA,EAAe,CAAA;AAAA,cACb;AAAA;AACF;AAAA,SACF,EACF;AAAA;AAAA;AAAA,GACF,GACE,IAAA;AACN;;;;"}
1
+ {"version":3,"file":"PipelineRunLogDownloader.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogDownloader.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 { useMemo } from 'react';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Flex, FlexItem } from '@patternfly/react-core';\n\nimport { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n TEKTON_PIPELINE_TASKRUN,\n} from '../../consts/tekton-const';\nimport PodLogsDownloadLink from './PodLogsDownloadLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst PipelineRunLogDownloader: FC<{\n pods: V1Pod[];\n pipelineRun: PipelineRunKind;\n activeTask: string | undefined;\n}> = ({ pods, pipelineRun, activeTask }) => {\n const filteredPods: V1Pod[] = pods?.filter(\n (p: V1Pod) =>\n p?.metadata?.labels?.[TEKTON_PIPELINE_RUN] ===\n pipelineRun?.metadata?.name,\n );\n\n const sortedPods: V1Pod[] = useMemo(\n () =>\n Array.from(filteredPods)?.sort(\n (a: V1Pod, b: V1Pod) =>\n new Date(a?.status?.startTime as Date).getTime() -\n new Date(b?.status?.startTime as Date).getTime(),\n ),\n [filteredPods],\n );\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const activeTaskPod: V1Pod =\n sortedPods.find(\n (sp: V1Pod) =>\n sp.metadata?.labels?.[TEKTON_PIPELINE_TASKRUN] === activeTask,\n ) ?? sortedPods[sortedPods.length - 1];\n\n return sortedPods.length > 0 ? (\n <Flex\n data-testid=\"pipelinerun-logs-downloader\"\n justifyContent={{ default: 'justifyContentFlexEnd' }}\n >\n <FlexItem>\n <PodLogsDownloadLink\n data-testid=\"download-task-logs\"\n pods={activeTaskPod ? [activeTaskPod] : []}\n fileName={`${\n activeTaskPod?.metadata?.labels?.[TEKTON_PIPELINE_TASK] ?? 'task'\n }.log`}\n downloadTitle={t('pipelineRunLogs.downloader.downloadTaskLogs')}\n />\n </FlexItem>\n <FlexItem>\n <PodLogsDownloadLink\n data-testid=\"download-pipelinerun-logs\"\n pods={sortedPods}\n fileName={`${pipelineRun?.metadata?.name ?? 'pipelinerun'}.log`}\n downloadTitle={t(\n 'pipelineRunLogs.downloader.downloadPipelineRunLogs',\n )}\n />\n </FlexItem>\n </Flex>\n ) : null;\n};\nexport default PipelineRunLogDownloader;\n"],"names":[],"mappings":";;;;;;;;;AAiCA,MAAM,2BAID,CAAC,EAAE,IAAA,EAAM,WAAA,EAAa,YAAW,KAAM;AAC1C,EAAA,MAAM,eAAwB,IAAA,EAAM,MAAA;AAAA,IAClC,CAAC,MACC,CAAA,EAAG,QAAA,EAAU,SAAS,mBAAmB,CAAA,KACzC,aAAa,QAAA,EAAU;AAAA,GAC3B;AAEA,EAAA,MAAM,UAAA,GAAsB,OAAA;AAAA,IAC1B,MACE,KAAA,CAAM,IAAA,CAAK,YAAY,CAAA,EAAG,IAAA;AAAA,MACxB,CAAC,CAAA,EAAU,CAAA,KACT,IAAI,IAAA,CAAK,GAAG,MAAA,EAAQ,SAAiB,CAAA,CAAE,OAAA,KACvC,IAAI,IAAA,CAAK,GAAG,MAAA,EAAQ,SAAiB,EAAE,OAAA;AAAQ,KACnD;AAAA,IACF,CAAC,YAAY;AAAA,GACf;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,gBACJ,UAAA,CAAW,IAAA;AAAA,IACT,CAAC,EAAA,KACC,EAAA,CAAG,QAAA,EAAU,MAAA,GAAS,uBAAuB,CAAA,KAAM;AAAA,GACvD,IAAK,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEvC,EAAA,OAAO,UAAA,CAAW,SAAS,CAAA,mBACzB,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,6BAAA;AAAA,MACZ,cAAA,EAAgB,EAAE,OAAA,EAAS,uBAAA,EAAwB;AAAA,MAEnD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,oBAAA;AAAA,YACZ,IAAA,EAAM,aAAA,GAAgB,CAAC,aAAa,IAAI,EAAC;AAAA,YACzC,UAAU,CAAA,EACR,aAAA,EAAe,UAAU,MAAA,GAAS,oBAAoB,KAAK,MAC7D,CAAA,IAAA,CAAA;AAAA,YACA,aAAA,EAAe,EAAE,6CAA6C;AAAA;AAAA,SAChE,EACF,CAAA;AAAA,4BACC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,2BAAA;AAAA,YACZ,IAAA,EAAM,UAAA;AAAA,YACN,QAAA,EAAU,CAAA,EAAG,WAAA,EAAa,QAAA,EAAU,QAAQ,aAAa,CAAA,IAAA,CAAA;AAAA,YACzD,aAAA,EAAe,CAAA;AAAA,cACb;AAAA;AACF;AAAA,SACF,EACF;AAAA;AAAA;AAAA,GACF,GACE,IAAA;AACN;;;;"}
@@ -5,7 +5,8 @@ import { Skeleton } from '@material-ui/lab';
5
5
  import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
6
6
  import { usePodLogsOfPipelineRun } from '../../hooks/usePodLogsOfPipelineRun.esm.js';
7
7
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
- import { tektonTranslationRef } from '../../translation.esm.js';
8
+ import '../../translations/index.esm.js';
9
+ import { tektonTranslationRef } from '../../translations/ref.esm.js';
9
10
 
10
11
  const PipelineRunLogViewer = ({ pod }) => {
11
12
  const { value, error, loading } = usePodLogsOfPipelineRun({