diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html index 282593016..ffe747bc4 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html @@ -1,6 +1,6 @@
-
+
{{ dossierWrapper.type?.label || ('edit-dossier-dialog.nav-items.dossier-dictionary' | translate) }}
@@ -9,18 +9,22 @@
- - - - - - - - - - - - +
+
+ +
div { + font-weight: 600; + } } } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index 938f62b6f..1a6650ffb 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { AppStateService } from '@state/app-state.service'; import { DossierWrapper } from '@state/model/dossier.wrapper'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; @@ -6,23 +6,27 @@ import { PermissionsService } from '@services/permissions.service'; import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component'; import { DictionarySaveService } from '@shared/services/dictionary-save.service'; import { FormBuilder } from '@angular/forms'; +import { CircleButtonTypes } from '@iqser/common-ui'; +import { Dictionary, DictionaryControllerService } from '@redaction/red-ui-http'; @Component({ selector: 'redaction-edit-dossier-dictionary', templateUrl: './edit-dossier-dictionary.component.html', styleUrls: ['./edit-dossier-dictionary.component.scss'] }) -export class EditDossierDictionaryComponent implements EditDossierSectionInterface { +export class EditDossierDictionaryComponent implements EditDossierSectionInterface, OnInit { @Input() dossierWrapper: DossierWrapper; - @Output() updateDossier = new EventEmitter(); + @Output() updateDossier: EventEmitter = new EventEmitter(); canEdit = false; - @ViewChild(DictionaryManagerComponent, { static: false }) - private _dictionaryManager: DictionaryManagerComponent; + readonly circleButtonTypes = CircleButtonTypes; + + @ViewChild(DictionaryManagerComponent, { static: false }) private _dictionaryManager: DictionaryManagerComponent; constructor( private readonly _appStateService: AppStateService, private readonly _dictionarySaveService: DictionarySaveService, private readonly _permissionsService: PermissionsService, + private readonly _dictionaryControllerService: DictionaryControllerService, private readonly _formBuilder: FormBuilder ) { this.canEdit = this._permissionsService.isDossierMember(this.dossierWrapper) || this._permissionsService.isAdmin(); @@ -36,8 +40,21 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa return !this.canEdit; } - save() { - this._dictionarySaveService + ngOnInit() { + console.log(this.dossierWrapper.type ? 'has' : "doesn't have"); + } + + async updateDisplayName(label: string) { + const typeValue: Dictionary = { ...this.dossierWrapper.type, label }; + await this._dictionaryControllerService + .updateType(typeValue, this.dossierWrapper.dossierTemplateId, 'dossier_redaction') + .toPromise(); + await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId); + this.updateDossier.emit(); + } + + async save() { + await this._dictionarySaveService .saveEntries( this._dictionaryManager.currentEntries, this._dictionaryManager.initialEntries, @@ -46,10 +63,9 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa this.dossierWrapper.dossierId, false ) - .subscribe(async () => { - this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId); - this.updateDossier.emit(); - }); + .toPromise(); + await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId); + this.updateDossier.emit(); } revert() { 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 e747812c1..45cb6980d 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -269,28 +269,28 @@ export class AppStateService { await this._reanalysisControllerService.reanalyzeDossier(dossierId, true).toPromise(); } - activateDossier(dossierId: string): void { + async activateDossier(dossierId: string) { this._appState.activeFileId = null; this._appState.activeDossierId = dossierId; if (!this.activeDossier) { this._appState.activeDossierId = null; - this._router.navigate(['/main/dossiers']).then(); + await this._router.navigate(['/main/dossiers']); return; } - this.updateDossierDictionary(this.activeDossier.dossierTemplateId, dossierId); + await this.updateDossierDictionary(this.activeDossier.dossierTemplateId, dossierId); } - updateDossierDictionary(dossierTemplateId: string, dossierId: string) { + async updateDossierDictionary(dossierTemplateId: string, dossierId: string) { // dossier exists, load its dictionary - this._dictionaryControllerService.getDictionaryForType(dossierTemplateId, 'dossier_redaction', dossierId).subscribe( - typeData => { - this.activeDossier.type = typeData; - }, - () => { - this.activeDossier.type = null; - } - ); + const dossier = this.getDossierById(dossierId); + try { + dossier.type = await this._dictionaryControllerService + .getDictionaryForType(dossierTemplateId, 'dossier_redaction', dossierId) + .toPromise(); + } catch (e) { + dossier.type = null; + } } async activateFile(dossierId: string, fileId: string) { @@ -306,14 +306,6 @@ export class AppStateService { this._updateLastActiveFileForDossier(dossierId, fileId); } - private async _updateLastActiveFileForDossier(dossierId: string, fileId: string) { - this.activeDossier.files.forEach(f => { - f.lastOpened = f.fileId === fileId; - }); - - await this._userPreferenceService.saveLastOpenedFileForDossier(dossierId, fileId); - } - activateDossierTemplate(dossierTemplateId: string) { this._appState.activeDossierTemplateId = dossierTemplateId; this._appState.activeDictionaryType = null; @@ -660,6 +652,14 @@ export class AppStateService { this._dictionaryData = obj; } + private async _updateLastActiveFileForDossier(dossierId: string, fileId: string) { + this.activeDossier.files.forEach(f => { + f.lastOpened = f.fileId === fileId; + }); + + await this._userPreferenceService.saveLastOpenedFileForDossier(dossierId, fileId); + } + private _getExistingFiles(dossierId: string): FileStatusWrapper[] { const dossier = this.allDossiers.find(p => p.dossierId === dossierId); return dossier?.files ?? []; diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 2df90f610..ae406478d 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -553,11 +553,6 @@ "see-less": "See less", "title": "Dossier Details" }, - "dossier-dictionary-dialog": { - "cancel": "cancel", - "save-changes": "Save Changes", - "title": "Dossier Dictionary" - }, "dossier-listing": { "add-new": "New Dossier", "delete": { @@ -801,6 +796,12 @@ } }, "dictionary": { + "display-name": { + "cancel": "Cancel", + "edit": "{type, select, edit{Edit} set{Set} other{}} Display Name", + "placeholder": "Enter Display Name", + "save": "Save Display Name" + }, "entries": "{length} {length, plural, one{entry} other{entries}}" }, "general-info": { diff --git a/apps/red-ui/src/assets/styles/red-page-layout.scss b/apps/red-ui/src/assets/styles/red-page-layout.scss index 36e12ba11..30aa9b684 100644 --- a/apps/red-ui/src/assets/styles/red-page-layout.scss +++ b/apps/red-ui/src/assets/styles/red-page-layout.scss @@ -256,6 +256,10 @@ section.settings { margin-left: 14px; } +.ml-16 { + margin-left: 16px; +} + .mr-24 { margin-right: 24px; } diff --git a/libs/common-ui b/libs/common-ui index 89376a655..0bb0e4454 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 89376a65544fcdfcab1d960fba0d9f580cddc1ca +Subproject commit 0bb0e4454f3015d1c81ccd23415c8135c89eeeff