From 0fe7584f4b351d6b8f22a100edc63cb3c08e1e62 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Wed, 12 Jun 2024 19:38:21 +0300 Subject: [PATCH] RED-9321: refactored account, dossier-listing and dashboard. --- apps/red-ui/src/app/app-routing.module.ts | 4 +- .../modules/account/account-routing.module.ts | 6 +- .../notifications-screen.component.ts | 10 +++- .../notifications/notifications.module.ts | 16 ----- .../notifications/notifications.routes.ts | 11 ++++ .../confirm-password-dialog.component.ts | 7 ++- .../user-profile-screen.component.ts | 19 +++++- .../user-profile/user-profile.module.ts | 19 ------ .../user-profile/user-profile.routes.ts | 8 +++ .../src/app/modules/archive/archive.module.ts | 8 +++ .../template-stats.component.ts | 10 +++- .../dashboard-screen.component.ts | 6 ++ .../app/modules/dashboard/dashboard.module.ts | 34 ----------- .../app/modules/dashboard/dashboard.routes.ts | 13 +++++ .../dossier-documents-status.component.ts | 5 +- .../dossier-workload-column.component.ts | 5 ++ .../dossiers-listing-details.component.ts | 6 ++ .../table-item/table-item.component.ts | 20 +++++++ .../dossiers-listing.module.ts | 58 ------------------- .../dossiers-listing.routes.ts | 16 +++++ .../dossiers-listing-screen.component.ts | 28 ++++++++- .../dossiers-listing-actions.component.ts | 9 ++- .../shared-dossiers/shared-dossiers.module.ts | 2 - .../dictionary-manager.component.ts | 1 - .../dossier-name-column.component.ts | 5 ++ .../dossier-state/dossier-state.component.ts | 5 ++ .../dossiers-type-switch.component.ts | 5 ++ .../src/app/modules/shared/shared.module.ts | 11 +--- .../src/app/modules/trash/trash.module.ts | 2 + 29 files changed, 193 insertions(+), 156 deletions(-) delete mode 100644 apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts create mode 100644 apps/red-ui/src/app/modules/account/screens/notifications/notifications.routes.ts delete mode 100644 apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts create mode 100644 apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.routes.ts delete mode 100644 apps/red-ui/src/app/modules/dashboard/dashboard.module.ts create mode 100644 apps/red-ui/src/app/modules/dashboard/dashboard.routes.ts delete mode 100644 apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts create mode 100644 apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.routes.ts diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index 65a0f0614..7de4f8021 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -68,7 +68,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [ { path: '', pathMatch: 'full', - loadChildren: () => import('./modules/dossiers-listing/dossiers-listing.module').then(m => m.DossiersListingModule), + loadChildren: () => import('./modules/dossiers-listing/dossiers-listing.routes'), data: { breadcrumbs: [BreadcrumbTypes.dossierTemplate], }, @@ -108,7 +108,7 @@ const mainRoutes: IqserRoutes = [ }, { path: 'dashboard', - loadChildren: () => import('./modules/dashboard/dashboard.module').then(m => m.DashboardModule), + loadChildren: () => import('./modules/dashboard/dashboard.routes'), canActivate: [CompositeRouteGuard], data: { routeGuards: [IqserAuthGuard, RedRoleGuard, IqserPermissionsGuard, DossierTemplatesGuard, DashboardGuard], diff --git a/apps/red-ui/src/app/modules/account/account-routing.module.ts b/apps/red-ui/src/app/modules/account/account-routing.module.ts index 086dd3c89..38e7f74f4 100644 --- a/apps/red-ui/src/app/modules/account/account-routing.module.ts +++ b/apps/red-ui/src/app/modules/account/account-routing.module.ts @@ -6,6 +6,7 @@ import { BaseAccountScreenComponent } from './base-account-screen/base-account-s import { PreferencesComponent } from './screens/preferences/preferences.component'; import { Roles } from '@users/roles'; import { IqserAuthGuard } from '@iqser/common-ui/lib/users'; +import { PendingChangesGuard } from '@guards/can-deactivate.guard'; const routes: IqserRoutes = [ { path: '', redirectTo: 'user-profile', pathMatch: 'full' }, @@ -16,12 +17,13 @@ const routes: IqserRoutes = [ data: { routeGuards: [IqserAuthGuard, RedRoleGuard], }, - loadChildren: () => import('./screens/user-profile/user-profile.module').then(m => m.UserProfileModule), + loadChildren: () => import('./screens/user-profile/user-profile.routes'), }, { path: 'notifications', component: BaseAccountScreenComponent, canActivate: [CompositeRouteGuard, IqserPermissionsGuard], + canDeactivate: [PendingChangesGuard], data: { routeGuards: [IqserAuthGuard, RedRoleGuard], permissions: { @@ -29,7 +31,7 @@ const routes: IqserRoutes = [ redirectTo: '/', }, }, - loadChildren: () => import('./screens/notifications/notifications.module').then(m => m.NotificationsModule), + loadChildren: () => import('./screens/notifications/notifications.routes'), }, { path: 'preferences', diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts index 1f80c321c..c9b92f288 100644 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications-screen/notifications-screen.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core'; -import { UntypedFormBuilder } from '@angular/forms'; +import { ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms'; import { NotificationPreferencesService } from '../../../services/notification-preferences.service'; -import { BaseFormComponent, getConfig, LoadingService, Toaster } from '@iqser/common-ui'; +import { BaseFormComponent, getConfig, IconButtonComponent, LoadingService, Toaster } from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { DocumentNotificationsTypes, @@ -14,6 +14,10 @@ import { import { firstValueFrom } from 'rxjs'; import { notificationsSettingsTranslations } from '@translations/notifications-settings-translations'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; +import { NgForOf, NgIf } from '@angular/common'; +import { MatSlideToggle } from '@angular/material/slide-toggle'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatCheckbox } from '@angular/material/checkbox'; const RSS_EXCLUDED_SETTINGS = ['USER_PROMOTED_TO_APPROVER', 'USER_DEGRADED_TO_REVIEWER', 'ASSIGN_REVIEWER']; @@ -21,6 +25,8 @@ const RSS_EXCLUDED_SETTINGS = ['USER_PROMOTED_TO_APPROVER', 'USER_DEGRADED_TO_RE templateUrl: './notifications-screen.component.html', styleUrls: ['./notifications-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ReactiveFormsModule, NgForOf, MatSlideToggle, TranslateModule, NgIf, MatCheckbox, IconButtonComponent], }) export class NotificationsScreenComponent extends BaseFormComponent implements OnInit { readonly #toaster = inject(Toaster); diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts deleted file mode 100644 index 5cdaf8a16..000000000 --- a/apps/red-ui/src/app/modules/account/screens/notifications/notifications.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { CommonModule } from '@angular/common'; -import { SharedModule } from '@shared/shared.module'; -import { NotificationsScreenComponent } from './notifications-screen/notifications-screen.component'; -import { PendingChangesGuard } from '@guards/can-deactivate.guard'; -import { TranslateModule } from '@ngx-translate/core'; -import { IconButtonComponent } from '@iqser/common-ui'; - -const routes = [{ path: '', component: NotificationsScreenComponent, canDeactivate: [PendingChangesGuard] }]; - -@NgModule({ - declarations: [NotificationsScreenComponent], - imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IconButtonComponent], -}) -export class NotificationsModule {} diff --git a/apps/red-ui/src/app/modules/account/screens/notifications/notifications.routes.ts b/apps/red-ui/src/app/modules/account/screens/notifications/notifications.routes.ts new file mode 100644 index 000000000..fc7f8195b --- /dev/null +++ b/apps/red-ui/src/app/modules/account/screens/notifications/notifications.routes.ts @@ -0,0 +1,11 @@ +import { NotificationsScreenComponent } from './notifications-screen/notifications-screen.component'; +import { PendingChangesGuard } from '@guards/can-deactivate.guard'; +import { IqserRoutes } from '@iqser/common-ui'; + +export default [ + { + path: '', + component: NotificationsScreenComponent, + canDeactivate: [PendingChangesGuard], + }, +] satisfies IqserRoutes; diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/confirm-password-dialog/confirm-password-dialog.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/confirm-password-dialog/confirm-password-dialog.component.ts index 5eafcfc2e..bfe0ce506 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/confirm-password-dialog/confirm-password-dialog.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/confirm-password-dialog/confirm-password-dialog.component.ts @@ -1,7 +1,8 @@ import { Component } from '@angular/core'; -import { BaseDialogComponent } from '@iqser/common-ui'; +import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui'; import { MatDialogRef } from '@angular/material/dialog'; -import { AbstractControl, FormGroup, Validators } from '@angular/forms'; +import { AbstractControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; +import { TranslateModule } from '@ngx-translate/core'; interface FormType { password: AbstractControl; @@ -9,6 +10,8 @@ interface FormType { @Component({ templateUrl: './confirm-password-dialog.component.html', + standalone: true, + imports: [ReactiveFormsModule, IconButtonComponent, TranslateModule, CircleButtonComponent], }) export class ConfirmPasswordDialogComponent extends BaseDialogComponent { constructor(protected readonly _dialogRef: MatDialogRef) { diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts index f1a736a95..c8f055e13 100644 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile-screen/user-profile-screen.component.ts @@ -1,8 +1,15 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; +import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { BaseFormComponent, IqserPermissionsService, LanguageService, LoadingService, Toaster } from '@iqser/common-ui'; -import { TranslateService } from '@ngx-translate/core'; +import { + BaseFormComponent, + IconButtonComponent, + IqserPermissionsService, + LanguageService, + LoadingService, + Toaster, +} from '@iqser/common-ui'; +import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { IProfile } from '@red/domain'; import { languagesTranslations } from '@translations/languages-translations'; import { Roles } from '@users/roles'; @@ -10,11 +17,17 @@ import { UserPreferenceService } from '@users/user-preference.service'; import { UserService } from '@users/user.service'; import { firstValueFrom } from 'rxjs'; import { UserProfileDialogService } from '../services/user-profile-dialog.service'; +import { NgForOf, NgIf } from '@angular/common'; +import { MatFormField } from '@angular/material/form-field'; +import { MatOption, MatSelect } from '@angular/material/select'; +import { MatSlideToggle } from '@angular/material/slide-toggle'; @Component({ templateUrl: './user-profile-screen.component.html', styleUrls: ['./user-profile-screen.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ReactiveFormsModule, NgIf, MatFormField, MatSelect, MatOption, NgForOf, TranslateModule, MatSlideToggle, IconButtonComponent], }) export class UserProfileScreenComponent extends BaseFormComponent implements OnInit { #profileModel: IProfile; diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts deleted file mode 100644 index 72f352ea7..000000000 --- a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { CommonModule } from '@angular/common'; -import { SharedModule } from '@shared/shared.module'; -import { UserProfileScreenComponent } from './user-profile-screen/user-profile-screen.component'; -import { PendingChangesGuard } from '@guards/can-deactivate.guard'; -import { TranslateModule } from '@ngx-translate/core'; -import { ConfirmPasswordDialogComponent } from './confirm-password-dialog/confirm-password-dialog.component'; -import { UserProfileDialogService } from './services/user-profile-dialog.service'; -import { CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui'; - -const routes = [{ path: '', component: UserProfileScreenComponent, canDeactivate: [PendingChangesGuard] }]; - -@NgModule({ - declarations: [UserProfileScreenComponent, ConfirmPasswordDialogComponent], - imports: [RouterModule.forChild(routes), CommonModule, SharedModule, TranslateModule, IconButtonComponent, CircleButtonComponent], - providers: [UserProfileDialogService], -}) -export class UserProfileModule {} diff --git a/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.routes.ts b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.routes.ts new file mode 100644 index 000000000..c3711b2dd --- /dev/null +++ b/apps/red-ui/src/app/modules/account/screens/user-profile/user-profile.routes.ts @@ -0,0 +1,8 @@ +import { UserProfileScreenComponent } from './user-profile-screen/user-profile-screen.component'; +import { PendingChangesGuard } from '@guards/can-deactivate.guard'; +import { UserProfileDialogService } from './services/user-profile-dialog.service'; +import { IqserRoutes } from '@iqser/common-ui'; + +export default [ + { path: '', component: UserProfileScreenComponent, canDeactivate: [PendingChangesGuard], providers: [UserProfileDialogService] }, +] satisfies IqserRoutes; diff --git a/apps/red-ui/src/app/modules/archive/archive.module.ts b/apps/red-ui/src/app/modules/archive/archive.module.ts index 96bc7884e..5e530e39d 100644 --- a/apps/red-ui/src/app/modules/archive/archive.module.ts +++ b/apps/red-ui/src/app/modules/archive/archive.module.ts @@ -9,6 +9,10 @@ import { TranslateModule } from '@ngx-translate/core'; import { SharedModule } from '@shared/shared.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users'; +import { DossiersTypeSwitchComponent } from '@shared/components/dossiers-type-switch/dossiers-type-switch.component'; +import { DossierNameColumnComponent } from '@shared/components/dossier-name-column/dossier-name-column.component'; +import { DossierStateComponent } from '@shared/components/dossier-state/dossier-state.component'; +import { DossiersListingActionsComponent } from '../shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component'; @NgModule({ declarations: [TableItemComponent, ArchivedDossiersScreenComponent], @@ -22,6 +26,10 @@ import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/ SharedModule, SharedDossiersModule, InitialsAvatarComponent, + DossiersTypeSwitchComponent, + DossierNameColumnComponent, + DossierStateComponent, + DossiersListingActionsComponent, ], providers: [ConfigService], }) diff --git a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.ts b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.ts index ab68ec944..d555b664f 100644 --- a/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.ts +++ b/apps/red-ui/src/app/modules/dashboard/components/template-stats/template-stats.component.ts @@ -1,15 +1,23 @@ import { Component, Input } from '@angular/core'; import { DashboardStats } from '@red/domain'; -import { IconButtonTypes } from '@iqser/common-ui'; +import { IconButtonComponent, IconButtonTypes } from '@iqser/common-ui'; import { TranslateChartService } from '@services/translate-chart.service'; import { SharedDialogService } from '@shared/services/dialog.service'; import { Roles } from '@users/roles'; import { PermissionsService } from '@services/permissions.service'; +import { NgIf } from '@angular/common'; +import { RouterLink } from '@angular/router'; +import { MatIcon } from '@angular/material/icon'; +import { TranslateModule } from '@ngx-translate/core'; +import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; +import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe'; @Component({ selector: 'redaction-template-stats [stats]', templateUrl: './template-stats.component.html', styleUrls: ['./template-stats.component.scss'], + standalone: true, + imports: [NgIf, RouterLink, MatIcon, TranslateModule, DonutChartComponent, IconButtonComponent, SnakeCasePipe], }) export class TemplateStatsComponent { readonly iconButtonTypes = IconButtonTypes; diff --git a/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.ts b/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.ts index 69a16dcee..ba37625c8 100644 --- a/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.ts +++ b/apps/red-ui/src/app/modules/dashboard/dashboard-screen/dashboard-screen.component.ts @@ -4,10 +4,16 @@ import { UserPreferenceService } from '@users/user-preference.service'; import { trackByFactory } from '@iqser/common-ui/lib/utils'; import { User } from '@red/domain'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; +import { TranslateModule } from '@ngx-translate/core'; +import { TemplateStatsComponent } from '../components/template-stats/template-stats.component'; +import { AsyncPipe, NgForOf } from '@angular/common'; +import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe'; @Component({ templateUrl: './dashboard-screen.component.html', styleUrls: ['./dashboard-screen.component.scss'], + standalone: true, + imports: [TranslateModule, TemplateStatsComponent, NgForOf, AsyncPipe, SnakeCasePipe], }) export class DashboardScreenComponent implements OnInit { readonly currentUser = getCurrentUser(); diff --git a/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts b/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts deleted file mode 100644 index 76a5d8121..000000000 --- a/apps/red-ui/src/app/modules/dashboard/dashboard.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { DashboardScreenComponent } from './dashboard-screen/dashboard-screen.component'; -import { RouterModule } from '@angular/router'; -import { SharedModule } from '@shared/shared.module'; -import { TemplateStatsComponent } from './components/template-stats/template-stats.component'; -import { BreadcrumbTypes } from '@red/domain'; -import { TranslateModule } from '@ngx-translate/core'; -import { IconButtonComponent, IqserHelpModeModule, IqserRoutes } from '@iqser/common-ui'; -import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe'; - -const routes: IqserRoutes = [ - { - path: '', - component: DashboardScreenComponent, - data: { - breadcrumbs: [BreadcrumbTypes.dashboard], - }, - }, -]; - -@NgModule({ - declarations: [DashboardScreenComponent, TemplateStatsComponent], - imports: [ - RouterModule.forChild(routes), - CommonModule, - SharedModule, - TranslateModule, - IqserHelpModeModule, - IconButtonComponent, - SnakeCasePipe, - ], -}) -export class DashboardModule {} diff --git a/apps/red-ui/src/app/modules/dashboard/dashboard.routes.ts b/apps/red-ui/src/app/modules/dashboard/dashboard.routes.ts new file mode 100644 index 000000000..0172b9b54 --- /dev/null +++ b/apps/red-ui/src/app/modules/dashboard/dashboard.routes.ts @@ -0,0 +1,13 @@ +import { IqserRoutes } from '@iqser/common-ui'; +import { DashboardScreenComponent } from './dashboard-screen/dashboard-screen.component'; +import { BreadcrumbTypes } from '@red/domain'; + +export default [ + { + path: '', + component: DashboardScreenComponent, + data: { + breadcrumbs: [BreadcrumbTypes.dashboard], + }, + }, +] satisfies IqserRoutes; diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-documents-status/dossier-documents-status.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-documents-status/dossier-documents-status.component.ts index 37850cb8a..c7693d179 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-documents-status/dossier-documents-status.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-documents-status/dossier-documents-status.component.ts @@ -1,12 +1,15 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; import { DossierStats, StatusSorter } from '@red/domain'; import { List } from '@iqser/common-ui/lib/utils'; -import { StatusBarConfig } from '@iqser/common-ui/lib/shared'; +import { StatusBarComponent, StatusBarConfig } from '@iqser/common-ui/lib/shared'; +import { NgIf } from '@angular/common'; @Component({ selector: 'redaction-dossier-documents-status', templateUrl: './dossier-documents-status.component.html', changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [StatusBarComponent, NgIf], }) export class DossierDocumentsStatusComponent implements OnChanges { @Input() stats: DossierStats; diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts index a3c9eca39..77d83c4b1 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossier-workload-column/dossier-workload-column.component.ts @@ -2,12 +2,17 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } f import { DefaultColorType, Dossier, DossierStats } from '@red/domain'; import { DefaultColorsService } from '@services/entity-services/default-colors.service'; import { BehaviorSubject, Observable, switchMap } from 'rxjs'; +import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component'; +import { AsyncPipe } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'redaction-dossier-workload-column', templateUrl: './dossier-workload-column.component.html', styleUrls: ['./dossier-workload-column.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [AnnotationIconComponent, AsyncPipe, TranslateModule], }) export class DossierWorkloadColumnComponent implements OnChanges { readonly #dossierTemplateId$ = new BehaviorSubject(null); diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts index 0fe4c0015..cba58f1ac 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/dossiers-listing-details/dossiers-listing-details.component.ts @@ -5,12 +5,18 @@ import { TranslateChartService } from '@services/translate-chart.service'; import { map } from 'rxjs/operators'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; import { getParam } from '@iqser/common-ui/lib/utils'; +import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component'; +import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatIcon } from '@angular/material/icon'; @Component({ selector: 'redaction-dossiers-listing-details', templateUrl: './dossiers-listing-details.component.html', styleUrls: ['./dossiers-listing-details.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [DonutChartComponent, AsyncPipe, NgIf, TranslateModule, MatIcon, DecimalPipe], }) export class DossiersListingDetailsComponent { readonly stats$: Observable; diff --git a/apps/red-ui/src/app/modules/dossiers-listing/components/table-item/table-item.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/components/table-item/table-item.component.ts index f47906c13..f85e3f995 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/components/table-item/table-item.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/components/table-item/table-item.component.ts @@ -4,12 +4,32 @@ import { DossierStatsService } from '@services/dossiers/dossier-stats.service'; import { BehaviorSubject, Observable } from 'rxjs'; import { switchMap, tap } from 'rxjs/operators'; import { getConfig } from '@iqser/common-ui'; +import { DossierNameColumnComponent } from '@shared/components/dossier-name-column/dossier-name-column.component'; +import { DateColumnComponent } from '../../../shared-dossiers/components/date-column/date-column.component'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { DossierWorkloadColumnComponent } from '../dossier-workload-column/dossier-workload-column.component'; +import { InitialsAvatarComponent } from '@common-ui/users'; +import { DossierDocumentsStatusComponent } from '../dossier-documents-status/dossier-documents-status.component'; +import { DossierStateComponent } from '@shared/components/dossier-state/dossier-state.component'; +import { DossiersListingActionsComponent } from '../../../shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component'; @Component({ selector: 'redaction-table-item [dossier]', templateUrl: './table-item.component.html', styleUrls: ['./table-item.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + DossierNameColumnComponent, + DateColumnComponent, + AsyncPipe, + NgIf, + DossierWorkloadColumnComponent, + InitialsAvatarComponent, + DossierDocumentsStatusComponent, + DossierStateComponent, + DossiersListingActionsComponent, + ], }) export class TableItemComponent implements OnChanges { @Input() dossier!: Dossier; diff --git a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts deleted file mode 100644 index f6377c851..000000000 --- a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.module.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CompositeRouteGuard, HasScrollbarDirective, IqserHelpModeModule, IqserListingModule, IqserRoutes } from '@iqser/common-ui'; -import { TranslateModule } from '@ngx-translate/core'; -import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component'; -import { RouterModule } from '@angular/router'; -import { SharedModule } from '@shared/shared.module'; -import { DossiersListingDetailsComponent } from './components/dossiers-listing-details/dossiers-listing-details.component'; -import { ConfigService } from './config.service'; -import { TableItemComponent } from './components/table-item/table-item.component'; -import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; -import { DossierWorkloadColumnComponent } from './components/dossier-workload-column/dossier-workload-column.component'; -import { DossierDocumentsStatusComponent } from './components/dossier-documents-status/dossier-documents-status.component'; -import { DossierFilesGuard } from '@guards/dossier-files-guard'; -import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens'; -import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users'; -import { StatusBarComponent } from '@iqser/common-ui/lib/shared'; -import { TypeFilterComponent } from '@shared/components/type-filter/type-filter.component'; -import { DateColumnComponent } from '../shared-dossiers/components/date-column/date-column.component'; -import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component'; - -const routes: IqserRoutes = [ - { - path: '', - component: DossiersListingScreenComponent, - pathMatch: 'full', - canActivate: [CompositeRouteGuard], - data: { routeGuards: [DossierFilesGuard], reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE }, - }, -]; - -@NgModule({ - declarations: [ - DossiersListingScreenComponent, - DossiersListingDetailsComponent, - DossierWorkloadColumnComponent, - TableItemComponent, - DossierDocumentsStatusComponent, - ], - providers: [ConfigService], - imports: [ - RouterModule.forChild(routes), - CommonModule, - SharedModule, - SharedDossiersModule, - TranslateModule, - IqserHelpModeModule, - IqserUsersModule, - IqserListingModule, - StatusBarComponent, - HasScrollbarDirective, - TypeFilterComponent, - DateColumnComponent, - AnnotationIconComponent, - InitialsAvatarComponent, - ], -}) -export class DossiersListingModule {} diff --git a/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.routes.ts b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.routes.ts new file mode 100644 index 000000000..7bc4b158a --- /dev/null +++ b/apps/red-ui/src/app/modules/dossiers-listing/dossiers-listing.routes.ts @@ -0,0 +1,16 @@ +import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component'; +import { CompositeRouteGuard, IqserRoutes } from '@iqser/common-ui'; +import { DossierFilesGuard } from '@guards/dossier-files-guard'; +import { ConfigService } from './config.service'; +import { ACTIVE_DOSSIERS_SERVICE } from '../../tokens'; + +export default [ + { + path: '', + component: DossiersListingScreenComponent, + pathMatch: 'full', + canActivate: [CompositeRouteGuard], + data: { routeGuards: [DossierFilesGuard], reuse: true, dossiersService: ACTIVE_DOSSIERS_SERVICE }, + providers: [ConfigService], + }, +] satisfies IqserRoutes; 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 12c19a2eb..9e811cb1c 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,7 +1,15 @@ import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { Dossier, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DossierTemplate } from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; -import { ButtonConfig, ListingComponent, listingProvidersFactory, LoadingService, TableComponent } from '@iqser/common-ui'; +import { + ButtonConfig, + HasScrollbarDirective, + IqserListingModule, + ListingComponent, + listingProvidersFactory, + LoadingService, + TableComponent, +} from '@iqser/common-ui'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { ConfigService } from '../config.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; @@ -12,12 +20,30 @@ 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'; +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'; @Component({ templateUrl: './dossiers-listing-screen.component.html', styleUrls: ['./dossiers-listing-screen.component.scss'], providers: listingProvidersFactory(DossiersListingScreenComponent), changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + IqserListingModule, + DossiersTypeSwitchComponent, + TranslateModule, + HasScrollbarDirective, + DossiersListingDetailsComponent, + NgIf, + TypeFilterComponent, + TableItemComponent, + AsyncPipe, + ], }) export class DossiersListingScreenComponent extends ListingComponent implements OnInit, OnAttach { readonly tableColumnConfigs = this._configService.tableConfig; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component.ts index 6a48cf304..0d2aea09d 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/components/dossiers-listing-actions/dossiers-listing-actions.component.ts @@ -1,18 +1,23 @@ import { Component, Input, OnChanges } from '@angular/core'; -import { IqserPermissionsService } from '@iqser/common-ui'; +import { CircleButtonComponent, IqserAllowDirective, IqserPermissionsService } from '@iqser/common-ui'; import { getCurrentUser } from '@iqser/common-ui/lib/users'; import type { Dossier, File, User } from '@red/domain'; import { FilesMapService } from '@services/files/files-map.service'; import { PermissionsService } from '@services/permissions.service'; import { ReanalysisService } from '@services/reanalysis.service'; -import { LongPressEvent } from '@shared/directives/long-press.directive'; +import { LongPressDirective, LongPressEvent } from '@shared/directives/long-press.directive'; import { Roles } from '@users/roles'; import { UserPreferenceService } from '@users/user-preference.service'; import { DossiersDialogService } from '../../services/dossiers-dialog.service'; +import { TranslateModule } from '@ngx-translate/core'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component'; @Component({ selector: 'redaction-dossiers-listing-actions [dossier]', templateUrl: './dossiers-listing-actions.component.html', + standalone: true, + imports: [LongPressDirective, CircleButtonComponent, IqserAllowDirective, TranslateModule, NgIf, FileDownloadBtnComponent, AsyncPipe], }) export class DossiersListingActionsComponent implements OnChanges { readonly roles = Roles; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts index 008069e90..a3ba94d00 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts @@ -23,7 +23,6 @@ import { StopPropagationDirective, } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; -import { DossiersListingActionsComponent } from './components/dossiers-listing-actions/dossiers-listing-actions.component'; import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users'; import { SideNavComponent, SmallChipComponent, StatusBarComponent } from '@iqser/common-ui/lib/shared'; import { SelectComponent } from '@shared/components/select/select.component'; @@ -42,7 +41,6 @@ const components = [ EditDossierDictionaryComponent, EditDossierAttributesComponent, EditDossierTeamComponent, - DossiersListingActionsComponent, ]; const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogComponent]; diff --git a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts index 04a995521..a842204f7 100644 --- a/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dictionary-manager/dictionary-manager.component.ts @@ -21,7 +21,6 @@ import { MatCheckbox } from '@angular/material/checkbox'; import { MatFormField } from '@angular/material/form-field'; import { MatOption, MatSelect } from '@angular/material/select'; import { MatDivider } from '@angular/material/divider'; -import { SharedModule } from '@shared/shared.module'; const COMPARE_ENTRIES_ERROR = 'compare-entries-error'; const SMOOTH_SCROLL = 0; diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts b/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts index 142dbdef6..b2178e0c7 100644 --- a/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dossier-name-column/dossier-name-column.component.ts @@ -4,6 +4,9 @@ import { DossierStats, IDossier } from '@red/domain'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { dateWithoutTime } from '@utils/functions'; import dayjs from 'dayjs'; +import { MatTooltip } from '@angular/material/tooltip'; +import { MatIcon } from '@angular/material/icon'; +import { DatePipe, NgIf } from '@angular/common'; const DUE_DATE_WARN_DAYS = 14; @@ -20,6 +23,8 @@ export interface PartialDossier extends Partial { selector: 'redaction-dossier-name-column', templateUrl: './dossier-name-column.component.html', changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [MatTooltip, MatIcon, NgIf, DatePipe], }) export class DossierNameColumnComponent { @Input() dossier: PartialDossier; diff --git a/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.ts b/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.ts index f22a673b6..f29a69db1 100644 --- a/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dossier-state/dossier-state.component.ts @@ -2,12 +2,17 @@ import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/c import { Dossier, DossierState } from '@red/domain'; import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service'; import { Observable } from 'rxjs'; +import { SmallChipComponent } from '@common-ui/shared'; +import { AsyncPipe } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'redaction-dossier-state [dossier]', templateUrl: './dossier-state.component.html', styleUrls: ['./dossier-state.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [SmallChipComponent, AsyncPipe, TranslateModule], }) export class DossierStateComponent implements OnChanges { @Input() dossier: Dossier; diff --git a/apps/red-ui/src/app/modules/shared/components/dossiers-type-switch/dossiers-type-switch.component.ts b/apps/red-ui/src/app/modules/shared/components/dossiers-type-switch/dossiers-type-switch.component.ts index 3febb956a..d5e520b58 100644 --- a/apps/red-ui/src/app/modules/shared/components/dossiers-type-switch/dossiers-type-switch.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/dossiers-type-switch/dossiers-type-switch.component.ts @@ -2,12 +2,17 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { ARCHIVE_ROUTE, DOSSIER_TEMPLATE_ID, DOSSIERS_ROUTE } from '@red/domain'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; import { getParam } from '@iqser/common-ui/lib/utils'; +import { AsyncPipe, NgIf } from '@angular/common'; +import { RouterLink, RouterLinkActive } from '@angular/router'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'redaction-dossiers-type-switch', templateUrl: './dossiers-type-switch.component.html', styleUrls: ['./dossiers-type-switch.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [NgIf, AsyncPipe, RouterLink, RouterLinkActive, TranslateModule], }) export class DossiersTypeSwitchComponent { readonly DOSSIERS_ROUTE = DOSSIERS_ROUTE; diff --git a/apps/red-ui/src/app/modules/shared/shared.module.ts b/apps/red-ui/src/app/modules/shared/shared.module.ts index 1cfd6c52e..d0fd8c541 100644 --- a/apps/red-ui/src/app/modules/shared/shared.module.ts +++ b/apps/red-ui/src/app/modules/shared/shared.module.ts @@ -19,10 +19,7 @@ import { import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive'; import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; import { DatePipe } from './pipes/date.pipe'; -import { DossierStateComponent } from './components/dossier-state/dossier-state.component'; -import { DossierNameColumnComponent } from './components/dossier-name-column/dossier-name-column.component'; import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; -import { DossiersTypeSwitchComponent } from './components/dossiers-type-switch/dossiers-type-switch.component'; import { TranslateModule } from '@ngx-translate/core'; import { RouterModule } from '@angular/router'; import { AddDossierDialogComponent } from './dialogs/add-dossier-dialog/add-dossier-dialog.component'; @@ -36,13 +33,7 @@ import { SelectComponent } from '@shared/components/select/select.component'; import { FileAttributeComponent } from '../dossier-overview/components/file-attribute/file-attribute.component'; import { MatDividerModule } from '@angular/material/divider'; -const components = [ - DossierStateComponent, - DossierNameColumnComponent, - DossiersTypeSwitchComponent, - AddDossierDialogComponent, - WatermarkSelectorComponent, -]; +const components = [AddDossierDialogComponent, WatermarkSelectorComponent]; const utils = [DatePipe, NavigateLastDossiersScreenDirective]; diff --git a/apps/red-ui/src/app/modules/trash/trash.module.ts b/apps/red-ui/src/app/modules/trash/trash.module.ts index 6ea3c27ce..fb8596de3 100644 --- a/apps/red-ui/src/app/modules/trash/trash.module.ts +++ b/apps/red-ui/src/app/modules/trash/trash.module.ts @@ -9,6 +9,7 @@ import { TrashDialogService } from './services/trash-dialog.service'; import { TranslateModule } from '@ngx-translate/core'; import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users'; import { FileNameColumnComponent } from '@shared/components/file-name-column/file-name-column.component'; +import { DossierNameColumnComponent } from '@shared/components/dossier-name-column/dossier-name-column.component'; const routes = [{ path: '', component: TrashScreenComponent }]; @@ -24,6 +25,7 @@ const routes = [{ path: '', component: TrashScreenComponent }]; CircleButtonComponent, FileNameColumnComponent, InitialsAvatarComponent, + DossierNameColumnComponent, ], providers: [TrashDialogService], })