diff --git a/.changeset/rich-zebras-design.md b/.changeset/rich-zebras-design.md index d8ce399bce..fc121349aa 100644 --- a/.changeset/rich-zebras-design.md +++ b/.changeset/rich-zebras-design.md @@ -3,6 +3,6 @@ '@backstage/plugin-scaffolder-backend': minor --- -- Add `listTasks` option to get tasks optionally filtered by a `userRef` +- Add `listTasks` option to get tasks optionally filtered by `createdBy` - Added a new page under `/create/tasks` to show those tasks, optionally grouped by the current signed in user. diff --git a/packages/app/src/components/Root/Root.tsx b/packages/app/src/components/Root/Root.tsx index e724adc345..30da01841c 100644 --- a/packages/app/src/components/Root/Root.tsx +++ b/packages/app/src/components/Root/Root.tsx @@ -23,7 +23,6 @@ import MapIcon from '@material-ui/icons/MyLocation'; import LayersIcon from '@material-ui/icons/Layers'; import LibraryBooks from '@material-ui/icons/LibraryBooks'; import CreateComponentIcon from '@material-ui/icons/AddCircleOutline'; -import List from '@material-ui/icons/List'; import SearchIcon from '@material-ui/icons/Search'; import MenuIcon from '@material-ui/icons/Menu'; import MoneyIcon from '@material-ui/icons/MonetizationOn'; @@ -108,7 +107,6 @@ export const Root = ({ children }: PropsWithChildren<{}>) => ( - {/* End global nav */} diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 79d176cd11..2bc36ff0d2 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -52,6 +52,7 @@ export type ScaffolderPageProps = { contextMenu?: { editor?: boolean; actions?: boolean; + tasks?: boolean; }; }; diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx index 6d9a89cfab..74366753f7 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPageContextMenu.tsx @@ -24,10 +24,15 @@ import Popover from '@material-ui/core/Popover'; import { makeStyles } from '@material-ui/core/styles'; import Description from '@material-ui/icons/Description'; import Edit from '@material-ui/icons/Edit'; +import List from '@material-ui/icons/List'; import MoreVert from '@material-ui/icons/MoreVert'; import React, { useState } from 'react'; import { useNavigate } from 'react-router'; -import { rootRouteRef } from '../../routes'; +import { + actionsRouteRef, + editRouteRef, + scaffolderListTaskRouteRef, +} from '../../routes'; const useStyles = makeStyles({ button: { @@ -38,6 +43,7 @@ const useStyles = makeStyles({ export type ScaffolderPageContextMenuProps = { editor?: boolean; actions?: boolean; + tasks?: boolean; }; export function ScaffolderPageContextMenu( @@ -45,11 +51,15 @@ export function ScaffolderPageContextMenu( ) { const classes = useStyles(); const [anchorEl, setAnchorEl] = useState(); - const pageLink = useRouteRef(rootRouteRef); + const editLink = useRouteRef(editRouteRef); + const actionsLink = useRouteRef(actionsRouteRef); + const tasksLink = useRouteRef(scaffolderListTaskRouteRef); + const navigate = useNavigate(); const showEditor = props.editor !== false; const showActions = props.actions !== false; + const showTasks = props.tasks !== false; if (!showEditor && !showActions) { return null; @@ -85,7 +95,7 @@ export function ScaffolderPageContextMenu( > {showEditor && ( - navigate(`${pageLink()}/edit`)}> + navigate(editLink())}> @@ -93,13 +103,21 @@ export function ScaffolderPageContextMenu( )} {showActions && ( - navigate(`${pageLink()}/actions`)}> + navigate(actionsLink())}> )} + {showTasks && ( + navigate(tasksLink())}> + + + + + + )} diff --git a/plugins/scaffolder/src/types.ts b/plugins/scaffolder/src/types.ts index acd686019c..6792f069cc 100644 --- a/plugins/scaffolder/src/types.ts +++ b/plugins/scaffolder/src/types.ts @@ -178,7 +178,7 @@ export interface ScaffolderApi { getTask(taskId: string): Promise; - listTasks(createdBy: TasksOwnerFilterKind): Promise; + listTasks?(createdBy: TasksOwnerFilterKind): Promise; getIntegrationsList( options: ScaffolderGetIntegrationsListOptions,