Skip to content

Commit 41a71f7

Browse files
committed
add detail task, task, mapper for color priority
1 parent 42b4ca2 commit 41a71f7

12 files changed

Lines changed: 598 additions & 107 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Информация для приоритетов
3+
*
4+
* @format
5+
* @field name - выбор в выпадающем списке
6+
* @field color - цвет для определенного типа приоритета
7+
* @field priorityType - значение (от 0 до 5), которое соотносится на бэке
8+
*/
9+
10+
export const priorityInfoList = [
11+
{
12+
id: 0,
13+
name: "бэклог",
14+
color: "#322299",
15+
priorityType: 0,
16+
},
17+
{
18+
id: 1,
19+
name: "в ближайшие часы",
20+
color: "#A63838",
21+
priorityType: 1,
22+
},
23+
{
24+
id: 2,
25+
name: "высокий",
26+
color: "#D48A9E",
27+
priorityType: 2,
28+
},
29+
{
30+
id: 3,
31+
name: "средний",
32+
color: "#E5B25D",
33+
priorityType: 3,
34+
},
35+
{
36+
id: 4,
37+
name: "низкий",
38+
color: "#297373",
39+
priorityType: 4,
40+
},
41+
{
42+
id: 5,
43+
name: "улучшение",
44+
color: "#88C9A1",
45+
priorityType: 5,
46+
},
47+
];

projects/social_platform/src/app/office/projects/detail/kanban-board/kanban-board.component.html

Lines changed: 171 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<!-- @format -->
22

33
<div class="kanban">
4-
<div class="kanban__wrapper">
4+
<div class="kanban__wrapper" (clickOutside)="closeDetailTask()">
55
@if (projectBoardInfo(); as projectBoardInfo) {
66
<app-kanban-board-sidebar [projectBoardInfo]="projectBoardInfo"></app-kanban-board-sidebar>
77
} @for (boardColumn of boardColumns(); track $index) {
88
<div class="kanban__column">
9-
<div class="kanban__column--header">
9+
<div class="kanban__column-header">
1010
<p class="text-body-12">{{ boardColumn.tasks.length }}</p>
11-
<div class="kanban__column--locked">
11+
<div class="kanban__column-locked">
1212
@if (boardColumn.locked) {
1313
<i appIcon icon="lock" appSquare="8"></i>
1414
}
@@ -19,57 +19,185 @@
1919

2020
<div class="kanban__tasks">
2121
@for (task of boardColumn.tasks; track task.id) {
22-
<div
23-
class="kanban__task"
24-
[style.background-color]="task.backgroundColor ?? 'var(--light-white)'"
22+
<app-kanban-task (click)="openDetailTask(task.id)" [task]="task"></app-kanban-task>
23+
}
24+
</div>
25+
26+
<i class="kanban__column--add-task" appIcon icon="plus" appSquare="10"></i>
27+
</div>
28+
} @if (isTaskDetailOpen()) {
29+
<div class="kanban__detail">
30+
<div class="kanban__detail-top">
31+
<app-button size="medium" customTypographyClass="text-body-12"
32+
>прикрепить результат</app-button
2533
>
26-
<div class="kanban__task--left">
27-
<span class="text-body-10">{{ task.title }}</span>
28-
<p class="text-body-6">{{ task.description ?? "" }}</p>
29-
<div class="kanban__task--mid">
30-
<div class="kanban__task--people">
31-
<div class="kanban__task--responsible">
32-
<i appIcon icon="person" appSquare="6"></i>
33-
<app-avatar [size]="12" [url]=""></app-avatar>
34-
</div>
35-
36-
<div class="kanban__task--performers">
37-
<i appIcon icon="people-bold" appSquare="6"></i>
38-
<app-avatar [size]="12" [url]=""></app-avatar>
39-
</div>
40-
</div>
41-
42-
<div class="kanban__task--icons">
43-
<i appIcon icon="attach" appSquare="8" style="color: var(--grey-for-text)"></i>
44-
<i appIcon icon="phone" appSquare="6"></i>
45-
</div>
34+
<div class="kanban__detail-top-menu">
35+
<i appIcon icon="phone" appSquare="15"></i>
36+
<div class="kanban__detail-priority"></div>
37+
</div>
38+
</div>
39+
40+
<div class="kanban__detail-general">
41+
<p class="text-body-14">Настроить процессы</p>
42+
<!-- TODO: после баллов добавить сюда баллы -->
43+
</div>
44+
45+
<div class="kanban__detail-info" style="justify-content: flex-end">
46+
<div class="kanban__detail-info-name" style="align-items: center">
47+
<app-avatar [size]="10" [url]=""></app-avatar>
48+
<p class="text-body-6">Федор Е</p>
49+
</div>
50+
51+
<p class="text-body-6">12.10.2025 21:00</p>
52+
</div>
53+
54+
<div class="kanban__detail-info">
55+
<div class="kanban__detail-info-wrapper">
56+
<div class="kanban__detail-info-name">
57+
<i appIcon icon="person" appSquare="10"></i>
58+
<h6 class="text-body-10">ответственный</h6>
59+
</div>
60+
61+
<div class="kanban__detail-info-name">
62+
<app-avatar [size]="20" [url]=""></app-avatar>
63+
<p class="text-body-10">Екатерина Ш</p>
64+
</div>
65+
</div>
66+
67+
<div class="kanban__detail-info-wrapper">
68+
<div class="kanban__detail-info-name">
69+
<i appIcon icon="people-bold" appSquare="10"></i>
70+
<h6 class="text-body-10">исполнители</h6>
71+
</div>
72+
73+
<div class="kanban__detail-info-name">
74+
<app-avatar [size]="20" [url]=""></app-avatar>
75+
</div>
76+
</div>
77+
78+
<div class="kanban__detail-info-wrapper">
79+
<div class="kanban__detail-info-name--date">
80+
<i appIcon icon="calendar" appSquare="10"></i>
81+
<p class="text-body-10">начало</p>
82+
</div>
83+
84+
<div class="kanban__detail-info-name">
85+
<p class="text-body-10">20.10.25</p>
86+
87+
<div class="badge">
88+
<p class="text-body-6">началась</p>
4689
</div>
90+
</div>
91+
</div>
92+
93+
<div class="kanban__detail-info-wrapper">
94+
<div class="kanban__detail-info-name--date">
95+
<i appIcon icon="calendar" appSquare="10"></i>
96+
<p class="text-body-10">дедлайн</p>
97+
</div>
4798

48-
<div class="kanban__task--bottom">
49-
<div class="kanban__task--deadline">
50-
<i appIcon icon="calendar" appSquare="6"></i>
51-
<p class="text-body-6" [style.margin-top]="task.description ? '1px' : '2px'">
52-
04.04.2026
53-
</p>
54-
</div>
99+
<div class="kanban__detail-info-name">
100+
<p class="text-body-10">25.10.25</p>
55101

56-
<app-tag>#аналитика</app-tag>
57-
<app-tag color="soft">выход на рынок для чего</app-tag>
102+
<div class="badge">
103+
<p class="text-body-6">10 дней</p>
58104
</div>
59105
</div>
106+
</div>
107+
</div>
60108

61-
<div class="kanban__task--right">
62-
<div
63-
class="kanban__task--priority"
64-
[style.background-color]="task?.priority?.background ?? 'var(--red)'"
65-
></div>
66-
<i appIcon icon="arrow-wide" appSquare="8"></i>
109+
<div class="kanban__detail-info">
110+
<div class="kanban__detail-info-wrapper">
111+
<div class="kanban__detail-info-name">
112+
<i appIcon icon="hastag" appSquare="10"></i>
113+
<p class="text-body-10">тег</p>
67114
</div>
115+
116+
<app-tag color="soft">#аналитика</app-tag>
117+
</div>
118+
119+
<div class="kanban__detail-info-wrapper">
120+
<div class="kanban__detail-info-name">
121+
<i appIcon icon="goal" appSquare="10"></i>
122+
<p class="text-body-10">цель</p>
123+
</div>
124+
125+
<app-tag color="soft">выход на рынок для...</app-tag>
126+
</div>
127+
128+
<div class="kanban__detail-info-wrapper" style="flex-grow: 1">
129+
<div class="kanban__detail-info-name">
130+
<i appIcon icon="squiz" appSquare="10"></i>
131+
<p class="text-body-10">навыки</p>
132+
</div>
133+
134+
<app-tag color="complete">word</app-tag>
68135
</div>
69-
}
70136
</div>
71137

