import React from 'react'; import { KanboardCard } from '../../types/kanboard'; export interface IssueCardProps { card: KanboardCard compact: boolean } export class IssueCard extends React.PureComponent { render() { const { card, compact } = this.props; const issueURLInfo = extractInfoFromIssueURL(card.issue.url); const projectURL = `${issueURLInfo.baseURL}/${issueURLInfo.owner}/${issueURLInfo.projectName}`; const issueURL = `${projectURL}/issues/${card.issue.number}`; return (
{ card.issue.assignee && !compact ?
Image
{`@${card.issue.assignee.login}`}
: null }

{`#${card.issue.number}`}  { !compact && card.issue.milestone ? {`- ${card.issue.milestone.title}`} : null } { !compact ?
: ' - ' } {card.issue.title}

{ !compact ?
{card.project}
: null }
); } } function extractInfoFromIssueURL(issueURL: string): any|void { const pattern = /^(https?:\/\/[^\/]+)\/api\/v1\/repos\/([^\/]+)\/([^\/]+)\/.*$/; const matches = pattern.exec(issueURL); if (!matches) return; return { baseURL: matches[1], owner: matches[2], projectName: matches[3], }; }