RED-9321: removed file-preview and dossier-overview modules, use standalone.

This commit is contained in:
Nicoleta Panaghiu 2024-06-11 19:35:11 +03:00 committed by Dan Percic
parent 3d7dca1f43
commit 9409261f3b
86 changed files with 1029 additions and 399 deletions

View File

@ -8,7 +8,7 @@ import { DossierFilesGuard } from '@guards/dossier-files-guard';
import { templateExistsWhenEnteringDossierList } from '@guards/dossier-template-exists.guard';
import { DossierTemplatesGuard } from '@guards/dossier-templates.guard';
import { loadActiveDossiersGuard, loadAllDossiersGuard, loadArchivedDossiersGuard } from '@guards/dossiers.guard';
import { editAttributeGuard } from '@guards/edit-attribute.guard';
import { isNotEditingFileAttributeGuard } from '@guards/file-attribute.guard';
import { FeaturesGuard } from '@guards/features-guard.service';
import { ifLoggedIn } from '@guards/if-logged-in.guard';
import { TrashGuard } from '@guards/trash.guard';
@ -38,7 +38,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [
{
path: `:${DOSSIER_ID}`,
canActivate: [CompositeRouteGuard, IqserPermissionsGuard],
canDeactivate: [editAttributeGuard],
canDeactivate: [isNotEditingFileAttributeGuard],
data: {
routeGuards: [DossierFilesGuard],
breadcrumbs: [BreadcrumbTypes.dossierTemplate, BreadcrumbTypes.dossier],
@ -49,7 +49,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [
},
skeleton: 'dossier',
},
loadChildren: () => import('./modules/dossier-overview/dossier-overview.module').then(m => m.DossierOverviewModule),
loadChildren: () => import('./modules/dossier-overview/dossier-overview.routes'),
},
{
path: `:${DOSSIER_ID}/file/:${FILE_ID}`,
@ -63,7 +63,7 @@ const dossierTemplateIdRoutes: IqserRoutes = [
redirectTo: '/auth-error',
},
},
loadChildren: () => import('./modules/file-preview/file-preview.module').then(m => m.FilePreviewModule),
loadChildren: () => import('./modules/file-preview/file-preview.routes'),
},
{
path: '',

View File

@ -44,7 +44,7 @@ import {
import { CommonUiModule } from '@iqser/common-ui/lib/common-ui.module';
import { LogoComponent, SkeletonComponent, ToastComponent } from '@iqser/common-ui/lib/shared';
import { TenantsModule } from '@iqser/common-ui/lib/tenants';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { MissingTranslationHandler } from '@ngx-translate/core';
import { AppConfig, ILoggerConfig } from '@red/domain';
@ -186,6 +186,7 @@ export const appModuleFactory = (config: AppConfig) => {
IconButtonComponent,
MatDividerModule,
ChevronButtonComponent,
InitialsAvatarComponent,
],
providers: [
{

View File

@ -1,8 +0,0 @@
import { inject } from '@angular/core';
import { CanDeactivateFn } from '@angular/router';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { DossierOverviewScreenComponent } from '../modules/dossier-overview/screen/dossier-overview-screen.component';
// TODO: rename to something like "isNotEditingFileAttributeGuard"
export const editAttributeGuard: CanDeactivateFn<DossierOverviewScreenComponent> = () =>
!inject(FileAttributesService).isEditingFileAttribute();

View File

@ -0,0 +1,7 @@
import { inject } from '@angular/core';
import { CanDeactivateFn } from '@angular/router';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import DossierOverviewScreenComponent from '../modules/dossier-overview/screen/dossier-overview-screen.component';
export const isNotEditingFileAttributeGuard: CanDeactivateFn<DossierOverviewScreenComponent> = () =>
!inject(FileAttributesService).isEditingFileAttribute();

View File

@ -44,6 +44,7 @@ const entityRoutes: IqserRoutes = [
];
const dossierTemplateIdRoutes: IqserRoutes = [
{ path: '', redirectTo: 'info', pathMatch: 'full' },
{
path: 'entities',
children: entityRoutes,
@ -152,7 +153,6 @@ const dossierTemplateIdRoutes: IqserRoutes = [
},
},
},
{ path: '', redirectTo: 'info', pathMatch: 'full' },
],
},
];
@ -180,6 +180,7 @@ const dossierTemplatesRoutes: IqserRoutes = [
];
const routes: IqserRoutes = [
{ path: '', redirectTo: 'dossier-templates', pathMatch: 'full' },
{
path: 'dossier-templates',
children: dossierTemplatesRoutes,
@ -271,7 +272,6 @@ const routes: IqserRoutes = [
},
},
},
{ path: '', redirectTo: 'dossier-templates', pathMatch: 'full' },
],
},
];

View File

@ -47,17 +47,19 @@ import {
IqserDenyDirective,
IqserHelpModeModule,
IqserListingModule,
IqserUploadFileModule,
RoundCheckboxComponent,
UploadFileComponent,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { AuditInfoDialogComponent } from './dialogs/audit-info-dialog/audit-info-dialog.component';
import { DossierTemplateActionsComponent } from './shared/components/dossier-template-actions/dossier-template-actions.component';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { SelectComponent } from '@shared/components/select/select.component';
import { PaginationComponent } from '@common-ui/pagination/pagination.component';
import { AddCloneDossierTemplateDialogComponent } from './dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component';
import { ComponentMappingsScreenComponent } from './screens/component-mappings/component-mappings-screen.component';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { NamePipe } from '@common-ui/users/name.pipe';
const dialogs = [
AddCloneDossierTemplateDialogComponent,
@ -109,7 +111,6 @@ const components = [
TranslateModule,
HumanizePipe,
IqserListingModule,
IqserUploadFileModule,
IqserHelpModeModule,
AdminSideNavComponent,
DossierTemplateActionsComponent,
@ -127,6 +128,10 @@ const components = [
IqserDenyDirective,
SelectComponent,
PaginationComponent,
AnnotationIconComponent,
InitialsAvatarComponent,
UploadFileComponent,
NamePipe,
],
})
export class AdminModule {}

View File

@ -1,5 +1,3 @@
<!--TODO: Use this for all dossier template screens -->
<section>
<div class="page-header">
<redaction-dossier-template-breadcrumbs class="flex-1"></redaction-dossier-template-breadcrumbs>

View File

@ -1,13 +1,13 @@
import { Component, OnInit } from '@angular/core';
import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, IqserDialogComponent, IqserUploadFileModule } from '@iqser/common-ui';
import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, IqserDialogComponent, UploadFileComponent } from '@iqser/common-ui';
import { FileAttributeEncodingTypes, IComponentMapping } from '@red/domain';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { TranslateModule } from '@ngx-translate/core';
import { NgForOf, NgIf } from '@angular/common';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatDialogClose } from '@angular/material/dialog';
import { MatDialogModule } from '@angular/material/dialog';
import { MatOption } from '@angular/material/autocomplete';
import { MatSelect } from '@angular/material/select';
import { MatSelect, MatSelectTrigger } from '@angular/material/select';
import { fileAttributeEncodingTypesTranslations } from '@translations/file-attribute-encoding-types-translations';
import { firstValueFrom } from 'rxjs';
import { ComponentMappingsService } from '@services/entity-services/component-mappings.service';
@ -35,11 +35,12 @@ interface DialogResult {
MatFormFieldModule,
NgForOf,
CircleButtonComponent,
MatDialogClose,
IqserUploadFileModule,
MatDialogModule,
MatOption,
MatSelectTrigger,
MatSelect,
IconButtonComponent,
UploadFileComponent,
],
})
export class AddEditComponentMappingDialogComponent

View File

