@backstage-community/plugin-tekton 3.32.1 → 3.33.1

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 (49) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/Charts/PipelineBars.esm.js +1 -1
  3. package/dist/components/Charts/PipelineBars.esm.js.map +1 -1
  4. package/dist/components/PipelineRunList/PipelineRunList.esm.js +1 -1
  5. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  6. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
  7. package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
  8. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +1 -1
  9. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  10. package/dist/components/PipelineRunList/PipelineRunSBOMLink.esm.js.map +1 -1
  11. package/dist/components/PipelineRunList/PipelineRunTableBody.esm.js.map +1 -1
  12. package/dist/components/PipelineRunList/PipelineRunTaskStatus.esm.js.map +1 -1
  13. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
  14. package/dist/components/PipelineRunList/PlrStatus.esm.js +1 -1
  15. package/dist/components/PipelineRunList/PlrStatus.esm.js.map +1 -1
  16. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
  17. package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js.map +1 -1
  18. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +1 -1
  19. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
  20. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +1 -1
  21. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
  22. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
  23. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -1
  24. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -1
  25. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -1
  26. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -1
  27. package/dist/components/common/ClusterSelector.esm.js.map +1 -1
  28. package/dist/components/common/StatusSelector.esm.js +1 -1
  29. package/dist/components/common/StatusSelector.esm.js.map +1 -1
  30. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
  31. package/dist/components/pipeline-topology/PipelineVisualization.esm.js.map +1 -1
  32. package/dist/hooks/TektonResourcesContext.esm.js +1 -1
  33. package/dist/hooks/TektonResourcesContext.esm.js.map +1 -1
  34. package/dist/hooks/usePipelineRunScanResults.esm.js.map +1 -1
  35. package/dist/hooks/useTektonObjectsResponse.esm.js.map +1 -1
  36. package/dist/index.d.ts +4 -4
  37. package/dist/types/types.esm.js.map +1 -1
  38. package/dist/utils/isTektonCIAvailable.esm.js.map +1 -1
  39. package/dist/utils/pipeline-step-utils.esm.js +1 -1
  40. package/dist/utils/pipeline-step-utils.esm.js.map +1 -1
  41. package/dist/utils/pipeline-topology-utils.esm.js +1 -1
  42. package/dist/utils/pipeline-topology-utils.esm.js.map +1 -1
  43. package/dist/utils/pipelineRun-utils.esm.js +1 -1
  44. package/dist/utils/pipelineRun-utils.esm.js.map +1 -1
  45. package/dist/utils/taskRun-utils.esm.js +1 -1
  46. package/dist/utils/taskRun-utils.esm.js.map +1 -1
  47. package/dist/utils/tekton-utils.esm.js +1 -1
  48. package/dist/utils/tekton-utils.esm.js.map +1 -1
  49. package/package.json +6 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  ### Dependencies
2
2
 
3
+ ## 3.33.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 6cfc39f: Resolved deprecation warnings
8
+
9
+ ## 3.33.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 477b7e1: Migrate shared-react usage to tekton-react
14
+
15
+ ### Patch Changes
16
+
17
+ - 699c87f: Updated dependency `cross-fetch` to `4.1.0`.
18
+ - Updated dependencies [477b7e1]
19
+ - @backstage-community/plugin-tekton-common@1.16.0
20
+ - @backstage-community/plugin-tekton-react@0.1.0
21
+
3
22
  ## 3.32.1
4
23
 
5
24
  ### Patch Changes
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useContext, useState } from 'react';
3
3
  import './PipelineBars.css.esm.js';
4
4
  import { Tooltip } from '@patternfly/react-core';
5
- import { getTaskRunsForPipelineRun, HorizontalStackedBars, ComputedStatus, getRunStatusColor, TaskStatusTooltip } from '@janus-idp/shared-react';
5
+ import { getTaskRunsForPipelineRun, HorizontalStackedBars, ComputedStatus, getRunStatusColor, TaskStatusTooltip } from '@backstage-community/plugin-tekton-react';
6
6
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
7
7
  import { getTaskStatusOfPLR } from '../../utils/tekton-utils.esm.js';
