RED-10206: disable new dossier button when the template is invalid.
This commit is contained in:
parent
4dc7ecee78
commit
b2e40b8f86
@ -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',
|
||||
},
|
||||
];
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<section>
|
||||
<iqser-page-header [buttonConfigs]="buttonConfigs" [helpModeKey]="'dossier'">
|
||||
<iqser-page-header [buttonConfigs]="buttonConfigs()" [helpModeKey]="'dossier'">
|
||||
<ng-container slot="beforeFilters">
|
||||
<redaction-dossiers-type-switch></redaction-dossiers-type-switch>
|
||||
</ng-container>
|
||||
@ -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 @@
|
||||
</section>
|
||||
|
||||
<ng-template #needsWorkFilterTemplate let-filter="filter">
|
||||
<redaction-type-filter [dossierTemplateId]="dossierTemplate.id" [filter]="filter"></redaction-type-filter>
|
||||
<redaction-type-filter [dossierTemplateId]="dossierTemplate().id" [filter]="filter"></redaction-type-filter>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #tableItemTemplate let-dossier="entity">
|
||||
|
||||
@ -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<Dossier> 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<Dossier> 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<void> {
|
||||
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<Dossier> im
|
||||
const filterGroups = this._configService.filterGroups(
|
||||
this.entitiesService.all,
|
||||
this._needsWorkFilterTemplate,
|
||||
this.dossierTemplate.id,
|
||||
this.dossierTemplate().id,
|
||||
);
|
||||
this.filterService.addFilterGroups(filterGroups);
|
||||
}
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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'",
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 074f88e66abc765b0ef8654eb56a552d88e1bbda
|
||||
Subproject commit b5724849502e72995cba0d53f37688284f6d3e5f
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user