From f68e5b236aad6031184cac624035d70feb621f5c Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Sat, 25 Sep 2021 09:52:47 -0500 Subject: [PATCH 1/5] Added more details on Badges plugin usage Signed-off-by: Andre Wanlin --- plugins/badges/README.md | 124 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/plugins/badges/README.md b/plugins/badges/README.md index bfc01ec63c..6ba553d732 100644 --- a/plugins/badges/README.md +++ b/plugins/badges/README.md @@ -13,6 +13,130 @@ To get markdown code for the entity badges, access the `Badges` context menu (three dots in the upper right corner) of an entity page, which will popup a badges dialog showing all available badges for that entity. +## Usage + +### Install the package + +```bash +yarn add @backstage/plugin-badges +``` + +### Register plugin + +This plugin requires explicit registration, so you will need to add it to your App's `plugins.ts` file: + +```ts +// ... +export { badgesPlugin } from '@backstage/plugin-badges'; +``` + +If you don't have a `plugins.ts` file see: [troubleshooting](#troubleshooting) + +### Update your EntityPage + +In your `EntityPage.tsx` file located in `packages\app\src\components\catalog` we'll need to make a few changes to get the Badges context menu added to the UI. + +First we need to add the following imports: + +```ts +import { EntityBadgesDialog } from '@backstage/plugin-badges'; +import BadgeIcon from '@material-ui/icons/CallToAction'; +``` + +Next we'll update the React import that looks like this: + +```ts +import React from 'react'; +``` + +To look like this: + +```ts +import React, { ReactNode, useMemo, useState } from 'react'; +``` + +Then we have to add this chunk of code after all the imports but before any of the other code: + +```ts +const EntityLayoutWrapper = (props: { children?: ReactNode }) => { + const [badgesDialogOpen, setBadgesDialogOpen] = useState(false); + + const extraMenuItems = useMemo(() => { + return [ + { + title: 'Badges', + Icon: BadgeIcon, + onClick: () => setBadgesDialogOpen(true), + }, + ]; + }, []); + + return ( + <> + + {props.children} + + setBadgesDialogOpen(false)} + /> + + ); +}; +``` + +The last step is to wrap all the entity pages in the `EntityLayoutWrapper` like this: + +```diff +const defaultEntityPage = ( ++ + + {overviewContent} + + + + + + + + + ++ +); +``` + +Note: the above only shows an example for the `defaultEntityPage` for a full example of this you can look at [this EntityPage](https://github.com/backstage/backstage/blob/1fd9e6f601cabe42af8eb20b5d200ad1988ba309/packages/app/src/components/catalog/EntityPage.tsx#L318) + +## Troubleshooting + +If you don't have a `plugins.ts` file, you can create it with the path `packages/app/src/plugins.ts` and then import it into your `App.tsx`: + +```diff ++ import * as plugins from './plugins'; + +const app = createApp({ + apis, ++ plugins: Object.values(plugins), + bindRoutes({ bind }) { + /* ... */ + }, +}); +``` + +Or simply edit `App.tsx` with: + +```diff ++ import { badgesPlugin } from '@backstage/plugin-badges' + +const app = createApp({ + apis, ++ plugins: [badgesPlugin], + bindRoutes({ bind }) { + /* ... */ + }, +}); +``` + ## Links - [Backend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/badges-backend) From 504bcb22140c4ee80cd5ad3ba9faae40e481de57 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Sat, 25 Sep 2021 10:15:08 -0500 Subject: [PATCH 2/5] Added changeset Signed-off-by: Andre Wanlin --- .changeset/khaki-rivers-repeat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/khaki-rivers-repeat.md diff --git a/.changeset/khaki-rivers-repeat.md b/.changeset/khaki-rivers-repeat.md new file mode 100644 index 0000000000..e6caa2d561 --- /dev/null +++ b/.changeset/khaki-rivers-repeat.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges': patch +--- + +Added details on how to setup the Badges plugin From 092c8d4de63ba4960b6af4da283c402799f49c39 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Sun, 26 Sep 2021 11:13:58 -0500 Subject: [PATCH 3/5] Added screenshots and samples Signed-off-by: Andre Wanlin --- plugins/badges/README.md | 18 ++++++++++++++++-- plugins/badges/doc/badges-context-menu.png | Bin 0 -> 17859 bytes plugins/badges/doc/badges-dialog.png | Bin 0 -> 34754 bytes 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 plugins/badges/doc/badges-context-menu.png create mode 100644 plugins/badges/doc/badges-dialog.png diff --git a/plugins/badges/README.md b/plugins/badges/README.md index 6ba553d732..b881d100c4 100644 --- a/plugins/badges/README.md +++ b/plugins/badges/README.md @@ -10,8 +10,22 @@ link below for more details. ## Entity badges To get markdown code for the entity badges, access the `Badges` context menu -(three dots in the upper right corner) of an entity page, which will popup a -badges dialog showing all available badges for that entity. +(three dots in the upper right corner) of an entity page like this: + +![Badges Context Menu](./doc/badges-context-menu.png) + +This will popup a badges dialog showing all available badges for that entity like this: + +![Badges Dialog](./doc/badges-dialog.png) + +## Sample Badges + +Here are some samples of badges for the `artists-lookup` service in the Demo Backstage site: + +- Component: [![Link to artist-lookup in Backstage Demo, Component: artist-lookup](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/pingback 'Link to artist-lookup in Backstage Demo')](https://demo.backstage.io/catalog/default/component/artist-lookup) +- Lifecycle: [![Entity lifecycle badge, lifecycle: experimental](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/lifecycle 'Entity lifecycle badge')](https://demo.backstage.io/catalog/default/component/artist-lookup) +- Owner: [![Entity owner badge, owner: team-a](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/owner 'Entity owner badge')](https://demo.backstage.io/catalog/default/component/artist-lookup) +- Docs: [![Entity docs badge, docs: artist-lookup](https://demo.backstage.io/api/badges/entity/default/component/artist-lookup/badge/docs 'Entity docs badge')](https://demo.backstage.io/catalog/default/component/artist-lookup/docs) ## Usage diff --git a/plugins/badges/doc/badges-context-menu.png b/plugins/badges/doc/badges-context-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..b25f293b5c5d5b16449ccc66bdf742627dc06c9a GIT binary patch literal 17859 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 literal 0 HcmV?d00001 diff --git a/plugins/badges/doc/badges-dialog.png b/plugins/badges/doc/badges-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..e1deee96c471c9eada309655d4e44f038b0edd3c GIT binary patch literal 34754 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%0DhFsPqqtWVOhK7Uh5WukNR_zC3 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 rCh#mfXL2;wAp7L( Date: Mon, 27 Sep 2021 07:47:50 -0500 Subject: [PATCH 4/5] Added doc folder to package Signed-off-by: Andre Wanlin --- plugins/badges/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 16e5121132..7cfd7f18ed 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -49,6 +49,7 @@ "msw": "^0.29.0" }, "files": [ - "dist" + "dist", + "doc" ] } From ccc5e36ae86525926e2215eab10cb846e4008a16 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Tue, 28 Sep 2021 08:08:23 -0500 Subject: [PATCH 5/5] Added repo and removed doc from files Signed-off-by: Andre Wanlin --- plugins/badges/package.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 7cfd7f18ed..0fcb18ca04 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -10,6 +10,12 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/badges" + }, "scripts": { "build": "backstage-cli plugin:build", "start": "backstage-cli plugin:serve", @@ -49,7 +55,6 @@ "msw": "^0.29.0" }, "files": [ - "dist", - "doc" + "dist" ] }