@backstage-community/plugin-tekton 3.36.1 → 3.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/alpha.d.ts +9 -10
- package/dist/components/Charts/PipelineBars.css.esm.js +0 -2
- package/dist/components/Charts/PipelineBars.css.esm.js.map +1 -1
- package/dist/components/Charts/PipelineBars.esm.js +0 -1
- package/dist/components/Charts/PipelineBars.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunList.esm.js +4 -4
- package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +1 -1
- package/dist/components/PipelineRunList/PipelineRunRow.css.esm.js +0 -2
- package/dist/components/PipelineRunList/PipelineRunRow.css.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineRunRow.esm.js +1 -1
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +3 -3
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
- package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +1 -1
- package/dist/components/PipelineRunList/PlrStatus.css.esm.js +0 -2
- package/dist/components/PipelineRunList/PlrStatus.css.esm.js.map +1 -1
- package/dist/components/PipelineRunList/ResourceBadge.css.esm.js +0 -2
- package/dist/components/PipelineRunList/ResourceBadge.css.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +4 -4
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
- package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +1 -1
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +4 -4
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
- package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js +1 -1
- package/dist/components/common/ClusterSelector.css.esm.js +0 -2
- package/dist/components/common/ClusterSelector.css.esm.js.map +1 -1
- package/dist/components/common/ClusterSelector.esm.js +1 -1
- package/dist/components/common/ResourceStatus.css.esm.js +0 -2
- package/dist/components/common/ResourceStatus.css.esm.js.map +1 -1
- package/dist/components/common/StatusIconAndText.esm.js +1 -1
- package/dist/components/common/StatusSelector.css.esm.js +0 -2
- package/dist/components/common/StatusSelector.css.esm.js.map +1 -1
- package/dist/components/common/StatusSelector.esm.js +1 -1
- package/dist/components/common/TableExpandCollapse.esm.js +1 -1
- package/dist/components/pipeline-topology/PipelineLayout.esm.js +1 -1
- package/dist/components/pipeline-topology/PipelineTaskNode.css.esm.js +0 -2
- package/dist/components/pipeline-topology/PipelineTaskNode.css.esm.js.map +1 -1
- package/dist/components/pipeline-topology/PipelineTaskNode.esm.js +3 -3
- package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
- package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js +0 -2
- package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js.map +1 -1
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js +0 -2
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js.map +1 -1
- package/dist/components/pipeline-topology/TaskGroupEdge.esm.js +3 -3
- package/dist/components/pipeline-topology/TaskGroupEdge.esm.js.map +1 -1
- package/dist/utils/pipeline-topology-utils.esm.js +1 -1
- package/package.json +15 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @backstage-community/plugin-tekton
|
|
2
2
|
|
|
3
|
+
## 3.38.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 91220cb: Backstage version bump to v1.50.4
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [91220cb]
|
|
12
|
+
- @backstage-community/plugin-tekton-common@1.21.0
|
|
13
|
+
- @backstage-community/plugin-tekton-react@0.6.0
|
|
14
|
+
|
|
15
|
+
## 3.37.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 701b9e7: Backstage version bump to v1.49.2
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- 92e7fe8: Fix horizontal bar stylings so they render properly.
|
|
24
|
+
- Updated dependencies [701b9e7]
|
|
25
|
+
- @backstage-community/plugin-tekton-common@1.20.0
|
|
26
|
+
- @backstage-community/plugin-tekton-react@0.5.0
|
|
27
|
+
|
|
3
28
|
## 3.36.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/dist/alpha.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import * as _backstage_catalog_model from '@backstage/catalog-model';
|
|
3
2
|
import * as react from 'react';
|
|
4
3
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
@@ -20,9 +19,9 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
20
19
|
icon: string | undefined;
|
|
21
20
|
};
|
|
22
21
|
configInput: {
|
|
23
|
-
filter?: _backstage_filter_predicates.FilterPredicate | undefined;
|
|
24
|
-
title?: string | undefined;
|
|
25
22
|
path?: string | undefined;
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
filter?: _backstage_filter_predicates.FilterPredicate | undefined;
|
|
26
25
|
group?: string | false | undefined;
|
|
27
26
|
icon?: string | undefined;
|
|
28
27
|
};
|
|
@@ -39,16 +38,16 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
39
38
|
}>;
|
|
40
39
|
inputs: {};
|
|
41
40
|
params: {
|
|
42
|
-
defaultPath?: [Error:
|
|
41
|
+
defaultPath?: [Error: `Use the 'path' param instead`];
|
|
43
42
|
path: string;
|
|
44
|
-
defaultTitle?: [Error:
|
|
43
|
+
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
45
44
|
title: string;
|
|
46
|
-
defaultGroup?: [Error:
|
|
47
|
-
group?: (
|
|
48
|
-
icon?: string | react.ReactElement
|
|
45
|
+
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
46
|
+
group?: ("overview" | "documentation" | "development" | "deployment" | "operation" | "observability") | (string & {});
|
|
47
|
+
icon?: string | react.ReactElement;
|
|
49
48
|
loader: () => Promise<JSX.Element>;
|
|
50
|
-
routeRef?: _backstage_frontend_plugin_api.RouteRef
|
|
51
|
-
filter?: _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean)
|
|
49
|
+
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
50
|
+
filter?: string | _backstage_filter_predicates.FilterPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
52
51
|
};
|
|
53
52
|
}>;
|
|
54
53
|
}>;
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = "/**\n* NOTE: These styles are derived from janus-idp/shared-react/src/components/pipeline/HorizontalStackedBars.css.\n* At the time of this writing there are plans to migrate that library somewhere else.\n* This is a TEMPORARY fix. Once the library is migrated and updated we should check if these styles can be removed.\n* If the issue still persists, report it in the new library.\n* **/\n\n.bs-shared-horizontal-stacked-bars {\n --bar-gap: 3px;\n display: block;\n height: 100%;\n overflow: hidden;\n width: 100%;\n cursor: pointer;\n}\n\n.bs-shared-horizontal-stacked-bars.is-inline {\n display: inline-block;\n}\n\n.bs-shared-horizontal-stacked-bars__bars {\n display: flex !important;\n flex-direction: row;\n height: 100%;\n outline: none;\n width: calc(100% + var(--bar-gap));\n}\n\n.bs-shared-horizontal-stacked-bars__data-bar {\n --bar-gap-neg: calc(var(--bar-gap) * -1);\n box-shadow: inset var(--bar-gap-neg) 0 0 #fff;\n height: 100%;\n transition: flex-grow 300ms linear;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=PipelineBars.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineBars.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PipelineBars.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -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 '@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
|
|
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 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,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,7 +1,7 @@
|
|
|
1
1
|
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
|
-
import {
|
|
4
|
+
import { Box, Paper, Toolbar, Typography, Table, TableBody, TableRow, TableCell, TablePagination, makeStyles } from '@material-ui/core';
|
|
5
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';
|
|
@@ -62,7 +62,7 @@ const WrapperInfoCard = ({
|
|
|
62
62
|
}
|
|
63
63
|
)
|
|
64
64
|
] });
|
|
65
|
-
const PipelineRunList = () => {
|
|
65
|
+
const PipelineRunList$1 = () => {
|
|
66
66
|
const {
|
|
67
67
|
loaded,
|
|
68
68
|
responseError,
|
|
@@ -222,7 +222,7 @@ const PipelineRunList = () => {
|
|
|
222
222
|
}
|
|
223
223
|
);
|
|
224
224
|
};
|
|
225
|
-
var PipelineRunList
|
|
225
|
+
var PipelineRunList = memo(PipelineRunList$1);
|
|
226
226
|
|
|
227
|
-
export { PipelineRunList
|
|
227
|
+
export { PipelineRunList as default };
|
|
228
228
|
//# sourceMappingURL=PipelineRunList.esm.js.map
|
|
@@ -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 '@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
|
+
{"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":["PipelineRunList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmEA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,OAAA;AAAA,IACZ,SAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,GAAG;AAAA,GACvC;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,OAAA,EAAS,MAAA;AAAA,IACT,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,GAAA,EAAK,MAAA;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,oBAAA,EAAsB;AAAA,MACpB,eAAA,EAAiB,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,WAAW,KAAK,CAAA;AAAA;AACpD;AAEJ,CAAA,CAAE,CAAA;AAEF,MAAM,kBAAkB,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA,GAAsB,IAAA;AAAA,EACtB;AACF,CAAA,qBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,EAAA,SAAA,IAAa,SAAA,CAAU,MAAA,GAAS,CAAA,oBAAK,GAAA,CAAC,cAAW,SAAA,EAAsB,CAAA;AAAA,kBACxE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAI,mBAAA,IAAuB;AAAA,QAC1B,KAAA,kBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,CAAA;AAAA,8BAChB,cAAA,EAAA,EAAe,CAAA;AAAA,8BACf,mBAAA,EAAA,EAAoB;AAAA,SAAA,EACvB;AAAA,OAEJ;AAAA,MAEC;AAAA;AAAA;AACH,CAAA,EACF,CAAA;AAGF,MAAMA,oBAAkB,MAAM;AAC5B,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,sBAAsB,CAAA;AACrC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAiB,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAgB,MAAM,CAAA;AAChD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAiB,kBAAkB,CAAA;AACjE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAiB,WAAW,CAAA;AAC9D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAiB,CAAC,CAAA;AAC1C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAiB,CAAC,CAAA;AACxD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,MAAM,uBAAA,GAA0B,2BAA2B,CAAC,CAAA;AAG5D,EAAA,MAAM,0BAAA,GAA6B,OAAO,KAAK,CAAA;AAC/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,2BAA2B,OAAA,EAAS;AACtC,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACX,CAAA,MAAO;AACL,MAAA,0BAAA,CAA2B,OAAA,GAAU,IAAA;AAAA,IACvC;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,cAAA,EAAgB,MAAM,CAAC,CAAA;AAE5C,EAAA,MAAM,eAAA,GAAkB,QAAQ,MAAM;AACpC,IAAA,MAAM,IAAA,GACJ,kBAAA,EAAoB,YAAA,EAAc,IAAA,EAAM,IAAI,CAAA,CAAA,MAAM;AAAA,MAChD,GAAG,CAAA;AAAA,MACH,EAAA,EAAI,EAAE,QAAA,CAAS;AAAA,KACjB,CAAE,KAAK,EAAC;AACV,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,MAAM,oBAAA,GAAuB,QAAQ,MAAM;AACzC,IAAA,IAAI,IAAA,GAAO,eAAA;AAEX,IAAA,IAAI,cAAA,IAAkB,cAAA,KAAmB,cAAA,CAAe,GAAA,EAAK;AAC3D,MAAA,IAAA,GAAO,KAAK,MAAA,CAAO,CAAA,GAAA,KAAO,iBAAA,CAAkB,GAAG,MAAM,cAAc,CAAA;AAAA,IACrE;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,CAAA,GAAI,MAAA,CAAO,iBAAA,CAAkB,OAAO,CAAA;AAC1C,MAAA,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,CAAC,GAAA,KAAyB;AAC3C,QAAA,MAAM,CAAA,GAAI,GAAA,CAAI,QAAA,EAAU,IAAA,EAAM,kBAAkB,OAAO,CAAA;AACvD,QAAA,OAAO,CAAA,EAAG,SAAS,CAAC,CAAA;AAAA,MACtB,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,IAAA,GAAO,KAAK,IAAA,CAAK,aAAA,CAAc,KAAA,EAAO,OAAA,EAAS,SAAS,CAAC,CAAA;AAEzD,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,eAAA,EAAiB,cAAA,EAAgB,QAAQ,KAAA,EAAO,OAAA,EAAS,SAAS,CAAC,CAAA;AAEvE,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM;AAChC,IAAA,OAAO,oBAAA,CAAqB,KAAA;AAAA,MAC1B,IAAA,GAAO,WAAA;AAAA,MACP,OAAO,WAAA,GAAc;AAAA,KACvB;AAAA,EAEF,GAAG,CAAC,oBAAA,EAAsB,MAAM,WAAA,EAAa,KAAA,EAAO,SAAS,CAAC,CAAA;AAE9D,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,MAAA,EAA6B,QAAA,EAAkB,EAAA,KAAe;AAC7D,MAAA,MAAM,KAAA,GAAQ,OAAA,KAAY,QAAA,IAAY,KAAA,KAAU,KAAA;AAChD,MAAA,QAAA,CAAS,KAAA,GAAQ,SAAS,KAAK,CAAA;AAC/B,MAAA,UAAA,CAAW,QAAQ,CAAA;AACnB,MAAA,YAAA,CAAa,EAAE,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,OAAO,OAAO;AAAA,GACjB;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,EAAiB,OAAA,KAAoB;AAC7D,IAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,uBAAA,GAA0B,CAAC,KAAA,KAAyC;AACxE,IAAA,cAAA,CAAe,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,EAAE,CAAC,CAAA;AAC/C,IAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,EACX,CAAA;AAGA,EAAA,MAAM,SAAA,GACJ,IAAA,GAAO,CAAA,GACH,IAAA,CAAK,GAAA;AAAA,IACH,CAAA;AAAA,IAAA,CACC,CAAA,GAAI,IAAA,IAAQ,WAAA,IAAe,oBAAA,CAAqB,MAAA,IAAU,CAAA;AAAA,GAC7D,GACA,CAAA;AAEN,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,MAAM,SAAA,GAA2B;AAAA,IAC/B,GAAI,gBAAgB,CAAC,EAAE,SAAS,aAAA,EAAe,IAAI,EAAC;AAAA,IACpD,GAAI,yBAAyB;AAAC,GAChC;AAEA,EAAA,IAAI,CAAC,UAAU,CAAC,aAAA;AACd,IAAA,2BACG,KAAA,EAAA,EAAI,aAAA,EAAY,iBAAA,EACf,QAAA,kBAAA,GAAA,CAAC,YAAS,CAAA,EACZ,CAAA;AAGJ,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,mBAAA,EAAqB,SAAS,MAAA,GAAS,CAAA;AAAA,MACvC,gBAAgB,OAAA,CAAQ,KAAA;AAAA,MAExB,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,cAAW,OAAA,EAAQ,IAAA,EAAK,WAAU,IAAA,EAChC,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAC5B,CAAA;AAAA,0BACA,GAAA,CAAC,wBAAA,EAAA,EAAyB,KAAA,EAAO,MAAA,EAAQ,UAAU,SAAA,EAAW;AAAA,SAAA,EAChE,CAAA;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAgB,eAAA;AAAA,YAChB,IAAA,EAAK,OAAA;AAAA,YACL,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,YAEvB,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,iBAAA;AAAA,gBAAA;AAAA,kBACC,KAAA;AAAA,kBACA,OAAA;AAAA,kBACA,SAAA;AAAA,kBACA,aAAA,EAAe;AAAA;AAAA,eACjB;AAAA,cACC,WAAA,EAAa,MAAA,GAAS,CAAA,mBACrB,IAAA,CAAC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,MAAM,WAAA,EAAa,CAAA;AAAA,gBACxC,SAAA,GAAY,CAAA,oBACX,GAAA,CAAC,QAAA,EAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,EAAA,GAAK,SAAA,IAC9B,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAS,uBAAA,CAAwB,QAAQ,CAAA,EACtD,CAAA;AAAA,gCAEF,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,MAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,kBAAA,EAAoB;AAAA,sBAClB;AAAA,wBACE,KAAA,EAAO,CAAA;AAAA,wBACP,KAAA,EAAO,CAAA;AAAA,0BACL,wDAAA;AAAA,0BACA,EAAE,KAAK,GAAA;AAAI;AACb,uBACF;AAAA,sBACA;AAAA,wBACE,KAAA,EAAO,EAAA;AAAA,wBACP,KAAA,EAAO,CAAA;AAAA,0BACL,wDAAA;AAAA,0BACA,EAAE,KAAK,IAAA;AAAK;AACd,uBACF;AAAA,sBACA;AAAA,wBACE,KAAA,EAAO,EAAA;AAAA,wBACP,KAAA,EAAO,CAAA;AAAA,0BACL,wDAAA;AAAA,0BACA,EAAE,KAAK,IAAA;AAAK;AACd;AACF,qBACF;AAAA,oBACA,OAAO,oBAAA,CAAqB,MAAA;AAAA,oBAC5B,WAAA;AAAA,oBACA,IAAA;AAAA,oBACA,YAAA,EAAc,gBAAA;AAAA,oBACd,mBAAA,EAAqB,uBAAA;AAAA,oBACrB,gBAAA,EAAkB;AAAA;AAAA,iBACpB,EACF;AAAA,eAAA,EACF,CAAA,uBAEC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,QACC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,OAAA,EAAS,uBAAA,CAAwB,MAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,kBAAA;AAAA,kBACZ,WAAW,OAAA,CAAQ,KAAA;AAAA,kBAElB,YAAE,gCAAgC;AAAA;AAAA,eACrC,EACF,GACF,CAAA,EACF;AAAA;AAAA;AAAA;AAEJ,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,sBAAe,KAAKA,iBAAe,CAAA;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { FormControl, Input, InputAdornment, IconButton, makeStyles } from '@material-ui/core';
|
|
3
3
|
import Clear from '@material-ui/icons/Clear';
|
|
4
4
|
import Search from '@material-ui/icons/Search';
|
|
5
5
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunRow.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PipelineRunRow.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useEffect, Fragment } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { TableRow, TableCell, IconButton, Collapse, Box, makeStyles } from '@material-ui/core';
|
|
4
4
|
import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';
|
|
5
5
|
import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';
|
|
6
6
|
import { Timestamp, Tooltip } from '@patternfly/react-core';
|
|
@@ -19,7 +19,7 @@ import '../../translations/index.esm.js';
|
|
|
19
19
|
import { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js';
|
|
20
20
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
21
21
|
|
|
22
|
-
const PipelineRunRowActions = ({
|
|
22
|
+
const PipelineRunRowActions$1 = ({
|
|
23
23
|
pipelineRun
|
|
24
24
|
}) => {
|
|
25
25
|
const { watchResourcesData } = useContext(TektonResourcesContext);
|
|
@@ -177,7 +177,7 @@ const PipelineRunRowActions = ({
|
|
|
177
177
|
] })
|
|
178
178
|
] });
|
|
179
179
|
};
|
|
180
|
-
var PipelineRunRowActions
|
|
180
|
+
var PipelineRunRowActions = memo(PipelineRunRowActions$1);
|
|
181
181
|
|
|
182
|
-
export { PipelineRunRowActions
|
|
182
|
+
export { PipelineRunRowActions as default };
|
|
183
183
|
//# sourceMappingURL=PipelineRunRowActions.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunRowActions.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRowActions.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { FC } from 'react';\n\nimport { useContext, useState, memo } from 'react';\n\nimport { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport { IconButton } from '@material-ui/core';\nimport { Flex, FlexItem } from '@patternfly/react-core';\nimport { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport {\n getTaskrunsOutputGroup,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport OutputIcon from '../Icons/OutputIcon';\nimport ViewLogsIcon from '../Icons/ViewLogsIcon';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiDA,MAAM,wBAA8D,CAAC;AAAA,EACnE;AACF,CAAA,KAAM;AACJ,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,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC3D,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClD,SAAkB,KAAK,CAAA;AACzB,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,EAAE,aAAY,GAAI,sBAAA;AAAA,IACtB,aAAa,QAAA,EAAU,IAAA;AAAA,IACvB;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiB,aAAa,QAAA,EAAU,IAAA;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAE/C,EAAA,MAAM,2BAA2B,aAAA,CAAc;AAAA,IAC7C,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAA+B;AACjD,IAAA,aAAA,CAAc,KAAK,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM;AAAA,IACJ,mBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF,GAAI,sBAAA,CAAuB,WAAA,EAAa,QAAA,EAAU,MAAM,QAAQ,CAAA;AAEhE,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAI,mBAAA,GAAsB,CAAC,mBAAmB,IAAI,EAAC;AAAA,IACnD,GAAI,oBAAA,GAAuB,CAAC,oBAAoB,IAAI,EAAC;AAAA,IACrD,GAAI,yBAAA,GAA4B,CAAC,yBAAyB,IAAI,EAAC;AAAA,IAC/D,GAAI,SAAA,GAAY,CAAC,SAAS,IAAI;AAAC,GACjC,CAAE,MAAA;AAAA,IAAO,CAAC,OAAA,KACR;AAAA,MACE,cAAA,CAAe,SAAA;AAAA,MACf,cAAA,CAAe,MAAA;AAAA,MACf,cAAA,CAAe;AAAA,KACjB,CAAE,QAAA,CAAS,wBAAA,CAAyB,OAAO,CAAC;AAAA,GAC9C;AAEA,EAAA,MAAM,UACJ,WAAA,EAAa,MAAA,EAAQ,mBAAmB,WAAA,EAAa,MAAA,EAAQ,WAAW,EAAC;AAE3E,EAAA,MAAM,QAAA,GACJ,QAAQ,MAAA,KAAW,CAAA,GAAI,iBAAiB,MAAA,KAAW,CAAA,GAAI,QAAQ,MAAA,KAAW,CAAA;AAE5E,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,QACZ;AAAA;AAAA,KACF;AAAA,oBAEA,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA,EAAM,UAAA;AAAA,QACN,aAAa,MAAM;AACjB,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB;AAAA;AAAA,KACF;AAAA,oBAEA,GAAA;AAAA,MAAC,iCAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,IAAA,EAAM,oBAAA;AAAA,QACN,aAAa,MAAM;AACjB,UAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,QAC/B;AAAA;AAAA,KACF;AAAA,yBAEC,IAAA,EAAA,EAAK,GAAA,EAAK,EAAE,OAAA,EAAS,SAAQ,EAC5B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,wBAAA,CAAyB,OAAA,GACrB,EAAE,iDAAiD,CAAA,GACnD,EAAE,iDAAiD,CAAA;AAAA,UAGzD,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,aAAA,EAAY,8BAAA;AAAA,cACZ,OAAA,EAAS,MAAM,uBAAA,CAAwB,IAAI,CAAA;AAAA,cAC3C,QAAA,EAAU,CAAC,wBAAA,CAAyB,OAAA;AAAA,cACpC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,8BAAC,WAAA,EAAA,EAAY;AAAA;AAAA;AACf;AAAA,OACF,EACF,CAAA;AAAA,0BAEC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,wBAAA,CAAyB,OAAA,GACrB,EAAE,qCAAqC,CAAA,GACvC,EAAE,iDAAiD,CAAA;AAAA,UAGzD,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,aAAA,EAAY,gBAAA;AAAA,cACZ,SAAS,MAAM,UAAA,CAAW,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,cAC5C,QAAA,EAAU,CAAC,wBAAA,CAAyB,OAAA;AAAA,cACpC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAU,CAAC,yBAAyB,OAAA,EAAS;AAAA;AAAA;AAC7D;AAAA,OACF,EACF,CAAA;AAAA,0BAEC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,aAAY,EACtC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,CAAC,WAAA,GACG,EAAE,8CAA8C,CAAA,GAChD,EAAE,qCAAqC,CAAA;AAAA,UAG7C,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,gBAAA;AAAA,cACZ,QAAA,EAAU,CAAC,WAAA,IAAe,CAAC,cAAc,WAAW,CAAA;AAAA,cACpD,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EACE,CAAC,eAAA,CAAgB,WAAW,IACxB,MAAM;AACJ,gBAAA,UAAA,CAAW,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,cAC9B,CAAA,GACA,MAAA;AAAA,cAEN,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,uBAAoB,WAAA,EAA0B;AAAA;AAAA;AACjD;AAAA,OACF,EACF,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,aAAY,EACtC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,QAAA,GACI,CAAA,CAAE,gDAAgD,CAAA,GAClD,EAAE,uCAAuC,CAAA;AAAA,UAG/C,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,kBAAA;AAAA,cACZ,QAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAS,MAAM,gBAAA,EAAiB;AAAA,cAChC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,cAAW,QAAA,EAAoB;AAAA;AAAA;AAClC;AAAA,OACF,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AACA,8BAAe,KAAK,qBAAqB,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"PipelineRunRowActions.esm.js","sources":["../../../src/components/PipelineRunList/PipelineRunRowActions.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport type { FC } from 'react';\n\nimport { useContext, useState, memo } from 'react';\n\nimport { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nimport { IconButton } from '@material-ui/core';\nimport { Flex, FlexItem } from '@patternfly/react-core';\nimport { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport {\n getTaskrunsOutputGroup,\n hasExternalLink,\n isSbomTaskRun,\n} from '../../utils/taskRun-utils';\nimport OutputIcon from '../Icons/OutputIcon';\nimport ViewLogsIcon from '../Icons/ViewLogsIcon';\nimport ListAltIcon from '@mui/icons-material/ListAlt';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog';\nimport PipelineRunSBOMLink from './PipelineRunSBOMLink';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\nimport { PipelineRunParamsAndResultsDialog } from '../PipelineRunParamsAndResults';\n\nconst PipelineRunRowActions: FC<{ pipelineRun: PipelineRunKind }> = ({\n pipelineRun,\n}) => {\n const { watchResourcesData } = useContext(TektonResourcesContext);\n const [open, setOpen] = useState<boolean>(false);\n const { t } = useTranslationRef(tektonTranslationRef);\n\n const [openOutput, setOpenOutput] = useState<boolean>(false);\n const [openParamsAndResults, setOpenParamsAndResults] =\n useState<boolean>(false);\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const { sbomTaskRun } = getTaskrunsOutputGroup(\n pipelineRun?.metadata?.name,\n taskRuns,\n );\n const activeTaskName = sbomTaskRun?.metadata?.name;\n const [forSBOM, toggleForSBOM] = useState(false);\n\n const hasKubernetesProxyAccess = usePermission({\n permission: kubernetesProxyPermission,\n });\n\n const openDialog = (opts: { forSBOM: boolean }) => {\n toggleForSBOM(opts.forSBOM);\n setOpen(true);\n };\n\n const openOutputDialog = () => {\n setOpenOutput(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n toggleForSBOM(false);\n };\n\n const {\n acsImageScanTaskRun,\n acsImageCheckTaskRun,\n acsDeploymentCheckTaskRun,\n ecTaskRun,\n } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns);\n\n const finishedTaskruns = [\n ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []),\n ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []),\n ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []),\n ...(ecTaskRun ? [ecTaskRun] : []),\n ].filter((taskRun: TaskRunKind) =>\n [\n ComputedStatus.Succeeded,\n ComputedStatus.Failed,\n ComputedStatus.Skipped,\n ].includes(pipelineRunFilterReducer(taskRun)),\n );\n\n const results =\n pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || [];\n\n const disabled =\n results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0;\n\n return (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskName}\n forSBOM={forSBOM}\n />\n\n <PipelineRunOutputDialog\n pipelineRun={pipelineRun}\n taskRuns={taskRuns}\n open={openOutput}\n closeDialog={() => {\n setOpenOutput(false);\n }}\n />\n\n <PipelineRunParamsAndResultsDialog\n pipelineRun={pipelineRun}\n open={openParamsAndResults}\n closeDialog={() => {\n setOpenParamsAndResults(false);\n }}\n />\n\n <Flex gap={{ default: 'gapXs' }}>\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewParamsAndResults')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-params-and-results-icon\"\n onClick={() => setOpenParamsAndResults(true)}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ListAltIcon />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem>\n <Tooltip\n content={\n hasKubernetesProxyAccess.allowed\n ? t('pipelineRunList.rowActions.viewLogs')\n : t('pipelineRunList.rowActions.unauthorizedViewLogs')\n }\n >\n <IconButton\n size=\"small\"\n data-testid=\"view-logs-icon\"\n onClick={() => openDialog({ forSBOM: false })}\n disabled={!hasKubernetesProxyAccess.allowed}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <ViewLogsIcon disabled={!hasKubernetesProxyAccess.allowed} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n !sbomTaskRun\n ? t('pipelineRunList.rowActions.SBOMNotApplicable')\n : t('pipelineRunList.rowActions.viewSBOM')\n }\n >\n <IconButton\n data-testid=\"view-sbom-icon\"\n disabled={!sbomTaskRun || !isSbomTaskRun(sbomTaskRun)}\n size=\"small\"\n onClick={\n !hasExternalLink(sbomTaskRun)\n ? () => {\n openDialog({ forSBOM: true });\n }\n : undefined\n }\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <PipelineRunSBOMLink sbomTaskRun={sbomTaskRun} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n <FlexItem align={{ default: 'alignLeft' }}>\n <Tooltip\n content={\n disabled\n ? t('pipelineRunList.rowActions.outputNotApplicable')\n : t('pipelineRunList.rowActions.viewOutput')\n }\n >\n <IconButton\n data-testid=\"view-output-icon\"\n disabled={disabled}\n size=\"small\"\n onClick={() => openOutputDialog()}\n style={{ pointerEvents: 'auto', padding: 0 }}\n >\n <OutputIcon disabled={disabled} />\n </IconButton>\n </Tooltip>\n </FlexItem>\n </Flex>\n </>\n );\n};\nexport default memo(PipelineRunRowActions);\n"],"names":["PipelineRunRowActions"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiDA,MAAMA,0BAA8D,CAAC;AAAA,EACnE;AACF,CAAA,KAAM;AACJ,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,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAkB,KAAK,CAAA;AAC3D,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClD,SAAkB,KAAK,CAAA;AACzB,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,EAAE,aAAY,GAAI,sBAAA;AAAA,IACtB,aAAa,QAAA,EAAU,IAAA;AAAA,IACvB;AAAA,GACF;AACA,EAAA,MAAM,cAAA,GAAiB,aAAa,QAAA,EAAU,IAAA;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAE/C,EAAA,MAAM,2BAA2B,aAAA,CAAc;AAAA,IAC7C,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAA+B;AACjD,IAAA,aAAA,CAAc,KAAK,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM;AAAA,IACJ,mBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF,GAAI,sBAAA,CAAuB,WAAA,EAAa,QAAA,EAAU,MAAM,QAAQ,CAAA;AAEhE,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAI,mBAAA,GAAsB,CAAC,mBAAmB,IAAI,EAAC;AAAA,IACnD,GAAI,oBAAA,GAAuB,CAAC,oBAAoB,IAAI,EAAC;AAAA,IACrD,GAAI,yBAAA,GAA4B,CAAC,yBAAyB,IAAI,EAAC;AAAA,IAC/D,GAAI,SAAA,GAAY,CAAC,SAAS,IAAI;AAAC,GACjC,CAAE,MAAA;AAAA,IAAO,CAAC,OAAA,KACR;AAAA,MACE,cAAA,CAAe,SAAA;AAAA,MACf,cAAA,CAAe,MAAA;AAAA,MACf,cAAA,CAAe;AAAA,KACjB,CAAE,QAAA,CAAS,wBAAA,CAAyB,OAAO,CAAC;AAAA,GAC9C;AAEA,EAAA,MAAM,UACJ,WAAA,EAAa,MAAA,EAAQ,mBAAmB,WAAA,EAAa,MAAA,EAAQ,WAAW,EAAC;AAE3E,EAAA,MAAM,QAAA,GACJ,QAAQ,MAAA,KAAW,CAAA,GAAI,iBAAiB,MAAA,KAAW,CAAA,GAAI,QAAQ,MAAA,KAAW,CAAA;AAE5E,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,QACZ;AAAA;AAAA,KACF;AAAA,oBAEA,GAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA,EAAM,UAAA;AAAA,QACN,aAAa,MAAM;AACjB,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB;AAAA;AAAA,KACF;AAAA,oBAEA,GAAA;AAAA,MAAC,iCAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,IAAA,EAAM,oBAAA;AAAA,QACN,aAAa,MAAM;AACjB,UAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,QAC/B;AAAA;AAAA,KACF;AAAA,yBAEC,IAAA,EAAA,EAAK,GAAA,EAAK,EAAE,OAAA,EAAS,SAAQ,EAC5B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,wBAAA,CAAyB,OAAA,GACrB,EAAE,iDAAiD,CAAA,GACnD,EAAE,iDAAiD,CAAA;AAAA,UAGzD,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,aAAA,EAAY,8BAAA;AAAA,cACZ,OAAA,EAAS,MAAM,uBAAA,CAAwB,IAAI,CAAA;AAAA,cAC3C,QAAA,EAAU,CAAC,wBAAA,CAAyB,OAAA;AAAA,cACpC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,8BAAC,WAAA,EAAA,EAAY;AAAA;AAAA;AACf;AAAA,OACF,EACF,CAAA;AAAA,0BAEC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,wBAAA,CAAyB,OAAA,GACrB,EAAE,qCAAqC,CAAA,GACvC,EAAE,iDAAiD,CAAA;AAAA,UAGzD,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,aAAA,EAAY,gBAAA;AAAA,cACZ,SAAS,MAAM,UAAA,CAAW,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,cAC5C,QAAA,EAAU,CAAC,wBAAA,CAAyB,OAAA;AAAA,cACpC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,QAAA,EAAU,CAAC,yBAAyB,OAAA,EAAS;AAAA;AAAA;AAC7D;AAAA,OACF,EACF,CAAA;AAAA,0BAEC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,aAAY,EACtC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,CAAC,WAAA,GACG,EAAE,8CAA8C,CAAA,GAChD,EAAE,qCAAqC,CAAA;AAAA,UAG7C,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,gBAAA;AAAA,cACZ,QAAA,EAAU,CAAC,WAAA,IAAe,CAAC,cAAc,WAAW,CAAA;AAAA,cACpD,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EACE,CAAC,eAAA,CAAgB,WAAW,IACxB,MAAM;AACJ,gBAAA,UAAA,CAAW,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,cAC9B,CAAA,GACA,MAAA;AAAA,cAEN,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,uBAAoB,WAAA,EAA0B;AAAA;AAAA;AACjD;AAAA,OACF,EACF,CAAA;AAAA,0BACC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,aAAY,EACtC,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SACE,QAAA,GACI,CAAA,CAAE,gDAAgD,CAAA,GAClD,EAAE,uCAAuC,CAAA;AAAA,UAG/C,QAAA,kBAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,kBAAA;AAAA,cACZ,QAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,OAAA,EAAS,MAAM,gBAAA,EAAiB;AAAA,cAChC,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,cAE3C,QAAA,kBAAA,GAAA,CAAC,cAAW,QAAA,EAAoB;AAAA;AAAA;AAClC;AAAA,OACF,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AACA,4BAAe,KAAKA,uBAAqB,CAAA;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { TableHead, TableRow, TableCell, TableSortLabel, makeStyles } from '@material-ui/core';
|
|
3
3
|
import { getPipelineRunColumnHeader } from './PipelineRunColumnHeader.esm.js';
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
5
|
import '../../translations/index.esm.js';
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-plrstatus {\n display: flex;\n align-items: center;\n}\n\n.bs-tkn-plrstatus svg {\n top: 0;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=PlrStatus.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlrStatus.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlrStatus.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-pipeline-visualization__label {\n align-items: baseline;\n}\n\n.bs-tkn-pipeline-visualization__label .badge {\n font-size: 12px;\n line-height: 20px;\n margin-right: 4px;\n min-width: 24px;\n padding: 0 7px;\n border-radius: 20px;\n color: var(--pf-t--color--white);\n display: inline-block;\n text-align: center;\n white-space: nowrap;\n width: 100%;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=ResourceBadge.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceBadge.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResourceBadge.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { memo, useState, useEffect } from 'react';
|
|
3
3
|
import { ErrorBoundary } from '@backstage/core-components';
|
|
4
|
-
import {
|
|
4
|
+
import { Dialog, DialogTitle, Box, IconButton, DialogContent, makeStyles, createStyles } from '@material-ui/core';
|
|
5
5
|
import CloseIcon from '@mui/icons-material/Close';
|
|
6
6
|
import { tektonGroupColor } from '../../types/types.esm.js';
|
|
7
7
|
import ResourceBadge from '../PipelineRunList/ResourceBadge.esm.js';
|
|
@@ -26,7 +26,7 @@ const useStyles = makeStyles(
|
|
|
26
26
|
}
|
|
27
27
|
})
|
|
28
28
|
);
|
|
29
|
-
const PipelineRunLogDialog = ({
|
|
29
|
+
const PipelineRunLogDialog$1 = ({
|
|
30
30
|
open,
|
|
31
31
|
closeDialog,
|
|
32
32
|
pipelineRun,
|
|
@@ -95,7 +95,7 @@ const PipelineRunLogDialog = ({
|
|
|
95
95
|
}
|
|
96
96
|
);
|
|
97
97
|
};
|
|
98
|
-
var PipelineRunLogDialog
|
|
98
|
+
var PipelineRunLogDialog = memo(PipelineRunLogDialog$1);
|
|
99
99
|
|
|
100
|
-
export { PipelineRunLogDialog
|
|
100
|
+
export { PipelineRunLogDialog as default };
|
|
101
101
|
//# sourceMappingURL=PipelineRunLogDialog.esm.js.map
|
|
@@ -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 {\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,
|
|
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":["PipelineRunLogDialog"],"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,MAAMA,yBAAuB,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,2BAAe,KAAKA,sBAAoB,CAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { memo, useState } from 'react';
|
|
3
3
|
import useInterval from 'react-use/lib/useInterval';
|
|
4
|
-
import {
|
|
4
|
+
import { StepButton, makeStyles, createStyles, CircularProgress } from '@material-ui/core';
|
|
5
5
|
import Step from '@material-ui/core/Step';
|
|
6
6
|
import StepLabel from '@material-ui/core/StepLabel';
|
|
7
7
|
import Stepper from '@material-ui/core/Stepper';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { memo } from 'react';
|
|
3
3
|
import { ErrorBoundary } from '@backstage/core-components';
|
|
4
|
-
import {
|
|
4
|
+
import { Dialog, DialogTitle, Box, IconButton, DialogContent, makeStyles, createStyles } from '@material-ui/core';
|
|
5
5
|
import CloseIcon from '@mui/icons-material/Close';
|
|
6
6
|
import { tektonGroupColor } from '../../types/types.esm.js';
|
|
7
7
|
import PipelineRunOutput from '../PipelineRunList/PipelineRunOutput.esm.js';
|
|
@@ -25,7 +25,7 @@ const useStyles = makeStyles(
|
|
|
25
25
|
}
|
|
26
26
|
})
|
|
27
27
|
);
|
|
28
|
-
const PipelineRunOutputDialog = ({
|
|
28
|
+
const PipelineRunOutputDialog$1 = ({
|
|
29
29
|
open,
|
|
30
30
|
closeDialog,
|
|
31
31
|
pipelineRun,
|
|
@@ -67,7 +67,7 @@ const PipelineRunOutputDialog = ({
|
|
|
67
67
|
}
|
|
68
68
|
);
|
|
69
69
|
};
|
|
70
|
-
var PipelineRunOutputDialog
|
|
70
|
+
var PipelineRunOutputDialog = memo(PipelineRunOutputDialog$1);
|
|
71
71
|
|
|
72
|
-
export { PipelineRunOutputDialog
|
|
72
|
+
export { PipelineRunOutputDialog as default };
|
|
73
73
|
//# sourceMappingURL=PipelineRunOutputDialog.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineRunOutputDialog.esm.js","sources":["../../../src/components/PipelineRunOutput/PipelineRunOutputDialog.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 { memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\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 PipelineRunOutput from '../PipelineRunList/PipelineRunOutput';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\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 PipelineRunOutputDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\nconst PipelineRunOutputDialog = ({\n open,\n closeDialog,\n pipelineRun,\n taskRuns,\n}: PipelineRunOutputDialogProps) => {\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-output-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-output\" title={t('pipelineRunOutput.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 <PipelineRunOutput pipelineRun={pipelineRun} taskRuns={taskRuns} />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunOutputDialog);\n"],"names":[],"mappings":";;;;;;;;;;;;AA0CA,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;AAQA,
|
|
1
|
+
{"version":3,"file":"PipelineRunOutputDialog.esm.js","sources":["../../../src/components/PipelineRunOutput/PipelineRunOutputDialog.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 { memo } from 'react';\n\nimport { ErrorBoundary } from '@backstage/core-components';\n\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 PipelineRunOutput from '../PipelineRunList/PipelineRunOutput';\nimport ResourceBadge from '../PipelineRunList/ResourceBadge';\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 PipelineRunOutputDialogProps = {\n open: boolean;\n closeDialog: () => void;\n pipelineRun: PipelineRunKind;\n taskRuns: TaskRunKind[];\n};\nconst PipelineRunOutputDialog = ({\n open,\n closeDialog,\n pipelineRun,\n taskRuns,\n}: PipelineRunOutputDialogProps) => {\n const classes = useStyles();\n const { t } = useTranslationRef(tektonTranslationRef);\n\n return (\n <Dialog\n data-testid=\"pipelinerun-output-dialog\"\n maxWidth=\"xl\"\n fullWidth\n open={open}\n onClose={closeDialog}\n >\n <DialogTitle id=\"pipelinerun-output\" title={t('pipelineRunOutput.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 <PipelineRunOutput pipelineRun={pipelineRun} taskRuns={taskRuns} />\n </ErrorBoundary>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default memo(PipelineRunOutputDialog);\n"],"names":["PipelineRunOutputDialog"],"mappings":";;;;;;;;;;;;AA0CA,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;AAQA,MAAMA,4BAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAoC;AAClC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AAEpD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,2BAAA;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,oBAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EACrE,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,UAAG,GAAA;AAAA,0BACH,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,iBACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EACC,8BAAC,iBAAA,EAAA,EAAkB,WAAA,EAA0B,QAAA,EAAoB,CAAA,EACnE,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,8BAAe,KAAKA,yBAAuB,CAAA;;;;"}
|
package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ErrorBoundary } from '@backstage/core-components';
|
|
3
|
-
import {
|
|
3
|
+
import { Dialog, DialogTitle, Box, IconButton, DialogContent, makeStyles, createStyles } from '@material-ui/core';
|
|
4
4
|
import CloseIcon from '@mui/icons-material/Close';
|
|
5
5
|
import { tektonGroupColor } from '../../types/types.esm.js';
|
|
6
6
|
import ResourceBadge from '../PipelineRunList/ResourceBadge.esm.js';
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-cluster-selector {\n display: flex;\n align-items: center;\n}\n\n.bs-tkn-cluster-selector > div > div > div {\n margin-top: 0;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=ClusterSelector.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterSelector.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClusterSelector.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useContext, useState } from 'react';
|
|
3
3
|
import { Select } from '@backstage/core-components';
|
|
4
|
-
import {
|
|
4
|
+
import { Typography, makeStyles } from '@material-ui/core';
|
|
5
5
|
import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
|
|
6
6
|
import './ClusterSelector.css.esm.js';
|
|
7
7
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-resource-status {\n padding-left: var(--pf-t--global--spacer--sm);\n white-space: nowrap;\n}\n\n.bs-tkn-resource-status__badge {\n vertical-align: middle;\n}\n\n.bs-tkn-resource-status__badge--alt {\n vertical-align: baseline;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=ResourceStatus.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceStatus.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResourceStatus.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-status-selector {\n display: flex;\n align-items: center;\n}\n\n.bs-tkn-status-selector > div > div > div {\n margin-top: 0;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=StatusSelector.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusSelector.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StatusSelector.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useContext } from 'react';
|
|
3
3
|
import { Select } from '@backstage/core-components';
|
|
4
|
-
import {
|
|
4
|
+
import { Typography, makeStyles } from '@material-ui/core';
|
|
5
5
|
import './StatusSelector.css.esm.js';
|
|
6
6
|
import { ComputedStatus } from '@backstage-community/plugin-tekton-react';
|
|
7
7
|
import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useContext } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Tooltip, IconButton, makeStyles } from '@material-ui/core';
|
|
4
4
|
import Collapse from '@material-ui/icons/UnfoldLess';
|
|
5
5
|
import Expand from '@material-ui/icons/UnfoldMore';
|
|
6
6
|
import { TektonResourcesContext } from '../../hooks/TektonResourcesContext.esm.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
3
|
-
import { Visualization, GRAPH_POSITION_CHANGE_EVENT, GRAPH_LAYOUT_END_EVENT, VisualizationProvider, TopologyView, VisualizationSurface, TopologyControlBar, createTopologyControlButtons,
|
|
3
|
+
import { Visualization, GRAPH_POSITION_CHANGE_EVENT, GRAPH_LAYOUT_END_EVENT, VisualizationProvider, TopologyView, VisualizationSurface, TopologyControlBar, createTopologyControlButtons, defaultControlButtonsOptions, action } from '@patternfly/react-topology';
|
|
4
4
|
import { DROP_SHADOW_SPACING, GRAPH_MIN_WIDTH, TOOLBAR_HEIGHT, NODE_HEIGHT } from '../../consts/pipeline-topology-const.esm.js';
|
|
5
5
|
import { getLayoutData } from '../../utils/pipeline-topology-utils.esm.js';
|
|
6
6
|
import pipelineComponentFactory, { layoutFactory } from './pipelineComponentFactory.esm.js';
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-pipeline-task-node:focus {\n outline: -webkit-focus-ring-color auto 5px;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=PipelineTaskNode.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineTaskNode.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PipelineTaskNode.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -15,7 +15,7 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
|
15
15
|
import '../../translations/index.esm.js';
|
|
16
16
|
import { tektonTranslationRef } from '../../translations/ref.esm.js';
|
|
17
17
|
|
|
18
|
-
const PipelineTaskNode = ({
|
|
18
|
+
const PipelineTaskNode$1 = ({
|
|
19
19
|
element,
|
|
20
20
|
onContextMenu,
|
|
21
21
|
contextMenuOpen,
|
|
@@ -134,7 +134,7 @@ const PipelineTaskNode = ({
|
|
|
134
134
|
}
|
|
135
135
|
);
|
|
136
136
|
};
|
|
137
|
-
var PipelineTaskNode
|
|
137
|
+
var PipelineTaskNode = memo(observer(PipelineTaskNode$1));
|
|
138
138
|
|
|
139
|
-
export { PipelineTaskNode
|
|
139
|
+
export { PipelineTaskNode as default };
|
|
140
140
|
//# sourceMappingURL=PipelineTaskNode.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineTaskNode.esm.js","sources":["../../../src/components/pipeline-topology/PipelineTaskNode.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 { LegacyRef } from 'react';\n\nimport { useState, useContext, useRef, useMemo, memo } from 'react';\n\nimport { Tooltip } from '@patternfly/react-core';\nimport {\n DEFAULT_LAYER,\n DEFAULT_WHEN_OFFSET,\n GraphElement,\n Layer,\n Node,\n RunStatus,\n ScaleDetailsLevel,\n TaskNode,\n TOP_LAYER,\n useDetailsLevel,\n useHover,\n WhenDecorator,\n WithContextMenuProps,\n WithSelectionProps,\n} from '@patternfly/react-topology';\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { observer } from 'mobx-react';\n\nimport {\n PipelineTaskWithStatus,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { NodeType } from '../../consts/pipeline-topology-const';\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../../consts/tekton-const';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { StepStatus } from '../../types/taskRun';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { createStepStatus } from '../../utils/pipeline-step-utils';\nimport { getTaskStatus } from '../../utils/pipelineRun-utils';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport { PipelineVisualizationStepList } from './PipelineVisualizationStepList';\n\nimport './PipelineTaskNode.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineTaskNodeProps = {\n element: Node;\n} & WithContextMenuProps &\n WithSelectionProps &\n GraphElement;\n\nconst PipelineTaskNode = ({\n element,\n onContextMenu,\n contextMenuOpen,\n ...rest\n}: PipelineTaskNodeProps) => {\n const [open, setOpen] = useState<boolean>(false);\n const { watchResourcesData } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const { t } = useTranslationRef(tektonTranslationRef);\n const data = element.getData();\n const triggerRef = useRef<SVGGElement | null>(null);\n\n const pipelineRun = data.pipelineRun;\n const [hover, hoverRef] = useHover();\n const detailsLevel = useDetailsLevel();\n const isFinallyTask = element.getType() === NodeType.FINALLY_NODE;\n\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const openDialog = () => {\n setOpen(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n const computedTask: PipelineTaskWithStatus = data.task;\n const stepList =\n computedTask?.status?.steps || computedTask?.taskSpec?.steps || [];\n\n const taskStatus = getTaskStatus(data.pipelineRun, data.task);\n\n const stepStatusList: StepStatus[] = stepList.map((step: { name: string }) =>\n createStepStatus(step, taskStatus, t),\n );\n const succeededStepsCount = stepStatusList.filter(\n ({ status }) => status === RunStatus.Succeeded,\n ).length;\n\n const badge =\n stepStatusList.length > 0 && data.status\n ? `${succeededStepsCount}/${stepStatusList.length}`\n : null;\n\n const passedData = useMemo(() => {\n const newData = { ...data };\n Object.keys(newData).forEach(key => {\n if (newData[key] === undefined) {\n delete newData[key];\n }\n });\n return newData;\n }, [data]);\n\n const hasTaskIcon = !!(data.taskIconClass || data.taskIcon);\n const whenDecorator = data.whenStatus ? (\n <WhenDecorator\n element={element}\n status={data.whenStatus}\n leftOffset={\n hasTaskIcon\n ? DEFAULT_WHEN_OFFSET + (element.getBounds().height - 4) * 0.75\n : DEFAULT_WHEN_OFFSET\n }\n />\n ) : null;\n const activeTaskId = taskRuns.find(\n (tr: TaskRunKind) =>\n tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] ===\n pipelineRun?.metadata?.name &&\n tr?.metadata?.labels?.[TEKTON_PIPELINE_TASK] === data.task?.name,\n )?.metadata?.name;\n\n const taskNode = (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskId}\n />\n <TaskNode\n className=\"bs-tkn-pipeline-task-node\"\n element={element}\n onContextMenu={data.showContextMenu ? onContextMenu : undefined}\n contextMenuOpen={contextMenuOpen}\n scaleNode={\n (hover || contextMenuOpen) && detailsLevel !== ScaleDetailsLevel.high\n }\n hideDetailsAtMedium\n {...passedData}\n {...rest}\n badge={badge}\n truncateLength={element.getData()?.label?.length}\n onSelect={activeTaskId && openDialog}\n >\n {whenDecorator}\n </TaskNode>\n </>\n );\n\n return (\n <Layer\n id={\n detailsLevel !== ScaleDetailsLevel.high && (hover || contextMenuOpen)\n ? TOP_LAYER\n : DEFAULT_LAYER\n }\n >\n <g\n data-test={`task ${element.getLabel()}`}\n className=\"bs-tkn-pipeline-task-node\"\n ref={hoverRef as LegacyRef<SVGGElement>}\n >\n <Tooltip\n position=\"bottom\"\n enableFlip={false}\n content={\n <PipelineVisualizationStepList\n isSpecOverview={!data.status}\n taskName={element.getLabel()}\n steps={stepStatusList}\n isFinallyTask={isFinallyTask}\n />\n }\n triggerRef={triggerRef}\n >\n <g ref={triggerRef}>{taskNode}</g>\n </Tooltip>\n </g>\n </Layer>\n );\n};\n\nexport default memo(observer(PipelineTaskNode));\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PipelineTaskNode.esm.js","sources":["../../../src/components/pipeline-topology/PipelineTaskNode.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 { LegacyRef } from 'react';\n\nimport { useState, useContext, useRef, useMemo, memo } from 'react';\n\nimport { Tooltip } from '@patternfly/react-core';\nimport {\n DEFAULT_LAYER,\n DEFAULT_WHEN_OFFSET,\n GraphElement,\n Layer,\n Node,\n RunStatus,\n ScaleDetailsLevel,\n TaskNode,\n TOP_LAYER,\n useDetailsLevel,\n useHover,\n WhenDecorator,\n WithContextMenuProps,\n WithSelectionProps,\n} from '@patternfly/react-topology';\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { observer } from 'mobx-react';\n\nimport {\n PipelineTaskWithStatus,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { NodeType } from '../../consts/pipeline-topology-const';\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../../consts/tekton-const';\nimport { TektonResourcesContext } from '../../hooks/TektonResourcesContext';\nimport { StepStatus } from '../../types/taskRun';\nimport { TektonResourcesContextData } from '../../types/types';\nimport { createStepStatus } from '../../utils/pipeline-step-utils';\nimport { getTaskStatus } from '../../utils/pipelineRun-utils';\nimport PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog';\nimport { PipelineVisualizationStepList } from './PipelineVisualizationStepList';\n\nimport './PipelineTaskNode.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\ntype PipelineTaskNodeProps = {\n element: Node;\n} & WithContextMenuProps &\n WithSelectionProps &\n GraphElement;\n\nconst PipelineTaskNode = ({\n element,\n onContextMenu,\n contextMenuOpen,\n ...rest\n}: PipelineTaskNodeProps) => {\n const [open, setOpen] = useState<boolean>(false);\n const { watchResourcesData } = useContext<TektonResourcesContextData>(\n TektonResourcesContext,\n );\n const { t } = useTranslationRef(tektonTranslationRef);\n const data = element.getData();\n const triggerRef = useRef<SVGGElement | null>(null);\n\n const pipelineRun = data.pipelineRun;\n const [hover, hoverRef] = useHover();\n const detailsLevel = useDetailsLevel();\n const isFinallyTask = element.getType() === NodeType.FINALLY_NODE;\n\n const pods = watchResourcesData?.pods?.data || [];\n const taskRuns = watchResourcesData?.taskruns?.data || [];\n const openDialog = () => {\n setOpen(true);\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n const computedTask: PipelineTaskWithStatus = data.task;\n const stepList =\n computedTask?.status?.steps || computedTask?.taskSpec?.steps || [];\n\n const taskStatus = getTaskStatus(data.pipelineRun, data.task);\n\n const stepStatusList: StepStatus[] = stepList.map((step: { name: string }) =>\n createStepStatus(step, taskStatus, t),\n );\n const succeededStepsCount = stepStatusList.filter(\n ({ status }) => status === RunStatus.Succeeded,\n ).length;\n\n const badge =\n stepStatusList.length > 0 && data.status\n ? `${succeededStepsCount}/${stepStatusList.length}`\n : null;\n\n const passedData = useMemo(() => {\n const newData = { ...data };\n Object.keys(newData).forEach(key => {\n if (newData[key] === undefined) {\n delete newData[key];\n }\n });\n return newData;\n }, [data]);\n\n const hasTaskIcon = !!(data.taskIconClass || data.taskIcon);\n const whenDecorator = data.whenStatus ? (\n <WhenDecorator\n element={element}\n status={data.whenStatus}\n leftOffset={\n hasTaskIcon\n ? DEFAULT_WHEN_OFFSET + (element.getBounds().height - 4) * 0.75\n : DEFAULT_WHEN_OFFSET\n }\n />\n ) : null;\n const activeTaskId = taskRuns.find(\n (tr: TaskRunKind) =>\n tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] ===\n pipelineRun?.metadata?.name &&\n tr?.metadata?.labels?.[TEKTON_PIPELINE_TASK] === data.task?.name,\n )?.metadata?.name;\n\n const taskNode = (\n <>\n <PipelineRunLogDialog\n pipelineRun={pipelineRun}\n open={open}\n closeDialog={closeDialog}\n pods={pods}\n taskRuns={taskRuns}\n activeTask={activeTaskId}\n />\n <TaskNode\n className=\"bs-tkn-pipeline-task-node\"\n element={element}\n onContextMenu={data.showContextMenu ? onContextMenu : undefined}\n contextMenuOpen={contextMenuOpen}\n scaleNode={\n (hover || contextMenuOpen) && detailsLevel !== ScaleDetailsLevel.high\n }\n hideDetailsAtMedium\n {...passedData}\n {...rest}\n badge={badge}\n truncateLength={element.getData()?.label?.length}\n onSelect={activeTaskId && openDialog}\n >\n {whenDecorator}\n </TaskNode>\n </>\n );\n\n return (\n <Layer\n id={\n detailsLevel !== ScaleDetailsLevel.high && (hover || contextMenuOpen)\n ? TOP_LAYER\n : DEFAULT_LAYER\n }\n >\n <g\n data-test={`task ${element.getLabel()}`}\n className=\"bs-tkn-pipeline-task-node\"\n ref={hoverRef as LegacyRef<SVGGElement>}\n >\n <Tooltip\n position=\"bottom\"\n enableFlip={false}\n content={\n <PipelineVisualizationStepList\n isSpecOverview={!data.status}\n taskName={element.getLabel()}\n steps={stepStatusList}\n isFinallyTask={isFinallyTask}\n />\n }\n triggerRef={triggerRef}\n >\n <g ref={triggerRef}>{taskNode}</g>\n </Tooltip>\n </g>\n </Layer>\n );\n};\n\nexport default memo(observer(PipelineTaskNode));\n"],"names":["PipelineTaskNode"],"mappings":"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"}
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-pipeline-visualization__label {\n align-items: baseline;\n padding-bottom: var(--pf-t--global--spacer--xs);\n}\n\n.bs-tkn-pipeline-visualization__label .badge {\n font-size: 17px;\n line-height: 20px;\n margin-right: 4px;\n min-width: 24px;\n padding: 0 7px;\n border-radius: 20px;\n color: var(--pf-t--color--white);\n display: inline-block;\n text-align: center;\n white-space: nowrap;\n width: 100%;\n}\n\n.bs-tkn-pipeline-visualization__layout .pf-topology-content {\n border-radius: 20px;\n}\n\n.bs-tkn-pipeline-visualization__layout .pf-topology-visualization-surface {\n font-size: 1rem;\n border-radius: 1rem;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=PipelineVisualization.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineVisualization.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PipelineVisualization.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -2,6 +2,4 @@ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.
|
|
|
2
2
|
|
|
3
3
|
var css_248z = ".bs-tkn-pipeline-visualization-step-list {\n min-width: 10em;\n}\n\n.bs-tkn-pipeline-visualization-step-list__task-name {\n font-weight: var(--pf-t--global--font--weight--heading);\n line-height: var(--pf-t--global--spacer--lg);\n max-height: var(--pf-t--global--spacer--2xl);\n max-width: 15em;\n margin: 0 auto 10px auto;\n\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n}\n\n.bs-tkn-pipeline-visualization-step-list__task-type {\n line-height: var(--pf-t--global--spacer--xs);\n max-height: var(--pf-t--global--spacer--2xl);\n margin: 0 auto 10px auto;\n}\n\n.bs-tkn-pipeline-visualization-step-list__step {\n display: flex;\n margin-bottom: var(--pf-t--global--spacer--xs);\n}\n\n.bs-tkn-pipeline-visualization-step-list__step--task-run {\n margin-bottom: var(--pf-t--global--spacer--sm);\n}\n\n.bs-tkn-pipeline-visualization-step-list__step:last-child {\n margin-bottom: 0;\n}\n\n.bs-tkn-pipeline-visualization-step-list__bullet {\n font-size: 1rem;\n}\n\n.bs-tkn-pipeline-visualization-step-list__icon {\n flex: 0 0 18px;\n}\n\n.bs-tkn-pipeline-visualization-step-list__icon-backdrop {\n fill: var(--pf-t--color--white);\n}\n\n.bs-tkn-pipeline-visualization-step-list__name {\n flex: 1 1 auto;\n overflow: hidden;\n padding-left: var(--pf-t--global--spacer--sm);\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.bs-tkn-pipeline-visualization-step-list__name.is-main-focus {\n padding: 0 var(--pf-t--global--spacer--sm);\n text-align: center;\n}\n\n.bs-tkn-pipeline-visualization-step-list__duration {\n flex: 0 0 auto;\n padding-left: var(--pf-t--global--spacer--sm);\n text-align: right;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
|
-
|
|
6
|
-
export { css_248z as default };
|
|
7
5
|
//# sourceMappingURL=PipelineVisualizationStepList.css.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineVisualizationStepList.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PipelineVisualizationStepList.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -3,14 +3,14 @@ import { TaskEdge } from '@patternfly/react-topology';
|
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
import { GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL } from '../../consts/pipeline-topology-const.esm.js';
|
|
5
5
|
|
|
6
|
-
const TaskGroupEdge = (props) => /* @__PURE__ */ jsx(
|
|
6
|
+
const TaskGroupEdge$1 = (props) => /* @__PURE__ */ jsx(
|
|
7
7
|
TaskEdge,
|
|
8
8
|
{
|
|
9
9
|
nodeSeparation: GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL,
|
|
10
10
|
...props
|
|
11
11
|
}
|
|
12
12
|
);
|
|
13
|
-
var TaskGroupEdge
|
|
13
|
+
var TaskGroupEdge = observer(TaskGroupEdge$1);
|
|
14
14
|
|
|
15
|
-
export { TaskGroupEdge
|
|
15
|
+
export { TaskGroupEdge as default };
|
|
16
16
|
//# sourceMappingURL=TaskGroupEdge.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskGroupEdge.esm.js","sources":["../../../src/components/pipeline-topology/TaskGroupEdge.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 { Edge, TaskEdge } from '@patternfly/react-topology';\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { observer } from 'mobx-react';\n\nimport { GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL } from '../../consts/pipeline-topology-const';\n\ninterface TaskEdgeProps {\n element: Edge;\n}\n\nconst TaskGroupEdge = (props: TaskEdgeProps) => (\n <TaskEdge\n nodeSeparation={GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL}\n {...props}\n />\n);\n\nexport default observer(TaskGroupEdge);\n"],"names":[],"mappings":";;;;;AAyBA,
|
|
1
|
+
{"version":3,"file":"TaskGroupEdge.esm.js","sources":["../../../src/components/pipeline-topology/TaskGroupEdge.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 { Edge, TaskEdge } from '@patternfly/react-topology';\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { observer } from 'mobx-react';\n\nimport { GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL } from '../../consts/pipeline-topology-const';\n\ninterface TaskEdgeProps {\n element: Edge;\n}\n\nconst TaskGroupEdge = (props: TaskEdgeProps) => (\n <TaskEdge\n nodeSeparation={GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL}\n {...props}\n />\n);\n\nexport default observer(TaskGroupEdge);\n"],"names":["TaskGroupEdge"],"mappings":";;;;;AAyBA,MAAMA,eAAA,GAAgB,CAAC,KAAA,qBACrB,GAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IACC,cAAA,EAAgB,2CAAA;AAAA,IACf,GAAG;AAAA;AACN,CAAA;AAGF,oBAAe,SAASA,eAAa,CAAA;;;;"}
|
|
@@ -2,7 +2,7 @@ import { RunStatus, getSpacerNodes, getEdgesFromNodes, ModelKind, WhenStatus } f
|
|
|
2
2
|
import { uniq, minBy } from 'lodash';
|
|
3
3
|
import { ComputedStatus } from '@backstage-community/plugin-tekton-react';
|
|
4
4
|
import { DAG } from '../components/pipeline-topology/dag.esm.js';
|
|
5
|
-
import { DEFAULT_BADGE_WIDTH,
|
|
5
|
+
import { DEFAULT_BADGE_WIDTH, NODE_PADDING, DEFAULT_NODE_ICON_WIDTH, NodeType, DEFAULT_FINALLLY_GROUP_PADDING, PipelineLayout, DEFAULT_NODE_HEIGHT, DAGRE_BUILDER_SPACED_PROPS, DAGRE_VIEWER_SPACED_PROPS, DAGRE_VIEWER_PROPS, DAGRE_BUILDER_PROPS, NODE_WIDTH, NODE_HEIGHT, REGEX_EXTRACT_DEPS } from '../consts/pipeline-topology-const.esm.js';
|
|
6
6
|
import { getPLRTaskRuns, appendPipelineRunStatus } from './pipelineRun-utils.esm.js';
|
|
7
7
|
|
|
8
8
|
const createGenericNode = (type, width, height) => (name, data) => ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage-community/plugin-tekton",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.38.0",
|
|
4
4
|
"main": "./dist/index.esm.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -60,17 +60,17 @@
|
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@aonic-ui/pipelines": "^3.1.0",
|
|
63
|
-
"@backstage-community/plugin-tekton-common": "^1.
|
|
64
|
-
"@backstage-community/plugin-tekton-react": "^0.
|
|
65
|
-
"@backstage/catalog-model": "^1.
|
|
66
|
-
"@backstage/core-components": "^0.18.
|
|
67
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
68
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
69
|
-
"@backstage/plugin-catalog-react": "^2.
|
|
70
|
-
"@backstage/plugin-kubernetes-common": "^0.9.
|
|
71
|
-
"@backstage/plugin-kubernetes-react": "^0.5.
|
|
72
|
-
"@backstage/plugin-permission-react": "^0.
|
|
73
|
-
"@backstage/theme": "^0.7.
|
|
63
|
+
"@backstage-community/plugin-tekton-common": "^1.21.0",
|
|
64
|
+
"@backstage-community/plugin-tekton-react": "^0.6.0",
|
|
65
|
+
"@backstage/catalog-model": "^1.8.0",
|
|
66
|
+
"@backstage/core-components": "^0.18.9",
|
|
67
|
+
"@backstage/core-plugin-api": "^1.12.5",
|
|
68
|
+
"@backstage/frontend-plugin-api": "^0.16.2",
|
|
69
|
+
"@backstage/plugin-catalog-react": "^2.1.4",
|
|
70
|
+
"@backstage/plugin-kubernetes-common": "^0.9.11",
|
|
71
|
+
"@backstage/plugin-kubernetes-react": "^0.5.18",
|
|
72
|
+
"@backstage/plugin-permission-react": "^0.5.0",
|
|
73
|
+
"@backstage/theme": "^0.7.3",
|
|
74
74
|
"@kubernetes/client-node": "1.4.0",
|
|
75
75
|
"@material-ui/core": "^4.9.13",
|
|
76
76
|
"@material-ui/icons": "^4.11.3",
|
|
@@ -94,9 +94,9 @@
|
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@axe-core/playwright": "^4.11.0",
|
|
97
|
-
"@backstage/cli": "^0.
|
|
98
|
-
"@backstage/dev-utils": "^1.1.
|
|
99
|
-
"@backstage/test-utils": "^1.7.
|
|
97
|
+
"@backstage/cli": "^0.36.1",
|
|
98
|
+
"@backstage/dev-utils": "^1.1.22",
|
|
99
|
+
"@backstage/test-utils": "^1.7.17",
|
|
100
100
|
"@playwright/test": "^1.57.0",
|
|
101
101
|
"@testing-library/dom": "^10.4.1",
|
|
102
102
|
"@testing-library/jest-dom": "6.9.1",
|