From e1c0f2d5e6f42bfc7cf0291489fdd7bb007e077e Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 27 Jun 2022 18:20:56 +0300 Subject: [PATCH] RED-4247 - WIP on watermarks list --- .../app/modules/admin/admin-routing.module.ts | 32 ++++-- .../admin-side-nav.component.ts | 2 +- .../src/app/modules/admin/admin.module.ts | 2 + .../watermark-screen.component.ts | 24 +++- .../watermarks-listing-screen.component.html | 105 ++++++++++++++++++ .../watermarks-listing-screen.component.scss | 0 .../watermarks-listing-screen.component.ts | 72 ++++++++++++ .../entity-services/watermark.service.ts | 21 ++-- apps/red-ui/src/assets/config/config.json | 4 +- apps/red-ui/src/assets/i18n/de.json | 25 ++++- apps/red-ui/src/assets/i18n/en.json | 25 ++++- libs/red-domain/src/index.ts | 1 + .../src/lib/dossier-templates/constants.ts | 1 + .../file-attributes/file-attributes-config.ts | 2 +- libs/red-domain/src/lib/shared/index.ts | 1 - libs/red-domain/src/lib/watermarks/index.ts | 2 + .../src/lib/watermarks/watermark.model.ts | 30 +++++ .../lib/{shared => watermarks}/watermark.ts | 7 ++ 18 files changed, 329 insertions(+), 27 deletions(-) create mode 100644 apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.html create mode 100644 apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.scss create mode 100644 apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.ts create mode 100644 libs/red-domain/src/lib/watermarks/index.ts create mode 100644 libs/red-domain/src/lib/watermarks/watermark.model.ts rename libs/red-domain/src/lib/{shared => watermarks}/watermark.ts (70%) diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts index c41fd089c..288ac6d7d 100644 --- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts @@ -15,12 +15,15 @@ import { GeneralConfigScreenComponent } from './screens/general-config/general-c import { BaseAdminScreenComponent } from './base-admin-screen/base-admin-screen.component'; import { BaseDossierTemplateScreenComponent } from './base-dossier-templates-screen/base-dossier-template-screen.component'; import { DossierTemplatesGuard } from '@guards/dossier-templates.guard'; -import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, ENTITY_TYPE, WATERMARK_ID } from '@red/domain'; import { DossierTemplateExistsGuard } from '@guards/dossier-template-exists.guard'; import { EntityExistsGuard } from '@guards/entity-exists-guard.service'; import { DossierStatesListingScreenComponent } from './screens/dossier-states-listing/dossier-states-listing-screen.component'; import { BaseEntityScreenComponent } from './base-entity-screen/base-entity-screen.component'; import { PermissionsGuard } from '../../guards/permissions-guard'; +import { WatermarksListingScreenComponent } from './screens/watermarks-listing/watermarks-listing-screen.component'; +import { WatermarkScreenComponent } from './screens/watermark/watermark-screen/watermark-screen.component'; +import { WatermarkModule } from './screens/watermark/watermark.module'; const dossierTemplateIdRoutes: Routes = [ { @@ -69,13 +72,26 @@ const dossierTemplateIdRoutes: Routes = [ }, }, { - path: 'watermark', - component: BaseDossierTemplateScreenComponent, - canActivate: [CompositeRouteGuard], - data: { - routeGuards: [AuthGuard, RedRoleGuard], - }, - loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), + path: 'watermarks', + children: [ + { + path: '', + component: WatermarksListingScreenComponent, + canActivate: [CompositeRouteGuard], + data: { + routeGuards: [AuthGuard, RedRoleGuard], + }, + }, + { + path: `:${WATERMARK_ID}`, + component: WatermarkScreenComponent, + canActivate: [CompositeRouteGuard], + loadChildren: () => import('./screens/watermark/watermark.module').then(m => m.WatermarkModule), + data: { + routeGuards: [AuthGuard, RedRoleGuard], + }, + }, + ], }, { path: 'reports', diff --git a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts index 5efadeea0..47b8f12ab 100644 --- a/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts +++ b/apps/red-ui/src/app/modules/admin/admin-side-nav/admin-side-nav.component.ts @@ -59,7 +59,7 @@ export class AdminSideNavComponent implements OnInit { hideIf: !this.userPreferenceService.areDevFeaturesEnabled, }, { screen: 'default-colors', label: _('admin-side-nav.default-colors') }, - { screen: 'watermark', label: _('admin-side-nav.watermark') }, + { screen: 'watermarks', label: _('admin-side-nav.watermarks') }, { screen: 'file-attributes', label: _('admin-side-nav.file-attributes') }, { screen: 'dossier-attributes', label: _('admin-side-nav.dossier-attributes') }, { screen: 'dossier-states', label: _('admin-side-nav.dossier-states') }, diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index 569e9506f..fa4d2dbce 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -46,6 +46,7 @@ import { SystemPreferencesFormComponent } from './screens/general-config/system- import { ConfigureCertificateDialogComponent } from './dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component'; import { PkcsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component'; import { KmsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component'; +import { WatermarksListingScreenComponent } from './screens/watermarks-listing/watermarks-listing-screen.component'; const dialogs = [ AddEditCloneDossierTemplateDialogComponent, @@ -73,6 +74,7 @@ const screens = [ GeneralConfigScreenComponent, DossierAttributesListingScreenComponent, DossierStatesListingScreenComponent, + WatermarksListingScreenComponent, ]; const components = [ 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 a1facac72..d33fcf83c 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 @@ -4,7 +4,7 @@ import WebViewer, { WebViewerInstance } from '@pdftron/webviewer'; import { HttpClient } from '@angular/common/http'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { Debounce, IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; -import { DOSSIER_TEMPLATE_ID, IWatermark, WatermarkOrientation, WatermarkOrientations } from '@red/domain'; +import { DOSSIER_TEMPLATE_ID, IWatermark, WATERMARK_ID, WatermarkOrientation, WatermarkOrientations } from '@red/domain'; import { BASE_HREF_FN, BaseHrefFn } from '../../../../../tokens'; import { stampPDFPage } from '@utils/page-stamper'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @@ -15,12 +15,19 @@ import { ActivatedRoute } from '@angular/router'; import { LicenseService } from '../../../../../services/license.service'; export const DEFAULT_WATERMARK: IWatermark = { + id: null, + dossierTemplateId: null, text: null, + name: null, + enabled: false, hexColor: '#dd4d50', opacity: 70, fontSize: 11, fontType: 'sans-serif', orientation: WatermarkOrientations.DIAGONAL, + createdBy: null, + dateAdded: null, + dateModified: null, } as const; @Component({ @@ -32,8 +39,9 @@ export class WatermarkScreenComponent implements OnInit { readonly iconButtonTypes = IconButtonTypes; readonly form: UntypedFormGroup = this._getForm(); readonly #dossierTemplateId: string; + readonly #watermarkId: string; private _instance: WebViewerInstance; - private _watermark: IWatermark = {}; + private _watermark: IWatermark = {} as IWatermark; @ViewChild('viewer', { static: true }) private _viewer: ElementRef; @@ -51,6 +59,7 @@ export class WatermarkScreenComponent implements OnInit { ) { this._loadingService.start(); this.#dossierTemplateId = route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + this.#watermarkId = route.snapshot.paramMap.get(WATERMARK_ID); } get changed(): boolean { @@ -78,8 +87,8 @@ export class WatermarkScreenComponent implements OnInit { const watermark: IWatermark = this.form.getRawValue(); const observable = watermark.text - ? this._watermarkService.saveWatermark(watermark, this.#dossierTemplateId) - : this._watermarkService.deleteWatermark(this.#dossierTemplateId); + ? this._watermarkService.saveWatermark(watermark) + : this._watermarkService.deleteWatermark(this.#watermarkId); try { await firstValueFrom( @@ -112,10 +121,12 @@ export class WatermarkScreenComponent implements OnInit { } private _loadWatermark(): Observable { - return this._watermarkService.getWatermark(this.#dossierTemplateId).pipe( + return this._watermarkService.getWatermark(this.#watermarkId).pipe( catchError(() => of(DEFAULT_WATERMARK)), tap(watermark => { this._watermark = watermark; + console.log('watermark: ', this._watermark); + delete watermark.id; this.form.setValue({ ...watermark }); this._loadViewer(); }), @@ -195,6 +206,9 @@ export class WatermarkScreenComponent implements OnInit { const defaultFormControl = [{ ...defaultValue }, Validators.required]; return this._formBuilder.group({ + name: [{ ...defaultValue }], + enabled: [{ ...defaultValue }], + dossierTemplateId: [{ ...defaultValue }], text: [{ ...defaultValue }], hexColor: [...defaultFormControl], opacity: [...defaultFormControl], diff --git a/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.html new file mode 100644 index 000000000..85fcf1790 --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.html @@ -0,0 +1,105 @@ +
+ + +
+
+ + + +
+ +
+
+
+ + +
+ +
+
+ + + + + + +
+
+ {{ watermark.name }} +
+ +
+ +
+ +
+ +
+ +
+
+ {{ watermark.dateAdded | date: 'd MMM yyyy' }} +
+
+ +
+
+ {{ watermark.dateModified | date: 'd MMM yyyy' }} +
+
+ +
+
+ + + +
+
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.ts new file mode 100644 index 000000000..544d14dfa --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/screens/watermarks-listing/watermarks-listing-screen.component.ts @@ -0,0 +1,72 @@ +import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit } from '@angular/core'; +import { + CircleButtonTypes, + DefaultListingServices, + IconButtonTypes, + ListingComponent, + LoadingService, + TableColumnConfig, +} from '@iqser/common-ui'; +import { DOSSIER_TEMPLATE_ID, User, Watermark } from '@red/domain'; +import { UserService } from '../../../../services/user.service'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; +import { firstValueFrom } from 'rxjs'; +import { WatermarkService } from '../../../../services/entity-services/watermark.service'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + templateUrl: './watermarks-listing-screen.component.html', + styleUrls: ['./watermarks-listing-screen.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [...DefaultListingServices, { provide: ListingComponent, useExisting: forwardRef(() => WatermarksListingScreenComponent) }], +}) +export class WatermarksListingScreenComponent extends ListingComponent implements OnInit { + private readonly _dossierTemplateId: string; + + readonly iconButtonTypes = IconButtonTypes; + readonly circleButtonTypes = CircleButtonTypes; + readonly currentUser: User; + + readonly tableColumnConfigs: TableColumnConfig[] = [ + { label: _('watermarks-listing.table-col-names.name'), width: '2fr' }, + { label: _('watermarks-listing.table-col-names.status'), class: 'flex-center' }, + { label: _('watermarks-listing.table-col-names.created-by'), class: 'user-column' }, + { label: _('watermarks-listing.table-col-names.created-on') }, + { label: _('watermarks-listing.table-col-names.modified-on') }, + ]; + readonly tableHeaderLabel: string = _('watermarks-listing.table-header.title'); + + constructor( + protected readonly _injector: Injector, + private readonly _route: ActivatedRoute, + private readonly _userService: UserService, + private readonly _loadingService: LoadingService, + private readonly _watermarkService: WatermarkService, + ) { + super(_injector); + this.currentUser = _userService.currentUser; + this._dossierTemplateId = _route.snapshot.paramMap.get(DOSSIER_TEMPLATE_ID); + } + + async ngOnInit(): Promise { + await this._loadData(); + } + + private async _loadData(): Promise { + this._loadingService.start(); + + try { + const response = await firstValueFrom(this._watermarkService.getWatermarks(this._dossierTemplateId)); + const watermarkConfig = response?.map(item => new Watermark(item)) || []; + this.entitiesService.setEntities(watermarkConfig); + } catch (e) {} + + this._loadingService.stop(); + } + + openAddEditWatermarkDialog(event: MouseEvent): void {} + + openConfirmDeleteWatermarkDialog(event: MouseEvent): void {} + + toggleStatus(watermark: Watermark): void {} +} diff --git a/apps/red-ui/src/app/services/entity-services/watermark.service.ts b/apps/red-ui/src/app/services/entity-services/watermark.service.ts index aef6ef9bc..c85eed232 100644 --- a/apps/red-ui/src/app/services/entity-services/watermark.service.ts +++ b/apps/red-ui/src/app/services/entity-services/watermark.service.ts @@ -1,6 +1,7 @@ import { Injectable, Injector } from '@angular/core'; -import { GenericService, RequiredParam, Validate } from '@iqser/common-ui'; +import { GenericService, QueryParam, RequiredParam, Validate } from '@iqser/common-ui'; import { IWatermark } from '@red/domain'; +import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root', @@ -11,17 +12,23 @@ export class WatermarkService extends GenericService { } @Validate() - saveWatermark(@RequiredParam() body: IWatermark, @RequiredParam() dossierTemplateId: string) { - return this._post(body, `${this._defaultModelPath}/${dossierTemplateId}`); + saveWatermark(@RequiredParam() body: IWatermark) { + return this._post(body, `${this._defaultModelPath}`); } @Validate() - deleteWatermark(@RequiredParam() dossierTemplateId: string) { - return super.delete({}, `${this._defaultModelPath}/${dossierTemplateId}`); + deleteWatermark(@RequiredParam() watermarkId: string) { + return super.delete({}, `${this._defaultModelPath}/${watermarkId}`); } @Validate() - getWatermark(@RequiredParam() dossierTemplateId: string) { - return this._getOne([dossierTemplateId]); + getWatermark(@RequiredParam() watermarkId: string) { + return this._getOne([watermarkId]); + } + + @Validate() + getWatermarks(@RequiredParam() dossierTemplateId: string): Observable { + const queryParams: QueryParam[] = [{ key: 'dossierTemplateId', value: dossierTemplateId }]; + return this.getAll(this._defaultModelPath, queryParams); } } diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 322276d2f..72d288759 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dev-08.iqser.cloud/redaction-gateway-v1", + "API_URL": "https://dev-04.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -16,7 +16,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dev-08.iqser.cloud/auth/realms/redaction", + "OAUTH_URL": "https://dev-04.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview" diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index 7f540b547..cd49f2b30 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -186,7 +186,7 @@ "rule-editor": "", "settings": "Einstellungen", "user-management": "", - "watermark": "" + "watermarks": "" }, "annotation-actions": { "accept-recommendation": { @@ -2084,6 +2084,29 @@ }, "title": "Wasserzeichen" }, + "watermarks-listing": { + "action": { + "delete": "", + "edit": "" + }, + "add-new": "", + "bulk-actions": { + "delete": "" + }, + "no-data": { + "title": "" + }, + "table-col-names": { + "created-by": "", + "created-on": "", + "modified-on": "", + "name": "", + "status": "" + }, + "table-header": { + "title": "" + } + }, "workflow": { "selection": { "all": "Alle", diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index c80ca3363..1e56baa82 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -186,7 +186,7 @@ "rule-editor": "Rule Editor", "settings": "Settings", "user-management": "User Management", - "watermark": "Watermark" + "watermarks": "Watermarks" }, "annotation-actions": { "accept-recommendation": { @@ -2084,6 +2084,29 @@ }, "title": "Watermark" }, + "watermarks-listing": { + "action": { + "delete": "Delete", + "edit": "Edit" + }, + "add-new": "New Watermark", + "bulk-actions": { + "delete": "Delete Selected Watermarks" + }, + "no-data": { + "title": "There are no watermarks yet." + }, + "table-col-names": { + "created-by": "Created by", + "created-on": "Created on", + "modified-on": "Modified on", + "name": "Name", + "status": "Status" + }, + "table-header": { + "title": "Watermarks" + } + }, "workflow": { "selection": { "all": "All", diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts index 92d56faad..a10ad047a 100644 --- a/libs/red-domain/src/index.ts +++ b/libs/red-domain/src/index.ts @@ -26,3 +26,4 @@ export * from './lib/text-highlight'; export * from './lib/permissions'; export * from './lib/license'; export * from './lib/digital-signature'; +export * from './lib/watermarks'; diff --git a/libs/red-domain/src/lib/dossier-templates/constants.ts b/libs/red-domain/src/lib/dossier-templates/constants.ts index aa890151f..871b34b58 100644 --- a/libs/red-domain/src/lib/dossier-templates/constants.ts +++ b/libs/red-domain/src/lib/dossier-templates/constants.ts @@ -8,3 +8,4 @@ export type DossierTemplateStatus = keyof typeof DossierTemplateStatuses; export const DOSSIER_TEMPLATE_ID = 'dossierTemplateId'; export const ENTITY_TYPE = 'entity'; +export const WATERMARK_ID = 'watermarkId'; diff --git a/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts b/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts index bac991593..bec6d0e9a 100644 --- a/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts +++ b/libs/red-domain/src/lib/file-attributes/file-attributes-config.ts @@ -3,7 +3,7 @@ import { IFileAttributeConfig } from './file-attribute-config'; export interface IFileAttributesConfig { delimiter?: string; encoding?: string; - keyColumn?: string + keyColumn?: string; filenameMappingColumnHeaderName?: string; fileAttributeConfigs?: IFileAttributeConfig[]; } diff --git a/libs/red-domain/src/lib/shared/index.ts b/libs/red-domain/src/lib/shared/index.ts index f66679007..6e5026112 100644 --- a/libs/red-domain/src/lib/shared/index.ts +++ b/libs/red-domain/src/lib/shared/index.ts @@ -2,7 +2,6 @@ export * from './sorters/status-sorter'; export * from './breadcrumb-types'; export * from './types'; export * from './rules'; -export * from './watermark'; export * from './default-color-type'; export * from './colors'; export * from './view-mode'; diff --git a/libs/red-domain/src/lib/watermarks/index.ts b/libs/red-domain/src/lib/watermarks/index.ts new file mode 100644 index 000000000..b5414a603 --- /dev/null +++ b/libs/red-domain/src/lib/watermarks/index.ts @@ -0,0 +1,2 @@ +export * from './watermark'; +export * from './watermark.model'; diff --git a/libs/red-domain/src/lib/watermarks/watermark.model.ts b/libs/red-domain/src/lib/watermarks/watermark.model.ts new file mode 100644 index 000000000..64279718f --- /dev/null +++ b/libs/red-domain/src/lib/watermarks/watermark.model.ts @@ -0,0 +1,30 @@ +import { IWatermark } from './watermark'; +import { IListable } from '@iqser/common-ui'; + +export class Watermark implements IListable, IWatermark { + readonly id: string; + readonly dossierTemplateId: string; + readonly name: string; + readonly enabled: boolean; + readonly createdBy: string; + readonly dateAdded: string; + readonly dateModified: string; + + constructor(watermarkConfig: IWatermark) { + this.id = watermarkConfig.id; + this.dossierTemplateId = watermarkConfig.dossierTemplateId; + this.name = watermarkConfig.name; + this.enabled = watermarkConfig.enabled; + this.createdBy = watermarkConfig.createdBy; + this.dateAdded = watermarkConfig.dateAdded || '2022-06-20T16:23:49.351Z'; + this.dateModified = watermarkConfig.dateModified || '2022-06-20T16:23:49.351Z'; + } + + get searchKey(): string { + return this.name; + } + + get routerLink(): string { + return `/main/admin/dossier-templates/${this.dossierTemplateId}/watermarks/${this.id}`; + } +} diff --git a/libs/red-domain/src/lib/shared/watermark.ts b/libs/red-domain/src/lib/watermarks/watermark.ts similarity index 70% rename from libs/red-domain/src/lib/shared/watermark.ts rename to libs/red-domain/src/lib/watermarks/watermark.ts index 16f88f466..c2c72a6ac 100644 --- a/libs/red-domain/src/lib/shared/watermark.ts +++ b/libs/red-domain/src/lib/watermarks/watermark.ts @@ -1,10 +1,17 @@ export interface IWatermark { + id: string; + dossierTemplateId: string; + enabled: boolean; fontSize?: number; fontType?: string; hexColor?: string; opacity?: number; orientation?: WatermarkOrientation; text?: string; + name: string; + createdBy: string; + dateAdded: string; + dateModified: string; } export const WatermarkOrientations = {