8
8
  import PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineBars.esm.js","sources":["../../../src/components/Charts/PipelineBars.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 { useContext, useState } from 'react';\nimport './PipelineBars.css';\nimport { Tooltip } from '@patternfly/react-core';\n\nimport {\n ComputedStatus,\n getRunStatusColor,\n getTaskRunsForPipelineRun,\n HorizontalStackedBars,\n PipelineRunKind,\n TaskStatusTooltip,\n TaskStatusTypes,\n} from '@janus-idp/shared-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { getTaskStatusOfPLR } from '../../utils/tekton-utils';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\n\ntype PipelineBarProps = { pipelineRun: PipelineRunKind };\n\nconst PipelineBars = ({ pipelineRun }: PipelineBarProps) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const plrTasks = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const taskStatus = getTaskStatusOfPLR(pipelineRun, plrTasks);\n\n const openDialog = () => {\n setOpen(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <PipelineRunLogDialog\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n pipelineRun={pipelineRun}\n />\n <Tooltip content={<TaskStatusTooltip taskStatus={taskStatus} />}>\n <HorizontalStackedBars\n id={`${pipelineRun?.metadata?.name}`}\n onClick={openDialog}\n height=\"1em\"\n inline\n values={Object.keys(ComputedStatus).map(status => ({\n color: getRunStatusColor(\n ComputedStatus[status as keyof typeof ComputedStatus],\n ).color,\n name: status,\n size: taskStatus[\n ComputedStatus[\n status as keyof typeof ComputedStatus\n ] as keyof TaskStatusTypes\n ],\n }))}\n />\n </Tooltip>\n </>\n );\n};\n\nexport default PipelineBars;\n"],"names":[],"mappings":";;;;;;;;;AAmCA,MAAM,YAAA,GAAe,CAAC,EAAE,WAAA,EAAY,KAAwB;AAC1D,EAAA,MAAM,EAAE,kBAAA,EAAmB,GAAI,UAAA,CAAW,sBAAsB,CAAA;AAChE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,kBAAA,EAAoB,IAAA,EAAM,IAAA,IAAQ,EAAC;AAChD,EAAA,MAAM,QAAA,GAAW,kBAAA,EAAoB,QAAA,EAAU,IAAA,IAAQ,EAAC;AACxD,EAAA,MAAM,QAAA,GAAW,yBAAA,CAA0B,WAAA,EAAa,QAAQ,CAAA;AAChE,EAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,WAAA,EAAa,QAAQ,CAAA;AAE3D,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,wBACC,OAAA,EAAA,EAAQ,OAAA,kBAAS,GAAA,CAAC,iBAAA,EAAA,EAAkB,YAAwB,CAAA,EAC3D,QAAA,kBAAA,GAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,CAAA,EAAG,WAAA,EAAa,QAAA,EAAU,IAAI,CAAA,CAAA;AAAA,QAClC,OAAA,EAAS,UAAA;AAAA,QACT,MAAA,EAAO,KAAA;AAAA,QACP,MAAA,EAAM,IAAA;AAAA,QACN,QAAQ,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,IAAI,CAAA,MAAA,MAAW;AAAA,UACjD,KAAA,EAAO,iBAAA;AAAA,YACL,eAAe,MAAqC;AAAA,WACtD,CAAE,KAAA;AAAA,UACF,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,UAAA,CACJ,cAAA,CACE,MACF,CACF;AAAA,SACF,CAAE;AAAA;AAAA,KACJ,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineBars.esm.js","sources":["../../../src/components/Charts/PipelineBars.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 { useContext, useState } from 'react';\nimport './PipelineBars.css';\nimport { Tooltip } from '@patternfly/react-core';\n\nimport {\n ComputedStatus,\n getRunStatusColor,\n getTaskRunsForPipelineRun,\n HorizontalStackedBars,\n PipelineRunKind,\n TaskStatusTooltip,\n TaskStatusTypes,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { getTaskStatusOfPLR } from '../../utils/tekton-utils';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\n\ntype PipelineBarProps = { pipelineRun: PipelineRunKind };\n\nconst PipelineBars = ({ pipelineRun }: PipelineBarProps) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const plrTasks = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const taskStatus = getTaskStatusOfPLR(pipelineRun, plrTasks);\n\n const openDialog = () => {\n setOpen(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <PipelineRunLogDialog\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n pipelineRun={pipelineRun}\n />\n <Tooltip content={<TaskStatusTooltip taskStatus={taskStatus} />}>\n <HorizontalStackedBars\n id={`${pipelineRun?.metadata?.name}`}\n onClick={openDialog}\n height=\"1em\"\n inline\n values={Object.keys(ComputedStatus).map(status => ({\n color: getRunStatusColor(\n ComputedStatus[status as keyof typeof ComputedStatus],\n ).color,\n name: status,\n size: taskStatus[\n ComputedStatus[\n status as keyof typeof ComputedStatus\n ] as keyof TaskStatusTypes\n ],\n }))}\n />\n </Tooltip>\n </>\n );\n};\n\nexport default PipelineBars;\n"],"names":[],"mappings":";;;;;;;;;AAmCA,MAAM,YAAA,GAAe,CAAC,EAAE,WAAA,EAAY,KAAwB;AAC1D,EAAA,MAAM,EAAE,kBAAA,EAAmB,GAAI,UAAA,CAAW,sBAAsB,CAAA;AAChE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,kBAAA,EAAoB,IAAA,EAAM,IAAA,IAAQ,EAAC;AAChD,EAAA,MAAM,QAAA,GAAW,kBAAA,EAAoB,QAAA,EAAU,IAAA,IAAQ,EAAC;AACxD,EAAA,MAAM,QAAA,GAAW,yBAAA,CAA0B,WAAA,EAAa,QAAQ,CAAA;AAChE,EAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,WAAA,EAAa,QAAQ,CAAA;AAE3D,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,wBACC,OAAA,EAAA,EAAQ,OAAA,kBAAS,GAAA,CAAC,iBAAA,EAAA,EAAkB,YAAwB,CAAA,EAC3D,QAAA,kBAAA,GAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,CAAA,EAAG,WAAA,EAAa,QAAA,EAAU,IAAI,CAAA,CAAA;AAAA,QAClC,OAAA,EAAS,UAAA;AAAA,QACT,MAAA,EAAO,KAAA;AAAA,QACP,MAAA,EAAM,IAAA;AAAA,QACN,QAAQ,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,IAAI,CAAA,MAAA,MAAW;AAAA,UACjD,KAAA,EAAO,iBAAA;AAAA,YACL,eAAe,MAAqC;AAAA,WACtD,CAAE,KAAA;AAAA,UACF,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,UAAA,CACJ,cAAA,CACE,MACF,CACF;AAAA,SACF,CAAE;AAAA;AAAA,KACJ,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { memo, useContext, useState, useRef, useEffect, useMemo, useCallback } from 'react';
3
3
  import { Progress, InfoCard } from '@backstage/core-components';
4
4
  import { makeStyles, Box, Paper, Toolbar, Typography, Table, TableBody, TableRow, TableCell, TablePagination } from '@material-ui/core';
5
- import { ComputedStatus, pipelineRunStatus } from '@janus-idp/shared-react';
5
+ import { ComputedStatus, pipelineRunStatus } from '@backstage-community/plugin-tekton-react';
6
6
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
7
7
  import { getComparator } from '../../utils/tekton-utils.esm.js';
8
8
  import { ErrorPanel } from '../common/ErrorPanel.esm.js';
