@backstage-community/plugin-tekton 3.30.0 → 3.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/PipelineRunList/PipelineRunList.esm.js +21 -3
  3. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  4. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +30 -0
  5. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  6. package/dist/components/PipelineRunList/PlrStatus.esm.js +2 -1
  7. package/dist/components/PipelineRunList/PlrStatus.esm.js.map +1 -1
  8. package/dist/components/PipelineRunParamsAndResults/Output.esm.js +26 -0
  9. package/dist/components/PipelineRunParamsAndResults/Output.esm.js.map +1 -0
  10. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js +18 -0
  11. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -0
  12. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js +26 -0
  13. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -0
  14. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js +69 -0
  15. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -0
  16. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js +20 -0
  17. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -0
  18. package/dist/components/common/CamelCaseWrap.esm.js +22 -0
  19. package/dist/components/common/CamelCaseWrap.esm.js.map +1 -0
  20. package/dist/components/common/ClusterSelector.esm.js +5 -1
  21. package/dist/components/common/ClusterSelector.esm.js.map +1 -1
  22. package/dist/components/common/Status.esm.js +223 -0
  23. package/dist/components/common/Status.esm.js.map +1 -0
  24. package/dist/components/common/StatusIconAndText.esm.js +60 -0
  25. package/dist/components/common/StatusIconAndText.esm.js.map +1 -0
  26. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +1 -1
  27. package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -1
  28. package/dist/hooks/useAllWatchResources.esm.js +1 -1
  29. package/dist/hooks/useAllWatchResources.esm.js.map +1 -1
  30. package/dist/hooks/useDebounceCallback.esm.js +22 -0
  31. package/dist/hooks/useDebounceCallback.esm.js.map +1 -0
  32. package/dist/hooks/useDeepCompareMemoize.esm.js +13 -0
  33. package/dist/hooks/useDeepCompareMemoize.esm.js.map +1 -0
  34. package/dist/hooks/useResourcesClusters.esm.js +1 -1
  35. package/dist/hooks/useResourcesClusters.esm.js.map +1 -1
  36. package/dist/hooks/useTektonObjectsResponse.esm.js +2 -1
  37. package/dist/hooks/useTektonObjectsResponse.esm.js.map +1 -1
  38. package/dist/index.d.ts +10 -0
  39. package/dist/translations/ref.esm.js +18 -0
  40. package/dist/translations/ref.esm.js.map +1 -1
  41. package/package.json +3 -2