@ -11,7 +11,7 @@ import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.se
import { TranslateModule } from '@ngx-translate/core';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect } from '@angular/material/select';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { NgForOf, NgIf } from '@angular/common';
export interface ConfirmDeleteDossierStateDialogData {
@ -29,6 +29,7 @@ export interface ConfirmDeleteDossierStateDialogData {
ReactiveFormsModule,
MatCheckbox,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,

View File

@ -8,8 +8,8 @@ import { MatTooltip } from '@angular/material/tooltip';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { IqserUsersModule } from '@common-ui/users';
import { DossierTemplateActionsComponent } from '../../../shared/components/dossier-template-actions/dossier-template-actions.component';
import { InitialsAvatarComponent } from '@common-ui/users';
@Component({
selector: 'redaction-table-item [dossierTemplate]',
@ -17,7 +17,7 @@ import { DossierTemplateActionsComponent } from '../../../shared/components/doss
styleUrls: ['./table-item.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatTooltip, NgIf, AsyncPipe, MatIcon, TranslateModule, IqserUsersModule, DatePipe, DossierTemplateActionsComponent],
imports: [MatTooltip, NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, DossierTemplateActionsComponent, InitialsAvatarComponent],
})
export class TableItemComponent implements OnChanges {
@Input() dossierTemplate!: DossierTemplate;

View File

@ -16,7 +16,7 @@ import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect } from '@angular/material/select';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { FormsModule } from '@angular/forms';
import { MatSlideToggle } from '@angular/material/slide-toggle';
@ -36,6 +36,7 @@ import { MatSlideToggle } from '@angular/material/slide-toggle';
MatMenu,
EditableInputComponent,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
FormsModule,

View File

@ -23,7 +23,7 @@ import { trackByFactory } from '@iqser/common-ui/lib/utils';
import { MatFormField } from '@angular/material/form-field';
import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from '@angular/material/autocomplete';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatSelect } from '@angular/material/select';
import { MatSelect, MatSelectTrigger } from '@angular/material/select';
import { ActiveFieldsListingComponent } from './active-fields-listing/active-fields-listing.component';
export interface IFileAttributesCSVImportData {
@ -46,6 +46,7 @@ export interface IFileAttributesCSVImportData {
MatAutocomplete,
AsyncPipe,
MatOption,
MatSelectTrigger,
MatSelect,
CircleButtonComponent,
NgIf,
@ -81,7 +82,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
@Inject(MAT_DIALOG_DATA) readonly data: IFileAttributesCSVImportData,
) {
super();
this.form = this._getForm();
this.form = this.#getForm();
this.readFile();
}
@ -117,7 +118,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
this.parseResult.meta.fields = Object.keys(this.parseResult.data[0]);
}
this.entitiesService.setEntities(this.parseResult.meta.fields.map(field => this._buildAttribute(field)));
this.entitiesService.setEntities(this.parseResult.meta.fields.map(field => this.#buildAttribute(field)));
this.activeFields = [];
for (const entity of this.allEntities) {
@ -155,7 +156,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
encoding: this.form.get('encoding').value,
};
});
reader.readAsText(this.data.csv, this._mapEncoding(this.form.get('encoding').value));
reader.readAsText(this.data.csv, this.#mapEncoding(this.form.get('encoding').value));
}
getSample(csvColumn: string) {
@ -245,15 +246,15 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
}, 0);
}
private _getForm(): UntypedFormGroup {
#getForm(): UntypedFormGroup {
return this._formBuilder.group({
filenameMappingColumnHeaderName: ['', [Validators.required, this._autocompleteStringValidator()]],
filenameMappingColumnHeaderName: ['', [Validators.required, this.#autocompleteStringValidator()]],
delimiter: [undefined, Validators.required],
encoding: [this.data.existingConfiguration?.encoding, Validators.required],
});
}
private _autocompleteStringValidator(): ValidatorFn {
#autocompleteStringValidator(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
if ((this.parseResult?.meta?.fields || []).indexOf(control.value) !== -1) {
return null; /* valid option selected */
@ -262,7 +263,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
};
}
private _buildAttribute(csvColumn: string): IField {
#buildAttribute(csvColumn: string): IField {
const sample = this.getSample(csvColumn);
const isNumber = sample && !isNaN(sample);
return {
@ -276,7 +277,7 @@ export class FileAttributesCsvImportDialogComponent extends ListingComponent<IFi
};
}
private _mapEncoding(encoding: string) {
#mapEncoding(encoding: string) {
if (!encoding) {
return 'UTF-8';
}

View File

@ -5,9 +5,9 @@ import { DossierTemplatesService } from '@services/dossier-templates/dossier-tem
import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service';
import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations';
import { AsyncPipe, DatePipe, NgIf } from '@angular/common';
import { IqserUsersModule } from '@common-ui/users';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
interface Context {
readonly dossierTemplate: DossierTemplate;
@ -19,7 +19,7 @@ interface Context {
templateUrl: './dossier-template-details.component.html',
styleUrls: ['./dossier-template-details.component.scss'],
standalone: true,
imports: [NgIf, AsyncPipe, IqserUsersModule, MatIcon, TranslateModule, DatePipe],
imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent],
})
export class DossierTemplateDetailsComponent extends ContextComponent<Context> implements OnInit {
readonly translations = dossierTemplateStatusTranslations;

View File

@ -24,7 +24,7 @@ import { MatSliderModule } from '@angular/material/slider';
import { ColorPickerModule } from 'ngx-color-picker';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { IqserAuthGuard, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserAuthGuard, IqserUsersModule } from '@iqser/common-ui/lib/users';
const routes: IqserRoutes = [
{
@ -72,6 +72,7 @@ const routes: IqserRoutes = [
HasScrollbarDirective,
IqserAllowDirective,
MatTooltipModule,
InitialsAvatarComponent,
],
})
export class WatermarkModule {}

View File

@ -28,7 +28,7 @@ const routes: Routes = [
dossiersService: ARCHIVED_DOSSIERS_SERVICE,
skeleton: 'dossier',
},
loadChildren: () => import('../dossier-overview/dossier-overview.module').then(m => m.DossierOverviewModule),
loadChildren: () => import('../dossier-overview/dossier-overview.routes'),
},
{
path: `:${DOSSIER_ID}/file/:${FILE_ID}`,
@ -38,7 +38,7 @@ const routes: Routes = [
breadcrumbs: [BreadcrumbTypes.dossierTemplate, BreadcrumbTypes.dossier, BreadcrumbTypes.file],
dossiersService: ARCHIVED_DOSSIERS_SERVICE,
},
loadChildren: () => import('../file-preview/file-preview.module').then(m => m.FilePreviewModule),
loadChildren: () => import('../file-preview/file-preview.routes'),
},
];

View File

@ -8,7 +8,7 @@ import { IqserHelpModeModule, IqserListingModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { SharedModule } from '@shared/shared.module';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
@NgModule({
declarations: [TableItemComponent, ArchivedDossiersScreenComponent],
@ -21,6 +21,7 @@ import { IqserUsersModule } from '@iqser/common-ui/lib/users';
IqserListingModule,
SharedModule,
SharedDossiersModule,
InitialsAvatarComponent,
],
providers: [ConfigService],
})

View File

@ -1,4 +1,9 @@
<ng-container (longPress)="forceReanalysisAction($event)" *ngIf="selectedFiles.length" redactionLongPress>
<redaction-expandable-file-actions [actions]="buttons" [buttonType]="buttonType" [maxWidth]="maxWidth" [tooltipPosition]="'above'">
<redaction-expandable-file-actions
[actions]="buttons"
[buttonType]="buttonType"
[maxWidth]="maxWidth"
[tooltipPosition]="IqserTooltipPositions.above"
>
</redaction-expandable-file-actions>
</ng-container>

View File

@ -3,14 +3,19 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { CircleButtonType, CircleButtonTypes } from '@iqser/common-ui';
import { Action, ActionTypes, Dossier, File, ProcessingFileStatuses } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import { LongPressEvent } from '@shared/directives/long-press.directive';
import { LongPressDirective, LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@users/user-preference.service';
import { BulkActionsService } from '../../services/bulk-actions.service';
import { ExpandableFileActionsComponent } from '@shared/components/expandable-file-actions/expandable-file-actions.component';
import { IqserTooltipPositions } from '@common-ui/utils';
import { NgIf } from '@angular/common';
@Component({
selector: 'redaction-dossier-overview-bulk-actions [dossier] [selectedFiles]',
templateUrl: './dossier-overview-bulk-actions.component.html',
styleUrls: ['./dossier-overview-bulk-actions.component.scss'],
standalone: true,
imports: [LongPressDirective, ExpandableFileActionsComponent, NgIf],
})
export class DossierOverviewBulkActionsComponent implements OnChanges {
#analysisForced: boolean;
@ -37,6 +42,7 @@ export class DossierOverviewBulkActionsComponent implements OnChanges {
@Input() buttonType: CircleButtonType = CircleButtonTypes.default;
@Input() maxWidth: number;
buttons: Action[];
readonly IqserTooltipPositions = IqserTooltipPositions;
constructor(
private readonly _permissionsService: PermissionsService,

View File

@ -6,11 +6,16 @@ import { firstValueFrom, Observable } from 'rxjs';
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { getConfig } from '@iqser/common-ui';
import { MatIcon } from '@angular/material/icon';
import { AsyncPipe, DatePipe, DecimalPipe, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-dossier-details-stats',
templateUrl: './dossier-details-stats.component.html',
styleUrls: ['./dossier-details-stats.component.scss'],
standalone: true,
imports: [MatIcon, NgIf, AsyncPipe, TranslateModule, DatePipe, DecimalPipe, NgForOf],
})
export class DossierDetailsStatsComponent implements OnInit {
@Input() dossierAttributes: DossierAttributeWithValue[];

View File

@ -106,7 +106,7 @@
<iqser-circle-button
(action)="toggleCollapse.emit()"
[icon]="'iqser:' + action"
[tooltipPosition]="'before'"
[tooltipPosition]="IqserTooltipPositions.before"
[tooltip]="tooltip"
></iqser-circle-button>
</ng-template>

View File

@ -13,7 +13,14 @@ import {
} from '@red/domain';
import { TranslateChartService } from '@services/translate-chart.service';
import { UserService } from '@users/user.service';
import { getConfig, ProgressBarConfigModel, Toaster } from '@iqser/common-ui';
import {
CircleButtonComponent,
getConfig,
IqserAllowDirective,
IqserLoadingModule,
ProgressBarConfigModel,
Toaster,
} from '@iqser/common-ui';
import { workflowFileStatusTranslations } from '@translations/file-status-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { combineLatestWith, firstValueFrom } from 'rxjs';
@ -22,9 +29,16 @@ import { map, tap } from 'rxjs/operators';
import { DossiersService } from '@services/dossiers/dossiers.service';
import { FilesMapService } from '@services/files/files-map.service';
import { Roles } from '@users/roles';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { getCurrentUser, InitialsAvatarComponent } from '@iqser/common-ui/lib/users';
import { FilterService, INestedFilter } from '@iqser/common-ui/lib/filtering';
import { ContextComponent, getParam, shareLast } from '@iqser/common-ui/lib/utils';
import { ContextComponent, getParam, IqserTooltipPositions, shareLast } from '@iqser/common-ui/lib/utils';
import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component';
import { TypeFilterComponent } from '@shared/components/type-filter/type-filter.component';
import { DossierDetailsStatsComponent } from '../dossier-details-stats/dossier-details-stats.component';
import { AssignUserDropdownComponent } from '@shared/components/assign-user-dropdown/assign-user-dropdown.component';
interface DossierDetailsContext {
needsWorkFilters: INestedFilter[] | undefined;
@ -37,6 +51,23 @@ interface DossierDetailsContext {
selector: 'redaction-dossier-details',
templateUrl: './dossier-details.component.html',
styleUrls: ['./dossier-details.component.scss'],
standalone: true,
imports: [
NgTemplateOutlet,
NgIf,
AsyncPipe,
CircleButtonComponent,
IqserAllowDirective,
TranslateModule,
TeamMembersComponent,
DonutChartComponent,
IqserLoadingModule,
NgForOf,
TypeFilterComponent,
DossierDetailsStatsComponent,
AssignUserDropdownComponent,
InitialsAvatarComponent,
],
})
export class DossierDetailsComponent extends ContextComponent<DossierDetailsContext> {
#currentChartSubtitleIndex = 0;
@ -50,6 +81,7 @@ export class DossierDetailsComponent extends ContextComponent<DossierDetailsCont
readonly expandTooltip = _('dossier-details.expand');
chartConfig: DonutChartConfig[] = [];
readonly isDocumine = getConfig().IS_DOCUMINE;
readonly IqserTooltipPositions = IqserTooltipPositions;
constructor(
private readonly _toaster: Toaster,

View File

@ -1,5 +1,17 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { ActionConfig, CircleButtonTypes, EntitiesService, getConfig, ListingService, LoadingService, Toaster } from '@iqser/common-ui';
import {
ActionConfig,
CircleButtonComponent,
CircleButtonTypes,
DisableStopPropagationDirective,
EntitiesService,
getConfig,
IqserAllowDirective,
IqserListingModule,
ListingService,
LoadingService,
Toaster,
} from '@iqser/common-ui';
import { Dossier, File, IFile } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -14,10 +26,30 @@ import { Roles } from '@users/roles';
import { SortingService } from '@iqser/common-ui/lib/sorting';
import { List, some } from '@iqser/common-ui/lib/utils';
import { ComponentLogService } from '@services/files/component-log.service';
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
import { ViewModeSelectionComponent } from '../view-mode-selection/view-mode-selection.component';
@Component({
selector: 'redaction-dossier-overview-screen-header [dossier] [upload]',
templateUrl: './dossier-overview-screen-header.component.html',
standalone: true,
imports: [
IqserListingModule,
CircleButtonComponent,
MatMenuTrigger,
IqserAllowDirective,
AsyncPipe,
TranslateModule,
FileDownloadBtnComponent,
NgIf,
ViewModeSelectionComponent,
DisableStopPropagationDirective,
MatMenu,
MatMenuItem,
],
})
export class DossierOverviewScreenHeaderComponent implements OnInit {
@Input() dossier: Dossier;

View File

@ -6,12 +6,18 @@ import { DictionariesMapService } from '@services/entity-services/dictionaries-m
import { UserService } from '@users/user.service';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-file-workload',
templateUrl: './file-workload.component.html',
styleUrls: ['./file-workload.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [AnnotationIconComponent, AsyncPipe, TranslateModule, MatIcon, NgIf],
})
export class FileWorkloadComponent implements OnInit {
#dossierTemplateId: string;

View File

@ -2,11 +2,42 @@ import { Component, Input } from '@angular/core';
import { getConfig } from '@iqser/common-ui';
import { Dossier, File, IFileAttributeConfig } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { FileNameColumnComponent } from '@shared/components/file-name-column/file-name-column.component';
import { DateColumnComponent } from '../../../shared-dossiers/components/date-column/date-column.component';
import { FileAttributeComponent } from '../file-attribute/file-attribute.component';
import { NgForOf, NgIf } from '@angular/common';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { FileWorkloadComponent } from './file-workload/file-workload.component';
import { InitialsAvatarComponent, IqserUsersModule } from '@common-ui/users';
import { MatIcon } from '@angular/material/icon';
import { OcrProgressBarComponent } from '@shared/components/ocr-progress-bar/ocr-progress-bar.component';
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
import { StatusBarComponent } from '@common-ui/shared';
import { FileActionsComponent } from '../../../shared-dossiers/components/file-actions/file-actions.component';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-table-item',
templateUrl: './table-item.component.html',
styleUrls: ['./table-item.component.scss'],
standalone: true,
imports: [
FileNameColumnComponent,
DateColumnComponent,
FileAttributeComponent,
NgIf,
AnnotationIconComponent,
FileWorkloadComponent,
IqserUsersModule,
MatIcon,
OcrProgressBarComponent,
ProcessingIndicatorComponent,
StatusBarComponent,
FileActionsComponent,
TranslateModule,
NgForOf,
InitialsAvatarComponent,
],
})
export class TableItemComponent {
@Input({ required: true }) file: File;

View File

@ -1,18 +1,25 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ListingMode, ListingModes, ListingService } from '@iqser/common-ui';
import { CircleButtonComponent, ListingMode, ListingModes, ListingService } from '@iqser/common-ui';
import { File } from '@red/domain';
import { ConfigService } from '../../config.service';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe, NgIf } from '@angular/common';
@Component({
selector: 'redaction-view-mode-selection',
templateUrl: './view-mode-selection.component.html',
styleUrls: ['./view-mode-selection.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [CircleButtonComponent, TranslateModule, AsyncPipe, NgIf],
})
export class ViewModeSelectionComponent {
readonly listingModes = ListingModes;
constructor(readonly configService: ConfigService, private readonly _listingService: ListingService<File>) {}
constructor(
readonly configService: ConfigService,
private readonly _listingService: ListingService<File>,
) {}
setListingMode(listingMode: ListingMode): void {
if (listingMode === this.configService.listingMode) {

View File

@ -1,13 +1,38 @@
import { ChangeDetectorRef, Component, ElementRef, Input, OnInit, Optional, ViewChild } from '@angular/core';
import { HelpModeService } from '@iqser/common-ui';
import { DisableStopPropagationDirective, HelpModeService } from '@iqser/common-ui';
import { Debounce, trackByFactory } from '@iqser/common-ui/lib/utils';
import { Dossier, File, IFileAttributeConfig } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { MatTooltip } from '@angular/material/tooltip';
import { RouterLink } from '@angular/router';
import { FileStatsComponent } from '@shared/components/file-stats/file-stats.component';
import { InitialsAvatarComponent, IqserUsersModule } from '@common-ui/users';
import { FileAttributeComponent } from '../file-attribute/file-attribute.component';
import { FileWorkloadComponent } from '../table-item/file-workload/file-workload.component';
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
import { FileActionsComponent } from '../../../shared-dossiers/components/file-actions/file-actions.component';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
@Component({
selector: 'redaction-workflow-item',
templateUrl: './workflow-item.component.html',
styleUrls: ['./workflow-item.component.scss'],
standalone: true,
imports: [
MatTooltip,
RouterLink,
FileStatsComponent,
IqserUsersModule,
FileAttributeComponent,
FileWorkloadComponent,
ProcessingIndicatorComponent,
FileActionsComponent,
NgIf,
DisableStopPropagationDirective,
AsyncPipe,
NgForOf,
InitialsAvatarComponent,
],
})
export class WorkflowItemComponent implements OnInit {
@ViewChild('actionsWrapper', { static: true }) private _actionsWrapper: ElementRef;

View File

@ -1,75 +0,0 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import {
CircleButtonComponent,
DisableStopPropagationDirective,
DynamicInputComponent,
HasScrollbarDirective,
IqserAllowDirective,
IqserHelpModeModule,
IqserListingModule,
IqserLoadingModule,
IqserRoutes,
StopPropagationDirective,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { DossierOverviewScreenComponent } from './screen/dossier-overview-screen.component';
import { DossierOverviewBulkActionsComponent } from './components/bulk-actions/dossier-overview-bulk-actions.component';
import { DossierDetailsComponent } from './components/dossier-details/dossier-details.component';
import { DossierDetailsStatsComponent } from './components/dossier-details-stats/dossier-details-stats.component';
import { TableItemComponent } from './components/table-item/table-item.component';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { FileWorkloadComponent } from './components/table-item/file-workload/file-workload.component';
import { WorkflowItemComponent } from './components/workflow-item/workflow-item.component';
import { DossierOverviewScreenHeaderComponent } from './components/screen-header/dossier-overview-screen-header.component';
import { ViewModeSelectionComponent } from './components/view-mode-selection/view-mode-selection.component';
import { FileAttributeComponent } from './components/file-attribute/file-attribute.component';
import { SharedModule } from '@shared/shared.module';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { StatusBarComponent } from '@iqser/common-ui/lib/shared';
const routes: IqserRoutes = [
{
path: '',
component: DossierOverviewScreenComponent,
pathMatch: 'full',
data: {
reuse: true,
},
},
];
@NgModule({
declarations: [
DossierOverviewScreenComponent,
DossierOverviewBulkActionsComponent,
DossierDetailsComponent,
DossierDetailsStatsComponent,
FileWorkloadComponent,
TableItemComponent,
WorkflowItemComponent,
DossierOverviewScreenHeaderComponent,
ViewModeSelectionComponent,
],
imports: [
RouterModule.forChild(routes),
CommonModule,
SharedDossiersModule,
TranslateModule,
IqserHelpModeModule,
IqserUsersModule,
IqserListingModule,
IqserLoadingModule,
SharedModule,
CircleButtonComponent,
StatusBarComponent,
StopPropagationDirective,
HasScrollbarDirective,
DynamicInputComponent,
IqserAllowDirective,
DisableStopPropagationDirective,
FileAttributeComponent,
],
})
export class DossierOverviewModule {}

View File

@ -0,0 +1,15 @@
import { IqserRoutes } from '@iqser/common-ui';
import DossierOverviewScreenComponent from './screen/dossier-overview-screen.component';
import { FileAssignService } from '../shared-dossiers/services/file-assign.service';
export default [
{
path: '',
component: DossierOverviewScreenComponent,
pathMatch: 'full',
data: {
reuse: true,
},
providers: [FileAssignService],
},
] satisfies IqserRoutes;

View File

@ -4,6 +4,7 @@ import {
CircleButtonTypes,
CustomError,
ErrorService,
IqserListingModule,
IqserPermissionsService,
ListingComponent,
ListingModes,
@ -44,13 +45,34 @@ import { filter, skip, switchMap, tap } from 'rxjs/operators';
import { ConfigService } from '../config.service';
import { BulkActionsService } from '../services/bulk-actions.service';
import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service';
import { AsyncPipe, NgIf } from '@angular/common';
import { DossierOverviewScreenHeaderComponent } from '../components/screen-header/dossier-overview-screen-header.component';
import { TranslateModule } from '@ngx-translate/core';
import { WorkflowItemComponent } from '../components/workflow-item/workflow-item.component';
import { DossierDetailsComponent } from '../components/dossier-details/dossier-details.component';
import { DossierOverviewBulkActionsComponent } from '../components/bulk-actions/dossier-overview-bulk-actions.component';
import { TableItemComponent } from '../components/table-item/table-item.component';
import { TypeFilterComponent } from '@shared/components/type-filter/type-filter.component';
@Component({
templateUrl: './dossier-overview-screen.component.html',
styleUrls: ['./dossier-overview-screen.component.scss'],
providers: [...listingProvidersFactory(DossierOverviewScreenComponent), ConfigService, BulkActionsService, dossiersServiceProvider],
standalone: true,
imports: [
DossierOverviewScreenHeaderComponent,
AsyncPipe,
IqserListingModule,
TranslateModule,
NgIf,
WorkflowItemComponent,
DossierDetailsComponent,
DossierOverviewBulkActionsComponent,
TableItemComponent,
TypeFilterComponent,
],
})
export class DossierOverviewScreenComponent extends ListingComponent<File> implements OnInit, OnAttach, OnDetach, OnDestroy {
export default class DossierOverviewScreenComponent extends ListingComponent<File> implements OnInit, OnAttach, OnDetach, OnDestroy {
#dossier: Dossier;
@ViewChild('needsWorkFilterTemplate', { read: TemplateRef, static: true })
private readonly _needsWorkFilterTemplate: TemplateRef<unknown>;

View File

@ -13,8 +13,11 @@ import { DossierWorkloadColumnComponent } from './components/dossier-workload-co
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 { IqserUsersModule } from '@iqser/common-ui/lib/users';
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 = [
{
@ -46,6 +49,10 @@ const routes: IqserRoutes = [
IqserListingModule,
StatusBarComponent,
HasScrollbarDirective,
TypeFilterComponent,
DateColumnComponent,
AnnotationIconComponent,
InitialsAvatarComponent,
],
})
export class DossiersListingModule {}

View File

@ -1,5 +1,5 @@
import { Component, computed, Input, OnChanges } from '@angular/core';
import { getConfig, HelpModeService, IqserPermissionsService } from '@iqser/common-ui';
import { CircleButtonComponent, getConfig, HelpModeService, IqserAllowDirective, IqserPermissionsService } from '@iqser/common-ui';
import { AnnotationPermissions } from '@models/file/annotation.permissions';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { PermissionsService } from '@services/permissions.service';
@ -11,6 +11,8 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi
import { MultiSelectService } from '../../services/multi-select.service';
import { ViewModeService } from '../../services/view-mode.service';
import { SkippedService } from '../../services/skipped.service';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
export const AnnotationButtonTypes = {
default: 'default',
@ -23,6 +25,8 @@ export type AnnotationButtonType = keyof typeof AnnotationButtonTypes;
selector: 'redaction-annotation-actions',
templateUrl: './annotation-actions.component.html',
styleUrls: ['./annotation-actions.component.scss'],
standalone: true,
imports: [CircleButtonComponent, NgIf, TranslateModule, AsyncPipe, IqserAllowDirective],
})
export class AnnotationActionsComponent implements OnChanges {
#annotations: AnnotationWrapper[] = [];

View File

@ -4,11 +4,17 @@ import { MultiSelectService } from '../../services/multi-select.service';
import { annotationTypesTranslations } from '@translations/annotation-types-translations';
import { Roles } from '@users/roles';
import { getConfig } from '@iqser/common-ui';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { TranslateModule } from '@ngx-translate/core';
import { IqserDenyDirective, RoundCheckboxComponent } from '@iqser/common-ui';
import { NgIf, UpperCasePipe } from '@angular/common';
@Component({
selector: 'redaction-annotation-card',
templateUrl: './annotation-card.component.html',
styleUrls: ['./annotation-card.component.scss'],
standalone: true,
imports: [AnnotationIconComponent, TranslateModule, IqserDenyDirective, NgIf, RoundCheckboxComponent, UpperCasePipe],
})
export class AnnotationCardComponent {
protected readonly roles = Roles;

View File

@ -3,10 +3,14 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { KeysOf } from '@iqser/common-ui/lib/utils';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { ListItem } from '@models/file/list-item';
import { TranslateService } from '@ngx-translate/core';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { annotationChangesTranslations } from '@translations/annotation-changes-translations';
import { MultiSelectService } from '../../services/multi-select.service';
import { LogEntryEngine, LogEntryEngines } from '@red/domain';
import { NgForOf, NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { MatIcon } from '@angular/material/icon';
import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
interface Engine {
readonly icon: string;
@ -32,6 +36,8 @@ const changesProperties: KeysOf<AnnotationWrapper>[] = [
selector: 'redaction-annotation-details [annotation]',
templateUrl: './annotation-details.component.html',
styleUrls: ['./annotation-details.component.scss'],
standalone: true,
imports: [NgIf, MatTooltip, MatIcon, CdkOverlayOrigin, NgForOf, CdkConnectedOverlay, TranslateModule],
})
export class AnnotationDetailsComponent implements OnChanges {
@Input() annotation: ListItem<AnnotationWrapper>;

View File

@ -3,10 +3,14 @@ import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { BehaviorSubject, filter, Subscription } from 'rxjs';
import { switchMap, tap } from 'rxjs/operators';
import { AnnotationsListingService } from '../../services/annotations-listing.service';
import { AnnotationCardComponent } from '../annotation-card/annotation-card.component';
import { AnnotationReferencesPageIndicatorComponent } from '../annotation-references-page-indicator/annotation-references-page-indicator.component';
@Component({
selector: 'redaction-annotation-reference [annotation]',
templateUrl: './annotation-reference.component.html',
standalone: true,
imports: [AnnotationCardComponent, AnnotationReferencesPageIndicatorComponent],
})
export class AnnotationReferenceComponent implements OnChanges, OnDestroy {
@Input() annotation: AnnotationWrapper;
@ -14,7 +18,10 @@ export class AnnotationReferenceComponent implements OnChanges, OnDestroy {
readonly #annotationChanged$ = new BehaviorSubject<AnnotationWrapper>(undefined);
readonly #subscription: Subscription;
constructor(private readonly _listingService: AnnotationsListingService, private readonly _changeRef: ChangeDetectorRef) {
constructor(
private readonly _listingService: AnnotationsListingService,
private readonly _changeRef: ChangeDetectorRef,
) {
const annotationsChanged$ = this.#annotationChanged$.pipe(
filter(annotation => !!annotation),
switchMap(annotation => this._listingService.isSelected$(annotation)),

View File

@ -5,11 +5,28 @@ import { Observable, switchMap } from 'rxjs';
import { AnnotationsListingService } from '../../services/annotations-listing.service';
import { filter } from 'rxjs/operators';
import { toObservable } from '@angular/core/rxjs-interop';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { CircleButtonComponent } from '@iqser/common-ui';
import { AnnotationCardComponent } from '../annotation-card/annotation-card.component';
import { AnnotationReferencesPageIndicatorComponent } from '../annotation-references-page-indicator/annotation-references-page-indicator.component';
import { AnnotationReferenceComponent } from '../annotation-reference/annotation-reference.component';
@Component({
selector: 'redaction-annotation-references-list',
templateUrl: './annotation-references-list.component.html',
styleUrls: ['./annotation-references-list.component.scss'],
standalone: true,
imports: [
NgIf,
TranslateModule,
CircleButtonComponent,
AsyncPipe,
AnnotationCardComponent,
AnnotationReferencesPageIndicatorComponent,
AnnotationReferenceComponent,
NgForOf,
],
})
export class AnnotationReferencesListComponent {
@Output() readonly referenceClicked = new EventEmitter<AnnotationWrapper>();

View File

@ -1,9 +1,12 @@
import { Component, Input } from '@angular/core';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-annotation-references-page-indicator',
templateUrl: './annotation-references-page-indicator.component.html',
styleUrls: ['./annotation-references-page-indicator.component.scss'],
standalone: true,
imports: [MatIcon],
})
export class AnnotationReferencesPageIndicatorComponent {
@Input() number: number;

View File

@ -1,15 +1,35 @@
import { Component, HostBinding, inject, Input, OnChanges } from '@angular/core';
import { getConfig } from '@iqser/common-ui';
import { getConfig, StopPropagationDirective } from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { ListItem } from '@models/file/list-item';
import { MultiSelectService } from '../../services/multi-select.service';
import { PdfProxyService } from '../../services/pdf-proxy.service';
import { ActionsHelpModeKeys } from '../../utils/constants';
import { AnnotationCardComponent } from '../annotation-card/annotation-card.component';
import { NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatIcon } from '@angular/material/icon';
import { AnnotationActionsComponent } from '../annotation-actions/annotation-actions.component';
import { CommentsComponent } from '../comments/comments.component';
import { AnnotationDetailsComponent } from '../annotation-details/annotation-details.component';
@Component({
selector: 'redaction-annotation-wrapper',
templateUrl: './annotation-wrapper.component.html',
styleUrls: ['./annotation-wrapper.component.scss'],
standalone: true,
imports: [
AnnotationCardComponent,
NgIf,
MatTooltip,
TranslateModule,
StopPropagationDirective,
MatIcon,
AnnotationActionsComponent,
CommentsComponent,
AnnotationDetailsComponent,
],
})
export class AnnotationWrapperComponent implements OnChanges {
readonly #isDocumine = getConfig().IS_DOCUMINE;

View File

@ -11,11 +11,17 @@ import { AnnotationReferencesService } from '../../services/annotation-reference
import { AnnotationsListingService } from '../../services/annotations-listing.service';
import { MultiSelectService } from '../../services/multi-select.service';
import { ViewModeService } from '../../services/view-mode.service';
import { NgForOf, NgIf } from '@angular/common';
import { HighlightsSeparatorComponent } from '../highlights-separator/highlights-separator.component';
import { AnnotationWrapperComponent } from '../annotation-wrapper/annotation-wrapper.component';
import { AnnotationReferencesListComponent } from '../annotation-references-list/annotation-references-list.component';
@Component({
selector: 'redaction-annotations-list',
templateUrl: './annotations-list.component.html',
styleUrls: ['./annotations-list.component.scss'],
standalone: true,
imports: [NgForOf, NgIf, HighlightsSeparatorComponent, AnnotationWrapperComponent, AnnotationReferencesListComponent],
})
export class AnnotationsListComponent extends HasScrollbarDirective {
@Input({ required: true }) annotations: ListItem<AnnotationWrapper>[];

View File

@ -1,5 +1,5 @@
import { Component, inject, Input, OnChanges, signal, SimpleChanges, ViewChild } from '@angular/core';
import { InputWithActionComponent, LoadingService } from '@iqser/common-ui';
import { CircleButtonComponent, InputWithActionComponent, LoadingService } from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { trackByFactory } from '@iqser/common-ui/lib/utils';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
@ -8,11 +8,17 @@ import { CommentsApiService } from '@services/comments-api.service';
import { PermissionsService } from '@services/permissions.service';
import { NGXLogger } from 'ngx-logger';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { DatePipe, NgForOf, NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { NamePipe } from '@common-ui/users/name.pipe';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-comments',
templateUrl: './comments.component.html',
styleUrls: ['./comments.component.scss'],
standalone: true,
imports: [NgForOf, MatTooltip, NamePipe, DatePipe, CircleButtonComponent, NgIf, InputWithActionComponent, TranslateModule],
})
export class CommentsComponent implements OnChanges {
readonly #commentsApiService = inject(CommentsApiService);

View File

@ -9,6 +9,10 @@ import { FileAttributesService } from '@services/entity-services/file-attributes
import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { toSignal } from '@angular/core/rxjs-interop';
import { setLocalStorageDataByFileId } from '@utils/local-storage';
import { CircleButtonComponent, HasScrollbarDirective } from '@iqser/common-ui';
import { DatePipe, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatIcon } from '@angular/material/icon';
interface FileAttribute {
label: string;
@ -24,6 +28,8 @@ interface Context {
selector: 'redaction-document-info',
templateUrl: './document-info.component.html',
styleUrls: ['./document-info.component.scss'],
standalone: true,
imports: [CircleButtonComponent, NgIf, TranslateModule, HasScrollbarDirective, NgForOf, DatePipe, MatIcon],
})
export class DocumentInfoComponent extends ContextComponent<Context> {
protected readonly _state = inject(FilePreviewStateService);

View File

@ -1,8 +1,18 @@
import { ChangeDetectorRef, Component, computed, effect, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { CircleButtonTypes, getConfig, IconButtonTypes } from '@iqser/common-ui';
import { FilterService, INestedFilter } from '@iqser/common-ui/lib/filtering';
import {
CapitalizePipe,
CircleButtonComponent,
CircleButtonTypes,
EmptyStateComponent,
getConfig,
IconButtonComponent,
IconButtonTypes,
PreventDefaultDirective,
RoundCheckboxComponent,
} from '@iqser/common-ui';
import { FilterService, INestedFilter, PopupFilterComponent } from '@iqser/common-ui/lib/filtering';
import { AutoUnsubscribe, Debounce, IqserEventTarget } from '@iqser/common-ui/lib/utils';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { ListItem } from '@models/file/list-item';
@ -26,6 +36,15 @@ import { SkippedService } from '../../services/skipped.service';
import { ViewModeService } from '../../services/view-mode.service';
import { workloadTranslations } from '@translations/workload-translations';
import { WorkflowFileStatuses } from '@red/domain';
import { AnnotationsListComponent } from '../annotations-list/annotations-list.component';
import { PageExclusionComponent } from '../page-exclusion/page-exclusion.component';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { ReadonlyBannerComponent } from '../readonly-banner/readonly-banner.component';
import { AnnotationActionsComponent } from '../annotation-actions/annotation-actions.component';
import { MatTooltip } from '@angular/material/tooltip';
import { MatIcon } from '@angular/material/icon';
import { PagesComponent } from '../pages/pages.component';
const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape'];
const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
@ -34,6 +53,26 @@ const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
selector: 'redaction-file-workload',
templateUrl: './file-workload.component.html',
styleUrls: ['./file-workload.component.scss'],
standalone: true,
imports: [
IconButtonComponent,
AnnotationsListComponent,
PageExclusionComponent,
NgIf,
CircleButtonComponent,
TranslateModule,
PreventDefaultDirective,
AsyncPipe,
PopupFilterComponent,
ReadonlyBannerComponent,
RoundCheckboxComponent,
AnnotationActionsComponent,
MatTooltip,
MatIcon,
PagesComponent,
EmptyStateComponent,
CapitalizePipe,
],
})
export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, OnDestroy {
@ViewChild('annotationsElement') private readonly _annotationsElement: ElementRef;

View File

@ -9,8 +9,8 @@
*allow="roles.highlights.convert"
[icon]="'red:convert'"
[size]="28"
[tooltipPosition]="'above'"
[tooltip]="'file-preview.highlights.convert' | translate"
tooltipPosition="above"
class="mr-2"
></iqser-circle-button>
@ -19,7 +19,7 @@
*allow="roles.highlights.delete"
[icon]="'iqser:trash'"
[size]="28"
[tooltipPosition]="'above'"
[tooltip]="'file-preview.highlights.remove' | translate"
tooltipPosition="above"
></iqser-circle-button>
</div>

View File

@ -6,11 +6,17 @@ import { FileDataService } from '../../services/file-data.service';
import { FilePreviewDialogService } from '../../services/file-preview-dialog.service';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { MultiSelectService } from '../../services/multi-select.service';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { TranslateModule } from '@ngx-translate/core';
import { CircleButtonComponent, IqserAllowDirective } from '@iqser/common-ui';
import { NgIf } from '@angular/common';
@Component({
selector: 'redaction-highlights-separator',
templateUrl: './highlights-separator.component.html',
styleUrls: ['./highlights-separator.component.scss'],
standalone: true,
imports: [AnnotationIconComponent, TranslateModule, CircleButtonComponent, NgIf, IqserAllowDirective],
})
export class HighlightsSeparatorComponent {
@Input({ required: true }) highlightGroup: EarmarkGroup;

View File

@ -1,16 +1,20 @@
import { Component, computed, ViewChild } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
import { InputWithActionComponent, LoadingService, Toaster } from '@iqser/common-ui';
import { CircleButtonComponent, HasScrollbarDirective, InputWithActionComponent, LoadingService, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { IPageRange } from '@red/domain';
import { ReanalysisService } from '@services/reanalysis.service';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { extractPageRanges } from '@utils/page-ranges-mapper';
import { TranslateModule } from '@ngx-translate/core';
import { NgForOf, NgIf } from '@angular/common';
@Component({
selector: 'redaction-page-exclusion',
templateUrl: './page-exclusion.component.html',
styleUrls: ['./page-exclusion.component.scss'],
standalone: true,
imports: [InputWithActionComponent, TranslateModule, NgIf, HasScrollbarDirective, NgForOf, CircleButtonComponent],
})
export class PageExclusionComponent {
readonly excludedRanges = computed(() => {

View File

@ -10,11 +10,15 @@ import { ViewedPagesMapService } from '@services/files/viewed-pages-map.service'
import { Observable, pairwise } from 'rxjs';
import { PdfViewer } from '../../../pdf-viewer/services/pdf-viewer.service';
import { NGXLogger } from 'ngx-logger';
import { AsyncPipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-page-indicator',
templateUrl: './page-indicator.component.html',
styleUrls: ['./page-indicator.component.scss'],
standalone: true,
imports: [NgIf, AsyncPipe, MatIcon],
})
export class PageIndicatorComponent implements OnChanges {
readonly #config = getConfig<AppConfig>();

View File

@ -8,11 +8,15 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi
import { ViewedPagesMapService } from '@services/files/viewed-pages-map.service';
import { ViewedPage } from '@red/domain';
import scrollIntoView from 'scroll-into-view-if-needed';
import { PageIndicatorComponent } from '../page-indicator/page-indicator.component';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
@Component({
selector: 'redaction-pages',
templateUrl: './pages.component.html',
styleUrls: ['./pages.component.scss'],
standalone: true,
imports: [PageIndicatorComponent, AsyncPipe, NgForOf, NgIf],
})
export class PagesComponent implements AfterViewInit {
readonly #state = inject(FilePreviewStateService);

View File

@ -1,10 +1,17 @@
import { Component, inject, Input } from '@angular/core';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { OcrProgressBarComponent } from '@shared/components/ocr-progress-bar/ocr-progress-bar.component';
import { NgIf } from '@angular/common';
import { MatProgressBar } from '@angular/material/progress-bar';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-readonly-banner',
templateUrl: './readonly-banner.component.html',
styleUrls: ['./readonly-banner.component.scss'],
standalone: true,
imports: [OcrProgressBarComponent, NgIf, MatProgressBar, MatIcon, TranslateModule],
})
export class ReadonlyBannerComponent {
protected readonly _state = inject(FilePreviewStateService);

View File

@ -1,19 +1,24 @@
import { Component } from '@angular/core';
import { DocumentInfoService } from '../../services/document-info.service';
import { ExcludedPagesService } from '../../services/excluded-pages.service';
import { PdfViewer } from '../../../pdf-viewer/services/pdf-viewer.service';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { EmptyStateComponent } from '@iqser/common-ui';
import { NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { DocumentInfoComponent } from '../document-info/document-info.component';
import { FileWorkloadComponent } from '../file-workload/file-workload.component';
@Component({
selector: 'redaction-file-preview-right-container',
templateUrl: './file-preview-right-container.component.html',
styleUrls: ['./file-preview-right-container.component.scss'],
standalone: true,
imports: [EmptyStateComponent, NgIf, TranslateModule, DocumentInfoComponent, FileWorkloadComponent],
})
export class FilePreviewRightContainerComponent {
constructor(
readonly pdf: PdfViewer,
readonly state: FilePreviewStateService,
readonly documentInfoService: DocumentInfoService,
readonly excludedPagesService: ExcludedPagesService,
) {}
}

View File

@ -1,7 +1,7 @@
import { Component, computed, HostListener, NgZone, OnDestroy, OnInit } from '@angular/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { LoadingService, Toaster } from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { CircleButtonComponent, LoadingService, StopPropagationDirective, Toaster } from '@iqser/common-ui';
import { getCurrentUser, InitialsAvatarComponent } from '@iqser/common-ui/lib/users';
import { File, User } from '@red/domain';
import { FilesService } from '@services/files/files.service';
import { PermissionsService } from '@services/permissions.service';
@ -12,11 +12,25 @@ import { FileAssignService } from '../../../shared-dossiers/services/file-assign
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { PdfViewer } from '../../../pdf-viewer/services/pdf-viewer.service';
import { Bind } from '@common-ui/utils';
import { AssignUserDropdownComponent } from '@shared/components/assign-user-dropdown/assign-user-dropdown.component';
import { NgIf } from '@angular/common';
import { StatusBarComponent } from '@common-ui/shared';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-user-management',
templateUrl: './user-management.component.html',
styleUrls: ['./user-management.component.scss'],
standalone: true,
imports: [
AssignUserDropdownComponent,
NgIf,
StopPropagationDirective,
InitialsAvatarComponent,
StatusBarComponent,
TranslateModule,
CircleButtonComponent,
],
})
export class UserManagementComponent implements OnInit, OnDestroy {
protected readonly _canAssignToSelf = computed(() => this.permissionsService.canAssignToSelf(this.state.file(), this.state.dossier()));

View File

@ -4,12 +4,16 @@ import { Roles } from '@users/roles';
import { FileDataService } from '../../services/file-data.service';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { ViewModeService } from '../../services/view-mode.service';
import { getConfig } from '@iqser/common-ui';
import { getConfig, IqserDenyDirective } from '@iqser/common-ui';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-view-switch',
templateUrl: './view-switch.component.html',
styleUrls: ['./view-switch.component.scss'],
standalone: true,
imports: [MatTooltip, TranslateModule, IqserDenyDirective],
})
export class ViewSwitchComponent {
protected readonly isDocumine = getConfig().IS_DOCUMINE;

View File

@ -1,7 +1,17 @@
import { Component, OnInit } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent, IqserPermissionsService } from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
IqserDialogComponent,
IqserPermissionsService,
} from '@iqser/common-ui';
import { Dictionary, Dossier, IAddRedactionRequest } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@ -12,10 +22,33 @@ import { AddHintData, AddHintResult } from '../../utils/dialog-types';
import { UserPreferenceService } from '@users/user-preference.service';
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
import { stringToBoolean } from '@utils/functions';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: './add-hint-dialog.component.html',
styleUrls: ['./add-hint-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
DetailsRadioComponent,
IqserDenyDirective,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
MatTooltip,
NgIf,
HasScrollbarDirective,
IconButtonComponent,
TranslateModule,
CircleButtonComponent,
MatDialogClose,
],
})
export class AddHintDialogComponent extends IqserDialogComponent<AddHintDialogComponent, AddHintData, AddHintResult> implements OnInit {
#applyToAllDossiers: boolean;

View File

@ -1,11 +1,16 @@
import { Component, Inject, OnInit } from '@angular/core';
import { UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent } from '@iqser/common-ui';
import { ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent, CircleButtonComponent, HasScrollbarDirective, IconButtonComponent } from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { Dossier } from '@red/domain';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { firstValueFrom } from 'rxjs';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { NgForOf, NgIf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
export interface LegalBasisOption {
label?: string;
@ -15,6 +20,22 @@ export interface LegalBasisOption {
@Component({
templateUrl: './change-legal-basis-dialog.component.html',
standalone: true,
imports: [
ReactiveFormsModule,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
HasScrollbarDirective,
IconButtonComponent,
MatDialogClose,
TranslateModule,
CircleButtonComponent,
NgIf,
],
})
export class ChangeLegalBasisDialogComponent extends BaseDialogComponent implements OnInit {
legalOptions: LegalBasisOption[] = [];

View File

@ -1,13 +1,34 @@
import { Component, inject, OnInit } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { Dictionary, IAddRedactionRequest } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
import { AddAnnotationData, AddAnnotationResult } from '../../../utils/dialog-types';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { NgForOf } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: './add-annotation-dialog.component.html',
standalone: true,
imports: [
ReactiveFormsModule,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
HasScrollbarDirective,
IconButtonComponent,
TranslateModule,
CircleButtonComponent,
MatDialogClose,
],
})
export class AddAnnotationDialogComponent
extends IqserDialogComponent<AddAnnotationDialogComponent, AddAnnotationData, AddAnnotationResult>

View File

@ -1,16 +1,39 @@
import { Component, OnInit } from '@angular/core';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import { IconButtonTypes, IqserDialogComponent, IqserPermissionsService } from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { Dictionary, Dossier, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { Roles } from '@users/roles';
import { EditRedactionData, EditRedactResult } from '../../../utils/dialog-types';
import { SelectedAnnotationsListComponent } from '../../../components/selected-annotations-list/selected-annotations-list.component';
import { NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: 'edit-annotation-dialog.component.html',
styleUrls: ['edit-annotation-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
SelectedAnnotationsListComponent,
NgIf,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
HasScrollbarDirective,
TranslateModule,
IconButtonComponent,
CircleButtonComponent,
MatDialogClose,
],
})
export class EditAnnotationDialogComponent
extends IqserDialogComponent<EditAnnotationDialogComponent, EditRedactionData, EditRedactResult>
@ -24,10 +47,8 @@ export class EditAnnotationDialogComponent
form: UntypedFormGroup;
constructor(
private readonly _justificationsService: JustificationsService,
private readonly _activeDossiersService: ActiveDossiersService,
private readonly _dictionaryService: DictionaryService,
private readonly _iqserPermissionsService: IqserPermissionsService,
private readonly _formBuilder: FormBuilder,
) {
super();

View File

@ -1,12 +1,40 @@
import { Component } from '@angular/core';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
import { RemoveAnnotationData, RemoveAnnotationResult } from '../../../utils/dialog-types';
import { getRemoveRedactionOptions, RemoveAnnotationOption, RemoveAnnotationOptions } from '../../../utils/dialog-options';
import { TranslateModule } from '@ngx-translate/core';
import { CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';
import { NgIf, NgStyle } from '@angular/common';
import { ReplaceNbspPipe } from '@common-ui/pipes/replace-nbsp.pipe';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: 'remove-annotation-dialog.component.html',
styleUrls: ['remove-annotation-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
TranslateModule,
CdkFixedSizeVirtualScroll,
NgStyle,
CdkVirtualForOf,
ReplaceNbspPipe,
DetailsRadioComponent,
HasScrollbarDirective,
IconButtonComponent,
CircleButtonComponent,
MatDialogClose,
NgIf,
],
})
export class RemoveAnnotationDialogComponent extends IqserDialogComponent<
RemoveAnnotationDialogComponent,

View File

@ -1,16 +1,20 @@
import { Component, Inject, OnInit } from '@angular/core';
import { UntypedFormGroup } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
import { Dossier, File, IFileAttributeConfig } from '@red/domain';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { FilesService } from '@services/files/files.service';
import { BaseDialogComponent } from '@iqser/common-ui';
import { BaseDialogComponent, CircleButtonComponent, DynamicInputComponent, IconButtonComponent } from '@iqser/common-ui';
import { firstValueFrom } from 'rxjs';
import dayjs from 'dayjs';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@Component({
templateUrl: './document-info-dialog.component.html',
standalone: true,
imports: [ReactiveFormsModule, NgIf, NgForOf, DynamicInputComponent, IconButtonComponent, TranslateModule, CircleButtonComponent],
})
export class DocumentInfoDialogComponent extends BaseDialogComponent implements OnInit {
form: UntypedFormGroup;

View File

@ -1,6 +1,14 @@
import { Component, inject, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioOption,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
IqserDialogComponent,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { Dictionary, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@ -11,7 +19,15 @@ import { EditRedactionData, EditRedactResult } from '../../utils/dialog-types';
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
import { Roles } from '@users/roles';
import { DialogHelpModeKeys } from '../../utils/constants';
import { ValueColumn } from '../../components/selected-annotations-table/selected-annotations-table.component';
import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormField } from '@angular/material/form-field';
import { NgForOf, NgIf } from '@angular/common';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
interface TypeSelectOptions {
type: string;
@ -22,6 +38,23 @@ interface TypeSelectOptions {
@Component({
templateUrl: './edit-redaction-dialog.component.html',
styleUrls: ['./edit-redaction-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
TranslateModule,
SelectedAnnotationsTableComponent,
MatFormField,
NgIf,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
],
})
export class EditRedactionDialogComponent
extends IqserDialogComponent<EditRedactionDialogComponent, EditRedactionData, EditRedactResult>

View File

@ -1,14 +1,30 @@
import { Component, Inject, OnInit } from '@angular/core';
import { UntypedFormGroup, Validators } from '@angular/forms';
import { ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent, getConfig } from '@iqser/common-ui';
import {
BaseDialogComponent,
CircleButtonComponent,
getConfig,
HasScrollbarDirective,
IconButtonComponent,
IqserDenyDirective,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { JustificationsService } from '@services/entity-services/justifications.service';
import { Dossier, ILegalBasisChangeRequest } from '@red/domain';
import { firstValueFrom } from 'rxjs';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { Roles } from '@users/roles';
import { ValueColumn } from '../../components/selected-annotations-table/selected-annotations-table.component';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
export interface LegalBasisOption {
label?: string;
@ -22,6 +38,24 @@ const DOCUMINE_LEGAL_BASIS = 'n-a.';
selector: 'redaction-force-annotation-dialog',
templateUrl: './force-annotation-dialog.component.html',
styleUrls: ['./force-annotation-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
NgIf,
SelectedAnnotationsTableComponent,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
MatTooltip,
HasScrollbarDirective,
TranslateModule,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
NgForOf,
],
})
export class ForceAnnotationDialogComponent extends BaseDialogComponent implements OnInit {
readonly isDocumine = getConfig().IS_DOCUMINE;

View File

@ -1,13 +1,25 @@
import { Component, Inject } from '@angular/core';
import { UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { EarmarkOperation, EarmarkOperationPages } from '@red/domain';
import { BaseDialogComponent, DetailsRadioOption } from '@iqser/common-ui';
import {
BaseDialogComponent,
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
IconButtonComponent,
IqserDenyDirective,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { EarmarksService } from '@services/files/earmarks.service';
import { firstValueFrom } from 'rxjs';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { highlightsTranslations } from '@translations/highlights-translations';
import { Roles } from '@users/roles';
import { NgIf } from '@angular/common';
import { ColorPickerModule } from 'ngx-color-picker';
import { MatCheckbox } from '@angular/material/checkbox';
import { TranslateModule } from '@ngx-translate/core';
export interface HighlightActionData {
readonly operation: EarmarkOperation;
@ -21,6 +33,20 @@ export interface HighlightActionData {
@Component({
templateUrl: './highlight-action-dialog.component.html',
standalone: true,
imports: [
ReactiveFormsModule,
NgIf,
ColorPickerModule,
DetailsRadioComponent,
MatCheckbox,
TranslateModule,
IconButtonComponent,
IqserHelpModeModule,
IqserDenyDirective,
CircleButtonComponent,
MatDialogClose,
],
})
export class HighlightActionDialogComponent extends BaseDialogComponent {
readonly translations = highlightsTranslations;

View File

@ -1,6 +1,6 @@
import { Component, ElementRef, Inject, ViewChild } from '@angular/core';
import { BaseDialogComponent } from '@iqser/common-ui';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent, UploadFileComponent } from '@iqser/common-ui';
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { firstValueFrom } from 'rxjs';
import { RedactionImportService } from '@services/files/redaction-import.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
@ -8,6 +8,9 @@ import { HttpStatusCode } from '@angular/common/http';
import { extractPageRanges } from '@utils/page-ranges-mapper';
import { File } from '@red/domain';
import { FileDropOverlayService } from '@upload-download/services/file-drop-overlay.service';
import { MatCheckbox } from '@angular/material/checkbox';
import { TranslateModule } from '@ngx-translate/core';
import { FormsModule } from '@angular/forms';
interface ImportData {
dossierId: string;
@ -17,6 +20,8 @@ interface ImportData {
@Component({
templateUrl: './import-redactions-dialog.html',
styleUrls: ['./import-redactions-dialog.scss'],
standalone: true,
imports: [UploadFileComponent, MatCheckbox, TranslateModule, FormsModule, IconButtonComponent, CircleButtonComponent, MatDialogClose],
})
export class ImportRedactionsDialogComponent extends BaseDialogComponent {
@ViewChild('attachFileInput', { static: true }) attachFileInput: ElementRef;
@ -101,7 +106,7 @@ export class ImportRedactionsDialogComponent extends BaseDialogComponent {
};
}
close () {
close() {
this._fileDropOverlayService.toggleImportingRedactions();
return super.close();
}

View File

@ -1,8 +1,15 @@
import { Component, Inject, OnInit } from '@angular/core';
import { Validators } from '@angular/forms';
import { ReactiveFormsModule, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { BaseDialogComponent, IqserPermissionsService } from '@iqser/common-ui';
import {
BaseDialogComponent,
CircleButtonComponent,
HasScrollbarDirective,
IconButtonComponent,
IqserDenyDirective,
IqserPermissionsService,
} from '@iqser/common-ui';
import { ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper';
import { Dictionary, Dossier, File, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
@ -12,6 +19,12 @@ import { Roles } from '@users/roles';
import { firstValueFrom } from 'rxjs';
import { ManualRedactionService } from '../../services/manual-redaction.service';
import { REDAnnotationManager } from '../../../pdf-viewer/services/annotation-manager.service';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { MatCheckbox } from '@angular/material/checkbox';
export interface LegalBasisOption {
label?: string;
@ -22,6 +35,23 @@ export interface LegalBasisOption {
@Component({
templateUrl: './manual-annotation-dialog.component.html',
styleUrls: ['./manual-annotation-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
NgIf,
CircleButtonComponent,
TranslateModule,
HasScrollbarDirective,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
IqserDenyDirective,
MatCheckbox,
IconButtonComponent,
],
})
export class ManualAnnotationDialogComponent extends BaseDialogComponent implements OnInit {
readonly #dossier: Dossier;

View File

@ -1,7 +1,15 @@
import { Component, inject, OnInit } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormBuilder } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { Dictionary, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
@ -12,11 +20,38 @@ import { tap } from 'rxjs/operators';
import { getRedactOrHintOptions, RedactOrHintOption, RedactOrHintOptions } from '../../utils/dialog-options';
import { RedactRecommendationData, RedactRecommendationResult } from '../../utils/dialog-types';
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
import { ValueColumn } from '../../components/selected-annotations-table/selected-annotations-table.component';
import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { MatFormField } from '@angular/material/form-field';
import { NgForOf, NgIf } from '@angular/common';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: './redact-recommendation-dialog.component.html',
styleUrl: './redact-recommendation-dialog.component.scss',
standalone: true,
imports: [
ReactiveFormsModule,
SelectedAnnotationsTableComponent,
DetailsRadioComponent,
MatFormField,
NgIf,
MatOption,
NgForOf,
MatTooltip,
HasScrollbarDirective,
IconButtonComponent,
TranslateModule,
CircleButtonComponent,
MatDialogClose,
MatSelectTrigger,
MatSelect,
],
})
export class RedactRecommendationDialogComponent
extends IqserDialogComponent<RedactRecommendationDialogComponent, RedactRecommendationData, RedactRecommendationResult>

View File

@ -1,7 +1,15 @@
import { Component, inject, OnInit } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { Dictionary, IAddRedactionRequest, SuperTypes } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
@ -15,12 +23,38 @@ import { RedactTextData, RedactTextResult } from '../../utils/dialog-types';
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
import { UserPreferenceService } from '@users/user-preference.service';
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
import { AsyncPipe, NgClass, NgForOf, NgIf, NgStyle } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatDialogClose } from '@angular/material/dialog';
const MAXIMUM_TEXT_AREA_WIDTH = 421;
@Component({
templateUrl: './redact-text-dialog.component.html',
styleUrls: ['./redact-text-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
NgClass,
NgIf,
NgStyle,
HasScrollbarDirective,
CircleButtonComponent,
DetailsRadioComponent,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
NgForOf,
MatTooltip,
TranslateModule,
AsyncPipe,
IconButtonComponent,
MatDialogClose,
],
})
export class RedactTextDialogComponent
extends IqserDialogComponent<RedactTextDialogComponent, RedactTextData, RedactTextResult>

View File

@ -1,20 +1,50 @@
import { Component, computed } from '@angular/core';
import { FormBuilder, UntypedFormGroup } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDenyDirective,
IqserDialogComponent,
IqserHelpModeModule,
} from '@iqser/common-ui';
import { getRemoveRedactionOptions, RemoveRedactionOption, RemoveRedactionOptions } from '../../utils/dialog-options';
import { RemoveRedactionData, RemoveRedactionResult } from '../../utils/dialog-types';
import { Roles } from '@users/roles';
import { DialogHelpModeKeys } from '../../utils/constants';
import { toSignal } from '@angular/core/rxjs-interop';
import { map } from 'rxjs/operators';
import { ValueColumn } from '../../components/selected-annotations-table/selected-annotations-table.component';
import {
SelectedAnnotationsTableComponent,
ValueColumn,
} from '../../components/selected-annotations-table/selected-annotations-table.component';
import { UserPreferenceService } from '@users/user-preference.service';
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
import { stringToBoolean } from '@utils/functions';
import { TranslateModule } from '@ngx-translate/core';
import { NgStyle } from '@angular/common';
import { MatDialogClose } from '@angular/material/dialog';
@Component({
templateUrl: './remove-redaction-dialog.component.html',
styleUrls: ['./remove-redaction-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
TranslateModule,
NgStyle,
SelectedAnnotationsTableComponent,
DetailsRadioComponent,
IconButtonComponent,
IqserHelpModeModule,
CircleButtonComponent,
HasScrollbarDirective,
MatDialogClose,
IqserDenyDirective,
],
})
export class RemoveRedactionDialogComponent extends IqserDialogComponent<
RemoveRedactionDialogComponent,

View File

@ -1,14 +1,42 @@
import { Component, inject } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { getResizeRedactionOptions, ResizeOptions, ResizeRedactionOption } from '../../utils/dialog-options';
import { ResizeRedactionData, ResizeRedactionResult } from '../../utils/dialog-types';
import { TranslateModule } from '@ngx-translate/core';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatDialogClose } from '@angular/material/dialog';
import { NgIf } from '@angular/common';
@Component({
templateUrl: './resize-redaction-dialog.component.html',
styleUrls: ['./resize-redaction-dialog.component.scss'],
standalone: true,
imports: [
ReactiveFormsModule,
TranslateModule,
DetailsRadioComponent,
MatFormField,
MatSelectTrigger,
MatSelect,
MatOption,
IconButtonComponent,
CircleButtonComponent,
HasScrollbarDirective,
MatDialogClose,
NgIf,
],
})
export class ResizeRedactionDialogComponent extends IqserDialogComponent<
ResizeRedactionDialogComponent,

View File

@ -1,15 +1,18 @@
import { ActivatedRouteSnapshot, NavigationExtras, Router, RouterLink } from '@angular/router';
import { ChangeDetectorRef, Component, effect, NgZone, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
import { ActivatedRouteSnapshot, NavigationExtras, Router } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ComponentCanDeactivate } from '@guards/can-deactivate.guard';
import {
CircleButtonComponent,
CircleButtonTypes,
ConfirmOption,
ConfirmOptions,
CustomError,
DisableStopPropagationDirective,
ErrorService,
getConfig,
IConfirmationDialogData,
IqserAllowDirective,
IqserDialog,
LoadingService,
Toaster,
@ -57,11 +60,36 @@ import { StampService } from './services/stamp.service';
import { ViewModeService } from './services/view-mode.service';
import { RedactTextData } from './utils/dialog-types';
import { MultiSelectService } from './services/multi-select.service';
import { NgIf } from '@angular/common';
import { ViewSwitchComponent } from './components/view-switch/view-switch.component';
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
import { UserManagementComponent } from './components/user-management/user-management.component';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { FileActionsComponent } from '../shared-dossiers/components/file-actions/file-actions.component';
import { FilePreviewRightContainerComponent } from './components/right-container/file-preview-right-container.component';
import { TypeFilterComponent } from '@shared/components/type-filter/type-filter.component';
@Component({
templateUrl: './file-preview-screen.component.html',
styleUrls: ['./file-preview-screen.component.scss'],
providers: filePreviewScreenProviders,
standalone: true,
imports: [
NgIf,
ViewSwitchComponent,
ProcessingIndicatorComponent,
UserManagementComponent,
TranslateModule,
InitialsAvatarComponent,
CircleButtonComponent,
IqserAllowDirective,
FileActionsComponent,
DisableStopPropagationDirective,
RouterLink,
FilePreviewRightContainerComponent,
TypeFilterComponent,
],
})
export class FilePreviewScreenComponent extends AutoUnsubscribe implements OnInit, OnDestroy, OnAttach, OnDetach, ComponentCanDeactivate {
readonly circleButtonTypes = CircleButtonTypes;

View File

@ -1,170 +0,0 @@
import { OverlayModule } from '@angular/cdk/overlay';
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { ReplaceNbspPipe } from '@common-ui/pipes/replace-nbsp.pipe';
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import {
CapitalizePipe,
CircleButtonComponent,
DetailsRadioComponent,
DisableStopPropagationDirective,
DynamicInputComponent,
EditableInputComponent,
EmptyStateComponent,
HasScrollbarDirective,
IconButtonComponent,
InputWithActionComponent,
IqserAllowDirective,
IqserDenyDirective,
IqserHelpModeModule,
IqserRoutes,
IqserUploadFileModule,
LogPipe,
PreventDefaultDirective,
RoundCheckboxComponent,
StopPropagationDirective,
} from '@iqser/common-ui';
import { IqserFiltersModule } from '@iqser/common-ui/lib/filtering';
import { StatusBarComponent } from '@iqser/common-ui/lib/shared';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { TranslateModule } from '@ngx-translate/core';
import { SharedModule } from '@shared/shared.module';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { AnnotationActionsComponent } from './components/annotation-actions/annotation-actions.component';
import { AnnotationCardComponent } from './components/annotation-card/annotation-card.component';
import { AnnotationDetailsComponent } from './components/annotation-details/annotation-details.component';
import { AnnotationReferenceComponent } from './components/annotation-reference/annotation-reference.component';
import { AnnotationReferencesListComponent } from './components/annotation-references-list/annotation-references-list.component';
import { AnnotationReferencesPageIndicatorComponent } from './components/annotation-references-page-indicator/annotation-references-page-indicator.component';
import { AnnotationWrapperComponent } from './components/annotation-wrapper/annotation-wrapper.component';
import { AnnotationsListComponent } from './components/annotations-list/annotations-list.component';
import { CommentsComponent } from './components/comments/comments.component';
import { DocumentInfoComponent } from './components/document-info/document-info.component';
import { FileWorkloadComponent } from './components/file-workload/file-workload.component';
import { HighlightsSeparatorComponent } from './components/highlights-separator/highlights-separator.component';
import { PageExclusionComponent } from './components/page-exclusion/page-exclusion.component';
import { PageIndicatorComponent } from './components/page-indicator/page-indicator.component';
import { PagesComponent } from './components/pages/pages.component';
import { ReadonlyBannerComponent } from './components/readonly-banner/readonly-banner.component';
import { FilePreviewRightContainerComponent } from './components/right-container/file-preview-right-container.component';
import { UserManagementComponent } from './components/user-management/user-management.component';
import { ViewSwitchComponent } from './components/view-switch/view-switch.component';
import { AddHintDialogComponent } from './dialogs/add-hint-dialog/add-hint-dialog.component';
import { ChangeLegalBasisDialogComponent } from './dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component';
import { AddAnnotationDialogComponent } from './dialogs/docu-mine/add-annotation-dialog/add-annotation-dialog.component';
import { EditAnnotationDialogComponent } from './dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component';
import { RemoveAnnotationDialogComponent } from './dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component';
import { DocumentInfoDialogComponent } from './dialogs/document-info-dialog/document-info-dialog.component';
import { EditRedactionDialogComponent } from './dialogs/edit-redaction-dialog/edit-redaction-dialog.component';
import { ForceAnnotationDialogComponent } from './dialogs/force-redaction-dialog/force-annotation-dialog.component';
import { HighlightActionDialogComponent } from './dialogs/highlight-action-dialog/highlight-action-dialog.component';
import { ImportRedactionsDialogComponent } from './dialogs/import-redactions-dialog/import-redactions-dialog';
import { ManualAnnotationDialogComponent } from './dialogs/manual-redaction-dialog/manual-annotation-dialog.component';
import { RedactRecommendationDialogComponent } from './dialogs/redact-recommendation-dialog/redact-recommendation-dialog.component';
import { RedactTextDialogComponent } from './dialogs/redact-text-dialog/redact-text-dialog.component';
import { RemoveRedactionDialogComponent } from './dialogs/remove-redaction-dialog/remove-redaction-dialog.component';
import { ResizeRedactionDialogComponent } from './dialogs/resize-redaction-dialog/resize-redaction-dialog.component';
import { FilePreviewScreenComponent } from './file-preview-screen.component';
import { DocumentUnloadedGuard } from './services/document-unloaded.guard';
import { FilePreviewDialogService } from './services/file-preview-dialog.service';
import { ManualRedactionService } from './services/manual-redaction.service';
import { TablesService } from './services/tables.service';
import { SelectedAnnotationsTableComponent } from './components/selected-annotations-table/selected-annotations-table.component';
import { SelectedAnnotationsListComponent } from './components/selected-annotations-list/selected-annotations-list.component';
import { FileHeaderComponent } from './components/file-header/file-header.component';
import { DocumineExportComponent } from './components/documine-export/documine-export.component';
import { StructuredComponentManagementComponent } from './components/structured-component-management/structured-component-management.component';
import { EditableStructuredComponentValueComponent } from './components/editable-structured-component-value/editable-structured-component-value.component';
const routes: IqserRoutes = [
{
path: '',
component: FilePreviewScreenComponent,
pathMatch: 'full',
canDeactivate: [PendingChangesGuard, DocumentUnloadedGuard],
},
];
const dialogs = [
ManualAnnotationDialogComponent,
ForceAnnotationDialogComponent,
ResizeRedactionDialogComponent,
ChangeLegalBasisDialogComponent,
HighlightActionDialogComponent,
DocumentInfoDialogComponent,
ImportRedactionsDialogComponent,
RedactTextDialogComponent,
EditRedactionDialogComponent,
EditAnnotationDialogComponent,
AddHintDialogComponent,
RemoveRedactionDialogComponent,
AddAnnotationDialogComponent,
RemoveAnnotationDialogComponent,
RedactRecommendationDialogComponent,
];
const components = [
FileWorkloadComponent,
AnnotationDetailsComponent,
AnnotationWrapperComponent,
AnnotationsListComponent,
PageIndicatorComponent,
PagesComponent,
PageExclusionComponent,
AnnotationActionsComponent,
CommentsComponent,
DocumentInfoComponent,
ViewSwitchComponent,
UserManagementComponent,
AnnotationReferencesListComponent,
AnnotationCardComponent,
AnnotationReferencesPageIndicatorComponent,
HighlightsSeparatorComponent,
AnnotationReferenceComponent,
FilePreviewScreenComponent,
FilePreviewRightContainerComponent,
ReadonlyBannerComponent,
FileHeaderComponent,
DocumineExportComponent,
StructuredComponentManagementComponent,
];
@NgModule({
declarations: [...components, ...dialogs],
imports: [
RouterModule.forChild(routes),
CommonModule,
TranslateModule,
OverlayModule,
IqserHelpModeModule,
IqserUsersModule,
CapitalizePipe,
IqserUploadFileModule,
IqserFiltersModule,
SharedModule,
CircleButtonComponent,
SharedDossiersModule,
IconButtonComponent,
EmptyStateComponent,
StatusBarComponent,
StopPropagationDirective,
PreventDefaultDirective,
HasScrollbarDirective,
EditableInputComponent,
DetailsRadioComponent,
DynamicInputComponent,
InputWithActionComponent,
RoundCheckboxComponent,
IqserAllowDirective,
IqserDenyDirective,
LogPipe,
ReplaceNbspPipe,
DisableStopPropagationDirective,
SelectedAnnotationsTableComponent,
SelectedAnnotationsListComponent,
EditableStructuredComponentValueComponent,
],
providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard, TablesService],
})
export class FilePreviewModule {}

View File

@ -0,0 +1,18 @@
import { IqserRoutes } from '@iqser/common-ui';
import { FilePreviewScreenComponent } from './file-preview-screen.component';
import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { DocumentUnloadedGuard } from './services/document-unloaded.guard';
import { FilePreviewDialogService } from './services/file-preview-dialog.service';
import { ManualRedactionService } from './services/manual-redaction.service';
import { TablesService } from './services/tables.service';
import { FileAssignService } from '../shared-dossiers/services/file-assign.service';
export default [
{
path: '',
component: FilePreviewScreenComponent,
pathMatch: 'full',
canDeactivate: [PendingChangesGuard, DocumentUnloadedGuard],
providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard, TablesService, FileAssignService],
},
] satisfies IqserRoutes;

View File

@ -6,7 +6,7 @@ import { IqserListingModule, StopPropagationDirective } from '@iqser/common-ui';
import { SharedModule } from '@shared/shared.module';
import { TranslateModule } from '@ngx-translate/core';
import { SearchItemTemplateComponent } from './search-item-template/search-item-template.component';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { StatusBarComponent } from '@iqser/common-ui/lib/shared';
const routes = [{ path: '', component: SearchScreenComponent }];
@ -22,6 +22,7 @@ const routes = [{ path: '', component: SearchScreenComponent }];
IqserListingModule,
StatusBarComponent,
StopPropagationDirective,
InitialsAvatarComponent,
],
})
export class SearchModule {}

View File

@ -1,9 +1,12 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { DatePipe } from '@angular/common';
@Component({
selector: 'redaction-date-column [date]',
templateUrl: './date-column.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [DatePipe],
})
export class DateColumnComponent {
@Input() isError = false;

View File

@ -21,7 +21,7 @@ import { FilesService } from '@services/files/files.service';
import { PermissionsService } from '@services/permissions.service';
import { ReanalysisService, ReanalyzeQueryParams } from '@services/reanalysis.service';
import { ExpandableFileActionsComponent } from '@shared/components/expandable-file-actions/expandable-file-actions.component';
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 { setLocalStorageDataByFileId } from '@utils/local-storage';
@ -34,11 +34,16 @@ import { ROTATION_ACTION_BUTTONS } from '../../../pdf-viewer/utils/constants';
import { AssignReviewerApproverDialogComponent } from '../../dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component';
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
import { FileAssignService } from '../../services/file-assign.service';
import { ProcessingIndicatorComponent } from '@shared/components/processing-indicator/processing-indicator.component';
import { StatusBarComponent } from '@common-ui/shared';
import { NgIf, NgTemplateOutlet } from '@angular/common';
@Component({
selector: 'redaction-file-actions',
templateUrl: './file-actions.component.html',
styleUrls: ['./file-actions.component.scss'],
standalone: true,
imports: [ProcessingIndicatorComponent, StatusBarComponent, LongPressDirective, ExpandableFileActionsComponent, NgTemplateOutlet, NgIf],
})
export class FileActionsComponent implements OnChanges {
@Input({ required: true }) file: File;

View File

@ -26,21 +26,23 @@ import {
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { DossiersListingActionsComponent } from './components/dossiers-listing-actions/dossiers-listing-actions.component';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
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';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
import { EditDictionaryDialogComponent } from './dialogs/edit-dictionary-dialog/edit-dictionary-dialog.component';
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
import { LongPressDirective } from '@shared/directives/long-press.directive';
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { NamePipe } from '@common-ui/users/name.pipe';
const components = [
FileActionsComponent,
EditDossierGeneralInfoComponent,
EditDossierDownloadPackageComponent,
EditDossierDictionaryComponent,
EditDossierAttributesComponent,
EditDossierTeamComponent,
FileActionsComponent,
DateColumnComponent,
DossiersListingActionsComponent,
];
const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogComponent];
@ -71,6 +73,12 @@ const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogCompone
SelectComponent,
SnakeCasePipe,
EditDictionaryDialogComponent,
TeamMembersComponent,
LongPressDirective,
FileDownloadBtnComponent,
AnnotationIconComponent,
InitialsAvatarComponent,
NamePipe,
],
})
export class SharedDossiersModule {}

View File

@ -5,6 +5,7 @@ import { AnnotationIconType } from '@red/domain';
selector: 'redaction-annotation-icon [color] [type] [label]',
templateUrl: './annotation-icon.component.html',
styleUrls: ['./annotation-icon.component.scss'],
standalone: true,
})
export class AnnotationIconComponent implements OnChanges {
@Input() color: string;

View File

@ -1,13 +1,33 @@
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { UserService } from '@users/user.service';
import { User } from '@red/domain';
import { List } from '@iqser/common-ui/lib/utils';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { FormsModule } from '@angular/forms';
import { TranslateModule } from '@ngx-translate/core';
import { NgForOf, NgTemplateOutlet } from '@angular/common';
import { CircleButtonComponent, StopPropagationDirective } from '@iqser/common-ui';
import { InitialsAvatarComponent } from '@common-ui/users';
@Component({
selector: 'redaction-assign-user-dropdown',
templateUrl: './assign-user-dropdown.component.html',
styleUrls: ['./assign-user-dropdown.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [
MatFormField,
MatSelect,
MatSelectTrigger,
MatOption,
FormsModule,
TranslateModule,
NgTemplateOutlet,
StopPropagationDirective,
CircleButtonComponent,
NgForOf,
InitialsAvatarComponent,
],
})
export class AssignUserDropdownComponent {
private _currentUser: User | string;
@ -16,7 +36,7 @@ export class AssignUserDropdownComponent {
@Output() readonly save = new EventEmitter<User | string>();
@Output() readonly cancel = new EventEmitter();
constructor(private readonly _userService: UserService) {}
constructor() {}
get value(): User | string {
return this._currentUser;

View File

@ -1,15 +1,18 @@
import { Component, inject, Input, OnChanges } from '@angular/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { CircleButtonType, CircleButtonTypes, IqserDialog, Toaster } from '@iqser/common-ui';
import { CircleButtonComponent, CircleButtonType, CircleButtonTypes, IqserDialog, Toaster } from '@iqser/common-ui';
import { Dossier, File, ProcessingFileStatuses } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import { DownloadDialogComponent } from '@shared/dialogs/download-dialog/download-dialog.component';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { APP_BASE_HREF } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-file-download-btn',
templateUrl: './file-download-btn.component.html',
standalone: true,
imports: [CircleButtonComponent, TranslateModule],
})
export class FileDownloadBtnComponent implements OnChanges {
@Input({ required: true }) files: File[];

View File

@ -1,18 +1,40 @@
import { Component, inject, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';
import { Action, ActionTypes, Dossier, File } from '@red/domain';
import { CircleButtonType, IqserDialog, Toaster } from '@iqser/common-ui';
import { CircleButtonComponent, CircleButtonType, IqserDialog, StopPropagationDirective, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { FileDownloadService } from '@upload-download/services/file-download.service';
import { PermissionsService } from '@services/permissions.service';
import { MatMenuTrigger } from '@angular/material/menu';
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { DownloadDialogComponent } from '@shared/dialogs/download-dialog/download-dialog.component';
import { IqserTooltipPosition, trackByFactory } from '@iqser/common-ui/lib/utils';
import { APP_BASE_HREF } from '@angular/common';
import { APP_BASE_HREF, AsyncPipe, NgClass, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { MatTooltip } from '@angular/material/tooltip';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'redaction-expandable-file-actions',
templateUrl: './expandable-file-actions.component.html',
styleUrls: ['./expandable-file-actions.component.scss'],
standalone: true,
imports: [
CircleButtonComponent,
TranslateModule,
AsyncPipe,
FileDownloadBtnComponent,
NgIf,
MatSlideToggle,
MatTooltip,
NgClass,
MatMenuTrigger,
MatMenu,
MatIcon,
MatMenuItem,
NgForOf,
StopPropagationDirective,
],
})
export class ExpandableFileActionsComponent implements OnChanges {
@Input({ required: true }) actions: Action[];

View File

@ -15,6 +15,10 @@ import { FileAttributesService } from '@services/entity-services/file-attributes
import { combineLatest, map, ReplaySubject } from 'rxjs';
import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { MatTooltip } from '@angular/material/tooltip';
import { AsyncPipe, NgIf } from '@angular/common';
import { FileAttributeComponent } from '../../../dossier-overview/components/file-attribute/file-attribute.component';
import { FileStatsComponent } from '@shared/components/file-stats/file-stats.component';
interface FileNameColumnContext {
primaryAttribute: IFileAttributeConfig;
@ -25,6 +29,8 @@ interface FileNameColumnContext {
templateUrl: './file-name-column.component.html',
styleUrls: ['./file-name-column.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatTooltip, NgIf, AsyncPipe, FileAttributeComponent, FileStatsComponent],
})
export class FileNameColumnComponent extends ContextComponent<FileNameColumnContext> implements OnInit, OnChanges {
readonly #reloadAttribute = new ReplaySubject<void>(1);

View File

@ -1,9 +1,15 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { DatePipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-file-stats',
templateUrl: './file-stats.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatIcon, MatTooltip, NgIf, TranslateModule, DatePipe],
})
export class FileStatsComponent {
@Input() file: { numberOfPages: number; excludedPages: number[]; lastOCRTime?: string };

View File

@ -1,10 +1,15 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { MatProgressBar } from '@angular/material/progress-bar';
import { NgIf, PercentPipe } from '@angular/common';
import { MatTooltip } from '@angular/material/tooltip';
@Component({
selector: 'redaction-ocr-progress-bar',
templateUrl: './ocr-progress-bar.component.html',
styleUrls: ['./ocr-progress-bar.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatProgressBar, NgIf, MatTooltip, PercentPipe],
})
export class OcrProgressBarComponent {
@Input() numberOfPagesToOCR: number;

View File

@ -1,12 +1,18 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { File } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
import { MatIcon } from '@angular/material/icon';
import { NgIf } from '@angular/common';
@Component({
selector: 'redaction-processing-indicator [file]',
templateUrl: './processing-indicator.component.html',
styleUrls: ['./processing-indicator.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
standalone: true,
imports: [MatTooltip, TranslateModule, MatIcon, NgIf],
})
export class ProcessingIndicatorComponent implements OnChanges {
tooltip: string;

View File

@ -1,16 +1,21 @@
import { Component, ElementRef, EventEmitter, inject, Input, OnChanges, Output, ViewChild } from '@angular/core';
import { CircleButtonTypes } from '@iqser/common-ui';
import { CircleButtonComponent, CircleButtonTypes, IqserAllowDirective } from '@iqser/common-ui';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { Roles } from '@users/roles';
import { User } from '@red/domain';
import { UserService } from '@users/user.service';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { getCurrentUser, InitialsAvatarComponent } from '@iqser/common-ui/lib/users';
import { List } from '@iqser/common-ui/lib/utils';
import { NgForOf, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'redaction-team-members',
templateUrl: './team-members.component.html',
styleUrls: ['./team-members.component.scss'],
standalone: true,
imports: [NgForOf, MatIcon, NgIf, CircleButtonComponent, IqserAllowDirective, TranslateModule, InitialsAvatarComponent],
})
export class TeamMembersComponent implements OnChanges {
readonly circleButtonTypes = CircleButtonTypes;

View File

@ -1,11 +1,16 @@
import { Component, Input, OnChanges } from '@angular/core';
import { INestedFilter } from '@iqser/common-ui/lib/filtering';
import { TranslateService } from '@ngx-translate/core';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { AsyncPipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
@Component({
selector: 'redaction-type-filter',
templateUrl: './type-filter.component.html',
styleUrls: ['./type-filter.component.scss'],
standalone: true,
imports: [NgIf, MatIcon, AnnotationIconComponent, AsyncPipe, TranslateModule],
})
export class TypeFilterComponent implements OnChanges {
private _needsAnalysisKeys: string[] = ['remove-only-here', 'analysis'];

View File

@ -8,6 +8,7 @@ export interface LongPressEvent {
@Directive({
selector: '[redactionLongPress]',
standalone: true,
})
export class LongPressDirective {
@Output() longPress = new EventEmitter();

View File

@ -1,11 +1,9 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ScrollingModule } from '@angular/cdk/scrolling';
import { FileDownloadBtnComponent } from './components/buttons/file-download-btn/file-download-btn.component';
import { MatConfigModule } from '../mat-config/mat-config.module';
import { IconsModule } from '../icons/icons.module';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AnnotationIconComponent } from './components/annotation-icon/annotation-icon.component';
import { DonutChartComponent } from './components/donut-chart/donut-chart.component';
import {
CircleButtonComponent,
@ -21,17 +19,9 @@ import {
import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive';
import { DictionaryManagerComponent } from './components/dictionary-manager/dictionary-manager.component';
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { AssignUserDropdownComponent } from './components/assign-user-dropdown/assign-user-dropdown.component';
import { DatePipe } from './pipes/date.pipe';
import { LongPressDirective } from './directives/long-press.directive';
import { TypeFilterComponent } from './components/type-filter/type-filter.component';
import { TeamMembersComponent } from './components/team-members/team-members.component';
import { EditorComponent } from './components/editor/editor.component';
import { ExpandableFileActionsComponent } from './components/expandable-file-actions/expandable-file-actions.component';
import { ProcessingIndicatorComponent } from './components/processing-indicator/processing-indicator.component';
import { DossierStateComponent } from './components/dossier-state/dossier-state.component';
import { FileStatsComponent } from './components/file-stats/file-stats.component';
import { FileNameColumnComponent } from './components/file-name-column/file-name-column.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';
@ -42,7 +32,6 @@ import { SharedDialogService } from './services/dialog.service';
import { AddEditEntityComponent } from './components/add-edit-entity/add-edit-entity.component';
import { ColorPickerModule } from 'ngx-color-picker';
import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component';
import { OcrProgressBarComponent } from './components/ocr-progress-bar/ocr-progress-bar.component';
import { CustomDateAdapter } from '@shared/CustomDateAdapter';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { SmallChipComponent } from '@iqser/common-ui/lib/shared';
@ -50,30 +39,17 @@ 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 buttons = [FileDownloadBtnComponent];
const components = [
AnnotationIconComponent,
DictionaryManagerComponent,
AssignUserDropdownComponent,
TypeFilterComponent,
TeamMembersComponent,
ExpandableFileActionsComponent,
ProcessingIndicatorComponent,
DossierStateComponent,
DossierNameColumnComponent,
FileStatsComponent,
FileNameColumnComponent,
DossiersTypeSwitchComponent,
AddDossierDialogComponent,
WatermarkSelectorComponent,
AddEditEntityComponent,
OcrProgressBarComponent,
...buttons,
];
const utils = [DatePipe, NavigateLastDossiersScreenDirective, LongPressDirective];
const utils = [DatePipe, NavigateLastDossiersScreenDirective];
const services = [SharedDialogService];

View File

@ -7,7 +7,8 @@ import { TrashTableItemComponent } from './trash-screen/trash-table-item/trash-t
import { SharedModule } from '@shared/shared.module';
import { TrashDialogService } from './services/trash-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
import { FileNameColumnComponent } from '@shared/components/file-name-column/file-name-column.component';
const routes = [{ path: '', component: TrashScreenComponent }];
@ -21,6 +22,8 @@ const routes = [{ path: '', component: TrashScreenComponent }];
TranslateModule,
IqserListingModule,
CircleButtonComponent,
FileNameColumnComponent,
InitialsAvatarComponent,
],
providers: [TrashDialogService],
})

@ -1 +1 @@
Subproject commit 0b64044f576f38e4bb79033563a20400a62c15b6
Subproject commit 04ae68891c9298b92327868006d1e7c79529c7e6