@@ -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 '../../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 {\n value: 5,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '5' },\n ),\n },\n {\n value: 10,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '10' },\n ),\n },\n {\n value: 25,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '25' },\n ),\n },\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 '@backstage-community/plugin-tekton-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 {\n value: 5,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '5' },\n ),\n },\n {\n value: 10,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '10' },\n ),\n },\n {\n value: 25,\n label: t(\n 'pipelineRunList.tablePagination.rowsPerPageOptionLabel',\n { num: '25' },\n ),\n },\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 +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 '../../translations/index.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype PipelineRunOutputProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\n\nconst PipelineRunOutput: FC<PipelineRunOutputProps> = ({\n pipelineRun,\n taskRuns,\n}) => {\n const { clusters, selectedCluster } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const currCluster =\n (clusters.length > 0 && clusters[selectedCluster || 0]) || '';\n\n const getLogs = useCallback(\n async (podName: string, containerName: string): Promise<string> => {\n return await kubernetesProxyApi\n .getPodLogs({\n podName: podName,\n namespace: pipelineRun?.metadata?.namespace ?? '',\n containerName: containerName,\n clusterName: currCluster,\n })\n .then(res => res?.text);\n },\n [kubernetesProxyApi, currCluster, pipelineRun],\n );\n\n const outputGroup = usePipelineRunOutput(\n pipelineRun as PipelineRunV1Kind,\n taskRuns as TaskRunV1Kind[],\n getLogs,\n );\n\n const stillLoading =\n outputGroup?.ec?.loading &&\n (outputGroup?.acsImageScan?.loading ||\n outputGroup?.acsImageCheck?.loading ||\n outputGroup?.acsDeploymentCheck?.loading);\n\n const isEmpty = (data: ACSCheckResults | ACSImageScanResult) =>\n Object.keys(data).length === 0;\n const noDataAvailable =\n outputGroup?.ec?.data.length === 0 &&\n outputGroup.results.data.length === 0 &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data);\n\n const renderOutput = () => {\n if (stillLoading && noDataAvailable) {\n return <Progress />;\n }\n\n if (!stillLoading && noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunOutput.noOutput')}\n </Typography>\n );\n }\n\n const metadata =\n outputGroup?.acsImageCheck?.data?.results?.[0]?.metadata?.additionalInfo;\n if (metadata?.name?.includes('@')) {\n metadata.name = metadata?.name.substr(0, metadata?.name.lastIndexOf('@'));\n }\n\n return (\n <Output\n enterpriseContractPolicies={outputGroup?.ec?.data ?? []}\n acsImageScanResult={outputGroup?.acsImageScan?.data}\n acsImageCheckResults={outputGroup?.acsImageCheck?.data}\n acsDeploymentCheckResults={outputGroup?.acsDeploymentCheck?.data}\n pipelineRunName={pipelineRun?.metadata?.name ?? ''}\n pipelineRunStatus={outputGroup.status}\n results={outputGroup.results.data}\n />\n );\n };\n\n return (\n <Grid>\n <div style={{ height: '80vh' }}>\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n {renderOutput()}\n </Paper>\n </div>\n </Grid>\n );\n};\nexport default PipelineRunOutput;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunOutput.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunOutput.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { FC } from 'react';\n\nimport { useContext, useCallback } from 'react';\n\nimport { Progress } from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nimport {\n ACSCheckResults,\n ACSImageScanResult,\n Output,\n PipelineRunKind as PipelineRunV1Kind,\n TaskRunKind as TaskRunV1Kind,\n usePipelineRunOutput,\n} from '@aonic-ui/pipelines';\nimport { Grid, Paper, Typography } from '@material-ui/core';\n\nimport {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\nimport { kubernetesProxyApiRef } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype PipelineRunOutputProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\n\nconst PipelineRunOutput: FC<PipelineRunOutputProps> = ({\n pipelineRun,\n taskRuns,\n}) => {\n const { clusters, selectedCluster } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const kubernetesProxyApi = useApi(kubernetesProxyApiRef);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const currCluster =\n (clusters.length > 0 && clusters[selectedCluster || 0]) || '';\n\n const getLogs = useCallback(\n async (podName: string, containerName: string): Promise<string> => {\n return await kubernetesProxyApi\n .getPodLogs({\n podName: podName,\n namespace: pipelineRun?.metadata?.namespace ?? '',\n containerName: containerName,\n clusterName: currCluster,\n })\n .then(res => res?.text);\n },\n [kubernetesProxyApi, currCluster, pipelineRun],\n );\n\n const outputGroup = usePipelineRunOutput(\n pipelineRun as PipelineRunV1Kind,\n taskRuns as TaskRunV1Kind[],\n getLogs,\n );\n\n const stillLoading =\n outputGroup?.ec?.loading &&\n (outputGroup?.acsImageScan?.loading ||\n outputGroup?.acsImageCheck?.loading ||\n outputGroup?.acsDeploymentCheck?.loading);\n\n const isEmpty = (data: ACSCheckResults | ACSImageScanResult) =>\n Object.keys(data).length === 0;\n const noDataAvailable =\n outputGroup?.ec?.data.length === 0 &&\n outputGroup.results.data.length === 0 &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data) &&\n isEmpty(outputGroup?.acsImageScan?.data);\n\n const renderOutput = () => {\n if (stillLoading && noDataAvailable) {\n return <Progress />;\n }\n\n if (!stillLoading && noDataAvailable) {\n return (\n <Typography align=\"center\" variant=\"body2\">\n {t('pipelineRunOutput.noOutput')}\n </Typography>\n );\n }\n\n const metadata =\n outputGroup?.acsImageCheck?.data?.results?.[0]?.metadata?.additionalInfo;\n if (metadata?.name?.includes('@')) {\n metadata.name = metadata?.name.substr(0, metadata?.name.lastIndexOf('@'));\n }\n\n return (\n <Output\n enterpriseContractPolicies={outputGroup?.ec?.data ?? []}\n acsImageScanResult={outputGroup?.acsImageScan?.data}\n acsImageCheckResults={outputGroup?.acsImageCheck?.data}\n acsDeploymentCheckResults={outputGroup?.acsDeploymentCheck?.data}\n pipelineRunName={pipelineRun?.metadata?.name ?? ''}\n pipelineRunStatus={outputGroup.status}\n results={outputGroup.results.data}\n />\n );\n };\n\n return (\n <Grid>\n <div style={{ height: '80vh' }}>\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n {renderOutput()}\n </Paper>\n </div>\n </Grid>\n );\n};\nexport default PipelineRunOutput;\n"],"names":[],"mappings":"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"}
@@ -1 +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 '../../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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,MAAM,SAAA,GAAY,UAAA,CAAW,CAAC,KAAA,MAAkB;AAAA,EAC9C,MAAA,EAAQ;AAAA,IACN,oBAAA,EAAsB;AAAA,MACpB,eAAA,EAAiB,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,WAAW,KAAK,CAAA;AAAA;AACpD,GACF;AAAA,EACA,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,GACpD;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,cAAA;AAAA,IACT,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACxB,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA;AAE1B,CAAA,CAAE,CAAA;AAYF,MAAM,eAAA,GAAkB,CAAC,EAAE,GAAA,EAAI,KAA4B;AACzD,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,EAAU,IAAA;AAC3B,EAAA,MAAM,MAAA,GACJ,GAAA,EAAK,QAAA,EAAU,WAAA,GAAc,wBAAwB,CAAA,KAAM,MAAA;AAE7D,EAAA,uBACE,GAAA,CAAC,SACE,QAAA,EAAA,IAAA,mBACC,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,gBAAA;AAAA,MACP,IAAA,EAAK,KAAA;AAAA,MACL,MAAM,IAAA,IAAQ,EAAA;AAAA,MACd,MAAA,EACE,MAAA,mBACE,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAQ,QAAA,EACf,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,UAAA;AAAA,YACT,OAAA,CAAQ,eAAA;AAAA,YACR;AAAA,WACF;AAAA,UAEA,8BAAC,eAAA,EAAA,EAAgB;AAAA;AAAA,SAErB,CAAA,GACE;AAAA;AAAA,MAIR,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAEO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,GAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,IAAA;AAAA,EACA;AACF,CAAA,KAA2B;AACzB,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,GAAA,GAAM,IAAI,QAAA,EAAU,GAAA;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,OAAA,CAAQ,CAAC,GAAA,KAAuB;AACrC,MAAA,OAAO;AAAA,QACL,GAAG,GAAA;AAAA,QACH,GAAI,GAAA,IAAO,EAAE,CAAC,GAAG,GAAG,UAAA;AAAW,OACjC;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,UAAA,EAAY,GAAA,EAAK,OAAO,CAAC,CAAA;AAE7B,EAAA,MAAM,6BAA6B,MAAM;AACvC,IAAA,OAAA,CAAQ,CAAC,GAAA,KAAuB;AAC9B,MAAA,OAAO;AAAA,QACL,GAAG,GAAA;AAAA,QACH,GAAI,GAAA,IAAO;AAAA,UACT,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG;AAAA;AACjB,OACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,4BACG,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,MAAA,EAC3B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,YAAA;AAAA,UACX,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAS,0BAAA;AAAA,UAER,QAAA,EAAA,IAAA,mBAAO,GAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA,uBAAM,sBAAA,EAAA,EAAuB;AAAA;AAAA,OAC9D,EACF,CAAA;AAAA,0BACC,SAAA,EAAA,EAAU,KAAA,EAAM,QACf,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,KAAU,CAAA,EAC7B,CAAA;AAAA,sBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EACf,QAAA,kBAAA,GAAA,CAAC,8BAA2B,WAAA,EAAa,GAAA,EAAK,SAAA,EAAS,IAAA,EAAC,CAAA,EAC1D,CAAA;AAAA,sBACA,GAAA,CAAC,aAAU,KAAA,EAAM,MAAA,EACf,8BAAC,SAAA,EAAA,EAAU,GAAA,EAAK,KAAK,CAAA,EACvB,CAAA;AAAA,sBACA,GAAA,CAAC,aAAU,KAAA,EAAM,MAAA,EACf,8BAAC,qBAAA,EAAA,EAAsB,WAAA,EAAa,KAAK,CAAA,EAC3C,CAAA;AAAA,sBACA,GAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAM,MAAA,EACd,QAAA,EAAA,SAAA,mBACC,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,kBAAA;AAAA,UACV,IAAA,EAAM,IAAI,IAAA,CAAK,SAAS;AAAA;AAAA,UAG1B,GAAA,EAEJ,CAAA;AAAA,0BACC,SAAA,EAAA,EAAU,KAAA,EAAM,QAAQ,QAAA,EAAA,mBAAA,CAAoB,GAAA,EAAK,CAAC,CAAA,EAAE,CAAA;AAAA,sBACrD,GAAA,CAAC,aAAU,KAAA,EAAM,MAAA,EACf,8BAAC,qBAAA,EAAA,EAAsB,WAAA,EAAa,KAAK,CAAA,EAC3C;AAAA,KAAA,EACF,CAAA;AAAA,wBACC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,SAAA,EAC3B,8BAAC,SAAA,EAAA,EAAU,KAAA,EAAO,EAAE,aAAA,EAAe,GAAG,UAAA,EAAY,CAAA,IAAK,OAAA,EAAS,CAAA,EAC9D,8BAAC,QAAA,EAAA,EAAS,EAAA,EAAI,IAAA,EAAM,OAAA,EAAQ,QAAO,aAAA,EAAa,IAAA,EAC9C,8BAAC,GAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,CAAA,EAC/B,QAAA,kBAAA,GAAA,CAAC,wBAAA,EAAA,EAAyB,iBAAiB,GAAA,CAAI,QAAA,EAAU,MAAM,CAAA,EACjE,CAAA,EACF,GACF,CAAA,EACF;AAAA,GAAA,EAAA,EA9Ca,GA+Cf,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineRunRow.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRow.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { SetStateAction, Dispatch } from 'react';\n\nimport { useEffect, Fragment } from 'react';\n\nimport {\n Box,\n Collapse,\n IconButton,\n makeStyles,\n TableCell,\n TableRow,\n Theme,\n} from '@material-ui/core';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport { Timestamp, Tooltip } from '@patternfly/react-core';\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport { TEKTON_SIGNED_ANNOTATION } from '../../consts/tekton-const';\nimport { OpenRowStatus, tektonGroupColor } from '../../types/types';\nimport { pipelineRunDuration } from '../../utils/tekton-utils';\nimport { PipelineRunVisualization } from '../pipeline-topology';\nimport PipelineRunRowActions from './PipelineRunRowActions';\nimport PipelineRunTaskStatus from './PipelineRunTaskStatus';\nimport PipelineRunVulnerabilities from './PipelineRunVulnerabilities';\nimport PlrStatus from './PlrStatus';\nimport ResourceBadge from './ResourceBadge';\n\nimport './PipelineRunRow.css';\n\nimport classNames from 'classnames';\n\nimport SignedBadgeIcon from '../Icons/SignedBadge';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n plrRow: {\n '&:nth-of-type(odd)': {\n backgroundColor: `${theme.palette.background.paper}`,\n },\n },\n plrVisRow: {\n borderBottom: `1px solid ${theme.palette.grey.A100}`,\n },\n signedIndicator: {\n display: 'inline-block',\n width: theme.spacing(2.5),\n position: 'relative',\n top: theme.spacing(0.5),\n },\n}));\n\ntype PipelineRunRowProps = {\n row: PipelineRunKind;\n startTime: string;\n isExpanded?: boolean;\n open: boolean;\n setOpen: Dispatch<SetStateAction<OpenRowStatus>>;\n};\n\ntype PipelineRunNameProps = { row: PipelineRunKind };\n\nconst PipelineRunName = ({ row }: PipelineRunNameProps) => {\n const classes = useStyles();\n const name = row.metadata?.name;\n const signed =\n row?.metadata?.annotations?.[TEKTON_SIGNED_ANNOTATION] === 'true';\n\n return (\n <div>\n {name ? (\n <ResourceBadge\n color={tektonGroupColor}\n abbr=\"PLR\"\n name={name || ''}\n suffix={\n signed ? (\n <Tooltip content=\"Signed\">\n <div\n 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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"}
@@ -5,7 +5,7 @@ import { usePermission } from '@backstage/plugin-permission-react';
5
5
  import { IconButton } from '@material-ui/core';
6
6
  import { Flex, FlexItem } from '@patternfly/react-core';
7
7
  import { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';
8
- import { ComputedStatus, pipelineRunFilterReducer } from '@janus-idp/shared-react';
8
+ import { ComputedStatus, pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
9
9
  import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
10
10
  import { getTaskrunsOutputGroup, hasExternalLink, isSbomTaskRun } from '../../utils/taskRun-utils.esm.js';
11
11
  import OutputIcon from '../Icons/OutputIcon.esm.js';
@@ -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 ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":[],"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 '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport {\n getTaskrunsOutputGroup,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport OutputIcon from '../Icons/OutputIcon';\nimport ViewLogsIcon from '../Icons/ViewLogsIcon';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunSBOMLink.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunSBOMLink.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, ReactElement } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TaskRunKind } from '@janus-idp/shared-react';\n\nimport {\n getSbomLink,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport LinkToSBomIcon from '../Icons/LinkToSbomIcon';\n\nconst PipelineRunSBOMLink: FC<{\n sbomTaskRun: TaskRunKind | undefined;\n}> = ({ sbomTaskRun }): ReactElement | null => {\n const isSBOMTask = isSbomTaskRun(sbomTaskRun);\n const isExternalLink: boolean = hasExternalLink(sbomTaskRun);\n const linkToSbom = getSbomLink(sbomTaskRun);\n\n if (\n isSBOMTask &&\n isExternalLink &&\n (linkToSbom?.startsWith('http://') || linkToSbom?.startsWith('https://'))\n ) {\n // Link to external page\n return (\n <Link target=\"_blank\" to={linkToSbom}>\n <LinkToSBomIcon dataTestId=\"external-sbom-link\" />\n </Link>\n );\n } else if (isSBOMTask && linkToSbom) {\n // Link to internal taskrun page\n return <LinkToSBomIcon dataTestId=\"internal-sbom-link\" />;\n }\n\n return (\n <LinkToSBomIcon\n disabled={!sbomTaskRun || !isSBOMTask}\n dataTestId=\"icon-space-holder\"\n />\n );\n};\n\nexport default PipelineRunSBOMLink;\n"],"names":[],"mappings":";;;;;AA2BA,MAAM,mBAAA,GAED,CAAC,EAAE,WAAA,EAAY,KAA2B;AAC7C,EAAA,MAAM,UAAA,GAAa,cAAc,WAAW,CAAA;AAC5C,EAAA,MAAM,cAAA,GAA0B,gBAAgB,WAAW,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAa,YAAY,WAAW,CAAA;AAE1C,EAAA,IACE,UAAA,IACA,mBACC,UAAA,EAAY,UAAA,CAAW,SAAS,CAAA,IAAK,UAAA,EAAY,UAAA,CAAW,UAAU,CAAA,CAAA,EACvE;AAEA,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,MAAA,EAAO,QAAA,EAAS,EAAA,EAAI,YACxB,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAW,oBAAA,EAAqB,CAAA,EAClD,CAAA;AAAA,EAEJ,CAAA,MAAA,IAAW,cAAc,UAAA,EAAY;AAEnC,IAAA,uBAAO,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAW,oBAAA,EAAqB,CAAA;AAAA,EACzD;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAC,WAAA,IAAe,CAAC,UAAA;AAAA,MAC3B,UAAA,EAAW;AAAA;AAAA,GACb;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineRunSBOMLink.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunSBOMLink.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, ReactElement } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TaskRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport {\n getSbomLink,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport LinkToSBomIcon from '../Icons/LinkToSbomIcon';\n\nconst PipelineRunSBOMLink: FC<{\n sbomTaskRun: TaskRunKind | undefined;\n}> = ({ sbomTaskRun }): ReactElement | null => {\n const isSBOMTask = isSbomTaskRun(sbomTaskRun);\n const isExternalLink: boolean = hasExternalLink(sbomTaskRun);\n const linkToSbom = getSbomLink(sbomTaskRun);\n\n if (\n isSBOMTask &&\n isExternalLink &&\n (linkToSbom?.startsWith('http://') || linkToSbom?.startsWith('https://'))\n ) {\n // Link to external page\n return (\n <Link target=\"_blank\" to={linkToSbom}>\n <LinkToSBomIcon dataTestId=\"external-sbom-link\" />\n </Link>\n );\n } else if (isSBOMTask && linkToSbom) {\n // Link to internal taskrun page\n return <LinkToSBomIcon dataTestId=\"internal-sbom-link\" />;\n }\n\n return (\n <LinkToSBomIcon\n disabled={!sbomTaskRun || !isSBOMTask}\n dataTestId=\"icon-space-holder\"\n />\n );\n};\n\nexport default PipelineRunSBOMLink;\n"],"names":[],"mappings":";;;;;AA2BA,MAAM,mBAAA,GAED,CAAC,EAAE,WAAA,EAAY,KAA2B;AAC7C,EAAA,MAAM,UAAA,GAAa,cAAc,WAAW,CAAA;AAC5C,EAAA,MAAM,cAAA,GAA0B,gBAAgB,WAAW,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAa,YAAY,WAAW,CAAA;AAE1C,EAAA,IACE,UAAA,IACA,mBACC,UAAA,EAAY,UAAA,CAAW,SAAS,CAAA,IAAK,UAAA,EAAY,UAAA,CAAW,UAAU,CAAA,CAAA,EACvE;AAEA,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,MAAA,EAAO,QAAA,EAAS,EAAA,EAAI,YACxB,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAW,oBAAA,EAAqB,CAAA,EAClD,CAAA;AAAA,EAEJ,CAAA,MAAA,IAAW,cAAc,UAAA,EAAY;AAEnC,IAAA,uBAAO,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAW,oBAAA,EAAqB,CAAA;AAAA,EACzD;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAC,WAAA,IAAe,CAAC,UAAA;AAAA,MAC3B,UAAA,EAAW;AAAA;AAAA,GACb;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunTableBody.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunTableBody.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 { useContext, useState } from 'react';\n\nimport { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { OpenRowStatus } from '../../types/types';\nimport { PipelineRunRow } from './PipelineRunRow';\n\ntype PipelineRunTableBodyProps = {\n rows: PipelineRunKind[];\n};\n\nexport const PipelineRunTableBody = ({ rows }: PipelineRunTableBodyProps) => {\n const { isExpanded } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<OpenRowStatus>(\n rows.reduce((acc, row) => {\n if (row.metadata?.uid) {\n acc[row.metadata?.uid] = isExpanded ?? false;\n }\n return acc;\n }, {} as OpenRowStatus),\n );\n\n return (\n <>\n {rows.map((row: PipelineRunKind) => {\n const startTime = row.status?.startTime || '';\n\n return (\n <PipelineRunRow\n row={row}\n startTime={startTime}\n isExpanded={isExpanded}\n key={row.metadata?.uid}\n open={row.metadata?.uid ? open[row.metadata.uid] : false}\n setOpen={setOpen}\n />\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,oBAAA,GAAuB,CAAC,EAAE,IAAA,EAAK,KAAiC;AAC3E,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,UAAA,CAAW,sBAAsB,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IACtB,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxB,MAAA,IAAI,GAAA,CAAI,UAAU,GAAA,EAAK;AACrB,QAAA,GAAA,CAAI,GAAA,CAAI,QAAA,EAAU,GAAG,CAAA,GAAI,UAAA,IAAc,KAAA;AAAA,MACzC;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAmB;AAAA,GACxB;AAEA,EAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAyB;AAClC,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAQ,SAAA,IAAa,EAAA;AAE3C,IAAA,uBACE,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QAEA,IAAA,EAAM,IAAI,QAAA,EAAU,GAAA,GAAM,KAAK,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA;AAAA,QACnD;AAAA,OAAA;AAAA,MAFK,IAAI,QAAA,EAAU;AAAA,KAGrB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineRunTableBody.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunTableBody.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 { useContext, useState } from 'react';\n\nimport { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { OpenRowStatus } from '../../types/types';\nimport { PipelineRunRow } from './PipelineRunRow';\n\ntype PipelineRunTableBodyProps = {\n rows: PipelineRunKind[];\n};\n\nexport const PipelineRunTableBody = ({ rows }: PipelineRunTableBodyProps) => {\n const { isExpanded } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<OpenRowStatus>(\n rows.reduce((acc, row) => {\n if (row.metadata?.uid) {\n acc[row.metadata?.uid] = isExpanded ?? false;\n }\n return acc;\n }, {} as OpenRowStatus),\n );\n\n return (\n <>\n {rows.map((row: PipelineRunKind) => {\n const startTime = row.status?.startTime || '';\n\n return (\n <PipelineRunRow\n row={row}\n startTime={startTime}\n isExpanded={isExpanded}\n key={row.metadata?.uid}\n open={row.metadata?.uid ? open[row.metadata.uid] : false}\n setOpen={setOpen}\n />\n );\n })}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,oBAAA,GAAuB,CAAC,EAAE,IAAA,EAAK,KAAiC;AAC3E,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,UAAA,CAAW,sBAAsB,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA;AAAA,IACtB,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxB,MAAA,IAAI,GAAA,CAAI,UAAU,GAAA,EAAK;AACrB,QAAA,GAAA,CAAI,GAAA,CAAI,QAAA,EAAU,GAAG,CAAA,GAAI,UAAA,IAAc,KAAA;AAAA,MACzC;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAmB;AAAA,GACxB;AAEA,EAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAyB;AAClC,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAQ,SAAA,IAAa,EAAA;AAE3C,IAAA,uBACE,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QAEA,IAAA,EAAM,IAAI,QAAA,EAAU,GAAA,GAAM,KAAK,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA;AAAA,QACnD;AAAA,OAAA;AAAA,MAFK,IAAI,QAAA,EAAU;AAAA,KAGrB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunTaskStatus.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunTaskStatus.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 { PipelineRunKind } from '@janus-idp/shared-react';\n\nimport PipelineBars from '../Charts/PipelineBars';\n\nconst PipelineRunTaskStatus = ({\n pipelineRun,\n}: {\n pipelineRun: PipelineRunKind;\n}) => {\n return pipelineRun?.metadata?.name ? (\n <PipelineBars key={pipelineRun.metadata.name} pipelineRun={pipelineRun} />\n ) : null;\n};\n\nexport default PipelineRunTaskStatus;\n"],"names":[],"mappings":";;;AAmBA,MAAM,wBAAwB,CAAC;AAAA,EAC7B;AACF,CAAA,KAEM;AACJ,EAAA,OAAO,WAAA,EAAa,UAAU,IAAA,mBAC5B,GAAA,CAAC,gBAA6C,WAAA,EAAA,EAA3B,WAAA,CAAY,QAAA,CAAS,IAAgC,CAAA,GACtE,IAAA;AACN;;;;"}
1
+ {"version":3,"file":"PipelineRunTaskStatus.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunTaskStatus.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 { PipelineRunKind } from '@backstage-community/plugin-tekton-react';\n\nimport PipelineBars from '../Charts/PipelineBars';\n\nconst PipelineRunTaskStatus = ({\n pipelineRun,\n}: {\n pipelineRun: PipelineRunKind;\n}) => {\n return pipelineRun?.metadata?.name ? (\n <PipelineBars key={pipelineRun.metadata.name} pipelineRun={pipelineRun} />\n ) : null;\n};\n\nexport default PipelineRunTaskStatus;\n"],"names":[],"mappings":";;;AAmBA,MAAM,wBAAwB,CAAC;AAAA,EAC7B;AACF,CAAA,KAEM;AACJ,EAAA,OAAO,WAAA,EAAa,UAAU,IAAA,mBAC5B,GAAA,CAAC,gBAA6C,WAAA,EAAA,EAA3B,WAAA,CAAY,QAAA,CAAS,IAAgC,CAAA,GACtE,IAAA;AACN;;;;"}
@@ -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 '../../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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"}
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 '@backstage-community/plugin-tekton-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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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { pipelineRunFilterReducer } from '@janus-idp/shared-react';
2
+ import { pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
3
3
  import { Status } from '../common/Status.esm.js';
4
4
  import './PlrStatus.css.esm.js';
5
5
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
@@ -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} from '@janus-idp/shared-react';\n\nimport { Status } from '../common/Status';\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":";;;;;;;;AA4BA,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} from '@backstage-community/plugin-tekton-react';\n\nimport { Status } from '../common/Status';\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":";;;;;;;;AA4BA,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 +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 '../../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;;;;"}
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 {\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-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":";;;;;;;;;;;;;AA4CA,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 +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 '../../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;;;;"}
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 '@backstage-community/plugin-tekton-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;;;;"}
@@ -3,7 +3,7 @@ import { useState, useEffect, useMemo } from 'react';
3
3
  import { Progress, LogViewer } from '@backstage/core-components';
4
4
  import { Paper } from '@material-ui/core';
5
5
  import Grid from '@material-ui/core/Grid';
6
- import { getTaskRunsForPipelineRun, pipelineRunFilterReducer } from '@janus-idp/shared-react';
6
+ import { getTaskRunsForPipelineRun, pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
7
7
  import { getSortedTaskRuns, getActiveTaskRun } from '../../utils/taskRun-utils.esm.js';
8
8
  import { PipelineRunLogViewer as PipelineRunLogViewerWithQueryClient } from './PipelineRunLogViewer.esm.js';
9
9
  import { TaskStatusStepper } from './TaskStatusStepper.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineRunLogs.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogs.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, useMemo } from 'react';\n\nimport { LogViewer, Progress } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Paper } from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid';\n\nimport {\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@janus-idp/shared-react';\n\nimport { getActiveTaskRun, getSortedTaskRuns } from '../../utils/taskRun-utils';\nimport { PipelineRunLogViewer } from './PipelineRunLogViewer';\nimport { TaskStatusStepper } from './TaskStatusStepper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogsProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n setActiveTask: (t: string) => void;\n};\nexport const PipelineRunLogs = ({\n pipelineRun,\n taskRuns,\n pods,\n activeTask,\n setActiveTask,\n}: PipelineRunLogsProps) => {\n const PLRTaskRuns = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const sortedTaskRuns = getSortedTaskRuns(PLRTaskRuns);\n const taskRunFromYaml = PLRTaskRuns?.reduce(\n (acc: { [value: string]: TaskRunKind }, value) => {\n if (value?.metadata?.name) {\n acc[value.metadata.name] = value;\n }\n return acc;\n },\n {},\n );\n\n const completed = pipelineRunFilterReducer(pipelineRun);\n const [lastActiveStepId, setLastActiveStepId] = useState<string>('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n const mostRecentFailedOrActiveStep = sortedTaskRuns.find(tr =>\n ['Failed', 'Running'].includes(tr.status),\n );\n\n if (completed && !mostRecentFailedOrActiveStep && !activeTask) {\n setLastActiveStepId(sortedTaskRuns[sortedTaskRuns.length - 1]?.id);\n return;\n }\n\n setLastActiveStepId(\n !activeTask ? (mostRecentFailedOrActiveStep?.id as string) : '',\n );\n }, [sortedTaskRuns, completed, activeTask]);\n\n const currentStepId = activeTask || lastActiveStepId;\n const activeItem = getActiveTaskRun(sortedTaskRuns, currentStepId);\n const podName =\n activeItem && taskRunFromYaml?.[currentStepId]?.status?.podName;\n const podData = useMemo(\n () =>\n pods.find(pod => {\n return pod?.metadata?.name === podName;\n }),\n [pods, podName],\n );\n\n return (\n <Grid container>\n <Grid item xs={3}>\n <Paper>\n <TaskStatusStepper\n steps={sortedTaskRuns}\n currentStepId={currentStepId}\n onUserStepChange={setActiveTask}\n />\n </Paper>\n </Grid>\n <Grid item xs={9}>\n {!currentStepId && <Progress />}\n <div style={{ height: '80vh' }}>\n {!podData ? (\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n <LogViewer text={t('pipelineRunLogs.noLogs')} />\n </Paper>\n ) : (\n <PipelineRunLogViewer pod={podData} />\n )}\n </div>\n </Grid>\n </Grid>\n );\n};\n\nexport default PipelineRunLogs;\n"],"names":["PipelineRunLogViewer"],"mappings":"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"}
1
+ {"version":3,"file":"PipelineRunLogs.esm.js","sources":["../../../src/components/PipelineRunLogs/PipelineRunLogs.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, useMemo } from 'react';\n\nimport { LogViewer, Progress } from '@backstage/core-components';\n\nimport { V1Pod } from '@kubernetes/client-node';\nimport { Paper } from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid';\n\nimport {\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { getActiveTaskRun, getSortedTaskRuns } from '../../utils/taskRun-utils';\nimport { PipelineRunLogViewer } from './PipelineRunLogViewer';\nimport { TaskStatusStepper } from './TaskStatusStepper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineRunLogsProps = {\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n pods: V1Pod[];\n activeTask?: string;\n setActiveTask: (t: string) => void;\n};\nexport const PipelineRunLogs = ({\n pipelineRun,\n taskRuns,\n pods,\n activeTask,\n setActiveTask,\n}: PipelineRunLogsProps) => {\n const PLRTaskRuns = getTaskRunsForPipelineRun(pipelineRun, taskRuns);\n const sortedTaskRuns = getSortedTaskRuns(PLRTaskRuns);\n const taskRunFromYaml = PLRTaskRuns?.reduce(\n (acc: { [value: string]: TaskRunKind }, value) => {\n if (value?.metadata?.name) {\n acc[value.metadata.name] = value;\n }\n return acc;\n },\n {},\n );\n\n const completed = pipelineRunFilterReducer(pipelineRun);\n const [lastActiveStepId, setLastActiveStepId] = useState<string>('');\n const { t } = useTranslationRef(tektonTranslationRef);\n\n useEffect(() => {\n const mostRecentFailedOrActiveStep = sortedTaskRuns.find(tr =>\n ['Failed', 'Running'].includes(tr.status),\n );\n\n if (completed && !mostRecentFailedOrActiveStep && !activeTask) {\n setLastActiveStepId(sortedTaskRuns[sortedTaskRuns.length - 1]?.id);\n return;\n }\n\n setLastActiveStepId(\n !activeTask ? (mostRecentFailedOrActiveStep?.id as string) : '',\n );\n }, [sortedTaskRuns, completed, activeTask]);\n\n const currentStepId = activeTask || lastActiveStepId;\n const activeItem = getActiveTaskRun(sortedTaskRuns, currentStepId);\n const podName =\n activeItem && taskRunFromYaml?.[currentStepId]?.status?.podName;\n const podData = useMemo(\n () =>\n pods.find(pod => {\n return pod?.metadata?.name === podName;\n }),\n [pods, podName],\n );\n\n return (\n <Grid container>\n <Grid item xs={3}>\n <Paper>\n <TaskStatusStepper\n steps={sortedTaskRuns}\n currentStepId={currentStepId}\n onUserStepChange={setActiveTask}\n />\n </Paper>\n </Grid>\n <Grid item xs={9}>\n {!currentStepId && <Progress />}\n <div style={{ height: '80vh' }}>\n {!podData ? (\n <Paper\n elevation={1}\n style={{ height: '100%', width: '100%', minHeight: '30rem' }}\n >\n <LogViewer text={t('pipelineRunLogs.noLogs')} />\n </Paper>\n ) : (\n <PipelineRunLogViewer pod={podData} />\n )}\n </div>\n </Grid>\n </Grid>\n );\n};\n\nexport default PipelineRunLogs;\n"],"names":["PipelineRunLogViewer"],"mappings":"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"}
@@ -10,7 +10,7 @@ import Cancel from '@material-ui/icons/Cancel';
10
10
  import Check from '@material-ui/icons/Check';
11
11
  import FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';
12
12
  import classNames from 'classnames';
13
- import { ComputedStatus } from '@janus-idp/shared-react';
13
+ import { ComputedStatus } from '@backstage-community/plugin-tekton-react';
14
14
  import { calculateDuration } from '../../utils/tekton-utils.esm.js';
15
15
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
16
16
  import '../../translations/index.esm.js';