Entity url param constant

This commit is contained in:
Adina Țeudan 2022-02-14 12:16:24 +02:00
parent 56b93d908a
commit d3d8b16f8e
27 changed files with 62 additions and 32 deletions

View File

@ -4,6 +4,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service';
import { FilesMapService } from '@services/entity-services/files-map.service';
import { FilesService } from '@services/entity-services/files.service';
import { firstValueFrom } from 'rxjs';
import { DOSSIER_ID } from '@utils/constants';
@Injectable({ providedIn: 'root' })
export class DossierFilesGuard implements CanActivate {
@ -15,7 +16,7 @@ export class DossierFilesGuard implements CanActivate {
) {}
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
const dossierId = route.paramMap.get('dossierId');
const dossierId = route.paramMap.get(DOSSIER_ID);
if (!this._dossiersService.has(dossierId)) {
await this._router.navigate(['/main', 'dossiers']);

View File

@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';
import { FilesMapService } from '@services/entity-services/files-map.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { DOSSIER_ID, FILE_ID } from '@utils/constants';
@Injectable({ providedIn: 'root' })
export class FilePreviewGuard implements CanActivate {
@ -12,8 +13,8 @@ export class FilePreviewGuard implements CanActivate {
) {}
async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {
const dossierId = route.paramMap.get('dossierId');
const fileId = route.paramMap.get('fileId');
const dossierId = route.paramMap.get(DOSSIER_ID);
const fileId = route.paramMap.get(FILE_ID);
const dossier = this._dossiersService.find(dossierId);

View File

@ -4,6 +4,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { adminSideNavTranslations } from '../translations/admin-side-nav-translations';
import { UserService } from '@services/user.service';
import { ActivatedRoute } from '@angular/router';
import { DICTIONARY_TYPE } from '@utils/constants';
type Type = 'settings' | 'dossierTemplates';
@ -77,6 +78,6 @@ export class AdminSideNavComponent implements OnInit {
}
ngOnInit(): void {
this.prefix = this._route.snapshot.paramMap.get('dictionary') ? '../../' : '../';
this.prefix = this._route.snapshot.paramMap.get(DICTIONARY_TYPE) ? '../../' : '../';
}
}

View File

@ -5,6 +5,7 @@ import { map, switchMap } from 'rxjs/operators';
import { ActivatedRoute } from '@angular/router';
import { Dictionary, DossierTemplate } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
selector: 'redaction-dossier-template-breadcrumbs',
@ -22,11 +23,11 @@ export class DossierTemplateBreadcrumbsComponent {
private readonly _route: ActivatedRoute,
) {
this.dossierTemplate$ = _route.paramMap.pipe(
map(params => params.get('dossierTemplateId')),
map(params => params.get(DOSSIER_TEMPLATE_ID)),
switchMap((dossierTemplateId: string) => this._dossierTemplatesService.getEntityChanged$(dossierTemplateId)),
);
this.activeDictionary$ = _route.paramMap.pipe(
map(params => [params.get('dossierTemplateId'), params.get('dictionary')]),
map(params => [params.get(DOSSIER_TEMPLATE_ID), params.get('dictionary')]),
switchMap(([dossierTemplateId, dictionary]: [string, string]) =>
dictionary ? this._dictionariesMapService.watch$(dossierTemplateId, dictionary) : of(undefined),
),

View File

@ -16,6 +16,7 @@ import { DictionaryService } from '@shared/services/dictionary.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { firstValueFrom } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
interface ListItem extends IListable {
readonly key: string;
@ -50,7 +51,7 @@ export class DefaultColorsScreenComponent extends ListingComponent<ListItem> {
private readonly _route: ActivatedRoute,
) {
super(_injector);
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
openEditColorDialog($event: MouseEvent, color: { key: DefaultColorType | string; value: string }) {
@ -79,7 +80,7 @@ export class DefaultColorsScreenComponent extends ListingComponent<ListItem> {
searchKey: key,
value: data[key],
}))
.filter(entry => entry.id !== 'dossierTemplateId');
.filter(entry => entry.id !== DOSSIER_TEMPLATE_ID);
this.entitiesService.setEntities(entities);
this._loadingService.stop();
}

View File

@ -20,6 +20,7 @@ import { DossierTemplateStatsService } from '@services/entity-services/dossier-t
import { ActivatedRoute } from '@angular/router';
import { tap } from 'rxjs/operators';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './dictionary-listing-screen.component.html',
@ -54,7 +55,7 @@ export class DictionaryListingScreenComponent extends ListingComponent<Dictionar
) {
super(_injector);
_loadingService.start();
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
this.templateStats$ = this._dossierTemplateStatsService
.watch$(this.#dossierTemplateId)
.pipe(tap(templateStats => this._loadDictionaryData(templateStats)));

View File

@ -11,6 +11,7 @@ import { Dictionary } from '@red/domain';
import { firstValueFrom, Observable, of } from 'rxjs';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { map, switchMap } from 'rxjs/operators';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './dictionary-overview-screen.component.html',
@ -41,7 +42,7 @@ export class DictionaryOverviewScreenComponent {
private readonly _route: ActivatedRoute,
) {
this.dictionary$ = _route.paramMap.pipe(
map(params => [params.get('dossierTemplateId'), params.get('dictionary')]),
map(params => [params.get(DOSSIER_TEMPLATE_ID), params.get('dictionary')]),
switchMap(([dossierTemplateId, dictionary]: [string, string]) =>
dossierTemplateId ? this._dictionariesMapService.watch$(dossierTemplateId, dictionary) : of(undefined),
),

View File

@ -17,6 +17,7 @@ import { DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain';
import { firstValueFrom } from 'rxjs';
import { ReportTemplateService } from '../../../../services/report-template.service';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './dossier-attributes-listing-screen.component.html',
@ -50,7 +51,7 @@ export class DossierAttributesListingScreenComponent extends ListingComponent<Do
private readonly _route: ActivatedRoute,
) {
super(_injector);
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
async ngOnInit(): Promise<void> {

View File

@ -19,6 +19,7 @@ import { firstValueFrom } from 'rxjs';
import { ReportTemplateService } from '../../../../services/report-template.service';
import { ActivatedRoute } from '@angular/router';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './file-attributes-listing-screen.component.html',
@ -65,7 +66,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent<FileA
private readonly _route: ActivatedRoute,
) {
super(_injector);
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
private get _numberOfDisplayedAttrs(): number {

View File

@ -6,6 +6,7 @@ import { DossierTemplate, DossierTemplateStats } from '@red/domain';
import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service';
import { AdminDialogService } from '../../../services/admin-dialog.service';
import { PermissionsService } from '@services/permissions.service';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './dossier-template-info-screen.component.html',
@ -23,7 +24,7 @@ export class DossierTemplateInfoScreenComponent {
private readonly _route: ActivatedRoute,
readonly permissionsService: PermissionsService,
) {
const dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
const dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
this.dossierTemplate$ = this._dossierTemplatesService.getEntityChanged$(dossierTemplateId);
this.dossierTemplateStats$ = this._dossierTemplateStatsService.watch$(dossierTemplateId);
}

View File

@ -16,6 +16,7 @@ import { UserService } from '@services/user.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { firstValueFrom } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
selector: 'redaction-justifications-screen',
@ -50,7 +51,7 @@ export class JustificationsScreenComponent extends ListingComponent<Justificatio
private readonly _route: ActivatedRoute,
) {
super(_injector);
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
async ngOnInit(): Promise<void> {

View File

@ -5,6 +5,7 @@ import { JustificationsDialogService } from '../justifications-dialog.service';
import { UserService } from '@services/user.service';
import { UserPreferenceService } from '@services/user-preference.service';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
selector: 'redaction-table-item',
@ -25,7 +26,7 @@ export class TableItemComponent {
readonly userService: UserService,
private readonly _route: ActivatedRoute,
) {
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
openEditJustificationDialog() {

View File

@ -14,6 +14,7 @@ import { DossierTemplatesService } from '@services/entity-services/dossier-templ
import { ReportTemplateService } from '@services/report-template.service';
import { BehaviorSubject, firstValueFrom } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
interface Placeholder {
placeholder: string;
@ -46,7 +47,7 @@ export class ReportsScreenComponent implements OnInit {
private readonly _route: ActivatedRoute,
readonly permissionsService: PermissionsService,
) {
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
async ngOnInit() {

View File

@ -7,6 +7,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { RulesService } from '../../../services/rules.service';
import { firstValueFrom } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
import ICodeEditor = monaco.editor.ICodeEditor;
import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration;
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;
@ -47,7 +48,7 @@ export class RulesScreenComponent implements OnInit {
private readonly _loadingService: LoadingService,
private readonly _route: ActivatedRoute,
) {
this.#dossierTemplateId = _route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
set isLeavingPage(isLeaving: boolean) {

View File

@ -14,6 +14,7 @@ import { WatermarkService } from '@shared/services/watermark.service';
import { firstValueFrom, Observable, of, switchMap } from 'rxjs';
import { catchError, tap } from 'rxjs/operators';
import { ActivatedRoute } from '@angular/router';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
export const DEFAULT_WATERMARK: IWatermark = {
text: null,
@ -51,7 +52,7 @@ export class WatermarkScreenComponent {
private readonly _route: ActivatedRoute,
) {
this._loadingService.start();
this.#dossierTemplateId = this._route.snapshot.paramMap.get('dossierTemplateId');
this.#dossierTemplateId = this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
get changed(): boolean {

View File

@ -6,6 +6,7 @@ import { UserService } from '@services/user.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { firstValueFrom } from 'rxjs';
import { DictionaryService } from '../../../../shared/services/dictionary.service';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
selector: 'redaction-dossier-template-actions',
@ -30,7 +31,7 @@ export class DossierTemplateActionsComponent implements OnInit {
) {}
ngOnInit() {
this.dossierTemplateId ??= this._route.snapshot.paramMap.get('dossierTemplateId');
this.dossierTemplateId ??= this._route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID);
}
openEditDossierTemplateDialog($event: MouseEvent) {

View File

@ -9,6 +9,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { ReportTemplateService } from '@services/report-template.service';
import { firstValueFrom } from 'rxjs';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
templateUrl: './add-dossier-dialog.component.html',
@ -129,7 +130,7 @@ export class AddDossierDialogComponent extends BaseDialogComponent {
dossierName: this.form.get('dossierName').value,
description: this.form.get('description').value,
dueDate: this.hasDueDate ? this.form.get('dueDate').value : undefined,
dossierTemplateId: this.form.get('dossierTemplateId').value,
dossierTemplateId: this.form.get(DOSSIER_TEMPLATE_ID).value,
downloadFileTypes: this.form.get('downloadFileTypes').value,
reportTemplateIds: this.form.get('reportTemplateIds').value,
watermarkEnabled: this.form.get('watermarkEnabled').value,

View File

@ -14,6 +14,7 @@ import { DossiersService } from '@services/entity-services/dossiers.service';
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
import { DossierStatsService } from '@services/entity-services/dossier-stats.service';
import { firstValueFrom } from 'rxjs';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Component({
selector: 'redaction-edit-dossier-general-info',
@ -94,7 +95,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
watermarkEnabled: this.form.get('watermarkEnabled').value,
watermarkPreviewEnabled: this.form.get('watermarkPreviewEnabled').value,
dueDate: this.hasDueDate ? this.form.get('dueDate').value : undefined,
dossierTemplateId: this.form.get('dossierTemplateId').value,
dossierTemplateId: this.form.get(DOSSIER_TEMPLATE_ID).value,
} as IDossierRequest;
try {
await firstValueFrom(this._dossiersService.createOrUpdate(dossier));

View File

@ -13,6 +13,7 @@ import { DossierStatsService } from '@services/entity-services/dossier-stats.ser
import { pluck, switchMap } from 'rxjs/operators';
import { DossiersDialogService } from '../../../../services/dossiers-dialog.service';
import { FilesService } from '@services/entity-services/files.service';
import { DOSSIER_ID } from '@utils/constants';
@Component({
selector: 'redaction-dossier-details',
@ -45,7 +46,7 @@ export class DossierDetailsComponent {
private readonly _dialogService: DossiersDialogService,
activatedRoute: ActivatedRoute,
) {
this.dossierId = activatedRoute.snapshot.paramMap.get('dossierId');
this.dossierId = activatedRoute.snapshot.paramMap.get(DOSSIER_ID);
this.dossier$ = this.dossiersService.getEntityChanged$(this.dossierId).pipe(shareLast());
this.dossierStats$ = this.dossier$.pipe(
pluck('dossierId'),

View File

@ -44,6 +44,7 @@ import { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@services/user-preference.service';
import { FilesMapService } from '@services/entity-services/files-map.service';
import { FilesService } from '@services/entity-services/files.service';
import { DOSSIER_ID } from '@utils/constants';
@Component({
templateUrl: './dossier-overview-screen.component.html',
@ -93,7 +94,7 @@ export class DossierOverviewScreenComponent extends ListingComponent<File> imple
readonly activatedRoute: ActivatedRoute,
) {
super(_injector);
this.dossierId = activatedRoute.snapshot.paramMap.get('dossierId');
this.dossierId = activatedRoute.snapshot.paramMap.get(DOSSIER_ID);
this.dossier$ = this._dossiersService
.getEntityChanged$(this.dossierId)
.pipe(tap(dossier => (this.dossierTemplateId = dossier.dossierTemplateId)));

View File

@ -9,6 +9,7 @@ import { PermissionsService } from '../../../../../services/permissions.service'
import { boolFactory, shareLast } from '@iqser/common-ui';
import { filter, startWith } from 'rxjs/operators';
import { FileManagementService } from '@services/entity-services/file-management.service';
import { DOSSIER_ID, FILE_ID } from '@utils/constants';
@Injectable()
export class FilePreviewStateService {
@ -32,8 +33,8 @@ export class FilePreviewStateService {
activatedRoute: ActivatedRoute,
private readonly _fileManagementService: FileManagementService,
) {
this.fileId = activatedRoute.snapshot.paramMap.get('fileId');
this.dossierId = activatedRoute.snapshot.paramMap.get('dossierId');
this.fileId = activatedRoute.snapshot.paramMap.get(FILE_ID);
this.dossierId = activatedRoute.snapshot.paramMap.get(DOSSIER_ID);
this.dossierTemplateId = dossiersService.find(this.dossierId).dossierTemplateId;
this.dossier$ = dossiersService.getEntityChanged$(this.dossierId);

View File

@ -7,6 +7,7 @@ import { FilesMapService } from '@services/entity-services/files-map.service';
import { DossiersService } from '@services/entity-services/dossiers.service';
import { TranslateService } from '@ngx-translate/core';
import { BreadcrumbTypes } from '@red/domain';
import { DOSSIER_ID, FILE_ID } from '@utils/constants';
export type RouterLinkActiveOptions = { exact: boolean } | IsActiveMatchOptions;
@ -82,7 +83,7 @@ export class BreadcrumbsService {
}
private _addDossierBreadcrumb(route: ActivatedRouteSnapshot): void {
const dossierId = route.paramMap.get('dossierId');
const dossierId = route.paramMap.get(DOSSIER_ID);
this._append({
name$: this._dossiersService.getEntityChanged$(dossierId).pipe(pluck('dossierName')),
routerLink: ['/main', 'dossiers', dossierId],
@ -91,8 +92,8 @@ export class BreadcrumbsService {
}
private _addFileBreadcrumb(route: ActivatedRouteSnapshot): void {
const dossierId = route.paramMap.get('dossierId');
const fileId = route.paramMap.get('fileId');
const dossierId = route.paramMap.get(DOSSIER_ID);
const fileId = route.paramMap.get(FILE_ID);
this._append({
name$: this._filesMapService.watch$(dossierId, fileId).pipe(pluck('filename')),
routerLink: ['/main', 'dossiers', dossierId, 'file', fileId],

View File

@ -1,11 +1,12 @@
import { Injectable } from '@angular/core';
import { Dictionary, IDictionary } from '@red/domain';
import { EntitiesMapService } from '@iqser/common-ui';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Injectable({ providedIn: 'root' })
export class DictionariesMapService extends EntitiesMapService<Dictionary, IDictionary> {
constructor() {
super('dossierTemplateId');
super(DOSSIER_TEMPLATE_ID);
}
/** If the type is not found, it returns the 'default' type. */

View File

@ -1,12 +1,13 @@
import { Injectable, Injector } from '@angular/core';
import { StatsService } from '@iqser/common-ui';
import { DossierStats, IDossierStats } from '@red/domain';
import { DOSSIER_ID } from '@utils/constants';
@Injectable({
providedIn: 'root',
})
export class DossierStatsService extends StatsService<DossierStats, IDossierStats> {
constructor(protected readonly _injector: Injector) {
super(_injector, 'dossierId', DossierStats, 'dossier-stats');
super(_injector, DOSSIER_ID, DossierStats, 'dossier-stats');
}
}

View File

@ -1,12 +1,13 @@
import { Injectable, Injector } from '@angular/core';
import { StatsService } from '@iqser/common-ui';
import { DossierTemplateStats, IDossierTemplateStats } from '@red/domain';
import { DOSSIER_TEMPLATE_ID } from '@utils/constants';
@Injectable({
providedIn: 'root',
})
export class DossierTemplateStatsService extends StatsService<DossierTemplateStats, IDossierTemplateStats> {
constructor(protected readonly _injector: Injector) {
super(_injector, 'dossierTemplateId', DossierTemplateStats, 'dossier-template-stats');
super(_injector, DOSSIER_TEMPLATE_ID, DossierTemplateStats, 'dossier-template-stats');
}
}

View File

@ -1,11 +1,12 @@
import { Injectable } from '@angular/core';
import { File, IFile } from '@red/domain';
import { EntitiesMapService } from '@iqser/common-ui';
import { DOSSIER_ID } from '@utils/constants';
@Injectable({ providedIn: 'root' })
export class FilesMapService extends EntitiesMapService<File, IFile> {
constructor() {
super('dossierId');
super(DOSSIER_ID);
}
replaceFiles(files: File[], property: keyof IFile, generateValue: Function) {

View File

@ -1,2 +1,6 @@
export const CHANGED_CHECK_INTERVAL = 5000;
export const FALLBACK_COLOR = '#CCCCCC';
export const DOSSIER_ID = 'dossierId';
export const FILE_ID = 'fileId';
export const DOSSIER_TEMPLATE_ID = 'dossierTemplateId';
export const DICTIONARY_TYPE = 'dictionary';