11 | {visibleAssignees.map((assignee, index) => (
12 |
17 |
18 |
19 |
20 | {assignee.username.slice(0, 2).toUpperCase()}
21 |
22 |
23 |
24 | ))}
25 | {remainingCount > 0 && (
26 |
27 |
28 |
29 | +{remainingCount}
30 |
31 |
32 |
33 | )}
34 |
35 | );
36 | }
37 |
--------------------------------------------------------------------------------
/apps/server/src/project/dto/task/task-details-response.dto.ts:
--------------------------------------------------------------------------------
1 | import { Task } from '@/project/entity/task.entity';
2 | import { SprintDetailsResponse } from '@/project/dto/sprint/sprint-details-response.dto';
3 | import { AssigneeDetailsResponse } from '@/project/dto/assignee/assignee-details-response.dto';
4 | import { LabelDetailsResponse } from '@/project/dto/label/label-details-response.dto';
5 | import { CreateSubTaskResponse } from '@/project/dto/subtask/create-subTask-response.dto';
6 |
7 | export class TaskDetailsResponse {
8 | id: number;
9 |
10 | title: string;
11 |
12 | description: string;
13 |
14 | priority: number;
15 |
16 | estimate: number;
17 |
18 | sprint: SprintDetailsResponse;
19 |
20 | assignees: AssigneeDetailsResponse[];
21 |
22 | labels: LabelDetailsResponse[];
23 |
24 | subtasks: CreateSubTaskResponse[];
25 |
26 | constructor(task: Task) {
27 | this.id = task.id;
28 | this.title = task.title;
29 | this.description = task.description;
30 | this.priority = task.priority;
31 | this.estimate = task.estimate;
32 | }
33 |
34 | setSprint(sprintDetails: SprintDetailsResponse) {
35 | this.sprint = sprintDetails;
36 | }
37 |
38 | setAssignees(assigneeDetails: AssigneeDetailsResponse[]) {
39 | this.assignees = assigneeDetails;
40 | }
41 |
42 | setLabels(labelDetails: LabelDetailsResponse[]) {
43 | this.labels = labelDetails;
44 | }
45 |
46 | setSubtasks(subtaskDetails: CreateSubTaskResponse[]) {
47 | this.subtasks = subtaskDetails;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/apps/client/src/components/ui/avatar.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import * as AvatarPrimitive from '@radix-ui/react-avatar';
3 |
4 | import { cn } from '@/lib/utils';
5 |
6 | const Avatar = React.forwardRef<
7 | React.ElementRef