@red-hat-developer-hub/backstage-plugin-scorecard 2.7.3 → 2.7.5

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 (30) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +41 -6
  3. package/dist/alpha.d.ts +1 -1
  4. package/dist/components/AggregatedMetricCards/AverageCard/AverageCardComponent.esm.js +6 -52
  5. package/dist/components/AggregatedMetricCards/AverageCard/AverageCardComponent.esm.js.map +1 -1
  6. package/dist/components/AggregatedMetricCards/AverageCard/AverageCardPieCenterLabel.esm.js +0 -4
  7. package/dist/components/AggregatedMetricCards/AverageCard/AverageCardPieCenterLabel.esm.js.map +1 -1
  8. package/dist/components/AggregatedMetricCards/AverageCard/DonutChartTooltipContent.esm.js +50 -15
  9. package/dist/components/AggregatedMetricCards/AverageCard/DonutChartTooltipContent.esm.js.map +1 -1
  10. package/dist/components/ScorecardHomepageSection/ResponsivePieChart.esm.js +5 -4
  11. package/dist/components/ScorecardHomepageSection/ResponsivePieChart.esm.js.map +1 -1
  12. package/dist/components/ScorecardPage/ScorecardPage.esm.js +2 -3
  13. package/dist/components/ScorecardPage/ScorecardPage.esm.js.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/translations/de.esm.js +2 -0
  16. package/dist/translations/de.esm.js.map +1 -1
  17. package/dist/translations/es.esm.js +2 -0
  18. package/dist/translations/es.esm.js.map +1 -1
  19. package/dist/translations/fr.esm.js +2 -0
  20. package/dist/translations/fr.esm.js.map +1 -1
  21. package/dist/translations/it.esm.js +2 -0
  22. package/dist/translations/it.esm.js.map +1 -1
  23. package/dist/translations/ja.esm.js +2 -0
  24. package/dist/translations/ja.esm.js.map +1 -1
  25. package/dist/translations/ref.esm.js +2 -0
  26. package/dist/translations/ref.esm.js.map +1 -1
  27. package/dist/types/{index.d-Bzst_d5c.d.ts → index.d-LfNMVZwd.d.ts} +2 -0
  28. package/package.json +2 -2
  29. package/dist/components/AggregatedMetricCards/AverageCard/LegendTooltipContent.esm.js +0 -39
  30. package/dist/components/AggregatedMetricCards/AverageCard/LegendTooltipContent.esm.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @red-hat-developer-hub/backstage-plugin-scorecard
2
2
 
3
+ ## 2.7.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 5115044: ### Threshold validation
8
+
9
+ Implemented threshold interval validation for Scorecard: joint coverage on the real line, gap detection and error messages, and overlap handling versus rule order (including aggregation KPI `options.thresholds` for `average`).
10
+
11
+ ### Aggregation
12
+
13
+ For **`type: average`** aggregations, **`result.averageScore`** returned by **`GET /aggregations/:aggregationId`** (and the same shape wherever it appears) is a **portfolio percentage in \[0, 100\]** with **one decimal place** — the same scale used for **`options.thresholds`** evaluation and the homepage donut.
14
+
15
+ Previously **`averageScore`** was a **normalized ratio in \[0, 1\]** (rounded to **three** decimal places). Any consumer that treated the old value as a fraction and multiplied by **100** for display, or compared it to thresholds on a 0–100 scale without converting, must **stop scaling**: use **`averageScore`** directly as the percentage. If you stored historical API payloads, recompute or re-fetch rather than assuming the old fractional scale.
16
+
17
+ - 942a9ae: Fix average score card donut tooltip behavior and align pie chart tooltips
18
+ - @red-hat-developer-hub/backstage-plugin-scorecard-common@2.7.5
19
+
20
+ ## 2.7.4
21
+
22
+ ### Patch Changes
23
+
24
+ - 8c129da: Fix default layout for `AggregatedCardWithGithubFilecheckLicense`, `AggregatedCardWithGithubFilecheckCodeowners` and `AggregatedCardWithGithubOpenPrsWeighted` homepage scorecard cards at the new frontend system (NFS)
25
+ - 367195b: Fix drilldown page header showing raw provider title instead of the translated scorecard title
26
+ - @red-hat-developer-hub/backstage-plugin-scorecard-common@2.7.4
27
+
3
28
  ## 2.7.3
4
29
 
5
30
  ### Patch Changes
