From 5e97c4682e42a79e6a9266332ec2c47527dc887a Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:45:35 +0300 Subject: [PATCH 01/20] Initial commit --- .../src/components/Home/MyJiraTicketsCard/Content.test.tsx | 3 +++ .../src/components/Home/MyJiraTicketsCard/Content.tsx | 7 +++++++ .../src/components/Home/MyJiraTicketsCard/index.ts | 1 + 3 files changed, 11 insertions(+) create mode 100644 plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx create mode 100644 plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx create mode 100644 plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/index.ts diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx new file mode 100644 index 000000000..b85671308 --- /dev/null +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx @@ -0,0 +1,3 @@ + +describe('MyJiraTicketsCard', () => { +}) \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx new file mode 100644 index 000000000..b448028cc --- /dev/null +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -0,0 +1,7 @@ +type MyJiraTicketsCardProps = { + userId: string; +}; + +export const Content = (props: MyJiraTicketsCardProps) => { + +} \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/index.ts b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/index.ts new file mode 100644 index 000000000..610340202 --- /dev/null +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/index.ts @@ -0,0 +1 @@ +export { Content } from './Content'; From e4de331d331054da92229c7d1adb991d581b2223 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:15:39 +0300 Subject: [PATCH 02/20] Add useUserInfo to fetch the assigned tickets for a given user --- .../backstage-plugin-jira/src/api/index.ts | 80 +++++++++++++++++++ .../backstage-plugin-jira/src/hooks/index.ts | 1 + .../src/hooks/useUserInfo.ts | 39 +++++++++ .../backstage-plugin-jira/src/types.ts | 3 + 4 files changed, 123 insertions(+) create mode 100644 plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts diff --git a/plugins/frontend/backstage-plugin-jira/src/api/index.ts b/plugins/frontend/backstage-plugin-jira/src/api/index.ts index bcdb8d404..e2b33b64d 100644 --- a/plugins/frontend/backstage-plugin-jira/src/api/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/api/index.ts @@ -69,6 +69,11 @@ export class JiraAPI { this.fetchApi = options.fetchApi; } + private getDomainFromApiUrl(apiUrl: string): string { + const url = new URL(apiUrl); + return url.origin; + } + private generateProjectUrl = (url: string) => new URL(url).origin + new URL(url).pathname.replace(/\/rest\/api\/.*$/g, ''); @@ -303,4 +308,79 @@ export class JiraAPI { ), ]; } + + async getUserDetails(userId: string) { + const { apiUrl } = await this.getUrls(); + + const request = await this.fetchApi.fetch( + `${apiUrl}user?username=${userId}`, + { + headers: { + 'Content-Type': 'application/json', + }, + }, + ); + if (!request.ok) { + throw new Error( + `failed to fetch data, status ${request.status}: ${request.statusText}`, + ); + } + const user = (await request.json()) as User; + + // If component not defined, execute the same code. Otherwise, use paged request + // to fetch also the issue-keys of all the tasks for that component. + let issuesCounter: IssuesCounter[] = []; + let ticketIds: string[] = []; + let tickets: Ticket[] = []; + + const jql = `assignee = "${userId}" AND statusCategory in ("To Do", "In Progress")`; + + let startAt: number | undefined = 0; + const foundIssues: Ticket[] = []; + + while (startAt !== undefined) { + const res: IssuesResult = await this.pagedIssuesRequest( + apiUrl, + jql, + startAt, + ); + startAt = res.next; + foundIssues.push(...res.issues); + } + + ticketIds = foundIssues.map(i => i.key); + tickets = foundIssues.map(index => { + return { + key: index.key, + parent: index?.fields?.parent?.key, + summary: index?.fields?.summary, + assignee: { + displayName: index?.fields?.assignee?.displayName, + avatarUrl: index?.fields?.assignee?.avatarUrls['48x48'], + }, + status: index?.fields?.status, + issuetype: index?.fields?.issuetype, + priority: index?.fields?.priority, + created: index?.fields?.created, + updated: index?.fields?.updated, + }; + }); + + + return { + user: { + name: user.displayName, + avatarUrl: user.avatarUrls['48x48'], + url: this.getDomainFromApiUrl(user.self), + }, + issues: + issuesCounter && issuesCounter.length + ? issuesCounter.map(status => ({ + ...status, + })) + : [], + ticketIds: ticketIds, + tickets, + } + } } diff --git a/plugins/frontend/backstage-plugin-jira/src/hooks/index.ts b/plugins/frontend/backstage-plugin-jira/src/hooks/index.ts index ec75b56b2..bbceec90b 100644 --- a/plugins/frontend/backstage-plugin-jira/src/hooks/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/hooks/index.ts @@ -16,6 +16,7 @@ export { useActivityStream } from './useActivityStream'; export { useProjectInfo } from './useProjectInfo'; +export { useUserInfo } from './useUserInfo'; export { useStatuses } from './useStatuses'; export { useProjectEntity, diff --git a/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts new file mode 100644 index 000000000..9ee5823bc --- /dev/null +++ b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts @@ -0,0 +1,39 @@ +import { useEffect, useCallback } from 'react'; +import { useApi } from '@backstage/core-plugin-api'; +import { useAsyncFn } from 'react-use'; +import { handleError } from './utils'; +import { jiraApiRef } from '../api'; + +export const useUserInfo = (userId: string) => { + const api = useApi(jiraApiRef); + const getUserDetails = useCallback(async () => { + try { + setTimeout(() => (document.activeElement as HTMLElement).blur(), 0); + return await api.getUserDetails(userId); + } catch (err: any) { + return handleError(err); + } + }, [api, userId]); + + const [state, fetchUserInfo] = useAsyncFn( + () => getUserDetails(), + [userId], + ); + + useEffect(() => { + fetchUserInfo(); + }, [userId, fetchUserInfo]); + + useEffect(() => { + console.log('User:', state.value); + }, [state.value]); + + return { + userLoading: state.loading, + userError: state.error, + user: state?.value?.user, + tickets: state?.value?.tickets, + ticketIds: state?.value?.ticketIds, + fetchUserInfo, + }; +}; \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/types.ts b/plugins/frontend/backstage-plugin-jira/src/types.ts index 2a8e41b32..eb1d04df0 100644 --- a/plugins/frontend/backstage-plugin-jira/src/types.ts +++ b/plugins/frontend/backstage-plugin-jira/src/types.ts @@ -132,6 +132,9 @@ export type Ticket = { iconUrl: string; name: string; }; + parent?: { + key: string; + } summary: string; assignee: { displayName: string; From 4ee79fa436b114e91914f9b9336d993ddca67045 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:18:43 +0300 Subject: [PATCH 03/20] Add DraggableCard + basic implementation of MyJiraTicketsCard --- .../src/components/DraggableCard.tsx | 36 +++++++++++++ .../Home/MyJiraTicketsCard/Content.tsx | 50 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx diff --git a/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx new file mode 100644 index 000000000..d49874c0b --- /dev/null +++ b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { useDrag, useDrop } from 'react-dnd'; + +const ItemType = 'CARD'; + +const DraggableCard = ({ id, index, moveCard, children }) => { + const ref = React.useRef(null); + + const [, drop] = useDrop({ + accept: ItemType, + hover(item: { id: string; index: number }) { + if (item.index !== index) { + moveCard(item.index, index); + item.index = index; + } + }, + }); + + const [{ isDragging }, drag] = useDrag({ + type: ItemType, + item: { id, index }, + collect: (monitor) => ({ + isDragging: monitor.isDragging(), + }), + }); + + drag(drop(ref)); + + return ( +
+ {children} +
+ ); +}; + +export default DraggableCard; \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index b448028cc..8a0bfcbda 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -1,7 +1,57 @@ +import React, {useState, useEffect, useCallback} from 'react'; +import {useUserInfo} from '../../../hooks'; + type MyJiraTicketsCardProps = { userId: string; }; +const JiraTicketSkeleton = () => { + return +} + +const JiraTicketsSkeletonView = () => { + const [skeletons, setSkeletons] = useState([0, 1, 2, 3]); + + useEffect(() => { + const interval = setInterval(() => { + setSkeletons((prevSkeletons) => [...prevSkeletons, prevSkeletons.length]); + }, 5); + + return () => clearInterval(interval); + }, []); + + return ( +
+ {skeletons.map((_, index) => ( + + ))} +
+ ); +} + export const Content = (props: MyJiraTicketsCardProps) => { + const {userId} = props; + const {user, loading, error, tickets} = useUserInfo(userId); + + const [cards, setCards] = useState(tickets || []); + const classes = useStyles(); + + useEffect(() => { + setCards(tickets || []); + }, [tickets]); + + if (loading) return + + if (error) { + return Error loading tickets: {error.message}; + } + + if (!cards || cards.length === 0) { + return No tickets to show; + } + return cards.map((ticket, index) => ( + + + )); } \ No newline at end of file From d2c1408297edba340467963e7afc6e1b74c0aefc Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:37:52 +0300 Subject: [PATCH 04/20] Add content implementation + missing types --- .../Home/MyJiraTicketsCard/Content.tsx | 191 +++++++++++++++--- .../backstage-plugin-jira/src/types.ts | 17 ++ 2 files changed, 184 insertions(+), 24 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 8a0bfcbda..2444cdcfa 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -1,57 +1,200 @@ import React, {useState, useEffect, useCallback} from 'react'; +import {Typography, Card, Avatar, Grid, Link} from '@material-ui/core'; import {useUserInfo} from '../../../hooks'; +import Skeleton from '@material-ui/lab/Skeleton'; +import {DndProvider} from 'react-dnd'; +import {HTML5Backend} from 'react-dnd-html5-backend'; +import DraggableCard from './DraggableCard'; +import {makeStyles} from "@material-ui/core/styles"; +import {Ticket, UserSummary} from "../../../types"; + +const useStyles = makeStyles(theme => ({ + container: { + overflowY: 'auto', + maxHeight: '100%', + }, + title: { + fontWeight: Number(theme.typography.fontWeightBold), + color: 'darkgray', + }, + link: { + color: theme.palette.text.primary, + '&:hover': { + color: '#539bf5', + fill: '#539bf5', + }, + '&:first-child': { + paddingRight: '4px', + }, + }, + secondaryText: { + color: theme.palette.text.secondary, + }, +})); + type MyJiraTicketsCardProps = { userId: string; }; +type JiraTicketCardProps = { + user: UserSummary; + ticket: Ticket; + index: number; + moveCard: any; +}; + +type JiraTicketsListViewProps = { + user: UserSummary; + tickets: Ticket[]; +}; + const JiraTicketSkeleton = () => { - return + return } const JiraTicketsSkeletonView = () => { - const [skeletons, setSkeletons] = useState([0, 1, 2, 3]); - - useEffect(() => { - const interval = setInterval(() => { - setSkeletons((prevSkeletons) => [...prevSkeletons, prevSkeletons.length]); - }, 5); - - return () => clearInterval(interval); - }, []); - return (
- {skeletons.map((_, index) => ( + {Array.from({ length: 5 }).map(() => ( ))}
); } -export const Content = (props: MyJiraTicketsCardProps) => { - const {userId} = props; - const {user, loading, error, tickets} = useUserInfo(userId); - - const [cards, setCards] = useState(tickets || []); +const JiraTicketCard = ({ user, ticket, index, moveCard }: JiraTicketCardProps) => { const classes = useStyles(); + return ( + + + + + + + {ticket?.issuetype?.name} + {ticket.parent ? ( + <> + + {ticket.parent} + + {' / '} + + {ticket.key} + + + ) : ( + + {ticket.key} + + )} + + {ticket?.priority?.name} + + {ticket?.priority?.name} + + + + + + + {ticket?.status?.name} + {ticket?.status?.name} + + + + + {ticket.summary} + + + + + + {ticket.assignee ? ticket.assignee.displayName : 'Unassigned'} + + + + + + + ) +} + +const JiraTicketsListView = ({ user, tickets }: JiraTicketsListViewProps) => { + const [cards, setCards] = useState(tickets || []); + useEffect(() => { setCards(tickets || []); }, [tickets]); + const moveCard = useCallback((dragIndex: number, hoverIndex: number) => { + const dragCard = cards[dragIndex]; + const updatedCards = [...cards]; + updatedCards.splice(dragIndex, 1); + updatedCards.splice(hoverIndex, 0, dragCard); + setCards(updatedCards); + }, [cards]); + + return ( + + {cards.map((ticket, index) => ( + + ))} + + ); +} + +export const Content = (props: MyJiraTicketsCardProps) => { + const {userId} = props; + const {user, loading, error, tickets} = useUserInfo(userId); + if (loading) return - + if (error) { return Error loading tickets: {error.message}; } - if (!cards || cards.length === 0) { + if (!user) { + return User not found; + } + + if (!tickets || tickets.length === 0) { return No tickets to show; } - return cards.map((ticket, index) => ( - - - )); -} \ No newline at end of file + return ; +}; \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/types.ts b/plugins/frontend/backstage-plugin-jira/src/types.ts index eb1d04df0..56175b973 100644 --- a/plugins/frontend/backstage-plugin-jira/src/types.ts +++ b/plugins/frontend/backstage-plugin-jira/src/types.ts @@ -154,7 +154,24 @@ export type Ticket = { }; }; +export type User = { + key: string; + name: string; + self: string; + displayName: string; + emailAddress: string; + avatarUrls: { + [key: string]: string; + }; +}; + export type IssuesResult = { next: number | undefined; issues: Ticket[]; }; + +export type UserSummary = { + name: string; + avatarUrl: string; + url: string; +}; From 510a9a0b96eaa34264d2ab25668e972d307ca88c Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:39:28 +0300 Subject: [PATCH 05/20] Fix indentation --- .../Home/MyJiraTicketsCard/Content.tsx | 136 +++++++++--------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 2444cdcfa..8c4ef8625 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -56,40 +56,49 @@ const JiraTicketSkeleton = () => { const JiraTicketsSkeletonView = () => { return (
- {Array.from({ length: 5 }).map(() => ( - + {Array.from({length: 5}).map(() => ( + ))}
); } -const JiraTicketCard = ({ user, ticket, index, moveCard }: JiraTicketCardProps) => { +const JiraTicketCard = ({user, ticket, index, moveCard}: JiraTicketCardProps) => { const classes = useStyles(); return ( - - - - - - {ticket?.issuetype?.name} - {ticket.parent ? ( - <> - - {ticket.parent} - - {' / '} + + + + + + {ticket?.issuetype?.name} + {ticket.parent ? ( + <> + + {ticket.parent} + + {' / '} + + {ticket.key} + + + ) : ( {ticket.key} - - ) : ( - - {ticket.key} - - )} - + )} + {ticket?.priority?.name} - + + + + + {ticket?.status?.name} + {ticket?.status?.name} + + - - - {ticket?.status?.name} - {ticket?.status?.name} - + + {ticket.summary} - - - {ticket.summary} - - - - - - {ticket.assignee ? ticket.assignee.displayName : 'Unassigned'} - + + + + + {ticket.assignee ? ticket.assignee.displayName : 'Unassigned'} + + - - - + + ) } -const JiraTicketsListView = ({ user, tickets }: JiraTicketsListViewProps) => { +const JiraTicketsListView = ({user, tickets}: JiraTicketsListViewProps) => { const [cards, setCards] = useState(tickets || []); useEffect(() => { @@ -172,7 +172,7 @@ const JiraTicketsListView = ({ user, tickets }: JiraTicketsListViewProps) => { return ( {cards.map((ticket, index) => ( - + ))} ); @@ -182,7 +182,7 @@ export const Content = (props: MyJiraTicketsCardProps) => { const {userId} = props; const {user, loading, error, tickets} = useUserInfo(userId); - if (loading) return + if (loading) return if (error) { return Error loading tickets: {error.message}; @@ -196,5 +196,5 @@ export const Content = (props: MyJiraTicketsCardProps) => { return No tickets to show; } - return ; + return ; }; \ No newline at end of file From 7c393052227b65b174a517977b5743b3f9474a11 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:46:53 +0300 Subject: [PATCH 06/20] Remove unused fields --- .../backstage-plugin-jira/src/api/index.ts | 16 +++------------- .../src/hooks/useUserInfo.ts | 11 +++-------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/api/index.ts b/plugins/frontend/backstage-plugin-jira/src/api/index.ts index e2b33b64d..3e4b2f0d1 100644 --- a/plugins/frontend/backstage-plugin-jira/src/api/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/api/index.ts @@ -28,6 +28,8 @@ import { Project, Status, Ticket, + UserSummary, + User, } from '../types'; export const jiraApiRef = createApiRef({ @@ -327,10 +329,6 @@ export class JiraAPI { } const user = (await request.json()) as User; - // If component not defined, execute the same code. Otherwise, use paged request - // to fetch also the issue-keys of all the tasks for that component. - let issuesCounter: IssuesCounter[] = []; - let ticketIds: string[] = []; let tickets: Ticket[] = []; const jql = `assignee = "${userId}" AND statusCategory in ("To Do", "In Progress")`; @@ -348,7 +346,6 @@ export class JiraAPI { foundIssues.push(...res.issues); } - ticketIds = foundIssues.map(i => i.key); tickets = foundIssues.map(index => { return { key: index.key, @@ -372,14 +369,7 @@ export class JiraAPI { name: user.displayName, avatarUrl: user.avatarUrls['48x48'], url: this.getDomainFromApiUrl(user.self), - }, - issues: - issuesCounter && issuesCounter.length - ? issuesCounter.map(status => ({ - ...status, - })) - : [], - ticketIds: ticketIds, + } as UserSummary, tickets, } } diff --git a/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts index 9ee5823bc..11706b358 100644 --- a/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts +++ b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts @@ -24,16 +24,11 @@ export const useUserInfo = (userId: string) => { fetchUserInfo(); }, [userId, fetchUserInfo]); - useEffect(() => { - console.log('User:', state.value); - }, [state.value]); - return { - userLoading: state.loading, - userError: state.error, + loading: state.loading, + error: state.error, user: state?.value?.user, tickets: state?.value?.tickets, - ticketIds: state?.value?.ticketIds, fetchUserInfo, }; -}; \ No newline at end of file +}; From e0c34bbdb8aa88a54e9f55434f5ca7ac57bc3255 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:51:41 +0300 Subject: [PATCH 07/20] Expose HomePageMyJiraTicketsCard --- plugins/frontend/backstage-plugin-jira/package.json | 2 ++ .../src/components/Home/MyJiraTicketsCard/Content.tsx | 2 +- plugins/frontend/backstage-plugin-jira/src/index.ts | 1 + plugins/frontend/backstage-plugin-jira/src/plugin.ts | 10 ++++++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/frontend/backstage-plugin-jira/package.json b/plugins/frontend/backstage-plugin-jira/package.json index 626438de9..f59f6cdfe 100644 --- a/plugins/frontend/backstage-plugin-jira/package.json +++ b/plugins/frontend/backstage-plugin-jira/package.json @@ -52,6 +52,8 @@ "history": "^5.0.0", "html-react-parser": "^0.14.1", "moment": "^2.29.1", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", "react-use": "^17.2.4", "sanitize-html": "^2.3.3", "uuid": "8.3.2", diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 8c4ef8625..742182160 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -4,7 +4,7 @@ import {useUserInfo} from '../../../hooks'; import Skeleton from '@material-ui/lab/Skeleton'; import {DndProvider} from 'react-dnd'; import {HTML5Backend} from 'react-dnd-html5-backend'; -import DraggableCard from './DraggableCard'; +import DraggableCard from '../../DraggableCard'; import {makeStyles} from "@material-ui/core/styles"; import {Ticket, UserSummary} from "../../../types"; diff --git a/plugins/frontend/backstage-plugin-jira/src/index.ts b/plugins/frontend/backstage-plugin-jira/src/index.ts index 256308e67..efc112053 100644 --- a/plugins/frontend/backstage-plugin-jira/src/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/index.ts @@ -21,6 +21,7 @@ export { jiraPlugin as plugin, jiraPlugin, EntityJiraOverviewCard, + HomePageMyJiraTicketsCard } from './plugin'; export { /** diff --git a/plugins/frontend/backstage-plugin-jira/src/plugin.ts b/plugins/frontend/backstage-plugin-jira/src/plugin.ts index d206ee9cf..be6e45656 100644 --- a/plugins/frontend/backstage-plugin-jira/src/plugin.ts +++ b/plugins/frontend/backstage-plugin-jira/src/plugin.ts @@ -22,6 +22,7 @@ import { createComponentExtension, fetchApiRef, } from '@backstage/core-plugin-api'; +import {createCardExtension} from "@backstage/plugin-home-react"; import { jiraApiRef, JiraAPI } from './api'; @@ -54,3 +55,12 @@ export const EntityJiraOverviewCard = jiraPlugin.provide( }, }), ); + +export const HomePageMyJiraTicketsCard = jiraPlugin.provide( + createCardExtension<{ userId: string }>({ + name: "My Jira Tickets Card", + title: "My Jira Tickets Card", + components: () => import('./components/Home/MyJiraTicketsCard'), + description: "My Jira tickets Card", + }), +); From dcd75302a5052e2edf2eb7699c6df07b56d3423e Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:53:22 +0300 Subject: [PATCH 08/20] Add HomePageMyJiraTicketsCard to HomePage --- packages/app/src/components/home/HomePage.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/app/src/components/home/HomePage.tsx b/packages/app/src/components/home/HomePage.tsx index 5fe42f1d2..8ca6ee4a6 100644 --- a/packages/app/src/components/home/HomePage.tsx +++ b/packages/app/src/components/home/HomePage.tsx @@ -27,6 +27,7 @@ import { import { Content, PageWithHeader } from '@backstage/core-components'; import { HomepageStoriesCard } from '@roadiehq/backstage-plugin-shortcut'; import { HomePageIFrameCard } from '@roadiehq/backstage-plugin-iframe'; +import { HomePageMyJiraTicketsCard } from '@roadiehq/backstage-plugin-jira'; export const HomePage = () => { return ( @@ -76,6 +77,9 @@ export const HomePage = () => { src="https://example.com" /> + + + From b8520303ef62e8896627e3e04cdfe5a266704524 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:42:45 +0300 Subject: [PATCH 09/20] Add Tests --- .../Home/MyJiraTicketsCard/Content.test.tsx | 145 +++++++++++++++++- .../src/responseStubs.ts | 11 ++ 2 files changed, 155 insertions(+), 1 deletion(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx index b85671308..4cd104dbb 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx @@ -1,3 +1,146 @@ +import React from 'react'; +import { rest } from 'msw'; +import { AnyApiRef } from '@backstage/core-plugin-api'; +import { + MockFetchApi, + wrapInTestApp, + TestApiProvider, + registerMswTestHooks +} from '@backstage/test-utils'; +import { UrlPatternDiscovery } from '@backstage/core-app-api'; +import { + userResponseStub, + searchResponseStub +} from '../../../responseStubs'; +import { render, screen, cleanup } from '@testing-library/react'; +import { setupServer } from 'msw/node'; +import { Content } from './Content'; +import { JiraAPI, jiraApiRef } from '../../../api'; +import { ConfigReader } from '@backstage/config'; + +const discoveryApi = UrlPatternDiscovery.compile('http://exampleapi.com'); +const fetchApi = new MockFetchApi(); +const configApi = new ConfigReader({}); + +const apis: [AnyApiRef, Partial][] = [ + [jiraApiRef, new JiraAPI({ discoveryApi, configApi, fetchApi })], +]; + describe('MyJiraTicketsCard', () => { -}) \ No newline at end of file + const worker = setupServer(); + registerMswTestHooks(worker); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('should display error in displaying tickets', async () => { + worker.use( + rest.post( + 'http://exampleapi.com/jira/api/rest/api/latest/search', + (_, res, ctx) => res(ctx.json(searchResponseStub)), + ), + rest.get( + 'http://exampleapi.com/jira/api/rest/api/latest/user', + (req, res, ctx) => { + return res(ctx.status(404)); + }, + ), + ); + + render( + wrapInTestApp( + + + , + ), + {}, + ); + + expect( + await screen.findByText('Error loading tickets: ', { + exact: false, + }), + ).toBeInTheDocument(); + + expect( + await screen.findByText('failed to fetch data, status 404: Not Found', { + exact: false, + }), + ).toBeInTheDocument(); + }) + + it('should display no tickets found', async () => { + worker.use( + rest.post( + 'http://exampleapi.com/jira/api/rest/api/latest/search', + (_, res, ctx) => res(ctx.json({ + startAt: 0, + maxResults: 50, + total: 0, + issues: [], + })), + ), + rest.get( + 'http://exampleapi.com/jira/api/rest/api/latest/user', + (req, res, ctx) => { + const username = req.url.searchParams.get('username'); + if (username === 'user1') { + return res(ctx.json(userResponseStub)); + } + return res(ctx.status(404)); + }, + ), + ); + + render( + wrapInTestApp( + + + , + ), + {}, + ); + + expect( + await screen.findByText('No tickets to show', { + exact: false, + }), + ).toBeInTheDocument(); + }); + + it('should display found tickets', async () => { + worker.use( + rest.post( + 'http://exampleapi.com/jira/api/rest/api/latest/search', + (_, res, ctx) => res(ctx.json(searchResponseStub)), + ), + rest.get( + 'http://exampleapi.com/jira/api/rest/api/latest/user', + (req, res, ctx) => { + const username = req.url.searchParams.get('username'); + if (username === 'user1') { + return res(ctx.json(userResponseStub)); + } + return res(ctx.status(404)); + }, + ), + ); + + render( + wrapInTestApp( + + + , + ), + {}, + ); + + const linkElement = await screen.findByText((content, element) => { + return element.tagName.toLowerCase() === 'a' && element.href === 'https://backstage-test.atlassian.net/browse/10003'; + }); + + expect(linkElement).toBeInTheDocument(); + }); +}); diff --git a/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts b/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts index 679f515b0..ed6421ad6 100644 --- a/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts +++ b/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts @@ -168,6 +168,17 @@ export const searchResponseStub = { ], }; +export const userResponseStub = { + self: 'https://backstage-test.atlassian.net/self', + key: 'user1', + name: 'user1', + displayName: 'User 1', + avatarUrls: { + '48x48': + 'https://backstage-test.atlassian.net/useravatar?avatarId=1', + } +}; + export const statusesResponseStub = [ { self: 'https://backstage-test.atlassian.net/rest/api/latest/issuetype/10002', From e01e8ad910d4e1e0caabbf703a44777864fc8e97 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:48:10 +0300 Subject: [PATCH 10/20] Refactor --- .../Home/MyJiraTicketsCard/Content.test.tsx | 72 ++-- .../Home/MyJiraTicketsCard/Content.tsx | 393 ++++++++++-------- 2 files changed, 257 insertions(+), 208 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx index 4cd104dbb..3ad43b9ce 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx @@ -1,4 +1,3 @@ - import React from 'react'; import { rest } from 'msw'; import { AnyApiRef } from '@backstage/core-plugin-api'; @@ -6,13 +5,10 @@ import { MockFetchApi, wrapInTestApp, TestApiProvider, - registerMswTestHooks + registerMswTestHooks, } from '@backstage/test-utils'; import { UrlPatternDiscovery } from '@backstage/core-app-api'; -import { - userResponseStub, - searchResponseStub -} from '../../../responseStubs'; +import { userResponseStub, searchResponseStub } from '../../../responseStubs'; import { render, screen, cleanup } from '@testing-library/react'; import { setupServer } from 'msw/node'; import { Content } from './Content'; @@ -24,7 +20,7 @@ const fetchApi = new MockFetchApi(); const configApi = new ConfigReader({}); const apis: [AnyApiRef, Partial][] = [ - [jiraApiRef, new JiraAPI({ discoveryApi, configApi, fetchApi })], + [jiraApiRef, new JiraAPI({ discoveryApi, configApi, fetchApi })], ]; describe('MyJiraTicketsCard', () => { @@ -44,7 +40,7 @@ describe('MyJiraTicketsCard', () => { rest.get( 'http://exampleapi.com/jira/api/rest/api/latest/user', (req, res, ctx) => { - return res(ctx.status(404)); + return res(ctx.status(404)); }, ), ); @@ -59,37 +55,40 @@ describe('MyJiraTicketsCard', () => { ); expect( - await screen.findByText('Error loading tickets: ', { - exact: false, - }), + await screen.findByText('Error loading tickets: ', { + exact: false, + }), ).toBeInTheDocument(); - + expect( - await screen.findByText('failed to fetch data, status 404: Not Found', { - exact: false, - }), + await screen.findByText('failed to fetch data, status 404: Not Found', { + exact: false, + }), ).toBeInTheDocument(); - }) + }); it('should display no tickets found', async () => { worker.use( rest.post( 'http://exampleapi.com/jira/api/rest/api/latest/search', - (_, res, ctx) => res(ctx.json({ - startAt: 0, - maxResults: 50, - total: 0, - issues: [], - })), + (_, res, ctx) => + res( + ctx.json({ + startAt: 0, + maxResults: 50, + total: 0, + issues: [], + }), + ), ), rest.get( 'http://exampleapi.com/jira/api/rest/api/latest/user', (req, res, ctx) => { - const username = req.url.searchParams.get('username'); - if (username === 'user1') { - return res(ctx.json(userResponseStub)); - } - return res(ctx.status(404)); + const username = req.url.searchParams.get('username'); + if (username === 'user1') { + return res(ctx.json(userResponseStub)); + } + return res(ctx.status(404)); }, ), ); @@ -97,7 +96,7 @@ describe('MyJiraTicketsCard', () => { render( wrapInTestApp( - + , ), {}, @@ -119,11 +118,11 @@ describe('MyJiraTicketsCard', () => { rest.get( 'http://exampleapi.com/jira/api/rest/api/latest/user', (req, res, ctx) => { - const username = req.url.searchParams.get('username'); - if (username === 'user1') { - return res(ctx.json(userResponseStub)); - } - return res(ctx.status(404)); + const username = req.url.searchParams.get('username'); + if (username === 'user1') { + return res(ctx.json(userResponseStub)); + } + return res(ctx.status(404)); }, ), ); @@ -131,14 +130,17 @@ describe('MyJiraTicketsCard', () => { render( wrapInTestApp( - + , ), {}, ); const linkElement = await screen.findByText((content, element) => { - return element.tagName.toLowerCase() === 'a' && element.href === 'https://backstage-test.atlassian.net/browse/10003'; + return ( + element.tagName.toLowerCase() === 'a' && + element.href === 'https://backstage-test.atlassian.net/browse/10003' + ); }); expect(linkElement).toBeInTheDocument(); diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 742182160..21a20efcc 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -1,200 +1,247 @@ -import React, {useState, useEffect, useCallback} from 'react'; -import {Typography, Card, Avatar, Grid, Link} from '@material-ui/core'; -import {useUserInfo} from '../../../hooks'; +import React, { useState, useEffect, useCallback } from 'react'; +import { Typography, Card, Avatar, Grid, Link } from '@material-ui/core'; +import { useUserInfo } from '../../../hooks'; import Skeleton from '@material-ui/lab/Skeleton'; -import {DndProvider} from 'react-dnd'; -import {HTML5Backend} from 'react-dnd-html5-backend'; +import { DndProvider } from 'react-dnd'; +import { HTML5Backend } from 'react-dnd-html5-backend'; import DraggableCard from '../../DraggableCard'; -import {makeStyles} from "@material-ui/core/styles"; -import {Ticket, UserSummary} from "../../../types"; +import { makeStyles } from '@material-ui/core/styles'; +import { Ticket, UserSummary } from '../../../types'; const useStyles = makeStyles(theme => ({ - container: { - overflowY: 'auto', - maxHeight: '100%', + container: { + overflowY: 'auto', + maxHeight: '100%', + }, + title: { + fontWeight: Number(theme.typography.fontWeightBold), + color: 'darkgray', + }, + link: { + color: theme.palette.text.primary, + '&:hover': { + color: '#539bf5', + fill: '#539bf5', }, - title: { - fontWeight: Number(theme.typography.fontWeightBold), - color: 'darkgray', - }, - link: { - color: theme.palette.text.primary, - '&:hover': { - color: '#539bf5', - fill: '#539bf5', - }, - '&:first-child': { - paddingRight: '4px', - }, - }, - secondaryText: { - color: theme.palette.text.secondary, + '&:first-child': { + paddingRight: '4px', }, + }, + secondaryText: { + color: theme.palette.text.secondary, + }, })); - type MyJiraTicketsCardProps = { - userId: string; + userId: string; }; type JiraTicketCardProps = { - user: UserSummary; - ticket: Ticket; - index: number; - moveCard: any; + user: UserSummary; + ticket: Ticket; + index: number; + moveCard: any; }; type JiraTicketsListViewProps = { - user: UserSummary; - tickets: Ticket[]; + user: UserSummary; + tickets: Ticket[]; }; const JiraTicketSkeleton = () => { - return -} + return ( + + ); +}; const JiraTicketsSkeletonView = () => { - return ( -
- {Array.from({length: 5}).map(() => ( - - ))} -
- ); -} - -const JiraTicketCard = ({user, ticket, index, moveCard}: JiraTicketCardProps) => { - const classes = useStyles(); - - return ( - - - - - - - {ticket?.issuetype?.name} - {ticket.parent ? ( - <> - - {ticket.parent} - - {' / '} - - {ticket.key} - - - ) : ( - - {ticket.key} - - )} - - {ticket?.priority?.name} - - {ticket?.priority?.name} - - - - - - - {ticket?.status?.name} - {ticket?.status?.name} - - - - - {ticket.summary} - - - - - - {ticket.assignee ? ticket.assignee.displayName : 'Unassigned'} - - - - - - - ) -} - -const JiraTicketsListView = ({user, tickets}: JiraTicketsListViewProps) => { - const [cards, setCards] = useState(tickets || []); - - useEffect(() => { - setCards(tickets || []); - }, [tickets]); - - const moveCard = useCallback((dragIndex: number, hoverIndex: number) => { - const dragCard = cards[dragIndex]; - const updatedCards = [...cards]; - updatedCards.splice(dragIndex, 1); - updatedCards.splice(hoverIndex, 0, dragCard); - setCards(updatedCards); - }, [cards]); - - return ( - - {cards.map((ticket, index) => ( - - ))} - - ); -} + return ( +
+ {Array.from({ length: 5 }).map(() => ( + + ))} +
+ ); +}; + +const JiraTicketCard = ({ + user, + ticket, + index, + moveCard, +}: JiraTicketCardProps) => { + const classes = useStyles(); + + return ( + + + + + + + {ticket?.issuetype?.name} + {ticket.parent ? ( + <> + + {ticket.parent} + + {' / '} + + {ticket.key} + + + ) : ( + + {ticket.key} + + )} + + {ticket?.priority?.name} + + {ticket?.priority?.name} + + + + + + + {ticket?.status?.name} + {ticket?.status?.name} + + + + + {ticket.summary} + + + + + + {ticket.assignee ? ticket.assignee.displayName : 'Unassigned'} + + + + + + + ); +}; + +const JiraTicketsListView = ({ user, tickets }: JiraTicketsListViewProps) => { + const [cards, setCards] = useState(tickets || []); + + useEffect(() => { + setCards(tickets || []); + }, [tickets]); + + const moveCard = useCallback( + (dragIndex: number, hoverIndex: number) => { + const dragCard = cards[dragIndex]; + const updatedCards = [...cards]; + updatedCards.splice(dragIndex, 1); + updatedCards.splice(hoverIndex, 0, dragCard); + setCards(updatedCards); + }, + [cards], + ); + + return ( + + {cards.map((ticket, index) => ( + + ))} + + ); +}; export const Content = (props: MyJiraTicketsCardProps) => { - const {userId} = props; - const {user, loading, error, tickets} = useUserInfo(userId); + const { userId } = props; + const { user, loading, error, tickets } = useUserInfo(userId); - if (loading) return + if (loading) return ; - if (error) { - return Error loading tickets: {error.message}; - } + if (error) { + return Error loading tickets: {error.message}; + } - if (!user) { - return User not found; - } + if (!user) { + return User not found; + } - if (!tickets || tickets.length === 0) { - return No tickets to show; - } + if (!tickets || tickets.length === 0) { + return No tickets to show; + } - return ; -}; \ No newline at end of file + return ; +}; From fd1df1a716ab96cf6a637adfa65f2902d33b3a91 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 20:59:16 +0300 Subject: [PATCH 11/20] Add changeset --- .changeset/home-page-my-jira-tickets.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/home-page-my-jira-tickets.md diff --git a/.changeset/home-page-my-jira-tickets.md b/.changeset/home-page-my-jira-tickets.md new file mode 100644 index 000000000..1260d621a --- /dev/null +++ b/.changeset/home-page-my-jira-tickets.md @@ -0,0 +1,5 @@ +--- +'@roadiehq/backstage-plugin-jira': minor +--- + +Add My Jira Tickets Home Page component \ No newline at end of file From 27928e0e7abfeb37cdca105b54cffe07083f9224 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 10 Sep 2024 21:16:06 +0300 Subject: [PATCH 12/20] if assignee is null don't add Avatar element --- .../components/Home/MyJiraTicketsCard/Content.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 21a20efcc..33eab1674 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -170,14 +170,12 @@ const JiraTicketCard = ({ - + {ticket.assignee && ( + + )} Date: Tue, 10 Sep 2024 21:18:09 +0300 Subject: [PATCH 13/20] Update name and title --- plugins/frontend/backstage-plugin-jira/src/plugin.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/plugin.ts b/plugins/frontend/backstage-plugin-jira/src/plugin.ts index be6e45656..fca87080c 100644 --- a/plugins/frontend/backstage-plugin-jira/src/plugin.ts +++ b/plugins/frontend/backstage-plugin-jira/src/plugin.ts @@ -58,8 +58,8 @@ export const EntityJiraOverviewCard = jiraPlugin.provide( export const HomePageMyJiraTicketsCard = jiraPlugin.provide( createCardExtension<{ userId: string }>({ - name: "My Jira Tickets Card", - title: "My Jira Tickets Card", + name: "My Jira Tickets", + title: "My Jira Tickets", components: () => import('./components/Home/MyJiraTicketsCard'), description: "My Jira tickets Card", }), From 75906a23b4a59f762aef3b25e51f7ebfd4e11a41 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Sat, 14 Sep 2024 23:51:41 +0300 Subject: [PATCH 14/20] Add plugin-home-react dependency --- plugins/frontend/backstage-plugin-jira/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/frontend/backstage-plugin-jira/package.json b/plugins/frontend/backstage-plugin-jira/package.json index f59f6cdfe..6d029c17c 100644 --- a/plugins/frontend/backstage-plugin-jira/package.json +++ b/plugins/frontend/backstage-plugin-jira/package.json @@ -43,6 +43,7 @@ "@backstage/core-components": "^0.14.10", "@backstage/core-plugin-api": "^1.9.3", "@backstage/plugin-catalog-react": "^1.12.3", + "@backstage/plugin-home-react": "^0.1.16", "@backstage/theme": "^0.5.6", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", From 2e6e218b11a5797304b383744316b1c52d7b7f93 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Sun, 15 Sep 2024 00:15:19 +0300 Subject: [PATCH 15/20] Add docs --- .../frontend/backstage-plugin-jira/README.md | 26 +++++++++++++++++- .../docs/my-jira-tickets-card.png | Bin 0 -> 100682 bytes 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 plugins/frontend/backstage-plugin-jira/docs/my-jira-tickets-card.png diff --git a/plugins/frontend/backstage-plugin-jira/README.md b/plugins/frontend/backstage-plugin-jira/README.md index b821896a0..c7ad45d24 100644 --- a/plugins/frontend/backstage-plugin-jira/README.md +++ b/plugins/frontend/backstage-plugin-jira/README.md @@ -5,9 +5,13 @@ ## Features +Entity Page components: - Show project details and tasks - View JIRA issues of the Project - Activity Stream + +Home Page components: +- Show my assigned JIRA tickets ## How to add Jira project dependency to Backstage app @@ -129,7 +133,27 @@ Even though you can use Bearer token please keep in mind that Activity stream fe 3. Save the environmental variable `JIRA_TOKEN` with `Basic ` prefix, eg: `JIRA_TOKEN='Basic amlyYS1tYWlsQGV4YW1wbGUuY29tOmhUQmdxVmNyY3hSWXBUNVRDelRBOUMwRg=='` -## Links +## Add Homepage components to your home page +The `HomePageMyJiraTicketsCard` component displays the Open and In Progress JIRA tickets that are assigned to the provided `userId`. +![HomePageMyJiraTicketsCard](./docs/my-jira-tickets-card.png). + +To add the component to your Homepage: +```ts +//packages/app/src/components/home/HomePage.tsx +import { HomePageMyJiraTicketsCard } from '@roadiehq/backstage-plugin-jira'; + +export const HomePage = () => { + return ( + ... + + + + ... + ); +}; +``` + +## Links - [Backstage](https://backstage.io) - Get hosted, managed Backstage for your company: https://roadie.io diff --git a/plugins/frontend/backstage-plugin-jira/docs/my-jira-tickets-card.png b/plugins/frontend/backstage-plugin-jira/docs/my-jira-tickets-card.png new file mode 100644 index 0000000000000000000000000000000000000000..f4efa9fd050f8dba2aa69d10c76c5bbfb79720ff GIT binary patch literal 100682 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 QH4XkYxo&YO-4J;EFXairxc~qF literal 0 HcmV?d00001 From 93028d62435df85f4f8af7c59041d1233923f178 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Sun, 15 Sep 2024 00:17:37 +0300 Subject: [PATCH 16/20] Update README.md --- plugins/frontend/backstage-plugin-jira/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/frontend/backstage-plugin-jira/README.md b/plugins/frontend/backstage-plugin-jira/README.md index c7ad45d24..fa72632bc 100644 --- a/plugins/frontend/backstage-plugin-jira/README.md +++ b/plugins/frontend/backstage-plugin-jira/README.md @@ -135,7 +135,7 @@ Even though you can use Bearer token please keep in mind that Activity stream fe ## Add Homepage components to your home page The `HomePageMyJiraTicketsCard` component displays the Open and In Progress JIRA tickets that are assigned to the provided `userId`. -![HomePageMyJiraTicketsCard](./docs/my-jira-tickets-card.png). +![HomePageMyJiraTicketsCard](./docs/my-jira-tickets-card.png) To add the component to your Homepage: ```ts From cd88fd14348037216c966ad06b0af9fe9d2acf9a Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Sun, 15 Sep 2024 13:42:08 +0300 Subject: [PATCH 17/20] Update docs --- .../docs/my-jira-tickets-card.png | Bin 100682 -> 98359 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/docs/my-jira-tickets-card.png b/plugins/frontend/backstage-plugin-jira/docs/my-jira-tickets-card.png index f4efa9fd050f8dba2aa69d10c76c5bbfb79720ff..688e1ae64d30a61e603799ed586b6bc6cccb282f 100644 GIT binary patch literal 98359 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 QH4XkYxo&YO-4J;EFXairxc~qF From 588fa5edcf9065094da88cf812741ae020b84b96 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Mon, 16 Sep 2024 15:21:04 +0300 Subject: [PATCH 18/20] Fix lint issue --- packages/app/src/components/home/HomePage.tsx | 2 +- plugins/frontend/backstage-plugin-jira/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/app/src/components/home/HomePage.tsx b/packages/app/src/components/home/HomePage.tsx index 8ca6ee4a6..0c1311b31 100644 --- a/packages/app/src/components/home/HomePage.tsx +++ b/packages/app/src/components/home/HomePage.tsx @@ -78,7 +78,7 @@ export const HomePage = () => { /> - + diff --git a/plugins/frontend/backstage-plugin-jira/README.md b/plugins/frontend/backstage-plugin-jira/README.md index fa72632bc..7fbf1555c 100644 --- a/plugins/frontend/backstage-plugin-jira/README.md +++ b/plugins/frontend/backstage-plugin-jira/README.md @@ -147,7 +147,7 @@ export const HomePage = () => { return ( ... - + ... ); From c8958d27877c251b5384d0395368cfefb1f0c1f0 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Mon, 16 Sep 2024 16:35:24 +0300 Subject: [PATCH 19/20] Fix compilation errors + API call --- .../backstage-plugin-jira/src/api/index.ts | 4 +- .../src/components/DraggableCard.tsx | 93 +++++++++++++------ .../Home/MyJiraTicketsCard/Content.test.tsx | 12 +-- .../Home/MyJiraTicketsCard/Content.tsx | 6 +- .../backstage-plugin-jira/src/types.ts | 25 +++++ 5 files changed, 100 insertions(+), 40 deletions(-) diff --git a/plugins/frontend/backstage-plugin-jira/src/api/index.ts b/plugins/frontend/backstage-plugin-jira/src/api/index.ts index 3e4b2f0d1..579f168c1 100644 --- a/plugins/frontend/backstage-plugin-jira/src/api/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/api/index.ts @@ -30,6 +30,7 @@ import { Ticket, UserSummary, User, + TicketSummary, } from '../types'; export const jiraApiRef = createApiRef({ @@ -109,6 +110,7 @@ export class JiraAPI { 'status', 'assignee', 'priority', + 'parent', 'created', 'updated', ], @@ -329,7 +331,7 @@ export class JiraAPI { } const user = (await request.json()) as User; - let tickets: Ticket[] = []; + let tickets: TicketSummary[] = []; const jql = `assignee = "${userId}" AND statusCategory in ("To Do", "In Progress")`; diff --git a/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx index d49874c0b..4bf6552c8 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx @@ -1,36 +1,69 @@ -import React from 'react'; -import { useDrag, useDrop } from 'react-dnd'; +import React, { ReactNode, useRef } from 'react'; +import { useDrag, useDrop, DragSourceMonitor } from 'react-dnd'; const ItemType = 'CARD'; -const DraggableCard = ({ id, index, moveCard, children }) => { - const ref = React.useRef(null); - - const [, drop] = useDrop({ - accept: ItemType, - hover(item: { id: string; index: number }) { - if (item.index !== index) { - moveCard(item.index, index); - item.index = index; - } - }, - }); - - const [{ isDragging }, drag] = useDrag({ - type: ItemType, - item: { id, index }, - collect: (monitor) => ({ - isDragging: monitor.isDragging(), - }), - }); - - drag(drop(ref)); - - return ( -
- {children} -
- ); +interface DraggableCardProps { + id: string; + index: number; + moveCard: (dragIndex: number, hoverIndex: number) => void; + children: ReactNode; +} + +interface DragItem { + id: string; + index: number; +} + +const DraggableCard = ({ id, index, moveCard, children }: DraggableCardProps) => { + const ref = useRef(null); + + const [, drop] = useDrop({ + accept: ItemType, + hover(item, monitor) { + if (!ref.current) { + return; + } + const dragIndex = item.index; + const hoverIndex = index; + + if (dragIndex === hoverIndex) { + return; + } + + const hoverBoundingRect = ref.current?.getBoundingClientRect(); + const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2; + const clientOffset = monitor.getClientOffset(); + const hoverClientY = clientOffset!.y - hoverBoundingRect.top; + + if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) { + return; + } + + if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) { + return; + } + + moveCard(dragIndex, hoverIndex); + item.index = hoverIndex; + }, + }); + + const [{ isDragging }, drag] = useDrag({ + type: ItemType, + item: { id, index }, + collect: (monitor: DragSourceMonitor) => ({ + isDragging: monitor.isDragging(), + }), + }); + + drag(drop(ref)); + + return ( +
+ {children} +
+ ); }; export default DraggableCard; \ No newline at end of file diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx index 3ad43b9ce..6796e8789 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx @@ -9,7 +9,7 @@ import { } from '@backstage/test-utils'; import { UrlPatternDiscovery } from '@backstage/core-app-api'; import { userResponseStub, searchResponseStub } from '../../../responseStubs'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import { setupServer } from 'msw/node'; import { Content } from './Content'; import { JiraAPI, jiraApiRef } from '../../../api'; @@ -39,7 +39,7 @@ describe('MyJiraTicketsCard', () => { ), rest.get( 'http://exampleapi.com/jira/api/rest/api/latest/user', - (req, res, ctx) => { + (_, res, ctx) => { return res(ctx.status(404)); }, ), @@ -48,7 +48,7 @@ describe('MyJiraTicketsCard', () => { render( wrapInTestApp( - + , ), {}, @@ -136,10 +136,10 @@ describe('MyJiraTicketsCard', () => { {}, ); - const linkElement = await screen.findByText((content, element) => { + const linkElement = await screen.findByText((_, element) => { return ( - element.tagName.toLowerCase() === 'a' && - element.href === 'https://backstage-test.atlassian.net/browse/10003' + element?.tagName.toLowerCase() === 'a' && + (element as HTMLAnchorElement).href === 'https://backstage-test.atlassian.net/browse/10003' ); }); diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx index 33eab1674..e85de73e7 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.tsx @@ -6,7 +6,7 @@ import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; import DraggableCard from '../../DraggableCard'; import { makeStyles } from '@material-ui/core/styles'; -import { Ticket, UserSummary } from '../../../types'; +import { TicketSummary, UserSummary } from '../../../types'; const useStyles = makeStyles(theme => ({ container: { @@ -38,14 +38,14 @@ type MyJiraTicketsCardProps = { type JiraTicketCardProps = { user: UserSummary; - ticket: Ticket; + ticket: TicketSummary; index: number; moveCard: any; }; type JiraTicketsListViewProps = { user: UserSummary; - tickets: Ticket[]; + tickets: TicketSummary[]; }; const JiraTicketSkeleton = () => { diff --git a/plugins/frontend/backstage-plugin-jira/src/types.ts b/plugins/frontend/backstage-plugin-jira/src/types.ts index 56175b973..1277868b9 100644 --- a/plugins/frontend/backstage-plugin-jira/src/types.ts +++ b/plugins/frontend/backstage-plugin-jira/src/types.ts @@ -143,6 +143,7 @@ export type Ticket = { }; }; status: { + iconUrl: string; name: string; }; updated: Date; @@ -154,6 +155,30 @@ export type Ticket = { }; }; +export type TicketSummary = { + key: string; + parent?: string; + summary?: string; + assignee?: { + displayName?: string; + avatarUrl?: string; + }; + status?: { + iconUrl: string; + name: string; + }; + issuetype?: { + iconUrl: string; + name: string; + }; + priority?: { + iconUrl: string; + name: string; + }; + created?: Date; + updated?: Date; +}; + export type User = { key: string; name: string; From 7537b12e3a446a7625340cd75f3a3038689edb42 Mon Sep 17 00:00:00 2001 From: hanelka <39803276+hanelka@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:38:51 +0300 Subject: [PATCH 20/20] Run prettier --- .changeset/home-page-my-jira-tickets.md | 2 +- .../frontend/backstage-plugin-jira/README.md | 7 ++++++- .../backstage-plugin-jira/src/api/index.ts | 21 +++++++++---------- .../src/components/DraggableCard.tsx | 12 ++++++++--- .../Home/MyJiraTicketsCard/Content.test.tsx | 5 +++-- .../src/hooks/useUserInfo.ts | 5 +---- .../backstage-plugin-jira/src/index.ts | 2 +- .../backstage-plugin-jira/src/plugin.ts | 10 ++++----- .../src/responseStubs.ts | 5 ++--- .../backstage-plugin-jira/src/types.ts | 2 +- 10 files changed, 39 insertions(+), 32 deletions(-) diff --git a/.changeset/home-page-my-jira-tickets.md b/.changeset/home-page-my-jira-tickets.md index 1260d621a..721623a65 100644 --- a/.changeset/home-page-my-jira-tickets.md +++ b/.changeset/home-page-my-jira-tickets.md @@ -2,4 +2,4 @@ '@roadiehq/backstage-plugin-jira': minor --- -Add My Jira Tickets Home Page component \ No newline at end of file +Add My Jira Tickets Home Page component diff --git a/plugins/frontend/backstage-plugin-jira/README.md b/plugins/frontend/backstage-plugin-jira/README.md index 7fbf1555c..24bedd140 100644 --- a/plugins/frontend/backstage-plugin-jira/README.md +++ b/plugins/frontend/backstage-plugin-jira/README.md @@ -6,11 +6,13 @@ ## Features Entity Page components: + - Show project details and tasks - View JIRA issues of the Project - Activity Stream - + Home Page components: + - Show my assigned JIRA tickets ## How to add Jira project dependency to Backstage app @@ -134,10 +136,12 @@ Even though you can use Bearer token please keep in mind that Activity stream fe 3. Save the environmental variable `JIRA_TOKEN` with `Basic ` prefix, eg: `JIRA_TOKEN='Basic amlyYS1tYWlsQGV4YW1wbGUuY29tOmhUQmdxVmNyY3hSWXBUNVRDelRBOUMwRg=='` ## Add Homepage components to your home page + The `HomePageMyJiraTicketsCard` component displays the Open and In Progress JIRA tickets that are assigned to the provided `userId`. ![HomePageMyJiraTicketsCard](./docs/my-jira-tickets-card.png) To add the component to your Homepage: + ```ts //packages/app/src/components/home/HomePage.tsx @@ -155,5 +159,6 @@ export const HomePage = () => { ``` ## Links + - [Backstage](https://backstage.io) - Get hosted, managed Backstage for your company: https://roadie.io diff --git a/plugins/frontend/backstage-plugin-jira/src/api/index.ts b/plugins/frontend/backstage-plugin-jira/src/api/index.ts index 579f168c1..d1b027b50 100644 --- a/plugins/frontend/backstage-plugin-jira/src/api/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/api/index.ts @@ -317,16 +317,16 @@ export class JiraAPI { const { apiUrl } = await this.getUrls(); const request = await this.fetchApi.fetch( - `${apiUrl}user?username=${userId}`, - { - headers: { - 'Content-Type': 'application/json', - }, + `${apiUrl}user?username=${userId}`, + { + headers: { + 'Content-Type': 'application/json', }, + }, ); if (!request.ok) { throw new Error( - `failed to fetch data, status ${request.status}: ${request.statusText}`, + `failed to fetch data, status ${request.status}: ${request.statusText}`, ); } const user = (await request.json()) as User; @@ -340,9 +340,9 @@ export class JiraAPI { while (startAt !== undefined) { const res: IssuesResult = await this.pagedIssuesRequest( - apiUrl, - jql, - startAt, + apiUrl, + jql, + startAt, ); startAt = res.next; foundIssues.push(...res.issues); @@ -365,7 +365,6 @@ export class JiraAPI { }; }); - return { user: { name: user.displayName, @@ -373,6 +372,6 @@ export class JiraAPI { url: this.getDomainFromApiUrl(user.self), } as UserSummary, tickets, - } + }; } } diff --git a/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx index 4bf6552c8..e3b4703a0 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/DraggableCard.tsx @@ -15,7 +15,12 @@ interface DragItem { index: number; } -const DraggableCard = ({ id, index, moveCard, children }: DraggableCardProps) => { +const DraggableCard = ({ + id, + index, + moveCard, + children, +}: DraggableCardProps) => { const ref = useRef(null); const [, drop] = useDrop({ @@ -32,7 +37,8 @@ const DraggableCard = ({ id, index, moveCard, children }: DraggableCardProps) => } const hoverBoundingRect = ref.current?.getBoundingClientRect(); - const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2; + const hoverMiddleY = + (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2; const clientOffset = monitor.getClientOffset(); const hoverClientY = clientOffset!.y - hoverBoundingRect.top; @@ -66,4 +72,4 @@ const DraggableCard = ({ id, index, moveCard, children }: DraggableCardProps) => ); }; -export default DraggableCard; \ No newline at end of file +export default DraggableCard; diff --git a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx index 6796e8789..5bbb73610 100644 --- a/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx +++ b/plugins/frontend/backstage-plugin-jira/src/components/Home/MyJiraTicketsCard/Content.test.tsx @@ -48,7 +48,7 @@ describe('MyJiraTicketsCard', () => { render( wrapInTestApp( - + , ), {}, @@ -139,7 +139,8 @@ describe('MyJiraTicketsCard', () => { const linkElement = await screen.findByText((_, element) => { return ( element?.tagName.toLowerCase() === 'a' && - (element as HTMLAnchorElement).href === 'https://backstage-test.atlassian.net/browse/10003' + (element as HTMLAnchorElement).href === + 'https://backstage-test.atlassian.net/browse/10003' ); }); diff --git a/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts index 11706b358..bd544690d 100644 --- a/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts +++ b/plugins/frontend/backstage-plugin-jira/src/hooks/useUserInfo.ts @@ -15,10 +15,7 @@ export const useUserInfo = (userId: string) => { } }, [api, userId]); - const [state, fetchUserInfo] = useAsyncFn( - () => getUserDetails(), - [userId], - ); + const [state, fetchUserInfo] = useAsyncFn(() => getUserDetails(), [userId]); useEffect(() => { fetchUserInfo(); diff --git a/plugins/frontend/backstage-plugin-jira/src/index.ts b/plugins/frontend/backstage-plugin-jira/src/index.ts index efc112053..d9d6b6d70 100644 --- a/plugins/frontend/backstage-plugin-jira/src/index.ts +++ b/plugins/frontend/backstage-plugin-jira/src/index.ts @@ -21,7 +21,7 @@ export { jiraPlugin as plugin, jiraPlugin, EntityJiraOverviewCard, - HomePageMyJiraTicketsCard + HomePageMyJiraTicketsCard, } from './plugin'; export { /** diff --git a/plugins/frontend/backstage-plugin-jira/src/plugin.ts b/plugins/frontend/backstage-plugin-jira/src/plugin.ts index fca87080c..845220653 100644 --- a/plugins/frontend/backstage-plugin-jira/src/plugin.ts +++ b/plugins/frontend/backstage-plugin-jira/src/plugin.ts @@ -22,7 +22,7 @@ import { createComponentExtension, fetchApiRef, } from '@backstage/core-plugin-api'; -import {createCardExtension} from "@backstage/plugin-home-react"; +import { createCardExtension } from '@backstage/plugin-home-react'; import { jiraApiRef, JiraAPI } from './api'; @@ -58,9 +58,9 @@ export const EntityJiraOverviewCard = jiraPlugin.provide( export const HomePageMyJiraTicketsCard = jiraPlugin.provide( createCardExtension<{ userId: string }>({ - name: "My Jira Tickets", - title: "My Jira Tickets", - components: () => import('./components/Home/MyJiraTicketsCard'), - description: "My Jira tickets Card", + name: 'My Jira Tickets', + title: 'My Jira Tickets', + components: () => import('./components/Home/MyJiraTicketsCard'), + description: 'My Jira tickets Card', }), ); diff --git a/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts b/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts index ed6421ad6..d0596f4b3 100644 --- a/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts +++ b/plugins/frontend/backstage-plugin-jira/src/responseStubs.ts @@ -174,9 +174,8 @@ export const userResponseStub = { name: 'user1', displayName: 'User 1', avatarUrls: { - '48x48': - 'https://backstage-test.atlassian.net/useravatar?avatarId=1', - } + '48x48': 'https://backstage-test.atlassian.net/useravatar?avatarId=1', + }, }; export const statusesResponseStub = [ diff --git a/plugins/frontend/backstage-plugin-jira/src/types.ts b/plugins/frontend/backstage-plugin-jira/src/types.ts index 1277868b9..119f4fb64 100644 --- a/plugins/frontend/backstage-plugin-jira/src/types.ts +++ b/plugins/frontend/backstage-plugin-jira/src/types.ts @@ -134,7 +134,7 @@ export type Ticket = { }; parent?: { key: string; - } + }; summary: string; assignee: { displayName: string;