Skip to content

Commit d4cd5fb

Browse files
committed
Fix frontend logic to propagate revised forecast amount to forecast amount in budget section
1 parent 01b20e2 commit d4cd5fb

File tree

4 files changed

+54
-4
lines changed

4 files changed

+54
-4
lines changed

client/wfprev-war/src/main/angular/src/app/components/edit-project/project-fiscals/project-fiscals.component.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CommonModule, CurrencyPipe } from '@angular/common';
2-
import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
2+
import { ChangeDetectorRef, Component, effect, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
33
import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
44
import { MatButtonModule } from '@angular/material/button';
55
import { MatDialog } from '@angular/material/dialog';
@@ -32,6 +32,7 @@ import { TimestampComponent } from 'src/app/components/shared/timestamp/timestam
3232
import { TextareaComponent } from 'src/app/components/shared/textarea/textarea.component';
3333
import { capitalizeFirstLetter } from 'src/app/utils';
3434
import { PerformanceUpdatesComponent } from "../wfprev-performance-update/wfprev-performance-updates.component";
35+
import { ProjectFiscalsSignalService } from 'src/app/services/project-fiscals-signal.service';
3536

3637
@Component({
3738
selector: 'wfprev-project-fiscals',
@@ -84,6 +85,7 @@ export class ProjectFiscalsComponent implements OnInit, CanComponentDeactivate {
8485
readonly CodeTableKeys = CodeTableKeys;
8586
readonly FiscalStatuses = FiscalStatuses;
8687
isSavingFiscal: boolean[] = [];
88+
private initialized = false;
8789

8890
constructor(
8991
private route: ActivatedRoute,
@@ -94,8 +96,20 @@ export class ProjectFiscalsComponent implements OnInit, CanComponentDeactivate {
9496
private readonly snackbarService: MatSnackBar,
9597
public readonly dialog: MatDialog,
9698
public cd: ChangeDetectorRef,
97-
private readonly tokenService: TokenService
98-
) { }
99+
private readonly tokenService: TokenService,
100+
private readonly events: ProjectFiscalsSignalService
101+
) {
102+
effect(() => {
103+
this.events.reloadFiscals();
104+
105+
if(this.initialized) {
106+
this.loadProjectFiscals();
107+
} else {
108+
this.initialized = true;
109+
}
110+
111+
});
112+
}
99113

100114
ngOnInit(): void {
101115
this.loadCodeTables();

client/wfprev-war/src/main/angular/src/app/components/edit-project/wfprev-performance-update/wfprev-performance-updates.component.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
1212
import { forkJoin } from 'rxjs';
1313
import { CodeTableServices } from 'src/app/services/code-table-services';
1414
import { CodeTableNames } from 'src/app/utils/constants';
15+
import { ProjectFiscalsSignalService } from 'src/app/services/project-fiscals-signal.service';
1516

1617
@Component({
1718
selector: 'wfprev-performance-updates',
@@ -56,6 +57,7 @@ export class PerformanceUpdatesComponent implements OnChanges {
5657
constructor(
5758
private readonly projectService: ProjectService,
5859
private readonly codeTableService: CodeTableServices,
60+
private readonly projectFiscalsSignalService: ProjectFiscalsSignalService,
5961
private readonly route: ActivatedRoute,
6062
private dialog: MatDialog,
6163
private readonly snackbarService: MatSnackBar
@@ -128,7 +130,10 @@ export class PerformanceUpdatesComponent implements OnChanges {
128130
});
129131
dialogRef.afterClosed().subscribe(result => {
130132
if (result) {
131-
this.updates = [result, ...this.updates]
133+
this.updates = [result, ...this.updates];
134+
if ((result as PerformanceUpdate).forecastAdjustmentAmount !== 0) {
135+
this.projectFiscalsSignalService.trigger();
136+
}
132137
} else {
133138
console.log('Dialog was closed without data');
134139
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { TestBed } from '@angular/core/testing';
2+
3+
import { ProjectFiscalsSignalService } from './project-fiscals-signal.service';
4+
5+
describe('ProjectFiscalsSignalService', () => {
6+
let service: ProjectFiscalsSignalService;
7+
8+
beforeEach(() => {
9+
TestBed.configureTestingModule({});
10+
service = TestBed.inject(ProjectFiscalsSignalService);
11+
});
12+
13+
it('should be created', () => {
14+
expect(service).toBeTruthy();
15+
});
16+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Injectable, signal } from '@angular/core';
2+
3+
@Injectable({
4+
providedIn: 'root'
5+
})
6+
export class ProjectFiscalsSignalService {
7+
8+
reloadFiscals = signal(false);
9+
10+
constructor() { }
11+
12+
trigger() {
13+
this.reloadFiscals.update(v => !v);
14+
}
15+
}

0 commit comments

Comments
 (0)