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 { Router } from '@angular/router';
|
||||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||||
import { DossierTemplateControllerService } from '@redaction/red-ui-http';
|
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 { UserService } from '@services/user.service';
|
||||||
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-dossier-template-actions',
|
selector: 'redaction-dossier-template-actions',
|
||||||
@ -20,6 +21,7 @@ export class DossierTemplateActionsComponent implements OnInit {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _router: Router,
|
private readonly _router: Router,
|
||||||
|
private readonly _toaster: Toaster,
|
||||||
private readonly _userService: UserService,
|
private readonly _userService: UserService,
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _appStateService: AppStateService,
|
private readonly _appStateService: AppStateService,
|
||||||
@ -44,6 +46,18 @@ export class DossierTemplateActionsComponent implements OnInit {
|
|||||||
openDeleteDossierTemplateDialog($event?: MouseEvent) {
|
openDeleteDossierTemplateDialog($event?: MouseEvent) {
|
||||||
this._dialogService.openDialog('confirm', $event, null, async () => {
|
this._dialogService.openDialog('confirm', $event, null, async () => {
|
||||||
this._loadingService.start();
|
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._dossierTemplateControllerService.deleteDossierTemplates([this.dossierTemplateId]).toPromise();
|
||||||
await this._appStateService.loadAllDossierTemplates();
|
await this._appStateService.loadAllDossierTemplates();
|
||||||
await this._appStateService.loadDictionaryData();
|
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 { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
import { UserControllerService } from '@redaction/red-ui-http';
|
import { UserControllerService } from '@redaction/red-ui-http';
|
||||||
import { AdminDialogService } from '../../../services/admin-dialog.service';
|
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 { rolesTranslations } from '../../../../../translations/roles-translations';
|
||||||
import { UserWrapper } from '@services/user.service';
|
import { UserWrapper } from '@services/user.service';
|
||||||
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-user-details',
|
selector: 'redaction-user-details',
|
||||||
@ -24,6 +25,7 @@ export class UserDetailsComponent implements OnInit {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _formBuilder: FormBuilder,
|
private readonly _formBuilder: FormBuilder,
|
||||||
|
private readonly _toaster: Toaster,
|
||||||
private readonly _dialogService: AdminDialogService,
|
private readonly _dialogService: AdminDialogService,
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _userControllerService: UserControllerService
|
private readonly _userControllerService: UserControllerService
|
||||||
@ -99,12 +101,24 @@ export class UserDetailsComponent implements OnInit {
|
|||||||
const userData = { ...this.userForm.getRawValue(), roles: this.activeRoles };
|
const userData = { ...this.userForm.getRawValue(), roles: this.activeRoles };
|
||||||
|
|
||||||
if (!this.user) {
|
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 {
|
} else {
|
||||||
await this._userControllerService.updateProfile(userData, this.user.id).toPromise();
|
await this._userControllerService.updateProfile(userData, this.user.id).toPromise();
|
||||||
|
this.closeDialog.emit(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.closeDialog.emit(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async delete() {
|
async delete() {
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import {
|
|||||||
IconButtonTypes,
|
IconButtonTypes,
|
||||||
ListingComponent,
|
ListingComponent,
|
||||||
LoadingService,
|
LoadingService,
|
||||||
TableColumnConfig
|
TableColumnConfig,
|
||||||
|
Toaster
|
||||||
} from '@iqser/common-ui';
|
} from '@iqser/common-ui';
|
||||||
import { DossierTemplateControllerService } from '@redaction/red-ui-http';
|
import { DossierTemplateControllerService } from '@redaction/red-ui-http';
|
||||||
import { UserService } from '@services/user.service';
|
import { UserService } from '@services/user.service';
|
||||||
@ -46,6 +47,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent<Dos
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected readonly _injector: Injector,
|
protected readonly _injector: Injector,
|
||||||
|
private readonly _toaster: Toaster,
|
||||||
private readonly _userService: UserService,
|
private readonly _userService: UserService,
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _appStateService: AppStateService,
|
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)) {
|
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([]);
|
this.entitiesService.setSelected([]);
|
||||||
await this._appStateService.loadAllDossierTemplates();
|
await this._appStateService.loadAllDossierTemplates();
|
||||||
await this._appStateService.loadDictionaryData();
|
await this._appStateService.loadDictionaryData();
|
||||||
|
|||||||
@ -25,7 +25,11 @@
|
|||||||
<redaction-empty-state *ngIf="noMatch$ | async" [text]="'trash.no-match.title' | translate"></redaction-empty-state>
|
<redaction-empty-state *ngIf="noMatch$ | async" [text]="'trash.no-match.title' | translate"></redaction-empty-state>
|
||||||
|
|
||||||
<cdk-virtual-scroll-viewport [itemSize]="itemSize" redactionHasScrollbar>
|
<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">
|
<div (click)="toggleEntitySelected($event, entity)" class="selection-column">
|
||||||
<iqser-round-checkbox [active]="isSelected(entity)"></iqser-round-checkbox>
|
<iqser-round-checkbox [active]="isSelected(entity)"></iqser-round-checkbox>
|
||||||
</div>
|
</div>
|
||||||
@ -54,8 +58,10 @@
|
|||||||
<redaction-initials-avatar [userId]="entity.ownerId" [withName]="true"></redaction-initials-avatar>
|
<redaction-initials-avatar [userId]="entity.ownerId" [withName]="true"></redaction-initials-avatar>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="small-label">
|
<div>
|
||||||
{{ entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a' }}
|
<div class="small-label">
|
||||||
|
{{ entity.softDeletedTime === '-' ? '-' : (entity.softDeletedTime | date: 'd MMM. yyyy, hh:mm a') }}
|
||||||
|
</div>
|
||||||
</div>
|
</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 { ChangeDetectionStrategy, Component, Injector, OnInit } from '@angular/core';
|
||||||
import { Dossier } from '@redaction/red-ui-http';
|
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 { AppConfigKey, AppConfigService } from '@app-config/app-config.service';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
import { DossiersService } from '../../../dossier/services/dossiers.service';
|
import { DossiersService } from '../../../dossier/services/dossiers.service';
|
||||||
@ -70,6 +78,10 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
|||||||
async ngOnInit(): Promise<void> {
|
async ngOnInit(): Promise<void> {
|
||||||
this._loadingService.start();
|
this._loadingService.start();
|
||||||
await this._loadDossiersData();
|
await this._loadDossiersData();
|
||||||
|
this.sortingService.setSortingOption({
|
||||||
|
column: 'softDeletedTime',
|
||||||
|
order: SortingOrders.desc
|
||||||
|
});
|
||||||
this._loadingService.stop();
|
this._loadingService.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +113,7 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _loadDossiersData(): Promise<void> {
|
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 {
|
private _canRestoreDossier(restoreDate: string): boolean {
|
||||||
@ -120,7 +132,9 @@ export class TrashScreenComponent extends ListingComponent<DossierListItem> impl
|
|||||||
id: dossier.dossierId,
|
id: dossier.dossierId,
|
||||||
...dossier,
|
...dossier,
|
||||||
restoreDate,
|
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() {
|
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.dossierWrapper = this._appStateService.getDossierById(this.dossierWrapper.dossierId);
|
||||||
this._changeRef.detectChanges();
|
this._changeRef.detectChanges();
|
||||||
this.afterSave();
|
this.afterSave();
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { EditDossierDialogComponent } from '../edit-dossier-dialog.component';
|
|||||||
import { Toaster } from '@iqser/common-ui';
|
import { Toaster } from '@iqser/common-ui';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { IconButtonTypes } from '@iqser/common-ui';
|
import { IconButtonTypes } from '@iqser/common-ui';
|
||||||
|
import { ConfirmationDialogInput, TitleColors } from '../../../../shared/dialogs/confirmation-dialog/confirmation-dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-edit-dossier-general-info',
|
selector: 'redaction-edit-dossier-general-info',
|
||||||
@ -106,14 +107,29 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
|||||||
}
|
}
|
||||||
|
|
||||||
async deleteDossier() {
|
async deleteDossier() {
|
||||||
await this._appStateService.deleteDossier(this.dossierWrapper);
|
const data = new ConfirmationDialogInput({
|
||||||
this._editDossierDialogRef.componentInstance.afterSave();
|
title: _('confirmation-dialog.delete-dossier.title'),
|
||||||
this._editDossierDialogRef.close();
|
titleColor: TitleColors.PRIMARY,
|
||||||
this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted());
|
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() {
|
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() {
|
private _filterInvalidDossierTemplates() {
|
||||||
|
|||||||
@ -100,6 +100,10 @@
|
|||||||
"save": "Save User",
|
"save": "Save User",
|
||||||
"save-changes": "Save Changes"
|
"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": {
|
"form": {
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
"first-name": "First Name",
|
"first-name": "First Name",
|
||||||
@ -706,6 +710,10 @@
|
|||||||
},
|
},
|
||||||
"dossier-templates": "Dossier Templates",
|
"dossier-templates": "Dossier Templates",
|
||||||
"dossier-templates-listing": {
|
"dossier-templates-listing": {
|
||||||
|
"error": {
|
||||||
|
"conflict": "Cannot delete this DossierTemplate! At least on Dossier uses this template!",
|
||||||
|
"generic": "Cannot delete this DossierTemplate!"
|
||||||
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"delete": "Delete Template",
|
"delete": "Delete Template",
|
||||||
"edit": "Edit Template"
|
"edit": "Edit Template"
|
||||||
@ -787,8 +795,8 @@
|
|||||||
"no-image-attributes": "There are no image attributes",
|
"no-image-attributes": "There are no image attributes",
|
||||||
"upload-image": "Upload Image"
|
"upload-image": "Upload Image"
|
||||||
},
|
},
|
||||||
"change-successful": "Dossier was updated.",
|
"change-successful": "Dossier {dossierName} was updated.",
|
||||||
"delete-successful": "Dossier was deleted.",
|
"delete-successful": "Dossier {dossierName} was deleted.",
|
||||||
"deleted-documents": {
|
"deleted-documents": {
|
||||||
"action": {
|
"action": {
|
||||||
"delete": "Delete Forever",
|
"delete": "Delete Forever",
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit 67bde73b9c115f7d5636e034b82083f02b3da0a7
|
Subproject commit 82f27f1ed9ff98c98877c4cf128b4b41832a1724
|
||||||
Loading…
x
Reference in New Issue
Block a user