Merge pull request #89 in TEA/mina-sidor-fa-web from feature/TV-555 to develop
Squashed commit of the following: commit a189e60d3c43827fe6ee67c869d0b2b12ce3e932 Merge: 5f93a8bca8160fAuthor: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Tue Sep 14 16:45:16 2021 +0200 Merge branch 'develop' into feature/TV-555 commit 5f93a8b88aae3d3904ee0324e0ce2bd0d1ad6cd9 Merge: 7ac534a2a37566Author: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Mon Sep 13 16:02:47 2021 +0200 Merge branch 'develop' into feature/TV-555 commit 7ac534ad7644daf4e7e504b6265dae485ab75b23 Merge: 53b55aa502614dAuthor: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Mon Sep 13 15:25:20 2021 +0200 Merge branch 'develop' into feature/TV-555 commit 53b55aa432d86460f34b959f2086d0121d078dad Author: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Sun Sep 12 15:10:27 2021 +0200 feat(gemensam-planering):refaktorerade reportsFormSelect så att den är generisk, samma fÃalla rapporter commit c4c30430f6e3633bc5a1074e856b42622e2bf1b4 Author: Chingiz <chingiz.esenbaev@arbetsformedlingen.se> Date: Sun Sep 12 13:38:52 2021 +0200 feat(gemensam-planering):route och sida för gemensam planering
This commit is contained in:
@@ -17,6 +17,14 @@ const routes: Routes = [
|
||||
data: { title: 'Skapa rapport' },
|
||||
loadChildren: () => import('./pages/deltagare-report/deltagare-report.module').then(m => m.DeltagareReportModule),
|
||||
},
|
||||
{
|
||||
path: 'planering/:deltagareId',
|
||||
data: { title: 'Skapa gemensam planering' },
|
||||
loadChildren: () =>
|
||||
import('./pages/deltagare-report/deltagare-gemensam-planering/deltagare-gemensam-planering.module').then(
|
||||
m => m.DeltagareGemensamPlaneringModule
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
|
||||
@@ -195,18 +195,18 @@
|
||||
<p>Här kan du skicka rapporter om deltagaren till arbetsförmedlingen.</p>
|
||||
<form [formGroup]="reportPickerFormGroup">
|
||||
<digi-ng-form-select
|
||||
[formControlName]="avvikelseFormControlName"
|
||||
[formControlName]="reportsFormControlName"
|
||||
afLabel="Välj rapporttyp"
|
||||
afPlaceholder="Välj rapporttyp"
|
||||
[afSelectItems]="selectableReportTypes"
|
||||
[afDisableValidStyle]="true"
|
||||
[afRequired]="true"
|
||||
[afInvalid]="avvikelseFormControl.invalid && avvikelseFormControl.touched"
|
||||
[afInvalid]="reportsFormControl.invalid && reportsFormControl.touched"
|
||||
>
|
||||
</digi-ng-form-select>
|
||||
<digi-form-validation-message
|
||||
af-variation="error"
|
||||
*ngIf="avvikelseFormControl.invalid && avvikelseFormControl.touched"
|
||||
*ngIf="reportsFormControl.invalid && reportsFormControl.touched"
|
||||
>
|
||||
Du måste välja en rapporttyp
|
||||
</digi-form-validation-message>
|
||||
@@ -215,8 +215,7 @@
|
||||
<div class="deltagare-card__cta-wrapper">
|
||||
<digi-ng-link-button
|
||||
afText="Skapa ny rapport"
|
||||
[afRoute]="avvikelseFormControl.valid ? ['/deltagare/rapportera', deltagare.id] : null"
|
||||
(click)="onFormSubmitted($event)"
|
||||
(click)="onFormSubmitted($event, reportsFormControl.value, deltagare.id)"
|
||||
></digi-ng-link-button>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { FormSelectItem } from '@af/digi-ng/_form/form-select';
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { IconType } from '@msfa-enums/icon-type.enum';
|
||||
import { Deltagare } from '@msfa-models/deltagare.model';
|
||||
import { ReportsData } from '@msfa-models/reports.model';
|
||||
@@ -20,14 +20,17 @@ export class DeltagareCardComponent {
|
||||
deltagare$: Observable<Deltagare> = this.deltagareService.deltagare$;
|
||||
reportsData$: Observable<ReportsData> = this.deltagareService.reportsData$;
|
||||
|
||||
readonly avvikelseFormControlName = 'avvikelse';
|
||||
readonly reportsFormControlName = 'reports';
|
||||
|
||||
reportPickerFormGroup: FormGroup = this.formBuilder.group({
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
avvikelse: this.formBuilder.control('', [Validators.required]),
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
reports: this.formBuilder.control('', [Validators.required]),
|
||||
});
|
||||
|
||||
selectableReportTypes: Array<FormSelectItem> = [{ name: 'Avvikelse', value: 'avvikelse' }];
|
||||
selectableReportTypes: Array<FormSelectItem> = [
|
||||
{ name: 'Avvikelse', value: 'avvikelse' },
|
||||
{ name: 'Gemensam Planering', value: 'planering' },
|
||||
];
|
||||
selectedReportType: FormSelectItem;
|
||||
|
||||
firstVisibleWorkExperiences$: Observable<WorkExperience[]> = this.deltagare$.pipe(
|
||||
@@ -43,12 +46,14 @@ export class DeltagareCardComponent {
|
||||
constructor(
|
||||
private activatedRoute: ActivatedRoute,
|
||||
private deltagareService: DeltagareService,
|
||||
private formBuilder: FormBuilder) {
|
||||
private formBuilder: FormBuilder,
|
||||
private router: Router
|
||||
) {
|
||||
this.deltagareService.setCurrentDeltagareId(this.activatedRoute.snapshot.params.deltagareId);
|
||||
}
|
||||
|
||||
get avvikelseFormControl(): AbstractControl | null {
|
||||
return this.reportPickerFormGroup?.get(this.avvikelseFormControlName);
|
||||
get reportsFormControl(): AbstractControl | null {
|
||||
return this.reportPickerFormGroup?.get(this.reportsFormControlName);
|
||||
}
|
||||
|
||||
toggleAccordionExpanded(): void {
|
||||
@@ -59,18 +64,29 @@ export class DeltagareCardComponent {
|
||||
this.deltagareService.setPage(page);
|
||||
}
|
||||
|
||||
onFormSubmitted(event: Event): void {
|
||||
onFormSubmitted(event: Event, reportType: string, deltagareId: string): void {
|
||||
event.preventDefault();
|
||||
|
||||
this.avvikelseFormControl.markAsTouched();
|
||||
switch (reportType) {
|
||||
case 'planering':
|
||||
this.reportsFormControl.valid ? this.router.navigate(['/deltagare/planering', deltagareId]) : null;
|
||||
break;
|
||||
case 'avvikelse':
|
||||
this.reportsFormControl.valid ? this.router.navigate(['/deltagare/rapportera', deltagareId]) : null;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
this.reportsFormControl.markAsTouched();
|
||||
|
||||
if (!this.selectableReportTypes || this.reportPickerFormGroup.invalid) {
|
||||
return;
|
||||
}
|
||||
|
||||
const selectedReportType = this.selectableReportTypes.find(report => {
|
||||
return report.value === this.avvikelseFormControl.value;
|
||||
})
|
||||
return report.value === this.reportsFormControl.value;
|
||||
});
|
||||
|
||||
this.deltagareService.setReportType(selectedReportType);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<msfa-layout>
|
||||
<p>deltagare-gemensam-planering works!</p>
|
||||
</msfa-layout>
|
||||
@@ -0,0 +1,29 @@
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { LayoutComponent } from '@msfa-shared/components/layout/layout.component';
|
||||
import { DeltagareGemensamPlaneringComponent } from './deltagare-gemensam-planering.component';
|
||||
|
||||
describe('DeltagareGemensamPlaneringComponent', () => {
|
||||
let component: DeltagareGemensamPlaneringComponent;
|
||||
let fixture: ComponentFixture<DeltagareGemensamPlaneringComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareGemensamPlaneringComponent, LayoutComponent],
|
||||
imports: [RouterTestingModule, HttpClientTestingModule],
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(DeltagareGemensamPlaneringComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'msfa-deltagare-gemensam-planering',
|
||||
templateUrl: './deltagare-gemensam-planering.component.html',
|
||||
styleUrls: ['./deltagare-gemensam-planering.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class DeltagareGemensamPlaneringComponent {}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
|
||||
import { DeltagareGemensamPlaneringComponent } from './deltagare-gemensam-planering.component';
|
||||
|
||||
@NgModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [DeltagareGemensamPlaneringComponent],
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild([{ path: '', component: DeltagareGemensamPlaneringComponent }]),
|
||||
LayoutModule,
|
||||
],
|
||||
exports: [DeltagareGemensamPlaneringComponent],
|
||||
})
|
||||
export class DeltagareGemensamPlaneringModule {}
|
||||
Reference in New Issue
Block a user