@@ -6,6 +6,7 @@ import uniqueId from 'lodash/uniqueId';
6
6
import { Flyout , Overlay } from '../../../../components/flyout' ;
7
7
import Tooltip from '../../../../components/tooltip' ;
8
8
import PlainButton from '../../../../components/plain-button' ;
9
+ import ReadableTime from '../../../../components/time/ReadableTime' ;
9
10
import messages from '../../../common/messages' ;
10
11
import AssigneeStatus from './AssigneeStatus' ;
11
12
import { TASK_NEW_APPROVED , TASK_NEW_REJECTED , TASK_NEW_COMPLETED , TASK_NEW_NOT_STARTED } from '../../../../constants' ;
@@ -19,20 +20,26 @@ type Props = {|
19
20
| } & InjectIntlProvidedProps ;
20
21
21
22
const statusMessages = {
22
- [ TASK_NEW_APPROVED ] : < FormattedMessage { ... messages . tasksFeedStatusAccepted } /> ,
23
- [ TASK_NEW_REJECTED ] : < FormattedMessage { ... messages . tasksFeedStatusRejected } /> ,
24
- [ TASK_NEW_COMPLETED ] : < FormattedMessage { ... messages . tasksFeedStatusCompleted } /> ,
25
- [ TASK_NEW_NOT_STARTED ] : < FormattedMessage { ... messages . tasksFeedStatusNotStarted } /> ,
23
+ [ TASK_NEW_APPROVED ] : messages . tasksFeedStatusAccepted ,
24
+ [ TASK_NEW_REJECTED ] : messages . tasksFeedStatusRejected ,
25
+ [ TASK_NEW_COMPLETED ] : messages . tasksFeedStatusCompleted ,
26
+ [ TASK_NEW_NOT_STARTED ] : null ,
26
27
} ;
27
28
28
- const AssigneeTooltipLabel = React . memo ( ( { user, status } ) => {
29
+ const Datestamp = ( { date } : { date : ISODate | Date } ) => {
30
+ return < ReadableTime timestamp = { new Date ( date ) . getTime ( ) } alwaysShowTime relativeThreshold = { 0 } /> ;
31
+ } ;
32
+
33
+ const AssignmentDetails = React . memo ( ( { user, status, completedAt, className } ) => {
29
34
const statusMessage = statusMessages [ status ] || null ;
30
35
return (
31
- < div className = "bcs-task-assignment-tooltip-text" >
32
- < div >
33
- < strong > { user . name } </ strong >
34
- </ div >
35
- { statusMessage && < div > { statusMessage } </ div > }
36
+ < div className = { className } >
37
+ < div className = "bcs-task-assignment-details-name" > { user . name } </ div >
38
+ { statusMessage && completedAt && (
39
+ < div className = "bcs-task-assignment-details-status" >
40
+ < FormattedMessage { ...statusMessage } values = { { dateTime : < Datestamp date = { completedAt } /> } } />
41
+ </ div >
42
+ ) }
36
43
</ div >
37
44
) ;
38
45
} ) ;
@@ -53,34 +60,44 @@ class Assignees extends React.Component<Props> {
53
60
const areThereMoreEntries = ! ! next_marker ; // there are more assignees in another page of results
54
61
const visibleAssignees = entries
55
62
. slice ( 0 , maxAvatars )
56
- . map ( ( { id : assignmentId , target, status : assigneeStatus } ) => {
63
+ . map ( ( { id, target, status, completed_at : completedAt } ) => {
57
64
return (
58
- < Tooltip key = { assignmentId } text = { < AssigneeTooltipLabel user = { target } status = { assigneeStatus } /> } >
65
+ < Tooltip
66
+ key = { id }
67
+ text = {
68
+ < AssignmentDetails
69
+ className = "bcs-task-assignment-tooltip"
70
+ user = { target }
71
+ status = { status }
72
+ completedAt = { completedAt }
73
+ />
74
+ }
75
+ >
59
76
< AssigneeStatus
60
- key = { assignmentId }
61
- status = { assigneeStatus }
77
+ status = { status }
62
78
user = { target }
63
79
getAvatarUrl = { getAvatarUrl }
64
80
data-testid = "task-assignment-status"
65
81
/>
66
82
</ Tooltip >
67
83
) ;
68
84
} ) ;
69
- const allAssignees = entries . map ( ( { id : assignmentId , target, status : assigneeStatus } ) => {
70
- const statusMessage = statusMessages [ assigneeStatus ] || null ;
85
+ const allAssignees = entries . map ( ( { id, target, status, completed_at : completedAt } ) => {
71
86
return (
72
- < li key = { assignmentId } className = "bcs-task-assignment-list-item" >
87
+ < li key = { id } className = "bcs-task-assignment-list-item" >
73
88
< AssigneeStatus
74
- status = { assigneeStatus }
89
+ status = { status }
75
90
className = "bcs-task-assignment-list-item-avatar"
76
91
user = { target }
77
92
getAvatarUrl = { getAvatarUrl }
78
93
data-testid = "task-assignment-status"
79
94
/>
80
- < div className = "bcs-task-assignment-list-item-details" >
81
- < div > { target . name } </ div >
82
- < div className = "bcs-task-assignment-list-item-status" > { statusMessage } </ div >
83
- </ div >
95
+ < AssignmentDetails
96
+ className = "bcs-task-assignment-list-item-details"
97
+ user = { target }
98
+ status = { status }
99
+ completedAt = { completedAt }
100
+ />
84
101
</ li >
85
102
) ;
86
103
} ) ;
0 commit comments