Skip to content

Commit 8d5abb3

Browse files
authored
Merge pull request #2622 from bcgov/2475-add-chronology-entry
2475: Setup chronology backend, tab, and initial features
2 parents a33b1f3 + 8799b86 commit 8d5abb3

38 files changed

+1603
-17
lines changed

alcs-frontend/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

alcs-frontend/src/app/features/compliance-and-enforcement/compliance-and-enforcement.module.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import { PropertyComponent } from './property/property.component';
1919
import { ResponsiblePartiesComponent } from './responsible-parties/responsible-parties.component';
2020
import { SubmitterComponent } from './submitter/submitter.component';
2121
import { ComplianceAndEnforcementAssignDialogComponent } from './details/header/assign-dialog/assign-dialog.component';
22+
import { ComplianceAndEnforcementChronologyComponent } from './details/chronology/chronology.component';
23+
import { ComplianceAndEnforcementChronologyEntryComponent } from './details/chronology/entry/entry.component';
24+
import { ComplianceAndEnforcementChronologyEntryDocumentsComponent } from './details/chronology/entry/documents/documents.component';
2225

2326
export const detailsRoutes: (Route & { icon?: string; menuTitle?: string })[] = [
2427
{
@@ -83,6 +86,13 @@ export const detailsRoutes: (Route & { icon?: string; menuTitle?: string })[] =
8386
},
8487
],
8588
},
89+
{
90+
path: 'chronology',
91+
icon: 'view_timeline',
92+
menuTitle: 'Chronology',
93+
component: ComplianceAndEnforcementChronologyComponent,
94+
data: { editing: null },
95+
},
8696
];
8797

8898
const routes: Routes = [
@@ -115,6 +125,9 @@ const routes: Routes = [
115125
PropertyMapsComponent,
116126
ResponsiblePartiesDetailsComponent,
117127
ComplianceAndEnforcementAssignDialogComponent,
128+
ComplianceAndEnforcementChronologyComponent,
129+
ComplianceAndEnforcementChronologyEntryComponent,
130+
ComplianceAndEnforcementChronologyEntryDocumentsComponent,
118131
],
119132
imports: [SharedModule.forRoot(), RouterModule.forChild(routes), MatMomentDateModule, CommonModule, SharedModule],
120133
})
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<div class="actions">
2+
<button *ngIf="entries.length > 0" mat-stroked-button color="primary" type="button" [disabled]="hasDraftEntries()">
3+
Close Chronology
4+
</button>
5+
6+
<button mat-flat-button color="primary" type="button" (click)="createDraftEntry()" [disabled]="hasDraftEntries()">
7+
+ Chronology Entry
8+
</button>
9+
</div>
10+
11+
<div *ngIf="entries.length > 0; else noEntries" class="entries">
12+
<app-compliance-and-enforcement-chronology-entry
13+
*ngFor="let entry of entries"
14+
[entry]="entry"
15+
[datesInUse]="datesInUse(entry.uuid)"
16+
[editDisabled]="hasDraftEntries()"
17+
(edit)="setDraft($event)"
18+
(complete)="completeDraftEntry($event)"
19+
(delete)="confirmEntryDelete($event)"
20+
(addCorrespondence)="openAddCorrespondenceDialog($event)"
21+
>
22+
<app-compliance-and-enforcement-chronology-entry-documents
23+
*ngIf="entry.isDraft || entry?.documents?.length"
24+
[isDraft]="entry.isDraft"
25+
[documents]="entry.documents"
26+
(edit)="openEditDocumentDialog($event)"
27+
(delete)="confirmDocumentDelete($event)"
28+
/>
29+
</app-compliance-and-enforcement-chronology-entry>
30+
</div>
31+
32+
<ng-template #noEntries>
33+
<div class="no-entries">No chronology entries</div>
34+
</ng-template>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@use '../../../../../styles/colors';
2+
3+
.actions {
4+
display: flex;
5+
justify-content: flex-end;
6+
gap: 16px;
7+
margin-bottom: 24px;
8+
}
9+
10+
.entries {
11+
border: 1px solid colors.$grey;
12+
border-radius: 8px;
13+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
14+
}
15+
16+
.no-entries {
17+
text-align: center;
18+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { ComplianceAndEnforcementService } from '../../../../services/compliance-and-enforcement/compliance-and-enforcement.service';
2+
import { createMock, DeepMocked } from '@golevelup/ts-jest';
3+
import { ComponentFixture, TestBed } from '@angular/core/testing';
4+
import { ComplianceAndEnforcementChronologyComponent } from './chronology.component';
5+
import { ActivatedRoute, Router } from '@angular/router';
6+
import { ToastService } from '../../../../services/toast/toast.service';
7+
import { HttpClient } from '@angular/common/http';
8+
9+
describe('ComplianceAndEnforcementChronologyComponent', () => {
10+
let component: ComplianceAndEnforcementChronologyComponent;
11+
let fixture: ComponentFixture<ComplianceAndEnforcementChronologyComponent>;
12+
let mockActivatedRoute: DeepMocked<ActivatedRoute>;
13+
let mockRouter: DeepMocked<Router>;
14+
let mockService: DeepMocked<ComplianceAndEnforcementService>;
15+
let mockToastService: DeepMocked<ToastService>;
16+
let mockHttpClient: DeepMocked<HttpClient>;
17+
18+
beforeEach(async () => {
19+
mockActivatedRoute = createMock<ActivatedRoute>();
20+
mockRouter = createMock<Router>();
21+
mockService = createMock<ComplianceAndEnforcementService>();
22+
mockToastService = createMock<ToastService>();
23+
mockHttpClient = createMock<HttpClient>();
24+
25+
TestBed.configureTestingModule({
26+
imports: [],
27+
declarations: [ComplianceAndEnforcementChronologyComponent],
28+
providers: [
29+
{
30+
provide: ActivatedRoute,
31+
useValue: mockActivatedRoute,
32+
},
33+
{
34+
provide: Router,
35+
useValue: mockRouter,
36+
},
37+
{
38+
provide: ComplianceAndEnforcementService,
39+
useValue: mockService,
40+
},
41+
{
42+
provide: ToastService,
43+
useValue: mockToastService,
44+
},
45+
{
46+
provide: HttpClient,
47+
useValue: mockHttpClient,
48+
},
49+
],
50+
});
51+
52+
fixture = TestBed.createComponent(ComplianceAndEnforcementChronologyComponent);
53+
component = fixture.componentInstance;
54+
});
55+
56+
it('should create', () => {
57+
expect(component).toBeTruthy();
58+
});
59+
});

0 commit comments

Comments
 (0)