RED-4022: Use display name for dossier_redaction dictionary

This commit is contained in:
Adina Țeudan 2022-05-16 22:01:57 +03:00
parent ffad677114
commit e6738b407f
6 changed files with 47 additions and 18 deletions

View File

@ -1,5 +1,5 @@
import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { Dossier, IDictionary } from '@red/domain';
import { Dictionary, Dossier, IDictionary } from '@red/domain';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { PermissionsService } from '@services/permissions.service';
import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component';
@ -21,7 +21,7 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa
form: FormGroup;
canEdit = false;
canEditDisplayName = false;
dossierDictionary: IDictionary;
dossierDictionary: Dictionary;
readonly circleButtonTypes = CircleButtonTypes;
@ViewChild(DictionaryManagerComponent, { static: false }) private readonly _dictionaryManager: DictionaryManagerComponent;
@ -130,8 +130,6 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa
private async _updateDossierDictionary() {
const { dossierId, dossierTemplateId } = this.dossier;
this.dossierDictionary = await firstValueFrom(
this._dictionaryService.getForType(dossierTemplateId, 'dossier_redaction', dossierId),
);
this.dossierDictionary = await firstValueFrom(this._dictionaryService.getDossierDictionary(dossierTemplateId, dossierId));
}
}

View File