72-
<i class="kanban__column--add-task" appIcon icon="plus" appSquare="10"></i>
138+
<div class="kanban__detail-description">
139+
<!-- @if (taskDetail.description) { -->
140+
<div class="text-body-10 about__text">
141+
<p
142+
#descEl
143+
[innerHTML]="
144+
'Разобраться с настройками nginx.conf. Выяснилось, что мы просто бесполезно гоняем трафик из одного сервиса в другой без какой-либо реальной выгоды. Надо настроить базовый nginx.conf на сервере, который бы отвечал за сервис без его дублирующей реализации в контейнере Логика частична описана в задаче Пользователь должен сперва зарегистрироваться в программе и только потом сможет добавлять проект...'
145+
| parseLinks
146+
| parseBreaks
147+
"
148+
></p>
149+
@if (descriptionExpandable) {
150+
<div
151+
class="read-more text-body-10"
152+
(click)="onExpandDescription(descEl, 'expanded', readFullDescription)"
153+
>
154+
{{ readFullDescription ? "cкрыть" : "подробнее" }}
155+
</div>
156+
}
157+
</div>
158+
<!-- } -->
159+
</div>
160+
161+
<div class="kanban__detail-files">
162+
<app-file-item [name]="''" [link]="''" [type]="''" [size]="12"></app-file-item>
163+
</div>
164+
165+
<div class="kanban__detail-comments">
166+
<form class="form">
167+
<!-- [formGroup]="messageForm" (ngSubmit)="onSubmit()" -->
168+
<app-input
169+
size="big"
170+
formControlName="text"
171+
[hasBorder]="false"
172+
class="form__input text-body-12"
173+
autosize
174+
placeholder="сегодня был хороший день"
175+
></app-input>
176+
<!-- (paste)="onPaste($event)" -->
177+
<!-- (keydown.meta.enter)="onSubmit()" -->
178+
<i appIcon icon="send" appSquare="12" class="form__send"></i>
179+
180+
<div class="form__files">
181+
@for (f of filesList; track f.id) {
182+
<app-file-upload-item
183+
[name]="f.tempFile.name"
184+
[type]="f.tempFile.type"
185+
[size]="f.tempFile.size"
186+
[loading]="f.loading"
187+
[error]="f.error"
188+
></app-file-upload-item>
189+
<!-- (delete)="onDeleteFile(f.id)" -->
190+
}
191+
</div>
192+
<div class="footer">
193+
<label class="footer__attach">
194+
<i appIcon icon="attach" appSquare="12"></i>
195+
<input type="file" accept="*/*" multiple />
196+
<!-- (change)="onInputFiles($event)" -->
197+
</label>
198+
</div>
199+
</form>
200+
</div>
73201
</div>
74202
}
75203
</div>

0 commit comments

Comments
 (0)