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 a29289c29..1c619cd87 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
@@ -49,7 +49,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [
],
},
{
- path: 'rules',
+ path: 'entity-rules',
component: BaseDossierTemplateScreenComponent,
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
data: {
@@ -59,7 +59,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [
redirectTo: 'info',
},
},
- loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule),
+ loadChildren: () => import('./screens/rules/entity-rules.module').then(m => m.EntityRulesModule),
},
{
path: 'component-rules',
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 495528870..fc8df4e81 100644
--- a/apps/red-ui/src/app/modules/admin/admin.module.ts
+++ b/apps/red-ui/src/app/modules/admin/admin.module.ts
@@ -57,7 +57,6 @@ import { DossierTemplateActionsComponent } from './shared/components/dossier-tem
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { TenantPipe } from '@iqser/common-ui/lib/tenants';
import { SelectComponent } from '@shared/components/select/select.component';
-import { ComponentRulesService } from './services/component-rules.service';
const dialogs = [
AddEditCloneDossierTemplateDialogComponent,
@@ -98,7 +97,7 @@ const components = [
@NgModule({
declarations: [...components],
- providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, ComponentRulesService, SmtpConfigService],
+ providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, SmtpConfigService],
imports: [
CommonModule,
SharedModule,
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.html
similarity index 100%
rename from apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.html
rename to apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.html
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.scss
similarity index 100%
rename from apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.scss
rename to apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.scss
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.ts
similarity index 96%
rename from apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.ts
rename to apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.ts
index c17ee1beb..cf7839551 100644
--- a/apps/red-ui/src/app/modules/admin/screens/component-rules/rules-screen/component-rules-screen.component.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules-screen/component-rules-screen.component.ts
@@ -8,7 +8,7 @@ import { DOSSIER_TEMPLATE_ID } from '@red/domain';
import { EditorThemeService } from '@services/editor-theme.service';
import { ComponentCanDeactivate } from '@guards/can-deactivate.guard';
import { Debounce, getParam } from '@iqser/common-ui/lib/utils';
-import { ComponentRulesService } from '../../../services/component-rules.service';
+import { RulesService } from '../../../services/rules.service';
import ICodeEditor = monaco.editor.ICodeEditor;
import IModelDeltaDecoration = monaco.editor.IModelDeltaDecoration;
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;
@@ -46,7 +46,7 @@ export class ComponentRulesScreenComponent implements OnInit, ComponentCanDeacti
constructor(
readonly permissionsService: PermissionsService,
- private readonly _componentRulesService: ComponentRulesService,
+ private readonly _rulesService: RulesService,
private readonly _changeDetectorRef: ChangeDetectorRef,
private readonly _toaster: Toaster,
private readonly _loadingService: LoadingService,
@@ -99,9 +99,10 @@ export class ComponentRulesScreenComponent implements OnInit, ComponentCanDeacti
this._loadingService.start();
this._removeErrorMarkers();
await firstValueFrom(
- this._componentRulesService.uploadRules({
+ this._rulesService.uploadRules({
rules: this._codeEditor.getModel().getValue(),
dossierTemplateId: this.#dossierTemplateId,
+ ruleFileType: 'COMPONENT',
}),
).then(
async () => {
@@ -205,7 +206,7 @@ export class ComponentRulesScreenComponent implements OnInit, ComponentCanDeacti
private async _initialize() {
this._loadingService.start();
- await firstValueFrom(this._componentRulesService.download(this.#dossierTemplateId)).then(
+ await firstValueFrom(this._rulesService.download(this.#dossierTemplateId, 'COMPONENT')).then(
rules => {
this.currentLines = this.initialLines = rules.rules.split('\n');
this.revert();
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules.module.ts b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules.module.ts
index 14c171ff2..d5abe3232 100644
--- a/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules.module.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/component-rules/component-rules.module.ts
@@ -1,7 +1,7 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
-import { ComponentRulesScreenComponent } from './rules-screen/component-rules-screen.component';
+import { ComponentRulesScreenComponent } from './component-rules-screen/component-rules-screen.component';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { TranslateModule } from '@ngx-translate/core';
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.html
similarity index 66%
rename from apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html
rename to apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.html
index 88a74ec4e..d06c91ec7 100644
--- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html
+++ b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.html
@@ -1,6 +1,6 @@
@@ -9,18 +9,18 @@
-
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.scss
similarity index 100%
rename from apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.scss
rename to apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.scss
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.ts
similarity index 95%
rename from apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts
rename to apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.ts
index 2635ec949..2798fed49 100644
--- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules-screen/entity-rules-screen.component.ts
@@ -20,11 +20,11 @@ interface SyntaxError {
}
@Component({
- templateUrl: './rules-screen.component.html',
- styleUrls: ['./rules-screen.component.scss'],
+ templateUrl: './entity-rules-screen.component.html',
+ styleUrls: ['./entity-rules-screen.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class RulesScreenComponent implements OnInit, ComponentCanDeactivate {
+export class EntityRulesScreenComponent implements OnInit, ComponentCanDeactivate {
readonly iconButtonTypes = IconButtonTypes;
readonly editorOptions: IStandaloneEditorConstructionOptions = {
theme: 'vs',
@@ -106,13 +106,13 @@ export class RulesScreenComponent implements OnInit, ComponentCanDeactivate {
).then(
async () => {
await this._initialize();
- this._toaster.success(_('rules-screen.success.generic'));
+ this._toaster.success(_('entity-rules-screen.success.generic'));
},
error => {
const errors = error.error as SyntaxError[] | undefined;
this._drawErrorMarkers(errors);
this._loadingService.stop();
- this._toaster.error(_('rules-screen.error.generic'));
+ this._toaster.error(_('entity-rules-screen.error.generic'));
},
);
}
diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules.module.ts
similarity index 71%
rename from apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts
rename to apps/red-ui/src/app/modules/admin/screens/rules/entity-rules.module.ts
index e6b248714..901f1f727 100644
--- a/apps/red-ui/src/app/modules/admin/screens/rules/rules.module.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/rules/entity-rules.module.ts
@@ -1,7 +1,7 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
-import { RulesScreenComponent } from './rules-screen/rules-screen.component';
+import { EntityRulesScreenComponent } from './entity-rules-screen/entity-rules-screen.component';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { TranslateModule } from '@ngx-translate/core';
@@ -9,10 +9,10 @@ import { IconButtonComponent } from '@iqser/common-ui';
import { FormsModule } from '@angular/forms';
import { MatIconModule } from '@angular/material/icon';
-const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [PendingChangesGuard] }];
+const routes = [{ path: '', component: EntityRulesScreenComponent, canDeactivate: [PendingChangesGuard] }];
@NgModule({
- declarations: [RulesScreenComponent],
+ declarations: [EntityRulesScreenComponent],
imports: [
RouterModule.forChild(routes),
CommonModule,
@@ -23,4 +23,4 @@ const routes = [{ path: '', component: RulesScreenComponent, canDeactivate: [Pen
MatIconModule,
],
})
-export class RulesModule {}
+export class EntityRulesModule {}
diff --git a/apps/red-ui/src/app/modules/admin/services/component-rules.service.ts b/apps/red-ui/src/app/modules/admin/services/component-rules.service.ts
deleted file mode 100644
index 74b4ffa61..000000000
--- a/apps/red-ui/src/app/modules/admin/services/component-rules.service.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Injectable } from '@angular/core';
-import { GenericService } from '@iqser/common-ui';
-import { IComponentRules } from '@red/domain';
-
-@Injectable()
-export class ComponentRulesService extends GenericService {
- protected readonly _defaultModelPath = 'rules';
-
- download(dossierTemplateId: string) {
- return this._getOne([dossierTemplateId]);
- }
-
- uploadRules(body: IComponentRules) {
- return this._post(body);
- }
-}
diff --git a/apps/red-ui/src/app/modules/admin/services/rules.service.ts b/apps/red-ui/src/app/modules/admin/services/rules.service.ts
index bb221a185..5e3cf34e3 100644
--- a/apps/red-ui/src/app/modules/admin/services/rules.service.ts
+++ b/apps/red-ui/src/app/modules/admin/services/rules.service.ts
@@ -6,11 +6,11 @@ import { IRules } from '@red/domain';
export class RulesService extends GenericService {
protected readonly _defaultModelPath = 'rules';
- download(dossierTemplateId: string) {
- return this._getOne([dossierTemplateId]);
+ download(dossierTemplateId: string, ruleFileType: IRules['ruleFileType'] = 'ENTITY') {
+ return this._getOne([dossierTemplateId], this._defaultModelPath, [{ key: 'ruleFileType', value: ruleFileType }]);
}
uploadRules(body: IRules) {
- return this._post(body);
+ return this._post({ ...body, ruleFileType: body.ruleFileType ?? 'ENTITY' });
}
}
diff --git a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
index 71888466f..73bc932a9 100644
--- a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
+++ b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
@@ -95,8 +95,8 @@ export class AdminSideNavComponent implements OnInit {
show: true,
},
{
- screen: 'rules',
- label: _('admin-side-nav.rule-editor'),
+ screen: 'entity-rules',
+ label: _('admin-side-nav.entity-rule-editor'),
show: (this.isIqserDevMode || this.canAccessRulesInDocumine) && this._permissionsService.has(Roles.rules.read),
},
{
diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json
index 12448eefa..1e62363f2 100644
--- a/apps/red-ui/src/assets/i18n/redact/de.json
+++ b/apps/red-ui/src/assets/i18n/redact/de.json
@@ -245,13 +245,13 @@
"dossier-templates": "Dossier-Vorlage",
"entities": "Entities",
"entity-info": "Info",
+ "entity-rule-editor": "Entity Rule Editor",
"false-positive": "False Positive",
"false-recommendations": "False Recommendations",
"file-attributes": "File Attributes",
"justifications": "Justifications",
"license-information": "License Information",
"reports": "Reports",
- "rule-editor": "Rule Editor",
"settings": "Einstellungen",
"user-management": "User Management",
"watermarks": "Watermarks"
@@ -1293,6 +1293,19 @@
"heading": "Edit Entity"
}
},
+ "entity-rules-screen": {
+ "error": {
+ "generic": "Something went wrong... Entity rules update failed!"
+ },
+ "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
+ "revert-changes": "Revert",
+ "save-changes": "Save Changes",
+ "success": {
+ "generic": "Entity rules updated!"
+ },
+ "title": "Entity Rule Editor",
+ "warning-text": "Warning: experimental feature!"
+ },
"error": {
"deleted-entity": {
"dossier": {
@@ -2239,19 +2252,6 @@
},
"title": "Structured Component Management"
},
- "rules-screen": {
- "error": {
- "generic": "Es ist ein Fehler aufgetreten ... Die Regeln konnten nicht aktualisiert werden!"
- },
- "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
- "revert-changes": "Anmeldedaten speichern",
- "save-changes": "Änderungen speichern",
- "success": {
- "generic": "Die Regeln wurden aktualisiert!"
- },
- "title": "Rule Editor",
- "warning-text": "Warning: experimental feature!"
- },
"search": {
"active-dossiers": "ganze Plattform",
"all-dossiers": "all documents",
diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json
index 1a5d3bf82..3caa260f4 100644
--- a/apps/red-ui/src/assets/i18n/redact/en.json
+++ b/apps/red-ui/src/assets/i18n/redact/en.json
@@ -245,13 +245,13 @@
"dossier-templates": "Dossier Templates",
"entities": "Entities",
"entity-info": "Info",
+ "entity-rule-editor": "Entity Rule Editor",
"false-positive": "False Positive",
"false-recommendations": "False Recommendations",
"file-attributes": "File Attributes",
"justifications": "Justifications",
"license-information": "License Information",
"reports": "Reports",
- "rule-editor": "Rule Editor",
"settings": "Settings",
"user-management": "User Management",
"watermarks": "Watermarks"
@@ -1284,6 +1284,19 @@
"title": "{length} {length, plural, one{entity} other{entities}}"
}
},
+ "entity-rules-screen": {
+ "error": {
+ "generic": "Something went wrong... Entity rules update failed!"
+ },
+ "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
+ "revert-changes": "Revert",
+ "save-changes": "Save Changes",
+ "success": {
+ "generic": "Entity rules updated!"
+ },
+ "title": "Entity Rule Editor",
+ "warning-text": "Warning: experimental feature!"
+ },
"entity": {
"info": {
"actions": {
@@ -2239,19 +2252,6 @@
},
"title": "Structured Component Management"
},
- "rules-screen": {
- "error": {
- "generic": "Something went wrong... Rules update failed!"
- },
- "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
- "revert-changes": "Revert",
- "save-changes": "Save Changes",
- "success": {
- "generic": "Rules updated!"
- },
- "title": "Rule Editor",
- "warning-text": "Warning: experimental feature!"
- },
"search-screen": {
"cols": {
"assignee": "Assignee",
diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json
index 6bef9e9c2..f422a3d72 100644
--- a/apps/red-ui/src/assets/i18n/scm/de.json
+++ b/apps/red-ui/src/assets/i18n/scm/de.json
@@ -245,13 +245,13 @@
"dossier-templates": "Dossier-Vorlage",
"entities": "",
"entity-info": "",
+ "entity-rule-editor": "",
"false-positive": "",
"false-recommendations": "",
"file-attributes": "",
"justifications": "",
"license-information": "",
"reports": "",
- "rule-editor": "",
"settings": "Einstellungen",
"user-management": "",
"watermarks": ""
@@ -1284,6 +1284,19 @@
"title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}"
}
},
+ "entity-rules-screen": {
+ "error": {
+ "generic": ""
+ },
+ "errors-found": "",
+ "revert-changes": "",
+ "save-changes": "",
+ "success": {
+ "generic": ""
+ },
+ "title": "",
+ "warning-text": ""
+ },
"entity": {
"info": {
"actions": {
@@ -2239,19 +2252,6 @@
},
"title": ""
},
- "rules-screen": {
- "error": {
- "generic": "Es ist ein Fehler aufgetreten ... Die Regeln konnten nicht aktualisiert werden!"
- },
- "errors-found": "",
- "revert-changes": "Anmeldedaten speichern",
- "save-changes": "Änderungen speichern",
- "success": {
- "generic": "Die Regeln wurden aktualisiert!"
- },
- "title": "",
- "warning-text": ""
- },
"search-screen": {
"cols": {
"assignee": "Bevollmächtigter",
diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json
index 54780a8cd..e0b4ab8df 100644
--- a/apps/red-ui/src/assets/i18n/scm/en.json
+++ b/apps/red-ui/src/assets/i18n/scm/en.json
@@ -245,13 +245,13 @@
"dossier-templates": "Dossier Templates",
"entities": "Entities",
"entity-info": "Info",
+ "entity-rule-editor": "Entity Rule Editor",
"false-positive": "False Positive",
"false-recommendations": "False Recommendations",
"file-attributes": "File Attributes",
"justifications": "Justifications",
"license-information": "License Information",
"reports": "Reports",
- "rule-editor": "Rule Editor",
"settings": "Settings",
"user-management": "User Management",
"watermarks": "Watermarks"
@@ -1284,6 +1284,19 @@
"title": "{length} {length, plural, one{entity} other{entities}}"
}
},
+ "entity-rules-screen": {
+ "error": {
+ "generic": "Something went wrong... Entity rules update failed!"
+ },
+ "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
+ "revert-changes": "Revert",
+ "save-changes": "Save Changes",
+ "success": {
+ "generic": "Entity rules updated!"
+ },
+ "title": "Entity Rule Editor",
+ "warning-text": "Warning: experimental feature!"
+ },
"entity": {
"info": {
"actions": {
@@ -2239,19 +2252,6 @@
},
"title": "Component View"
},
- "rules-screen": {
- "error": {
- "generic": "Something went wrong... Rules update failed!"
- },
- "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules",
- "revert-changes": "Revert",
- "save-changes": "Save Changes",
- "success": {
- "generic": "Rules updated!"
- },
- "title": "Rule Editor",
- "warning-text": "Warning: experimental feature!"
- },
"search-screen": {
"cols": {
"assignee": "Assignee",
diff --git a/libs/red-domain/src/lib/shared/rules.ts b/libs/red-domain/src/lib/shared/rules.ts
index 64a4f9550..a94c435ec 100644
--- a/libs/red-domain/src/lib/shared/rules.ts
+++ b/libs/red-domain/src/lib/shared/rules.ts
@@ -3,9 +3,13 @@
*/
export interface IRules {
/**
- * The DossierTemplate Id for these rules
+ * The DossierTemplate ID for these rules
*/
dossierTemplateId?: string;
+ /**
+ * The file type to be retrieved/saved under, defaults to ENTITY
+ */
+ ruleFileType?: 'ENTITY' | 'COMPONENT';
/**
* The actual string of rules.
*/