Merge branch 'RED-10498' into 'master'
RED-10498 - added the locked rules indicator; implemented the reset See merge request redactmanager/red-ui!711
This commit is contained in:
commit
2699b36ab0
@ -23,12 +23,14 @@ export function templateExistsWhenEnteringAdmin(): CanActivateFn {
|
||||
const defaultColorsService = inject(DefaultColorsService);
|
||||
const watermarksService = inject(WatermarkService);
|
||||
const router = inject(Router);
|
||||
const rulesService = inject(RulesService);
|
||||
const isDocumine = getConfig().IS_DOCUMINE;
|
||||
|
||||
const dossierTemplate = inject(DossierTemplateStatsService).get(dossierTemplateId);
|
||||
await firstValueFrom(fileAttributesService.loadFileAttributesConfig(dossierTemplateId));
|
||||
await firstValueFrom(dictionaryService.loadDictionaryDataForDossierTemplate(dossierTemplateId));
|
||||
await firstValueFrom(defaultColorsService.loadForDossierTemplate(dossierTemplateId));
|
||||
await firstValueFrom(rulesService.getFor(dossierTemplateId));
|
||||
if (!isDocumine) {
|
||||
await firstValueFrom(watermarksService.loadForDossierTemplate(dossierTemplateId));
|
||||
}
|
||||
|
||||
@ -34,6 +34,16 @@
|
||||
<span [innerHTML]="'dossier-template-info-screen.created-on' | translate: { date: createdOn }"></span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="areRulesLocked()">
|
||||
<mat-icon
|
||||
(click)="resetRules()"
|
||||
[matTooltip]="'dossier-template-info-screen.rules-reset.tooltip' | translate"
|
||||
svgIcon="iqser:alert-circle"
|
||||
class="action-icon"
|
||||
></mat-icon>
|
||||
<span class="error">{{ 'dossier-template-info-screen.rules-reset.label' | translate }}</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<mat-icon svgIcon="red:entries"></mat-icon>
|
||||
{{ 'dossier-template-info-screen.entries' | translate: { count: ctx.stats.numberOfEntries } }}
|
||||
|
||||
@ -18,3 +18,11 @@
|
||||
padding-right: 24px;
|
||||
margin-right: 24px;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: var(--iqser-primary);
|
||||
}
|
||||
|
||||
.action-icon {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { Component, computed, Input, OnInit } from '@angular/core';
|
||||
import { ContextComponent } from '@iqser/common-ui/lib/utils';
|
||||
import { type DossierTemplate, type DossierTemplateStats } from '@red/domain';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
@ -9,6 +9,11 @@ import { MatIcon } from '@angular/material/icon';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { InitialsAvatarComponent } from '@common-ui/users';
|
||||
import { DatePipe } from '@shared/pipes/date.pipe';
|
||||
import { RulesService } from '../../../services/rules.service';
|
||||
import { Toaster } from '@iqser/common-ui';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
|
||||
interface Context {
|
||||
readonly dossierTemplate: DossierTemplate;
|
||||
@ -20,16 +25,20 @@ interface Context {
|
||||
templateUrl: './dossier-template-details.component.html',
|
||||
styleUrls: ['./dossier-template-details.component.scss'],
|
||||
standalone: true,
|
||||
imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent],
|
||||
imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent, MatTooltip],
|
||||
})
|
||||
export class DossierTemplateDetailsComponent extends ContextComponent<Context> implements OnInit {
|
||||
readonly translations = dossierTemplateStatusTranslations;
|
||||
|
||||
@Input({ required: true }) dossierTemplateId: string;
|
||||
readonly areRulesLocked = computed(() => {
|
||||
return this._rulesService.currentTemplateRules().timeoutDetected;
|
||||
});
|
||||
|
||||
constructor(
|
||||
private readonly _dossierTemplatesService: DossierTemplatesService,
|
||||
private readonly _dossierTemplateStatsService: DossierTemplateStatsService,
|
||||
private readonly _rulesService: RulesService,
|
||||
private readonly _toaster: Toaster,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
@ -40,4 +49,14 @@ export class DossierTemplateDetailsComponent extends ContextComponent<Context> i
|
||||
stats: this._dossierTemplateStatsService.watch$(this.dossierTemplateId),
|
||||
});
|
||||
}
|
||||
|
||||
async resetRules() {
|
||||
try {
|
||||
await firstValueFrom(this._rulesService.reset(this.dossierTemplateId));
|
||||
this._toaster.success(_('dossier-template-info-screen.rules-reset.success'));
|
||||
await firstValueFrom(this._rulesService.getFor(this.dossierTemplateId));
|
||||
} catch (error) {
|
||||
this._toaster.rawError(error.error.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,4 +33,8 @@ export class RulesService extends EntitiesService<IRules, Rules> {
|
||||
getFor<R = IRules>(entityId: string, queryParams?: List<QueryParam>): Observable<R> {
|
||||
return super.getFor<R>(entityId, queryParams).pipe(tap(rules => this.setEntities([rules as Rules])));
|
||||
}
|
||||
|
||||
reset(dossierTemplateId: string, ruleFileType: IRules['ruleFileType'] = 'ENTITY') {
|
||||
return this._put(null, `${this._defaultModelPath}/${dossierTemplateId}/${ruleFileType}/reset`);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1087,6 +1087,11 @@
|
||||
"entities": "{count} {count, plural, one{Entität} other{Entitäten}}",
|
||||
"entries": "{count} {count, plural, one{Eintrag} other{Einträge}}",
|
||||
"modified-on": "Geändert am: {date}",
|
||||
"rules-reset": {
|
||||
"label": "Regeln gesperrt",
|
||||
"success": "Die Regeln der Dossier-Vorlage wurden erfolgreich zurückgesetzt.",
|
||||
"tooltip": "Klicken Sie hier, um die Regeln zurückzusetzen"
|
||||
},
|
||||
"title": "Dossier-Vorlage bearbeiten",
|
||||
"valid-from": "Gültig ab: {date}",
|
||||
"valid-to": "Gültig bis: {Datum}"
|
||||
|
||||
@ -1087,6 +1087,11 @@
|
||||
"entities": "{count} {count, plural, one{entity} other{entities}}",
|
||||
"entries": "{count} {count, plural, one{entry} other{entries}}",
|
||||
"modified-on": "Modified on: {date}",
|
||||
"rules-reset": {
|
||||
"label": "Rules locked",
|
||||
"success": "Dossier template rules successfully reset.",
|
||||
"tooltip": "Click to reset rules"
|
||||
},
|
||||
"title": "Edit dossier template",
|
||||
"valid-from": "Valid from: {date}",
|
||||
"valid-to": "Valid to: {date}"
|
||||
|
||||
@ -1087,6 +1087,11 @@
|
||||
"entities": "{count} {count, plural, one{Entität} other{Entitäten}}",
|
||||
"entries": "{count} {count, plural, one{Eintrag} other{Einträge}}",
|
||||
"modified-on": "Geändert am {date}",
|
||||
"rules-reset": {
|
||||
"label": "Regeln gesperrt",
|
||||
"success": "Die Regeln der Dossier-Vorlage wurden erfolgreich zurückgesetzt.",
|
||||
"tooltip": "Klicken Sie hier, um die Regeln zurückzusetzen"
|
||||
},
|
||||
"title": "Dossier-Vorlage bearbeiten",
|
||||
"valid-from": "Gültig ab: {date}",
|
||||
"valid-to": "Gültig bis: {date}"
|
||||
|
||||
@ -1087,6 +1087,11 @@
|
||||
"entities": "{count} {count, plural, one{entity} other{entities}}",
|
||||
"entries": "{count} {count, plural, one{entry} other{entries}}",
|
||||
"modified-on": "Modified on: {date}",
|
||||
"rules-reset": {
|
||||
"label": "Rules locked",
|
||||
"success": "Dossier template rules successfully reset.",
|
||||
"tooltip": "Click to reset rules"
|
||||
},
|
||||
"title": "Edit dossier template",
|
||||
"valid-from": "Valid from: {date}",
|
||||
"valid-to": "Valid to: {date}"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user