RED-9321: refactored account, dossier-listing and dashboard.

This commit is contained in:
Nicoleta Panaghiu 2024-06-12 19:38:21 +03:00 committed by Dan Percic
parent 6469e3de36
commit 0fe7584f4b
29 changed files with 193 additions and 156 deletions

View File

@ -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],

View File

@ -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',

View File

@ -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);

View File

@ -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 {}

View File

@ -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;

View File

@ -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<string>;
@ -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<ConfirmPasswordDialogComponent>) {

View File

@ -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;

View File

@ -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 {}

View File

@ -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;

View File

@ -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],
})

View File

@ -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;

View File

@ -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<User>();

View File

@ -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 {}

View File

@ -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;

View File

@ -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;

View File

@ -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<string>(null);

View File

@ -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<DashboardStats>;

View File

@ -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;

View File

@ -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 {}

View File

@ -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;

View File

@ -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<Dossier> implements OnInit, OnAttach {
readonly tableColumnConfigs = this._configService.tableConfig;

View File

@ -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;

View File

@ -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];

View File

@ -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;

View File

@ -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<IDossier> {
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;

View File

@ -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;

View File

@ -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;

View File

@ -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];

View File

@ -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],
})