@@ -0,0 +1,223 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { StatusError, StatusWarning, StatusRunning, StatusPending, StatusOK } from '@backstage/core-components';
3
+ import { makeStyles, createStyles } from '@material-ui/core';
4
+ import OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';
5
+ import UnknownIcon from '@mui/icons-material/HelpOutline';
6
+ import AngleDoubleRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';
7
+ import BanIcon from '@mui/icons-material/NotInterestedOutlined';
8
+ import PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';
9
+ import classNames from 'classnames';
10
+ import { StatusIconAndText } from './StatusIconAndText.esm.js';
11
+
12
+ const useStyles = makeStyles(
13
+ (theme) => createStyles({
14
+ iconStyles: {
15
+ height: "0.8em",
16
+ width: "0.8em",
17
+ top: "0.125em",
18
+ position: "relative",
19
+ flexShrink: 0,
20
+ marginRight: theme.spacing(0.6)
21
+ }
22
+ })
23
+ );
24
+ const DASH = "-";
25
+ const useStatusStyles = makeStyles((theme) => ({
26
+ success: {
27
+ "& svg": {
28
+ fill: theme.palette.status.ok
29
+ }
30
+ },
31
+ running: {
32
+ "& svg": {
33
+ fill: theme.palette.status.running
34
+ }
35
+ },
36
+ pending: {
37
+ "& svg": {
38
+ fill: theme.palette.status.pending
39
+ }
40
+ },
41
+ warning: {
42
+ "& svg": {
43
+ fill: theme.palette.status.warning
44
+ }
45
+ },
46
+ error: {
47
+ "& svg": {
48
+ fill: theme.palette.status.error
49
+ }
50
+ }
51
+ }));
52
+ const StatusIcon = ({
53
+ statusKey,
54
+ className
55
+ }) => {
56
+ const statusStyles = useStatusStyles();
57
+ switch (statusKey) {
58
+ case "ok":
59
+ return /* @__PURE__ */ jsxs("g", { className: classNames(statusStyles.success, className), children: [
60
+ /* @__PURE__ */ jsx(StatusOK, {}),
61
+ " "
62
+ ] });
63
+ case "pending":
64
+ return /* @__PURE__ */ jsxs("g", { className: classNames(statusStyles.pending, className), children: [
65
+ /* @__PURE__ */ jsx(StatusPending, {}),
66
+ " "
67
+ ] });
68
+ case "running":
69
+ return /* @__PURE__ */ jsxs("g", { className: classNames(statusStyles.running, className), children: [
70
+ /* @__PURE__ */ jsx(StatusRunning, {}),
71
+ " "
72
+ ] });
73
+ case "warning":
74
+ return /* @__PURE__ */ jsxs("g", { className: classNames(statusStyles.warning, className), children: [
75
+ /* @__PURE__ */ jsx(StatusWarning, {}),
76
+ " "
77
+ ] });
78
+ case "error":
79
+ return /* @__PURE__ */ jsxs("g", { className: classNames(statusStyles.error, className), children: [
80
+ /* @__PURE__ */ jsx(StatusError, {}),
81
+ " "
82
+ ] });
83
+ default:
84
+ return null;
85
+ }
86
+ };
87
+ const Status = ({
88
+ status,
89
+ iconOnly,
90
+ className,
91
+ displayStatusText,
92
+ dataTestId,
93
+ iconStyles,
94
+ iconClassName
95
+ }) => {
96
+ const classes = useStyles();
97
+ const statusProps = {
98
+ title: displayStatusText || status || "",
99
+ iconOnly,
100
+ className,
101
+ dataTestId
102
+ };
103
+ switch (status) {
104
+ case "New":
105
+ case "Idle":
106
+ case "Pending":
107
+ case "PipelineNotStarted":
108
+ return /* @__PURE__ */ jsx(
109
+ StatusIconAndText,
110
+ {
111
+ ...statusProps,
112
+ icon: /* @__PURE__ */ jsx(StatusIcon, { statusKey: "pending", className: iconClassName })
113
+ }
114
+ );
115
+ case "In Progress":
116
+ case "Progress":
117
+ case "Progressing":
118
+ case "Installing":
119
+ case "InstallReady":
120
+ case "Replacing":
121
+ case "Running":
122
+ case "Updating":
123
+ case "Upgrading":
124
+ case "PendingInstall":
125
+ return /* @__PURE__ */ jsx(
126
+ StatusIconAndText,
127
+ {
128
+ ...statusProps,
129
+ icon: /* @__PURE__ */ jsx(StatusIcon, { statusKey: "running", className: iconClassName })
130
+ }
131
+ );
132
+ case "Cancelled":
133
+ case "Deleting":
134
+ case "Expired":
135
+ case "Not Ready":
136
+ case "Cancelling":
137
+ case "Terminating":
138
+ case "Superseded":
139
+ case "Uninstalling":
140
+ return /* @__PURE__ */ jsx(
141
+ StatusIconAndText,
142
+ {
143
+ ...statusProps,
144
+ icon: /* @__PURE__ */ jsx(BanIcon, { className: classes.iconStyles, style: iconStyles })
145
+ }
146
+ );
147
+ case "Warning":
148
+ case "RequiresApproval":
149
+ return /* @__PURE__ */ jsx(
150
+ StatusIconAndText,
151
+ {
152
+ ...statusProps,
153
+ icon: /* @__PURE__ */ jsx(StatusIcon, { statusKey: "warning", className: iconClassName })
154
+ }
155
+ );
156
+ case "ImagePullBackOff":
157
+ case "Error":
158
+ case "Failed":
159
+ case "Failure":
160
+ case "CrashLoopBackOff":
161
+ case "ErrImagePull":
162
+ return /* @__PURE__ */ jsx(
163
+ StatusIconAndText,
164
+ {
165
+ ...statusProps,
166
+ icon: /* @__PURE__ */ jsx(StatusIcon, { statusKey: "error", className: iconClassName })
167
+ }
168
+ );
169
+ case "Completed":
170
+ case "Succeeded":
171
+ case "Synced":
172
+ return /* @__PURE__ */ jsx(
173
+ StatusIconAndText,
174
+ {
175
+ ...statusProps,
176
+ icon: /* @__PURE__ */ jsx(StatusIcon, { statusKey: "ok", className: iconClassName })
177
+ }
178
+ );
179
+ case "Skipped":
180
+ return /* @__PURE__ */ jsx(
181
+ StatusIconAndText,
182
+ {
183
+ ...statusProps,
184
+ icon: /* @__PURE__ */ jsx(
185
+ AngleDoubleRightIcon,
186
+ {
187
+ className: classes.iconStyles,
188
+ style: iconStyles
189
+ }
190
+ )
191
+ }
192
+ );
193
+ case "Paused":
194
+ return /* @__PURE__ */ jsx(
195
+ StatusIconAndText,
196
+ {
197
+ ...statusProps,
198
+ icon: /* @__PURE__ */ jsx(PauseIcon, { className: classes.iconStyles, style: iconStyles })
199
+ }
200
+ );
201
+ case "Stopped":
202
+ return /* @__PURE__ */ jsx(
203
+ StatusIconAndText,
204
+ {
205
+ ...statusProps,
206
+ icon: /* @__PURE__ */ jsx(OffIcon, { className: classes.iconStyles, style: iconStyles })
207
+ }
208
+ );
209
+ case "Unknown":
210
+ return /* @__PURE__ */ jsx(
211
+ StatusIconAndText,
212
+ {
213
+ ...statusProps,
214
+ icon: /* @__PURE__ */ jsx(UnknownIcon, { className: classes.iconStyles, style: iconStyles })
215
+ }
216
+ );
217
+ default:
218
+ return /* @__PURE__ */ jsx(Fragment, { children: status || DASH });
219
+ }
220
+ };
221
+
222
+ export { Status };
223
+ //# sourceMappingURL=Status.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.esm.js","sources":["../../../src/components/common/Status.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, CSSProperties } from 'react';\nimport {\n StatusClassKey,\n StatusError,\n StatusOK,\n StatusPending,\n StatusRunning,\n StatusWarning,\n} from '@backstage/core-components';\n\nimport { createStyles, makeStyles, Theme } from '@material-ui/core';\nimport OffIcon from '@mui/icons-material/DoNotDisturbOnOutlined';\nimport UnknownIcon from '@mui/icons-material/HelpOutline';\nimport AngleDoubleRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nimport BanIcon from '@mui/icons-material/NotInterestedOutlined';\nimport PauseIcon from '@mui/icons-material/PauseCircleOutlineOutlined';\nimport cx from 'classnames';\n\nimport { StatusIconAndText } from './StatusIconAndText';\n\nconst useStyles = makeStyles<Theme>(theme =>\n createStyles({\n iconStyles: {\n height: '0.8em',\n width: '0.8em',\n top: '0.125em',\n position: 'relative',\n flexShrink: 0,\n marginRight: theme.spacing(0.6),\n },\n }),\n);\n\nconst DASH = '-';\n\nconst useStatusStyles = makeStyles(theme => ({\n success: {\n '& svg': {\n fill: theme.palette.status.ok,\n },\n },\n running: {\n '& svg': {\n fill: theme.palette.status.running,\n },\n },\n pending: {\n '& svg': {\n fill: theme.palette.status.pending,\n },\n },\n warning: {\n '& svg': {\n fill: theme.palette.status.warning,\n },\n },\n error: {\n '& svg': {\n fill: theme.palette.status.error,\n },\n },\n}));\n\nconst StatusIcon = ({\n statusKey,\n className,\n}: {\n statusKey: StatusClassKey;\n className?: string;\n}) => {\n const statusStyles = useStatusStyles();\n\n switch (statusKey) {\n case 'ok':\n return (\n <g className={cx(statusStyles.success, className)}>\n <StatusOK />{' '}\n </g>\n );\n case 'pending':\n return (\n <g className={cx(statusStyles.pending, className)}>\n <StatusPending />{' '}\n </g>\n );\n case 'running':\n return (\n <g className={cx(statusStyles.running, className)}>\n <StatusRunning />{' '}\n </g>\n );\n case 'warning':\n return (\n <g className={cx(statusStyles.warning, className)}>\n <StatusWarning />{' '}\n </g>\n );\n case 'error':\n return (\n <g className={cx(statusStyles.error, className)}>\n <StatusError />{' '}\n </g>\n );\n default:\n return null;\n }\n};\n\n/**\n * Component for displaying a status message\n * @param {string} status - type of status to be displayed\n * @param {boolean} [iconOnly] - (optional) if true, only displays icon\n * @param {string} [className] - (optional) additional class name for the component\n * @param {string} [displayStatusText] - (optional) use a different text to display the status\n\n * @example\n * ```tsx\n * <Status status='Warning' />\n * ```\n */\nexport const Status = ({\n status,\n iconOnly,\n className,\n displayStatusText,\n dataTestId,\n iconStyles,\n iconClassName,\n}: {\n status: string | null;\n displayStatusText?: string;\n iconOnly?: boolean;\n className?: string;\n dataTestId?: string;\n iconStyles?: CSSProperties;\n iconClassName?: string;\n}): ReactElement => {\n const classes = useStyles();\n const statusProps = {\n title: displayStatusText || status || '',\n iconOnly,\n className,\n dataTestId,\n };\n\n switch (status) {\n case 'New':\n case 'Idle':\n case 'Pending':\n case 'PipelineNotStarted':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"pending\" className={iconClassName} />}\n />\n );\n\n case 'In Progress':\n case 'Progress':\n case 'Progressing':\n case 'Installing':\n case 'InstallReady':\n case 'Replacing':\n case 'Running':\n case 'Updating':\n case 'Upgrading':\n case 'PendingInstall':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"running\" className={iconClassName} />}\n />\n );\n\n case 'Cancelled':\n case 'Deleting':\n case 'Expired':\n case 'Not Ready':\n case 'Cancelling':\n case 'Terminating':\n case 'Superseded':\n case 'Uninstalling':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<BanIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n\n case 'Warning':\n case 'RequiresApproval':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"warning\" className={iconClassName} />}\n />\n );\n\n case 'ImagePullBackOff':\n case 'Error':\n case 'Failed':\n case 'Failure':\n case 'CrashLoopBackOff':\n case 'ErrImagePull':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"error\" className={iconClassName} />}\n />\n );\n\n case 'Completed':\n case 'Succeeded':\n case 'Synced':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<StatusIcon statusKey=\"ok\" className={iconClassName} />}\n />\n );\n\n case 'Skipped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={\n <AngleDoubleRightIcon\n className={classes.iconStyles}\n style={iconStyles}\n />\n }\n />\n );\n case 'Paused':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<PauseIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n case 'Stopped':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={<OffIcon className={classes.iconStyles} style={iconStyles} />}\n />\n );\n\n case 'Unknown':\n return (\n <StatusIconAndText\n {...statusProps}\n icon={\n <UnknownIcon className={classes.iconStyles} style={iconStyles} />\n }\n />\n );\n\n default:\n return <>{status || DASH}</>;\n }\n};\n"],"names":["cx"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { cloneElement } from 'react';
3
+ import { makeStyles } from '@material-ui/core/styles';
4
+ import { Typography } from '@material-ui/core';
5
+ import classNames from 'classnames';
6
+ import { CamelCaseWrap } from './CamelCaseWrap.esm.js';
7
+
8
+ const DASH = "-";
9
+ const useStyles = makeStyles({
10
+ iconAndText: {
11
+ display: "flex",
12
+ fontWeight: 400,
13
+ fontSize: "14px"
14
+ },
15
+ flexChild: {
16
+ flex: " 0 0 auto",
17
+ position: "relative",
18
+ top: "0.125em"
19
+ }
20
+ });
21
+ const StatusIconAndText = ({
22
+ icon,
23
+ title,
24
+ spin,
25
+ iconOnly,
26
+ className,
27
+ dataTestId
28
+ }) => {
29
+ const styles = useStyles();
30
+ if (!title) {
31
+ return /* @__PURE__ */ jsx(Fragment, { children: DASH });
32
+ }
33
+ if (iconOnly) {
34
+ return /* @__PURE__ */ jsx(Fragment, { children: cloneElement(icon, {
35
+ "data-testid": dataTestId ?? `icon-only-${title}`,
36
+ className: icon.props.className
37
+ }) });
38
+ }
39
+ return /* @__PURE__ */ jsxs(
40
+ Typography,
41
+ {
42
+ className: classNames(styles.iconAndText, className),
43
+ "data-testid": dataTestId ?? `icon-with-title-${title}`,
44
+ title,
45
+ children: [
46
+ cloneElement(icon, {
47
+ className: classNames(
48
+ spin && "fa-spin",
49
+ icon.props.className,
50
+ styles.flexChild
51
+ )
52
+ }),
53
+ /* @__PURE__ */ jsx(CamelCaseWrap, { value: title, dataTest: "status-text" })
54
+ ]
55
+ }
56
+ );
57
+ };
58
+
59
+ export { StatusIconAndText, StatusIconAndText as default };
60
+ //# sourceMappingURL=StatusIconAndText.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIconAndText.esm.js","sources":["../../../src/components/common/StatusIconAndText.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, cloneElement } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Typography } from '@material-ui/core';\nimport classNames from 'classnames';\n\nimport CamelCaseWrap from './CamelCaseWrap';\n\nconst DASH = '-';\n\nconst useStyles = makeStyles({\n iconAndText: {\n display: 'flex',\n fontWeight: 400,\n fontSize: '14px',\n },\n\n flexChild: {\n flex: ' 0 0 auto',\n position: 'relative',\n top: '0.125em',\n },\n});\n\nexport const StatusIconAndText = ({\n icon,\n title,\n spin,\n iconOnly,\n className,\n dataTestId,\n}: {\n title: string;\n iconOnly?: boolean;\n className?: string;\n icon: ReactElement;\n spin?: boolean;\n dataTestId?: string;\n}): ReactElement => {\n const styles = useStyles();\n if (!title) {\n return <>{DASH}</>;\n }\n\n if (iconOnly) {\n return (\n <>\n {cloneElement(icon, {\n 'data-testid': dataTestId ?? `icon-only-${title}`,\n className: icon.props.className,\n })}\n </>\n );\n }\n\n return (\n <Typography\n className={classNames(styles.iconAndText, className)}\n data-testid={dataTestId ?? `icon-with-title-${title}`}\n title={title}\n >\n {cloneElement(icon, {\n className: classNames(\n spin && 'fa-spin',\n icon.props.className,\n styles.flexChild,\n ),\n })}\n <CamelCaseWrap value={title} dataTest=\"status-text\" />\n </Typography>\n );\n};\n\nexport default StatusIconAndText;\n"],"names":[],"mappings":";;;;;;;AAwBA,MAAM,IAAA,GAAO,GAAA;AAEb,MAAM,YAAY,UAAA,CAAW;AAAA,EAC3B,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK;AAAA;AAET,CAAC,CAAA;AAEM,MAAM,oBAAoB,CAAC;AAAA,EAChC,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAOoB;AAClB,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,uCAAU,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EACjB;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACG,uBAAa,IAAA,EAAM;AAAA,MAClB,aAAA,EAAe,UAAA,IAAc,CAAA,UAAA,EAAa,KAAK,CAAA,CAAA;AAAA,MAC/C,SAAA,EAAW,KAAK,KAAA,CAAM;AAAA,KACvB,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,UAAA,CAAW,MAAA,CAAO,WAAA,EAAa,SAAS,CAAA;AAAA,MACnD,aAAA,EAAa,UAAA,IAAc,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAA;AAAA,MACnD,KAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,IAAA,EAAM;AAAA,UAClB,SAAA,EAAW,UAAA;AAAA,YACT,IAAA,IAAQ,SAAA;AAAA,YACR,KAAK,KAAA,CAAM,SAAA;AAAA,YACX,MAAA,CAAO;AAAA;AACT,SACD,CAAA;AAAA,wBACD,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAO,KAAA,EAAO,UAAS,aAAA,EAAc;AAAA;AAAA;AAAA,GACtD;AAEJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import classNames from 'classnames';
3
- import { Status } from '@janus-idp/shared-react';
3
+ import { Status } from '../common/Status.esm.js';
4
4
  import './PipelineVisualizationStepList.css.esm.js';
