Skip to content

Commit a148198

Browse files
committed
fix rating-card redoRating & additoinal step info if no additional fields
1 parent 17d6055 commit a148198

9 files changed

Lines changed: 87 additions & 23 deletions

File tree

projects/social_platform/src/app/office/features/detail/detail.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ export class DeatilComponent implements OnInit, OnDestroy {
152152

153153
get isUserExpert() {
154154
const type = this.userType();
155-
return type !== undefined && type !== 1;
155+
return type !== undefined && type === 3;
156156
}
157157

158158
// Методы для управления состоянием ошибок через сервис

projects/social_platform/src/app/office/program/shared/rating-card/rating-card.component.html

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,21 @@
7979
size="big"
8080
[loader]="submitLoading() || confirmLoading()"
8181
[color]="showRatedWithEdit ? 'green' : 'primary'"
82-
[disabled]="showConfirmedState"
83-
[appearance]="showConfirmedState ? 'outline' : 'inline'"
82+
[disabled]="programDateFinished()"
83+
[appearance]="programDateFinished() ? 'outline' : 'inline'"
8484
[style.opacity]="showConfirmedState ? '0.5' : '1'"
8585
(click)="showRatingForm ? confirmRateProject() : null"
8686
>
87-
{{ showRatingForm ? "оценить проект" : "проект оценен" }}
87+
{{
88+
programDateFinished()
89+
? "проект оценен"
90+
: showRatingForm
91+
? "оценить проект"
92+
: "проект оценен"
93+
}}
8894
</app-button>
8995

90-
@if (showRatedWithEdit) {
96+
@if (showRatedWithEdit && !programDateFinished()) {
9197
<app-button
9298
appearance="outline"
9399
size="small"
@@ -111,14 +117,27 @@
111117
<i appIcon icon="check" appSquare="60"></i>
112118
</div>
113119

114-
<app-button
115-
size="big"
116-
class="cancel__button"
117-
customTypographyClass="text-body-12"
118-
(click)="confirmRateProject()"
119-
>
120-
подтверждаю
121-
</app-button>
120+
<div class="cancel__buttons">
121+
<app-button
122+
size="big"
123+
class="cancel__button"
124+
customTypographyClass="text-body-12"
125+
(click)="confirmRateProject()"
126+
style="width: 100%"
127+
>
128+
подтверждаю
129+
</app-button>
130+
131+
<app-button
132+
size="big"
133+
class="cancel__button"
134+
customTypographyClass="text-body-12"
135+
(click)="showConfirmRateModal.set(false)"
136+
style="width: 100%"
137+
>
138+
исправить оценку
139+
</app-button>
140+
</div>
122141
</div>
123142
</app-modal>
124143
</div>

projects/social_platform/src/app/office/program/shared/rating-card/rating-card.component.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,4 +191,12 @@
191191
color: var(--dark-grey);
192192
text-align: center;
193193
}
194+
195+
&__buttons {
196+
display: flex;
197+
flex-direction: column;
198+
gap: 10px;
199+
align-items: center;
200+
justify-content: center;
201+
}
194202
}

projects/social_platform/src/app/office/program/shared/rating-card/rating-card.component.ts

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,16 @@ import { CommonModule } from "@angular/common";
1919
import { ProjectRate } from "@office/program/models/project-rate";
2020
import { ControlErrorPipe, ParseBreaksPipe, ParseLinksPipe } from "projects/core";
2121
import { expandElement } from "@utils/expand-element";
22-
import { debounceTime, finalize, fromEvent, map, Observable, Subscription } from "rxjs";
22+
import {
23+
debounceTime,
24+
filter,
25+
finalize,
26+
fromEvent,
27+
map,
28+
Observable,
29+
Subscription,
30+
tap,
31+
} from "rxjs";
2332
import { BreakpointObserver } from "@angular/cdk/layout";
2433
import { IndustryService } from "@office/services/industry.service";
2534
import { ProjectRatingComponent } from "@office/features/project-rating/project-rating.component";
@@ -28,6 +37,7 @@ import { ProjectRatingService } from "@office/program/services/project-rating.se
2837
import { RouterLink } from "@angular/router";
2938
import { TagComponent } from "@ui/components/tag/tag.component";
3039
import { ModalComponent } from "@ui/components/modal/modal.component";
40+
import { ProgramDataService } from "@office/program/services/program-data.service";
3141

3242
/**
3343
* Компонент карточки оценки проекта
@@ -92,6 +102,7 @@ export class RatingCardComponent implements OnInit, AfterViewInit, OnDestroy {
92102
constructor(
93103
public industryService: IndustryService,
94104
private projectRatingService: ProjectRatingService,
105+
private readonly programDataService: ProgramDataService,
95106
private breakpointObserver: BreakpointObserver,
96107
private cdRef: ChangeDetectorRef
97108
) {}
@@ -128,6 +139,8 @@ export class RatingCardComponent implements OnInit, AfterViewInit, OnDestroy {
128139

129140
isProjectCriterias = signal(0);
130141

142+
programDateFinished = signal(false);
143+
131144
desktopMode$: Observable<boolean> = this.breakpointObserver
132145
.observe("(min-width: 920px)")
133146
.pipe(map(result => result.matches));
@@ -140,6 +153,19 @@ export class RatingCardComponent implements OnInit, AfterViewInit, OnDestroy {
140153
this.projectConfirmed.set(isScored);
141154
this.projectRated.set(isScored);
142155
}
156+
157+
const program$ = this.programDataService.program$
158+
.pipe(
159+
filter(program => !!program),
160+
tap(program => {
161+
if (program && program.datetimeFinished) {
162+
this.programDateFinished.set(Date.now() > Date.parse(program.datetimeFinished));
163+
}
164+
})
165+
)
166+
.subscribe();
167+
168+
this.subscriptions$().push(program$);
143169
}
144170

145171
ngAfterViewInit(): void {
@@ -198,24 +224,23 @@ export class RatingCardComponent implements OnInit, AfterViewInit, OnDestroy {
198224
}
199225

200226
redoRating(): void {
201-
if (!this.projectConfirmed()) {
202-
this.projectRated.set(false);
203-
}
227+
this.projectRated.set(false);
228+
this.projectConfirmed.set(false);
204229
}
205230

206231
get canEdit(): boolean {
207-
return !this.projectConfirmed();
232+
return !this.programDateFinished();
208233
}
209234

210235
get showRatingForm(): boolean {
211236
return !this.projectRated() && this.canEdit;
212237
}
213238

214239
get showRatedWithEdit(): boolean {
215-
return this.projectRated() && !this.projectConfirmed();
240+
return (this.projectRated() || this.projectConfirmed()) && this.canEdit;
216241
}
217242

218243
get showConfirmedState(): boolean {
219-
return this.projectConfirmed();
244+
return this.projectConfirmed() && !this.canEdit;
220245
}
221246
}

projects/social_platform/src/app/office/projects/edit/edit.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ <h1 class="project__title">редактировать проект</h1>
7676
<app-project-additional-step
7777
#additionalStepComponent
7878
style="width: 100%"
79+
[isProjectAssignToProgram]="isProjectAssignToProgram"
7980
></app-project-additional-step>
8081
}
8182
</div>

projects/social_platform/src/app/office/projects/edit/edit.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ export class ProjectEditComponent implements OnInit, AfterViewInit, OnDestroy {
214214

215215
// Маркер того является ли проект привязанный к конкурсной программе
216216
isCompetitive = false;
217+
isProjectAssignToProgram = false;
217218

218219
// Маркер что проект привязан
219220
isProjectBoundToProgram = false;
@@ -660,6 +661,7 @@ export class ProjectEditComponent implements OnInit, AfterViewInit, OnDestroy {
660661

661662
if (project.partnerProgram) {
662663
this.isCompetitive = project.partnerProgram.canSubmit;
664+
this.isProjectAssignToProgram = !!project.partnerProgram.programId;
663665

664666
this.projectAdditionalService.initializeAdditionalForm(
665667
project.partnerProgram?.programFields,

projects/social_platform/src/app/office/projects/edit/shared/project-additional-step/project-additional-step.component.html

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,14 @@
9292
</div>
9393
} }
9494
</fieldset>
95-
} } @else {
95+
} } @else { @if (isProjectAssignToProgram) {
96+
<div class="project__additional--no-items">
97+
<p class="text-body-12">
98+
проект привязан к программе, но дополнительных полей для заполнения нет
99+
</p>
100+
<i appIcon icon="info" appSquare="20" class="project__no-items"></i>
101+
</div>
102+
} @else {
96103
<div class="project__additional--no-items">
97104
<p class="text-body-12">пока ты не участвуешь ни в одной программе</p>
98105
<a routerLink="/office/program/all">
@@ -112,7 +119,7 @@
112119

113120
<i appIcon icon="sad-smile" appSquare="20" class="project__no-items"></i>
114121
</div>
115-
}
122+
} }
116123
</div>
117124
</div>
118125
</div>

projects/social_platform/src/app/office/projects/edit/shared/project-additional-step/project-additional-step.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
}
9696

9797
@include responsive.apply-desktop {
98-
width: 60%;
98+
width: 70%;
9999

100100
::ng-deep {
101101
app-input {

projects/social_platform/src/app/office/projects/edit/shared/project-additional-step/project-additional-step.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ export class ProjectAdditionalStepComponent implements OnInit {
4747

4848
readonly errorMessage = ErrorMessage;
4949

50+
@Input() isProjectAssignToProgram?: boolean;
51+
5052
ngOnInit(): void {
5153
// Инициализация уже должна быть выполнена в родительском компоненте
5254
this.cdRef.detectChanges();

0 commit comments

Comments
 (0)