diff --git a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
index 7af5d80df..7f8db565d 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/config.service.ts
@@ -15,7 +15,6 @@ import {
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { DefaultColorsService } from '@services/entity-services/default-colors.service';
import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service';
-import { PermissionsService } from '@services/permissions.service';
import { SharedDialogService } from '@shared/services/dialog.service';
import { workflowFileStatusTranslations } from '@translations/file-status-translations';
import { workloadTranslations } from '@translations/workload-translations';
@@ -40,7 +39,6 @@ export class ConfigService {
private readonly _dossierStatsService: DossierStatsService,
private readonly _dossierStatesMapService: DossierStatesMapService,
private readonly _dialogService: SharedDialogService,
- private readonly _permissionsService: PermissionsService,
private readonly _defaultColorsService: DefaultColorsService,
) {}
@@ -67,9 +65,10 @@ export class ConfigService {
{
label: _('dossier-listing.add-new'),
action: () => this.#openAddDossierDialog(dossierTemplate.id),
- hide: !this._permissionsService.canCreateDossier(dossierTemplate),
icon: 'iqser:plus',
type: 'primary',
+ tooltip: dossierTemplate.isInactive ? _('dossier-listing.template-inactive') : null,
+ disabled: dossierTemplate.isInactive,
helpModeKey: 'new_dossier',
},
];
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html
index ec029e356..99e2978e0 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html
+++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html
@@ -1,5 +1,5 @@
-
+
@@ -18,7 +18,7 @@
[noDataButtonLabel]="'dossier-listing.no-data.action' | translate"
[noDataText]="'dossier-listing.no-data.title' | translate"
[noMatchText]="'dossier-listing.no-match.title' | translate"
- [showNoDataButton]="permissionsService.canCreateDossier(dossierTemplate)"
+ [showNoDataButton]="permissionsService.canCreateDossier(dossierTemplate())"
[tableColumnConfigs]="tableColumnConfigs"
[rowIdPrefix]="'dossier'"
[namePropertyKey]="'dossierName'"
@@ -33,7 +33,7 @@
-
+
diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
index c59b47b63..dc343f835 100644
--- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
+++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts
@@ -1,8 +1,7 @@
-import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
-import { Dossier, DOSSIER_TEMPLATE_ID, DossierTemplate } from '@red/domain';
+import { ChangeDetectionStrategy, Component, computed, OnInit, TemplateRef, ViewChild } from '@angular/core';
+import { Dossier, DOSSIER_TEMPLATE_ID } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import {
- ButtonConfig,
HasScrollbarDirective,
IqserListingModule,
ListingComponent,
@@ -25,6 +24,7 @@ import { DossiersListingDetailsComponent } from '../components/dossiers-listing-
import { AsyncPipe, NgIf } from '@angular/common';
import { TypeFilterComponent } from '@shared/components/type-filter/type-filter.component';
import { TableItemComponent } from '../components/table-item/table-item.component';
+import { toSignal } from '@angular/core/rxjs-interop';
@Component({
templateUrl: './dossiers-listing-screen.component.html',
@@ -47,8 +47,10 @@ import { TableItemComponent } from '../components/table-item/table-item.componen
export class DossiersListingScreenComponent extends ListingComponent implements OnInit, OnAttach {
readonly tableColumnConfigs = this._configService.tableConfig;
readonly tableHeaderLabel = _('dossier-listing.table-header.title');
- readonly buttonConfigs: ButtonConfig[];
- readonly dossierTemplate: DossierTemplate;
+ readonly dossierTemplateId = this.router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID);
+ readonly dossierTemplates = toSignal(this.dossierTemplatesService.all$);
+ readonly dossierTemplate = computed(() => this.dossierTemplates().find(template => this.dossierTemplateId === template.id));
+ readonly buttonConfigs = computed(() => this._configService.buttonsConfig(this.dossierTemplate()));
readonly computeFilters$ = this._activeDossiersService.all$.pipe(tap(() => this._computeAllFilters()));
@ViewChild('needsWorkFilterTemplate', {
read: TemplateRef,
@@ -68,20 +70,19 @@ export class DossiersListingScreenComponent extends ListingComponent im
readonly dossierTemplatesService: DossierTemplatesService,
) {
super();
- const dossierTemplateId = router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID);
- this.dossierTemplate = dossierTemplatesService.find(dossierTemplateId);
- this.buttonConfigs = this._configService.buttonsConfig(this.dossierTemplate);
- this.entitiesService.setEntities(this._activeDossiersService.all.filter(d => d.dossierTemplateId === this.dossierTemplate.id));
+ this.entitiesService.setEntities(this._activeDossiersService.all.filter(d => d.dossierTemplateId === this.dossierTemplate().id));
}
openAddDossierDialog(): void {
- this._dialogService.openDialog('addDossier', { dossierTemplateId: this.dossierTemplate.id });
+ this._dialogService.openDialog('addDossier', { dossierTemplateId: this.dossierTemplate().id });
}
async ngOnInit(): Promise {
- await this._userPreferenceService.saveLastDossierTemplate(this.dossierTemplate.id);
+ await this._userPreferenceService.saveLastDossierTemplate(this.dossierTemplate().id);
this.addSubscription = this._activeDossiersService.all$
- .pipe(tap(dossiers => this.entitiesService.setEntities(dossiers.filter(d => d.dossierTemplateId === this.dossierTemplate.id))))
+ .pipe(
+ tap(dossiers => this.entitiesService.setEntities(dossiers.filter(d => d.dossierTemplateId === this.dossierTemplate().id))),
+ )
.subscribe();
this._loadingService.stop();
}
@@ -95,7 +96,7 @@ export class DossiersListingScreenComponent extends ListingComponent im
const filterGroups = this._configService.filterGroups(
this.entitiesService.all,
this._needsWorkFilterTemplate,
- this.dossierTemplate.id,
+ this.dossierTemplate().id,
);
this.filterService.addFilterGroups(filterGroups);
}
diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json
index 165d3e521..eedd3df89 100644
--- a/apps/red-ui/src/assets/i18n/redact/de.json
+++ b/apps/red-ui/src/assets/i18n/redact/de.json
@@ -943,7 +943,8 @@
},
"table-header": {
"title": "{length} {length, plural, one{aktives Dossier} other{aktive Dossiers}}"
- }
+ },
+ "template-inactive": "Aktuell ausgewählte Dossier-Vorlage inaktiv!"
},
"dossier-overview": {
"approve": "Freigeben",
diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json
index fe23301b5..e7944d4ba 100644
--- a/apps/red-ui/src/assets/i18n/redact/en.json
+++ b/apps/red-ui/src/assets/i18n/redact/en.json
@@ -943,7 +943,8 @@
},
"table-header": {
"title": "{length} active {length, plural, one{dossier} other{dossiers}}"
- }
+ },
+ "template-inactive": "Currently selected dossier template inactive!"
},
"dossier-overview": {
"approve": "Approve",
diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json
index 2518f65eb..0ef81d09d 100644
--- a/apps/red-ui/src/assets/i18n/scm/de.json
+++ b/apps/red-ui/src/assets/i18n/scm/de.json
@@ -943,7 +943,8 @@
},
"table-header": {
"title": "{length} {length, plural, one{aktives Dossier} other{aktive Dossiers}}"
- }
+ },
+ "template-inactive": "Aktuell ausgewählte Dossier-Vorlage inaktiv!"
},
"dossier-overview": {
"approve": "Genehmigen",
diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json
index 27dc5dc68..ccd4add2e 100644
--- a/apps/red-ui/src/assets/i18n/scm/en.json
+++ b/apps/red-ui/src/assets/i18n/scm/en.json
@@ -943,7 +943,8 @@
},
"table-header": {
"title": "{length} active {length, plural, one{dossier} other{dossiers}}"
- }
+ },
+ "template-inactive": "Currently selected dossier template inactive!"
},
"dossier-overview": {
"approve": "Move to 'Done'",
diff --git a/libs/common-ui b/libs/common-ui
index 074f88e66..b57248495 160000
--- a/libs/common-ui
+++ b/libs/common-ui
@@ -1 +1 @@
-Subproject commit 074f88e66abc765b0ef8654eb56a552d88e1bbda
+Subproject commit b5724849502e72995cba0d53f37688284f6d3e5f
diff --git a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts
index b3e249e92..e949b575b 100644
--- a/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts
+++ b/libs/red-domain/src/lib/dossier-templates/dossier-template.model.ts
@@ -49,6 +49,10 @@ export class DossierTemplate implements IDossierTemplate, IListable {
return this.dossierTemplateStatus === DossierTemplateStatuses.ACTIVE;
}
+ get isInactive(): boolean {
+ return this.dossierTemplateStatus === DossierTemplateStatuses.INACTIVE;
+ }
+
get id(): string {
return this.dossierTemplateId;
}