package/README.md CHANGED
@@ -172,14 +172,44 @@ To align with the legacy EntityPage (Scorecard on component pages and default en
172
172
  sm: { w: 4, h: 6, x: 4 }
173
173
  xs: { w: 4, h: 6, x: 4 }
174
174
  xxs: { w: 4, h: 6, x: 4 }
175
+ AggregatedCardWithGithubFilecheckLicense:
176
+ priority: 450
177
+ breakpoints:
178
+ xl: { w: 4, h: 6 }
179
+ lg: { w: 4, h: 6 }
180
+ md: { w: 4, h: 6 }
181
+ sm: { w: 4, h: 6 }
182
+ xs: { w: 4, h: 6 }
183
+ xxs: { w: 4, h: 6 }
184
+ AggregatedCardWithGithubFilecheckCodeowners:
185
+ priority: 460
186
+ breakpoints:
187
+ xl: { w: 4, h: 6, x: 8 }
188
+ lg: { w: 4, h: 6, x: 8 }
189
+ md: { w: 4, h: 6, x: 8 }
190
+ sm: { w: 4, h: 6, x: 8 }
191
+ xs: { w: 4, h: 6, x: 8 }
192
+ xxs: { w: 4, h: 6, x: 8 }
193
+ AggregatedCardWithGithubOpenPrsWeighted:
194
+ priority: 470
195
+ breakpoints:
196
+ xl: { w: 4, h: 6, x: 8 }
197
+ lg: { w: 4, h: 6, x: 8 }
198
+ md: { w: 4, h: 6, x: 8 }
199
+ sm: { w: 4, h: 6, x: 8 }
200
+ xs: { w: 4, h: 6, x: 8 }
201
+ xxs: { w: 4, h: 6, x: 8 }
175
202
  ```
176
203
 
177
- The home module contributes four widgets:
204
+ The home module contributes seven widgets:
178
205
 
179
206
  - `AggregatedCardWithDeprecatedMetricId` (title: **Scorecard: With deprecated metricId property (Jira)**)
180
207
  - `AggregatedCardWithDefaultAggregation` (title: **Scorecard: With default aggregation config (GitHub)**)
181
208
  - `AggregatedCardWithJiraOpenIssues` (title: **Scorecard: Jira open blocking tickets**)
182
209
  - `AggregatedCardWithGithubOpenPrs` (title: **Scorecard: GitHub open PRs**)
210
+ - `AggregatedCardWithGithubFilecheckLicense` (title: **Scorecard: LICENSE file exists**)
211
+ - `AggregatedCardWithGithubFilecheckCodeowners` (title: **Scorecard: CODEOWNERS file exists**)
212
+ - `AggregatedCardWithGithubOpenPrsWeighted` (title: **Scorecard: GitHub open PRs (weighted health)**)
183
213
 
184
214
  These widgets render the `ScorecardHomepageCard` component used in legacy apps, preconfigured with different aggregation/metric configurations.
185
215
 
@@ -189,11 +219,11 @@ The following modules and extensions are available from `@red-hat-developer-hub/
189
219
 
190
220
  **Modules**
191
221
 
192
- | Module | Description |
193
- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
194
- | `scorecardHomeModule` | Registers Scorecard homepage widgets for the home plugin (`AggregatedCardWithDeprecatedMetricId`, `AggregatedCardWithDefaultAggregation`, `AggregatedCardWithJiraOpenIssues`, and `AggregatedCardWithGithubOpenPrs`). |
195
- | `scorecardCatalogModule` | Registers the Scorecard entity tab with the catalog plugin. Add to your app's `features`. Which entities show the tab is configured via `app.extensions` (see step 3). |
196
- | `scorecardTranslationsModule` | Registers Scorecard translations with the app. Add to your app's `features`. |
222
+ | Module | Description |
223
+ | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
224
+ | `scorecardHomeModule` | Registers Scorecard homepage widgets for the home plugin (`AggregatedCardWithDeprecatedMetricId`, `AggregatedCardWithDefaultAggregation`, `AggregatedCardWithJiraOpenIssues`, `AggregatedCardWithGithubOpenPrs`, `AggregatedCardWithGithubFilecheckLicense`, `AggregatedCardWithGithubFilecheckCodeowners` and `AggregatedCardWithGithubOpenPrsWeighted`). |
225
+ | `scorecardCatalogModule` | Registers the Scorecard entity tab with the catalog plugin. Add to your app's `features`. Which entities show the tab is configured via `app.extensions` (see step 3). |
226
+ | `scorecardTranslationsModule` | Registers Scorecard translations with the app. Add to your app's `features`. |
197
227
 
198
228
  **Extensions**
199
229
 
@@ -203,6 +233,9 @@ The following modules and extensions are available from `@red-hat-developer-hub/
203
233
  - `home-page-widget:home/scorecard-default-aggregation` — Homepage widget using default aggregation config (GitHub open PRs).
204
234
  - `home-page-widget:home/scorecard-jira-open-issues` — Homepage widget showing Jira open blocking tickets.
205
235
  - `home-page-widget:home/scorecard-github-open-prs` — Homepage widget showing GitHub open PRs.
236
+ - `home-page-widget:home/scorecard-github-filecheck-license` - Homepage widget showing file check "License".
237
+ - `home-page-widget:home/scorecard-github-filecheck-codeowners` - Homepage widget showing file check "Codeowners".
238
+ - `home-page-widget:home/scorecard-github-open-prs-weighted` - Homepage widget showing average GitHub open PRs.
206
239
 
207
240
  #### Legacy app
208
241
 
@@ -312,6 +345,8 @@ Define KPI ids and optional labels under **`scorecard.aggregationKPIs`** so each
312
345
 
313
346
  **`type: average`** KPIs require **`options.statusScores`** (weights per threshold rule key). Optionally set **`options.thresholds`** so the API returns **`aggregationChartDisplayColor`** for the headline percentage. Behavior, validation, and drill-down notes are described in [aggregation.md](../scorecard-backend/docs/aggregation.md).
314
347
 
348
+ For **`type: average`**, the homepage card shows a **centered donut** with the headline percentage. Hovering the **center** opens a tooltip with **total score**, **max possible score**, and a **per-status breakdown** (from aggregation **`result.values`**). There is **no side status legend**; **`statusGrouped`** cards use a multi-slice pie with a legend instead.
349
+
315
350
  #### Card props
316
351
 
317
352
  The supported model is **a single `aggregationId` string** whose value is either:
package/dist/alpha.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
3
3
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
4
- export { a as scorecardTranslationRef, s as scorecardTranslations } from './types/index.d-Bzst_d5c.js';
4
+ export { a as scorecardTranslationRef, s as scorecardTranslations } from './types/index.d-LfNMVZwd.js';
5
5
 
6
6
  /**
7
7
  * The primary Scorecard frontend plugin.
@@ -2,18 +2,15 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
3
  import { useTheme } from '@mui/material/styles';
4
4
  import { CardWrapper } from '../../Common/CardWrapper.esm.js';
5
- import { SCORECARD_ERROR_STATE_COLOR } from '../../../utils/constants.esm.js';
6
5
  import 'date-fns';
7
6
  import { resolveStatusColor } from '../../../utils/statusUtils.esm.js';
8
- import { getThresholdRuleColor } from '../../../utils/thresholdUtils.esm.js';
7
+ import '@red-hat-developer-hub/backstage-plugin-scorecard-common';
9
8
  import { ResponsivePieChart } from '../../ScorecardHomepageSection/ResponsivePieChart.esm.js';
10
9
  import { CardInfoButton } from '../components/CardInfoButton.esm.js';
11
10
  import { CardSubheader } from '../components/CardSubheader.esm.js';
12
11
  import { CardChartContainer } from '../components/CardChartContainer.esm.js';
13
12
  import { CardTooltip } from '../components/CardTooltip.esm.js';
14
- import { LegendTooltipContent } from './LegendTooltipContent.esm.js';
15
13
  import { DonutChartTooltipContent } from './DonutChartTooltipContent.esm.js';
16
- import { CardLegendContent } from '../components/CardLegendContent.esm.js';
17
14
  import { AverageCardPieCenterLabel } from './AverageCardPieCenterLabel.esm.js';
18
15
  import { formatPercentage } from '../../../utils/formatPercentage.esm.js';
19
16
 
@@ -33,8 +30,6 @@ const AverageCardComponent = ({
33
30
  dataTestId
34
31
  }) => {
35
32
  const theme = useTheme();
36
- const [activeIndex, setActiveIndex] = useState(null);
37
- const [tooltipPosition, setTooltipPosition] = useState(null);
38
33
  const [centerTooltipPosition, setCenterTooltipPosition] = useState(null);
39
34
  const updateCenterTooltipPosition = (e) => {
40
35
  const rect = e.currentTarget.getBoundingClientRect();
@@ -43,9 +38,9 @@ const AverageCardComponent = ({
43
38
  top: rect.top
44
39
  });
45
40
  };
46
- const rawPercent = scorecard.result.averageScore * 100;
47
- const { fill: chartFillPercent, remainder: chartRemainderPercent } = clampPercentForDonut(rawPercent);
48
- const centerPercentLabel = `${formatPercentage(rawPercent)}%`;
41
+ const averageScorePercent = scorecard.result.averageScore;
42
+ const { fill: chartFillPercent, remainder: chartRemainderPercent } = clampPercentForDonut(averageScorePercent);
43
+ const centerPercentLabel = `${formatPercentage(averageScorePercent)}%`;
49
44
  const arcResolvedColor = resolveStatusColor(
50
45
  theme,
51
46
  scorecard.result.aggregationChartDisplayColor
@@ -62,15 +57,6 @@ const AverageCardComponent = ({
62
57
  color: theme.palette.grey[300]
63
58
  }
64
59
  ];
65
- const statusPieData = scorecard.result.values?.map((value) => ({
66
- name: value.name,
67
- value: value.count,
68
- score: value.score,
69
- color: resolveStatusColor(
70
- theme,
71
- getThresholdRuleColor(scorecard.result.thresholds.rules, value.name) ?? SCORECARD_ERROR_STATE_COLOR
72
- )
73
- })) ?? [];
74
60
  const subheader = showSubheader ? /* @__PURE__ */ jsx(
75
61
  CardSubheader,
76
62
  {
@@ -101,21 +87,9 @@ const AverageCardComponent = ({
101
87
  ...props,
102
88
  centerPercentLabel,
103
89
  arcResolvedColor,
104
- setActiveIndex,
105
- setTooltipPosition,
106
90
  updateCenterTooltipPosition,
107
91
  setCenterTooltipPosition
108
92
  }
109
- ),
110
- legendContent: (props) => /* @__PURE__ */ jsx(
111
- CardLegendContent,
112
- {
113
- ...props,
114
- activeIndex,
115
- setActiveIndex,
116
- setTooltipPosition,
117
- pieData: statusPieData
118
- }
119
93
  )
120
94
  }
121
95
  ),
@@ -135,28 +109,8 @@ const AverageCardComponent = ({
135
109
  DonutChartTooltipContent,
136
110
  {
137
111
  weightedSum: scorecard.result.averageWeightedSum,
138
- maxPossible: scorecard.result.averageMaxPossible
139
- }
140
- )
141
- }
142
- ),
143
- activeIndex !== null && tooltipPosition && statusPieData[activeIndex] && /* @__PURE__ */ jsx(
144
- CardTooltip,
145
- {
146
- tooltipPosition,
147
- pieData: statusPieData,
148
- payload: [
149
- {
150
- name: statusPieData[activeIndex].name,
151
- value: statusPieData[activeIndex].value || 1,
152
- payload: statusPieData[activeIndex]
153
- }
154
- ],
155
- customContent: /* @__PURE__ */ jsx(
156
- LegendTooltipContent,
157
- {
158
- row: statusPieData[activeIndex],
159
- maxPossible: scorecard.result.averageMaxPossible
112
+ maxPossible: scorecard.result.averageMaxPossible,
113
+ statusValues: scorecard.result.values
160
114
  }
161
115
  )
162
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AverageCardComponent.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/AverageCardComponent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport { useTheme } from '@mui/material/styles';\n\nimport { CardWrapper } from '../../Common/CardWrapper';\nimport type { PieData } from '../../types';\nimport {\n getThresholdRuleColor,\n resolveStatusColor,\n SCORECARD_ERROR_STATE_COLOR,\n} from '../../../utils';\nimport { ResponsivePieChart } from '../../ScorecardHomepageSection/ResponsivePieChart';\nimport { CardInfoButton } from '../components/CardInfoButton';\nimport { CardSubheader } from '../components/CardSubheader';\nimport { CardChartContainer } from '../components/CardChartContainer';\nimport { CardTooltip } from '../components/CardTooltip';\nimport { LegendTooltipContent } from './LegendTooltipContent';\nimport { DonutChartTooltipContent } from './DonutChartTooltipContent';\nimport type { AverageCardComponentProps, TooltipPosition } from './types';\nimport { CardLegendContent } from '../components/CardLegendContent';\nimport { AverageCardPieCenterLabel } from './AverageCardPieCenterLabel';\nimport { formatPercentage } from '../../../utils/formatPercentage';\n\nconst AVERAGE_SCORE_SLICE = 'averageScoreFill';\nconst AVERAGE_REMAINDER_SLICE = 'averageScoreRemainder';\n\nfunction clampPercentForDonut(rawPercent: number): {\n fill: number;\n remainder: number;\n} {\n const fill = Math.min(100, Math.max(0, rawPercent));\n return { fill, remainder: 100 - fill };\n}\n\nexport const AverageCardComponent = ({\n scorecard,\n cardTitle,\n description,\n aggregationId,\n showSubheader = true,\n showInfo = true,\n dataTestId,\n}: AverageCardComponentProps) => {\n const theme = useTheme();\n\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [tooltipPosition, setTooltipPosition] =\n useState<TooltipPosition | null>(null);\n const [centerTooltipPosition, setCenterTooltipPosition] =\n useState<TooltipPosition | null>(null);\n\n const updateCenterTooltipPosition = (e: MouseEvent<SVGCircleElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n setCenterTooltipPosition({\n left: rect.left + rect.width / 2,\n top: rect.top,\n });\n };\n\n const rawPercent = scorecard.result.averageScore * 100;\n const { fill: chartFillPercent, remainder: chartRemainderPercent } =\n clampPercentForDonut(rawPercent);\n\n const centerPercentLabel = `${formatPercentage(rawPercent)}%`;\n\n const arcResolvedColor = resolveStatusColor(\n theme,\n scorecard.result.aggregationChartDisplayColor,\n );\n\n const averagePieData: PieData[] = [\n {\n name: AVERAGE_SCORE_SLICE,\n value: chartFillPercent,\n color: arcResolvedColor,\n },\n {\n name: AVERAGE_REMAINDER_SLICE,\n value: chartRemainderPercent,\n color: theme.palette.grey[300],\n },\n ];\n\n const statusPieData: PieData[] =\n scorecard.result.values?.map(value => ({\n name: value.name,\n value: value.count,\n score: value.score,\n color: resolveStatusColor(\n theme,\n getThresholdRuleColor(scorecard.result.thresholds.rules, value.name) ??\n SCORECARD_ERROR_STATE_COLOR,\n ),\n })) ?? [];\n\n const subheader = showSubheader ? (\n <CardSubheader\n aggregationId={aggregationId}\n scorecardId={scorecard.id}\n entitiesCount={scorecard.result.total}\n entitiesConsidered={scorecard.result.entitiesConsidered}\n calculationErrorCount={scorecard.result.calculationErrorCount}\n />\n ) : null;\n\n const info = showInfo ? (\n <CardInfoButton timestamp={scorecard.result.timestamp} />\n ) : null;\n\n return (\n <CardWrapper\n title={cardTitle}\n dataTestId={dataTestId}\n subheader={subheader}\n description={description}\n info={info}\n >\n <CardChartContainer>\n <ResponsivePieChart\n pieData={averagePieData}\n LabelContent={props => (\n <AverageCardPieCenterLabel\n {...props}\n centerPercentLabel={centerPercentLabel}\n arcResolvedColor={arcResolvedColor}\n setActiveIndex={setActiveIndex}\n setTooltipPosition={setTooltipPosition}\n updateCenterTooltipPosition={updateCenterTooltipPosition}\n setCenterTooltipPosition={setCenterTooltipPosition}\n />\n )}\n legendContent={props => (\n <CardLegendContent\n {...props}\n activeIndex={activeIndex}\n setActiveIndex={setActiveIndex}\n setTooltipPosition={setTooltipPosition}\n pieData={statusPieData}\n />\n )}\n />\n\n {centerTooltipPosition && (\n <CardTooltip\n tooltipPosition={centerTooltipPosition}\n pieData={averagePieData}\n payload={[\n {\n name: AVERAGE_SCORE_SLICE,\n value: 1,\n payload: averagePieData[0],\n },\n ]}\n customContent={\n <DonutChartTooltipContent\n weightedSum={scorecard.result.averageWeightedSum}\n maxPossible={scorecard.result.averageMaxPossible}\n />\n }\n />\n )}\n\n {activeIndex !== null &&\n tooltipPosition &&\n statusPieData[activeIndex] && (\n <CardTooltip\n tooltipPosition={tooltipPosition}\n pieData={statusPieData}\n payload={[\n {\n name: statusPieData[activeIndex].name,\n value: statusPieData[activeIndex].value || 1,\n payload: statusPieData[activeIndex],\n },\n ]}\n customContent={\n <LegendTooltipContent\n row={statusPieData[activeIndex]}\n maxPossible={scorecard.result.averageMaxPossible}\n />\n }\n />\n )}\n </CardChartContainer>\n </CardWrapper>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AverageCardComponent.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/AverageCardComponent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport { useTheme } from '@mui/material/styles';\n\nimport { CardWrapper } from '../../Common/CardWrapper';\nimport type { PieData } from '../../types';\nimport { resolveStatusColor } from '../../../utils';\nimport { ResponsivePieChart } from '../../ScorecardHomepageSection/ResponsivePieChart';\nimport { CardInfoButton } from '../components/CardInfoButton';\nimport { CardSubheader } from '../components/CardSubheader';\nimport { CardChartContainer } from '../components/CardChartContainer';\nimport { CardTooltip } from '../components/CardTooltip';\nimport { DonutChartTooltipContent } from './DonutChartTooltipContent';\nimport type { AverageCardComponentProps, TooltipPosition } from './types';\nimport { AverageCardPieCenterLabel } from './AverageCardPieCenterLabel';\nimport { formatPercentage } from '../../../utils/formatPercentage';\n\nconst AVERAGE_SCORE_SLICE = 'averageScoreFill';\nconst AVERAGE_REMAINDER_SLICE = 'averageScoreRemainder';\n\nfunction clampPercentForDonut(rawPercent: number): {\n fill: number;\n remainder: number;\n} {\n const fill = Math.min(100, Math.max(0, rawPercent));\n return { fill, remainder: 100 - fill };\n}\n\nexport const AverageCardComponent = ({\n scorecard,\n cardTitle,\n description,\n aggregationId,\n showSubheader = true,\n showInfo = true,\n dataTestId,\n}: AverageCardComponentProps) => {\n const theme = useTheme();\n\n const [centerTooltipPosition, setCenterTooltipPosition] =\n useState<TooltipPosition | null>(null);\n\n const updateCenterTooltipPosition = (e: MouseEvent<SVGCircleElement>) => {\n const rect = e.currentTarget.getBoundingClientRect();\n setCenterTooltipPosition({\n left: rect.left + rect.width / 2,\n top: rect.top,\n });\n };\n\n const averageScorePercent = scorecard.result.averageScore;\n\n const { fill: chartFillPercent, remainder: chartRemainderPercent } =\n clampPercentForDonut(averageScorePercent);\n\n const centerPercentLabel = `${formatPercentage(averageScorePercent)}%`;\n\n const arcResolvedColor = resolveStatusColor(\n theme,\n scorecard.result.aggregationChartDisplayColor,\n );\n\n const averagePieData: PieData[] = [\n {\n name: AVERAGE_SCORE_SLICE,\n value: chartFillPercent,\n color: arcResolvedColor,\n },\n {\n name: AVERAGE_REMAINDER_SLICE,\n value: chartRemainderPercent,\n color: theme.palette.grey[300],\n },\n ];\n\n const subheader = showSubheader ? (\n <CardSubheader\n aggregationId={aggregationId}\n scorecardId={scorecard.id}\n entitiesCount={scorecard.result.total}\n entitiesConsidered={scorecard.result.entitiesConsidered}\n calculationErrorCount={scorecard.result.calculationErrorCount}\n />\n ) : null;\n\n const info = showInfo ? (\n <CardInfoButton timestamp={scorecard.result.timestamp} />\n ) : null;\n\n return (\n <CardWrapper\n title={cardTitle}\n dataTestId={dataTestId}\n subheader={subheader}\n description={description}\n info={info}\n >\n <CardChartContainer>\n <ResponsivePieChart\n pieData={averagePieData}\n LabelContent={props => (\n <AverageCardPieCenterLabel\n {...props}\n centerPercentLabel={centerPercentLabel}\n arcResolvedColor={arcResolvedColor}\n updateCenterTooltipPosition={updateCenterTooltipPosition}\n setCenterTooltipPosition={setCenterTooltipPosition}\n />\n )}\n />\n\n {centerTooltipPosition && (\n <CardTooltip\n tooltipPosition={centerTooltipPosition}\n pieData={averagePieData}\n payload={[\n {\n name: AVERAGE_SCORE_SLICE,\n value: 1,\n payload: averagePieData[0],\n },\n ]}\n customContent={\n <DonutChartTooltipContent\n weightedSum={scorecard.result.averageWeightedSum}\n maxPossible={scorecard.result.averageMaxPossible}\n statusValues={scorecard.result.values}\n />\n }\n />\n )}\n </CardChartContainer>\n </CardWrapper>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -6,8 +6,6 @@ function AverageCardPieCenterLabel({
6
6
  index,
7
7
  centerPercentLabel,
8
8
  arcResolvedColor,
9
- setActiveIndex,
10
- setTooltipPosition,
11
9
  updateCenterTooltipPosition,
12
10
  setCenterTooltipPosition
13
11
  }) {
@@ -28,8 +26,6 @@ function AverageCardPieCenterLabel({
28
26
  pointerEvents: "all",
29
27
  "data-testid": "average-card-center-percent-hit-area",
30
28
  onMouseEnter: (e) => {
31
- setActiveIndex(null);
32
- setTooltipPosition(null);
33
29
  updateCenterTooltipPosition(e);
34
30
  },
35
31
  onMouseMove: updateCenterTooltipPosition,
@@ -1 +1 @@
1
- {"version":3,"file":"AverageCardPieCenterLabel.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/AverageCardPieCenterLabel.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { PieLabelRenderProps } from 'recharts';\nimport { TooltipPosition } from './types';\n\ntype AverageCardPieCenterLabelProps = PieLabelRenderProps & {\n centerPercentLabel: string;\n arcResolvedColor: string;\n setActiveIndex: (index: number | null) => void;\n setTooltipPosition: (position: TooltipPosition | null) => void;\n updateCenterTooltipPosition: (e: React.MouseEvent<SVGCircleElement>) => void;\n setCenterTooltipPosition: (position: TooltipPosition | null) => void;\n};\n\nexport function AverageCardPieCenterLabel({\n cx,\n cy,\n index,\n centerPercentLabel,\n arcResolvedColor,\n setActiveIndex,\n setTooltipPosition,\n updateCenterTooltipPosition,\n setCenterTooltipPosition,\n}: AverageCardPieCenterLabelProps) {\n if (\n cx === undefined ||\n cx === null ||\n cy === undefined ||\n cy === null ||\n index === undefined ||\n index !== 0\n ) {\n return null;\n }\n const cxNum = Number(cx);\n const cyNum = Number(cy);\n return (\n <g style={{ cursor: 'pointer' }}>\n <circle\n cx={cxNum}\n cy={cyNum}\n r={52}\n fill=\"transparent\"\n stroke=\"none\"\n pointerEvents=\"all\"\n data-testid=\"average-card-center-percent-hit-area\"\n onMouseEnter={e => {\n setActiveIndex(null);\n setTooltipPosition(null);\n updateCenterTooltipPosition(e);\n }}\n onMouseMove={updateCenterTooltipPosition}\n onMouseLeave={() => setCenterTooltipPosition(null)}\n />\n <text\n x={cxNum}\n y={cyNum}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={arcResolvedColor}\n fontSize={24}\n fontWeight={500}\n pointerEvents=\"none\"\n data-testid=\"average-card-center-percent\"\n >\n {centerPercentLabel}\n </text>\n </g>\n );\n}\n"],"names":[],"mappings":";;AA4BO,SAAS,yBAA0B,CAAA;AAAA,EACxC,EAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,2BAAA;AAAA,EACA;AACF,CAAmC,EAAA;AACjC,EACE,IAAA,EAAA,KAAO,MACP,IAAA,EAAA,KAAO,IACP,IAAA,EAAA,KAAO,MACP,IAAA,EAAA,KAAO,IACP,IAAA,KAAA,KAAU,MACV,IAAA,KAAA,KAAU,CACV,EAAA;AACA,IAAO,OAAA,IAAA;AAAA;AAET,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AACvB,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AACvB,EAAA,4BACG,GAAE,EAAA,EAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,WAClB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,KAAA;AAAA,QACJ,EAAI,EAAA,KAAA;AAAA,QACJ,CAAG,EAAA,EAAA;AAAA,QACH,IAAK,EAAA,aAAA;AAAA,QACL,MAAO,EAAA,MAAA;AAAA,QACP,aAAc,EAAA,KAAA;AAAA,QACd,aAAY,EAAA,sCAAA;AAAA,QACZ,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,cAAA,CAAe,IAAI,CAAA;AACnB,UAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,UAAA,2BAAA,CAA4B,CAAC,CAAA;AAAA,SAC/B;AAAA,QACA,WAAa,EAAA,2BAAA;AAAA,QACb,YAAA,EAAc,MAAM,wBAAA,CAAyB,IAAI;AAAA;AAAA,KACnD;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,KAAA;AAAA,QACH,CAAG,EAAA,KAAA;AAAA,QACH,UAAW,EAAA,QAAA;AAAA,QACX,gBAAiB,EAAA,QAAA;AAAA,QACjB,IAAM,EAAA,gBAAA;AAAA,QACN,QAAU,EAAA,EAAA;AAAA,QACV,UAAY,EAAA,GAAA;AAAA,QACZ,aAAc,EAAA,MAAA;AAAA,QACd,aAAY,EAAA,6BAAA;AAAA,QAEX,QAAA,EAAA;AAAA;AAAA;AACH,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"AverageCardPieCenterLabel.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/AverageCardPieCenterLabel.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { PieLabelRenderProps } from 'recharts';\n\nimport { TooltipPosition } from './types';\n\ntype AverageCardPieCenterLabelProps = PieLabelRenderProps & {\n centerPercentLabel: string;\n arcResolvedColor: string;\n updateCenterTooltipPosition: (e: React.MouseEvent<SVGCircleElement>) => void;\n setCenterTooltipPosition: (position: TooltipPosition | null) => void;\n};\n\nexport function AverageCardPieCenterLabel({\n cx,\n cy,\n index,\n centerPercentLabel,\n arcResolvedColor,\n updateCenterTooltipPosition,\n setCenterTooltipPosition,\n}: AverageCardPieCenterLabelProps) {\n if (\n cx === undefined ||\n cx === null ||\n cy === undefined ||\n cy === null ||\n index === undefined ||\n index !== 0\n ) {\n return null;\n }\n const cxNum = Number(cx);\n const cyNum = Number(cy);\n return (\n <g style={{ cursor: 'pointer' }}>\n <circle\n cx={cxNum}\n cy={cyNum}\n r={52}\n fill=\"transparent\"\n stroke=\"none\"\n pointerEvents=\"all\"\n data-testid=\"average-card-center-percent-hit-area\"\n onMouseEnter={e => {\n updateCenterTooltipPosition(e);\n }}\n onMouseMove={updateCenterTooltipPosition}\n onMouseLeave={() => setCenterTooltipPosition(null)}\n />\n <text\n x={cxNum}\n y={cyNum}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n fill={arcResolvedColor}\n fontSize={24}\n fontWeight={500}\n pointerEvents=\"none\"\n data-testid=\"average-card-center-percent\"\n >\n {centerPercentLabel}\n </text>\n </g>\n );\n}\n"],"names":[],"mappings":";;AA2BO,SAAS,yBAA0B,CAAA;AAAA,EACxC,EAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,2BAAA;AAAA,EACA;AACF,CAAmC,EAAA;AACjC,EACE,IAAA,EAAA,KAAO,MACP,IAAA,EAAA,KAAO,IACP,IAAA,EAAA,KAAO,MACP,IAAA,EAAA,KAAO,IACP,IAAA,KAAA,KAAU,MACV,IAAA,KAAA,KAAU,CACV,EAAA;AACA,IAAO,OAAA,IAAA;AAAA;AAET,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AACvB,EAAM,MAAA,KAAA,GAAQ,OAAO,EAAE,CAAA;AACvB,EAAA,4BACG,GAAE,EAAA,EAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,WAClB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,KAAA;AAAA,QACJ,EAAI,EAAA,KAAA;AAAA,QACJ,CAAG,EAAA,EAAA;AAAA,QACH,IAAK,EAAA,aAAA;AAAA,QACL,MAAO,EAAA,MAAA;AAAA,QACP,aAAc,EAAA,KAAA;AAAA,QACd,aAAY,EAAA,sCAAA;AAAA,QACZ,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,2BAAA,CAA4B,CAAC,CAAA;AAAA,SAC/B;AAAA,QACA,WAAa,EAAA,2BAAA;AAAA,QACb,YAAA,EAAc,MAAM,wBAAA,CAAyB,IAAI;AAAA;AAAA,KACnD;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAG,EAAA,KAAA;AAAA,QACH,CAAG,EAAA,KAAA;AAAA,QACH,UAAW,EAAA,QAAA;AAAA,QACX,gBAAiB,EAAA,QAAA;AAAA,QACjB,IAAM,EAAA,gBAAA;AAAA,QACN,QAAU,EAAA,EAAA;AAAA,QACV,UAAY,EAAA,GAAA;AAAA,QACZ,aAAc,EAAA,MAAA;AAAA,QACd,aAAY,EAAA,6BAAA;AAAA,QAEX,QAAA,EAAA;AAAA;AAAA;AACH,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,28 +1,63 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import Box from '@mui/material/Box';
2
3
  import Stack from '@mui/material/Stack';
3
- import { TooltipContent } from './TooltipContent.esm.js';
4
+ import Typography from '@mui/material/Typography';
5
+ import { TooltipContent, formatAggregationScoreDetail } from './TooltipContent.esm.js';
4
6
  import { useTranslation } from '../../../hooks/useTranslation.esm.js';
5
7
 
6
8
  const DonutChartTooltipContent = ({
7
9
  weightedSum,
8
- maxPossible
10
+ maxPossible,
11
+ statusValues = []
9
12
  }) => {
10
13
  const { t } = useTranslation();
11
- return /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 3, children: [
12
- /* @__PURE__ */ jsx(
13
- TooltipContent,
14
+ const getStatus = (status) => {
15
+ const translatedStatus = t(`thresholds.${status}`, {});
16
+ if (translatedStatus === `thresholds.${status}` && status) {
17
+ return status.charAt(0).toUpperCase() + status.slice(1);
18
+ }
19
+ return translatedStatus;
20
+ };
21
+ return /* @__PURE__ */ jsxs(Stack, { spacing: 0.5, sx: { minWidth: 220 }, children: [
22
+ /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 3, children: [
23
+ /* @__PURE__ */ jsx(
24
+ TooltipContent,
25
+ {
26
+ label: t("metric.averageCenterTooltipTotalLabel"),
27
+ value: weightedSum
28
+ }
29
+ ),
30
+ /* @__PURE__ */ jsx(
31
+ TooltipContent,
32
+ {
33
+ label: t("metric.averageCenterTooltipMaxLabel"),
34
+ value: maxPossible
35
+ }
36
+ )
37
+ ] }),
38
+ statusValues.length > 0 ? /* @__PURE__ */ jsx(
39
+ Box,
14
40
  {
15
- label: t("metric.averageCenterTooltipTotalLabel"),
16
- value: weightedSum
41
+ sx: {
42
+ borderTop: 1,
43
+ borderColor: "divider",
44
+ pt: 1.5
45
+ },
46
+ children: /* @__PURE__ */ jsx(Stack, { spacing: 0.75, children: statusValues.map((row) => /* @__PURE__ */ jsx(
47
+ Typography,
48
+ {
49
+ variant: "body2",
50
+ sx: { color: "text.primary", fontWeight: 500 },
51
+ children: t("metric.averageCenterTooltipBreakdownRow", {
52
+ count: row.count,
53
+ status: getStatus(row.name),
54
+ score: formatAggregationScoreDetail(row.score ?? 0)
55
+ })
56
+ },
57
+ row.name
58
+ )) })
17
59
  }
18
- ),
19
- /* @__PURE__ */ jsx(
20
- TooltipContent,
21
- {
22
- label: t("metric.averageCenterTooltipMaxLabel"),
23
- value: maxPossible
24
- }
25
- )
60
+ ) : null
26
61
  ] });
27
62
  };
28
63
 
@@ -1 +1 @@
1
- {"version":3,"file":"DonutChartTooltipContent.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/DonutChartTooltipContent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 Stack from '@mui/material/Stack';\nimport { TooltipContent } from './TooltipContent';\nimport { useTranslation } from '../../../hooks/useTranslation';\n\nexport const DonutChartTooltipContent = ({\n weightedSum,\n maxPossible,\n}: {\n weightedSum: number | undefined;\n maxPossible: number | undefined;\n}) => {\n const { t } = useTranslation();\n\n return (\n <Stack direction=\"row\" spacing={3}>\n <TooltipContent\n label={t('metric.averageCenterTooltipTotalLabel')}\n value={weightedSum}\n />\n <TooltipContent\n label={t('metric.averageCenterTooltipMaxLabel')}\n value={maxPossible}\n />\n </Stack>\n );\n};\n"],"names":[],"mappings":";;;;;AAoBO,MAAM,2BAA2B,CAAC;AAAA,EACvC,WAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA;AAE7B,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAM,SAAU,EAAA,KAAA,EAAM,SAAS,CAC9B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,QAChD,KAAO,EAAA;AAAA;AAAA,KACT;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,QAC9C,KAAO,EAAA;AAAA;AAAA;AACT,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DonutChartTooltipContent.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/DonutChartTooltipContent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 type { AggregatedMetricValue } from '@red-hat-developer-hub/backstage-plugin-scorecard-common';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport { TooltipContent, formatAggregationScoreDetail } from './TooltipContent';\nimport { useTranslation } from '../../../hooks/useTranslation';\n\nexport const DonutChartTooltipContent = ({\n weightedSum,\n maxPossible,\n statusValues = [],\n}: {\n weightedSum: number | undefined;\n maxPossible: number | undefined;\n statusValues?: AggregatedMetricValue[];\n}) => {\n const { t } = useTranslation();\n\n const getStatus = (status: string) => {\n const translatedStatus = t(`thresholds.${status}` as any, {});\n\n if (translatedStatus === `thresholds.${status}` && status) {\n return status.charAt(0).toUpperCase() + status.slice(1);\n }\n\n return translatedStatus;\n };\n\n return (\n <Stack spacing={0.5} sx={{ minWidth: 220 }}>\n <Stack direction=\"row\" spacing={3}>\n <TooltipContent\n label={t('metric.averageCenterTooltipTotalLabel')}\n value={weightedSum}\n />\n <TooltipContent\n label={t('metric.averageCenterTooltipMaxLabel')}\n value={maxPossible}\n />\n </Stack>\n {statusValues.length > 0 ? (\n <Box\n sx={{\n borderTop: 1,\n borderColor: 'divider',\n pt: 1.5,\n }}\n >\n <Stack spacing={0.75}>\n {statusValues.map(row => (\n <Typography\n key={row.name}\n variant=\"body2\"\n sx={{ color: 'text.primary', fontWeight: 500 }}\n >\n {t('metric.averageCenterTooltipBreakdownRow', {\n count: row.count,\n status: getStatus(row.name),\n score: formatAggregationScoreDetail(row.score ?? 0),\n } as any)}\n </Typography>\n ))}\n </Stack>\n </Box>\n ) : null}\n </Stack>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAwBO,MAAM,2BAA2B,CAAC;AAAA,EACvC,WAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAe;AACjB,CAIM,KAAA;AACJ,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA;AAE7B,EAAM,MAAA,SAAA,GAAY,CAAC,MAAmB,KAAA;AACpC,IAAA,MAAM,mBAAmB,CAAE,CAAA,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAW,EAAE,CAAA;AAE5D,IAAA,IAAI,gBAAqB,KAAA,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,IAAM,MAAQ,EAAA;AACzD,MAAO,OAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAE,aAAgB,GAAA,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA;AAGxD,IAAO,OAAA,gBAAA;AAAA,GACT;AAEA,EACE,uBAAA,IAAA,CAAC,SAAM,OAAS,EAAA,GAAA,EAAK,IAAI,EAAE,QAAA,EAAU,KACnC,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAM,EAAA,EAAA,SAAA,EAAU,KAAM,EAAA,OAAA,EAAS,CAC9B,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,UAChD,KAAO,EAAA;AAAA;AAAA,OACT;AAAA,sBACA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,UAC9C,KAAO,EAAA;AAAA;AAAA;AACT,KACF,EAAA,CAAA;AAAA,IACC,YAAA,CAAa,SAAS,CACrB,mBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA;AAAA,UACF,SAAW,EAAA,CAAA;AAAA,UACX,WAAa,EAAA,SAAA;AAAA,UACb,EAAI,EAAA;AAAA,SACN;AAAA,QAEA,8BAAC,KAAM,EAAA,EAAA,OAAA,EAAS,IACb,EAAA,QAAA,EAAA,YAAA,CAAa,IAAI,CAChB,GAAA,qBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEC,OAAQ,EAAA,OAAA;AAAA,YACR,EAAI,EAAA,EAAE,KAAO,EAAA,cAAA,EAAgB,YAAY,GAAI,EAAA;AAAA,YAE5C,YAAE,yCAA2C,EAAA;AAAA,cAC5C,OAAO,GAAI,CAAA,KAAA;AAAA,cACX,MAAA,EAAQ,SAAU,CAAA,GAAA,CAAI,IAAI,CAAA;AAAA,cAC1B,KAAO,EAAA,4BAAA,CAA6B,GAAI,CAAA,KAAA,IAAS,CAAC;AAAA,aAC5C;AAAA,WAAA;AAAA,UARH,GAAI,CAAA;AAAA,SAUZ,CACH,EAAA;AAAA;AAAA,KAEA,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -10,11 +10,12 @@ const ResponsivePieChart = ({
10
10
  setIsInsidePieCircle
11
11
  }) => {
12
12
  const isTooltipEnabled = Boolean(tooltipContent);
13
+ const pieCx = legendContent ? "30%" : "50%";
13
14
  return /* @__PURE__ */ jsx(ResponsiveContainer, { style: { outline: "none" }, children: /* @__PURE__ */ jsxs(PieChart, { responsive: true, children: [
14
15
  isErrorState && /* @__PURE__ */ jsx("g", { children: /* @__PURE__ */ jsx(
15
16
  "circle",
16
17
  {
17
- cx: "30%",
18
+ cx: pieCx,
18
19
  cy: "50%",
19
20
  r: 90,
20
21
  fill: "transparent",
@@ -35,7 +36,7 @@ const ResponsivePieChart = ({
35
36
  data: pieData,
36
37
  dataKey: "value",
37
38
  nameKey: "name",
38
- cx: "30%",
39
+ cx: pieCx,
39
40
  cy: "50%",
40
41
  innerRadius: "78%",
41
42
  outerRadius: "90%",
@@ -56,7 +57,7 @@ const ResponsivePieChart = ({
56
57
  children: pieData.map((category) => /* @__PURE__ */ jsx(Cell, { fill: category.color }, category.name))
57
58
  }
58
59
  ),
59
- /* @__PURE__ */ jsx(
60
+ legendContent ? /* @__PURE__ */ jsx(
60
61
  Legend,
61
62
  {
62
63
  layout: "vertical",
@@ -67,7 +68,7 @@ const ResponsivePieChart = ({
67
68
  },
68
69
  content: legendContent
69
70
  }
70
- ),
71
+ ) : null,
71
72
  /* @__PURE__ */ jsx(Tooltip, { content: isTooltipEnabled ? tooltipContent : () => null })
72
73
  ] }) });
73
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsivePieChart.esm.js","sources":["../../../src/components/ScorecardHomepageSection/ResponsivePieChart.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 {\n PieChart,\n Pie,\n ResponsiveContainer,\n Cell,\n Legend,\n Tooltip,\n PieLabelRenderProps,\n} from 'recharts';\nimport type { PieData } from '../types';\n\nexport interface PieTooltipPayload {\n name?: string;\n value?: number;\n payload?: {\n name: string;\n value: number;\n color?: string;\n };\n}\n\nexport interface PieLegendItem {\n value?: string;\n color?: string;\n}\n\nexport interface PieLegendContentProps {\n payload?: readonly PieLegendItem[];\n}\n\ninterface PieTooltipContentProps {\n active?: boolean;\n coordinate?: { x: number; y: number };\n payload?: readonly PieTooltipPayload[];\n label?: string | number;\n}\ninterface ResponsivePieChartProps {\n pieData: PieData[];\n LabelContent?: (props: PieLabelRenderProps) => React.ReactNode;\n legendContent: (props: PieLegendContentProps) => React.ReactNode;\n tooltipContent?: (props: PieTooltipContentProps) => React.ReactNode;\n isErrorState?: boolean;\n setIsInsidePieCircle?: (isInside: boolean) => void;\n}\n\nexport const ResponsivePieChart = ({\n pieData,\n LabelContent,\n legendContent,\n tooltipContent,\n isErrorState,\n setIsInsidePieCircle,\n}: ResponsivePieChartProps) => {\n const isTooltipEnabled = Boolean(tooltipContent);\n\n return (\n <ResponsiveContainer style={{ outline: 'none' }}>\n <PieChart responsive>\n {/* This is the circle that is used to trigger the tooltip */}\n {isErrorState && (\n <g>\n <circle\n cx=\"30%\"\n cy=\"50%\"\n r={90}\n fill=\"transparent\"\n style={{ cursor: 'pointer' }}\n onMouseEnter={e => {\n setIsInsidePieCircle?.(true);\n e.stopPropagation?.();\n }}\n onMouseLeave={e => {\n setIsInsidePieCircle?.(false);\n e.stopPropagation();\n }}\n />\n </g>\n )}\n\n <Pie\n data={pieData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"30%\"\n cy=\"50%\"\n innerRadius=\"78%\"\n outerRadius=\"90%\"\n startAngle={90}\n endAngle={-270}\n stroke=\"none\"\n cursor={isTooltipEnabled ? 'pointer' : undefined}\n isAnimationActive={false}\n labelLine={false}\n label={LabelContent}\n style={{ outline: 'none' }}\n onMouseEnter={() => {\n setIsInsidePieCircle?.(true);\n }}\n onMouseLeave={() => {\n setIsInsidePieCircle?.(false);\n }}\n >\n {pieData.map(category => (\n <Cell key={category.name} fill={category.color} />\n ))}\n </Pie>\n\n <Legend\n layout=\"vertical\"\n verticalAlign=\"middle\"\n wrapperStyle={{\n position: 'absolute',\n left: '60%',\n }}\n content={legendContent}\n />\n\n <Tooltip content={isTooltipEnabled ? tooltipContent : () => null} />\n </PieChart>\n </ResponsiveContainer>\n );\n};\n"],"names":[],"mappings":";;;AA6DO,MAAM,qBAAqB,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA+B,KAAA;AAC7B,EAAM,MAAA,gBAAA,GAAmB,QAAQ,cAAc,CAAA;AAE/C,EACE,uBAAA,GAAA,CAAC,mBAAoB,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QACrC,EAAA,QAAA,kBAAA,IAAA,CAAC,QAAS,EAAA,EAAA,UAAA,EAAU,IAEjB,EAAA,QAAA,EAAA;AAAA,IAAA,YAAA,wBACE,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,KAAA;AAAA,QACH,EAAG,EAAA,KAAA;AAAA,QACH,CAAG,EAAA,EAAA;AAAA,QACH,IAAK,EAAA,aAAA;AAAA,QACL,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,QAC3B,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,oBAAA,GAAuB,IAAI,CAAA;AAC3B,UAAA,CAAA,CAAE,eAAkB,IAAA;AAAA,SACtB;AAAA,QACA,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,oBAAA,GAAuB,KAAK,CAAA;AAC5B,UAAA,CAAA,CAAE,eAAgB,EAAA;AAAA;AACpB;AAAA,KAEJ,EAAA,CAAA;AAAA,oBAGF,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,OAAA;AAAA,QACN,OAAQ,EAAA,OAAA;AAAA,QACR,OAAQ,EAAA,MAAA;AAAA,QACR,EAAG,EAAA,KAAA;AAAA,QACH,EAAG,EAAA,KAAA;AAAA,QACH,WAAY,EAAA,KAAA;AAAA,QACZ,WAAY,EAAA,KAAA;AAAA,QACZ,UAAY,EAAA,EAAA;AAAA,QACZ,QAAU,EAAA,IAAA;AAAA,QACV,MAAO,EAAA,MAAA;AAAA,QACP,MAAA,EAAQ,mBAAmB,SAAY,GAAA,MAAA;AAAA,QACvC,iBAAmB,EAAA,KAAA;AAAA,QACnB,SAAW,EAAA,KAAA;AAAA,QACX,KAAO,EAAA,YAAA;AAAA,QACP,KAAA,EAAO,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,QACzB,cAAc,MAAM;AAClB,UAAA,oBAAA,GAAuB,IAAI,CAAA;AAAA,SAC7B;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,SAC9B;AAAA,QAEC,QAAA,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,QAAA,qBACV,GAAA,CAAA,IAAA,EAAA,EAAyB,MAAM,QAAS,CAAA,KAAA,EAAA,EAA9B,QAAS,CAAA,IAA4B,CACjD;AAAA;AAAA,KACH;AAAA,oBAEA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,MAAO,EAAA,UAAA;AAAA,QACP,aAAc,EAAA,QAAA;AAAA,QACd,YAAc,EAAA;AAAA,UACZ,QAAU,EAAA,UAAA;AAAA,UACV,IAAM,EAAA;AAAA,SACR;AAAA,QACA,OAAS,EAAA;AAAA;AAAA,KACX;AAAA,wBAEC,OAAQ,EAAA,EAAA,OAAA,EAAS,gBAAmB,GAAA,cAAA,GAAiB,MAAM,IAAM,EAAA;AAAA,GAAA,EACpE,CACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ResponsivePieChart.esm.js","sources":["../../../src/components/ScorecardHomepageSection/ResponsivePieChart.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 {\n PieChart,\n Pie,\n ResponsiveContainer,\n Cell,\n Legend,\n Tooltip,\n PieLabelRenderProps,\n} from 'recharts';\nimport type { PieData } from '../types';\n\nexport interface PieTooltipPayload {\n name?: string;\n value?: number;\n payload?: {\n name: string;\n value: number;\n color?: string;\n };\n}\n\nexport interface PieLegendItem {\n value?: string;\n color?: string;\n}\n\nexport interface PieLegendContentProps {\n payload?: readonly PieLegendItem[];\n}\n\ninterface PieTooltipContentProps {\n active?: boolean;\n coordinate?: { x: number; y: number };\n payload?: readonly PieTooltipPayload[];\n label?: string | number;\n}\ninterface ResponsivePieChartProps {\n pieData: PieData[];\n LabelContent?: (props: PieLabelRenderProps) => React.ReactNode;\n legendContent?: (props: PieLegendContentProps) => React.ReactNode;\n tooltipContent?: (props: PieTooltipContentProps) => React.ReactNode;\n isErrorState?: boolean;\n setIsInsidePieCircle?: (isInside: boolean) => void;\n}\n\nexport const ResponsivePieChart = ({\n pieData,\n LabelContent,\n legendContent,\n tooltipContent,\n isErrorState,\n setIsInsidePieCircle,\n}: ResponsivePieChartProps) => {\n const isTooltipEnabled = Boolean(tooltipContent);\n const pieCx = legendContent ? '30%' : '50%';\n\n return (\n <ResponsiveContainer style={{ outline: 'none' }}>\n <PieChart responsive>\n {/* This is the circle that is used to trigger the tooltip */}\n {isErrorState && (\n <g>\n <circle\n cx={pieCx}\n cy=\"50%\"\n r={90}\n fill=\"transparent\"\n style={{ cursor: 'pointer' }}\n onMouseEnter={e => {\n setIsInsidePieCircle?.(true);\n e.stopPropagation?.();\n }}\n onMouseLeave={e => {\n setIsInsidePieCircle?.(false);\n e.stopPropagation();\n }}\n />\n </g>\n )}\n\n <Pie\n data={pieData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx={pieCx}\n cy=\"50%\"\n innerRadius=\"78%\"\n outerRadius=\"90%\"\n startAngle={90}\n endAngle={-270}\n stroke=\"none\"\n cursor={isTooltipEnabled ? 'pointer' : undefined}\n isAnimationActive={false}\n labelLine={false}\n label={LabelContent}\n style={{ outline: 'none' }}\n onMouseEnter={() => {\n setIsInsidePieCircle?.(true);\n }}\n onMouseLeave={() => {\n setIsInsidePieCircle?.(false);\n }}\n >\n {pieData.map(category => (\n <Cell key={category.name} fill={category.color} />\n ))}\n </Pie>\n\n {legendContent ? (\n <Legend\n layout=\"vertical\"\n verticalAlign=\"middle\"\n wrapperStyle={{\n position: 'absolute',\n left: '60%',\n }}\n content={legendContent}\n />\n ) : null}\n\n <Tooltip content={isTooltipEnabled ? tooltipContent : () => null} />\n </PieChart>\n </ResponsiveContainer>\n );\n};\n"],"names":[],"mappings":";;;AA6DO,MAAM,qBAAqB,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA+B,KAAA;AAC7B,EAAM,MAAA,gBAAA,GAAmB,QAAQ,cAAc,CAAA;AAC/C,EAAM,MAAA,KAAA,GAAQ,gBAAgB,KAAQ,GAAA,KAAA;AAEtC,EACE,uBAAA,GAAA,CAAC,mBAAoB,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QACrC,EAAA,QAAA,kBAAA,IAAA,CAAC,QAAS,EAAA,EAAA,UAAA,EAAU,IAEjB,EAAA,QAAA,EAAA;AAAA,IAAA,YAAA,wBACE,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA,KAAA;AAAA,QACJ,EAAG,EAAA,KAAA;AAAA,QACH,CAAG,EAAA,EAAA;AAAA,QACH,IAAK,EAAA,aAAA;AAAA,QACL,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,QAC3B,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,oBAAA,GAAuB,IAAI,CAAA;AAC3B,UAAA,CAAA,CAAE,eAAkB,IAAA;AAAA,SACtB;AAAA,QACA,cAAc,CAAK,CAAA,KAAA;AACjB,UAAA,oBAAA,GAAuB,KAAK,CAAA;AAC5B,UAAA,CAAA,CAAE,eAAgB,EAAA;AAAA;AACpB;AAAA,KAEJ,EAAA,CAAA;AAAA,oBAGF,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,OAAA;AAAA,QACN,OAAQ,EAAA,OAAA;AAAA,QACR,OAAQ,EAAA,MAAA;AAAA,QACR,EAAI,EAAA,KAAA;AAAA,QACJ,EAAG,EAAA,KAAA;AAAA,QACH,WAAY,EAAA,KAAA;AAAA,QACZ,WAAY,EAAA,KAAA;AAAA,QACZ,UAAY,EAAA,EAAA;AAAA,QACZ,QAAU,EAAA,IAAA;AAAA,QACV,MAAO,EAAA,MAAA;AAAA,QACP,MAAA,EAAQ,mBAAmB,SAAY,GAAA,MAAA;AAAA,QACvC,iBAAmB,EAAA,KAAA;AAAA,QACnB,SAAW,EAAA,KAAA;AAAA,QACX,KAAO,EAAA,YAAA;AAAA,QACP,KAAA,EAAO,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,QACzB,cAAc,MAAM;AAClB,UAAA,oBAAA,GAAuB,IAAI,CAAA;AAAA,SAC7B;AAAA,QACA,cAAc,MAAM;AAClB,UAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,SAC9B;AAAA,QAEC,QAAA,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,QAAA,qBACV,GAAA,CAAA,IAAA,EAAA,EAAyB,MAAM,QAAS,CAAA,KAAA,EAAA,EAA9B,QAAS,CAAA,IAA4B,CACjD;AAAA;AAAA,KACH;AAAA,IAEC,aACC,mBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,MAAO,EAAA,UAAA;AAAA,QACP,aAAc,EAAA,QAAA;AAAA,QACd,YAAc,EAAA;AAAA,UACZ,QAAU,EAAA,UAAA;AAAA,UACV,IAAM,EAAA;AAAA,SACR;AAAA,QACA,OAAS,EAAA;AAAA;AAAA,KAET,GAAA,IAAA;AAAA,wBAEH,OAAQ,EAAA,EAAA,OAAA,EAAS,gBAAmB,GAAA,cAAA,GAAiB,MAAM,IAAM,EAAA;AAAA,GAAA,EACpE,CACF,EAAA,CAAA;AAEJ;;;;"}
@@ -8,6 +8,7 @@ import '../../api/index.esm.js';
8
8
  import { ScorecardHomepageCard } from '../ScorecardHomepageSection/ScorecardHomepageCard.esm.js';
9
9
  import NotFoundState from '../Common/NotFoundState.esm.js';
10
10
  import { useTranslation } from '../../hooks/useTranslation.esm.js';
11
+ import { resolveMetricTranslation } from '../../utils/translationUtils.esm.js';
11
12
  import { ScorecardPageHeader } from './ScorecardPageHeader.esm.js';
12
13
  import { EntitiesTable } from './EntitiesTable/EntitiesTable.esm.js';
13
14
  import { ScorecardQueryProvider } from '../../api/ScorecardQueryProvider.esm.js';
@@ -18,9 +19,7 @@ const ScorecardPage = () => {
18
19
  const [metricTitle, setMetricTitle] = useState("");
19
20
  const [metricNotFound, setMetricNotFound] = useState(false);
20
21
  const { t } = useTranslation();
21
- const titleKey = `metric.${resolvedMetricId}.title`;
22
- const title = t(titleKey, {});
23
- const finalTitle = title === titleKey ? metricTitle : title;
22
+ const finalTitle = resolveMetricTranslation(t, resolvedMetricId, "title", metricTitle) || metricTitle;
24
23
  if (metricNotFound) {
25
24
  return /* @__PURE__ */ jsx(Page, { themeId: "home", children: /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsx(NotFoundState, {}) }) });
26
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScorecardPage.esm.js","sources":["../../../src/components/ScorecardPage/ScorecardPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { Content, Page } from '@backstage/core-components';\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\n\nimport { ScorecardQueryProvider } from '../../api';\nimport { ScorecardHomepageCard } from '../ScorecardHomepageSection/ScorecardHomepageCard';\nimport NotFoundState from '../Common/NotFoundState';\nimport { useTranslation } from '../../hooks/useTranslation';\n\nimport { ScorecardPageHeader } from './ScorecardPageHeader';\nimport { EntitiesTable } from './EntitiesTable/EntitiesTable';\n\nexport const ScorecardPage = () => {\n const { aggregationId = '', metricId = '' } = useParams<{\n aggregationId: string;\n metricId: string;\n }>();\n\n // TODO: Remove metricId once we deprecate it. We need to keep it for backward compatibility.\n const resolvedMetricId = aggregationId || metricId || '';\n\n const [metricTitle, setMetricTitle] = useState<string>('');\n const [metricNotFound, setMetricNotFound] = useState<boolean>(false);\n\n const { t } = useTranslation();\n\n const titleKey = `metric.${resolvedMetricId}.title`;\n const title = t(titleKey as any, {});\n const finalTitle = title === titleKey ? metricTitle : title;\n\n if (metricNotFound) {\n return (\n <Page themeId=\"home\">\n <Content>\n <NotFoundState />\n </Content>\n </Page>\n );\n }\n\n return (\n <Page themeId=\"home\">\n <ScorecardPageHeader\n title={\n finalTitle ||\n metricId ||\n aggregationId ||\n t('entitiesPage.unknownMetric')\n }\n />\n <Divider />\n <Content>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n gap: 3,\n py: 2,\n }}\n >\n <Box sx={{ flex: { xs: '1 1 100%', lg: '1 1 0%' }, minWidth: 0 }}>\n <EntitiesTable\n metricId={metricId}\n aggregationId={aggregationId}\n setMetricTitle={setMetricTitle}\n setMetricNotFound={setMetricNotFound}\n />\n </Box>\n <Box\n sx={{\n flex: { xs: '1 1 100%', lg: '0 0 33%' },\n minWidth: 0,\n alignSelf: 'flex-start',\n height: { xs: 320, sm: 380 },\n '& > *': { height: '100%' },\n '& > div[class*=\"MuiCard-root\"]': {\n height: '100%',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n },\n '& div[class*=\"MuiCardContent-root\"]': {\n flex: 1,\n minHeight: 0,\n },\n }}\n >\n <ScorecardHomepageCard\n aggregationId={aggregationId}\n metricId={metricId}\n showSubheader={false}\n showInfo={false}\n />\n </Box>\n </Box>\n </Content>\n </Page>\n );\n};\n\n/**\n * ScorecardPage wrapped with QueryClientProvider so it works\n * when rendered outside a tree that already has a provider (e.g. on the homepage).\n */\nexport const ScorecardPageWithProvider = () => (\n <ScorecardQueryProvider>\n <ScorecardPage />\n </ScorecardQueryProvider>\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScorecardPage.esm.js","sources":["../../../src/components/ScorecardPage/ScorecardPage.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { Content, Page } from '@backstage/core-components';\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\n\nimport { ScorecardQueryProvider } from '../../api';\nimport { ScorecardHomepageCard } from '../ScorecardHomepageSection/ScorecardHomepageCard';\nimport NotFoundState from '../Common/NotFoundState';\nimport { useTranslation } from '../../hooks/useTranslation';\nimport { resolveMetricTranslation } from '../../utils/translationUtils';\n\nimport { ScorecardPageHeader } from './ScorecardPageHeader';\nimport { EntitiesTable } from './EntitiesTable/EntitiesTable';\n\nexport const ScorecardPage = () => {\n const { aggregationId = '', metricId = '' } = useParams<{\n aggregationId: string;\n metricId: string;\n }>();\n\n // TODO: Remove metricId once we deprecate it. We need to keep it for backward compatibility.\n const resolvedMetricId = aggregationId || metricId || '';\n\n const [metricTitle, setMetricTitle] = useState<string>('');\n const [metricNotFound, setMetricNotFound] = useState<boolean>(false);\n\n const { t } = useTranslation();\n\n const finalTitle =\n resolveMetricTranslation(t, resolvedMetricId, 'title', metricTitle) ||\n metricTitle;\n\n if (metricNotFound) {\n return (\n <Page themeId=\"home\">\n <Content>\n <NotFoundState />\n </Content>\n </Page>\n );\n }\n\n return (\n <Page themeId=\"home\">\n <ScorecardPageHeader\n title={\n finalTitle ||\n metricId ||\n aggregationId ||\n t('entitiesPage.unknownMetric')\n }\n />\n <Divider />\n <Content>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n gap: 3,\n py: 2,\n }}\n >\n <Box sx={{ flex: { xs: '1 1 100%', lg: '1 1 0%' }, minWidth: 0 }}>\n <EntitiesTable\n metricId={metricId}\n aggregationId={aggregationId}\n setMetricTitle={setMetricTitle}\n setMetricNotFound={setMetricNotFound}\n />\n </Box>\n <Box\n sx={{\n flex: { xs: '1 1 100%', lg: '0 0 33%' },\n minWidth: 0,\n alignSelf: 'flex-start',\n height: { xs: 320, sm: 380 },\n '& > *': { height: '100%' },\n '& > div[class*=\"MuiCard-root\"]': {\n height: '100%',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n },\n '& div[class*=\"MuiCardContent-root\"]': {\n flex: 1,\n minHeight: 0,\n },\n }}\n >\n <ScorecardHomepageCard\n aggregationId={aggregationId}\n metricId={metricId}\n showSubheader={false}\n showInfo={false}\n />\n </Box>\n </Box>\n </Content>\n </Page>\n );\n};\n\n/**\n * ScorecardPage wrapped with QueryClientProvider so it works\n * when rendered outside a tree that already has a provider (e.g. on the homepage).\n */\nexport const ScorecardPageWithProvider = () => (\n <ScorecardQueryProvider>\n <ScorecardPage />\n </ScorecardQueryProvider>\n);\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
- export { a as scorecardTranslationRef, s as scorecardTranslations } from './types/index.d-Bzst_d5c.js';
3
+ export { a as scorecardTranslationRef, s as scorecardTranslations } from './types/index.d-LfNMVZwd.js';
4
4
  export { default as ScorecardSuccessStatusIcon } from '@mui/icons-material/CheckCircleOutline';
5
5
  export { default as ScorecardWarningStatusIcon } from '@mui/icons-material/WarningAmber';
6
6
  export { default as ScorecardErrorStatusIcon } from '@mui/icons-material/DangerousOutlined';
@@ -75,6 +75,8 @@ const scorecardTranslationDe = createTranslationMessages({
75
75
  "metric.someEntitiesNotReportingValues": "Einige Elemente melden keine Werte, die mit dieser Metrik in Verbindung stehen.",
76
76
  "metric.averageCenterTooltipTotalLabel": "Gesamtpunktzahl",
77
77
  "metric.averageCenterTooltipMaxLabel": "Maximal m\xF6gliche Punktzahl",
78
+ "metric.averageCenterTooltipBreakdownRow_one": "{{status}}: {{count}} Element, Punktzahl: {{score}}",
79
+ "metric.averageCenterTooltipBreakdownRow_other": "{{status}}: {{count}} Elemente, Punktzahl: {{score}}",
78
80
  "metric.averageLegendTooltipEntitiesEach_one": "{{count}} Element, je {{score}}",
79
81
  "metric.averageLegendTooltipEntitiesEach_other": "{{count}} Elemente, je {{score}}",
80
82
  "metric.averageLegendTooltipRowTotal": "Gesamtpunktzahl {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * de translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationDe = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Noch keine Scorecards hinzugefügt',\n 'emptyState.description':\n 'Scorecards helfen Ihnen, den Zustand der Komponenten auf einen Blick zu überwachen. Schauen Sie sich zunächst unsere Dokumentation mit den Einrichtungshinweisen an.',\n 'emptyState.button': 'Dokumentation anzeigen',\n 'emptyState.altText': 'Keine Scorecards',\n\n // Permission required translations\n 'permissionRequired.title': 'Fehlende Berechtigung',\n 'permissionRequired.description':\n 'Wenn Sie das Scorecard-Plugin anzeigen möchten, wenden Sie sich an den Administrator, um die Berechtigung {{permission}} zu erhalten.',\n 'permissionRequired.button': 'Mehr erfahren',\n 'permissionRequired.altText': 'Berechtigung erforderlich',\n\n // Common UI\n 'common.loading': 'Wird geladen',\n\n // Not found state\n 'notFound.title': '404 Diese Seite wurde nicht gefunden',\n 'notFound.description':\n 'Fügen Sie eine {{indexFile}}-Datei im Stammverzeichnis des docs-Ordners dieses Repositorys hinzu.',\n 'notFound.readMore': 'Mehr erfahren',\n 'notFound.goBack': 'Zurück',\n 'notFound.contactSupport': 'Support kontaktieren',\n 'notFound.altText': 'Seite nicht gefunden',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Für die Scorecard-Suche fehlen dem Element die erforderlichen Eigenschaften.',\n 'errors.missingAggregationId':\n 'Die Scorecard ist falsch konfiguriert; die Eigenschaft „Aggregations-ID“ (oder „Metrik-ID“) wurde nicht angegeben',\n 'errors.invalidApiResponse': 'Ungültiges Antwortformat der Scorecard-API',\n 'errors.fetchError': 'Fehler beim Abrufen der Scorecards: {{error}}',\n 'errors.metricDataUnavailable': 'Metrikdaten nicht verfügbar',\n 'errors.invalidThresholds': 'Ungültige Schwellenwerte',\n 'errors.missingPermission': 'Fehlende Berechtigung',\n 'errors.noDataFound': 'Keine Daten gefunden',\n 'errors.authenticationError': 'Authentifizierungsfehler',\n 'errors.missingPermissionMessage':\n 'Um die Metriken der Scorecard einzusehen, muss Ihnen der Administrator die erforderliche Berechtigung erteilen.',\n 'errors.userNotFoundInCatalogMessage':\n 'Benutzer-Element nicht im Katalog gefunden.',\n 'errors.noDataFoundMessage':\n 'Um Ihre Daten hier anzuzeigen, überprüfen Sie, ob Ihre Elemente Werte melden, die mit dieser Metrik in Verbindung stehen.',\n 'errors.unsupportedAggregationType':\n 'Diese Scorecard verwendet einen Aggregationstyp, der von dieser Plugin-Version nicht unterstützt wird.',\n 'errors.authenticationErrorMessage':\n 'Bitte melden Sie sich an, um Ihre Daten anzuzeigen.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub PRs offen',\n 'metric.github.open_prs.description':\n 'Aktuelle Anzahl offener Pull Requests für ein bestimmtes GitHub-Repository.',\n 'metric.jira.open_issues.title': 'Jira offene blockierende Tickets',\n 'metric.jira.open_issues.description':\n 'Hervorhebt die Anzahl der kritischen, blockierenden Probleme, die derzeit in Jira offen sind.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Quality-Gate-Status',\n 'metric.sonarqube.quality_gate.description':\n 'Gibt an, ob das Projekt sein SonarQube-Quality-Gate besteht.',\n 'metric.sonarqube.open_issues.title': 'SonarQube offene Probleme',\n 'metric.sonarqube.open_issues.description':\n 'Anzahl der offenen Probleme (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n 'metric.sonarqube.security_rating.title': 'SonarQube Sicherheitsbewertung',\n 'metric.sonarqube.security_rating.description':\n 'SonarQube Sicherheitsbewertung.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Sicherheitsprobleme',\n 'metric.sonarqube.security_issues.description':\n 'Anzahl der offenen Sicherheitslücken in SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Bewertung der Sicherheitsüberprüfung',\n 'metric.sonarqube.security_review_rating.description':\n 'SonarQube Bewertung der Sicherheitsüberprüfung.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Sicherheits-Hotspots',\n 'metric.sonarqube.security_hotspots.description':\n 'Anzahl der zu überprüfenden Sicherheits-Hotspots in SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Zuverlässigkeitsbewertung',\n 'metric.sonarqube.reliability_rating.description':\n 'SonarQube Zuverlässigkeitsbewertung.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Zuverlässigkeitsprobleme',\n 'metric.sonarqube.reliability_issues.description':\n 'Anzahl der offenen Fehler in SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Wartbarkeitsbewertung',\n 'metric.sonarqube.maintainability_rating.description':\n 'SonarQube Wartbarkeitsbewertung.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Wartbarkeitsprobleme',\n 'metric.sonarqube.maintainability_issues.description':\n 'Anzahl der offenen Code Smells in SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Code-Abdeckung',\n 'metric.sonarqube.code_coverage.description':\n 'Gesamtprozentsatz der Code-Abdeckung in SonarQube.',\n 'metric.sonarqube.code_duplications.title': 'SonarQube Code-Duplikate',\n 'metric.sonarqube.code_duplications.description':\n 'Prozentsatz der duplizierten Zeilen in SonarQube.',\n 'metric.filecheck.title': 'Dateiprüfung: {{name}}',\n 'metric.filecheck.description':\n 'Prüft, ob die Datei {{name}} im Repository vorhanden ist.',\n 'metric.lastUpdated': 'Zuletzt aktualisiert: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Zuletzt aktualisiert: Nicht verfügbar',\n 'metric.someEntitiesNotReportingValues':\n 'Einige Elemente melden keine Werte, die mit dieser Metrik in Verbindung stehen.',\n 'metric.averageCenterTooltipTotalLabel': 'Gesamtpunktzahl',\n 'metric.averageCenterTooltipMaxLabel': 'Maximal mögliche Punktzahl',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} Element, je {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} Elemente, je {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Gesamtpunktzahl {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Mindestens ein Element konnte diese Metrik nicht berechnen.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} Elemente',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} Elemente ohne Metrik-Berechnungsfehler',\n\n // Threshold translations\n 'thresholds.success': 'Erfolg',\n 'thresholds.warning': 'Warnung',\n 'thresholds.error': 'Fehler',\n 'thresholds.exist': 'Vorhanden',\n 'thresholds.missing': 'Fehlend',\n 'thresholds.noEntities': 'Keine Elemente im {{category}}-Zustand',\n 'thresholds.entities_one': '{{count}} Element',\n 'thresholds.entities_other': '{{count}} Elemente',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Unbekannte Metrik',\n 'entitiesPage.noDataFound':\n 'Um Ihre Daten hier anzuzeigen, überprüfen Sie, ob Ihre Elemente Werte melden, die mit dieser Metrik in Verbindung stehen.',\n 'entitiesPage.missingPermission':\n 'Um die Metriken der Scorecard einzusehen, muss Ihnen der Administrator die erforderliche Berechtigung erteilen.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Metrik-Anbieter mit ID {{metricId}} ist nicht registriert.',\n 'entitiesPage.entitiesTable.title': 'Elemente',\n 'entitiesPage.entitiesTable.unavailable': 'Nicht verfügbar',\n 'entitiesPage.entitiesTable.titleWithCount': 'Elemente ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Status',\n 'entitiesPage.entitiesTable.header.value': 'Wert',\n 'entitiesPage.entitiesTable.header.entity': 'Element',\n 'entitiesPage.entitiesTable.header.owner': 'Eigentümer',\n 'entitiesPage.entitiesTable.header.kind': 'Art',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Zuletzt aktualisiert',\n 'entitiesPage.entitiesTable.footer.allRows': 'Alle Zeilen',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} Zeile',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} Zeilen',\n 'entitiesPage.entitiesTable.footer.of': 'von',\n },\n});\n\nexport default scorecardTranslationDe;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * de translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationDe = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Noch keine Scorecards hinzugefügt',\n 'emptyState.description':\n 'Scorecards helfen Ihnen, den Zustand der Komponenten auf einen Blick zu überwachen. Schauen Sie sich zunächst unsere Dokumentation mit den Einrichtungshinweisen an.',\n 'emptyState.button': 'Dokumentation anzeigen',\n 'emptyState.altText': 'Keine Scorecards',\n\n // Permission required translations\n 'permissionRequired.title': 'Fehlende Berechtigung',\n 'permissionRequired.description':\n 'Wenn Sie das Scorecard-Plugin anzeigen möchten, wenden Sie sich an den Administrator, um die Berechtigung {{permission}} zu erhalten.',\n 'permissionRequired.button': 'Mehr erfahren',\n 'permissionRequired.altText': 'Berechtigung erforderlich',\n\n // Common UI\n 'common.loading': 'Wird geladen',\n\n // Not found state\n 'notFound.title': '404 Diese Seite wurde nicht gefunden',\n 'notFound.description':\n 'Fügen Sie eine {{indexFile}}-Datei im Stammverzeichnis des docs-Ordners dieses Repositorys hinzu.',\n 'notFound.readMore': 'Mehr erfahren',\n 'notFound.goBack': 'Zurück',\n 'notFound.contactSupport': 'Support kontaktieren',\n 'notFound.altText': 'Seite nicht gefunden',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Für die Scorecard-Suche fehlen dem Element die erforderlichen Eigenschaften.',\n 'errors.missingAggregationId':\n 'Die Scorecard ist falsch konfiguriert; die Eigenschaft „Aggregations-ID“ (oder „Metrik-ID“) wurde nicht angegeben',\n 'errors.invalidApiResponse': 'Ungültiges Antwortformat der Scorecard-API',\n 'errors.fetchError': 'Fehler beim Abrufen der Scorecards: {{error}}',\n 'errors.metricDataUnavailable': 'Metrikdaten nicht verfügbar',\n 'errors.invalidThresholds': 'Ungültige Schwellenwerte',\n 'errors.missingPermission': 'Fehlende Berechtigung',\n 'errors.noDataFound': 'Keine Daten gefunden',\n 'errors.authenticationError': 'Authentifizierungsfehler',\n 'errors.missingPermissionMessage':\n 'Um die Metriken der Scorecard einzusehen, muss Ihnen der Administrator die erforderliche Berechtigung erteilen.',\n 'errors.userNotFoundInCatalogMessage':\n 'Benutzer-Element nicht im Katalog gefunden.',\n 'errors.noDataFoundMessage':\n 'Um Ihre Daten hier anzuzeigen, überprüfen Sie, ob Ihre Elemente Werte melden, die mit dieser Metrik in Verbindung stehen.',\n 'errors.unsupportedAggregationType':\n 'Diese Scorecard verwendet einen Aggregationstyp, der von dieser Plugin-Version nicht unterstützt wird.',\n 'errors.authenticationErrorMessage':\n 'Bitte melden Sie sich an, um Ihre Daten anzuzeigen.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub PRs offen',\n 'metric.github.open_prs.description':\n 'Aktuelle Anzahl offener Pull Requests für ein bestimmtes GitHub-Repository.',\n 'metric.jira.open_issues.title': 'Jira offene blockierende Tickets',\n 'metric.jira.open_issues.description':\n 'Hervorhebt die Anzahl der kritischen, blockierenden Probleme, die derzeit in Jira offen sind.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Quality-Gate-Status',\n 'metric.sonarqube.quality_gate.description':\n 'Gibt an, ob das Projekt sein SonarQube-Quality-Gate besteht.',\n 'metric.sonarqube.open_issues.title': 'SonarQube offene Probleme',\n 'metric.sonarqube.open_issues.description':\n 'Anzahl der offenen Probleme (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n 'metric.sonarqube.security_rating.title': 'SonarQube Sicherheitsbewertung',\n 'metric.sonarqube.security_rating.description':\n 'SonarQube Sicherheitsbewertung.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Sicherheitsprobleme',\n 'metric.sonarqube.security_issues.description':\n 'Anzahl der offenen Sicherheitslücken in SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Bewertung der Sicherheitsüberprüfung',\n 'metric.sonarqube.security_review_rating.description':\n 'SonarQube Bewertung der Sicherheitsüberprüfung.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Sicherheits-Hotspots',\n 'metric.sonarqube.security_hotspots.description':\n 'Anzahl der zu überprüfenden Sicherheits-Hotspots in SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Zuverlässigkeitsbewertung',\n 'metric.sonarqube.reliability_rating.description':\n 'SonarQube Zuverlässigkeitsbewertung.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Zuverlässigkeitsprobleme',\n 'metric.sonarqube.reliability_issues.description':\n 'Anzahl der offenen Fehler in SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Wartbarkeitsbewertung',\n 'metric.sonarqube.maintainability_rating.description':\n 'SonarQube Wartbarkeitsbewertung.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Wartbarkeitsprobleme',\n 'metric.sonarqube.maintainability_issues.description':\n 'Anzahl der offenen Code Smells in SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Code-Abdeckung',\n 'metric.sonarqube.code_coverage.description':\n 'Gesamtprozentsatz der Code-Abdeckung in SonarQube.',\n 'metric.sonarqube.code_duplications.title': 'SonarQube Code-Duplikate',\n 'metric.sonarqube.code_duplications.description':\n 'Prozentsatz der duplizierten Zeilen in SonarQube.',\n 'metric.filecheck.title': 'Dateiprüfung: {{name}}',\n 'metric.filecheck.description':\n 'Prüft, ob die Datei {{name}} im Repository vorhanden ist.',\n 'metric.lastUpdated': 'Zuletzt aktualisiert: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Zuletzt aktualisiert: Nicht verfügbar',\n 'metric.someEntitiesNotReportingValues':\n 'Einige Elemente melden keine Werte, die mit dieser Metrik in Verbindung stehen.',\n 'metric.averageCenterTooltipTotalLabel': 'Gesamtpunktzahl',\n 'metric.averageCenterTooltipMaxLabel': 'Maximal mögliche Punktzahl',\n 'metric.averageCenterTooltipBreakdownRow_one':\n '{{status}}: {{count}} Element, Punktzahl: {{score}}',\n 'metric.averageCenterTooltipBreakdownRow_other':\n '{{status}}: {{count}} Elemente, Punktzahl: {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} Element, je {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} Elemente, je {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Gesamtpunktzahl {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Mindestens ein Element konnte diese Metrik nicht berechnen.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} Elemente',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} Elemente ohne Metrik-Berechnungsfehler',\n\n // Threshold translations\n 'thresholds.success': 'Erfolg',\n 'thresholds.warning': 'Warnung',\n 'thresholds.error': 'Fehler',\n 'thresholds.exist': 'Vorhanden',\n 'thresholds.missing': 'Fehlend',\n 'thresholds.noEntities': 'Keine Elemente im {{category}}-Zustand',\n 'thresholds.entities_one': '{{count}} Element',\n 'thresholds.entities_other': '{{count}} Elemente',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Unbekannte Metrik',\n 'entitiesPage.noDataFound':\n 'Um Ihre Daten hier anzuzeigen, überprüfen Sie, ob Ihre Elemente Werte melden, die mit dieser Metrik in Verbindung stehen.',\n 'entitiesPage.missingPermission':\n 'Um die Metriken der Scorecard einzusehen, muss Ihnen der Administrator die erforderliche Berechtigung erteilen.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Metrik-Anbieter mit ID {{metricId}} ist nicht registriert.',\n 'entitiesPage.entitiesTable.title': 'Elemente',\n 'entitiesPage.entitiesTable.unavailable': 'Nicht verfügbar',\n 'entitiesPage.entitiesTable.titleWithCount': 'Elemente ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Status',\n 'entitiesPage.entitiesTable.header.value': 'Wert',\n 'entitiesPage.entitiesTable.header.entity': 'Element',\n 'entitiesPage.entitiesTable.header.owner': 'Eigentümer',\n 'entitiesPage.entitiesTable.header.kind': 'Art',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Zuletzt aktualisiert',\n 'entitiesPage.entitiesTable.footer.allRows': 'Alle Zeilen',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} Zeile',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} Zeilen',\n 'entitiesPage.entitiesTable.footer.of': 'von',\n },\n});\n\nexport default scorecardTranslationDe;\n"],"names":[],"mappings":"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"}
@@ -75,6 +75,8 @@ const scorecardTranslationEs = createTranslationMessages({
75
75
  "metric.someEntitiesNotReportingValues": "Algunas entidades no est\xE1n reportando valores relacionados con esta m\xE9trica.",
76
76
  "metric.averageCenterTooltipTotalLabel": "Puntuaci\xF3n total",
77
77
  "metric.averageCenterTooltipMaxLabel": "Puntuaci\xF3n m\xE1xima posible",
78
+ "metric.averageCenterTooltipBreakdownRow_one": "{{status}}: {{count}} entidad, puntuaci\xF3n: {{score}}",
79
+ "metric.averageCenterTooltipBreakdownRow_other": "{{status}}: {{count}} entidades, puntuaci\xF3n: {{score}}",
78
80
  "metric.averageLegendTooltipEntitiesEach_one": "{{count}} entidad, cada una {{score}}",
79
81
  "metric.averageLegendTooltipEntitiesEach_other": "{{count}} entidades, cada una {{score}}",
80
82
  "metric.averageLegendTooltipRowTotal": "Puntuaci\xF3n total {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"es.esm.js","sources":["../../src/translations/es.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * es translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationEs = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Aún no se agregaron tarjetas de puntuación',\n 'emptyState.description':\n 'Las tarjetas de puntuación ayudan a monitorear el estado del componente de un vistazo. Para comenzar, explore la documentación para obtener pautas de configuración.',\n 'emptyState.button': 'Ver documentación',\n 'emptyState.altText': 'No hay tarjetas de puntuación',\n\n // Permission required translations\n 'permissionRequired.title': 'Permiso faltante',\n 'permissionRequired.description':\n 'Para ver el complemento de tarjetas de puntuación, comuníquese con su administrador para que le otorgue el permiso {{permission}}.',\n 'permissionRequired.button': 'Leer más',\n 'permissionRequired.altText': 'Permiso requerido',\n\n // Common UI\n 'common.loading': 'Cargando',\n\n // Not found state\n 'notFound.title': '404 No pudimos encontrar esa página',\n 'notFound.description':\n 'Intente agregar un archivo {{indexFile}} en la raíz del directorio de documentación de este repositorio.',\n 'notFound.readMore': 'Leer más',\n 'notFound.goBack': 'Volver',\n 'notFound.contactSupport': 'Contactar soporte',\n 'notFound.altText': 'Página no encontrada',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Entidad a la que le faltan las propiedades requeridas para la búsqueda en la tarjeta de puntuación',\n 'errors.missingAggregationId':\n 'El cuadro de mando está mal configurado; no se ha proporcionado la propiedad «ID de agregación» (o «ID de métrica»)',\n 'errors.invalidApiResponse':\n 'Formato de respuesta no válido de la API de la tarjeta de puntuación',\n 'errors.fetchError':\n 'Error al extraer las tarjetas de puntuación: {{error}}',\n 'errors.metricDataUnavailable': 'Datos de métricas no disponibles',\n 'errors.invalidThresholds': 'Umbrales no válidos',\n 'errors.missingPermission': 'Permiso faltante',\n 'errors.noDataFound': 'No se encontraron datos',\n 'errors.authenticationError': 'Error de autenticación',\n 'errors.missingPermissionMessage':\n 'Para ver las métricas de la tarjeta de puntuación, su administrador debe otorgarle el permiso requerido.',\n 'errors.userNotFoundInCatalogMessage':\n 'Entidad de usuario no encontrada en el catálogo',\n 'errors.noDataFoundMessage':\n 'Para ver tus datos aquí, comprueba que tus entidades estén reportando valores relacionados con esta métrica.',\n 'errors.unsupportedAggregationType':\n 'Esta scorecard usa un tipo de agregación no admitido en esta versión del plugin.',\n 'errors.authenticationErrorMessage': 'Inicie sesión para ver sus datos.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub PRs abiertas',\n 'metric.github.open_prs.description':\n 'Recuento actual de Pull Requests abiertas para un repositorio de GitHub dado.',\n 'metric.jira.open_issues.title': 'Jira tickets bloqueantes abiertos',\n 'metric.jira.open_issues.description':\n 'Destaca el número de problemas críticos y bloqueantes que están actualmente abiertos en Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Estado de Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indica si el proyecto pasa su Quality Gate de SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problemas abiertos',\n 'metric.sonarqube.open_issues.description':\n 'Número de problemas abiertos (OPEN, CONFIRMED, REOPENED) en SonarQube.',\n 'metric.sonarqube.security_rating.title':\n 'SonarQube Calificación de seguridad',\n 'metric.sonarqube.security_rating.description':\n 'Calificación de seguridad de SonarQube.',\n 'metric.sonarqube.security_issues.title':\n 'SonarQube Problemas de seguridad',\n 'metric.sonarqube.security_issues.description':\n 'Número de vulnerabilidades de seguridad abiertas en SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Calificación de revisión de seguridad',\n 'metric.sonarqube.security_review_rating.description':\n 'Calificación de revisión de seguridad de SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Puntos críticos de seguridad',\n 'metric.sonarqube.security_hotspots.description':\n 'Número de puntos críticos de seguridad a revisar en SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Calificación de fiabilidad',\n 'metric.sonarqube.reliability_rating.description':\n 'Calificación de fiabilidad de SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problemas de fiabilidad',\n 'metric.sonarqube.reliability_issues.description':\n 'Número de errores abiertos en SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Calificación de mantenibilidad',\n 'metric.sonarqube.maintainability_rating.description':\n 'Calificación de mantenibilidad de SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problemas de mantenibilidad',\n 'metric.sonarqube.maintainability_issues.description':\n 'Número de code smells abiertos en SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Cobertura de código',\n 'metric.sonarqube.code_coverage.description':\n 'Porcentaje general de cobertura de código en SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplicaciones de código',\n 'metric.sonarqube.code_duplications.description':\n 'Porcentaje de líneas duplicadas en SonarQube.',\n 'metric.filecheck.title': 'Verificación de archivo: {{name}}',\n 'metric.filecheck.description':\n 'Verifica si el archivo {{name}} existe en el repositorio.',\n 'metric.lastUpdated': 'Última actualización: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Última actualización: No disponible',\n 'metric.someEntitiesNotReportingValues':\n 'Algunas entidades no están reportando valores relacionados con esta métrica.',\n 'metric.averageCenterTooltipTotalLabel': 'Puntuación total',\n 'metric.averageCenterTooltipMaxLabel': 'Puntuación máxima posible',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entidad, cada una {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entidades, cada una {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Puntuación total {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Una o más entidades fallaron al calcular esta métrica.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entidades',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entidades sin errores de cálculo de métrica',\n\n // Threshold translations\n 'thresholds.success': 'Éxito',\n 'thresholds.warning': 'Advertencia',\n 'thresholds.error': 'Error',\n 'thresholds.exist': 'Existe',\n 'thresholds.missing': 'Faltante',\n 'thresholds.noEntities': 'No hay entidades en el estado {{category}}',\n 'thresholds.entities_one': '{{count}} entidad',\n 'thresholds.entities_other': '{{count}} entidades',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Métrica desconocida',\n 'entitiesPage.noDataFound':\n 'Para ver tus datos aquí, comprueba que tus entidades estén reportando valores relacionados con esta métrica.',\n 'entitiesPage.missingPermission':\n 'Para ver las métricas de scorecard, tu administrador debe otorgarle el permiso requerido.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Proveedor de métrica con ID {{metricId}} no registrado.',\n 'entitiesPage.entitiesTable.title': 'Entidades',\n 'entitiesPage.entitiesTable.unavailable': 'No disponible',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entidades ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Estado',\n 'entitiesPage.entitiesTable.header.value': 'Valor',\n 'entitiesPage.entitiesTable.header.entity': 'Entidad',\n 'entitiesPage.entitiesTable.header.owner': 'Propietario',\n 'entitiesPage.entitiesTable.header.kind': 'Tipo',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Última actualización',\n 'entitiesPage.entitiesTable.footer.allRows': 'Todas las filas',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} fila',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} filas',\n 'entitiesPage.entitiesTable.footer.of': 'de',\n },\n});\n\nexport default scorecardTranslationEs;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es.esm.js","sources":["../../src/translations/es.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * es translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationEs = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Aún no se agregaron tarjetas de puntuación',\n 'emptyState.description':\n 'Las tarjetas de puntuación ayudan a monitorear el estado del componente de un vistazo. Para comenzar, explore la documentación para obtener pautas de configuración.',\n 'emptyState.button': 'Ver documentación',\n 'emptyState.altText': 'No hay tarjetas de puntuación',\n\n // Permission required translations\n 'permissionRequired.title': 'Permiso faltante',\n 'permissionRequired.description':\n 'Para ver el complemento de tarjetas de puntuación, comuníquese con su administrador para que le otorgue el permiso {{permission}}.',\n 'permissionRequired.button': 'Leer más',\n 'permissionRequired.altText': 'Permiso requerido',\n\n // Common UI\n 'common.loading': 'Cargando',\n\n // Not found state\n 'notFound.title': '404 No pudimos encontrar esa página',\n 'notFound.description':\n 'Intente agregar un archivo {{indexFile}} en la raíz del directorio de documentación de este repositorio.',\n 'notFound.readMore': 'Leer más',\n 'notFound.goBack': 'Volver',\n 'notFound.contactSupport': 'Contactar soporte',\n 'notFound.altText': 'Página no encontrada',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Entidad a la que le faltan las propiedades requeridas para la búsqueda en la tarjeta de puntuación',\n 'errors.missingAggregationId':\n 'El cuadro de mando está mal configurado; no se ha proporcionado la propiedad «ID de agregación» (o «ID de métrica»)',\n 'errors.invalidApiResponse':\n 'Formato de respuesta no válido de la API de la tarjeta de puntuación',\n 'errors.fetchError':\n 'Error al extraer las tarjetas de puntuación: {{error}}',\n 'errors.metricDataUnavailable': 'Datos de métricas no disponibles',\n 'errors.invalidThresholds': 'Umbrales no válidos',\n 'errors.missingPermission': 'Permiso faltante',\n 'errors.noDataFound': 'No se encontraron datos',\n 'errors.authenticationError': 'Error de autenticación',\n 'errors.missingPermissionMessage':\n 'Para ver las métricas de la tarjeta de puntuación, su administrador debe otorgarle el permiso requerido.',\n 'errors.userNotFoundInCatalogMessage':\n 'Entidad de usuario no encontrada en el catálogo',\n 'errors.noDataFoundMessage':\n 'Para ver tus datos aquí, comprueba que tus entidades estén reportando valores relacionados con esta métrica.',\n 'errors.unsupportedAggregationType':\n 'Esta scorecard usa un tipo de agregación no admitido en esta versión del plugin.',\n 'errors.authenticationErrorMessage': 'Inicie sesión para ver sus datos.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub PRs abiertas',\n 'metric.github.open_prs.description':\n 'Recuento actual de Pull Requests abiertas para un repositorio de GitHub dado.',\n 'metric.jira.open_issues.title': 'Jira tickets bloqueantes abiertos',\n 'metric.jira.open_issues.description':\n 'Destaca el número de problemas críticos y bloqueantes que están actualmente abiertos en Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Estado de Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indica si el proyecto pasa su Quality Gate de SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problemas abiertos',\n 'metric.sonarqube.open_issues.description':\n 'Número de problemas abiertos (OPEN, CONFIRMED, REOPENED) en SonarQube.',\n 'metric.sonarqube.security_rating.title':\n 'SonarQube Calificación de seguridad',\n 'metric.sonarqube.security_rating.description':\n 'Calificación de seguridad de SonarQube.',\n 'metric.sonarqube.security_issues.title':\n 'SonarQube Problemas de seguridad',\n 'metric.sonarqube.security_issues.description':\n 'Número de vulnerabilidades de seguridad abiertas en SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Calificación de revisión de seguridad',\n 'metric.sonarqube.security_review_rating.description':\n 'Calificación de revisión de seguridad de SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Puntos críticos de seguridad',\n 'metric.sonarqube.security_hotspots.description':\n 'Número de puntos críticos de seguridad a revisar en SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Calificación de fiabilidad',\n 'metric.sonarqube.reliability_rating.description':\n 'Calificación de fiabilidad de SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problemas de fiabilidad',\n 'metric.sonarqube.reliability_issues.description':\n 'Número de errores abiertos en SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Calificación de mantenibilidad',\n 'metric.sonarqube.maintainability_rating.description':\n 'Calificación de mantenibilidad de SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problemas de mantenibilidad',\n 'metric.sonarqube.maintainability_issues.description':\n 'Número de code smells abiertos en SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Cobertura de código',\n 'metric.sonarqube.code_coverage.description':\n 'Porcentaje general de cobertura de código en SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplicaciones de código',\n 'metric.sonarqube.code_duplications.description':\n 'Porcentaje de líneas duplicadas en SonarQube.',\n 'metric.filecheck.title': 'Verificación de archivo: {{name}}',\n 'metric.filecheck.description':\n 'Verifica si el archivo {{name}} existe en el repositorio.',\n 'metric.lastUpdated': 'Última actualización: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Última actualización: No disponible',\n 'metric.someEntitiesNotReportingValues':\n 'Algunas entidades no están reportando valores relacionados con esta métrica.',\n 'metric.averageCenterTooltipTotalLabel': 'Puntuación total',\n 'metric.averageCenterTooltipMaxLabel': 'Puntuación máxima posible',\n 'metric.averageCenterTooltipBreakdownRow_one':\n '{{status}}: {{count}} entidad, puntuación: {{score}}',\n 'metric.averageCenterTooltipBreakdownRow_other':\n '{{status}}: {{count}} entidades, puntuación: {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entidad, cada una {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entidades, cada una {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Puntuación total {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Una o más entidades fallaron al calcular esta métrica.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entidades',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entidades sin errores de cálculo de métrica',\n\n // Threshold translations\n 'thresholds.success': 'Éxito',\n 'thresholds.warning': 'Advertencia',\n 'thresholds.error': 'Error',\n 'thresholds.exist': 'Existe',\n 'thresholds.missing': 'Faltante',\n 'thresholds.noEntities': 'No hay entidades en el estado {{category}}',\n 'thresholds.entities_one': '{{count}} entidad',\n 'thresholds.entities_other': '{{count}} entidades',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Métrica desconocida',\n 'entitiesPage.noDataFound':\n 'Para ver tus datos aquí, comprueba que tus entidades estén reportando valores relacionados con esta métrica.',\n 'entitiesPage.missingPermission':\n 'Para ver las métricas de scorecard, tu administrador debe otorgarle el permiso requerido.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Proveedor de métrica con ID {{metricId}} no registrado.',\n 'entitiesPage.entitiesTable.title': 'Entidades',\n 'entitiesPage.entitiesTable.unavailable': 'No disponible',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entidades ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Estado',\n 'entitiesPage.entitiesTable.header.value': 'Valor',\n 'entitiesPage.entitiesTable.header.entity': 'Entidad',\n 'entitiesPage.entitiesTable.header.owner': 'Propietario',\n 'entitiesPage.entitiesTable.header.kind': 'Tipo',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Última actualización',\n 'entitiesPage.entitiesTable.footer.allRows': 'Todas las filas',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} fila',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} filas',\n 'entitiesPage.entitiesTable.footer.of': 'de',\n },\n});\n\nexport default scorecardTranslationEs;\n"],"names":[],"mappings":"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"}
@@ -75,6 +75,8 @@ const scorecardTranslationFr = createTranslationMessages({
75
75
  "metric.someEntitiesNotReportingValues": "Certaines entit\xE9s ne communiquent pas de valeurs li\xE9es \xE0 cette m\xE9trique.",
76
76
  "metric.averageCenterTooltipTotalLabel": "Score total",
77
77
  "metric.averageCenterTooltipMaxLabel": "Score maximum possible",
78
+ "metric.averageCenterTooltipBreakdownRow_one": "{{status}} : {{count}} entit\xE9, score : {{score}}",
79
+ "metric.averageCenterTooltipBreakdownRow_other": "{{status}} : {{count}} entit\xE9s, score : {{score}}",
78
80
  "metric.averageLegendTooltipEntitiesEach_one": "{{count}} entit\xE9, chacune {{score}}",
79
81
  "metric.averageLegendTooltipEntitiesEach_other": "{{count}} entit\xE9s, chacune {{score}}",
80
82
  "metric.averageLegendTooltipRowTotal": "Score total {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"fr.esm.js","sources":["../../src/translations/fr.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * fr translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationFr = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': \"Aucune carte de score n'a encore été ajoutée\",\n 'emptyState.description':\n 'Les tableaux de bord vous aident à surveiller l’état des composants en un coup d’œil. Pour commencer, explorez notre documentation pour obtenir des instructions de configuration.',\n 'emptyState.button': 'Voir la documentation',\n 'emptyState.altText': 'Pas de tableau de bord',\n\n // Permission required translations\n 'permissionRequired.title': 'Autorisations manquantes',\n 'permissionRequired.description':\n \"Pour afficher le plugin Scorecard, contactez votre administrateur pour lui accorder l'autorisation {{permission}}.\",\n 'permissionRequired.button': 'En savoir plus',\n 'permissionRequired.altText': 'Autorisation requise',\n\n // Common UI\n 'common.loading': 'Chargement',\n\n // Not found state\n 'notFound.title': \"404 Nous n'avons pas trouvé cette page\",\n 'notFound.description':\n \"Essayez d'ajouter un fichier {{indexFile}} à la racine du répertoire docs de ce dépôt.\",\n 'notFound.readMore': 'En savoir plus',\n 'notFound.goBack': 'Retour',\n 'notFound.contactSupport': 'Contacter le support',\n 'notFound.altText': 'Page introuvable',\n\n // Error messages\n 'errors.entityMissingProperties':\n \"Entité manquant les propriétés requises pour la recherche dans la fiche d'évaluation\",\n 'errors.missingAggregationId':\n \"La fiche de suivi est mal configurée ; la propriété « ID d'agrégation » (ou « ID de métrique ») n'est pas fournie\",\n 'errors.invalidApiResponse':\n \"Format de réponse non valide de l'API de scorecard\",\n 'errors.fetchError':\n 'Erreur lors de la récupération des tableaux de bord : {{error}}',\n 'errors.metricDataUnavailable': 'Données métriques indisponibles',\n 'errors.invalidThresholds': 'Seuils invalides',\n 'errors.missingPermission': 'Permission manquante',\n 'errors.noDataFound': 'Aucune donnée trouvée',\n 'errors.authenticationError': \"Erreur d'authentification\",\n 'errors.missingPermissionMessage':\n 'Pour voir les métriques de scorecard, votre administrateur doit vous donner la permission requise.',\n 'errors.userNotFoundInCatalogMessage':\n 'Entité utilisateur non trouvée dans le catalogue',\n 'errors.noDataFoundMessage':\n 'Pour voir vos données ici, vérifiez que vos entités communiquent les valeurs liées à cet indicateur.',\n 'errors.unsupportedAggregationType':\n \"Cette fiche d'évaluation utilise un type d'agrégation non pris en charge par cette version du plugin.\",\n 'errors.authenticationErrorMessage':\n 'Veuillez vous connecter pour afficher vos données.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub ouvre des PR',\n 'metric.github.open_prs.description':\n \"Nombre actuel de requêtes d'extraction ouvertes pour un référentiel GitHub donné.\",\n 'metric.jira.open_issues.title': 'Jira ouvre des tickets bloquants',\n 'metric.jira.open_issues.description':\n 'Met en évidence le nombre de problèmes critiques et bloquants actuellement ouverts dans Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Statut du Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indique si le projet passe son Quality Gate SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problèmes ouverts',\n 'metric.sonarqube.open_issues.description':\n 'Nombre de problèmes ouverts (OPEN, CONFIRMED, REOPENED) dans SonarQube.',\n 'metric.sonarqube.security_rating.title': 'SonarQube Note de sécurité',\n 'metric.sonarqube.security_rating.description':\n 'Note de sécurité SonarQube.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Problèmes de sécurité',\n 'metric.sonarqube.security_issues.description':\n 'Nombre de vulnérabilités de sécurité ouvertes dans SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Note de revue de sécurité',\n 'metric.sonarqube.security_review_rating.description':\n 'Note de revue de sécurité SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Points chauds de sécurité',\n 'metric.sonarqube.security_hotspots.description':\n 'Nombre de points chauds de sécurité à examiner dans SonarQube.',\n 'metric.sonarqube.reliability_rating.title': 'SonarQube Note de fiabilité',\n 'metric.sonarqube.reliability_rating.description':\n 'Note de fiabilité SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problèmes de fiabilité',\n 'metric.sonarqube.reliability_issues.description':\n 'Nombre de bugs ouverts dans SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Note de maintenabilité',\n 'metric.sonarqube.maintainability_rating.description':\n 'Note de maintenabilité SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problèmes de maintenabilité',\n 'metric.sonarqube.maintainability_issues.description':\n 'Nombre de code smells ouverts dans SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Couverture de code',\n 'metric.sonarqube.code_coverage.description':\n 'Pourcentage global de couverture de code dans SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplications de code',\n 'metric.sonarqube.code_duplications.description':\n 'Pourcentage de lignes dupliquées dans SonarQube.',\n 'metric.filecheck.title': 'Vérification de fichier : {{name}}',\n 'metric.filecheck.description':\n 'Vérifie si le fichier {{name}} existe dans le dépôt.',\n 'metric.lastUpdated': 'Dernière mise à jour: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Dernière mise à jour: Non disponible',\n 'metric.someEntitiesNotReportingValues':\n 'Certaines entités ne communiquent pas de valeurs liées à cette métrique.',\n 'metric.averageCenterTooltipTotalLabel': 'Score total',\n 'metric.averageCenterTooltipMaxLabel': 'Score maximum possible',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entité, chacune {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entités, chacune {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Score total {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Le calcul de cette métrique a échoué pour une ou plusieurs entités.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entités',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entités sans erreur de calcul de métrique',\n\n // Threshold translations\n 'thresholds.success': 'Succès',\n 'thresholds.warning': 'Attention',\n 'thresholds.error': 'Erreur',\n 'thresholds.exist': 'Existant',\n 'thresholds.missing': 'Manquant',\n 'thresholds.noEntities': \"Aucune entité dans l'état {{category}}\",\n 'thresholds.entities_one': '{{count}} entité',\n 'thresholds.entities_other': '{{count}} entités',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Métrique inconnue',\n 'entitiesPage.noDataFound':\n 'Pour voir vos données ici, vérifiez que vos entités communiquent les valeurs liées à cet indicateur.',\n 'entitiesPage.missingPermission':\n 'Pour voir les métriques de scorecard, votre administrateur doit vous donner la permission requise.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Fournisseur de métrique avec ID {{metricId}} non enregistré.',\n 'entitiesPage.entitiesTable.title': 'Entités',\n 'entitiesPage.entitiesTable.unavailable': 'Non disponible',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entités ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Statut',\n 'entitiesPage.entitiesTable.header.value': 'Valeur',\n 'entitiesPage.entitiesTable.header.entity': 'Entité',\n 'entitiesPage.entitiesTable.header.owner': 'Propriétaire',\n 'entitiesPage.entitiesTable.header.kind': 'Type',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Dernière mise à jour',\n 'entitiesPage.entitiesTable.footer.allRows': 'Toutes les lignes',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} ligne',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} lignes',\n 'entitiesPage.entitiesTable.footer.of': 'de',\n },\n});\n\nexport default scorecardTranslationFr;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fr.esm.js","sources":["../../src/translations/fr.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * fr translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationFr = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': \"Aucune carte de score n'a encore été ajoutée\",\n 'emptyState.description':\n 'Les tableaux de bord vous aident à surveiller l’état des composants en un coup d’œil. Pour commencer, explorez notre documentation pour obtenir des instructions de configuration.',\n 'emptyState.button': 'Voir la documentation',\n 'emptyState.altText': 'Pas de tableau de bord',\n\n // Permission required translations\n 'permissionRequired.title': 'Autorisations manquantes',\n 'permissionRequired.description':\n \"Pour afficher le plugin Scorecard, contactez votre administrateur pour lui accorder l'autorisation {{permission}}.\",\n 'permissionRequired.button': 'En savoir plus',\n 'permissionRequired.altText': 'Autorisation requise',\n\n // Common UI\n 'common.loading': 'Chargement',\n\n // Not found state\n 'notFound.title': \"404 Nous n'avons pas trouvé cette page\",\n 'notFound.description':\n \"Essayez d'ajouter un fichier {{indexFile}} à la racine du répertoire docs de ce dépôt.\",\n 'notFound.readMore': 'En savoir plus',\n 'notFound.goBack': 'Retour',\n 'notFound.contactSupport': 'Contacter le support',\n 'notFound.altText': 'Page introuvable',\n\n // Error messages\n 'errors.entityMissingProperties':\n \"Entité manquant les propriétés requises pour la recherche dans la fiche d'évaluation\",\n 'errors.missingAggregationId':\n \"La fiche de suivi est mal configurée ; la propriété « ID d'agrégation » (ou « ID de métrique ») n'est pas fournie\",\n 'errors.invalidApiResponse':\n \"Format de réponse non valide de l'API de scorecard\",\n 'errors.fetchError':\n 'Erreur lors de la récupération des tableaux de bord : {{error}}',\n 'errors.metricDataUnavailable': 'Données métriques indisponibles',\n 'errors.invalidThresholds': 'Seuils invalides',\n 'errors.missingPermission': 'Permission manquante',\n 'errors.noDataFound': 'Aucune donnée trouvée',\n 'errors.authenticationError': \"Erreur d'authentification\",\n 'errors.missingPermissionMessage':\n 'Pour voir les métriques de scorecard, votre administrateur doit vous donner la permission requise.',\n 'errors.userNotFoundInCatalogMessage':\n 'Entité utilisateur non trouvée dans le catalogue',\n 'errors.noDataFoundMessage':\n 'Pour voir vos données ici, vérifiez que vos entités communiquent les valeurs liées à cet indicateur.',\n 'errors.unsupportedAggregationType':\n \"Cette fiche d'évaluation utilise un type d'agrégation non pris en charge par cette version du plugin.\",\n 'errors.authenticationErrorMessage':\n 'Veuillez vous connecter pour afficher vos données.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub ouvre des PR',\n 'metric.github.open_prs.description':\n \"Nombre actuel de requêtes d'extraction ouvertes pour un référentiel GitHub donné.\",\n 'metric.jira.open_issues.title': 'Jira ouvre des tickets bloquants',\n 'metric.jira.open_issues.description':\n 'Met en évidence le nombre de problèmes critiques et bloquants actuellement ouverts dans Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Statut du Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indique si le projet passe son Quality Gate SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problèmes ouverts',\n 'metric.sonarqube.open_issues.description':\n 'Nombre de problèmes ouverts (OPEN, CONFIRMED, REOPENED) dans SonarQube.',\n 'metric.sonarqube.security_rating.title': 'SonarQube Note de sécurité',\n 'metric.sonarqube.security_rating.description':\n 'Note de sécurité SonarQube.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Problèmes de sécurité',\n 'metric.sonarqube.security_issues.description':\n 'Nombre de vulnérabilités de sécurité ouvertes dans SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Note de revue de sécurité',\n 'metric.sonarqube.security_review_rating.description':\n 'Note de revue de sécurité SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Points chauds de sécurité',\n 'metric.sonarqube.security_hotspots.description':\n 'Nombre de points chauds de sécurité à examiner dans SonarQube.',\n 'metric.sonarqube.reliability_rating.title': 'SonarQube Note de fiabilité',\n 'metric.sonarqube.reliability_rating.description':\n 'Note de fiabilité SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problèmes de fiabilité',\n 'metric.sonarqube.reliability_issues.description':\n 'Nombre de bugs ouverts dans SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Note de maintenabilité',\n 'metric.sonarqube.maintainability_rating.description':\n 'Note de maintenabilité SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problèmes de maintenabilité',\n 'metric.sonarqube.maintainability_issues.description':\n 'Nombre de code smells ouverts dans SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Couverture de code',\n 'metric.sonarqube.code_coverage.description':\n 'Pourcentage global de couverture de code dans SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplications de code',\n 'metric.sonarqube.code_duplications.description':\n 'Pourcentage de lignes dupliquées dans SonarQube.',\n 'metric.filecheck.title': 'Vérification de fichier : {{name}}',\n 'metric.filecheck.description':\n 'Vérifie si le fichier {{name}} existe dans le dépôt.',\n 'metric.lastUpdated': 'Dernière mise à jour: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Dernière mise à jour: Non disponible',\n 'metric.someEntitiesNotReportingValues':\n 'Certaines entités ne communiquent pas de valeurs liées à cette métrique.',\n 'metric.averageCenterTooltipTotalLabel': 'Score total',\n 'metric.averageCenterTooltipMaxLabel': 'Score maximum possible',\n 'metric.averageCenterTooltipBreakdownRow_one':\n '{{status}} : {{count}} entité, score : {{score}}',\n 'metric.averageCenterTooltipBreakdownRow_other':\n '{{status}} : {{count}} entités, score : {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entité, chacune {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entités, chacune {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Score total {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Le calcul de cette métrique a échoué pour une ou plusieurs entités.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entités',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entités sans erreur de calcul de métrique',\n\n // Threshold translations\n 'thresholds.success': 'Succès',\n 'thresholds.warning': 'Attention',\n 'thresholds.error': 'Erreur',\n 'thresholds.exist': 'Existant',\n 'thresholds.missing': 'Manquant',\n 'thresholds.noEntities': \"Aucune entité dans l'état {{category}}\",\n 'thresholds.entities_one': '{{count}} entité',\n 'thresholds.entities_other': '{{count}} entités',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Métrique inconnue',\n 'entitiesPage.noDataFound':\n 'Pour voir vos données ici, vérifiez que vos entités communiquent les valeurs liées à cet indicateur.',\n 'entitiesPage.missingPermission':\n 'Pour voir les métriques de scorecard, votre administrateur doit vous donner la permission requise.',\n 'entitiesPage.metricProviderNotRegistered':\n 'Fournisseur de métrique avec ID {{metricId}} non enregistré.',\n 'entitiesPage.entitiesTable.title': 'Entités',\n 'entitiesPage.entitiesTable.unavailable': 'Non disponible',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entités ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Statut',\n 'entitiesPage.entitiesTable.header.value': 'Valeur',\n 'entitiesPage.entitiesTable.header.entity': 'Entité',\n 'entitiesPage.entitiesTable.header.owner': 'Propriétaire',\n 'entitiesPage.entitiesTable.header.kind': 'Type',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Dernière mise à jour',\n 'entitiesPage.entitiesTable.footer.allRows': 'Toutes les lignes',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} ligne',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} lignes',\n 'entitiesPage.entitiesTable.footer.of': 'de',\n },\n});\n\nexport default scorecardTranslationFr;\n"],"names":[],"mappings":";;;AAuBA,MAAM,yBAAyB,yBAA0B,CAAA;AAAA,EACvD,GAAK,EAAA,uBAAA;AAAA,EACL,IAAM,EAAA,IAAA;AAAA,EACN,QAAU,EAAA;AAAA;AAAA,IAER,kBAAoB,EAAA,uDAAA;AAAA,IACpB,wBACE,EAAA,yMAAA;AAAA,IACF,mBAAqB,EAAA,uBAAA;AAAA,IACrB,oBAAsB,EAAA,wBAAA;AAAA;AAAA,IAGtB,0BAA4B,EAAA,0BAAA;AAAA,IAC5B,gCACE,EAAA,oHAAA;AAAA,IACF,2BAA6B,EAAA,gBAAA;AAAA,IAC7B,4BAA8B,EAAA,sBAAA;AAAA;AAAA,IAG9B,gBAAkB,EAAA,YAAA;AAAA;AAAA,IAGlB,gBAAkB,EAAA,2CAAA;AAAA,IAClB,sBACE,EAAA,oGAAA;AAAA,IACF,mBAAqB,EAAA,gBAAA;AAAA,IACrB,iBAAmB,EAAA,QAAA;AAAA,IACnB,yBAA2B,EAAA,sBAAA;AAAA,IAC3B,kBAAoB,EAAA,kBAAA;AAAA;AAAA,IAGpB,gCACE,EAAA,kGAAA;AAAA,IACF,6BACE,EAAA,8IAAA;AAAA,IACF,2BACE,EAAA,uDAAA;AAAA,IACF,mBACE,EAAA,0EAAA;AAAA,IACF,8BAAgC,EAAA,uCAAA;AAAA,IAChC,0BAA4B,EAAA,kBAAA;AAAA,IAC5B,0BAA4B,EAAA,sBAAA;AAAA,IAC5B,oBAAsB,EAAA,6BAAA;AAAA,IACtB,4BAA8B,EAAA,2BAAA;AAAA,IAC9B,iCACE,EAAA,uGAAA;AAAA,IACF,qCACE,EAAA,wDAAA;AAAA,IACF,2BACE,EAAA,qHAAA;AAAA,IACF,mCACE,EAAA,6GAAA;AAAA,IACF,mCACE,EAAA,uDAAA;AAAA;AAAA,IAGF,8BAAgC,EAAA,qBAAA;AAAA,IAChC,oCACE,EAAA,+FAAA;AAAA,IACF,+BAAiC,EAAA,kCAAA;AAAA,IACjC,qCACE,EAAA,qGAAA;AAAA,IACF,qCAAuC,EAAA,kCAAA;AAAA,IACvC,2CACE,EAAA,wDAAA;AAAA,IACF,oCAAsC,EAAA,gCAAA;AAAA,IACtC,0CACE,EAAA,4EAAA;AAAA,IACF,wCAA0C,EAAA,kCAAA;AAAA,IAC1C,8CACE,EAAA,mCAAA;AAAA,IACF,wCAA0C,EAAA,0CAAA;AAAA,IAC1C,8CACE,EAAA,2EAAA;AAAA,IACF,+CACE,EAAA,2CAAA;AAAA,IACF,qDACE,EAAA,4CAAA;AAAA,IACF,0CACE,EAAA,2CAAA;AAAA,IACF,gDACE,EAAA,yEAAA;AAAA,IACF,2CAA6C,EAAA,gCAAA;AAAA,IAC7C,iDACE,EAAA,iCAAA;AAAA,IACF,2CACE,EAAA,wCAAA;AAAA,IACF,iDACE,EAAA,wCAAA;AAAA,IACF,+CACE,EAAA,qCAAA;AAAA,IACF,qDACE,EAAA,sCAAA;AAAA,IACF,+CACE,EAAA,6CAAA;AAAA,IACF,qDACE,EAAA,+CAAA;AAAA,IACF,sCAAwC,EAAA,8BAAA;AAAA,IACxC,4CACE,EAAA,0DAAA;AAAA,IACF,0CACE,EAAA,gCAAA;AAAA,IACF,gDACE,EAAA,qDAAA;AAAA,IACF,wBAA0B,EAAA,uCAAA;AAAA,IAC1B,8BACE,EAAA,+DAAA;AAAA,IACF,oBAAsB,EAAA,2CAAA;AAAA,IACtB,gCAAkC,EAAA,4CAAA;AAAA,IAClC,uCACE,EAAA,sFAAA;AAAA,IACF,uCAAyC,EAAA,aAAA;AAAA,IACzC,qCAAuC,EAAA,wBAAA;AAAA,IACvC,6CACE,EAAA,qDAAA;AAAA,IACF,+CACE,EAAA,sDAAA;AAAA,IACF,6CACE,EAAA,wCAAA;AAAA,IACF,+CACE,EAAA,yCAAA;AAAA,IACF,qCAAuC,EAAA,uBAAA;AAAA,IACvC,qCACE,EAAA,iFAAA;AAAA,IACF,kCAAoC,EAAA,kCAAA;AAAA,IACpC,wCACE,EAAA,yEAAA;AAAA;AAAA,IAGF,oBAAsB,EAAA,WAAA;AAAA,IACtB,oBAAsB,EAAA,WAAA;AAAA,IACtB,kBAAoB,EAAA,QAAA;AAAA,IACpB,kBAAoB,EAAA,UAAA;AAAA,IACpB,oBAAsB,EAAA,UAAA;AAAA,IACtB,uBAAyB,EAAA,8CAAA;AAAA,IACzB,yBAA2B,EAAA,qBAAA;AAAA,IAC3B,2BAA6B,EAAA,sBAAA;AAAA;AAAA,IAG7B,4BAA8B,EAAA,sBAAA;AAAA,IAC9B,0BACE,EAAA,qHAAA;AAAA,IACF,gCACE,EAAA,uGAAA;AAAA,IACF,0CACE,EAAA,oEAAA;AAAA,IACF,kCAAoC,EAAA,YAAA;AAAA,IACpC,wCAA0C,EAAA,gBAAA;AAAA,IAC1C,2CAA6C,EAAA,wBAAA;AAAA,IAC7C,0CAA4C,EAAA,QAAA;AAAA,IAC5C,yCAA2C,EAAA,QAAA;AAAA,IAC3C,0CAA4C,EAAA,WAAA;AAAA,IAC5C,yCAA2C,EAAA,iBAAA;AAAA,IAC3C,wCAA0C,EAAA,MAAA;AAAA,IAC1C,+CAAiD,EAAA,4BAAA;AAAA,IACjD,2CAA6C,EAAA,mBAAA;AAAA,IAC7C,4CAA8C,EAAA,iBAAA;AAAA,IAC9C,8CAAgD,EAAA,kBAAA;AAAA,IAChD,sCAAwC,EAAA;AAAA;AAE5C,CAAC;;;;"}
@@ -75,6 +75,8 @@ const scorecardTranslationIt = createTranslationMessages({
75
75
  "metric.someEntitiesNotReportingValues": "Alcune entit\xE0 non stanno riportando valori relativi a questa metrica.",
76
76
  "metric.averageCenterTooltipTotalLabel": "Punteggio totale",
77
77
  "metric.averageCenterTooltipMaxLabel": "Punteggio massimo possibile",
78
+ "metric.averageCenterTooltipBreakdownRow_one": "{{status}}: {{count}} entit\xE0, punteggio: {{score}}",
79
+ "metric.averageCenterTooltipBreakdownRow_other": "{{status}}: {{count}} entit\xE0, punteggio: {{score}}",
78
80
  "metric.averageLegendTooltipEntitiesEach_one": "{{count}} entit\xE0, ciascuna {{score}}",
79
81
  "metric.averageLegendTooltipEntitiesEach_other": "{{count}} entit\xE0, ciascuna {{score}}",
80
82
  "metric.averageLegendTooltipRowTotal": "Punteggio totale {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"it.esm.js","sources":["../../src/translations/it.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * Italian translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationIt = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Non è stata ancora aggiunta alcuna scheda punteggio',\n 'emptyState.description':\n \"Le schede punteggio aiutano a monitorare a colpo d'occhio l'integrità dei componenti. Per iniziare, consultare la documentazione per le linee guida di configurazione.\",\n 'emptyState.button': 'Visualizza la documentazione',\n 'emptyState.altText': 'Nessuna scheda punteggio',\n\n // Permission required translations\n 'permissionRequired.title': 'Autorizzazione mancante',\n 'permissionRequired.description':\n \"Per visualizzare il plugin Scorecard, contattare l'amministratore per richiedere l'autorizzazione {{permission}}.\",\n 'permissionRequired.button': 'Per saperne di più',\n 'permissionRequired.altText': 'Autorizzazione richiesta',\n\n // Common UI\n 'common.loading': 'Caricamento in corso',\n\n // Not found state\n 'notFound.title': '404 Pagina non trovata',\n 'notFound.description':\n 'Prova ad aggiungere un file {{indexFile}} nella root della directory docs di questo repository.',\n 'notFound.readMore': 'Scopri di più',\n 'notFound.goBack': 'Indietro',\n 'notFound.contactSupport': 'Contatta il supporto',\n 'notFound.altText': 'Pagina non trovata',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Entità priva delle proprietà richieste per la ricerca nella scheda punteggio',\n 'errors.missingAggregationId':\n 'La scheda di valutazione non è configurata correttamente; la proprietà ID aggregazione (o ID metrica) non è stata specificata',\n 'errors.invalidApiResponse':\n \"Formato di risposta non valido dall'API della scheda punteggio\",\n 'errors.fetchError':\n 'Errore durante il recupero delle schede punteggio: {{error}}',\n 'errors.metricDataUnavailable': 'Dati metrici non disponibili',\n 'errors.invalidThresholds': 'Soglie non valide',\n 'errors.missingPermission': 'Autorizzazione mancante',\n 'errors.noDataFound': 'Nessun dato trovato',\n 'errors.authenticationError': 'Errore di autenticazione',\n 'errors.missingPermissionMessage':\n \"Per visualizzare le metriche della scheda punteggio, il tuo amministratore deve concedere l'autorizzazione richiesta.\",\n 'errors.userNotFoundInCatalogMessage':\n 'Entità utente non trovata nel catalogo.',\n 'errors.noDataFoundMessage':\n 'Per visualizzare i tuoi dati qui, verifica che le tue entità stiano riportando valori relativi a questa metrica.',\n 'errors.unsupportedAggregationType':\n 'Questa scorecard utilizza un tipo di aggregazione non supportato da questa versione del plugin.',\n 'errors.authenticationErrorMessage':\n 'Effettua il login per visualizzare i tuoi dati.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'Richieste pull aperte su GitHub',\n 'metric.github.open_prs.description':\n 'Conteggio attuale delle richieste pull aperte per uno specifico repository GitHub.',\n 'metric.jira.open_issues.title': 'Ticket di blocco Jira aperti',\n 'metric.jira.open_issues.description':\n 'Evidenzia il numero di problemi critici e di blocco attualmente aperti in Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Stato del Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indica se il progetto supera il proprio Quality Gate di SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problemi aperti',\n 'metric.sonarqube.open_issues.description':\n 'Numero di problemi aperti (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n 'metric.sonarqube.security_rating.title':\n 'SonarQube Valutazione di sicurezza',\n 'metric.sonarqube.security_rating.description':\n 'Valutazione di sicurezza di SonarQube.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Problemi di sicurezza',\n 'metric.sonarqube.security_issues.description':\n 'Numero di vulnerabilità di sicurezza aperte in SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Valutazione della revisione di sicurezza',\n 'metric.sonarqube.security_review_rating.description':\n 'Valutazione della revisione di sicurezza di SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Hotspot di sicurezza',\n 'metric.sonarqube.security_hotspots.description':\n 'Numero di hotspot di sicurezza da esaminare in SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Valutazione di affidabilità',\n 'metric.sonarqube.reliability_rating.description':\n 'Valutazione di affidabilità di SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problemi di affidabilità',\n 'metric.sonarqube.reliability_issues.description':\n 'Numero di bug aperti in SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Valutazione di manutenibilità',\n 'metric.sonarqube.maintainability_rating.description':\n 'Valutazione di manutenibilità di SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problemi di manutenibilità',\n 'metric.sonarqube.maintainability_issues.description':\n 'Numero di code smell aperti in SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Copertura del codice',\n 'metric.sonarqube.code_coverage.description':\n 'Percentuale complessiva di copertura del codice in SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplicazioni del codice',\n 'metric.sonarqube.code_duplications.description':\n 'Percentuale di righe duplicate in SonarQube.',\n 'metric.filecheck.title': 'Verifica file: {{name}}',\n 'metric.filecheck.description':\n 'Verifica se il file {{name}} esiste nel repository.',\n 'metric.lastUpdated': 'Ultimo aggiornamento: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Ultimo aggiornamento: Non disponibile',\n 'metric.someEntitiesNotReportingValues':\n 'Alcune entità non stanno riportando valori relativi a questa metrica.',\n 'metric.averageCenterTooltipTotalLabel': 'Punteggio totale',\n 'metric.averageCenterTooltipMaxLabel': 'Punteggio massimo possibile',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entità, ciascuna {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entità, ciascuna {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Punteggio totale {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Il calcolo di questa metrica non è riuscito per una o più entità.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entità',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entità senza errori di calcolo della metrica',\n\n // Threshold translations\n 'thresholds.success': 'Attività riuscita',\n 'thresholds.warning': 'Avviso',\n 'thresholds.error': 'Errore',\n 'thresholds.exist': 'Esistente',\n 'thresholds.missing': 'Mancante',\n 'thresholds.noEntities': 'Nessuna entità con stato {{category}}',\n 'thresholds.entities_one': '{{count}} entità',\n 'thresholds.entities_other': '{{count}} entità',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Metrica sconosciuta',\n 'entitiesPage.noDataFound':\n 'Per visualizzare i tuoi dati qui, verifica che le tue entità stiano riportando valori relativi a questa metrica.',\n 'entitiesPage.missingPermission':\n \"Per visualizzare le metriche della scheda punteggio, il tuo amministratore deve concedere l'autorizzazione richiesta.\",\n 'entitiesPage.metricProviderNotRegistered':\n 'Provider di metrica con ID {{metricId}} non registrato.',\n 'entitiesPage.entitiesTable.title': 'Entità',\n 'entitiesPage.entitiesTable.unavailable': 'Non disponibile',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entità ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Stato',\n 'entitiesPage.entitiesTable.header.value': 'Valore',\n 'entitiesPage.entitiesTable.header.entity': 'Entità',\n 'entitiesPage.entitiesTable.header.owner': 'Proprietario',\n 'entitiesPage.entitiesTable.header.kind': 'Tipo',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Ultimo aggiornamento',\n 'entitiesPage.entitiesTable.footer.allRows': 'Tutte le righe',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} riga',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} righe',\n 'entitiesPage.entitiesTable.footer.of': 'di',\n },\n});\n\nexport default scorecardTranslationIt;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"it.esm.js","sources":["../../src/translations/it.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * Italian translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationIt = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'Non è stata ancora aggiunta alcuna scheda punteggio',\n 'emptyState.description':\n \"Le schede punteggio aiutano a monitorare a colpo d'occhio l'integrità dei componenti. Per iniziare, consultare la documentazione per le linee guida di configurazione.\",\n 'emptyState.button': 'Visualizza la documentazione',\n 'emptyState.altText': 'Nessuna scheda punteggio',\n\n // Permission required translations\n 'permissionRequired.title': 'Autorizzazione mancante',\n 'permissionRequired.description':\n \"Per visualizzare il plugin Scorecard, contattare l'amministratore per richiedere l'autorizzazione {{permission}}.\",\n 'permissionRequired.button': 'Per saperne di più',\n 'permissionRequired.altText': 'Autorizzazione richiesta',\n\n // Common UI\n 'common.loading': 'Caricamento in corso',\n\n // Not found state\n 'notFound.title': '404 Pagina non trovata',\n 'notFound.description':\n 'Prova ad aggiungere un file {{indexFile}} nella root della directory docs di questo repository.',\n 'notFound.readMore': 'Scopri di più',\n 'notFound.goBack': 'Indietro',\n 'notFound.contactSupport': 'Contatta il supporto',\n 'notFound.altText': 'Pagina non trovata',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'Entità priva delle proprietà richieste per la ricerca nella scheda punteggio',\n 'errors.missingAggregationId':\n 'La scheda di valutazione non è configurata correttamente; la proprietà ID aggregazione (o ID metrica) non è stata specificata',\n 'errors.invalidApiResponse':\n \"Formato di risposta non valido dall'API della scheda punteggio\",\n 'errors.fetchError':\n 'Errore durante il recupero delle schede punteggio: {{error}}',\n 'errors.metricDataUnavailable': 'Dati metrici non disponibili',\n 'errors.invalidThresholds': 'Soglie non valide',\n 'errors.missingPermission': 'Autorizzazione mancante',\n 'errors.noDataFound': 'Nessun dato trovato',\n 'errors.authenticationError': 'Errore di autenticazione',\n 'errors.missingPermissionMessage':\n \"Per visualizzare le metriche della scheda punteggio, il tuo amministratore deve concedere l'autorizzazione richiesta.\",\n 'errors.userNotFoundInCatalogMessage':\n 'Entità utente non trovata nel catalogo.',\n 'errors.noDataFoundMessage':\n 'Per visualizzare i tuoi dati qui, verifica che le tue entità stiano riportando valori relativi a questa metrica.',\n 'errors.unsupportedAggregationType':\n 'Questa scorecard utilizza un tipo di aggregazione non supportato da questa versione del plugin.',\n 'errors.authenticationErrorMessage':\n 'Effettua il login per visualizzare i tuoi dati.',\n\n // Metric translations\n 'metric.github.open_prs.title': 'Richieste pull aperte su GitHub',\n 'metric.github.open_prs.description':\n 'Conteggio attuale delle richieste pull aperte per uno specifico repository GitHub.',\n 'metric.jira.open_issues.title': 'Ticket di blocco Jira aperti',\n 'metric.jira.open_issues.description':\n 'Evidenzia il numero di problemi critici e di blocco attualmente aperti in Jira.',\n 'metric.sonarqube.quality_gate.title': 'SonarQube Stato del Quality Gate',\n 'metric.sonarqube.quality_gate.description':\n 'Indica se il progetto supera il proprio Quality Gate di SonarQube.',\n 'metric.sonarqube.open_issues.title': 'SonarQube Problemi aperti',\n 'metric.sonarqube.open_issues.description':\n 'Numero di problemi aperti (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n 'metric.sonarqube.security_rating.title':\n 'SonarQube Valutazione di sicurezza',\n 'metric.sonarqube.security_rating.description':\n 'Valutazione di sicurezza di SonarQube.',\n 'metric.sonarqube.security_issues.title': 'SonarQube Problemi di sicurezza',\n 'metric.sonarqube.security_issues.description':\n 'Numero di vulnerabilità di sicurezza aperte in SonarQube.',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube Valutazione della revisione di sicurezza',\n 'metric.sonarqube.security_review_rating.description':\n 'Valutazione della revisione di sicurezza di SonarQube.',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube Hotspot di sicurezza',\n 'metric.sonarqube.security_hotspots.description':\n 'Numero di hotspot di sicurezza da esaminare in SonarQube.',\n 'metric.sonarqube.reliability_rating.title':\n 'SonarQube Valutazione di affidabilità',\n 'metric.sonarqube.reliability_rating.description':\n 'Valutazione di affidabilità di SonarQube.',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube Problemi di affidabilità',\n 'metric.sonarqube.reliability_issues.description':\n 'Numero di bug aperti in SonarQube.',\n 'metric.sonarqube.maintainability_rating.title':\n 'SonarQube Valutazione di manutenibilità',\n 'metric.sonarqube.maintainability_rating.description':\n 'Valutazione di manutenibilità di SonarQube.',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube Problemi di manutenibilità',\n 'metric.sonarqube.maintainability_issues.description':\n 'Numero di code smell aperti in SonarQube.',\n 'metric.sonarqube.code_coverage.title': 'SonarQube Copertura del codice',\n 'metric.sonarqube.code_coverage.description':\n 'Percentuale complessiva di copertura del codice in SonarQube.',\n 'metric.sonarqube.code_duplications.title':\n 'SonarQube Duplicazioni del codice',\n 'metric.sonarqube.code_duplications.description':\n 'Percentuale di righe duplicate in SonarQube.',\n 'metric.filecheck.title': 'Verifica file: {{name}}',\n 'metric.filecheck.description':\n 'Verifica se il file {{name}} esiste nel repository.',\n 'metric.lastUpdated': 'Ultimo aggiornamento: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': 'Ultimo aggiornamento: Non disponibile',\n 'metric.someEntitiesNotReportingValues':\n 'Alcune entità non stanno riportando valori relativi a questa metrica.',\n 'metric.averageCenterTooltipTotalLabel': 'Punteggio totale',\n 'metric.averageCenterTooltipMaxLabel': 'Punteggio massimo possibile',\n 'metric.averageCenterTooltipBreakdownRow_one':\n '{{status}}: {{count}} entità, punteggio: {{score}}',\n 'metric.averageCenterTooltipBreakdownRow_other':\n '{{status}}: {{count}} entità, punteggio: {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} entità, ciascuna {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} entità, ciascuna {{score}}',\n 'metric.averageLegendTooltipRowTotal': 'Punteggio totale {{total}}',\n 'metric.drillDownCalculationFailures':\n 'Il calcolo di questa metrica non è riuscito per una o più entità.',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} entità',\n 'metric.homepageEntityCalculationHealth':\n '{{healthy}} / {{total}} entità senza errori di calcolo della metrica',\n\n // Threshold translations\n 'thresholds.success': 'Attività riuscita',\n 'thresholds.warning': 'Avviso',\n 'thresholds.error': 'Errore',\n 'thresholds.exist': 'Esistente',\n 'thresholds.missing': 'Mancante',\n 'thresholds.noEntities': 'Nessuna entità con stato {{category}}',\n 'thresholds.entities_one': '{{count}} entità',\n 'thresholds.entities_other': '{{count}} entità',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': 'Metrica sconosciuta',\n 'entitiesPage.noDataFound':\n 'Per visualizzare i tuoi dati qui, verifica che le tue entità stiano riportando valori relativi a questa metrica.',\n 'entitiesPage.missingPermission':\n \"Per visualizzare le metriche della scheda punteggio, il tuo amministratore deve concedere l'autorizzazione richiesta.\",\n 'entitiesPage.metricProviderNotRegistered':\n 'Provider di metrica con ID {{metricId}} non registrato.',\n 'entitiesPage.entitiesTable.title': 'Entità',\n 'entitiesPage.entitiesTable.unavailable': 'Non disponibile',\n 'entitiesPage.entitiesTable.titleWithCount': 'Entità ({{count}})',\n 'entitiesPage.entitiesTable.header.status': 'Stato',\n 'entitiesPage.entitiesTable.header.value': 'Valore',\n 'entitiesPage.entitiesTable.header.entity': 'Entità',\n 'entitiesPage.entitiesTable.header.owner': 'Proprietario',\n 'entitiesPage.entitiesTable.header.kind': 'Tipo',\n 'entitiesPage.entitiesTable.header.lastUpdated': 'Ultimo aggiornamento',\n 'entitiesPage.entitiesTable.footer.allRows': 'Tutte le righe',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} riga',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} righe',\n 'entitiesPage.entitiesTable.footer.of': 'di',\n },\n});\n\nexport default scorecardTranslationIt;\n"],"names":[],"mappings":"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"}
@@ -75,6 +75,8 @@ const scorecardTranslationJa = createTranslationMessages({
75
75
  "metric.someEntitiesNotReportingValues": "\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30FC\u304C\u3053\u306E\u6307\u6A19\u306B\u95A2\u9023\u3059\u308B\u5024\u3092\u5831\u544A\u3057\u3066\u3044\u307E\u305B\u3093\u3002",
76
76
  "metric.averageCenterTooltipTotalLabel": "\u5408\u8A08\u30B9\u30B3\u30A2",
77
77
  "metric.averageCenterTooltipMaxLabel": "\u6700\u5927\u53EF\u80FD\u30B9\u30B3\u30A2",
78
+ "metric.averageCenterTooltipBreakdownRow_one": "{{status}}: {{count}} \u4EF6\u3001\u30B9\u30B3\u30A2 {{score}}",
79
+ "metric.averageCenterTooltipBreakdownRow_other": "{{status}}: {{count}} \u4EF6\u3001\u30B9\u30B3\u30A2 {{score}}",
78
80
  "metric.averageLegendTooltipEntitiesEach_one": "{{count}} \u4EF6\u306E\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30FC\u3001\u5404 {{score}}",
79
81
  "metric.averageLegendTooltipEntitiesEach_other": "{{count}} \u4EF6\u306E\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u30FC\u3001\u5404 {{score}}",
80
82
  "metric.averageLegendTooltipRowTotal": "\u5408\u8A08\u30B9\u30B3\u30A2 {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"ja.esm.js","sources":["../../src/translations/ja.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * Japanese translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationJa = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'スコアカードはまだ追加されていません',\n 'emptyState.description':\n 'スコアカードを使用すると、コンポーネントの健全性を一目で監視できます。まず、セットアップ手順に関するドキュメントを参照してください。',\n 'emptyState.button': 'ドキュメントの表示',\n 'emptyState.altText': 'スコアカードなし',\n\n // Permission required translations\n 'permissionRequired.title': '権限がありません',\n 'permissionRequired.description':\n 'スコアカードプラグインを表示するには、管理者に連絡して {{permission}} 権限を付与してもらうよう依頼してください。',\n 'permissionRequired.button': 'さらに表示する',\n 'permissionRequired.altText': '権限が必要',\n\n // Common UI\n 'common.loading': '読み込み中',\n\n // Not found state\n 'notFound.title': '404 ページが見つかりません',\n 'notFound.description':\n 'このリポジトリの docs ディレクトリのルートに {{indexFile}} ファイルを追加してみてください。',\n 'notFound.readMore': '詳細を見る',\n 'notFound.goBack': '戻る',\n 'notFound.contactSupport': 'サポートに連絡',\n 'notFound.altText': 'ページが見つかりません',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'スコアカードの検索に必要なプロパティーがエンティティーにありません',\n 'errors.missingAggregationId':\n 'スコアカードの構成に誤りがあります。集計ID(またはメトリックID)のプロパティが指定されていません',\n 'errors.invalidApiResponse': 'スコアカード API からの応答形式が無効です',\n 'errors.fetchError':\n 'スコアカードの取得中にエラーが発生しました: {{error}}',\n 'errors.metricDataUnavailable': 'メトリクスデータがありません',\n 'errors.invalidThresholds': '無効なしきい値',\n 'errors.missingPermission': '権限がありません',\n 'errors.noDataFound': 'データが見つかりませんでした',\n 'errors.authenticationError': '認証エラー',\n 'errors.missingPermissionMessage':\n 'スコアカードのメトリクスを表示するには、管理者に権限を付与してもらうよう依頼してください。',\n 'errors.userNotFoundInCatalogMessage':\n 'ユーザーエンティティーがカタログに見つかりません',\n 'errors.noDataFoundMessage':\n 'ここでデータを確認するには、エンティティがこの指標に関連する値を報告していることを確認してください。',\n 'errors.unsupportedAggregationType':\n 'このスコアカードの集計タイプは、使用中のプラグインのバージョンではサポートされていません。',\n 'errors.authenticationErrorMessage':\n 'データを確認するにはサインインしてください。',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub のオープン状態の PR',\n 'metric.github.open_prs.description':\n '特定の GitHub リポジトリーにおけるオープン状態のプルリクエストの数。',\n 'metric.jira.open_issues.title':\n 'Jira のオープン状態の進行を妨げているチケット',\n 'metric.jira.open_issues.description':\n 'Jira で現在オープン状態になっている、重大かつ進行を妨げている課題の数を明示します。',\n 'metric.sonarqube.quality_gate.title':\n 'SonarQube クオリティゲートのステータス',\n 'metric.sonarqube.quality_gate.description':\n 'プロジェクトが SonarQube のクオリティゲートに合格しているかどうか。',\n 'metric.sonarqube.open_issues.title': 'SonarQube のオープンな課題',\n 'metric.sonarqube.open_issues.description':\n 'SonarQube におけるオープンな課題 (OPEN、CONFIRMED、REOPENED) の数。',\n 'metric.sonarqube.security_rating.title': 'SonarQube セキュリティ評価',\n 'metric.sonarqube.security_rating.description':\n 'SonarQube のセキュリティ評価。',\n 'metric.sonarqube.security_issues.title':\n 'SonarQube のセキュリティ上の課題',\n 'metric.sonarqube.security_issues.description':\n 'SonarQube におけるオープンなセキュリティ脆弱性の数。',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube セキュリティレビュー評価',\n 'metric.sonarqube.security_review_rating.description':\n 'SonarQube のセキュリティレビュー評価。',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube セキュリティホットスポット',\n 'metric.sonarqube.security_hotspots.description':\n 'SonarQube でレビューが必要なセキュリティホットスポットの数。',\n 'metric.sonarqube.reliability_rating.title': 'SonarQube 信頼性評価',\n 'metric.sonarqube.reliability_rating.description':\n 'SonarQube の信頼性評価。',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube の信頼性に関する課題',\n 'metric.sonarqube.reliability_issues.description':\n 'SonarQube におけるオープンなバグの数。',\n 'metric.sonarqube.maintainability_rating.title': 'SonarQube 保守性評価',\n 'metric.sonarqube.maintainability_rating.description':\n 'SonarQube の保守性評価。',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube の保守性に関する課題',\n 'metric.sonarqube.maintainability_issues.description':\n 'SonarQube におけるオープンなコードスメルの数。',\n 'metric.sonarqube.code_coverage.title': 'SonarQube コードカバレッジ',\n 'metric.sonarqube.code_coverage.description':\n 'SonarQube における全体のコードカバレッジの割合。',\n 'metric.sonarqube.code_duplications.title': 'SonarQube コードの重複',\n 'metric.sonarqube.code_duplications.description':\n 'SonarQube における重複した行の割合。',\n 'metric.filecheck.title': 'ファイル確認: {{name}}',\n 'metric.filecheck.description':\n 'リポジトリーに {{name}} ファイルが存在するかを確認します。',\n 'metric.lastUpdated': '最終更新日: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': '最終更新日: 利用不可',\n 'metric.someEntitiesNotReportingValues':\n 'エンティティーがこの指標に関連する値を報告していません。',\n 'metric.averageCenterTooltipTotalLabel': '合計スコア',\n 'metric.averageCenterTooltipMaxLabel': '最大可能スコア',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} 件のエンティティー、各 {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} 件のエンティティー、各 {{score}}',\n 'metric.averageLegendTooltipRowTotal': '合計スコア {{total}}',\n 'metric.drillDownCalculationFailures':\n '1 件以上のエンティティーでこの指標の計算に失敗しました。',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} エンティティー',\n 'metric.homepageEntityCalculationHealth':\n '指標の計算エラーがないエンティティー {{healthy}} / {{total}}',\n\n // Threshold translations\n 'thresholds.success': '成功',\n 'thresholds.warning': '警告',\n 'thresholds.error': 'エラー',\n 'thresholds.exist': '存在',\n 'thresholds.missing': '欠落',\n 'thresholds.noEntities': '{{category}} 状態のエンティティーがありません',\n 'thresholds.entities_one': '{{count}} エンティティー',\n 'thresholds.entities_other': '{{count}} エンティティー',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': '不明なメトリクス',\n 'entitiesPage.noDataFound':\n 'ここでデータを確認するには、エンティティがこの指標に関連する値を報告していることを確認してください。',\n 'entitiesPage.missingPermission':\n 'スコアカードのメトリクスを表示するには、管理者に権限を付与してもらうよう依頼してください。',\n 'entitiesPage.metricProviderNotRegistered':\n 'ID {{metricId}} のメトリクスプロバイダーが登録されていません。',\n 'entitiesPage.entitiesTable.title': 'エンティティー',\n 'entitiesPage.entitiesTable.unavailable': '利用不可',\n 'entitiesPage.entitiesTable.titleWithCount': 'エンティティー ({{count}})',\n 'entitiesPage.entitiesTable.header.status': '状態',\n 'entitiesPage.entitiesTable.header.value': '値',\n 'entitiesPage.entitiesTable.header.entity': 'エンティティー',\n 'entitiesPage.entitiesTable.header.owner': '所有者',\n 'entitiesPage.entitiesTable.header.kind': '種類',\n 'entitiesPage.entitiesTable.header.lastUpdated': '最終更新日',\n 'entitiesPage.entitiesTable.footer.allRows': 'すべての行',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} 行',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} 行',\n 'entitiesPage.entitiesTable.footer.of': 'の',\n },\n});\n\nexport default scorecardTranslationJa;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ja.esm.js","sources":["../../src/translations/ja.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\nimport { scorecardTranslationRef } from './ref';\n\n/**\n * Japanese translation for plugin.scorecard.\n * @public\n */\nconst scorecardTranslationJa = createTranslationMessages({\n ref: scorecardTranslationRef,\n full: true,\n messages: {\n // Empty state translations\n 'emptyState.title': 'スコアカードはまだ追加されていません',\n 'emptyState.description':\n 'スコアカードを使用すると、コンポーネントの健全性を一目で監視できます。まず、セットアップ手順に関するドキュメントを参照してください。',\n 'emptyState.button': 'ドキュメントの表示',\n 'emptyState.altText': 'スコアカードなし',\n\n // Permission required translations\n 'permissionRequired.title': '権限がありません',\n 'permissionRequired.description':\n 'スコアカードプラグインを表示するには、管理者に連絡して {{permission}} 権限を付与してもらうよう依頼してください。',\n 'permissionRequired.button': 'さらに表示する',\n 'permissionRequired.altText': '権限が必要',\n\n // Common UI\n 'common.loading': '読み込み中',\n\n // Not found state\n 'notFound.title': '404 ページが見つかりません',\n 'notFound.description':\n 'このリポジトリの docs ディレクトリのルートに {{indexFile}} ファイルを追加してみてください。',\n 'notFound.readMore': '詳細を見る',\n 'notFound.goBack': '戻る',\n 'notFound.contactSupport': 'サポートに連絡',\n 'notFound.altText': 'ページが見つかりません',\n\n // Error messages\n 'errors.entityMissingProperties':\n 'スコアカードの検索に必要なプロパティーがエンティティーにありません',\n 'errors.missingAggregationId':\n 'スコアカードの構成に誤りがあります。集計ID(またはメトリックID)のプロパティが指定されていません',\n 'errors.invalidApiResponse': 'スコアカード API からの応答形式が無効です',\n 'errors.fetchError':\n 'スコアカードの取得中にエラーが発生しました: {{error}}',\n 'errors.metricDataUnavailable': 'メトリクスデータがありません',\n 'errors.invalidThresholds': '無効なしきい値',\n 'errors.missingPermission': '権限がありません',\n 'errors.noDataFound': 'データが見つかりませんでした',\n 'errors.authenticationError': '認証エラー',\n 'errors.missingPermissionMessage':\n 'スコアカードのメトリクスを表示するには、管理者に権限を付与してもらうよう依頼してください。',\n 'errors.userNotFoundInCatalogMessage':\n 'ユーザーエンティティーがカタログに見つかりません',\n 'errors.noDataFoundMessage':\n 'ここでデータを確認するには、エンティティがこの指標に関連する値を報告していることを確認してください。',\n 'errors.unsupportedAggregationType':\n 'このスコアカードの集計タイプは、使用中のプラグインのバージョンではサポートされていません。',\n 'errors.authenticationErrorMessage':\n 'データを確認するにはサインインしてください。',\n\n // Metric translations\n 'metric.github.open_prs.title': 'GitHub のオープン状態の PR',\n 'metric.github.open_prs.description':\n '特定の GitHub リポジトリーにおけるオープン状態のプルリクエストの数。',\n 'metric.jira.open_issues.title':\n 'Jira のオープン状態の進行を妨げているチケット',\n 'metric.jira.open_issues.description':\n 'Jira で現在オープン状態になっている、重大かつ進行を妨げている課題の数を明示します。',\n 'metric.sonarqube.quality_gate.title':\n 'SonarQube クオリティゲートのステータス',\n 'metric.sonarqube.quality_gate.description':\n 'プロジェクトが SonarQube のクオリティゲートに合格しているかどうか。',\n 'metric.sonarqube.open_issues.title': 'SonarQube のオープンな課題',\n 'metric.sonarqube.open_issues.description':\n 'SonarQube におけるオープンな課題 (OPEN、CONFIRMED、REOPENED) の数。',\n 'metric.sonarqube.security_rating.title': 'SonarQube セキュリティ評価',\n 'metric.sonarqube.security_rating.description':\n 'SonarQube のセキュリティ評価。',\n 'metric.sonarqube.security_issues.title':\n 'SonarQube のセキュリティ上の課題',\n 'metric.sonarqube.security_issues.description':\n 'SonarQube におけるオープンなセキュリティ脆弱性の数。',\n 'metric.sonarqube.security_review_rating.title':\n 'SonarQube セキュリティレビュー評価',\n 'metric.sonarqube.security_review_rating.description':\n 'SonarQube のセキュリティレビュー評価。',\n 'metric.sonarqube.security_hotspots.title':\n 'SonarQube セキュリティホットスポット',\n 'metric.sonarqube.security_hotspots.description':\n 'SonarQube でレビューが必要なセキュリティホットスポットの数。',\n 'metric.sonarqube.reliability_rating.title': 'SonarQube 信頼性評価',\n 'metric.sonarqube.reliability_rating.description':\n 'SonarQube の信頼性評価。',\n 'metric.sonarqube.reliability_issues.title':\n 'SonarQube の信頼性に関する課題',\n 'metric.sonarqube.reliability_issues.description':\n 'SonarQube におけるオープンなバグの数。',\n 'metric.sonarqube.maintainability_rating.title': 'SonarQube 保守性評価',\n 'metric.sonarqube.maintainability_rating.description':\n 'SonarQube の保守性評価。',\n 'metric.sonarqube.maintainability_issues.title':\n 'SonarQube の保守性に関する課題',\n 'metric.sonarqube.maintainability_issues.description':\n 'SonarQube におけるオープンなコードスメルの数。',\n 'metric.sonarqube.code_coverage.title': 'SonarQube コードカバレッジ',\n 'metric.sonarqube.code_coverage.description':\n 'SonarQube における全体のコードカバレッジの割合。',\n 'metric.sonarqube.code_duplications.title': 'SonarQube コードの重複',\n 'metric.sonarqube.code_duplications.description':\n 'SonarQube における重複した行の割合。',\n 'metric.filecheck.title': 'ファイル確認: {{name}}',\n 'metric.filecheck.description':\n 'リポジトリーに {{name}} ファイルが存在するかを確認します。',\n 'metric.lastUpdated': '最終更新日: {{timestamp}}',\n 'metric.lastUpdatedNotAvailable': '最終更新日: 利用不可',\n 'metric.someEntitiesNotReportingValues':\n 'エンティティーがこの指標に関連する値を報告していません。',\n 'metric.averageCenterTooltipTotalLabel': '合計スコア',\n 'metric.averageCenterTooltipMaxLabel': '最大可能スコア',\n 'metric.averageCenterTooltipBreakdownRow_one':\n '{{status}}: {{count}} 件、スコア {{score}}',\n 'metric.averageCenterTooltipBreakdownRow_other':\n '{{status}}: {{count}} 件、スコア {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_one':\n '{{count}} 件のエンティティー、各 {{score}}',\n 'metric.averageLegendTooltipEntitiesEach_other':\n '{{count}} 件のエンティティー、各 {{score}}',\n 'metric.averageLegendTooltipRowTotal': '合計スコア {{total}}',\n 'metric.drillDownCalculationFailures':\n '1 件以上のエンティティーでこの指標の計算に失敗しました。',\n 'metric.homepageEntityHealthRatio': '{{healthy}}/{{total}} エンティティー',\n 'metric.homepageEntityCalculationHealth':\n '指標の計算エラーがないエンティティー {{healthy}} / {{total}}',\n\n // Threshold translations\n 'thresholds.success': '成功',\n 'thresholds.warning': '警告',\n 'thresholds.error': 'エラー',\n 'thresholds.exist': '存在',\n 'thresholds.missing': '欠落',\n 'thresholds.noEntities': '{{category}} 状態のエンティティーがありません',\n 'thresholds.entities_one': '{{count}} エンティティー',\n 'thresholds.entities_other': '{{count}} エンティティー',\n\n // Entities page translations\n 'entitiesPage.unknownMetric': '不明なメトリクス',\n 'entitiesPage.noDataFound':\n 'ここでデータを確認するには、エンティティがこの指標に関連する値を報告していることを確認してください。',\n 'entitiesPage.missingPermission':\n 'スコアカードのメトリクスを表示するには、管理者に権限を付与してもらうよう依頼してください。',\n 'entitiesPage.metricProviderNotRegistered':\n 'ID {{metricId}} のメトリクスプロバイダーが登録されていません。',\n 'entitiesPage.entitiesTable.title': 'エンティティー',\n 'entitiesPage.entitiesTable.unavailable': '利用不可',\n 'entitiesPage.entitiesTable.titleWithCount': 'エンティティー ({{count}})',\n 'entitiesPage.entitiesTable.header.status': '状態',\n 'entitiesPage.entitiesTable.header.value': '値',\n 'entitiesPage.entitiesTable.header.entity': 'エンティティー',\n 'entitiesPage.entitiesTable.header.owner': '所有者',\n 'entitiesPage.entitiesTable.header.kind': '種類',\n 'entitiesPage.entitiesTable.header.lastUpdated': '最終更新日',\n 'entitiesPage.entitiesTable.footer.allRows': 'すべての行',\n 'entitiesPage.entitiesTable.footer.rows_one': '{{count}} 行',\n 'entitiesPage.entitiesTable.footer.rows_other': '{{count}} 行',\n 'entitiesPage.entitiesTable.footer.of': 'の',\n },\n});\n\nexport default scorecardTranslationJa;\n"],"names":[],"mappings":"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"}
@@ -113,6 +113,8 @@ const scorecardMessages = {
113
113
  someEntitiesNotReportingValues: "Some entities are not reporting values related to this metric.",
114
114
  averageCenterTooltipTotalLabel: "Total score",
115
115
  averageCenterTooltipMaxLabel: "Max possible score",
116
+ averageCenterTooltipBreakdownRow_one: "{{status}}: {{count}} entity, score: {{score}}",
117
+ averageCenterTooltipBreakdownRow_other: "{{status}}: {{count}} entities, score: {{score}}",
116
118
  averageLegendTooltipEntitiesEach_one: "{{count}} entity, each {{score}}",
117
119
  averageLegendTooltipEntitiesEach_other: "{{count}} entities, each {{score}}",
118
120
  averageLegendTooltipRowTotal: "Total score {{total}}",
@@ -1 +1 @@
1
- {"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 * Messages object containing all English translations.\n * This is our single source of truth for translations.\n * @public\n */\nexport const scorecardMessages = {\n // Empty state\n emptyState: {\n title: 'No scorecards added yet',\n description:\n 'Scorecards help you monitor component health at a glance. To begin, explore our documentation for setup guidelines.',\n button: 'View documentation',\n altText: 'No scorecards',\n },\n\n // Not found state (404)\n notFound: {\n title: \"404 We couldn't find that page\",\n description:\n 'Try adding an {{indexFile}} file in the root of the docs directory of this repository.',\n readMore: 'Read more',\n goBack: 'Go back',\n contactSupport: 'Contact support',\n altText: 'Page not found',\n },\n\n // Permission required state\n permissionRequired: {\n title: 'Missing permission',\n description:\n 'To view Scorecard plugin, contact your administrator to give the {{permission}} permission.',\n button: 'Read more',\n altText: 'Permission required',\n },\n\n // Common UI\n common: {\n loading: 'Loading',\n },\n\n // Error messages\n errors: {\n entityMissingProperties:\n 'Entity missing required properties for scorecard lookup',\n missingAggregationId:\n 'Scorecard misconfigured, aggregation ID (or metric ID) property is not provided', // \"or metric ID\" will be removed in the future\n invalidApiResponse: 'Invalid response format from scorecard API',\n fetchError: 'Error fetching scorecards: {{error}}',\n metricDataUnavailable: 'Metric data unavailable',\n invalidThresholds: 'Invalid thresholds',\n missingPermission: 'Missing permission',\n noDataFound: 'No data found',\n authenticationError: 'Authentication error',\n missingPermissionMessage:\n 'To view the scorecard metrics, your administrator must grant you the required permission.',\n userNotFoundInCatalogMessage: 'User entity not found in catalog.',\n noDataFoundMessage:\n 'To see your data here, check that your entities are reporting values related to this metric.',\n unsupportedAggregationType:\n 'This scorecard uses an aggregation type that is not supported by this version of the plugin.',\n authenticationErrorMessage: 'Please sign in to view your data.',\n },\n\n // Metric translations\n metric: {\n 'github.open_prs': {\n title: 'GitHub open PRs',\n description:\n 'Current count of open Pull Requests for a given GitHub repository.',\n },\n 'jira.open_issues': {\n title: 'Jira open blocking tickets',\n description:\n 'Highlights the number of critical, blocking issues that are currently open in Jira.',\n },\n 'sonarqube.quality_gate': {\n title: 'SonarQube Quality Gate Status',\n description: 'Whether the project passes its SonarQube quality gate.',\n },\n 'sonarqube.open_issues': {\n title: 'SonarQube Open Issues',\n description:\n 'Count of open issues (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n },\n 'sonarqube.security_rating': {\n title: 'SonarQube Security Rating',\n description: 'SonarQube security rating.',\n },\n 'sonarqube.security_issues': {\n title: 'SonarQube Security Issues',\n description: 'Count of open security vulnerabilities in SonarQube.',\n },\n 'sonarqube.security_review_rating': {\n title: 'SonarQube Security Review Rating',\n description: 'SonarQube security review rating.',\n },\n 'sonarqube.security_hotspots': {\n title: 'SonarQube Security Hotspots',\n description: 'Count of security hotspots to review in SonarQube.',\n },\n 'sonarqube.reliability_rating': {\n title: 'SonarQube Reliability Rating',\n description: 'SonarQube reliability rating.',\n },\n 'sonarqube.reliability_issues': {\n title: 'SonarQube Reliability Issues',\n description: 'Count of open bugs in SonarQube.',\n },\n 'sonarqube.maintainability_rating': {\n title: 'SonarQube Maintainability Rating',\n description: 'SonarQube maintainability rating.',\n },\n 'sonarqube.maintainability_issues': {\n title: 'SonarQube Maintainability Issues',\n description: 'Count of open code smells in SonarQube.',\n },\n 'sonarqube.code_coverage': {\n title: 'SonarQube Code Coverage',\n description: 'Overall code coverage percentage in SonarQube.',\n },\n 'sonarqube.code_duplications': {\n title: 'SonarQube Code Duplications',\n description: 'Percentage of duplicated lines in SonarQube.',\n },\n filecheck: {\n title: 'File check: {{name}}',\n description: 'Checks whether the {{name}} file exists in the repository.',\n },\n lastUpdated: 'Last updated: {{timestamp}}',\n lastUpdatedNotAvailable: 'Last updated: Not available',\n someEntitiesNotReportingValues:\n 'Some entities are not reporting values related to this metric.',\n averageCenterTooltipTotalLabel: 'Total score',\n averageCenterTooltipMaxLabel: 'Max possible score',\n averageLegendTooltipEntitiesEach_one: '{{count}} entity, each {{score}}',\n averageLegendTooltipEntitiesEach_other:\n '{{count}} entities, each {{score}}',\n averageLegendTooltipRowTotal: 'Total score {{total}}',\n drillDownCalculationFailures:\n 'One or more entities failed while calculating this metric.',\n homepageEntityHealthRatio: '{{healthy}}/{{total}} entities',\n homepageEntityCalculationHealth:\n '{{healthy}} / {{total}} entities without metric calculation errors',\n },\n\n // Threshold translations\n thresholds: {\n success: 'Success',\n warning: 'Warning',\n error: 'Error',\n exist: 'Exist',\n missing: 'Missing',\n noEntities: 'No entities in {{category}} state',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n },\n\n // Entities page translations\n entitiesPage: {\n unknownMetric: 'Unknown metric',\n noDataFound:\n 'To see your data here, check that your entities are reporting values related to this metric.',\n missingPermission:\n 'To view the scorecard metrics, your administrator must grant you the required permission.',\n metricProviderNotRegistered:\n 'Metric provider with ID {{metricId}} is not registered.',\n entitiesTable: {\n title: 'Entities',\n unavailable: 'Unavailable',\n titleWithCount: 'Entities ({{count}})',\n header: {\n status: 'Status',\n value: 'Value',\n entity: 'Entity',\n owner: 'Owner',\n kind: 'Kind',\n lastUpdated: 'Last updated',\n },\n footer: {\n allRows: 'All rows',\n rows_one: '{{count}} row',\n rows_other: '{{count}} rows',\n of: 'of',\n },\n },\n },\n};\n\n/**\n * Translation reference for scorecard plugin\n * @public\n */\nexport const scorecardTranslationRef = createTranslationRef({\n id: 'plugin.scorecard',\n messages: scorecardMessages,\n});\n"],"names":[],"mappings":";;AAuBO,MAAM,iBAAoB,GAAA;AAAA;AAAA,EAE/B,UAAY,EAAA;AAAA,IACV,KAAO,EAAA,yBAAA;AAAA,IACP,WACE,EAAA,qHAAA;AAAA,IACF,MAAQ,EAAA,oBAAA;AAAA,IACR,OAAS,EAAA;AAAA,GACX;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,gCAAA;AAAA,IACP,WACE,EAAA,wFAAA;AAAA,IACF,QAAU,EAAA,WAAA;AAAA,IACV,MAAQ,EAAA,SAAA;AAAA,IACR,cAAgB,EAAA,iBAAA;AAAA,IAChB,OAAS,EAAA;AAAA,GACX;AAAA;AAAA,EAGA,kBAAoB,EAAA;AAAA,IAClB,KAAO,EAAA,oBAAA;AAAA,IACP,WACE,EAAA,6FAAA;AAAA,IACF,MAAQ,EAAA,WAAA;AAAA,IACR,OAAS,EAAA;AAAA,GACX;AAAA;AAAA,EAGA,MAAQ,EAAA;AAAA,IACN,OAAS,EAAA;AAAA,GACX;AAAA;AAAA,EAGA,MAAQ,EAAA;AAAA,IACN,uBACE,EAAA,yDAAA;AAAA,IACF,oBACE,EAAA,iFAAA;AAAA;AAAA,IACF,kBAAoB,EAAA,4CAAA;AAAA,IACpB,UAAY,EAAA,sCAAA;AAAA,IACZ,qBAAuB,EAAA,yBAAA;AAAA,IACvB,iBAAmB,EAAA,oBAAA;AAAA,IACnB,iBAAmB,EAAA,oBAAA;AAAA,IACnB,WAAa,EAAA,eAAA;AAAA,IACb,mBAAqB,EAAA,sBAAA;AAAA,IACrB,wBACE,EAAA,2FAAA;AAAA,IACF,4BAA8B,EAAA,mCAAA;AAAA,IAC9B,kBACE,EAAA,8FAAA;AAAA,IACF,0BACE,EAAA,8FAAA;AAAA,IACF,0BAA4B,EAAA;AAAA,GAC9B;AAAA;AAAA,EAGA,MAAQ,EAAA;AAAA,IACN,iBAAmB,EAAA;AAAA,MACjB,KAAO,EAAA,iBAAA;AAAA,MACP,WACE,EAAA;AAAA,KACJ;AAAA,IACA,kBAAoB,EAAA;AAAA,MAClB,KAAO,EAAA,4BAAA;AAAA,MACP,WACE,EAAA;AAAA,KACJ;AAAA,IACA,wBAA0B,EAAA;AAAA,MACxB,KAAO,EAAA,+BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,uBAAyB,EAAA;AAAA,MACvB,KAAO,EAAA,uBAAA;AAAA,MACP,WACE,EAAA;AAAA,KACJ;AAAA,IACA,2BAA6B,EAAA;AAAA,MAC3B,KAAO,EAAA,2BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,2BAA6B,EAAA;AAAA,MAC3B,KAAO,EAAA,2BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,kCAAoC,EAAA;AAAA,MAClC,KAAO,EAAA,kCAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,6BAA+B,EAAA;AAAA,MAC7B,KAAO,EAAA,6BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,8BAAgC,EAAA;AAAA,MAC9B,KAAO,EAAA,8BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,8BAAgC,EAAA;AAAA,MAC9B,KAAO,EAAA,8BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,kCAAoC,EAAA;AAAA,MAClC,KAAO,EAAA,kCAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,kCAAoC,EAAA;AAAA,MAClC,KAAO,EAAA,kCAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,yBAA2B,EAAA;AAAA,MACzB,KAAO,EAAA,yBAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,6BAA+B,EAAA;AAAA,MAC7B,KAAO,EAAA,6BAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,SAAW,EAAA;AAAA,MACT,KAAO,EAAA,sBAAA;AAAA,MACP,WAAa,EAAA;AAAA,KACf;AAAA,IACA,WAAa,EAAA,6BAAA;AAAA,IACb,uBAAyB,EAAA,6BAAA;AAAA,IACzB,8BACE,EAAA,gEAAA;AAAA,IACF,8BAAgC,EAAA,aAAA;AAAA,IAChC,4BAA8B,EAAA,oBAAA;AAAA,IAC9B,oCAAsC,EAAA,kCAAA;AAAA,IACtC,sCACE,EAAA,oCAAA;AAAA,IACF,4BAA8B,EAAA,uBAAA;AAAA,IAC9B,4BACE,EAAA,4DAAA;AAAA,IACF,yBAA2B,EAAA,gCAAA;AAAA,IAC3B,+BACE,EAAA;AAAA,GACJ;AAAA;AAAA,EAGA,UAAY,EAAA;AAAA,IACV,OAAS,EAAA,SAAA;AAAA,IACT,OAAS,EAAA,SAAA;AAAA,IACT,KAAO,EAAA,OAAA;AAAA,IACP,KAAO,EAAA,OAAA;AAAA,IACP,OAAS,EAAA,SAAA;AAAA,IACT,UAAY,EAAA,mCAAA;AAAA,IACZ,YAAc,EAAA,kBAAA;AAAA,IACd,cAAgB,EAAA;AAAA,GAClB;AAAA;AAAA,EAGA,YAAc,EAAA;AAAA,IACZ,aAAe,EAAA,gBAAA;AAAA,IACf,WACE,EAAA,8FAAA;AAAA,IACF,iBACE,EAAA,2FAAA;AAAA,IACF,2BACE,EAAA,yDAAA;AAAA,IACF,aAAe,EAAA;AAAA,MACb,KAAO,EAAA,UAAA;AAAA,MACP,WAAa,EAAA,aAAA;AAAA,MACb,cAAgB,EAAA,sBAAA;AAAA,MAChB,MAAQ,EAAA;AAAA,QACN,MAAQ,EAAA,QAAA;AAAA,QACR,KAAO,EAAA,OAAA;AAAA,QACP,MAAQ,EAAA,QAAA;AAAA,QACR,KAAO,EAAA,OAAA;AAAA,QACP,IAAM,EAAA,MAAA;AAAA,QACN,WAAa,EAAA;AAAA,OACf;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,OAAS,EAAA,UAAA;AAAA,QACT,QAAU,EAAA,eAAA;AAAA,QACV,UAAY,EAAA,gBAAA;AAAA,QACZ,EAAI,EAAA;AAAA;AACN;AACF;AAEJ;AAMO,MAAM,0BAA0B,oBAAqB,CAAA;AAAA,EAC1D,EAAI,EAAA,kBAAA;AAAA,EACJ,QAAU,EAAA;AACZ,CAAC;;;;"}
1
+ {"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 * Messages object containing all English translations.\n * This is our single source of truth for translations.\n * @public\n */\nexport const scorecardMessages = {\n // Empty state\n emptyState: {\n title: 'No scorecards added yet',\n description:\n 'Scorecards help you monitor component health at a glance. To begin, explore our documentation for setup guidelines.',\n button: 'View documentation',\n altText: 'No scorecards',\n },\n\n // Not found state (404)\n notFound: {\n title: \"404 We couldn't find that page\",\n description:\n 'Try adding an {{indexFile}} file in the root of the docs directory of this repository.',\n readMore: 'Read more',\n goBack: 'Go back',\n contactSupport: 'Contact support',\n altText: 'Page not found',\n },\n\n // Permission required state\n permissionRequired: {\n title: 'Missing permission',\n description:\n 'To view Scorecard plugin, contact your administrator to give the {{permission}} permission.',\n button: 'Read more',\n altText: 'Permission required',\n },\n\n // Common UI\n common: {\n loading: 'Loading',\n },\n\n // Error messages\n errors: {\n entityMissingProperties:\n 'Entity missing required properties for scorecard lookup',\n missingAggregationId:\n 'Scorecard misconfigured, aggregation ID (or metric ID) property is not provided', // \"or metric ID\" will be removed in the future\n invalidApiResponse: 'Invalid response format from scorecard API',\n fetchError: 'Error fetching scorecards: {{error}}',\n metricDataUnavailable: 'Metric data unavailable',\n invalidThresholds: 'Invalid thresholds',\n missingPermission: 'Missing permission',\n noDataFound: 'No data found',\n authenticationError: 'Authentication error',\n missingPermissionMessage:\n 'To view the scorecard metrics, your administrator must grant you the required permission.',\n userNotFoundInCatalogMessage: 'User entity not found in catalog.',\n noDataFoundMessage:\n 'To see your data here, check that your entities are reporting values related to this metric.',\n unsupportedAggregationType:\n 'This scorecard uses an aggregation type that is not supported by this version of the plugin.',\n authenticationErrorMessage: 'Please sign in to view your data.',\n },\n\n // Metric translations\n metric: {\n 'github.open_prs': {\n title: 'GitHub open PRs',\n description:\n 'Current count of open Pull Requests for a given GitHub repository.',\n },\n 'jira.open_issues': {\n title: 'Jira open blocking tickets',\n description:\n 'Highlights the number of critical, blocking issues that are currently open in Jira.',\n },\n 'sonarqube.quality_gate': {\n title: 'SonarQube Quality Gate Status',\n description: 'Whether the project passes its SonarQube quality gate.',\n },\n 'sonarqube.open_issues': {\n title: 'SonarQube Open Issues',\n description:\n 'Count of open issues (OPEN, CONFIRMED, REOPENED) in SonarQube.',\n },\n 'sonarqube.security_rating': {\n title: 'SonarQube Security Rating',\n description: 'SonarQube security rating.',\n },\n 'sonarqube.security_issues': {\n title: 'SonarQube Security Issues',\n description: 'Count of open security vulnerabilities in SonarQube.',\n },\n 'sonarqube.security_review_rating': {\n title: 'SonarQube Security Review Rating',\n description: 'SonarQube security review rating.',\n },\n 'sonarqube.security_hotspots': {\n title: 'SonarQube Security Hotspots',\n description: 'Count of security hotspots to review in SonarQube.',\n },\n 'sonarqube.reliability_rating': {\n title: 'SonarQube Reliability Rating',\n description: 'SonarQube reliability rating.',\n },\n 'sonarqube.reliability_issues': {\n title: 'SonarQube Reliability Issues',\n description: 'Count of open bugs in SonarQube.',\n },\n 'sonarqube.maintainability_rating': {\n title: 'SonarQube Maintainability Rating',\n description: 'SonarQube maintainability rating.',\n },\n 'sonarqube.maintainability_issues': {\n title: 'SonarQube Maintainability Issues',\n description: 'Count of open code smells in SonarQube.',\n },\n 'sonarqube.code_coverage': {\n title: 'SonarQube Code Coverage',\n description: 'Overall code coverage percentage in SonarQube.',\n },\n 'sonarqube.code_duplications': {\n title: 'SonarQube Code Duplications',\n description: 'Percentage of duplicated lines in SonarQube.',\n },\n filecheck: {\n title: 'File check: {{name}}',\n description: 'Checks whether the {{name}} file exists in the repository.',\n },\n lastUpdated: 'Last updated: {{timestamp}}',\n lastUpdatedNotAvailable: 'Last updated: Not available',\n someEntitiesNotReportingValues:\n 'Some entities are not reporting values related to this metric.',\n averageCenterTooltipTotalLabel: 'Total score',\n averageCenterTooltipMaxLabel: 'Max possible score',\n averageCenterTooltipBreakdownRow_one:\n '{{status}}: {{count}} entity, score: {{score}}',\n averageCenterTooltipBreakdownRow_other:\n '{{status}}: {{count}} entities, score: {{score}}',\n averageLegendTooltipEntitiesEach_one: '{{count}} entity, each {{score}}',\n averageLegendTooltipEntitiesEach_other:\n '{{count}} entities, each {{score}}',\n averageLegendTooltipRowTotal: 'Total score {{total}}',\n drillDownCalculationFailures:\n 'One or more entities failed while calculating this metric.',\n homepageEntityHealthRatio: '{{healthy}}/{{total}} entities',\n homepageEntityCalculationHealth:\n '{{healthy}} / {{total}} entities without metric calculation errors',\n },\n\n // Threshold translations\n thresholds: {\n success: 'Success',\n warning: 'Warning',\n error: 'Error',\n exist: 'Exist',\n missing: 'Missing',\n noEntities: 'No entities in {{category}} state',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n },\n\n // Entities page translations\n entitiesPage: {\n unknownMetric: 'Unknown metric',\n noDataFound:\n 'To see your data here, check that your entities are reporting values related to this metric.',\n missingPermission:\n 'To view the scorecard metrics, your administrator must grant you the required permission.',\n metricProviderNotRegistered:\n 'Metric provider with ID {{metricId}} is not registered.',\n entitiesTable: {\n title: 'Entities',\n unavailable: 'Unavailable',\n titleWithCount: 'Entities ({{count}})',\n header: {\n status: 'Status',\n value: 'Value',\n entity: 'Entity',\n owner: 'Owner',\n kind: 'Kind',\n lastUpdated: 'Last updated',\n },\n footer: {\n allRows: 'All rows',\n rows_one: '{{count}} row',\n rows_other: '{{count}} rows',\n of: 'of',\n },\n },\n },\n};\n\n/**\n * Translation reference for scorecard plugin\n * @public\n */\nexport const scorecardTranslationRef = createTranslationRef({\n id: 'plugin.scorecard',\n messages: scorecardMessages,\n});\n"],"names":[],"mappings":"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"}
@@ -69,6 +69,8 @@ declare const scorecardTranslationRef: _backstage_frontend_plugin_api.Translatio
69
69
  readonly "metric.someEntitiesNotReportingValues": string;
70
70
  readonly "metric.averageCenterTooltipTotalLabel": string;
71
71
  readonly "metric.averageCenterTooltipMaxLabel": string;
72
+ readonly "metric.averageCenterTooltipBreakdownRow_one": string;
73
+ readonly "metric.averageCenterTooltipBreakdownRow_other": string;
72
74
  readonly "metric.averageLegendTooltipEntitiesEach_one": string;
73
75
  readonly "metric.averageLegendTooltipEntitiesEach_other": string;
74
76
  readonly "metric.averageLegendTooltipRowTotal": string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@red-hat-developer-hub/backstage-plugin-scorecard",
3
- "version": "2.7.3",
3
+ "version": "2.7.5",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",
@@ -75,7 +75,7 @@
75
75
  "@backstage/theme": "^0.7.2",
76
76
  "@mui/icons-material": "5.18.0",
77
77
  "@mui/material": "5.18.0",
78
- "@red-hat-developer-hub/backstage-plugin-scorecard-common": "^2.7.3",
78
+ "@red-hat-developer-hub/backstage-plugin-scorecard-common": "^2.7.5",
79
79
  "@tanstack/react-query": "^5.95.2",
80
80
  "date-fns": "^4.1.0",
81
81
  "react-use": "^17.2.4",
@@ -1,39 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import Stack from '@mui/material/Stack';
3
- import { useTranslation } from '../../../hooks/useTranslation.esm.js';
4
- import { TooltipContent, formatAggregationScoreDetail } from './TooltipContent.esm.js';
5
- import { formatPercentage } from '../../../utils/formatPercentage.esm.js';
6
-
7
- const LegendTooltipContent = ({
8
- row,
9
- maxPossible
10
- }) => {
11
- const { t } = useTranslation();
12
- const count = row.value;
13
- const unitScore = row.score ?? 0;
14
- const rowTotal = count * unitScore;
15
- const percentLabel = maxPossible && maxPossible > 0 ? `${formatPercentage(rowTotal / maxPossible * 100)}%` : "\u2014";
16
- return /* @__PURE__ */ jsxs(Stack, { direction: "column", children: [
17
- /* @__PURE__ */ jsx(
18
- TooltipContent,
19
- {
20
- label: t("metric.averageLegendTooltipEntitiesEach", {
21
- count,
22
- score: formatAggregationScoreDetail(unitScore)
23
- })
24
- }
25
- ),
26
- /* @__PURE__ */ jsx(
27
- TooltipContent,
28
- {
29
- label: t("metric.averageLegendTooltipRowTotal", {
30
- total: formatAggregationScoreDetail(rowTotal)
31
- }),
32
- value: percentLabel
33
- }
34
- )
35
- ] });
36
- };
37
-
38
- export { LegendTooltipContent };
39
- //# sourceMappingURL=LegendTooltipContent.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegendTooltipContent.esm.js","sources":["../../../../src/components/AggregatedMetricCards/AverageCard/LegendTooltipContent.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 type { PieData } from '../../types';\nimport Stack from '@mui/material/Stack';\nimport { useTranslation } from '../../../hooks/useTranslation';\nimport { formatAggregationScoreDetail, TooltipContent } from './TooltipContent';\nimport { formatPercentage } from '../../../utils/formatPercentage';\n\nexport const LegendTooltipContent = ({\n row,\n maxPossible,\n}: {\n row: PieData;\n maxPossible: number | undefined;\n}) => {\n const { t } = useTranslation();\n const count = row.value;\n const unitScore = row.score ?? 0;\n const rowTotal = count * unitScore;\n const percentLabel =\n maxPossible && maxPossible > 0\n ? `${formatPercentage((rowTotal / maxPossible) * 100)}%`\n : '—';\n\n return (\n <Stack direction=\"column\">\n <TooltipContent\n label={t('metric.averageLegendTooltipEntitiesEach', {\n count,\n score: formatAggregationScoreDetail(unitScore),\n } as any)}\n />\n <TooltipContent\n label={t('metric.averageLegendTooltipRowTotal', {\n total: formatAggregationScoreDetail(rowTotal),\n } as any)}\n value={percentLabel}\n />\n </Stack>\n );\n};\n"],"names":[],"mappings":";;;;;;AAsBO,MAAM,uBAAuB,CAAC;AAAA,EACnC,GAAA;AAAA,EACA;AACF,CAGM,KAAA;AACJ,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA;AAC7B,EAAA,MAAM,QAAQ,GAAI,CAAA,KAAA;AAClB,EAAM,MAAA,SAAA,GAAY,IAAI,KAAS,IAAA,CAAA;AAC/B,EAAA,MAAM,WAAW,KAAQ,GAAA,SAAA;AACzB,EAAM,MAAA,YAAA,GACJ,WAAe,IAAA,WAAA,GAAc,CACzB,GAAA,CAAA,EAAG,iBAAkB,QAAW,GAAA,WAAA,GAAe,GAAG,CAAC,CACnD,CAAA,CAAA,GAAA,QAAA;AAEN,EACE,uBAAA,IAAA,CAAC,KAAM,EAAA,EAAA,SAAA,EAAU,QACf,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,yCAA2C,EAAA;AAAA,UAClD,KAAA;AAAA,UACA,KAAA,EAAO,6BAA6B,SAAS;AAAA,SACvC;AAAA;AAAA,KACV;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,qCAAuC,EAAA;AAAA,UAC9C,KAAA,EAAO,6BAA6B,QAAQ;AAAA,SACtC,CAAA;AAAA,QACR,KAAO,EAAA;AAAA;AAAA;AACT,GACF,EAAA,CAAA;AAEJ;;;;"}