From 83f211461c0b3caeb13bcf251b077e9c5981beba Mon Sep 17 00:00:00 2001 From: Carlos Alessandro Ribeiro Date: Sat, 17 Aug 2019 22:29:10 -0300 Subject: [PATCH] Ui improvements (#12) * Wrap the reviewer list and fixing the filter after refresh button clicked * Including more details about the PR and reviewers column --- src/tabs/PulRequestsTabData.tsx | 4 + src/tabs/PullRequestsTab.tsx | 184 +++++++++++++++++++------------- 2 files changed, 114 insertions(+), 74 deletions(-) diff --git a/src/tabs/PulRequestsTabData.tsx b/src/tabs/PulRequestsTabData.tsx index 284f26a..ccdbc9f 100644 --- a/src/tabs/PulRequestsTabData.tsx +++ b/src/tabs/PulRequestsTabData.tsx @@ -37,6 +37,8 @@ export class PullRequestModel { public baseUrl?: string; public myApprovalStatus?: ReviewerVoteOption; public currentUser: DevOps.IUserContext = DevOps.getUser(); + public lastCommitId?: string; + public lastShortCommitId?: string; constructor(public gitPullRequest: GitPullRequest, public projectName: string) { @@ -53,6 +55,8 @@ export class PullRequestModel { this.sourceBranchHref = `${this.baseUrl}/${DevOps.getHost().name}/${this.projectName}/_git/${this.gitPullRequest.repository.name}?version=GB${this.sourceBranchName}`; this.targetBranchHref = `${this.baseUrl}/${DevOps.getHost().name}/${this.projectName}/_git/${this.gitPullRequest.repository.name}?version=GB${this.targetBranchName}`; this.myApprovalStatus = this.getCurrentUserVoteStatus(this.gitPullRequest.reviewers); + this.lastCommitId = this.gitPullRequest.lastMergeSourceCommit.commitId; + this.lastShortCommitId = this.lastCommitId.substr(0, 8); }; private getCurrentUserVoteStatus(reviewers: IdentityRefWithVote[]): ReviewerVoteOption { diff --git a/src/tabs/PullRequestsTab.tsx b/src/tabs/PullRequestsTab.tsx index 01f03e0..db669e6 100644 --- a/src/tabs/PullRequestsTab.tsx +++ b/src/tabs/PullRequestsTab.tsx @@ -26,7 +26,10 @@ import { IHeaderCommandBarItem } from "azure-devops-ui/HeaderCommandBar"; import { FilterBar } from "azure-devops-ui/FilterBar"; import { KeywordFilterBarItem } from "azure-devops-ui/TextFilterBarItem"; import { Filter, FILTER_CHANGE_EVENT } from "azure-devops-ui/Utilities/Filter"; -import { DropdownMultiSelection, DropdownSelection } from "azure-devops-ui/Utilities/DropdownSelection"; +import { + DropdownMultiSelection, + DropdownSelection +} from "azure-devops-ui/Utilities/DropdownSelection"; import { DropdownFilterBarItem } from "azure-devops-ui/Dropdown"; import { ObservableArray, @@ -187,7 +190,10 @@ export class PullRequestsTab extends React.Component< if (myApprovalStatusFilter && myApprovalStatusFilter.length > 0) { filteredPullRequest = filteredPullRequest.filter(pr => { const found = myApprovalStatusFilter.some(vote => { - return pr.myApprovalStatus === (parseInt(vote) as Data.ReviewerVoteOption) + return ( + pr.myApprovalStatus === + (parseInt(vote) as Data.ReviewerVoteOption) + ); }); return found; }); @@ -372,6 +378,8 @@ export class PullRequestsTab extends React.Component< reviewerList }); + this.filter.applyChanges(); + DevOps.notifyLoadSucceeded(); this.setupFilter(); @@ -563,6 +571,12 @@ export class PullRequestsTab extends React.Component< renderCell: this.renderDetailsColumn, width: -33 }, + { + id: "reviewers", + name: "Reviewers", + renderCell: this.renderReviewersColumn, + width: -33 + }, { id: "time", readonly: true, @@ -571,78 +585,6 @@ export class PullRequestsTab extends React.Component< } ]; - private sortFunctions = [ - // Sort on Title column - (item1: Data.PullRequestModel, item2: Data.PullRequestModel) => { - return item1.gitPullRequest.title.localeCompare( - item2.gitPullRequest.title! - ); - } - ]; - - private renderDetailsColumn( - rowIndex: number, - columnIndex: number, - tableColumn: ITableColumn, - tableItem: Data.PullRequestModel - ): JSX.Element { - return ( - - - - - {tableItem.gitPullRequest.createdBy.displayName} - - - - } - line2={ - -
-
- Reviewers: 
- - {tableItem.gitPullRequest.reviewers.map((reviewer, i) => { - // @ts-ignore - return ( - - {reviewer.displayName} - - ); - })} - -
- } - /> - ); - } - private renderTitleColumn( rowIndex: number, columnIndex: number, @@ -738,6 +680,100 @@ export class PullRequestsTab extends React.Component< ); } + private renderDetailsColumn( + rowIndex: number, + columnIndex: number, + tableColumn: ITableColumn, + tableItem: Data.PullRequestModel + ): JSX.Element { + return ( + + + + + {tableItem.gitPullRequest.createdBy.displayName} + + + + } + line2={ +
+ Number of Changes:{" "} + {tableItem.gitPullRequest.lastMergeSourceCommit.changeCounts} +
+ Last commit Id:{" "} + + {tableItem.lastShortCommitId}{" "} +
+ } + /> + ); + } + + private renderReviewersColumn( + rowIndex: number, + columnIndex: number, + tableColumn: ITableColumn, + tableItem: Data.PullRequestModel + ): JSX.Element { + return ( + + Reviewers:  +
+ + } + line2={ + + {tableItem.gitPullRequest.reviewers.map((reviewer, i) => { + // @ts-ignore + return ( + + {reviewer.displayName} + + ); + })} + + } + /> + ); + } + private renderDateColumn( rowIndex: number, columnIndex: number,