@ -74,7 +74,10 @@ export class AnnotationProcessingService {
if (!parentFilter) {
parentFilter = this._createParentFilter(a.superType, filterMap, filters);
}
const dictionary = this._dictionariesMapService.getDictionary(a.type, this._state.dossierTemplateId);
const dictionary =
a.type === 'dossier_redaction'
? this._state.dossierDictionary
: this._dictionariesMapService.getDictionary(a.type, this._state.dossierTemplateId);
const childFilter: IFilter = {
id: a.filterKey,
label: dictionary.label,

View File

@ -1,11 +1,13 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { MultiSelectService } from '../../services/multi-select.service';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { Dictionary, DOSSIER_ID } from '@red/domain';
import { ActivatedRoute } from '@angular/router';
import { DossiersService } from '@services/dossiers/dossiers.service';
import { BehaviorSubject } from 'rxjs';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@Component({
selector: 'redaction-annotation-card',
@ -17,6 +19,7 @@ export class AnnotationCardComponent implements OnChanges {
@Input() annotation: AnnotationWrapper;
@Input() isSelected = false;
readonly dictionary$ = new BehaviorSubject<Dictionary>(undefined);
readonly #dossierId: string;
readonly #dossierTemplateId: string;
constructor(
@ -24,15 +27,20 @@ export class AnnotationCardComponent implements OnChanges {
dossiersService: DossiersService,
readonly multiSelectService: MultiSelectService,
private readonly _dictionariesMapService: DictionariesMapService,
private readonly _dictionaryService: DictionaryService,
private readonly _state: FilePreviewStateService,
) {
const dossierId: string = route.snapshot.paramMap.get(DOSSIER_ID);
this.#dossierTemplateId = dossiersService.find(dossierId).dossierTemplateId;
this.#dossierId = route.snapshot.paramMap.get(DOSSIER_ID);
this.#dossierTemplateId = dossiersService.find(this.#dossierId).dossierTemplateId;
}
ngOnChanges(changes: SimpleChanges): void {
if (changes.annotation) {
if (this.annotation.type !== 'manual' && !this.annotation.isHighlight) {
const dictionary = this._dictionariesMapService.getDictionary(this.annotation.type, this.#dossierTemplateId);
const dictionary =
this.annotation.type === 'dossier_redaction'
? this._state.dossierDictionary
: this._dictionariesMapService.getDictionary(this.annotation.type, this.#dossierTemplateId);
this.dictionary$.next(dictionary);
}
}

View File

@ -1,6 +1,6 @@
import { Injectable, Injector } from '@angular/core';
import { combineLatest, firstValueFrom, from, merge, Observable, of, pairwise, Subject, switchMap } from 'rxjs';
import { Dossier, DOSSIER_ID, File, FILE_ID } from '@red/domain';
import { Dictionary, Dossier, DOSSIER_ID, File, FILE_ID } from '@red/domain';
import { ActivatedRoute, Router } from '@angular/router';
import { FilesMapService } from '@services/entity-services/files-map.service';
import { PermissionsService } from '@services/permissions.service';
@ -11,6 +11,7 @@ import { dossiersServiceResolver } from '@services/entity-services/dossiers.serv
import { wipeFilesCache } from '@red/cache';
import { DossiersService } from '@services/dossiers/dossiers.service';
import { FilesService } from '@services/entity-services/files.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@Injectable()
export class FilePreviewStateService {
@ -24,10 +25,9 @@ export class FilePreviewStateService {
readonly dossierId: string;
readonly dossierTemplateId: string;
readonly fileId: string;
dossier: Dossier;
file: File;
#dossierDictionary: Dictionary;
readonly #reloadBlob$ = new Subject();
constructor(
@ -39,6 +39,7 @@ export class FilePreviewStateService {
private readonly _filesService: FilesService,
private readonly _dossiersService: DossiersService,
private readonly _fileManagementService: FileManagementService,
private readonly _dictionaryService: DictionaryService,
) {
const dossiersService = dossiersServiceResolver(_injector, router);
@ -55,6 +56,14 @@ export class FilePreviewStateService {
this.blob$ = this.#blob$;
this.dossierFileChange$ = this.#dossierFilesChange$();
this._dictionaryService
.getDossierDictionary(this.dossierTemplateId, this.dossierId)
.subscribe(dictionary => (this.#dossierDictionary = dictionary));
}
get dossierDictionary(): Dictionary {
return this.#dossierDictionary;
}
get blob(): Promise<Blob> {

View File

@ -1,6 +1,6 @@
import { Injectable, Injector } from '@angular/core';
import { firstValueFrom, forkJoin, Observable, of, throwError } from 'rxjs';
import { EntitiesService, List, QueryParam, RequiredParam, Toaster, Validate } from '@iqser/common-ui';
import { EntitiesService, List, log, QueryParam, RequiredParam, Toaster, Validate } from '@iqser/common-ui';
import { Dictionary, DictionaryEntryType, DictionaryEntryTypes, IColors, IDictionary, IUpdateDictionary } from '@red/domain';
import { catchError, map, switchMap, tap } from 'rxjs/operators';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -174,7 +174,7 @@ export class DictionaryService extends EntitiesService<Dictionary, IDictionary>
async getDictionariesOptions(dossierTemplateId: string, dossierId: string): Promise<Dictionary[]> {
const possibleDictionaries: Dictionary[] = [];
const dossierDictionary = await firstValueFrom(this.getForType(dossierTemplateId, 'dossier_redaction', dossierId));
const dossierDictionary: Dictionary = await firstValueFrom(this.getDossierDictionary(dossierTemplateId, dossierId));
for (const dictionary of this._dictionariesMapService.get(dossierTemplateId)) {
if (!dictionary.virtual && dictionary.addToDictionaryAction) {
@ -183,8 +183,7 @@ export class DictionaryService extends EntitiesService<Dictionary, IDictionary>
}
if (dossierDictionary.addToDictionaryAction) {
// TODO fix this in the backend
possibleDictionaries.push(new Dictionary({ ...dossierDictionary, type: 'dossier_redaction' }));
possibleDictionaries.push(dossierDictionary);
}
possibleDictionaries.sort((a, b) => a.label.localeCompare(b.label));
@ -192,6 +191,18 @@ export class DictionaryService extends EntitiesService<Dictionary, IDictionary>
return possibleDictionaries;
}
getDossierDictionary(dossierTemplateId: string, dossierId: string): Observable<Dictionary> {
return this.getForType(dossierTemplateId, 'dossier_redaction', dossierId).pipe(
map(
dictionary =>
new Dictionary({
...dictionary,
type: 'dossier_redaction',
}),
),
);
}
loadDictionaryData(dossierTemplatesIds: string[]): Observable<Dictionary[][]> {
const observables: Observable<Dictionary[]>[] = [];
for (const dossierTemplateId of dossierTemplatesIds) {

View File

@ -1,7 +1,7 @@
{
"ADMIN_CONTACT_NAME": null,
"ADMIN_CONTACT_URL": null,
"API_URL": "https://dev-05.iqser.cloud/redaction-gateway-v1",
"API_URL": "https://dev-08.iqser.cloud/redaction-gateway-v1",
"APP_NAME": "RedactManager",
"AUTO_READ_TIME": 3,
"BACKEND_APP_VERSION": "4.4.40",
@ -17,7 +17,7 @@
"MAX_RETRIES_ON_SERVER_ERROR": 3,
"OAUTH_CLIENT_ID": "redaction",
"OAUTH_IDP_HINT": null,
"OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction",
"OAUTH_URL": "https://dev-08.iqser.cloud/auth/realms/redaction",
"RECENT_PERIOD_IN_HOURS": 24,
"SELECTION_MODE": "structural",
"MANUAL_BASE_URL": "https://docs.redactmanager.com/preview"