fixed bugs for syngenta
This commit is contained in:
parent
747521dbf0
commit
5f793ed27d
@ -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();
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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<Dos
|
||||
|
||||
constructor(
|
||||
protected readonly _injector: Injector,
|
||||
private readonly _toaster: Toaster,
|
||||
private readonly _userService: UserService,
|
||||
private readonly _loadingService: LoadingService,
|
||||
private readonly _appStateService: AppStateService,
|
||||
@ -80,7 +82,16 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent<Dos
|
||||
}
|
||||
|
||||
private async _deleteTemplates(templateIds: string[] = this.entitiesService.selected.map(d => 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();
|
||||
|
||||
@ -25,7 +25,11 @@
|
||||
<redaction-empty-state *ngIf="noMatch$ | async" [text]="'trash.no-match.title' | translate"></redaction-empty-state>
|
||||
|
||||
<cdk-virtual-scroll-viewport [itemSize]="itemSize" redactionHasScrollbar>
|
||||
<div *cdkVirtualFor="let entity of sortedDisplayedEntities$ | async; trackBy: trackByPrimaryKey" class="table-item">
|
||||
<div
|
||||
*cdkVirtualFor="let entity of sortedDisplayedEntities$ | async; trackBy: trackByPrimaryKey"
|
||||
class="table-item"
|
||||
[class.disabled]="!entity.canRestore"
|
||||
>
|
||||
<div (click)="toggleEntitySelected($event, entity)" class="selection-column">
|
||||
<iqser-round-checkbox [active]="isSelected(entity)"></iqser-round-checkbox>
|
||||
</div>
|
||||
@ -54,8 +58,10 @@
|
||||
<redaction-initials-avatar [userId]="entity.ownerId" [withName]="true"></redaction-initials-avatar>
|
||||
</div>
|
||||
|
||||
<div class="small-label">
|
||||
{{ entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a' }}
|
||||
<div>
|
||||
<div class="small-label">
|
||||
{{ entity.softDeletedTime === '-' ? '-' : (entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
@ -37,3 +37,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.disabled {
|
||||
> div {
|
||||
background-color: $grey-2;
|
||||
color: $grey-7;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<DossierListItem> impl
|
||||
async ngOnInit(): Promise<void> {
|
||||
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<DossierListItem> impl
|
||||
}
|
||||
|
||||
private async _loadDossiersData(): Promise<void> {
|
||||
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<DossierListItem> 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 || '-'
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 67bde73b9c115f7d5636e034b82083f02b3da0a7
|
||||
Subproject commit 82f27f1ed9ff98c98877c4cf128b4b41832a1724
|
||||
Loading…
x
Reference in New Issue
Block a user