-
{{ appStateService.totalAnalysedPages | number }}
+
{{ stats.totalAnalyzedPages | number }}
@@ -18,7 +18,7 @@
-
{{ appStateService.totalPeople }}
+
{{ stats.totalPeople }}
diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts
index dfaf1c60a..a8cc96cc8 100644
--- a/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts
+++ b/apps/red-ui/src/app/modules/dossier/screens/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts
@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { DoughnutChartConfig } from '@shared/components/simple-doughnut-chart/simple-doughnut-chart.component';
-import { AppStateService } from '@state/app-state.service';
import { FilterService } from '@iqser/common-ui';
+import { DossiersService } from '../../services/dossiers.service';
@Component({
selector: 'redaction-dossiers-listing-details',
@@ -13,5 +13,5 @@ export class DossiersListingDetailsComponent {
@Input() dossiersChartData: DoughnutChartConfig[];
@Input() documentsChartData: DoughnutChartConfig[];
- constructor(readonly appStateService: AppStateService, readonly filterService: FilterService) {}
+ constructor(readonly filterService: FilterService, readonly dossiersService: DossiersService) {}
}
diff --git a/apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts b/apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts
index bb948ad79..d90bbf2f3 100644
--- a/apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts
+++ b/apps/red-ui/src/app/modules/dossier/services/dossiers.service.ts
@@ -1,6 +1,6 @@
import { Injectable, Injector } from '@angular/core';
import { DossierRequest, IDossier } from '@redaction/red-ui-http';
-import { EntitiesService, List, QueryParam } from '@iqser/common-ui';
+import { EntitiesService, List, QueryParam, RequiredParam, Validate } from '@iqser/common-ui';
import { Dossier } from '@state/model/dossier';
import { filter, map } from 'rxjs/operators';
import { TEMPORARY_INJECTOR } from './injector';
@@ -56,7 +56,8 @@ export class DossiersService extends EntitiesService
{
return dossierId ? super._getOne([dossierId]) : super.getAll();
}
- createOrUpdate(dossier: DossierRequest): Promise {
+ @Validate()
+ createOrUpdate(@RequiredParam() dossier: DossierRequest): Promise {
return this._post(dossier).toPromise();
}
@@ -64,11 +65,13 @@ export class DossiersService extends EntitiesService {
return this.getAll('deleted-dossiers').toPromise();
}
- restore(dossierIds: List): Promise {
+ @Validate()
+ restore(@RequiredParam() dossierIds: List): Promise {
return this._post(dossierIds, 'deleted-dossiers/restore').toPromise();
}
- hardDelete(dossierIds: List): Promise {
+ @Validate()
+ hardDelete(@RequiredParam() dossierIds: List): Promise {
const body = dossierIds.map(id => ({ key: 'dossierId', value: id }));
return this.delete(body, 'deleted-dossiers/hard-delete', body).toPromise();
}
diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts
index 016324236..ccd6bc37e 100644
--- a/apps/red-ui/src/app/state/app-state.service.ts
+++ b/apps/red-ui/src/app/state/app-state.service.ts
@@ -26,8 +26,6 @@ export interface AppState {
activeFileId?: string;
activeDossierTemplateId?: string;
activeDictionaryType?: string;
- totalAnalysedPages?: number;
- totalPeople?: number;
}
@Injectable({
@@ -134,14 +132,6 @@ export class AppStateService {
return this._appState.activeFileId;
}
- get totalAnalysedPages(): number | undefined {
- return this._appState.totalAnalysedPages;
- }
-
- get totalPeople(): number | undefined {
- return this._appState.totalPeople;
- }
-
private static _isFileOverviewRoute(event: Event) {
return event instanceof ResolveStart && event.url.includes('/main/dossiers/') && event.url.includes('/file/');
}
@@ -227,9 +217,6 @@ export class AppStateService {
this._processFiles(dossier, fileData[dossierId], emitEvents);
}
}
-
- this._appState.dossiers = mappedDossiers;
- this._computeStats();
}
async reloadActiveFile() {
@@ -247,8 +234,8 @@ export class AppStateService {
const files = this.activeDossier?.files.map(file => (file.fileId === activeFile.fileId ? activeFile : file));
const newDossier = new Dossier(this.activeDossier, files);
this._appState.dossiers = [...this._appState.dossiers.filter(d => d.dossierId !== newDossier.dossierId), newDossier];
+ this._dossiersService.setEntities(this._appState.dossiers);
- this._computeStats();
if (activeFile.lastProcessed !== oldProcessedDate) {
this.fileReanalysed$.next(activeFile);
}
@@ -338,6 +325,7 @@ export class AppStateService {
() => {
const index = this.allDossiers.findIndex(p => p.id === dossier.id);
this._appState.dossiers.splice(index, 1);
+ this._dossiersService.setEntities(this._appState.dossiers);
},
() => this._toaster.error(_('dossier-listing.delete.delete-failed'), { params: dossier })
);
@@ -355,6 +343,7 @@ export class AppStateService {
}
this._appState.dossiers.push(foundDossier);
+ this._dossiersService.setEntities(this._appState.dossiers);
this.dossierChanged$.next(foundDossier);
return foundDossier;
} catch (error) {
@@ -659,8 +648,6 @@ export class AppStateService {
})
);
- console.log(dictionaryData);
-
return forkJoin([typeObs, colorsObs]).pipe(map(() => dictionaryData));
}
@@ -729,8 +716,7 @@ export class AppStateService {
files.forEach(file => (file.lastOpened = file.fileId === lastOpenedFileId));
const newDossier = new Dossier(dossier, files);
this._appState.dossiers = [...this._appState.dossiers.filter(d => d.dossierId !== dossier.dossierId), newDossier];
-
- this._computeStats();
+ this._dossiersService.setEntities(this._appState.dossiers);
if (emitEvents) {
fileReanalysedEvent.forEach(file => this.fileReanalysed$.next(file));
@@ -739,17 +725,4 @@ export class AppStateService {
return files;
}
-
- private _computeStats() {
- let totalAnalysedPages = 0;
- const totalPeople = new Set();
-
- this.allDossiers.forEach(d => {
- d.memberIds?.forEach(m => totalPeople.add(m));
- totalAnalysedPages += d.totalNumberOfPages;
- });
-
- this._appState.totalPeople = totalPeople.size;
- this._appState.totalAnalysedPages = totalAnalysedPages;
- }
}