@backstage-community/plugin-tech-insights-maturity 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +2 -2
- package/dist/api/MaturityApi.esm.js.map +1 -1
- package/dist/api/MaturityClient.esm.js +1 -1
- package/dist/api/MaturityClient.esm.js.map +1 -1
- package/dist/components/MaturityChartCard/MaturityChartCard.esm.js +1 -1
- package/dist/components/MaturityRankWidget/MaturityRankWidget.esm.js +1 -1
- package/dist/components/MaturityScorePage/MaturityScorePage.esm.js +1 -1
- package/dist/components/MaturityScorePage/maturityTableRows.esm.js.map +1 -1
- package/dist/components/MaturitySummaryInfoCard/MaturitySummaryInfoCard.esm.js +1 -1
- package/dist/components/MaturitySummaryPage/MaturitySummaryPage.esm.js +1 -1
- package/dist/components/MaturitySummaryTable/MaturitySummaryTable.esm.js +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @backstage-community/plugin-tech-insights-maturity
|
|
2
2
|
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d2113b3: Fixed entity page integration instructions
|
|
8
|
+
- a8e2f2c: Updated dependency `@material-ui/lab` to `4.0.0-alpha.61`.
|
|
9
|
+
Updated dependency `@mui/icons-material` to `5.16.14`.
|
|
10
|
+
Updated dependency `@mui/material` to `5.16.14`.
|
|
11
|
+
Updated dependency `@mui/styles` to `5.16.14`.
|
|
12
|
+
Updated dependency `@mui/x-charts` to `6.19.8`.
|
|
13
|
+
Updated dependency `@mui/lab` to `5.0.0-alpha.175`.
|
|
14
|
+
- 47f1713: - update imports to come from the tech-insights-react package
|
|
15
|
+
- remove direct dependency on `tech-insights` frontend package
|
|
16
|
+
|
|
3
17
|
## 0.2.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ Note: This only applies to entities of Kind: 'System', 'Domain', or 'Group'
|
|
|
91
91
|
```tsx
|
|
92
92
|
// packages/app/src/components/catalog/EntityPage.tsx
|
|
93
93
|
|
|
94
|
-
import {
|
|
94
|
+
import { EntityMaturitySummaryContent } from '@backstage-community/plugin-tech-insight-maturity';
|
|
95
95
|
|
|
96
96
|
const systemEntityPage = (
|
|
97
97
|
<EntityLayoutWrapper>
|
|
@@ -100,7 +100,7 @@ const systemEntityPage = (
|
|
|
100
100
|
</EntityLayout.Route>
|
|
101
101
|
...
|
|
102
102
|
<EntityLayout.Route path="/maturity" title="Maturity">
|
|
103
|
-
<
|
|
103
|
+
<EntityMaturitySummaryContent />
|
|
104
104
|
</EntityLayout.Route>
|
|
105
105
|
...
|
|
106
106
|
</EntityLayoutWrapper>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaturityApi.esm.js","sources":["../../src/api/MaturityApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TechInsightsApi } from '@backstage-community/plugin-tech-insights';\nimport { Entity } from '@backstage/catalog-model';\nimport { createApiRef } from '@backstage/core-plugin-api';\nimport {\n BulkMaturityCheckResponse,\n BulkMaturitySummary,\n MaturityRank,\n MaturityScore,\n MaturitySummary,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\n\n/**\n * {@link @backstage/core-plugin-api#ApiRef} for the {@link MaturityApi}\n *\n * @public\n */\nexport const maturityApiRef = createApiRef<MaturityApi>({\n id: 'plugin.maturity.service',\n});\n\n/**\n * Maturity API client interface extention of TechInsightsApi\n *\n * @public\n */\nexport type MaturityApi = TechInsightsApi & {\n getMaturityRank(entity: Entity): Promise<MaturityRank>;\n getMaturityScore(entity: Entity): Promise<MaturityScore>;\n getBulkMaturityCheckResults(\n entities: Entity[],\n ): Promise<BulkMaturityCheckResponse>;\n getChildMaturityCheckResults(\n entity: Entity,\n ): Promise<BulkMaturityCheckResponse>;\n getMaturitySummary(entity: Entity): Promise<MaturitySummary>;\n getBulkMaturitySummary(entities: Entity[]): Promise<BulkMaturitySummary>;\n};\n"],"names":[],"mappings":";;AA+BO,MAAM,iBAAiB,YAA0B,CAAA;AAAA,EACtD,EAAI,EAAA;AACN,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"MaturityApi.esm.js","sources":["../../src/api/MaturityApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TechInsightsApi } from '@backstage-community/plugin-tech-insights-react';\nimport { Entity } from '@backstage/catalog-model';\nimport { createApiRef } from '@backstage/core-plugin-api';\nimport {\n BulkMaturityCheckResponse,\n BulkMaturitySummary,\n MaturityRank,\n MaturityScore,\n MaturitySummary,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\n\n/**\n * {@link @backstage/core-plugin-api#ApiRef} for the {@link MaturityApi}\n *\n * @public\n */\nexport const maturityApiRef = createApiRef<MaturityApi>({\n id: 'plugin.maturity.service',\n});\n\n/**\n * Maturity API client interface extention of TechInsightsApi\n *\n * @public\n */\nexport type MaturityApi = TechInsightsApi & {\n getMaturityRank(entity: Entity): Promise<MaturityRank>;\n getMaturityScore(entity: Entity): Promise<MaturityScore>;\n getBulkMaturityCheckResults(\n entities: Entity[],\n ): Promise<BulkMaturityCheckResponse>;\n getChildMaturityCheckResults(\n entity: Entity,\n ): Promise<BulkMaturityCheckResponse>;\n getMaturitySummary(entity: Entity): Promise<MaturitySummary>;\n getBulkMaturitySummary(entities: Entity[]): Promise<BulkMaturitySummary>;\n};\n"],"names":[],"mappings":";;AA+BO,MAAM,iBAAiB,YAA0B,CAAA;AAAA,EACtD,EAAI,EAAA;AACN,CAAC;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getCompoundEntityRef, stringifyEntityRef, isComponentEntity, RELATION_HAS_PART, RELATION_PARENT_OF, RELATION_OWNER_OF } from '@backstage/catalog-model';
|
|
2
2
|
import { getEntityRelations } from '@backstage/plugin-catalog-react';
|
|
3
|
-
import { TechInsightsClient } from '@backstage-community/plugin-tech-insights';
|
|
3
|
+
import { TechInsightsClient } from '@backstage-community/plugin-tech-insights-react';
|
|
4
4
|
import { ScoringDataFormatter } from './ScoringDataFormatter.esm.js';
|
|
5
5
|
|
|
6
6
|
const SDF = new ScoringDataFormatter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaturityClient.esm.js","sources":["../../src/api/MaturityClient.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CatalogApi } from '@backstage/catalog-client';\nimport {\n CompoundEntityRef,\n Entity,\n getCompoundEntityRef,\n isComponentEntity,\n RELATION_HAS_PART,\n RELATION_OWNER_OF,\n RELATION_PARENT_OF,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { getEntityRelations } from '@backstage/plugin-catalog-react';\nimport { TechInsightsClient } from '@backstage-community/plugin-tech-insights';\nimport {\n BulkMaturityCheckResponse,\n BulkMaturitySummary,\n MaturityCheckResult,\n MaturityRank,\n MaturityScore,\n MaturitySummary,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\nimport { MaturityApi } from './MaturityApi';\nimport { ScoringDataFormatter } from './ScoringDataFormatter';\n\nconst SDF = new ScoringDataFormatter();\n\n/**\n * MaturityClient extension of TechInsightsClient\n *\n * @public\n */\nexport class MaturityClient extends TechInsightsClient implements MaturityApi {\n readonly catalogApi: CatalogApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n catalogApi: CatalogApi;\n }) {\n super(options);\n this.catalogApi = options.catalogApi;\n }\n\n public async getMaturityRank(entity: Entity): Promise<MaturityRank> {\n const checksResult = await this.getCheckResults(entity);\n return SDF.getMaturityRank(checksResult);\n }\n\n public async getBulkMaturityCheckResults(\n entities: Entity[],\n ): Promise<BulkMaturityCheckResponse> {\n return await this.getBulkCheckResults(\n entities.map(x => getCompoundEntityRef(x)),\n );\n }\n\n public async getMaturityScore(entity: Entity): Promise<MaturityScore> {\n const checks = await this.getCheckResults(entity);\n const rank = SDF.getMaturityRank(checks);\n const summary = SDF.getMaturitySummary(checks);\n return {\n checks,\n summary,\n rank,\n };\n }\n\n public async getChildMaturityCheckResults(\n entity: Entity,\n ): Promise<BulkMaturityCheckResponse> {\n const entities = await this.getRelatedComponents(entity);\n return await this.getBulkCheckResults(entities);\n }\n\n public async getMaturitySummary(entity: Entity): Promise<MaturitySummary> {\n const checksResult = await this.getCheckResults(entity);\n return SDF.getMaturitySummary(checksResult);\n }\n\n public async getBulkMaturitySummary(\n entities: Entity[],\n ): Promise<BulkMaturitySummary> {\n return Promise.all(\n entities.map(async x => {\n const checks = await this.getCheckResults(x);\n const summary = SDF.getMaturitySummary(checks);\n const rank = SDF.getMaturityRank(checks);\n\n return {\n entity: stringifyEntityRef(x),\n rank: rank.rank,\n isMaxRank: rank.isMaxRank,\n summary,\n };\n }),\n );\n }\n\n private async getCheckResults(\n entity: Entity,\n ): Promise<MaturityCheckResult[]> {\n if (isComponentEntity(entity)) {\n return (await this.runChecks(\n getCompoundEntityRef(entity),\n )) as MaturityCheckResult[];\n }\n\n const entities = await this.getRelatedComponents(entity);\n return await this.getGroupCheckResults(entities);\n }\n\n private async getBulkCheckResults(entities: CompoundEntityRef[]) {\n const bulkResponse = await this.runBulkChecks(entities);\n return Promise.all(\n bulkResponse.map(async x => {\n const checks = x.results as MaturityCheckResult[];\n const rank = SDF.getMaturityRank(checks);\n\n return {\n entity: x.entity,\n rank: rank.rank,\n isMaxRank: rank.isMaxRank,\n checks,\n };\n }),\n );\n }\n\n private async getGroupCheckResults(\n entities: CompoundEntityRef[],\n ): Promise<MaturityCheckResult[]> {\n /**\n * Passing an empty array into techInsightsClient.runBulkChecks()\n * now causes checks to run across the entire catalog.\n * We don't want to run checks here if no entities were provided.\n */\n if (entities.length === 0) {\n return [];\n }\n\n const results: MaturityCheckResult[] = [];\n const bulkResponse = await this.runBulkChecks(entities);\n for (const response of bulkResponse) {\n Array.prototype.push.apply(results, response.results);\n }\n\n return results;\n }\n\n private async getRelatedComponents(\n entity: Entity,\n ): Promise<CompoundEntityRef[]> {\n switch (entity.kind) {\n case 'System':\n return getEntityRelations(entity, RELATION_HAS_PART);\n case 'Domain':\n return await this.getRelatedComponentsByRefs(\n getEntityRelations(entity, RELATION_HAS_PART),\n );\n case 'Group':\n return this.getComponentsForGroup(entity);\n default:\n return [getCompoundEntityRef(entity)];\n }\n }\n\n private async getComponentsForGroup(\n entity: Entity,\n ): Promise<CompoundEntityRef[]> {\n const childEntities = getEntityRelations(entity, RELATION_PARENT_OF);\n if (childEntities.length > 0) {\n return await this.getRelatedComponentsByRefs(childEntities);\n }\n const entityPartsRef = getEntityRelations(entity, RELATION_OWNER_OF);\n return await this.getRelatedComponentsByRefs(entityPartsRef);\n }\n\n private async getRelatedComponentsByRefs(refs: CompoundEntityRef[]) {\n const { items } = await this.catalogApi.getEntitiesByRefs({\n entityRefs: refs.map(x => stringifyEntityRef(x)),\n });\n\n const entityParts: CompoundEntityRef[] = [];\n for (const item of items) {\n Array.prototype.push.apply(\n entityParts,\n await this.getRelatedComponents(item!),\n );\n }\n return entityParts;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MaturityClient.esm.js","sources":["../../src/api/MaturityClient.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { CatalogApi } from '@backstage/catalog-client';\nimport {\n CompoundEntityRef,\n Entity,\n getCompoundEntityRef,\n isComponentEntity,\n RELATION_HAS_PART,\n RELATION_OWNER_OF,\n RELATION_PARENT_OF,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { getEntityRelations } from '@backstage/plugin-catalog-react';\nimport { TechInsightsClient } from '@backstage-community/plugin-tech-insights-react';\nimport {\n BulkMaturityCheckResponse,\n BulkMaturitySummary,\n MaturityCheckResult,\n MaturityRank,\n MaturityScore,\n MaturitySummary,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\nimport { MaturityApi } from './MaturityApi';\nimport { ScoringDataFormatter } from './ScoringDataFormatter';\n\nconst SDF = new ScoringDataFormatter();\n\n/**\n * MaturityClient extension of TechInsightsClient\n *\n * @public\n */\nexport class MaturityClient extends TechInsightsClient implements MaturityApi {\n readonly catalogApi: CatalogApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n catalogApi: CatalogApi;\n }) {\n super(options);\n this.catalogApi = options.catalogApi;\n }\n\n public async getMaturityRank(entity: Entity): Promise<MaturityRank> {\n const checksResult = await this.getCheckResults(entity);\n return SDF.getMaturityRank(checksResult);\n }\n\n public async getBulkMaturityCheckResults(\n entities: Entity[],\n ): Promise<BulkMaturityCheckResponse> {\n return await this.getBulkCheckResults(\n entities.map(x => getCompoundEntityRef(x)),\n );\n }\n\n public async getMaturityScore(entity: Entity): Promise<MaturityScore> {\n const checks = await this.getCheckResults(entity);\n const rank = SDF.getMaturityRank(checks);\n const summary = SDF.getMaturitySummary(checks);\n return {\n checks,\n summary,\n rank,\n };\n }\n\n public async getChildMaturityCheckResults(\n entity: Entity,\n ): Promise<BulkMaturityCheckResponse> {\n const entities = await this.getRelatedComponents(entity);\n return await this.getBulkCheckResults(entities);\n }\n\n public async getMaturitySummary(entity: Entity): Promise<MaturitySummary> {\n const checksResult = await this.getCheckResults(entity);\n return SDF.getMaturitySummary(checksResult);\n }\n\n public async getBulkMaturitySummary(\n entities: Entity[],\n ): Promise<BulkMaturitySummary> {\n return Promise.all(\n entities.map(async x => {\n const checks = await this.getCheckResults(x);\n const summary = SDF.getMaturitySummary(checks);\n const rank = SDF.getMaturityRank(checks);\n\n return {\n entity: stringifyEntityRef(x),\n rank: rank.rank,\n isMaxRank: rank.isMaxRank,\n summary,\n };\n }),\n );\n }\n\n private async getCheckResults(\n entity: Entity,\n ): Promise<MaturityCheckResult[]> {\n if (isComponentEntity(entity)) {\n return (await this.runChecks(\n getCompoundEntityRef(entity),\n )) as MaturityCheckResult[];\n }\n\n const entities = await this.getRelatedComponents(entity);\n return await this.getGroupCheckResults(entities);\n }\n\n private async getBulkCheckResults(entities: CompoundEntityRef[]) {\n const bulkResponse = await this.runBulkChecks(entities);\n return Promise.all(\n bulkResponse.map(async x => {\n const checks = x.results as MaturityCheckResult[];\n const rank = SDF.getMaturityRank(checks);\n\n return {\n entity: x.entity,\n rank: rank.rank,\n isMaxRank: rank.isMaxRank,\n checks,\n };\n }),\n );\n }\n\n private async getGroupCheckResults(\n entities: CompoundEntityRef[],\n ): Promise<MaturityCheckResult[]> {\n /**\n * Passing an empty array into techInsightsClient.runBulkChecks()\n * now causes checks to run across the entire catalog.\n * We don't want to run checks here if no entities were provided.\n */\n if (entities.length === 0) {\n return [];\n }\n\n const results: MaturityCheckResult[] = [];\n const bulkResponse = await this.runBulkChecks(entities);\n for (const response of bulkResponse) {\n Array.prototype.push.apply(results, response.results);\n }\n\n return results;\n }\n\n private async getRelatedComponents(\n entity: Entity,\n ): Promise<CompoundEntityRef[]> {\n switch (entity.kind) {\n case 'System':\n return getEntityRelations(entity, RELATION_HAS_PART);\n case 'Domain':\n return await this.getRelatedComponentsByRefs(\n getEntityRelations(entity, RELATION_HAS_PART),\n );\n case 'Group':\n return this.getComponentsForGroup(entity);\n default:\n return [getCompoundEntityRef(entity)];\n }\n }\n\n private async getComponentsForGroup(\n entity: Entity,\n ): Promise<CompoundEntityRef[]> {\n const childEntities = getEntityRelations(entity, RELATION_PARENT_OF);\n if (childEntities.length > 0) {\n return await this.getRelatedComponentsByRefs(childEntities);\n }\n const entityPartsRef = getEntityRelations(entity, RELATION_OWNER_OF);\n return await this.getRelatedComponentsByRefs(entityPartsRef);\n }\n\n private async getRelatedComponentsByRefs(refs: CompoundEntityRef[]) {\n const { items } = await this.catalogApi.getEntitiesByRefs({\n entityRefs: refs.map(x => stringifyEntityRef(x)),\n });\n\n const entityParts: CompoundEntityRef[] = [];\n for (const item of items) {\n Array.prototype.push.apply(\n entityParts,\n await this.getRelatedComponents(item!),\n );\n }\n return entityParts;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ import useAsyncRetry from 'react-use/lib/useAsync';
|
|
|
11
11
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
12
12
|
import '@backstage/catalog-model';
|
|
13
13
|
import '@backstage/plugin-catalog-react';
|
|
14
|
-
import '@backstage-community/plugin-tech-insights';
|
|
14
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
15
15
|
import { getRankColor } from '../../helpers/utils.esm.js';
|
|
16
16
|
|
|
17
17
|
const size = {
|
|
@@ -4,7 +4,7 @@ import { useApi } from '@backstage/core-plugin-api';
|
|
|
4
4
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
5
5
|
import '@backstage/catalog-model';
|
|
6
6
|
import '@backstage/plugin-catalog-react';
|
|
7
|
-
import '@backstage-community/plugin-tech-insights';
|
|
7
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
8
8
|
import '@backstage-community/plugin-tech-insights-maturity-common';
|
|
9
9
|
import { MaturityRankAvatar } from '../MaturityRankAvatar/MaturityRankAvatar.esm.js';
|
|
10
10
|
|
|
@@ -7,7 +7,7 @@ import { useEntity } from '@backstage/plugin-catalog-react';
|
|
|
7
7
|
import Grid from '@mui/material/Grid';
|
|
8
8
|
import Alert from '@mui/material/Alert';
|
|
9
9
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
10
|
-
import '@backstage-community/plugin-tech-insights';
|
|
10
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
11
11
|
import { Rank } from '@backstage-community/plugin-tech-insights-maturity-common';
|
|
12
12
|
import { MaturityRankInfoCard } from '../MaturityRankInfoCard/MaturityRankInfoCard.esm.js';
|
|
13
13
|
import { Box } from '@material-ui/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maturityTableRows.esm.js","sources":["../../../src/components/MaturityScorePage/maturityTableRows.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Link } from '@backstage/core-components';\nimport {\n MaturityCheckResult,\n MaturityRank,\n Rank,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp';\nimport CancelTwoToneIcon from '@mui/icons-material/Cancel';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport CheckCircleTwoToneIcon from '@mui/icons-material/CheckCircleTwoTone';\nimport EmojiObjectsIcon from '@mui/icons-material/EmojiObjects';\nimport MenuBookIcon from '@mui/icons-material/MenuBook';\nimport MuiAccordion, { AccordionProps } from '@mui/material/Accordion';\nimport MuiAccordionDetails from '@mui/material/AccordionDetails';\nimport MuiAccordionSummary, {\n AccordionSummaryProps,\n} from '@mui/material/AccordionSummary';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { makeStyles, styled } from '@mui/styles';\nimport React from 'react';\nimport { MaturityRankAvatar } from '../MaturityRankAvatar';\nimport { InsightFacts } from '@backstage-community/plugin-tech-insights-common/client';\n\ninterface Props {\n checks: MaturityCheckResult[];\n facts: InsightFacts;\n rank: MaturityRank;\n category: Rank;\n}\n\nconst Accordion = styled((props: AccordionProps) => (\n <MuiAccordion disableGutters elevation={0} square {...props} />\n))(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n '&:not(:last-child)': {\n borderBottom: 0,\n },\n '&:before': {\n display: 'none',\n },\n}));\n\nconst AccordionSummary = styled((props: AccordionSummaryProps) => (\n <MuiAccordionSummary\n expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: '0.9rem' }} />}\n {...props}\n />\n))(({ theme }) => ({\n backgroundColor:\n theme.palette.mode === 'dark'\n ? 'rgba(255, 255, 255, .05)'\n : 'rgba(0, 0, 0, .03)',\n flexDirection: 'row-reverse',\n width: '100%',\n paddingLeft: theme.spacing(2),\n '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {\n transform: 'rotate(90deg)',\n },\n '& .MuiAccordionSummary-content': {\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: '1px solid rgba(0, 0, 0, .125)',\n}));\n\nconst MaturityCheckTableRow = ({\n checkResult,\n updated,\n}: {\n checkResult: MaturityCheckResult;\n updated: string;\n}) => {\n const [expanded, setExpanded] = React.useState<boolean>(\n checkResult.result === false,\n );\n\n const handleChange =\n () => (_event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded);\n };\n\n const useStyles = makeStyles({\n check: {\n marginLeft: '2rem',\n },\n solution: {\n wordBreak: 'break-word',\n whiteSpace: 'pre-wrap',\n },\n filters: {\n fontSize: 15,\n },\n });\n\n const { check, solution, filters } = useStyles();\n return (\n <div>\n <Accordion expanded={expanded} onChange={handleChange()}>\n <AccordionSummary aria-controls=\"panel1d-content\" id=\"panel1d-header\">\n <Grid container alignItems=\"center\" spacing={2}>\n <Grid item xs={3}>\n <Stack direction=\"row\" spacing={2} className={check}>\n <MaturityRankAvatar\n value={{ rank: checkResult.check.metadata.rank }}\n size={25}\n />\n <Typography>{checkResult.check.id}</Typography>\n </Stack>\n </Grid>\n <Grid item xs={7.5}>\n <Typography className={check}>\n {checkResult.check.description}\n </Typography>\n </Grid>\n <Grid item xs={1.5}>\n {checkResult.result ? (\n <CheckCircleTwoToneIcon\n className={check}\n style={{ color: '#53d44c' }}\n />\n ) : (\n <CancelTwoToneIcon\n className={check}\n style={{ color: '#f54040' }}\n />\n )}\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={2} sx={{ paddingLeft: 2, paddingRight: 2 }}>\n <Grid item xs={9}>\n <Stack spacing={1}>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Solution: How to pass the check\">\n <EmojiObjectsIcon color=\"warning\" />\n </Tooltip>\n <Typography className={solution}>\n {checkResult.check.metadata?.solution}\n </Typography>\n </Stack>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Update: Last time the maturity check was updated\">\n <AccessTimeIcon color=\"primary\" />\n </Tooltip>\n <Typography variant=\"subtitle2\" className={filters}>\n {updated ? `Updated ${updated}` : 'Not yet run'}\n </Typography>\n </Stack>\n </Stack>\n </Grid>\n <Grid item xs={3}>\n <Stack spacing={1}>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Category: The category for this check\">\n <CategoryIcon color=\"primary\" />\n </Tooltip>\n <Typography variant=\"subtitle1\" className={filters}>\n {checkResult.check.metadata?.category}\n </Typography>\n </Stack>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Reference: Consult the documentation linked here for more background info.\">\n <MenuBookIcon color=\"primary\" />\n </Tooltip>\n <Typography>\n <Link to={checkResult.check.links?.at(0)?.url ?? ''}>\n {checkResult.check.links?.at(0)?.title}\n </Link>\n </Typography>\n </Stack>\n </Stack>\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n </div>\n );\n};\n\nexport const MaturityCheckTable = ({\n rank,\n category,\n checks,\n facts,\n}: Props) => {\n // Expand only the next rank Category needed to level up\n const [expanded, setExpanded] = React.useState<boolean>(\n rank.rank + 1 === category,\n );\n const handleChange =\n () => (_event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded);\n };\n\n if (checks.length === 0) return <></>;\n\n return (\n <div>\n <Accordion expanded={expanded} onChange={handleChange()}>\n <AccordionSummary aria-controls=\"panel1d-content\" id=\"panel1d-header\">\n <Grid container justifyContent=\"flex-end\">\n <Grid item>\n <MaturityRankAvatar\n value={{ rank: category, isMaxRank: category <= rank.rank }}\n variant=\"chip\"\n />\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={1}>\n <Grid item xs={12}>\n {checks?.map(entry => (\n <MaturityCheckTableRow\n key={entry.check.id}\n updated={facts[entry.check.factIds[0]]?.timestamp}\n checkResult={entry}\n />\n ))}\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"maturityTableRows.esm.js","sources":["../../../src/components/MaturityScorePage/maturityTableRows.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Link } from '@backstage/core-components';\nimport {\n MaturityCheckResult,\n MaturityRank,\n Rank,\n} from '@backstage-community/plugin-tech-insights-maturity-common';\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp';\nimport CancelTwoToneIcon from '@mui/icons-material/Cancel';\nimport CategoryIcon from '@mui/icons-material/Category';\nimport CheckCircleTwoToneIcon from '@mui/icons-material/CheckCircleTwoTone';\nimport EmojiObjectsIcon from '@mui/icons-material/EmojiObjects';\nimport MenuBookIcon from '@mui/icons-material/MenuBook';\nimport MuiAccordion, { AccordionProps } from '@mui/material/Accordion';\nimport MuiAccordionDetails from '@mui/material/AccordionDetails';\nimport MuiAccordionSummary, {\n AccordionSummaryProps,\n} from '@mui/material/AccordionSummary';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { makeStyles, styled } from '@mui/styles';\nimport React from 'react';\nimport { MaturityRankAvatar } from '../MaturityRankAvatar';\nimport { InsightFacts } from '@backstage-community/plugin-tech-insights-common';\n\ninterface Props {\n checks: MaturityCheckResult[];\n facts: InsightFacts;\n rank: MaturityRank;\n category: Rank;\n}\n\nconst Accordion = styled((props: AccordionProps) => (\n <MuiAccordion disableGutters elevation={0} square {...props} />\n))(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n '&:not(:last-child)': {\n borderBottom: 0,\n },\n '&:before': {\n display: 'none',\n },\n}));\n\nconst AccordionSummary = styled((props: AccordionSummaryProps) => (\n <MuiAccordionSummary\n expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: '0.9rem' }} />}\n {...props}\n />\n))(({ theme }) => ({\n backgroundColor:\n theme.palette.mode === 'dark'\n ? 'rgba(255, 255, 255, .05)'\n : 'rgba(0, 0, 0, .03)',\n flexDirection: 'row-reverse',\n width: '100%',\n paddingLeft: theme.spacing(2),\n '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {\n transform: 'rotate(90deg)',\n },\n '& .MuiAccordionSummary-content': {\n marginLeft: theme.spacing(1),\n },\n}));\n\nconst AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: '1px solid rgba(0, 0, 0, .125)',\n}));\n\nconst MaturityCheckTableRow = ({\n checkResult,\n updated,\n}: {\n checkResult: MaturityCheckResult;\n updated: string;\n}) => {\n const [expanded, setExpanded] = React.useState<boolean>(\n checkResult.result === false,\n );\n\n const handleChange =\n () => (_event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded);\n };\n\n const useStyles = makeStyles({\n check: {\n marginLeft: '2rem',\n },\n solution: {\n wordBreak: 'break-word',\n whiteSpace: 'pre-wrap',\n },\n filters: {\n fontSize: 15,\n },\n });\n\n const { check, solution, filters } = useStyles();\n return (\n <div>\n <Accordion expanded={expanded} onChange={handleChange()}>\n <AccordionSummary aria-controls=\"panel1d-content\" id=\"panel1d-header\">\n <Grid container alignItems=\"center\" spacing={2}>\n <Grid item xs={3}>\n <Stack direction=\"row\" spacing={2} className={check}>\n <MaturityRankAvatar\n value={{ rank: checkResult.check.metadata.rank }}\n size={25}\n />\n <Typography>{checkResult.check.id}</Typography>\n </Stack>\n </Grid>\n <Grid item xs={7.5}>\n <Typography className={check}>\n {checkResult.check.description}\n </Typography>\n </Grid>\n <Grid item xs={1.5}>\n {checkResult.result ? (\n <CheckCircleTwoToneIcon\n className={check}\n style={{ color: '#53d44c' }}\n />\n ) : (\n <CancelTwoToneIcon\n className={check}\n style={{ color: '#f54040' }}\n />\n )}\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={2} sx={{ paddingLeft: 2, paddingRight: 2 }}>\n <Grid item xs={9}>\n <Stack spacing={1}>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Solution: How to pass the check\">\n <EmojiObjectsIcon color=\"warning\" />\n </Tooltip>\n <Typography className={solution}>\n {checkResult.check.metadata?.solution}\n </Typography>\n </Stack>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Update: Last time the maturity check was updated\">\n <AccessTimeIcon color=\"primary\" />\n </Tooltip>\n <Typography variant=\"subtitle2\" className={filters}>\n {updated ? `Updated ${updated}` : 'Not yet run'}\n </Typography>\n </Stack>\n </Stack>\n </Grid>\n <Grid item xs={3}>\n <Stack spacing={1}>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Category: The category for this check\">\n <CategoryIcon color=\"primary\" />\n </Tooltip>\n <Typography variant=\"subtitle1\" className={filters}>\n {checkResult.check.metadata?.category}\n </Typography>\n </Stack>\n <Stack spacing={1} direction=\"row\">\n <Tooltip title=\"Reference: Consult the documentation linked here for more background info.\">\n <MenuBookIcon color=\"primary\" />\n </Tooltip>\n <Typography>\n <Link to={checkResult.check.links?.at(0)?.url ?? ''}>\n {checkResult.check.links?.at(0)?.title}\n </Link>\n </Typography>\n </Stack>\n </Stack>\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n </div>\n );\n};\n\nexport const MaturityCheckTable = ({\n rank,\n category,\n checks,\n facts,\n}: Props) => {\n // Expand only the next rank Category needed to level up\n const [expanded, setExpanded] = React.useState<boolean>(\n rank.rank + 1 === category,\n );\n const handleChange =\n () => (_event: React.SyntheticEvent, newExpanded: boolean) => {\n setExpanded(newExpanded);\n };\n\n if (checks.length === 0) return <></>;\n\n return (\n <div>\n <Accordion expanded={expanded} onChange={handleChange()}>\n <AccordionSummary aria-controls=\"panel1d-content\" id=\"panel1d-header\">\n <Grid container justifyContent=\"flex-end\">\n <Grid item>\n <MaturityRankAvatar\n value={{ rank: category, isMaxRank: category <= rank.rank }}\n variant=\"chip\"\n />\n </Grid>\n </Grid>\n </AccordionSummary>\n <AccordionDetails>\n <Grid container spacing={1}>\n <Grid item xs={12}>\n {checks?.map(entry => (\n <MaturityCheckTableRow\n key={entry.check.id}\n updated={facts[entry.check.factIds[0]]?.timestamp}\n checkResult={entry}\n />\n ))}\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { MaturityHelp } from '../../helpers/MaturityHelp.esm.js';
|
|
|
10
10
|
import { MaturityRankAvatar } from '../MaturityRankAvatar/MaturityRankAvatar.esm.js';
|
|
11
11
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
12
12
|
import '@backstage/catalog-model';
|
|
13
|
-
import '@backstage-community/plugin-tech-insights';
|
|
13
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
14
14
|
import '@backstage-community/plugin-tech-insights-maturity-common';
|
|
15
15
|
|
|
16
16
|
const MaturitySummaryInfoCard = () => {
|
|
@@ -10,7 +10,7 @@ import { MaturitySummaryTable } from '../MaturitySummaryTable/MaturitySummaryTab
|
|
|
10
10
|
import { getSubEntityFilter } from '../../helpers/utils.esm.js';
|
|
11
11
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
12
12
|
import '@backstage/catalog-model';
|
|
13
|
-
import '@backstage-community/plugin-tech-insights';
|
|
13
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
14
14
|
import '@backstage-community/plugin-tech-insights-maturity-common';
|
|
15
15
|
|
|
16
16
|
const MaturitySummaryPage = () => {
|
|
@@ -11,7 +11,7 @@ import useAsyncRetry from 'react-use/lib/useAsync';
|
|
|
11
11
|
import { maturityApiRef } from '../../api/MaturityApi.esm.js';
|
|
12
12
|
import '@backstage/catalog-model';
|
|
13
13
|
import '@backstage/plugin-catalog-react';
|
|
14
|
-
import '@backstage-community/plugin-tech-insights';
|
|
14
|
+
import '@backstage-community/plugin-tech-insights-react';
|
|
15
15
|
import { getNextRankColor, pluralize } from '../../helpers/utils.esm.js';
|
|
16
16
|
import { MaturityLink } from '../../helpers/MaturityLink.esm.js';
|
|
17
17
|
import { MaturityRankAvatar } from '../MaturityRankAvatar/MaturityRankAvatar.esm.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as _backstage_catalog_model_index from '@backstage/catalog-model/index'
|
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
5
5
|
import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';
|
|
6
|
-
import { TechInsightsApi, TechInsightsClient } from '@backstage-community/plugin-tech-insights';
|
|
6
|
+
import { TechInsightsApi, TechInsightsClient } from '@backstage-community/plugin-tech-insights-react';
|
|
7
7
|
import { Entity } from '@backstage/catalog-model';
|
|
8
8
|
import { MaturityRank, MaturityScore, BulkMaturityCheckResponse, MaturitySummary, BulkMaturitySummary } from '@backstage-community/plugin-tech-insights-maturity-common';
|
|
9
9
|
import { CatalogApi } from '@backstage/catalog-client';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage-community/plugin-tech-insights-maturity",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"main": "./dist/index.esm.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -56,24 +56,24 @@
|
|
|
56
56
|
"postpack": "backstage-cli package postpack"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@backstage-community/plugin-tech-insights": "^0.5.0",
|
|
60
59
|
"@backstage-community/plugin-tech-insights-common": "^0.5.0",
|
|
61
60
|
"@backstage-community/plugin-tech-insights-maturity-common": "^0.2.0",
|
|
61
|
+
"@backstage-community/plugin-tech-insights-react": "^1.1.0",
|
|
62
62
|
"@backstage/catalog-client": "^1.9.1",
|
|
63
63
|
"@backstage/catalog-model": "^1.7.3",
|
|
64
64
|
"@backstage/core-components": "^0.16.3",
|
|
65
65
|
"@backstage/core-plugin-api": "^1.10.3",
|
|
66
66
|
"@backstage/plugin-catalog-react": "^1.15.1",
|
|
67
|
-
"@backstage/repo-tools": "^0.
|
|
67
|
+
"@backstage/repo-tools": "^0.13.0",
|
|
68
68
|
"@backstage/theme": "^0.6.3",
|
|
69
69
|
"@backstage/version-bridge": "^1.0.10",
|
|
70
70
|
"@material-ui/core": "^4.12.2",
|
|
71
71
|
"@material-ui/icons": "^4.9.1",
|
|
72
72
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
73
|
-
"@mui/icons-material": "5.14
|
|
74
|
-
"@mui/material": "5.14
|
|
75
|
-
"@mui/styles": "5.14
|
|
76
|
-
"@mui/x-charts": "6.
|
|
73
|
+
"@mui/icons-material": "5.16.14",
|
|
74
|
+
"@mui/material": "5.16.14",
|
|
75
|
+
"@mui/styles": "5.16.14",
|
|
76
|
+
"@mui/x-charts": "6.19.8",
|
|
77
77
|
"@types/d3-scale": "^4.0.8",
|
|
78
78
|
"@types/d3-shape": "^3.1.7",
|
|
79
79
|
"rc-progress": "^4.0.0",
|