RED-9866: remove version limit on ARCHIVE DOSSIER feature.
This commit is contained in:
parent
954fba26f7
commit
8d970779f5
@ -16,7 +16,7 @@ import { CompositeRouteGuard, DEFAULT_REDIRECT_KEY, IqserPermissionsGuard, Iqser
|
||||
import { TenantSelectComponent } from '@iqser/common-ui/lib/tenants';
|
||||
import { doesNotHaveAnyRole, hasAnyRole, IqserAuthGuard } from '@iqser/common-ui/lib/users';
|
||||
import { CustomRouteReuseStrategy } from '@iqser/common-ui/lib/utils';
|
||||
import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE, FILE_ID } from '@red/domain';
|
||||
import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ROUTE, FILE_ID } from '@red/domain';
|
||||
import { RedRoleGuard } from '@users/red-role.guard';
|
||||
import { Roles } from '@users/roles';
|
||||
import { mainGuard } from '@utils/main.guard';
|
||||
@ -81,7 +81,6 @@ const dossierTemplateIdRoutes: IqserRoutes = [
|
||||
canActivate: [CompositeRouteGuard, loadArchivedDossiersGuard()],
|
||||
data: {
|
||||
routeGuards: [FeaturesGuard],
|
||||
features: [DOSSIERS_ARCHIVE],
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@ -8,8 +8,7 @@ import { SpotlightSearchAction } from '@components/spotlight-search/spotlight-se
|
||||
import { filter, map, startWith } from 'rxjs/operators';
|
||||
import { getConfig, IqserPermissionsService } from '@iqser/common-ui';
|
||||
import { BreadcrumbsService } from '@services/breadcrumbs.service';
|
||||
import { FeaturesService } from '@services/features.service';
|
||||
import { ARCHIVE_ROUTE, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain';
|
||||
import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from '@red/domain';
|
||||
import { Roles } from '@users/roles';
|
||||
import { REDDocumentViewer } from '../../modules/pdf-viewer/services/document-viewer.service';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
@ -36,7 +35,6 @@ export class BaseScreenComponent {
|
||||
{
|
||||
text: this._translateService.instant('search.active-dossiers'),
|
||||
icon: 'red:enter',
|
||||
hide: () => !this._featuresService.isEnabled(DOSSIERS_ARCHIVE),
|
||||
action: (query): void => this.#search(query, [], true),
|
||||
},
|
||||
{
|
||||
@ -58,7 +56,6 @@ export class BaseScreenComponent {
|
||||
private readonly _router: Router,
|
||||
activatedRoute: ActivatedRoute,
|
||||
private readonly _translateService: TranslateService,
|
||||
private readonly _featuresService: FeaturesService,
|
||||
readonly permissionsService: IqserPermissionsService,
|
||||
readonly userService: UserService,
|
||||
readonly userPreferenceService: UserPreferenceService,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<section>
|
||||
<iqser-page-header [buttonConfigs]="buttonConfigs" [helpModeKey]="'dossier'">
|
||||
<ng-container *ngIf="isArchiveEnabled" slot="beforeFilters">
|
||||
<ng-container slot="beforeFilters">
|
||||
<redaction-dossiers-type-switch></redaction-dossiers-type-switch>
|
||||
</ng-container>
|
||||
</iqser-page-header>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
|
||||
import { Dossier, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DossierTemplate } from '@red/domain';
|
||||
import { Dossier, DOSSIER_TEMPLATE_ID, DossierTemplate } from '@red/domain';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import {
|
||||
ButtonConfig,
|
||||
@ -19,7 +19,6 @@ import { UserPreferenceService } from '@users/user-preference.service';
|
||||
import { SharedDialogService } from '@shared/services/dialog.service';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { OnAttach } from '@iqser/common-ui/lib/utils';
|
||||
import { FeaturesService } from '@services/features.service';
|
||||
import { DossiersTypeSwitchComponent } from '@shared/components/dossiers-type-switch/dossiers-type-switch.component';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { DossiersListingDetailsComponent } from '../components/dossiers-listing-details/dossiers-listing-details.component';
|
||||
@ -51,7 +50,6 @@ export class DossiersListingScreenComponent extends ListingComponent<Dossier> im
|
||||
readonly buttonConfigs: ButtonConfig[];
|
||||
readonly dossierTemplate: DossierTemplate;
|
||||
readonly computeFilters$ = this._activeDossiersService.all$.pipe(tap(() => this._computeAllFilters()));
|
||||
readonly isArchiveEnabled = this._featuresService.isEnabled(DOSSIERS_ARCHIVE);
|
||||
@ViewChild('needsWorkFilterTemplate', {
|
||||
read: TemplateRef,
|
||||
static: true,
|
||||
@ -68,7 +66,6 @@ export class DossiersListingScreenComponent extends ListingComponent<Dossier> im
|
||||
private readonly _userPreferenceService: UserPreferenceService,
|
||||
private readonly _loadingService: LoadingService,
|
||||
readonly dossierTemplatesService: DossierTemplatesService,
|
||||
private readonly _featuresService: FeaturesService,
|
||||
) {
|
||||
super();
|
||||
const dossierTemplateId = router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID);
|
||||
|
||||
@ -7,7 +7,7 @@ import {
|
||||
SearchPositions,
|
||||
TableColumnConfig,
|
||||
} from '@iqser/common-ui';
|
||||
import { combineLatest, Observable, of } from 'rxjs';
|
||||
import { combineLatest, Observable } from 'rxjs';
|
||||
import { debounceTime, map, startWith, switchMap, tap } from 'rxjs/operators';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
@ -16,7 +16,6 @@ import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { RouterHistoryService } from '@services/router-history.service';
|
||||
import {
|
||||
Dossier,
|
||||
DOSSIERS_ARCHIVE,
|
||||
DossierTemplate,
|
||||
IMatchedDocument,
|
||||
ISearchListItem,
|
||||
@ -26,7 +25,6 @@ import {
|
||||
} from '@red/domain';
|
||||
import { FilesMapService } from '@services/files/files-map.service';
|
||||
import { PlatformSearchService } from '@services/entity-services/platform-search.service';
|
||||
import { FeaturesService } from '@services/features.service';
|
||||
import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { UserService } from '@users/user.service';
|
||||
@ -68,7 +66,6 @@ export default class SearchScreenComponent extends ListingComponent<ISearchListI
|
||||
private readonly _translateService: TranslateService,
|
||||
private readonly _filesMapService: FilesMapService,
|
||||
private readonly _platformSearchService: PlatformSearchService,
|
||||
private readonly _featuresService: FeaturesService,
|
||||
private readonly _dossierTemplateService: DossierTemplatesService,
|
||||
private readonly _userService: UserService,
|
||||
) {
|
||||
@ -134,14 +131,8 @@ export default class SearchScreenComponent extends ListingComponent<ISearchListI
|
||||
);
|
||||
}
|
||||
|
||||
get #enabledArchive(): boolean {
|
||||
return this._featuresService.isEnabled(DOSSIERS_ARCHIVE);
|
||||
}
|
||||
|
||||
get #filtersChanged$(): Observable<[string[], WorkflowFileStatus, string, string[], boolean]> {
|
||||
const onlyActiveDossiers$ = this.#enabledArchive
|
||||
? this.filterService.getSingleFilter('onlyActiveDossiers').pipe(map(f => !!f.checked))
|
||||
: of(true);
|
||||
const onlyActiveDossiers$ = this.filterService.getSingleFilter('onlyActiveDossiers').pipe(map(f => !!f.checked));
|
||||
const filterGroups$ = this.filterService.filterGroups$;
|
||||
return combineLatest([filterGroups$, onlyActiveDossiers$]).pipe(
|
||||
map(([groups, onlyActive]) => {
|
||||
@ -225,9 +216,7 @@ export default class SearchScreenComponent extends ListingComponent<ISearchListI
|
||||
|
||||
this.filterService.addFilterGroups([dossierNameFilter, workflowStatusFilter, assigneeFilter]);
|
||||
const onlyActiveLabel = this._translateService.instant('search-screen.filters.only-active');
|
||||
if (this.#enabledArchive) {
|
||||
this.filterService.addSingleFilter({ id: 'onlyActiveDossiers', label: onlyActiveLabel, checked: this.#routeOnlyActive });
|
||||
}
|
||||
this.filterService.addSingleFilter({ id: 'onlyActiveDossiers', label: onlyActiveLabel, checked: this.#routeOnlyActive });
|
||||
}
|
||||
|
||||
#addTemplateFilter(templates: DossierTemplate[]) {
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
import { inject, Injectable } from '@angular/core';
|
||||
import { ARCHIVE_ROUTE, Dossier, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain';
|
||||
import { ARCHIVE_ROUTE, Dossier, DOSSIERS_ROUTE } from '@red/domain';
|
||||
import { catchError, switchMap, tap } from 'rxjs/operators';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { ActiveDossiersService } from './active-dossiers.service';
|
||||
import { DossiersService } from './dossiers.service';
|
||||
import { FilesMapService } from '../files/files-map.service';
|
||||
import { FeaturesService } from '../features.service';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
@ -15,7 +14,6 @@ export class ArchivedDossiersService extends DossiersService {
|
||||
protected readonly _defaultModelPath = 'archived-dossiers';
|
||||
readonly #activeDossiersService = inject(ActiveDossiersService);
|
||||
readonly #filesMapService = inject(FilesMapService);
|
||||
readonly #featuresService = inject(FeaturesService);
|
||||
readonly #router = inject(Router);
|
||||
|
||||
archive(dossiers: Dossier[]): Observable<unknown> {
|
||||
@ -46,7 +44,7 @@ export class ArchivedDossiersService extends DossiersService {
|
||||
}
|
||||
|
||||
loadAll(): Observable<Dossier[]> {
|
||||
return this.#featuresService.isEnabled(DOSSIERS_ARCHIVE) ? super.loadAll() : of([]);
|
||||
return super.loadAll();
|
||||
}
|
||||
|
||||
#removeFromActiveDossiers(archivedDossiersIds: string[]): void {
|
||||
|
||||
@ -4,7 +4,6 @@ import {
|
||||
DashboardStats,
|
||||
Dictionary,
|
||||
Dossier,
|
||||
DOSSIERS_ARCHIVE,
|
||||
DossierTemplate,
|
||||
File,
|
||||
IComment,
|
||||
@ -13,7 +12,6 @@ import {
|
||||
WorkflowFileStatus,
|
||||
WorkflowFileStatuses,
|
||||
} from '@red/domain';
|
||||
import { FeaturesService } from '@services/features.service';
|
||||
import { FilesMapService } from '@services/files/files-map.service';
|
||||
import { Roles } from '@users/roles';
|
||||
import { UserPreferenceService } from '@users/user-preference.service';
|
||||
@ -27,7 +25,6 @@ export class PermissionsService {
|
||||
constructor(
|
||||
private readonly _userService: UserService,
|
||||
private readonly _filesMapService: FilesMapService,
|
||||
private readonly _featuresService: FeaturesService,
|
||||
private readonly _userPreferenceService: UserPreferenceService,
|
||||
private readonly _iqserPermissionsService: IqserPermissionsService,
|
||||
private readonly _dossierTemplatesService: DossierTemplatesService,
|
||||
@ -290,12 +287,7 @@ export class PermissionsService {
|
||||
}
|
||||
|
||||
canArchiveDossier(dossier: Dossier): boolean {
|
||||
return (
|
||||
this._iqserPermissionsService.has(Roles.dossiers.archived) &&
|
||||
this._featuresService.isEnabled(DOSSIERS_ARCHIVE) &&
|
||||
dossier.isActive &&
|
||||
this.isOwner(dossier)
|
||||
);
|
||||
return this._iqserPermissionsService.has(Roles.dossiers.archived) && dossier.isActive && this.isOwner(dossier);
|
||||
}
|
||||
|
||||
canEditDossier(dossier: Dossier): boolean {
|
||||
|
||||
@ -1,8 +1,3 @@
|
||||
{
|
||||
"features": [
|
||||
{
|
||||
"name": "DOSSIERS_ARCHIVE",
|
||||
"minVersion": "3.3.0"
|
||||
}
|
||||
]
|
||||
"features": []
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
export const DOSSIER_ID = 'dossierId';
|
||||
export const DOSSIERS_ARCHIVE = 'DOSSIERS_ARCHIVE';
|
||||
|
||||
export const ARCHIVE_ROUTE = 'archive';
|
||||
export const DOSSIERS_ROUTE = 'dossiers';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user