From beb15973cc15d942bbb8ee23d461e4a6358a3633 Mon Sep 17 00:00:00 2001 From: kielosz Date: Thu, 18 Aug 2022 15:32:11 +0200 Subject: [PATCH] Revert adding BOOLEAN_CHECK_RESPONSE_TYPE Signed-off-by: kielosz --- .changeset/hip-ways-wash.md | 5 ---- .changeset/kind-birds-sneeze.md | 5 ---- .changeset/loud-comics-search.md | 3 ++- .../JsonRulesEngineFactChecker.test.ts | 9 ++++---- .../src/service/JsonRulesEngineFactChecker.ts | 7 ++---- plugins/tech-insights-common/api-report.md | 3 --- plugins/tech-insights-common/src/index.ts | 16 ++++--------- plugins/tech-insights/README.md | 14 +++++------ plugins/tech-insights/api-report.md | 23 +++++++++---------- .../src/api/TechInsightsClient.ts | 4 ++-- .../components/BooleanCheck/BooleanCheck.tsx | 9 ++++---- .../src/components/CheckResultRenderer.tsx | 13 ++++------- .../ScorecardsCard/ScorecardsCard.tsx | 6 +---- .../ScorecardsContent/ScorecardContent.tsx | 6 +---- .../ScorecardsInfo/ScorecardInfo.tsx | 15 ++++++------ .../ScorecardsList/ScorecardsList.tsx | 7 ++---- plugins/tech-insights/src/index.ts | 3 ++- 17 files changed, 55 insertions(+), 93 deletions(-) delete mode 100644 .changeset/hip-ways-wash.md delete mode 100644 .changeset/kind-birds-sneeze.md diff --git a/.changeset/hip-ways-wash.md b/.changeset/hip-ways-wash.md deleted file mode 100644 index 0d53f3e5b1..0000000000 --- a/.changeset/hip-ways-wash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-insights-backend-module-jsonfc': minor ---- - -**BREAKING** The `JsonRulesEngineFactChecker` class now returns checks results with the `type` value equals to `BOOLEAN_CHECK_RESPONSE_TYPE`. diff --git a/.changeset/kind-birds-sneeze.md b/.changeset/kind-birds-sneeze.md deleted file mode 100644 index 284c3dde74..0000000000 --- a/.changeset/kind-birds-sneeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-tech-insights-common': patch ---- - -Added generic exported `BOOLEAN_CHECK_RESPONSE_TYPE` const for boolean check results. diff --git a/.changeset/loud-comics-search.md b/.changeset/loud-comics-search.md index ded9fe0680..27f5b3c5d9 100644 --- a/.changeset/loud-comics-search.md +++ b/.changeset/loud-comics-search.md @@ -8,7 +8,8 @@ Added the possibility to display check results of different types on a single sc - **BREAKING** The `CheckResultRenderer` type now exposes the `component` factory method that creates a React component used to display a result of a provided check result. - The `TechInsightsClient` constructor accepts now the optional `renderers` parameter that can be used to inject a custom renderer. - **BREAKING** The `title` parameter in the `EntityTechInsightsScorecardContent` and `EntityTechInsightsScorecardCard` components is now mandatory. -- The `booleanCheckResultRenderer` used to render boolean check results is exported. +- The `jsonRulesEngineCheckResultRenderer` used to render `json-rules-engine` check results is exported. +- The `BooleanCheck` component that can be used to render other check results types is also exported. If you were overriding the `getScorecardsDefinition` method to adjust the rendering of check results, you should now provide a custom renderer using `renderers` parameter in the `TechInsightsClient` class. diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts index 62c7c8bc61..c808713c3b 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { BOOLEAN_CHECK_RESPONSE_TYPE } from '@backstage/plugin-tech-insights-common'; import { TechInsightCheckRegistry, TechInsightsStore, @@ -260,7 +259,7 @@ describe('JsonRulesEngineFactChecker', () => { result: true, check: { id: 'simpleTestCheck', - type: BOOLEAN_CHECK_RESPONSE_TYPE, + type: JSON_RULE_ENGINE_CHECK_TYPE, name: 'simpleTestCheck', description: 'Simple Check For Testing', factIds: ['test-factretriever'], @@ -296,7 +295,7 @@ describe('JsonRulesEngineFactChecker', () => { result: false, check: { id: 'customOperatorTestCheck', - type: BOOLEAN_CHECK_RESPONSE_TYPE, + type: JSON_RULE_ENGINE_CHECK_TYPE, name: 'customOperatorTestCheck', description: 'Check For Testing using Custom Operator', factIds: ['test-factretriever'], @@ -335,7 +334,7 @@ describe('JsonRulesEngineFactChecker', () => { result: true, check: { id: 'simpleTestCheck', - type: BOOLEAN_CHECK_RESPONSE_TYPE, + type: JSON_RULE_ENGINE_CHECK_TYPE, name: 'simpleTestCheck', description: 'Simple Check For Testing', factIds: ['test-factretriever'], @@ -366,7 +365,7 @@ describe('JsonRulesEngineFactChecker', () => { result: true, check: { id: 'simpleTestCheck2', - type: BOOLEAN_CHECK_RESPONSE_TYPE, + type: JSON_RULE_ENGINE_CHECK_TYPE, name: 'simpleTestCheck2', description: 'Second Simple Check For Testing', factIds: ['test-factretriever'], diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts index 43a7256008..8866b5badb 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts @@ -22,10 +22,7 @@ import { TechInsightsStore, CheckValidationResponse, } from '@backstage/plugin-tech-insights-node'; -import { - BOOLEAN_CHECK_RESPONSE_TYPE, - FactResponse, -} from '@backstage/plugin-tech-insights-common'; +import { FactResponse } from '@backstage/plugin-tech-insights-common'; import { Engine, EngineResult, @@ -275,7 +272,7 @@ export class JsonRulesEngineFactChecker ) { const returnable = { id: techInsightCheck.id, - type: BOOLEAN_CHECK_RESPONSE_TYPE, + type: techInsightCheck.type, name: techInsightCheck.name, description: techInsightCheck.description, factIds: techInsightCheck.factIds, diff --git a/plugins/tech-insights-common/api-report.md b/plugins/tech-insights-common/api-report.md index 5b8280fd07..0236c0619a 100644 --- a/plugins/tech-insights-common/api-report.md +++ b/plugins/tech-insights-common/api-report.md @@ -6,9 +6,6 @@ import { DateTime } from 'luxon'; import { JsonValue } from '@backstage/types'; -// @public -export const BOOLEAN_CHECK_RESPONSE_TYPE = 'boolean'; - // @public export interface BooleanCheckResult extends CheckResult { // (undocumented) diff --git a/plugins/tech-insights-common/src/index.ts b/plugins/tech-insights-common/src/index.ts index ac5d3de675..66af5c2f93 100644 --- a/plugins/tech-insights-common/src/index.ts +++ b/plugins/tech-insights-common/src/index.ts @@ -28,8 +28,9 @@ export interface CheckResponse { */ id: string; /** - * Type identifier for the check response. - * Used in frontend to render correct component. + * Type identifier for the check. + * Can be used to determine storage options, logical routing to correct FactChecker implementation + * or to help frontend render correct component types based on this */ type: string; /** @@ -105,7 +106,7 @@ export type FactResponse = { * * Contains information about the facts used to calculate the check result * and information about the check itself. Both may include metadata to be able to display additional information. - * A collection of these should be parsable by the frontend to display scorecards + * A collection of these should be parseable by the frontend to display scorecards * * @public */ @@ -115,13 +116,6 @@ export type CheckResult = { result: JsonValue; }; -/** - * CheckResponse Boolean type identifier. - * - * @public - */ -export const BOOLEAN_CHECK_RESPONSE_TYPE = 'boolean'; - /** * CheckResult of type Boolean. * @@ -132,7 +126,7 @@ export interface BooleanCheckResult extends CheckResult { } /** - * Response type for bulk check operation. Contains a list of entities and their respective check results. + * Response type for bulk check opretation. Contains a list of entities and their respective check results. * * @public */ diff --git a/plugins/tech-insights/README.md b/plugins/tech-insights/README.md index 034d1c74a6..98d4777ba2 100644 --- a/plugins/tech-insights/README.md +++ b/plugins/tech-insights/README.md @@ -93,7 +93,7 @@ If you follow the [Backend Example](https://github.com/backstage/backstage/tree/ ## Adding custom rendering components -Default scorecard implementation displays only boolean check results. If you would like to support different types, you need to inject custom rendering components to the `TechInsightsClient` constructor. +Default scorecard implementation displays only `json-rules-engine` check results. If you would like to support different types, you need to inject custom rendering components to the `TechInsightsClient` constructor. ```ts // packages/app/src/apis.ts @@ -108,8 +108,8 @@ export const apis: AnyApiFactory[] = [ discoveryApi, identityApi, renderers: [ - booleanCheckResultRenderer, // default boolean renderer - myCustomNumberRenderer, // custom renderer + jsonRulesEngineCheckResultRenderer, // default json-rules-engine renderer + myCustomBooleanRenderer, // custom renderer ], }), }), @@ -118,12 +118,12 @@ export const apis: AnyApiFactory[] = [ ``` ```tsx -// packages/app/src/components/myCustomNumberRenderer.tsx +// packages/app/src/components/myCustomBooleanRenderer.tsx -export const myCustomNumberRenderer: CheckResultRenderer = { - type: 'number', +export const myCustomBooleanRenderer: CheckResultRenderer = { + type: 'boolean', component: (checkResult: CheckResult) => ( - {checkResult.result} + ), }; ``` diff --git a/plugins/tech-insights/api-report.md b/plugins/tech-insights/api-report.md index 3271a12047..03155a5958 100644 --- a/plugins/tech-insights/api-report.md +++ b/plugins/tech-insights/api-report.md @@ -15,8 +15,12 @@ import { IdentityApi } from '@backstage/core-plugin-api'; import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; -// @public -export const booleanCheckResultRenderer: CheckResultRenderer; +// @public (undocumented) +export const BooleanCheck: ({ + checkResult, +}: { + checkResult: CheckResult; +}) => JSX.Element; // @public export type Check = { @@ -34,27 +38,22 @@ export type CheckResultRenderer = { }; // @public (undocumented) -export const EntityTechInsightsScorecardCard: ({ - title, - description, - checksId, -}: { +export const EntityTechInsightsScorecardCard: (props: { title: string; description?: string | undefined; checksId?: string[] | undefined; }) => JSX.Element; // @public (undocumented) -export const EntityTechInsightsScorecardContent: ({ - title, - description, - checksId, -}: { +export const EntityTechInsightsScorecardContent: (props: { title: string; description?: string | undefined; checksId?: string[] | undefined; }) => JSX.Element; +// @public +export const jsonRulesEngineCheckResultRenderer: CheckResultRenderer; + // @public export interface TechInsightsApi { // (undocumented) diff --git a/plugins/tech-insights/src/api/TechInsightsClient.ts b/plugins/tech-insights/src/api/TechInsightsClient.ts index 708026f63d..8db5de3945 100644 --- a/plugins/tech-insights/src/api/TechInsightsClient.ts +++ b/plugins/tech-insights/src/api/TechInsightsClient.ts @@ -26,7 +26,7 @@ import { CompoundEntityRef } from '@backstage/catalog-model'; import { CheckResultRenderer, - booleanCheckResultRenderer, + jsonRulesEngineCheckResultRenderer, } from '../components/CheckResultRenderer'; /** @public */ @@ -46,7 +46,7 @@ export class TechInsightsClient implements TechInsightsApi { } getCheckResultRenderers(types: string[]): CheckResultRenderer[] { - const renderers = this.renderers ?? [booleanCheckResultRenderer]; + const renderers = this.renderers ?? [jsonRulesEngineCheckResultRenderer]; return renderers.filter(d => types.includes(d.type)); } diff --git a/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx b/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx index ca010dd95e..47359a952e 100644 --- a/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx +++ b/plugins/tech-insights/src/components/BooleanCheck/BooleanCheck.tsx @@ -19,11 +19,10 @@ import CheckCircleOutline from '@material-ui/icons/CheckCircleOutline'; import ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; -type Prop = { - checkResult: CheckResult; -}; - -export const BooleanCheck = ({ checkResult }: Prop) => { +/** + * @public + */ +export const BooleanCheck = ({ checkResult }: { checkResult: CheckResult }) => { return !!checkResult.result ? ( ) : ( diff --git a/plugins/tech-insights/src/components/CheckResultRenderer.tsx b/plugins/tech-insights/src/components/CheckResultRenderer.tsx index 10bfe4829d..452715ddeb 100644 --- a/plugins/tech-insights/src/components/CheckResultRenderer.tsx +++ b/plugins/tech-insights/src/components/CheckResultRenderer.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Backstage Authors + * Copyright 2022 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - BOOLEAN_CHECK_RESPONSE_TYPE, - CheckResult, -} from '@backstage/plugin-tech-insights-common'; +import { CheckResult } from '@backstage/plugin-tech-insights-common'; import React from 'react'; import { BooleanCheck } from './BooleanCheck'; @@ -32,12 +29,12 @@ export type CheckResultRenderer = { }; /** - * Default renderer for boolean check results. + * Default renderer for json-rules-engine check results. * * @public */ -export const booleanCheckResultRenderer: CheckResultRenderer = { - type: BOOLEAN_CHECK_RESPONSE_TYPE, +export const jsonRulesEngineCheckResultRenderer: CheckResultRenderer = { + type: 'json-rules-engine', component: (checkResult: CheckResult) => ( ), diff --git a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx index 87559c5d65..a76234d0c5 100644 --- a/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx +++ b/plugins/tech-insights/src/components/ScorecardsCard/ScorecardsCard.tsx @@ -23,11 +23,7 @@ import { ScorecardInfo } from '../ScorecardsInfo'; import Alert from '@material-ui/lab/Alert'; import { techInsightsApiRef } from '../../api/TechInsightsApi'; -export const ScorecardsCard = ({ - title, - description, - checksId, -}: { +export const ScorecardsCard = (props: { title: string; description?: string; checksId?: string[]; diff --git a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx index 876150be08..1ca4e25447 100644 --- a/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx +++ b/plugins/tech-insights/src/components/ScorecardsContent/ScorecardContent.tsx @@ -31,11 +31,7 @@ const useStyles = makeStyles(() => ({ }, })); -export const ScorecardsContent = ({ - title, - description, - checksId, -}: { +export const ScorecardsContent = (props: { title: string; description?: string; checksId?: string[]; diff --git a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx index bb4af84be8..8002784c9e 100644 --- a/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx +++ b/plugins/tech-insights/src/components/ScorecardsInfo/ScorecardInfo.tsx @@ -29,14 +29,8 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({ }, })); -type Checks = { - checkResults: CheckResult[]; - title: string; - description?: string; -}; - const infoCard = ( - title: string | undefined, + title: string, description: string | undefined, className: string, element: JSX.Element, @@ -55,7 +49,12 @@ const infoCard = ( ); -export const ScorecardInfo = ({ checkResults, title, description }: Checks) => { +export const ScorecardInfo = (props: { + checkResults: CheckResult[]; + title: string; + description?: string; +}) => { + const { checkResults, title, description } = props; const classes = useStyles(); if (!checkResults.length) { diff --git a/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx b/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx index 12bcdd1f2a..03dfa06abf 100644 --- a/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx +++ b/plugins/tech-insights/src/components/ScorecardsList/ScorecardsList.tsx @@ -28,11 +28,8 @@ const useStyles = makeStyles((theme: BackstageTheme) => ({ }, })); -type Prop = { - checkResults: CheckResult[]; -}; - -export const ScorecardsList = ({ checkResults }: Prop) => { +export const ScorecardsList = (props: { checkResults: CheckResult[] }) => { + const { checkResults } = props; const classes = useStyles(); const api = useApi(techInsightsApiRef); diff --git a/plugins/tech-insights/src/index.ts b/plugins/tech-insights/src/index.ts index 0b334643c8..f3dd05c3aa 100644 --- a/plugins/tech-insights/src/index.ts +++ b/plugins/tech-insights/src/index.ts @@ -21,5 +21,6 @@ export { export { techInsightsApiRef, TechInsightsClient } from './api'; export type { TechInsightsApi, Check } from './api'; -export { booleanCheckResultRenderer } from './components/CheckResultRenderer'; +export { BooleanCheck } from './components/BooleanCheck'; +export { jsonRulesEngineCheckResultRenderer } from './components/CheckResultRenderer'; export type { CheckResultRenderer } from './components/CheckResultRenderer';