RED-4756: use number as id for watermarks
This commit is contained in:
parent
d254bd6b7b
commit
a1e37546b7
@ -10,7 +10,7 @@ import { firstValueFrom } from 'rxjs';
|
|||||||
selector: 'redaction-downloads-list-screen',
|
selector: 'redaction-downloads-list-screen',
|
||||||
templateUrl: './downloads-list-screen.component.html',
|
templateUrl: './downloads-list-screen.component.html',
|
||||||
styleUrls: ['./downloads-list-screen.component.scss'],
|
styleUrls: ['./downloads-list-screen.component.scss'],
|
||||||
providers: listingProvidersFactory({
|
providers: listingProvidersFactory<DownloadStatus>({
|
||||||
entitiesService: FileDownloadService,
|
entitiesService: FileDownloadService,
|
||||||
component: DownloadsListScreenComponent,
|
component: DownloadsListScreenComponent,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -9,7 +9,7 @@ export class WatermarkExistsGuard implements CanActivate {
|
|||||||
|
|
||||||
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
|
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
|
||||||
const dossierTemplateId = route.parent.paramMap.get(DOSSIER_TEMPLATE_ID);
|
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)) {
|
if (this._watermarksMapService.get(dossierTemplateId, watermarkId)) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import { firstValueFrom } from 'rxjs';
|
|||||||
@Component({
|
@Component({
|
||||||
templateUrl: './dossier-attributes-listing-screen.component.html',
|
templateUrl: './dossier-attributes-listing-screen.component.html',
|
||||||
styleUrls: ['./dossier-attributes-listing-screen.component.scss'],
|
styleUrls: ['./dossier-attributes-listing-screen.component.scss'],
|
||||||
providers: listingProvidersFactory({
|
providers: listingProvidersFactory<DossierAttributeConfig>({
|
||||||
entitiesService: DossierAttributesService,
|
entitiesService: DossierAttributesService,
|
||||||
component: DossierAttributesListingScreenComponent,
|
component: DossierAttributesListingScreenComponent,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -20,7 +20,7 @@ import { firstValueFrom } from 'rxjs';
|
|||||||
templateUrl: './dossier-templates-listing-screen.component.html',
|
templateUrl: './dossier-templates-listing-screen.component.html',
|
||||||
styleUrls: ['./dossier-templates-listing-screen.component.scss'],
|
styleUrls: ['./dossier-templates-listing-screen.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
providers: listingProvidersFactory({
|
providers: listingProvidersFactory<DossierTemplate>({
|
||||||
entitiesService: DossierTemplatesService,
|
entitiesService: DossierTemplatesService,
|
||||||
component: DossierTemplatesListingScreenComponent,
|
component: DossierTemplatesListingScreenComponent,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import { firstValueFrom } from 'rxjs';
|
|||||||
templateUrl: './justifications-screen.component.html',
|
templateUrl: './justifications-screen.component.html',
|
||||||
styleUrls: ['./justifications-screen.component.scss'],
|
styleUrls: ['./justifications-screen.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
providers: listingProvidersFactory({
|
providers: listingProvidersFactory<Justification>({
|
||||||
entitiesService: JustificationsService,
|
entitiesService: JustificationsService,
|
||||||
component: JustificationsScreenComponent,
|
component: JustificationsScreenComponent,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -32,7 +32,7 @@ function configToFilter({ key, label }: DonutChartConfig) {
|
|||||||
@Component({
|
@Component({
|
||||||
templateUrl: './user-listing-screen.component.html',
|
templateUrl: './user-listing-screen.component.html',
|
||||||
styleUrls: ['./user-listing-screen.component.scss'],
|
styleUrls: ['./user-listing-screen.component.scss'],
|
||||||
providers: listingProvidersFactory({
|
providers: listingProvidersFactory<User>({
|
||||||
entitiesService: UserService,
|
entitiesService: UserService,
|
||||||
component: UserListingScreenComponent,
|
component: UserListingScreenComponent,
|
||||||
}),
|
}),
|
||||||
@ -118,6 +118,12 @@ export class UserListingScreenComponent extends ListingComponent<User> implement
|
|||||||
this.openDeleteUsersDialog(this.listingService.selectedIds as string[]);
|
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() {
|
async #loadData() {
|
||||||
await firstValueFrom(this._userService.loadAll());
|
await firstValueFrom(this._userService.loadAll());
|
||||||
this.#computeStats();
|
this.#computeStats();
|
||||||
@ -145,10 +151,4 @@ export class UserListingScreenComponent extends ListingComponent<User> implement
|
|||||||
};
|
};
|
||||||
this.filterService.addFilterGroups([roleFiltersGroup]);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,7 @@ export class WatermarkScreenComponent {
|
|||||||
readonly form: UntypedFormGroup = this._getForm();
|
readonly form: UntypedFormGroup = this._getForm();
|
||||||
readonly watermark$: Observable<Partial<IWatermark>>;
|
readonly watermark$: Observable<Partial<IWatermark>>;
|
||||||
readonly #dossierTemplateId: string = getParam(DOSSIER_TEMPLATE_ID);
|
readonly #dossierTemplateId: string = getParam(DOSSIER_TEMPLATE_ID);
|
||||||
readonly #watermarkId = getParam(WATERMARK_ID);
|
readonly #watermarkId = Number(getParam(WATERMARK_ID));
|
||||||
private _instance: WebViewerInstance;
|
private _instance: WebViewerInstance;
|
||||||
private _watermark: Partial<IWatermark> = {};
|
private _watermark: Partial<IWatermark> = {};
|
||||||
@ViewChild('viewer', { static: true })
|
@ViewChild('viewer', { static: true })
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import {
|
|||||||
SortingService,
|
SortingService,
|
||||||
Toaster,
|
Toaster,
|
||||||
} from '@iqser/common-ui';
|
} from '@iqser/common-ui';
|
||||||
import { Dossier, File } from '@red/domain';
|
import { Dossier, File, IFile } from '@red/domain';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { ReanalysisService } from '@services/reanalysis.service';
|
import { ReanalysisService } from '@services/reanalysis.service';
|
||||||
@ -21,7 +21,6 @@ import { ConfigService } from '../../config.service';
|
|||||||
import { firstValueFrom } from 'rxjs';
|
import { firstValueFrom } from 'rxjs';
|
||||||
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';
|
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-dossier-overview-screen-header',
|
selector: 'redaction-dossier-overview-screen-header',
|
||||||
@ -38,12 +37,11 @@ export class DossierOverviewScreenHeaderComponent implements OnInit {
|
|||||||
private readonly _toaster: Toaster,
|
private readonly _toaster: Toaster,
|
||||||
readonly configService: ConfigService,
|
readonly configService: ConfigService,
|
||||||
readonly router: Router,
|
readonly router: Router,
|
||||||
readonly dossiersService: DossiersService,
|
|
||||||
private readonly _userService: UserService,
|
private readonly _userService: UserService,
|
||||||
readonly listingService: ListingService<File>,
|
readonly listingService: ListingService<File>,
|
||||||
readonly sortingService: SortingService<File>,
|
readonly sortingService: SortingService<File>,
|
||||||
readonly permissionsService: PermissionsService,
|
readonly permissionsService: PermissionsService,
|
||||||
readonly entitiesService: EntitiesService<File>,
|
readonly entitiesService: EntitiesService<IFile, File>,
|
||||||
private readonly _reanalysisService: ReanalysisService,
|
private readonly _reanalysisService: ReanalysisService,
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _primaryFileAttributeService: PrimaryFileAttributeService,
|
private readonly _primaryFileAttributeService: PrimaryFileAttributeService,
|
||||||
|
|||||||
@ -11,7 +11,7 @@ export class AnnotationsListingService extends ListingService<AnnotationWrapper>
|
|||||||
constructor(
|
constructor(
|
||||||
protected readonly _filterService: FilterService,
|
protected readonly _filterService: FilterService,
|
||||||
protected readonly _searchService: SearchService<AnnotationWrapper>,
|
protected readonly _searchService: SearchService<AnnotationWrapper>,
|
||||||
protected readonly _entitiesService: EntitiesService<AnnotationWrapper>,
|
protected readonly _entitiesService: EntitiesService<AnnotationWrapper, AnnotationWrapper>,
|
||||||
private readonly _multiSelectService: MultiSelectService,
|
private readonly _multiSelectService: MultiSelectService,
|
||||||
private readonly _pdf: PdfViewer,
|
private readonly _pdf: PdfViewer,
|
||||||
private readonly _annotationManager: REDAnnotationManager,
|
private readonly _annotationManager: REDAnnotationManager,
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import { DossierDictionariesMapService } from '@services/entity-services/dossier
|
|||||||
const DELTA_VIEW_TIME = 10 * 60 * 1000; // 10 minutes;
|
const DELTA_VIEW_TIME = 10 * 60 * 1000; // 10 minutes;
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FileDataService extends EntitiesService<AnnotationWrapper> {
|
export class FileDataService extends EntitiesService<AnnotationWrapper, AnnotationWrapper> {
|
||||||
viewedPages: IViewedPage[] = [];
|
viewedPages: IViewedPage[] = [];
|
||||||
missingTypes = new Set<string>();
|
missingTypes = new Set<string>();
|
||||||
readonly hasChangeLog$ = new BehaviorSubject<boolean>(false);
|
readonly hasChangeLog$ = new BehaviorSubject<boolean>(false);
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { IPermissionsMapping, PermissionsMapping } from '@red/domain';
|
|||||||
import { EntitiesMapService } from '@iqser/common-ui';
|
import { EntitiesMapService } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class PermissionsConfigurationMapService extends EntitiesMapService<PermissionsMapping, IPermissionsMapping> {
|
export class PermissionsConfigurationMapService extends EntitiesMapService<IPermissionsMapping, PermissionsMapping> {
|
||||||
protected readonly _primaryKey = 'name';
|
protected readonly _primaryKey = 'name';
|
||||||
|
|
||||||
getMappedPermissions(targetObject: string): string[] {
|
getMappedPermissions(targetObject: string): string[] {
|
||||||
|
|||||||
@ -3,6 +3,6 @@ import { IPermissionsMapping, PermissionsMapping } from '@red/domain';
|
|||||||
import { EntitiesMapService } from '@iqser/common-ui';
|
import { EntitiesMapService } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class PermissionsMapService extends EntitiesMapService<PermissionsMapping, IPermissionsMapping> {
|
export class PermissionsMapService extends EntitiesMapService<IPermissionsMapping, PermissionsMapping> {
|
||||||
protected readonly _primaryKey = 'name';
|
protected readonly _primaryKey = 'name';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,6 @@ import { Dictionary, DOSSIER_TEMPLATE_ID, IDictionary } from '@red/domain';
|
|||||||
import { EntitiesMapService } from '@iqser/common-ui';
|
import { EntitiesMapService } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class DictionariesMapService extends EntitiesMapService<Dictionary, IDictionary> {
|
export class DictionariesMapService extends EntitiesMapService<IDictionary, Dictionary> {
|
||||||
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,6 @@ import { Dictionary, DOSSIER_ID, IDictionary } from '@red/domain';
|
|||||||
import { EntitiesMapService } from '@iqser/common-ui';
|
import { EntitiesMapService } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class DossierDictionariesMapService extends EntitiesMapService<Dictionary, IDictionary> {
|
export class DossierDictionariesMapService extends EntitiesMapService<IDictionary, Dictionary> {
|
||||||
protected readonly _primaryKey = DOSSIER_ID;
|
protected readonly _primaryKey = DOSSIER_ID;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { EntitiesMapService } from '@iqser/common-ui';
|
|||||||
import { flatMap } from 'lodash-es';
|
import { flatMap } from 'lodash-es';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class DossierStatesMapService extends EntitiesMapService<DossierState, IDossierState> {
|
export class DossierStatesMapService extends EntitiesMapService<IDossierState, DossierState> {
|
||||||
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
||||||
|
|
||||||
get stats(): DonutChartConfig[] {
|
get stats(): DonutChartConfig[] {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se
|
|||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class TrashService extends EntitiesService<TrashItem> {
|
export class TrashService extends EntitiesService<TrashItem, TrashItem> {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _toaster: Toaster,
|
private readonly _toaster: Toaster,
|
||||||
private readonly _systemPreferencesService: SystemPreferencesService,
|
private readonly _systemPreferencesService: SystemPreferencesService,
|
||||||
|
|||||||
@ -3,6 +3,6 @@ import { DOSSIER_TEMPLATE_ID, IWatermark, Watermark } from '@red/domain';
|
|||||||
import { EntitiesMapService } from '@iqser/common-ui';
|
import { EntitiesMapService } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class WatermarksMapService extends EntitiesMapService<Watermark, IWatermark> {
|
export class WatermarksMapService extends EntitiesMapService<IWatermark, Watermark> {
|
||||||
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
protected readonly _primaryKey = DOSSIER_TEMPLATE_ID;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { DOSSIER_ID, File, IFile } from '@red/domain';
|
|||||||
import { EntitiesMapService, NonFunctionKeys } from '@iqser/common-ui';
|
import { EntitiesMapService, NonFunctionKeys } from '@iqser/common-ui';
|
||||||
|
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FilesMapService extends EntitiesMapService<File, IFile> {
|
export class FilesMapService extends EntitiesMapService<IFile, File> {
|
||||||
protected readonly _primaryKey = DOSSIER_ID;
|
protected readonly _primaryKey = DOSSIER_ID;
|
||||||
|
|
||||||
replaceFiles<T extends NonFunctionKeys<File>, T2 extends File[T]>(files: File[], property: T, generateValue: (value: T2) => T2) {
|
replaceFiles<T extends NonFunctionKeys<File>, T2 extends File[T]>(files: File[], property: T, generateValue: (value: T2) => T2) {
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit 9c2c429df35245d208705c70d97f648ea1c39ac6
|
Subproject commit 2e74e2649e39d97d8883cb44f9551f18b0c27cd2
|
||||||
@ -1,7 +1,7 @@
|
|||||||
import { IWatermark, WatermarkOrientation } from './watermark';
|
import { IWatermark, WatermarkOrientation } from './watermark';
|
||||||
import { Entity } from '@iqser/common-ui';
|
import { Entity } from '@iqser/common-ui';
|
||||||
|
|
||||||
export class Watermark extends Entity<IWatermark> {
|
export class Watermark extends Entity<IWatermark, number> {
|
||||||
readonly id: number;
|
readonly id: number;
|
||||||
readonly dossierTemplateId: string;
|
readonly dossierTemplateId: string;
|
||||||
readonly enabled: boolean;
|
readonly enabled: boolean;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user