5
5
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
6
6
  import '../../translations/index.esm.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineVisualizationStepList.esm.js","sources":["../../../src/components/pipeline-topology/PipelineVisualizationStepList.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 { RunStatus } from '@patternfly/react-topology';\nimport classNames from 'classnames';\n\nimport { Status } from '@janus-idp/shared-react';\n\nimport { StepStatus } from '../../types/taskRun';\n\nimport './PipelineVisualizationStepList.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nexport type PipelineVisualizationStepListProps = {\n isSpecOverview: boolean;\n taskName: string;\n steps: StepStatus[];\n isFinallyTask?: boolean;\n hideHeader?: boolean;\n};\n\ntype TooltipColoredStatusIconProps = {\n status: RunStatus;\n};\n\nconst TooltipColoredStatusIcon = ({\n status,\n}: TooltipColoredStatusIconProps) => {\n const icon = <Status status={status} iconOnly />;\n return icon;\n};\n\nexport const PipelineVisualizationStepList = ({\n isSpecOverview,\n taskName,\n steps,\n isFinallyTask,\n hideHeader,\n}: PipelineVisualizationStepListProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n return (\n <div className=\"bs-tkn-pipeline-visualization-step-list\">\n {!hideHeader && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__task-name\">\n {taskName}\n </div>\n )}\n {isFinallyTask && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__task-type\">\n {t('pipelineVisualization.stepList.finallyTaskTitle')}\n </div>\n )}\n {steps?.map(({ duration, name, status }) => {\n return (\n <div\n className={classNames(\n 'bs-tkn-pipeline-visualization-step-list__step',\n {\n 'bs-tkn-pipeline-visualization-step-list__step--task-run':\n !isSpecOverview,\n },\n )}\n key={name}\n >\n {!isSpecOverview ? (\n <div className=\"bs-tkn-pipeline-visualization-step-list__icon\">\n <TooltipColoredStatusIcon status={status} />\n </div>\n ) : (\n <span className=\"bs-tkn-pipeline-visualization-step-list__bullet\">\n &bull;\n </span>\n )}\n <div className=\"bs-tkn-pipeline-visualization-step-list__name\">\n {name}\n </div>\n {!isSpecOverview && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__duration\">\n {duration}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAsCA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AACF,CAAA,KAAqC;AACnC,EAAA,MAAM,IAAA,mBAAO,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,UAAQ,IAAA,EAAC,CAAA;AAC9C,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,gCAAgC,CAAC;AAAA,EAC5C,cAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAA0C;AACxC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,IAAA,CAAC,UAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDACZ,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,IAED,iCACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oDAAA,EACZ,QAAA,EAAA,CAAA,CAAE,iDAAiD,CAAA,EACtD,CAAA;AAAA,IAED,OAAO,GAAA,CAAI,CAAC,EAAE,QAAA,EAAU,IAAA,EAAM,QAAO,KAAM;AAC1C,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,UAAA;AAAA,YACT,+CAAA;AAAA,YACA;AAAA,cACE,2DACE,CAAC;AAAA;AACL,WACF;AAAA,UAGC,QAAA,EAAA;AAAA,YAAA,CAAC,cAAA,mBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDACb,QAAA,kBAAA,GAAA,CAAC,wBAAA,EAAA,EAAyB,MAAA,EAAgB,CAAA,EAC5C,CAAA,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAkD,QAAA,EAAA,QAAA,EAElE,CAAA;AAAA,4BAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACZ,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,YACC,CAAC,cAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDACZ,QAAA,EAAA,QAAA,EACH;AAAA;AAAA,SAAA;AAAA,QAjBG;AAAA,OAmBP;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PipelineVisualizationStepList.esm.js","sources":["../../../src/components/pipeline-topology/PipelineVisualizationStepList.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 { RunStatus } from '@patternfly/react-topology';\nimport classNames from 'classnames';\n\nimport { Status } from '../common/Status';\nimport { StepStatus } from '../../types/taskRun';\n\nimport './PipelineVisualizationStepList.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../../translations/index.ts';\n\nexport type PipelineVisualizationStepListProps = {\n isSpecOverview: boolean;\n taskName: string;\n steps: StepStatus[];\n isFinallyTask?: boolean;\n hideHeader?: boolean;\n};\n\ntype TooltipColoredStatusIconProps = {\n status: RunStatus;\n};\n\nconst TooltipColoredStatusIcon = ({\n status,\n}: TooltipColoredStatusIconProps) => {\n const icon = <Status status={status} iconOnly />;\n return icon;\n};\n\nexport const PipelineVisualizationStepList = ({\n isSpecOverview,\n taskName,\n steps,\n isFinallyTask,\n hideHeader,\n}: PipelineVisualizationStepListProps) => {\n const { t } = useTranslationRef(tektonTranslationRef);\n return (\n <div className=\"bs-tkn-pipeline-visualization-step-list\">\n {!hideHeader && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__task-name\">\n {taskName}\n </div>\n )}\n {isFinallyTask && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__task-type\">\n {t('pipelineVisualization.stepList.finallyTaskTitle')}\n </div>\n )}\n {steps?.map(({ duration, name, status }) => {\n return (\n <div\n className={classNames(\n 'bs-tkn-pipeline-visualization-step-list__step',\n {\n 'bs-tkn-pipeline-visualization-step-list__step--task-run':\n !isSpecOverview,\n },\n )}\n key={name}\n >\n {!isSpecOverview ? (\n <div className=\"bs-tkn-pipeline-visualization-step-list__icon\">\n <TooltipColoredStatusIcon status={status} />\n </div>\n ) : (\n <span className=\"bs-tkn-pipeline-visualization-step-list__bullet\">\n &bull;\n </span>\n )}\n <div className=\"bs-tkn-pipeline-visualization-step-list__name\">\n {name}\n </div>\n {!isSpecOverview && (\n <div className=\"bs-tkn-pipeline-visualization-step-list__duration\">\n {duration}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAqCA,MAAM,2BAA2B,CAAC;AAAA,EAChC;AACF,CAAA,KAAqC;AACnC,EAAA,MAAM,IAAA,mBAAO,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,UAAQ,IAAA,EAAC,CAAA;AAC9C,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,MAAM,gCAAgC,CAAC;AAAA,EAC5C,cAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAA0C;AACxC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,oBAAoB,CAAA;AACpD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,IAAA,CAAC,UAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDACZ,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,IAED,iCACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oDAAA,EACZ,QAAA,EAAA,CAAA,CAAE,iDAAiD,CAAA,EACtD,CAAA;AAAA,IAED,OAAO,GAAA,CAAI,CAAC,EAAE,QAAA,EAAU,IAAA,EAAM,QAAO,KAAM;AAC1C,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,UAAA;AAAA,YACT,+CAAA;AAAA,YACA;AAAA,cACE,2DACE,CAAC;AAAA;AACL,WACF;AAAA,UAGC,QAAA,EAAA;AAAA,YAAA,CAAC,cAAA,mBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDACb,QAAA,kBAAA,GAAA,CAAC,wBAAA,EAAA,EAAyB,MAAA,EAAgB,CAAA,EAC5C,CAAA,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAkD,QAAA,EAAA,QAAA,EAElE,CAAA;AAAA,4BAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EACZ,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,YACC,CAAC,cAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDACZ,QAAA,EAAA,QAAA,EACH;AAAA;AAAA,SAAA;AAAA,QAjBG;AAAA,OAmBP;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { useState, useEffect, useMemo } from 'react';
2
- import { useDeepCompareMemoize } from '@janus-idp/shared-react';
2
+ import { useDeepCompareMemoize } from './useDeepCompareMemoize.esm.js';
3
3
  import { getTektonResources } from '../utils/tekton-utils.esm.js';
4
4
 
5
5
  const useAllWatchResources = (k8sObjectsResponse, cluster, watchedResource = []) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useAllWatchResources.esm.js","sources":["../../src/hooks/useAllWatchResources.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { KubernetesObjects } from '@backstage/plugin-kubernetes-react';\n\nimport { useDeepCompareMemoize } from '@janus-idp/shared-react';\n\nimport { TektonResponseData } from '../types/types';\nimport { getTektonResources } from '../utils/tekton-utils';\n\nexport const useAllWatchResources = (\n k8sObjectsResponse: KubernetesObjects,\n cluster: number,\n watchedResource: string[] = [],\n): TektonResponseData => {\n const { kubernetesObjects, loading, error } = k8sObjectsResponse;\n const [resources, setResources] = useState<TektonResponseData>({});\n\n useEffect(() => {\n let isMounted = true;\n if (isMounted && !loading && kubernetesObjects && !error) {\n const tektonResources: TektonResponseData = getTektonResources(\n cluster,\n kubernetesObjects,\n );\n if (tektonResources) {\n setResources(tektonResources);\n }\n }\n return () => {\n isMounted = false;\n };\n }, [loading, kubernetesObjects, error, cluster]);\n\n const watchResourcesData = useMemo(() => {\n return watchedResource.reduce((acc: TektonResponseData, resKind) => {\n if (resources[resKind]) {\n acc[resKind] = resources[resKind];\n }\n return acc;\n }, {});\n }, [watchedResource, resources]);\n\n return useDeepCompareMemoize(watchResourcesData);\n};\n"],"names":[],"mappings":";;;;AAwBO,MAAM,uBAAuB,CAClC,kBAAA,EACA,OAAA,EACA,eAAA,GAA4B,EAAC,KACN;AACvB,EAAA,MAAM,EAAE,iBAAA,EAAmB,OAAA,EAAS,KAAA,EAAM,GAAI,kBAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAA6B,EAAE,CAAA;AAEjE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,IAAW,iBAAA,IAAqB,CAAC,KAAA,EAAO;AACxD,MAAA,MAAM,eAAA,GAAsC,kBAAA;AAAA,QAC1C,OAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,YAAA,CAAa,eAAe,CAAA;AAAA,MAC9B;AAAA,IACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,GAAG,CAAC,OAAA,EAAS,iBAAA,EAAmB,KAAA,EAAO,OAAO,CAAC,CAAA;AAE/C,EAAA,MAAM,kBAAA,GAAqB,QAAQ,MAAM;AACvC,IAAA,OAAO,eAAA,CAAgB,MAAA,CAAO,CAAC,GAAA,EAAyB,OAAA,KAAY;AAClE,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,GAAA,CAAI,OAAO,CAAA,GAAI,SAAA,CAAU,OAAO,CAAA;AAAA,MAClC;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA,EAAG,CAAC,eAAA,EAAiB,SAAS,CAAC,CAAA;AAE/B,EAAA,OAAO,sBAAsB,kBAAkB,CAAA;AACjD;;;;"}
1
+ {"version":3,"file":"useAllWatchResources.esm.js","sources":["../../src/hooks/useAllWatchResources.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { KubernetesObjects } from '@backstage/plugin-kubernetes-react';\n\nimport { useDeepCompareMemoize } from './useDeepCompareMemoize';\nimport { TektonResponseData } from '../types/types';\nimport { getTektonResources } from '../utils/tekton-utils';\n\nexport const useAllWatchResources = (\n k8sObjectsResponse: KubernetesObjects,\n cluster: number,\n watchedResource: string[] = [],\n): TektonResponseData => {\n const { kubernetesObjects, loading, error } = k8sObjectsResponse;\n const [resources, setResources] = useState<TektonResponseData>({});\n\n useEffect(() => {\n let isMounted = true;\n if (isMounted && !loading && kubernetesObjects && !error) {\n const tektonResources: TektonResponseData = getTektonResources(\n cluster,\n kubernetesObjects,\n );\n if (tektonResources) {\n setResources(tektonResources);\n }\n }\n return () => {\n isMounted = false;\n };\n }, [loading, kubernetesObjects, error, cluster]);\n\n const watchResourcesData = useMemo(() => {\n return watchedResource.reduce((acc: TektonResponseData, resKind) => {\n if (resources[resKind]) {\n acc[resKind] = resources[resKind];\n }\n return acc;\n }, {});\n }, [watchedResource, resources]);\n\n return useDeepCompareMemoize(watchResourcesData);\n};\n"],"names":[],"mappings":";;;;AAuBO,MAAM,uBAAuB,CAClC,kBAAA,EACA,OAAA,EACA,eAAA,GAA4B,EAAC,KACN;AACvB,EAAA,MAAM,EAAE,iBAAA,EAAmB,OAAA,EAAS,KAAA,EAAM,GAAI,kBAAA;AAC9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAA6B,EAAE,CAAA;AAEjE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,IAAW,iBAAA,IAAqB,CAAC,KAAA,EAAO;AACxD,MAAA,MAAM,eAAA,GAAsC,kBAAA;AAAA,QAC1C,OAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,YAAA,CAAa,eAAe,CAAA;AAAA,MAC9B;AAAA,IACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,GAAG,CAAC,OAAA,EAAS,iBAAA,EAAmB,KAAA,EAAO,OAAO,CAAC,CAAA;AAE/C,EAAA,MAAM,kBAAA,GAAqB,QAAQ,MAAM;AACvC,IAAA,OAAO,eAAA,CAAgB,MAAA,CAAO,CAAC,GAAA,EAAyB,OAAA,KAAY;AAClE,MAAA,IAAI,SAAA,CAAU,OAAO,CAAA,EAAG;AACtB,QAAA,GAAA,CAAI,OAAO,CAAA,GAAI,SAAA,CAAU,OAAO,CAAA;AAAA,MAClC;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA,EAAG,CAAC,eAAA,EAAiB,SAAS,CAAC,CAAA;AAE/B,EAAA,OAAO,sBAAsB,kBAAkB,CAAA;AACjD;;;;"}
@@ -0,0 +1,22 @@
1
+ import { useRef, useMemo } from 'react';
2
+ import { debounce } from 'lodash';
3
+ import { useDeepCompareMemoize } from './useDeepCompareMemoize.esm.js';
4
+
5
+ const useDebounceCallback = (callback, timeout = 500, debounceParams = {
6
+ leading: false,
7
+ trailing: true
8
+ }) => {
9
+ const memDebounceParams = useDeepCompareMemoize(debounceParams);
10
+ const callbackRef = useRef();
11
+ callbackRef.current = callback;
12
+ return useMemo(() => {
13
+ return debounce(
14
+ (...args) => callbackRef.current?.(...args),
15
+ timeout,
16
+ memDebounceParams
17
+ );
18
+ }, [memDebounceParams, timeout]);
19
+ };
20
+
21
+ export { useDebounceCallback };
22
+ //# sourceMappingURL=useDebounceCallback.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounceCallback.esm.js","sources":["../../src/hooks/useDebounceCallback.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRef, useMemo } from 'react';\n\nimport { debounce } from 'lodash';\n\nimport { useDeepCompareMemoize } from './useDeepCompareMemoize';\n\ninterface Cancelable {\n cancel(): void;\n flush(): void;\n}\n\nexport const useDebounceCallback = <T extends (...args: any[]) => any>(\n callback: T,\n timeout: number = 500,\n debounceParams: {\n leading?: boolean;\n trailing?: boolean;\n maxWait?: number;\n } = {\n leading: false,\n trailing: true,\n },\n): ((...args: any) => any) & Cancelable => {\n const memDebounceParams = useDeepCompareMemoize(debounceParams);\n const callbackRef = useRef<T>();\n callbackRef.current = callback;\n\n return useMemo(() => {\n return debounce(\n (...args) => callbackRef.current?.(...args),\n timeout,\n memDebounceParams,\n );\n }, [memDebounceParams, timeout]);\n};\n"],"names":[],"mappings":";;;;AA2BO,MAAM,mBAAA,GAAsB,CACjC,QAAA,EACA,OAAA,GAAkB,KAClB,cAAA,GAII;AAAA,EACF,OAAA,EAAS,KAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA,KACyC;AACzC,EAAA,MAAM,iBAAA,GAAoB,sBAAsB,cAAc,CAAA;AAC9D,EAAA,MAAM,cAAc,MAAA,EAAU;AAC9B,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,OAAO,QAAA;AAAA,MACL,CAAA,GAAI,IAAA,KAAS,WAAA,CAAY,OAAA,GAAU,GAAG,IAAI,CAAA;AAAA,MAC1C,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,iBAAA,EAAmB,OAAO,CAAC,CAAA;AACjC;;;;"}
@@ -0,0 +1,13 @@
1
+ import { useRef } from 'react';
2
+ import { isEqual } from 'lodash';
3
+
4
+ const useDeepCompareMemoize = (value, stringify) => {
5
+ const ref = useRef();
6
+ if (!isEqual(value, ref.current)) {
7
+ ref.current = value;
8
+ }
9
+ return ref.current;
10
+ };
11
+
12
+ export { useDeepCompareMemoize };
13
+ //# sourceMappingURL=useDeepCompareMemoize.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDeepCompareMemoize.esm.js","sources":["../../src/hooks/useDeepCompareMemoize.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useRef } from 'react';\n\nimport { isEqual } from 'lodash';\n\nexport const useDeepCompareMemoize = <T = any>(\n value: T,\n stringify?: boolean,\n): T => {\n const ref = useRef<T>();\n\n if (\n stringify\n ? JSON.stringify(value) !== JSON.stringify(ref.current)\n : !isEqual(value, ref.current)\n ) {\n ref.current = value;\n }\n\n return ref.current as T;\n};\n"],"names":[],"mappings":";;;AAoBO,MAAM,qBAAA,GAAwB,CACnC,KAAA,EACA,SAAA,KACM;AACN,EAAA,MAAM,MAAM,MAAA,EAAU;AAEtB,EAAA,IAGM,CAAC,OAAA,CAAQ,KAAA,EAAO,GAAA,CAAI,OAAO,CAAA,EAC/B;AACA,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AAAA,EAChB;AAEA,EAAA,OAAO,GAAA,CAAI,OAAA;AACb;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { useState, useEffect } from 'react';
2
- import { useDeepCompareMemoize } from '@janus-idp/shared-react';
2
+ import { useDeepCompareMemoize } from './useDeepCompareMemoize.esm.js';
3
3
  import { getClusters } from '../utils/tekton-utils.esm.js';
4
4
 
5
5
  const useResourcesClusters = (k8sObjectsResponse) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useResourcesClusters.esm.js","sources":["../../src/hooks/useResourcesClusters.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useState } from 'react';\n\nimport { KubernetesObjects } from '@backstage/plugin-kubernetes-react';\n\nimport { useDeepCompareMemoize } from '@janus-idp/shared-react';\n\nimport { ClusterErrors } from '../types/types';\nimport { getClusters } from '../utils/tekton-utils';\n\nexport const useResourcesClusters = (k8sObjectsResponse: KubernetesObjects) => {\n const { kubernetesObjects, loading, error } = k8sObjectsResponse;\n const [clusters, setClusters] = useState<{\n clusters: string[];\n errors: ClusterErrors[];\n }>({ clusters: [], errors: [] });\n\n useEffect(() => {\n let isMounted = true;\n if (isMounted && !loading && kubernetesObjects && !error) {\n const k8sResourcesClusters = getClusters(kubernetesObjects);\n if (k8sResourcesClusters) {\n setClusters(k8sResourcesClusters);\n }\n }\n return () => {\n isMounted = false;\n };\n }, [loading, kubernetesObjects, error]);\n\n return useDeepCompareMemoize(clusters);\n};\n"],"names":[],"mappings":";;;;AAwBO,MAAM,oBAAA,GAAuB,CAAC,kBAAA,KAA0C;AAC7E,EAAA,MAAM,EAAE,iBAAA,EAAmB,OAAA,EAAS,KAAA,EAAM,GAAI,kBAAA;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAG7B,EAAE,QAAA,EAAU,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAG,CAAA;AAE/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,IAAW,iBAAA,IAAqB,CAAC,KAAA,EAAO;AACxD,MAAA,MAAM,oBAAA,GAAuB,YAAY,iBAAiB,CAAA;AAC1D,MAAA,IAAI,oBAAA,EAAsB;AACxB,QAAA,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAClC;AAAA,IACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAA,EAAmB,KAAK,CAAC,CAAA;AAEtC,EAAA,OAAO,sBAAsB,QAAQ,CAAA;AACvC;;;;"}
1
+ {"version":3,"file":"useResourcesClusters.esm.js","sources":["../../src/hooks/useResourcesClusters.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useEffect, useState } from 'react';\n\nimport { KubernetesObjects } from '@backstage/plugin-kubernetes-react';\n\nimport { useDeepCompareMemoize } from './useDeepCompareMemoize';\nimport { ClusterErrors } from '../types/types';\nimport { getClusters } from '../utils/tekton-utils';\n\nexport const useResourcesClusters = (k8sObjectsResponse: KubernetesObjects) => {\n const { kubernetesObjects, loading, error } = k8sObjectsResponse;\n const [clusters, setClusters] = useState<{\n clusters: string[];\n errors: ClusterErrors[];\n }>({ clusters: [], errors: [] });\n\n useEffect(() => {\n let isMounted = true;\n if (isMounted && !loading && kubernetesObjects && !error) {\n const k8sResourcesClusters = getClusters(kubernetesObjects);\n if (k8sResourcesClusters) {\n setClusters(k8sResourcesClusters);\n }\n }\n return () => {\n isMounted = false;\n };\n }, [loading, kubernetesObjects, error]);\n\n return useDeepCompareMemoize(clusters);\n};\n"],"names":[],"mappings":";;;;AAuBO,MAAM,oBAAA,GAAuB,CAAC,kBAAA,KAA0C;AAC7E,EAAA,MAAM,EAAE,iBAAA,EAAmB,OAAA,EAAS,KAAA,EAAM,GAAI,kBAAA;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAG7B,EAAE,QAAA,EAAU,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAG,CAAA;AAE/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,IAAI,SAAA,IAAa,CAAC,OAAA,IAAW,iBAAA,IAAqB,CAAC,KAAA,EAAO;AACxD,MAAA,MAAM,oBAAA,GAAuB,YAAY,iBAAiB,CAAA;AAC1D,MAAA,IAAI,oBAAA,EAAsB;AACxB,QAAA,WAAA,CAAY,oBAAoB,CAAA;AAAA,MAClC;AAAA,IACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAA,EAAmB,KAAK,CAAC,CAAA;AAEtC,EAAA,OAAO,sBAAsB,QAAQ,CAAA;AACvC;;;;"}
@@ -1,10 +1,11 @@
1
1
  import { useState, useRef, useEffect, useCallback } from 'react';
2
2
  import { useEntity } from '@backstage/plugin-catalog-react';
3
3
  import { isEqual } from 'lodash';
4
- import { useDebounceCallback, useDeepCompareMemoize } from '@janus-idp/shared-react';
5
4
  import { useKubernetesObjects } from '@backstage/plugin-kubernetes-react';
6
5
  import { useAllWatchResources } from './useAllWatchResources.esm.js';
7
6
  import { useResourcesClusters } from './useResourcesClusters.esm.js';
7
+ import { useDebounceCallback } from './useDebounceCallback.esm.js';
8
+ import { useDeepCompareMemoize } from './useDeepCompareMemoize.esm.js';
8
9
 
9
10
  const useTektonObjectsResponse = (watchedResource) => {
10
11
  const { entity } = useEntity();
@@ -1 +1 @@
1
- {"version":3,"file":"useTektonObjectsResponse.esm.js","sources":["../../src/hooks/useTektonObjectsResponse.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useState, useRef, useEffect, useCallback } from 'react';\n\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport { isEqual } from 'lodash';\n\nimport {\n ComputedStatus,\n useDebounceCallback,\n useDeepCompareMemoize,\n} from '@janus-idp/shared-react';\n\nimport { useKubernetesObjects } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContextData, TektonResponseData } from '../types/types';\nimport { useAllWatchResources } from './useAllWatchResources';\nimport { useResourcesClusters } from './useResourcesClusters';\n\nexport const useTektonObjectsResponse = (\n watchedResource: string[],\n): TektonResourcesContextData => {\n const { entity } = useEntity();\n const { kubernetesObjects, loading, error } = useKubernetesObjects(entity);\n const [selectedCluster, setSelectedCluster] = useState<number>(0);\n const [selectedStatus, setSelectedStatus] = useState<ComputedStatus>(\n 'All' as ComputedStatus,\n );\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const [loaded, setLoaded] = useState<boolean>(false);\n const [errorState, setErrorState] = useState<string>();\n const [pipelinesData, setPipelinesData] = useState<\n TektonResponseData | undefined\n >();\n\n const mounted = useRef(false);\n\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n\n const watchResourcesData = useAllWatchResources(\n { kubernetesObjects, loading, error },\n selectedCluster,\n watchedResource,\n );\n\n const resourcesClusters = useResourcesClusters({\n kubernetesObjects,\n loading,\n error,\n });\n\n const updateResults = useCallback(\n (\n resData: TektonResponseData,\n isLoading: boolean,\n errorData: string | undefined,\n ) => {\n if (!isLoading && !errorData && mounted.current) {\n setLoaded(true);\n setPipelinesData(prevPipelinesData => {\n if (isEqual(prevPipelinesData, resData)) {\n return prevPipelinesData;\n }\n return resData;\n });\n } else if (errorData && mounted.current) {\n setLoaded(true);\n setErrorState(errorData);\n }\n },\n [setLoaded, setPipelinesData, setErrorState],\n );\n\n const debouncedUpdateResources = useDebounceCallback(updateResults, 250);\n\n useEffect(() => {\n debouncedUpdateResources?.(watchResourcesData, loading, error);\n }, [debouncedUpdateResources, watchResourcesData, loading, error]);\n\n return useDeepCompareMemoize({\n watchResourcesData: pipelinesData,\n loaded,\n responseError: errorState,\n selectedClusterErrors: resourcesClusters?.errors?.[selectedCluster] ?? [],\n clusters: resourcesClusters?.clusters || [],\n selectedCluster,\n setSelectedCluster,\n selectedStatus,\n setSelectedStatus,\n isExpanded,\n setIsExpanded,\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTektonObjectsResponse.esm.js","sources":["../../src/hooks/useTektonObjectsResponse.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useState, useRef, useEffect, useCallback } from 'react';\n\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport { isEqual } from 'lodash';\n\nimport { ComputedStatus } from '@janus-idp/shared-react';\n\nimport { useKubernetesObjects } from '@backstage/plugin-kubernetes-react';\nimport { TektonResourcesContextData, TektonResponseData } from '../types/types';\nimport { useAllWatchResources } from './useAllWatchResources';\nimport { useResourcesClusters } from './useResourcesClusters';\nimport { useDebounceCallback } from './useDebounceCallback';\nimport { useDeepCompareMemoize } from './useDeepCompareMemoize';\n\nexport const useTektonObjectsResponse = (\n watchedResource: string[],\n): TektonResourcesContextData => {\n const { entity } = useEntity();\n const { kubernetesObjects, loading, error } = useKubernetesObjects(entity);\n const [selectedCluster, setSelectedCluster] = useState<number>(0);\n const [selectedStatus, setSelectedStatus] = useState<ComputedStatus>(\n 'All' as ComputedStatus,\n );\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const [loaded, setLoaded] = useState<boolean>(false);\n const [errorState, setErrorState] = useState<string>();\n const [pipelinesData, setPipelinesData] = useState<\n TektonResponseData | undefined\n >();\n\n const mounted = useRef(false);\n\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n\n const watchResourcesData = useAllWatchResources(\n { kubernetesObjects, loading, error },\n selectedCluster,\n watchedResource,\n );\n\n const resourcesClusters = useResourcesClusters({\n kubernetesObjects,\n loading,\n error,\n });\n\n const updateResults = useCallback(\n (\n resData: TektonResponseData,\n isLoading: boolean,\n errorData: string | undefined,\n ) => {\n if (!isLoading && !errorData && mounted.current) {\n setLoaded(true);\n setPipelinesData(prevPipelinesData => {\n if (isEqual(prevPipelinesData, resData)) {\n return prevPipelinesData;\n }\n return resData;\n });\n } else if (errorData && mounted.current) {\n setLoaded(true);\n setErrorState(errorData);\n }\n },\n [setLoaded, setPipelinesData, setErrorState],\n );\n\n const debouncedUpdateResources = useDebounceCallback(updateResults, 250);\n\n useEffect(() => {\n debouncedUpdateResources?.(watchResourcesData, loading, error);\n }, [debouncedUpdateResources, watchResourcesData, loading, error]);\n\n return useDeepCompareMemoize({\n watchResourcesData: pipelinesData,\n loaded,\n responseError: errorState,\n selectedClusterErrors: resourcesClusters?.errors?.[selectedCluster] ?? [],\n clusters: resourcesClusters?.clusters || [],\n selectedCluster,\n setSelectedCluster,\n selectedStatus,\n setSelectedStatus,\n isExpanded,\n setIsExpanded,\n });\n};\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -39,6 +39,7 @@ declare const tektonTranslationRef: _backstage_core_plugin_api_alpha.Translation
39
39
  readonly "permissionAlert.title": "Permission required";
40
40
  readonly "permissionAlert.description": "To view Tekton Pipeline Runs, contact your administrator to give you the following permission(s): {{permissions}}.";
41
41
  readonly "statusSelector.label": "Status";
42
+ readonly "clusterSelector.label": "Cluster";
42
43
  readonly "tableExpandCollapse.collapseAll": "Collapse all";
43
44
  readonly "tableExpandCollapse.expandAll": "Expand all";
44
45
  readonly "pipelineVisualization.noTasksDescription": "This Pipeline Run has no tasks to visualize";
@@ -47,6 +48,7 @@ declare const tektonTranslationRef: _backstage_core_plugin_api_alpha.Translation
47
48
  readonly "pipelineRunList.title": "Pipeline Runs";
48
49
  readonly "pipelineRunList.noPipelineRuns": "No Pipeline Runs found";
49
50
  readonly "pipelineRunList.searchBarPlaceholder": "Search";
51
+ readonly "pipelineRunList.rowActions.viewParamsAndResults": "View Parameters and Results";
50
52
  readonly "pipelineRunList.rowActions.viewLogs": "View logs";
51
53
  readonly "pipelineRunList.rowActions.unauthorizedViewLogs": "Unauthorized to view logs";
52
54
  readonly "pipelineRunList.rowActions.viewSBOM": "View SBOM";
@@ -64,6 +66,7 @@ declare const tektonTranslationRef: _backstage_core_plugin_api_alpha.Translation
64
66
  readonly "pipelineRunList.tableHeaderTitle.startTime": "STARTED";
65
67
  readonly "pipelineRunList.tableHeaderTitle.duration": "DURATION";
66
68
  readonly "pipelineRunList.tableHeaderTitle.actions": "ACTIONS";
69
+ readonly "pipelineRunList.tablePagination.rowsPerPageOptionLabel": "{{num}} rows";
67
70
  readonly "pipelineRunLogs.title": "PipelineRun Logs";
68
71
  readonly "pipelineRunLogs.noLogs": "No logs found";
69
72
  readonly "pipelineRunLogs.downloader.downloadTaskLogs": "Download";
@@ -93,6 +96,13 @@ declare const tektonTranslationRef: _backstage_core_plugin_api_alpha.Translation
93
96
  readonly "pipelineRunDuration.minute_other": "{{count}} minutes";
94
97
  readonly "pipelineRunDuration.second_one": "{{count}} second";
95
98
  readonly "pipelineRunDuration.second_other": "{{count}} seconds";
99
+ readonly "pipelineRunParamsAndResults.title": "PipelineRun Parameters and Results";
100
+ readonly "pipelineRunParamsAndResults.results": "Results";
101
+ readonly "pipelineRunParamsAndResults.noParams": "No parameters found";
102
+ readonly "pipelineRunParamsAndResults.noResults": "No results found";
103
+ readonly "pipelineRunParamsAndResults.params": "Parameters";
104
+ readonly "pipelineRunParamsAndResults.outputTableColumn.name": "Name";
105
+ readonly "pipelineRunParamsAndResults.outputTableColumn.value": "Value";
96
106
  }>;
97
107
 
98
108
  /**
@@ -14,6 +14,9 @@ const tektonTranslationRef = createTranslationRef({
14
14
  statusSelector: {
15
15
  label: "Status"
16
16
  },
17
+ clusterSelector: {
18
+ label: "Cluster"
19
+ },
17
20
  tableExpandCollapse: {
18
21
  collapseAll: "Collapse all",
19
22
  expandAll: "Expand all"
@@ -32,6 +35,7 @@ const tektonTranslationRef = createTranslationRef({
32
35
  noPipelineRuns: "No Pipeline Runs found",
33
36
  searchBarPlaceholder: "Search",
34
37
  rowActions: {
38
+ viewParamsAndResults: "View Parameters and Results",
35
39
  viewLogs: "View logs",
36
40
  unauthorizedViewLogs: "Unauthorized to view logs",
37
41
  viewSBOM: "View SBOM",
@@ -53,6 +57,9 @@ const tektonTranslationRef = createTranslationRef({
53
57
  startTime: "STARTED",
54
58
  duration: "DURATION",
55
59
  actions: "ACTIONS"
60
+ },
61
+ tablePagination: {
62
+ rowsPerPageOptionLabel: "{{num}} rows"
56
63
  }
57
64
  },
58
65
  pipelineRunLogs: {
@@ -97,6 +104,17 @@ const tektonTranslationRef = createTranslationRef({
97
104
  minute_other: "{{count}} minutes",
98
105
  second_one: "{{count}} second",
99
106
  second_other: "{{count}} seconds"
107
+ },
108
+ pipelineRunParamsAndResults: {
109
+ title: "PipelineRun Parameters and Results",
110
+ noParams: "No parameters found",
111
+ noResults: "No results found",
112
+ params: "Parameters",
113
+ results: "Results",
114
+ outputTableColumn: {
115
+ name: "Name",
116
+ value: "Value"
117
+ }
100
118
  }
101
119
  }
102
120
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Tekton translation reference.\n * @public\n */\nexport const tektonTranslationRef = createTranslationRef({\n id: 'tekton',\n messages: {\n errorPanel: {\n title: 'There was a problem retrieving Kubernetes objects',\n description:\n 'There was a problem retrieving some Kubernetes resources for the entity: {{entityName}}. This could mean that the Error Reporting card is not completely accurate.',\n },\n permissionAlert: {\n title: 'Permission required',\n description:\n 'To view Tekton Pipeline Runs, contact your administrator to give you the following permission(s): {{permissions}}.',\n },\n statusSelector: {\n label: 'Status',\n },\n tableExpandCollapse: {\n collapseAll: 'Collapse all',\n expandAll: 'Expand all',\n },\n pipelineVisualization: {\n emptyState: {\n description: 'No Pipeline Run to visualize',\n },\n noTasksDescription: 'This Pipeline Run has no tasks to visualize',\n stepList: {\n finallyTaskTitle: 'Finally Task',\n },\n },\n pipelineRunList: {\n title: 'Pipeline Runs',\n noPipelineRuns: 'No Pipeline Runs found',\n searchBarPlaceholder: 'Search',\n rowActions: {\n viewLogs: 'View logs',\n unauthorizedViewLogs: 'Unauthorized to view logs',\n viewSBOM: 'View SBOM',\n SBOMNotApplicable: 'View SBOM is not applicable for this PipelineRun',\n viewOutput: 'View output',\n outputNotApplicable:\n 'View Output is not applicable for this PipelineRun',\n },\n vulnerabilitySeverityTitle: {\n critical: 'Critical',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n },\n tableHeaderTitle: {\n name: 'NAME',\n vulnerabilities: 'VULNERABILITIES',\n status: 'STATUS',\n taskStatus: 'TASK STATUS',\n startTime: 'STARTED',\n duration: 'DURATION',\n actions: 'ACTIONS',\n },\n },\n pipelineRunLogs: {\n title: 'PipelineRun Logs',\n noLogs: 'No logs found',\n downloader: {\n downloadTaskLogs: 'Download',\n downloadPipelineRunLogs: 'Download all tasks logs',\n },\n podLogsDownloadLink: {\n title: 'Download',\n downloading: 'downloading logs',\n },\n taskStatusStepper: {\n skipped: 'Skipped',\n },\n },\n pipelineRunOutput: {\n title: 'PipelineRun Output',\n noOutput: 'No output',\n },\n pipelineRunStatus: {\n All: 'All',\n Cancelling: 'Cancelling',\n Succeeded: 'Succeeded',\n Failed: 'Failed',\n Running: 'Running',\n 'In Progress': 'In Progress',\n FailedToStart: 'FailedToStart',\n PipelineNotStarted: 'PipelineNotStarted',\n Skipped: 'Skipped',\n Cancelled: 'Cancelled',\n Pending: 'Pending',\n Idle: 'Idle',\n Other: 'Other',\n },\n pipelineRunDuration: {\n lessThanSec: 'less than a sec',\n hour_one: '{{count}} hour',\n hour_other: '{{count}} hours',\n minute_one: '{{count}} minute',\n minute_other: '{{count}} minutes',\n second_one: '{{count}} second',\n second_other: '{{count}} seconds',\n },\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Tekton translation reference.\n * @public\n */\nexport const tektonTranslationRef = createTranslationRef({\n id: 'tekton',\n messages: {\n errorPanel: {\n title: 'There was a problem retrieving Kubernetes objects',\n description:\n 'There was a problem retrieving some Kubernetes resources for the entity: {{entityName}}. This could mean that the Error Reporting card is not completely accurate.',\n },\n permissionAlert: {\n title: 'Permission required',\n description:\n 'To view Tekton Pipeline Runs, contact your administrator to give you the following permission(s): {{permissions}}.',\n },\n statusSelector: {\n label: 'Status',\n },\n clusterSelector: {\n label: 'Cluster',\n },\n tableExpandCollapse: {\n collapseAll: 'Collapse all',\n expandAll: 'Expand all',\n },\n pipelineVisualization: {\n emptyState: {\n description: 'No Pipeline Run to visualize',\n },\n noTasksDescription: 'This Pipeline Run has no tasks to visualize',\n stepList: {\n finallyTaskTitle: 'Finally Task',\n },\n },\n pipelineRunList: {\n title: 'Pipeline Runs',\n noPipelineRuns: 'No Pipeline Runs found',\n searchBarPlaceholder: 'Search',\n rowActions: {\n viewParamsAndResults: 'View Parameters and Results',\n viewLogs: 'View logs',\n unauthorizedViewLogs: 'Unauthorized to view logs',\n viewSBOM: 'View SBOM',\n SBOMNotApplicable: 'View SBOM is not applicable for this PipelineRun',\n viewOutput: 'View output',\n outputNotApplicable:\n 'View Output is not applicable for this PipelineRun',\n },\n vulnerabilitySeverityTitle: {\n critical: 'Critical',\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n },\n tableHeaderTitle: {\n name: 'NAME',\n vulnerabilities: 'VULNERABILITIES',\n status: 'STATUS',\n taskStatus: 'TASK STATUS',\n startTime: 'STARTED',\n duration: 'DURATION',\n actions: 'ACTIONS',\n },\n tablePagination: {\n rowsPerPageOptionLabel: '{{num}} rows',\n },\n },\n pipelineRunLogs: {\n title: 'PipelineRun Logs',\n noLogs: 'No logs found',\n downloader: {\n downloadTaskLogs: 'Download',\n downloadPipelineRunLogs: 'Download all tasks logs',\n },\n podLogsDownloadLink: {\n title: 'Download',\n downloading: 'downloading logs',\n },\n taskStatusStepper: {\n skipped: 'Skipped',\n },\n },\n pipelineRunOutput: {\n title: 'PipelineRun Output',\n noOutput: 'No output',\n },\n pipelineRunStatus: {\n All: 'All',\n Cancelling: 'Cancelling',\n Succeeded: 'Succeeded',\n Failed: 'Failed',\n Running: 'Running',\n 'In Progress': 'In Progress',\n FailedToStart: 'FailedToStart',\n PipelineNotStarted: 'PipelineNotStarted',\n Skipped: 'Skipped',\n Cancelled: 'Cancelled',\n Pending: 'Pending',\n Idle: 'Idle',\n Other: 'Other',\n },\n pipelineRunDuration: {\n lessThanSec: 'less than a sec',\n hour_one: '{{count}} hour',\n hour_other: '{{count}} hours',\n minute_one: '{{count}} minute',\n minute_other: '{{count}} minutes',\n second_one: '{{count}} second',\n second_other: '{{count}} seconds',\n },\n pipelineRunParamsAndResults: {\n title: 'PipelineRun Parameters and Results',\n noParams: 'No parameters found',\n noResults: 'No results found',\n params: 'Parameters',\n results: 'Results',\n outputTableColumn: {\n name: 'Name',\n value: 'Value',\n },\n },\n },\n});\n"],"names":[],"mappings":"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"}