From 5f793ed27d3d7eb82d71602f5b2f754955f9fa5d Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 2 Sep 2021 12:35:38 +0300 Subject: [PATCH] fixed bugs for syngenta --- .../dossier-template-actions.component.ts | 16 +++++++++++- .../user-details/user-details.component.ts | 22 +++++++++++++--- ...sier-templates-listing-screen.component.ts | 15 +++++++++-- .../screens/trash/trash-screen.component.html | 12 ++++++--- .../screens/trash/trash-screen.component.scss | 7 +++++ .../screens/trash/trash-screen.component.ts | 20 +++++++++++--- .../edit-dossier-dialog.component.ts | 2 +- .../edit-dossier-general-info.component.ts | 26 +++++++++++++++---- apps/red-ui/src/assets/i18n/en.json | 12 +++++++-- libs/common-ui | 2 +- 10 files changed, 112 insertions(+), 22 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts b/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts index 53439afd9..d40f8e673 100644 --- a/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts +++ b/apps/red-ui/src/app/modules/admin/components/dossier-template-actions/dossier-template-actions.component.ts @@ -3,8 +3,9 @@ import { AppStateService } from '@state/app-state.service'; import { Router } from '@angular/router'; import { AdminDialogService } from '../../services/admin-dialog.service'; import { DossierTemplateControllerService } from '@redaction/red-ui-http'; -import { CircleButtonTypes, LoadingService } from '@iqser/common-ui'; +import { CircleButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { UserService } from '@services/user.service'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @Component({ selector: 'redaction-dossier-template-actions', @@ -20,6 +21,7 @@ export class DossierTemplateActionsComponent implements OnInit { constructor( private readonly _router: Router, + private readonly _toaster: Toaster, private readonly _userService: UserService, private readonly _loadingService: LoadingService, private readonly _appStateService: AppStateService, @@ -44,6 +46,18 @@ export class DossierTemplateActionsComponent implements OnInit { openDeleteDossierTemplateDialog($event?: MouseEvent) { this._dialogService.openDialog('confirm', $event, null, async () => { this._loadingService.start(); + + await this._dossierTemplateControllerService + .deleteDossierTemplates([this.dossierTemplateId]) + .toPromise() + .catch(error => { + if (error.status === 409) { + this._toaster.error(_('dossier-templates-listing.error.conflict')); + } else { + this._toaster.error(_('dossier-templates-listing.error.generic')); + } + this._loadingService.stop(); + }); await this._dossierTemplateControllerService.deleteDossierTemplates([this.dossierTemplateId]).toPromise(); await this._appStateService.loadAllDossierTemplates(); await this._appStateService.loadDictionaryData(); diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts index cec6db3f5..f9165c1ee 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-user-dialog/user-details/user-details.component.ts @@ -2,9 +2,10 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { UserControllerService } from '@redaction/red-ui-http'; import { AdminDialogService } from '../../../services/admin-dialog.service'; -import { IconButtonTypes, LoadingService } from '@iqser/common-ui'; +import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { rolesTranslations } from '../../../../../translations/roles-translations'; import { UserWrapper } from '@services/user.service'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @Component({ selector: 'redaction-user-details', @@ -24,6 +25,7 @@ export class UserDetailsComponent implements OnInit { constructor( private readonly _formBuilder: FormBuilder, + private readonly _toaster: Toaster, private readonly _dialogService: AdminDialogService, private readonly _loadingService: LoadingService, private readonly _userControllerService: UserControllerService @@ -99,12 +101,24 @@ export class UserDetailsComponent implements OnInit { const userData = { ...this.userForm.getRawValue(), roles: this.activeRoles }; if (!this.user) { - await this._userControllerService.createUser(userData).toPromise(); + await this._userControllerService + .createUser(userData) + .toPromise() + .then(() => { + this.closeDialog.emit(true); + }) + .catch(error => { + if (error.status === 409) { + this._toaster.error(_('add-edit-user.error.email-already-used')); + } else { + this._toaster.error(_('add-edit-user.error.generic')); + } + this._loadingService.stop(); + }); } else { await this._userControllerService.updateProfile(userData, this.user.id).toPromise(); + this.closeDialog.emit(true); } - - this.closeDialog.emit(true); } async delete() { diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts index 86d6ceed6..981d970e8 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts @@ -9,7 +9,8 @@ import { IconButtonTypes, ListingComponent, LoadingService, - TableColumnConfig + TableColumnConfig, + Toaster } from '@iqser/common-ui'; import { DossierTemplateControllerService } from '@redaction/red-ui-http'; import { UserService } from '@services/user.service'; @@ -46,6 +47,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent d.dossierTemplateId)) { - await this._dossierTemplateControllerService.deleteDossierTemplates(templateIds).toPromise(); + await this._dossierTemplateControllerService + .deleteDossierTemplates(templateIds) + .toPromise() + .catch(error => { + if (error.status === 409) { + this._toaster.error(_('dossier-templates-listing.error.conflict')); + } else { + this._toaster.error(_('dossier-templates-listing.error.generic')); + } + }); this.entitiesService.setSelected([]); await this._appStateService.loadAllDossierTemplates(); await this._appStateService.loadDictionaryData(); diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html index 3e9eabd9b..6089b0d44 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.html @@ -25,7 +25,11 @@ -
+
@@ -54,8 +58,10 @@
-
- {{ entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a' }} +
+
+ {{ entity.softDeletedTime === '-' ? '-' : (entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a') }} +
diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.scss index f1ade43fa..c1577647d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.scss @@ -37,3 +37,10 @@ } } } + +.disabled { + > div { + background-color: $grey-2; + color: $grey-7; + } +} diff --git a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts index 0586c5a5d..b3fcd0baa 100644 --- a/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/trash/trash-screen.component.ts @@ -1,6 +1,14 @@ import { ChangeDetectionStrategy, Component, Injector, OnInit } from '@angular/core'; import { Dossier } from '@redaction/red-ui-http'; -import { CircleButtonTypes, DefaultListingServices, ListingComponent, LoadingService, Listable, TableColumnConfig } from '@iqser/common-ui'; +import { + CircleButtonTypes, + DefaultListingServices, + ListingComponent, + LoadingService, + Listable, + TableColumnConfig, + SortingOrders +} from '@iqser/common-ui'; import { AppConfigKey, AppConfigService } from '@app-config/app-config.service'; import * as moment from 'moment'; import { DossiersService } from '../../../dossier/services/dossiers.service'; @@ -70,6 +78,10 @@ export class TrashScreenComponent extends ListingComponent impl async ngOnInit(): Promise { this._loadingService.start(); await this._loadDossiersData(); + this.sortingService.setSortingOption({ + column: 'softDeletedTime', + order: SortingOrders.desc + }); this._loadingService.stop(); } @@ -101,7 +113,7 @@ export class TrashScreenComponent extends ListingComponent impl } private async _loadDossiersData(): Promise { - this.entitiesService.setEntities(this._toListItems(await this._dossiersService.getDeleted())); + this.entitiesService.setEntities(this._toListItems(await this._dossiersService.getDeleted()).filter(d => d.canRestore)); } private _canRestoreDossier(restoreDate: string): boolean { @@ -120,7 +132,9 @@ export class TrashScreenComponent extends ListingComponent impl id: dossier.dossierId, ...dossier, restoreDate, - canRestore: this._canRestoreDossier(restoreDate) + canRestore: this._canRestoreDossier(restoreDate), + // Because of migrations, for some this is not set + softDeletedTime: dossier.softDeletedTime || '-' }; } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 8b37c64fe..f5de3fc9f 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -105,7 +105,7 @@ export class EditDossierDialogComponent { } updatedDossier() { - this._toaster.success(_('edit-dossier-dialog.change-successful')); + this._toaster.success(_('edit-dossier-dialog.change-successful'), { params: { dossierName: this.dossierWrapper.dossierName } }); this.dossierWrapper = this._appStateService.getDossierById(this.dossierWrapper.dossierId); this._changeRef.detectChanges(); this.afterSave(); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 0864fe2e5..3a4a6807e 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -13,6 +13,7 @@ import { EditDossierDialogComponent } from '../edit-dossier-dialog.component'; import { Toaster } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { IconButtonTypes } from '@iqser/common-ui'; +import { ConfirmationDialogInput, TitleColors } from '../../../../shared/dialogs/confirmation-dialog/confirmation-dialog.component'; @Component({ selector: 'redaction-edit-dossier-general-info', @@ -106,14 +107,29 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti } async deleteDossier() { - await this._appStateService.deleteDossier(this.dossierWrapper); - this._editDossierDialogRef.componentInstance.afterSave(); - this._editDossierDialogRef.close(); - this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted()); + const data = new ConfirmationDialogInput({ + title: _('confirmation-dialog.delete-dossier.title'), + titleColor: TitleColors.PRIMARY, + question: _('confirmation-dialog.delete-dossier.question'), + // details: _('confirmation-dialog.delete-dossier.details'), + confirmationText: _('confirmation-dialog.delete-dossier.confirmation-text'), + requireInput: true, + denyText: _('confirmation-dialog.delete-dossier.deny-text'), + translateParams: { + dossierName: this.dossierWrapper.dossierName, + dossiersCount: 1 + } + }); + this._dialogService.openDialog('confirm', null, data, async () => { + await this._appStateService.deleteDossier(this.dossierWrapper); + this._editDossierDialogRef.componentInstance.afterSave(); + this._editDossierDialogRef.close(); + this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted()); + }); } private _notifyDossierDeleted() { - this._toaster.success(_('edit-dossier-dialog.delete-successful')); + this._toaster.success(_('edit-dossier-dialog.delete-successful'), { params: { dossierName: this.dossierWrapper.dossierName } }); } private _filterInvalidDossierTemplates() { diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index 90cc3a94b..e339bf25b 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -100,6 +100,10 @@ "save": "Save User", "save-changes": "Save Changes" }, + "error": { + "email-already-used": "This e-mail address is already in use by a different user!", + "generic": "Failed to save user!" + }, "form": { "email": "Email", "first-name": "First Name", @@ -706,6 +710,10 @@ }, "dossier-templates": "Dossier Templates", "dossier-templates-listing": { + "error": { + "conflict": "Cannot delete this DossierTemplate! At least on Dossier uses this template!", + "generic": "Cannot delete this DossierTemplate!" + }, "action": { "delete": "Delete Template", "edit": "Edit Template" @@ -787,8 +795,8 @@ "no-image-attributes": "There are no image attributes", "upload-image": "Upload Image" }, - "change-successful": "Dossier was updated.", - "delete-successful": "Dossier was deleted.", + "change-successful": "Dossier {dossierName} was updated.", + "delete-successful": "Dossier {dossierName} was deleted.", "deleted-documents": { "action": { "delete": "Delete Forever", diff --git a/libs/common-ui b/libs/common-ui index 67bde73b9..82f27f1ed 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 67bde73b9c115f7d5636e034b82083f02b3da0a7 +Subproject commit 82f27f1ed9ff98c98877c4cf128b4b41832a1724