diff --git a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.ts b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.ts index b6a0fc9a1..1b12bf330 100644 --- a/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.ts +++ b/apps/red-ui/src/app/components/downloads-list-screen/downloads-list-screen.component.ts @@ -10,7 +10,7 @@ import { firstValueFrom } from 'rxjs'; selector: 'redaction-downloads-list-screen', templateUrl: './downloads-list-screen.component.html', styleUrls: ['./downloads-list-screen.component.scss'], - providers: listingProvidersFactory({ + providers: listingProvidersFactory({ entitiesService: FileDownloadService, component: DownloadsListScreenComponent, }), diff --git a/apps/red-ui/src/app/guards/watermark-exists.guard.ts b/apps/red-ui/src/app/guards/watermark-exists.guard.ts index 0fab7ef6c..447a0e29b 100644 --- a/apps/red-ui/src/app/guards/watermark-exists.guard.ts +++ b/apps/red-ui/src/app/guards/watermark-exists.guard.ts @@ -9,7 +9,7 @@ export class WatermarkExistsGuard implements CanActivate { async canActivate(route: ActivatedRouteSnapshot): Promise { const dossierTemplateId = route.parent.paramMap.get(DOSSIER_TEMPLATE_ID); - const watermarkId = route.paramMap.get(WATERMARK_ID); + const watermarkId = Number(route.paramMap.get(WATERMARK_ID)); if (this._watermarksMapService.get(dossierTemplateId, watermarkId)) { return true; diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts index f7eee164c..06e3d5524 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts @@ -19,7 +19,7 @@ import { firstValueFrom } from 'rxjs'; @Component({ templateUrl: './dossier-attributes-listing-screen.component.html', styleUrls: ['./dossier-attributes-listing-screen.component.scss'], - providers: listingProvidersFactory({ + providers: listingProvidersFactory({ entitiesService: DossierAttributesService, component: DossierAttributesListingScreenComponent, }), diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts index 8018da695..590c56ad4 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-templates-listing/dossier-templates-listing-screen/dossier-templates-listing-screen.component.ts @@ -20,7 +20,7 @@ import { firstValueFrom } from 'rxjs'; templateUrl: './dossier-templates-listing-screen.component.html', styleUrls: ['./dossier-templates-listing-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, - providers: listingProvidersFactory({ + providers: listingProvidersFactory({ entitiesService: DossierTemplatesService, component: DossierTemplatesListingScreenComponent, }), diff --git a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts index adaf556fd..731ccc8eb 100644 --- a/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/justifications/justifications-screen/justifications-screen.component.ts @@ -21,7 +21,7 @@ import { firstValueFrom } from 'rxjs'; templateUrl: './justifications-screen.component.html', styleUrls: ['./justifications-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, - providers: listingProvidersFactory({ + providers: listingProvidersFactory({ entitiesService: JustificationsService, component: JustificationsScreenComponent, }), diff --git a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts index 50085734d..a0a3a9882 100644 --- a/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/user-listing/user-listing-screen.component.ts @@ -32,7 +32,7 @@ function configToFilter({ key, label }: DonutChartConfig) { @Component({ templateUrl: './user-listing-screen.component.html', styleUrls: ['./user-listing-screen.component.scss'], - providers: listingProvidersFactory({ + providers: listingProvidersFactory({ entitiesService: UserService, component: UserListingScreenComponent, }), @@ -118,6 +118,12 @@ export class UserListingScreenComponent extends ListingComponent implement this.openDeleteUsersDialog(this.listingService.selectedIds as string[]); } + deleteDisabled(user: User): boolean { + const userAdmin = user.roles.includes('RED_ADMIN'); + const currentUserAdmin = this._userService.currentUser.roles.includes('RED_ADMIN'); + return user.id === this._userService.currentUser.id || (userAdmin && !currentUserAdmin); + } + async #loadData() { await firstValueFrom(this._userService.loadAll()); this.#computeStats(); @@ -145,10 +151,4 @@ export class UserListingScreenComponent extends ListingComponent implement }; this.filterService.addFilterGroups([roleFiltersGroup]); } - - deleteDisabled(user: User): boolean { - const userAdmin = user.roles.includes('RED_ADMIN'); - const currentUserAdmin = this._userService.currentUser.roles.includes('RED_ADMIN'); - return user.id === this._userService.currentUser.id || (userAdmin && !currentUserAdmin); - } } diff --git a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts index 461c9207e..45f66c581 100644 --- a/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/watermark/watermark-screen/watermark-screen.component.ts @@ -35,7 +35,7 @@ export class WatermarkScreenComponent { readonly form: UntypedFormGroup = this._getForm(); readonly watermark$: Observable>; readonly #dossierTemplateId: string = getParam(DOSSIER_TEMPLATE_ID); - readonly #watermarkId = getParam(WATERMARK_ID); + readonly #watermarkId = Number(getParam(WATERMARK_ID)); private _instance: WebViewerInstance; private _watermark: Partial = {}; @ViewChild('viewer', { static: true }) diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts index d371879d9..e5970d6f1 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.ts @@ -10,7 +10,7 @@ import { SortingService, Toaster, } from '@iqser/common-ui'; -import { Dossier, File } from '@red/domain'; +import { Dossier, File, IFile } from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { ReanalysisService } from '@services/reanalysis.service'; @@ -21,7 +21,6 @@ import { ConfigService } from '../../config.service'; import { firstValueFrom } from 'rxjs'; import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service'; import { Router } from '@angular/router'; -import { DossiersService } from '@services/dossiers/dossiers.service'; @Component({ selector: 'redaction-dossier-overview-screen-header', @@ -38,12 +37,11 @@ export class DossierOverviewScreenHeaderComponent implements OnInit { private readonly _toaster: Toaster, readonly configService: ConfigService, readonly router: Router, - readonly dossiersService: DossiersService, private readonly _userService: UserService, readonly listingService: ListingService, readonly sortingService: SortingService, readonly permissionsService: PermissionsService, - readonly entitiesService: EntitiesService, + readonly entitiesService: EntitiesService, private readonly _reanalysisService: ReanalysisService, private readonly _loadingService: LoadingService, private readonly _primaryFileAttributeService: PrimaryFileAttributeService, diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotations-listing.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotations-listing.service.ts index 3f47e42bc..fb2ce8c85 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotations-listing.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotations-listing.service.ts @@ -11,7 +11,7 @@ export class AnnotationsListingService extends ListingService constructor( protected readonly _filterService: FilterService, protected readonly _searchService: SearchService, - protected readonly _entitiesService: EntitiesService, + protected readonly _entitiesService: EntitiesService, private readonly _multiSelectService: MultiSelectService, private readonly _pdf: PdfViewer, private readonly _annotationManager: REDAnnotationManager, diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts index e4704916e..dde63d21a 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts @@ -24,7 +24,7 @@ import { DossierDictionariesMapService } from '@services/entity-services/dossier const DELTA_VIEW_TIME = 10 * 60 * 1000; // 10 minutes; @Injectable() -export class FileDataService extends EntitiesService { +export class FileDataService extends EntitiesService { viewedPages: IViewedPage[] = []; missingTypes = new Set(); readonly hasChangeLog$ = new BehaviorSubject(false); diff --git a/apps/red-ui/src/app/services/entity-permissions/permissions-configuration-map.service.ts b/apps/red-ui/src/app/services/entity-permissions/permissions-configuration-map.service.ts index a79e5ba75..b5ab88bee 100644 --- a/apps/red-ui/src/app/services/entity-permissions/permissions-configuration-map.service.ts +++ b/apps/red-ui/src/app/services/entity-permissions/permissions-configuration-map.service.ts @@ -3,7 +3,7 @@ import { IPermissionsMapping, PermissionsMapping } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class PermissionsConfigurationMapService extends EntitiesMapService { +export class PermissionsConfigurationMapService extends EntitiesMapService { protected readonly _primaryKey = 'name'; getMappedPermissions(targetObject: string): string[] { diff --git a/apps/red-ui/src/app/services/entity-permissions/permissions-map.service.ts b/apps/red-ui/src/app/services/entity-permissions/permissions-map.service.ts index fb3093067..ff4d6534b 100644 --- a/apps/red-ui/src/app/services/entity-permissions/permissions-map.service.ts +++ b/apps/red-ui/src/app/services/entity-permissions/permissions-map.service.ts @@ -3,6 +3,6 @@ import { IPermissionsMapping, PermissionsMapping } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class PermissionsMapService extends EntitiesMapService { +export class PermissionsMapService extends EntitiesMapService { protected readonly _primaryKey = 'name'; } diff --git a/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts b/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts index 22e2fca6c..fdb91a221 100644 --- a/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dictionaries-map.service.ts @@ -3,6 +3,6 @@ import { Dictionary, DOSSIER_TEMPLATE_ID, IDictionary } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class DictionariesMapService extends EntitiesMapService { +export class DictionariesMapService extends EntitiesMapService { protected readonly _primaryKey = DOSSIER_TEMPLATE_ID; } diff --git a/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts index a4f605e87..8a8852a95 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-dictionaries-map.service.ts @@ -3,6 +3,6 @@ import { Dictionary, DOSSIER_ID, IDictionary } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class DossierDictionariesMapService extends EntitiesMapService { +export class DossierDictionariesMapService extends EntitiesMapService { protected readonly _primaryKey = DOSSIER_ID; } diff --git a/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts index 9fd47259d..48532161e 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-states-map.service.ts @@ -4,7 +4,7 @@ import { EntitiesMapService } from '@iqser/common-ui'; import { flatMap } from 'lodash-es'; @Injectable({ providedIn: 'root' }) -export class DossierStatesMapService extends EntitiesMapService { +export class DossierStatesMapService extends EntitiesMapService { protected readonly _primaryKey = DOSSIER_TEMPLATE_ID; get stats(): DonutChartConfig[] { diff --git a/apps/red-ui/src/app/services/entity-services/trash.service.ts b/apps/red-ui/src/app/services/entity-services/trash.service.ts index 12a3095df..f2379985a 100644 --- a/apps/red-ui/src/app/services/entity-services/trash.service.ts +++ b/apps/red-ui/src/app/services/entity-services/trash.service.ts @@ -16,7 +16,7 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se @Injectable({ providedIn: 'root', }) -export class TrashService extends EntitiesService { +export class TrashService extends EntitiesService { constructor( private readonly _toaster: Toaster, private readonly _systemPreferencesService: SystemPreferencesService, diff --git a/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts b/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts index ed55b3931..928c5a9e0 100644 --- a/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts +++ b/apps/red-ui/src/app/services/entity-services/watermarks-map.service.ts @@ -3,6 +3,6 @@ import { DOSSIER_TEMPLATE_ID, IWatermark, Watermark } from '@red/domain'; import { EntitiesMapService } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class WatermarksMapService extends EntitiesMapService { +export class WatermarksMapService extends EntitiesMapService { protected readonly _primaryKey = DOSSIER_TEMPLATE_ID; } diff --git a/apps/red-ui/src/app/services/files/files-map.service.ts b/apps/red-ui/src/app/services/files/files-map.service.ts index 237c66dae..387d8a5e3 100644 --- a/apps/red-ui/src/app/services/files/files-map.service.ts +++ b/apps/red-ui/src/app/services/files/files-map.service.ts @@ -3,7 +3,7 @@ import { DOSSIER_ID, File, IFile } from '@red/domain'; import { EntitiesMapService, NonFunctionKeys } from '@iqser/common-ui'; @Injectable({ providedIn: 'root' }) -export class FilesMapService extends EntitiesMapService { +export class FilesMapService extends EntitiesMapService { protected readonly _primaryKey = DOSSIER_ID; replaceFiles, T2 extends File[T]>(files: File[], property: T, generateValue: (value: T2) => T2) { diff --git a/libs/common-ui b/libs/common-ui index 9c2c429df..2e74e2649 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 9c2c429df35245d208705c70d97f648ea1c39ac6 +Subproject commit 2e74e2649e39d97d8883cb44f9551f18b0c27cd2 diff --git a/libs/red-domain/src/lib/watermarks/watermark.model.ts b/libs/red-domain/src/lib/watermarks/watermark.model.ts index d4d7a11ae..06b667c03 100644 --- a/libs/red-domain/src/lib/watermarks/watermark.model.ts +++ b/libs/red-domain/src/lib/watermarks/watermark.model.ts @@ -1,7 +1,7 @@ import { IWatermark, WatermarkOrientation } from './watermark'; import { Entity } from '@iqser/common-ui'; -export class Watermark extends Entity { +export class Watermark extends Entity { readonly id: number; readonly dossierTemplateId: string; readonly enabled: boolean;