almost unfuck circular imports
This commit is contained in:
parent
ffd02c787d
commit
04e3f5b522
@ -2,11 +2,16 @@ import { APP_BASE_HREF, DatePipe as BaseDatePipe } from '@angular/common';
|
||||
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
||||
import { ENVIRONMENT_INITIALIZER, ErrorHandler, inject, NgModule } from '@angular/core';
|
||||
import { MatDividerModule } from '@angular/material/divider';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
|
||||
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
||||
import { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltip } from '@angular/material/tooltip';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { ServiceWorkerModule } from '@angular/service-worker';
|
||||
import { HelpModeKey } from '@common-ui/help-mode/types';
|
||||
import { GET_TENANT_FROM_PATH_FN, UI_ROOT } from '@common-ui/utils';
|
||||
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
|
||||
import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
|
||||
import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component';
|
||||
import { DownloadsListScreenComponent } from '@components/downloads-list-screen/downloads-list-screen.component';
|
||||
@ -26,7 +31,6 @@ import {
|
||||
EmptyStateComponent,
|
||||
HelpButtonComponent,
|
||||
HelpModeComponent,
|
||||
HelpModeKey,
|
||||
HiddenActionDirective,
|
||||
IconButtonComponent,
|
||||
InputWithActionComponent,
|
||||
@ -43,6 +47,7 @@ import {
|
||||
StopPropagationDirective,
|
||||
} from '@iqser/common-ui';
|
||||
import { CommonUiModule } from '@iqser/common-ui/lib/common-ui.module';
|
||||
import { provideHelpMode } from '@iqser/common-ui/lib/help-mode/utils/help-mode.provider';
|
||||
import { LogoComponent, SkeletonComponent, ToastComponent } from '@iqser/common-ui/lib/shared';
|
||||
import { TenantsModule } from '@iqser/common-ui/lib/tenants';
|
||||
import { InitialsAvatarComponent, IqserUsersModule } from '@iqser/common-ui/lib/users';
|
||||
@ -54,6 +59,7 @@ import { ActiveDossiersService } from '@services/dossiers/active-dossiers.servic
|
||||
import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service';
|
||||
import { GlobalErrorHandler } from '@services/global-error-handler.service';
|
||||
import { LoggerRulesService } from '@services/logger-rules.service';
|
||||
import { provideCustomDateFormatter } from '@shared/custom-date-formatting.provider';
|
||||
import { DatePipe } from '@shared/pipes/date.pipe';
|
||||
import { RedRoleGuard } from '@users/red-role.guard';
|
||||
import { UserPreferenceService } from '@users/user-preference.service';
|
||||
@ -65,15 +71,9 @@ import { ToastrModule } from 'ngx-toastr';
|
||||
import * as helpModeKeys from '../assets/help-mode/help-mode-keys.json';
|
||||
import { AppRoutingModule } from './app-routing.module';
|
||||
import { AppComponent } from './app.component';
|
||||
import { IconsModule } from './modules/icons/icons.module';
|
||||
import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module';
|
||||
import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
|
||||
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
|
||||
import { provideCustomDateFormatter } from '@shared/custom-date-formatting.provider';
|
||||
import { provideHelpMode } from '@iqser/common-ui/lib/help-mode/utils/help-mode.provider';
|
||||
import { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
||||
import { IconsModule } from './modules/icons/icons.module';
|
||||
|
||||
export const appModuleFactory = (config: AppConfig) => {
|
||||
@NgModule({
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, CanActivate } from '@angular/router';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { EntityPermissionsService } from '@services/entity-permissions/entity-permissions.service';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class PermissionsGuard implements CanActivate {
|
||||
|
||||
@ -1,14 +1,20 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { ChangeDetectorRef, Component, inject } from '@angular/core';
|
||||
import { BaseFormComponent } from '@common-ui/form';
|
||||
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { BaseFormComponent } from '@common-ui/form';
|
||||
import { AsControl } from '@common-ui/utils';
|
||||
import { IconButtonComponent } from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { PreferencesKeys, UserPreferenceService } from '@users/user-preference.service';
|
||||
import {
|
||||
RedactOrHintOption,
|
||||
RedactOrHintOptions,
|
||||
RemoveRedactionOption,
|
||||
RemoveRedactionOptions,
|
||||
} from '../../../../file-preview/utils/dialog-options';
|
||||
import { PreferencesKeys, UserPreferenceService } from '@users/user-preference.service';
|
||||
import { AsControl } from '@common-ui/utils';
|
||||
} from '../../../../file-preview/utils/dialog-types';
|
||||
import {
|
||||
hintAddOptions,
|
||||
recommendationRemoveOptions,
|
||||
@ -17,12 +23,6 @@ import {
|
||||
removeOptions,
|
||||
SystemDefaultType,
|
||||
} from '../../../utils/dialog-defaults';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { IconButtonComponent } from '@iqser/common-ui';
|
||||
|
||||
interface DefaultOptionsForm {
|
||||
addRedaction: RedactOrHintOption | SystemDefaultType;
|
||||
@ -68,6 +68,10 @@ export class DialogDefaultsComponent extends BaseFormComponent {
|
||||
readonly redactionRemoveOptions = redactionRemoveOptions;
|
||||
readonly recommendationRemoveOptions = recommendationRemoveOptions;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
get displayExtraOptionAddRedaction() {
|
||||
return RedactOrHintOptions.IN_DOSSIER === this.form.controls.addRedaction.value;
|
||||
}
|
||||
@ -92,10 +96,6 @@ export class DialogDefaultsComponent extends BaseFormComponent {
|
||||
return RemoveRedactionOptions.DO_NOT_RECOMMEND === this.form.controls.removeRecommendation.value;
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
async save(): Promise<any> {
|
||||
const formValue = this.form.value;
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { redactTextTranslations } from '@translations/redact-text-translations';
|
||||
import { RedactOrHintOptions, RemoveRedactionOptions } from '../../file-preview/utils/dialog-options';
|
||||
import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
|
||||
import { addHintTranslations } from '@translations/add-hint-translations';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { addHintTranslations } from '@translations/add-hint-translations';
|
||||
import { redactTextTranslations } from '@translations/redact-text-translations';
|
||||
import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
|
||||
import { RedactOrHintOptions, RemoveRedactionOptions } from '../../file-preview/utils/dialog-types';
|
||||
|
||||
export const SystemDefaults = {
|
||||
ADD_REDACTION_DEFAULT: RedactOrHintOptions.IN_DOSSIER,
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { Component, Inject, ViewChild } from '@angular/core';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { User } from '@red/domain';
|
||||
import { UserDetailsComponent } from './user-details/user-details.component';
|
||||
import { BaseDialogComponent, CircleButtonComponent } from '@iqser/common-ui';
|
||||
import { User } from '@red/domain';
|
||||
import { ResetPasswordComponent } from './reset-password/reset-password.component';
|
||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
import { UserDetailsComponent } from './user-details/user-details.component';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-add-edit-user-dialog',
|
||||
@ -13,8 +12,8 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
imports: [UserDetailsComponent, ResetPasswordComponent, CircleButtonComponent],
|
||||
})
|
||||
export class AddEditUserDialogComponent extends BaseDialogComponent {
|
||||
resettingPassword = false;
|
||||
@ViewChild(UserDetailsComponent) private readonly _userDetailsComponent: UserDetailsComponent;
|
||||
resettingPassword = false;
|
||||
|
||||
constructor(
|
||||
protected readonly _dialogRef: MatDialogRef<AddEditUserDialogComponent>,
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
|
||||
import { Component, inject, OnInit } from '@angular/core';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { InitialsAvatarComponent } from '@common-ui/users';
|
||||
import {
|
||||
ButtonConfig,
|
||||
CircleButtonComponent,
|
||||
@ -24,12 +28,9 @@ import { UserService } from '@users/user.service';
|
||||
import { firstValueFrom, Observable } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { userTypeChecker, userTypeFilters } from '../../../../utils';
|
||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
import { UsersStatsComponent } from '../../components/users-stats/users-stats.component';
|
||||
import { AsyncPipe, NgClass, NgIf } from '@angular/common';
|
||||
import { InitialsAvatarComponent } from '@common-ui/users';
|
||||
import { MatSlideToggle } from '@angular/material/slide-toggle';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { AddEditUserDialogComponent } from '../../dialogs/add-edit-user-dialog/add-edit-user-dialog.component';
|
||||
import { AdminDialogService } from '../../services/admin-dialog.service';
|
||||
|
||||
function configToFilter({ key, label }: DonutChartConfig) {
|
||||
return new NestedFilter({
|
||||
@ -112,7 +113,7 @@ export class UserListingScreenComponent extends ListingComponent<User> implement
|
||||
}
|
||||
|
||||
openAddEditUserDialog(user?: User) {
|
||||
this._dialogService.openDialog('addEditUser', user, async () => {
|
||||
this._dialogService.open(AddEditUserDialogComponent, user, { autoFocus: true }, async () => {
|
||||
await this.#loadData();
|
||||
});
|
||||
}
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
import { Injectable, TemplateRef } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { AddEntityDialogComponent } from '../dialogs/add-entity-dialog/add-entity-dialog.component';
|
||||
import { EditColorDialogComponent } from '../dialogs/edit-color-dialog/edit-color-dialog.component';
|
||||
import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-dialog.component';
|
||||
import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-edit-user-dialog.component';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import {
|
||||
ConfirmationDialogComponent,
|
||||
ConfirmOptions,
|
||||
@ -13,22 +10,23 @@ import {
|
||||
LoadingService,
|
||||
TitleColors,
|
||||
} from '@iqser/common-ui';
|
||||
import { UploadDictionaryDialogComponent } from '../dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { firstValueFrom, forkJoin } from 'rxjs';
|
||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||
import { UserService } from '@users/user.service';
|
||||
import { IDossierAttributeConfig, IFileAttributeConfig, IReportTemplate } from '@red/domain';
|
||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||
import { ReportTemplateService } from '@services/report-template.service';
|
||||
import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component';
|
||||
import { AuditInfoDialogComponent } from '../dialogs/audit-info-dialog/audit-info-dialog.component';
|
||||
import { UserService } from '@users/user.service';
|
||||
import { firstValueFrom, forkJoin } from 'rxjs';
|
||||
import { AddCloneDossierTemplateDialogComponent } from '../dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component';
|
||||
import { AddEntityDialogComponent } from '../dialogs/add-entity-dialog/add-entity-dialog.component';
|
||||
import { AuditInfoDialogComponent } from '../dialogs/audit-info-dialog/audit-info-dialog.component';
|
||||
import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component';
|
||||
import { EditColorDialogComponent } from '../dialogs/edit-color-dialog/edit-color-dialog.component';
|
||||
import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-dialog.component';
|
||||
import { UploadDictionaryDialogComponent } from '../dialogs/upload-dictionary-dialog/upload-dictionary-dialog.component';
|
||||
|
||||
type DialogType =
|
||||
| 'confirm'
|
||||
| 'addEntity'
|
||||
| 'editColor'
|
||||
| 'addEditUser'
|
||||
| 'smtpAuthConfig'
|
||||
| 'addCloneDossierTemplate'
|
||||
| 'auditInfo'
|
||||
@ -50,10 +48,6 @@ export class AdminDialogService extends DialogService<DialogType> {
|
||||
component: EditColorDialogComponent,
|
||||
dialogConfig: { autoFocus: true },
|
||||
},
|
||||
addEditUser: {
|
||||
component: AddEditUserDialogComponent,
|
||||
dialogConfig: { autoFocus: true },
|
||||
},
|
||||
smtpAuthConfig: {
|
||||
component: SmtpAuthDialogComponent,
|
||||
dialogConfig: { autoFocus: true },
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
import { AsyncPipe, DecimalPipe, NgForOf, NgIf } from '@angular/common';
|
||||
import { Component, Input, OnInit } from '@angular/core';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { getConfig, largeDialogConfig } from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dossier, DossierAttributeWithValue, DossierStats } from '@red/domain';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { FilesService } from '@services/files/files.service';
|
||||
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, DecimalPipe, NgForOf, NgIf } from '@angular/common';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { FilesService } from '@services/files/files.service';
|
||||
import { DatePipe } from '@shared/pipes/date.pipe';
|
||||
import { firstValueFrom, Observable } from 'rxjs';
|
||||
import { EditDossierDialogComponent } from '../../../shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-dossier-details-stats',
|
||||
@ -41,7 +42,7 @@ export class DossierDetailsStatsComponent implements OnInit {
|
||||
|
||||
openEditDossierDialog(section: string): void {
|
||||
const data = { dossierId: this.dossier.id, section };
|
||||
this._dialogService.openDialog('editDossier', data, async () => {
|
||||
this._dialogService.open(EditDossierDialogComponent, data, { ...largeDialogConfig, width: '98vw', maxWidth: '98vw' }, async () => {
|
||||
await firstValueFrom(this._filesService.loadAll(this.dossier.id));
|
||||
});
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import {
|
||||
ActionConfig,
|
||||
getConfig,
|
||||
IqserPermissionsService,
|
||||
largeDialogConfig,
|
||||
ListingMode,
|
||||
ListingModes,
|
||||
TableColumnConfig,
|
||||
@ -41,7 +42,8 @@ import { UserService } from '@users/user.service';
|
||||
import dayjs from 'dayjs';
|
||||
import { BehaviorSubject, Observable } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { annotationFilterChecker, RedactionFilterSorter, sortByName, sortArray } from '../../utils';
|
||||
import { annotationFilterChecker, RedactionFilterSorter, sortArray, sortByName } from '../../utils';
|
||||
import { EditDossierDialogComponent } from '../shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
import { DossiersDialogService } from '../shared-dossiers/services/dossiers-dialog.service';
|
||||
import { BulkActionsService } from './services/bulk-actions.service';
|
||||
|
||||
@ -472,6 +474,6 @@ export class ConfigService {
|
||||
}
|
||||
|
||||
#openEditDossierDialog(dossierId: string) {
|
||||
this._dialogService.openDialog('editDossier', { dossierId });
|
||||
this._dialogService.open(EditDossierDialogComponent, { dossierId }, { ...largeDialogConfig, width: '98vw', maxWidth: '98vw' });
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import { NgIf } from '@angular/common';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -12,22 +17,17 @@ import {
|
||||
IqserDialogComponent,
|
||||
IqserPermissionsService,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dictionary, Dossier, IAddRedactionRequest } from '@red/domain';
|
||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||
import { DictionaryService } from '@services/entity-services/dictionary.service';
|
||||
import { Roles } from '@users/roles';
|
||||
import { tap } from 'rxjs/operators';
|
||||
import { getRedactOrHintOptions, RedactOrHintOption, RedactOrHintOptions } from '../../utils/dialog-options';
|
||||
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';
|
||||
import { tap } from 'rxjs/operators';
|
||||
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
|
||||
import { getRedactOrHintOptions } from '../../utils/dialog-options';
|
||||
import { AddHintData, AddHintResult, RedactOrHintOption, RedactOrHintOptions } from '../../utils/dialog-types';
|
||||
|
||||
@Component({
|
||||
templateUrl: './add-hint-dialog.component.html',
|
||||
|
||||
@ -1,4 +1,9 @@
|
||||
import { CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';
|
||||
import { NgIf, NgStyle } from '@angular/common';
|
||||
import { Component } from '@angular/core';
|
||||
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { ReplaceNbspPipe } from '@common-ui/pipes/replace-nbsp.pipe';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -8,14 +13,9 @@ import {
|
||||
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';
|
||||
import { getRemoveRedactionOptions } from '../../../utils/dialog-options';
|
||||
import { RemoveAnnotationData, RemoveAnnotationOption, RemoveAnnotationOptions, RemoveAnnotationResult } from '../../../utils/dialog-types';
|
||||
|
||||
@Component({
|
||||
templateUrl: 'remove-annotation-dialog.component.html',
|
||||
@ -47,6 +47,13 @@ export class RemoveAnnotationDialogComponent extends IqserDialogComponent<
|
||||
|
||||
form!: UntypedFormGroup;
|
||||
|
||||
constructor(private readonly _formBuilder: FormBuilder) {
|
||||
super();
|
||||
this.options = getRemoveRedactionOptions(this.data, this.data.applyToAllDossiers, true);
|
||||
this.redactedTexts = this.data.redactions.map(annotation => annotation.value);
|
||||
this.form = this.#getForm();
|
||||
}
|
||||
|
||||
get isFalsePositive(): boolean {
|
||||
return this.form.get('option').value.value === RemoveAnnotationOptions.FALSE_POSITIVE;
|
||||
}
|
||||
@ -56,13 +63,6 @@ export class RemoveAnnotationDialogComponent extends IqserDialogComponent<
|
||||
return selectedOption === RemoveAnnotationOptions.IN_DOSSIER || selectedOption === RemoveAnnotationOptions.FALSE_POSITIVE;
|
||||
}
|
||||
|
||||
constructor(private readonly _formBuilder: FormBuilder) {
|
||||
super();
|
||||
this.options = getRemoveRedactionOptions(this.data, this.data.applyToAllDossiers, true);
|
||||
this.redactedTexts = this.data.redactions.map(annotation => annotation.value);
|
||||
this.form = this.#getForm();
|
||||
}
|
||||
|
||||
save(): void {
|
||||
this.dialogRef.close({ ...this.form.getRawValue(), applyToAllDossiers: this.#applyToAllDossiers });
|
||||
}
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { Component, inject, OnInit } from '@angular/core';
|
||||
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioOption,
|
||||
@ -10,26 +15,21 @@ import {
|
||||
IqserDenyDirective,
|
||||
IqserDialogComponent,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dictionary, 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 { firstValueFrom } from 'rxjs';
|
||||
import { getEditRedactionOptions, RedactOrHintOption } from '../../utils/dialog-options';
|
||||
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 { firstValueFrom } from 'rxjs';
|
||||
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';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { DialogHelpModeKeys } from '../../utils/constants';
|
||||
import { getEditRedactionOptions } from '../../utils/dialog-options';
|
||||
import { EditRedactionData, EditRedactResult, RedactOrHintOption } from '../../utils/dialog-types';
|
||||
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
|
||||
|
||||
interface TypeSelectOptions {
|
||||
type: string;
|
||||
@ -66,6 +66,7 @@ export class EditRedactionDialogComponent
|
||||
{
|
||||
readonly #dossier = inject(ActiveDossiersService).find(this.data.dossierId);
|
||||
readonly #applyToAllDossiers = this.data.applyToAllDossiers;
|
||||
protected readonly roles = Roles;
|
||||
readonly annotations = this.data.annotations;
|
||||
readonly iconButtonTypes = IconButtonTypes;
|
||||
readonly isModifyDictionary = this.annotations.every(annotation => annotation.isModifyDictionary);
|
||||
@ -90,8 +91,6 @@ export class EditRedactionDialogComponent
|
||||
{ label: redaction.value, show: true, bold: true },
|
||||
{ label: redaction.typeLabel, show: true },
|
||||
]);
|
||||
protected readonly roles = Roles;
|
||||
|
||||
options: DetailsRadioOption<RedactOrHintOption>[] | undefined;
|
||||
legalOptions: LegalBasisOption[] = [];
|
||||
dictionaries: Dictionary[] = [];
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { Component, inject, OnInit } from '@angular/core';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -11,25 +16,20 @@ import {
|
||||
IqserDialogComponent,
|
||||
} from '@iqser/common-ui';
|
||||
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dictionary, IAddRedactionRequest, 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 { firstValueFrom } from 'rxjs';
|
||||
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 {
|
||||
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';
|
||||
import { getRedactOrHintOptions } from '../../utils/dialog-options';
|
||||
import { RedactOrHintOption, RedactOrHintOptions, RedactRecommendationData, RedactRecommendationResult } from '../../utils/dialog-types';
|
||||
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
|
||||
|
||||
@Component({
|
||||
templateUrl: './redact-recommendation-dialog.component.html',
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import { AsyncPipe, NgClass, NgForOf, NgIf, NgStyle } from '@angular/common';
|
||||
import { Component, inject, OnInit } from '@angular/core';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -10,25 +15,20 @@ import {
|
||||
IconButtonTypes,
|
||||
IqserDialogComponent,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dictionary, IAddRedactionRequest, 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 { UserPreferenceService } from '@users/user-preference.service';
|
||||
import { calcTextWidthInPixels, stringToBoolean } from '@utils/functions';
|
||||
import { firstValueFrom, Observable } from 'rxjs';
|
||||
import { map, tap } from 'rxjs/operators';
|
||||
import { getRedactOrHintOptions, RedactOrHintOption, RedactOrHintOptions } from '../../utils/dialog-options';
|
||||
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';
|
||||
import { getRedactOrHintOptions } from '../../utils/dialog-options';
|
||||
import { RedactOrHintOption, RedactOrHintOptions, RedactTextData, RedactTextResult } from '../../utils/dialog-types';
|
||||
import { LegalBasisOption } from '../manual-redaction-dialog/manual-annotation-dialog.component';
|
||||
|
||||
const MAXIMUM_TEXT_AREA_WIDTH = 421;
|
||||
|
||||
@ -60,6 +60,9 @@ export class RedactTextDialogComponent
|
||||
extends IqserDialogComponent<RedactTextDialogComponent, RedactTextData, RedactTextResult>
|
||||
implements OnInit
|
||||
{
|
||||
readonly #dossier = inject(ActiveDossiersService).find(this.data.dossierId);
|
||||
readonly #manualRedactionTypeExists = inject(DictionaryService).hasManualType(this.#dossier.dossierTemplateId);
|
||||
#applyToAllDossiers = this.applyToAll;
|
||||
readonly roles = Roles;
|
||||
readonly iconButtonTypes = IconButtonTypes;
|
||||
readonly initialText = this.data?.manualRedactionEntryWrapper?.manualRedactionEntry?.value;
|
||||
@ -72,36 +75,11 @@ export class RedactTextDialogComponent
|
||||
selectedTextRows = 1;
|
||||
readonly options: DetailsRadioOption<RedactOrHintOption>[];
|
||||
readonly displayedDictionaryLabel$: Observable<string>;
|
||||
readonly #dossier = inject(ActiveDossiersService).find(this.data.dossierId);
|
||||
readonly #manualRedactionTypeExists = inject(DictionaryService).hasManualType(this.#dossier.dossierTemplateId);
|
||||
#applyToAllDossiers = this.applyToAll;
|
||||
readonly maximumTextAreaWidth = MAXIMUM_TEXT_AREA_WIDTH;
|
||||
readonly maximumSelectedTextWidth = 567;
|
||||
|
||||
textWidth: number;
|
||||
|
||||
get isSystemDefault(): boolean {
|
||||
return this._userPreferences.getAddRedactionDefaultOption() === SystemDefaultOption.SYSTEM_DEFAULT;
|
||||
}
|
||||
|
||||
get defaultOption() {
|
||||
const defaultOption = this.isSystemDefault
|
||||
? this.#getOption(SystemDefaults.ADD_REDACTION_DEFAULT)
|
||||
: this.#getOption(this._userPreferences.getAddRedactionDefaultOption() as RedactOrHintOption);
|
||||
this.dictionaryRequest = defaultOption.value === RedactOrHintOptions.IN_DOSSIER;
|
||||
if (this.dictionaryRequest) {
|
||||
this.#setDictionaries();
|
||||
return defaultOption;
|
||||
}
|
||||
return defaultOption ?? this.options[0];
|
||||
}
|
||||
|
||||
get applyToAll() {
|
||||
return this.isSystemDefault || this._userPreferences.getAddRedactionDefaultExtraOption() === 'undefined'
|
||||
? this.data.applyToAllDossiers ?? true
|
||||
: stringToBoolean(this._userPreferences.getAddRedactionDefaultExtraOption());
|
||||
}
|
||||
|
||||
constructor(
|
||||
private readonly _justificationsService: JustificationsService,
|
||||
private readonly _dictionaryService: DictionaryService,
|
||||
@ -137,6 +115,28 @@ export class RedactTextDialogComponent
|
||||
);
|
||||
}
|
||||
|
||||
get isSystemDefault(): boolean {
|
||||
return this._userPreferences.getAddRedactionDefaultOption() === SystemDefaultOption.SYSTEM_DEFAULT;
|
||||
}
|
||||
|
||||
get defaultOption() {
|
||||
const defaultOption = this.isSystemDefault
|
||||
? this.#getOption(SystemDefaults.ADD_REDACTION_DEFAULT)
|
||||
: this.#getOption(this._userPreferences.getAddRedactionDefaultOption() as RedactOrHintOption);
|
||||
this.dictionaryRequest = defaultOption.value === RedactOrHintOptions.IN_DOSSIER;
|
||||
if (this.dictionaryRequest) {
|
||||
this.#setDictionaries();
|
||||
return defaultOption;
|
||||
}
|
||||
return defaultOption ?? this.options[0];
|
||||
}
|
||||
|
||||
get applyToAll() {
|
||||
return this.isSystemDefault || this._userPreferences.getAddRedactionDefaultExtraOption() === 'undefined'
|
||||
? this.data.applyToAllDossiers ?? true
|
||||
: stringToBoolean(this._userPreferences.getAddRedactionDefaultExtraOption());
|
||||
}
|
||||
|
||||
async ngOnInit(): Promise<void> {
|
||||
const data = await firstValueFrom(this._justificationsService.getForDossierTemplate(this.#dossier.dossierTemplateId));
|
||||
this.legalOptions = data.map(lbm => ({
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import { NgStyle } from '@angular/common';
|
||||
import { Component, computed } from '@angular/core';
|
||||
import { toSignal } from '@angular/core/rxjs-interop';
|
||||
import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -11,22 +14,19 @@ import {
|
||||
IqserDenyDirective,
|
||||
IqserDialogComponent,
|
||||
} from '@iqser/common-ui';
|
||||
import { getRemoveRedactionOptions, RemoveRedactionOption, RemoveRedactionOptions } from '../../utils/dialog-options';
|
||||
import { RemoveRedactionData, RemoveRedactionResult } from '../../utils/dialog-types';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Roles } from '@users/roles';
|
||||
import { DialogHelpModeKeys } from '../../utils/constants';
|
||||
import { toSignal } from '@angular/core/rxjs-interop';
|
||||
import { UserPreferenceService } from '@users/user-preference.service';
|
||||
import { stringToBoolean } from '@utils/functions';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { SystemDefaultOption, SystemDefaults } from '../../../account/utils/dialog-defaults';
|
||||
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';
|
||||
import { DialogHelpModeKeys } from '../../utils/constants';
|
||||
import { getRemoveRedactionOptions } from '../../utils/dialog-options';
|
||||
import { RemoveRedactionData, RemoveRedactionOption, RemoveRedactionOptions, RemoveRedactionResult } from '../../utils/dialog-types';
|
||||
|
||||
@Component({
|
||||
templateUrl: './remove-redaction-dialog.component.html',
|
||||
@ -51,12 +51,11 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
|
||||
RemoveRedactionData,
|
||||
RemoveRedactionResult
|
||||
> {
|
||||
protected readonly roles = Roles;
|
||||
readonly iconButtonTypes = IconButtonTypes;
|
||||
|
||||
readonly recommendation = this.data.redactions.every(redaction => redaction.isRecommendation);
|
||||
readonly hint = this.data.redactions.every(redaction => redaction.isHint);
|
||||
readonly annotationsType = this.hint ? 'hint' : this.recommendation ? 'recommendation' : 'redaction';
|
||||
|
||||
readonly optionByType = {
|
||||
recommendation: {
|
||||
main: this._userPreferences.getRemoveRecommendationDefaultOption(),
|
||||
@ -71,7 +70,6 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
|
||||
extra: this._userPreferences.getRemoveRedactionDefaultExtraOption(),
|
||||
},
|
||||
};
|
||||
|
||||
readonly systemDefaultByType = {
|
||||
recommendation: {
|
||||
main: SystemDefaults.REMOVE_RECOMMENDATION_DEFAULT,
|
||||
@ -86,24 +84,19 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent<
|
||||
extra: false,
|
||||
},
|
||||
};
|
||||
|
||||
readonly #applyToAllDossiers = this.systemDefaultByType[this.annotationsType].extra;
|
||||
readonly isSystemDefault = this.optionByType[this.annotationsType].main === SystemDefaultOption.SYSTEM_DEFAULT;
|
||||
readonly isExtraOptionSystemDefault = this.optionByType[this.annotationsType].extra === 'undefined';
|
||||
readonly defaultOptionPreference = this.isSystemDefault
|
||||
? this.systemDefaultByType[this.annotationsType].main
|
||||
: this.optionByType[this.annotationsType].main;
|
||||
readonly extraOptionPreference = stringToBoolean(this.optionByType[this.annotationsType].extra);
|
||||
|
||||
readonly #applyToAllDossiers = this.systemDefaultByType[this.annotationsType].extra;
|
||||
|
||||
readonly options: DetailsRadioOption<RemoveRedactionOption>[] = getRemoveRedactionOptions(
|
||||
this.data,
|
||||
this.isSystemDefault || this.isExtraOptionSystemDefault ? this.#applyToAllDossiers : this.extraOptionPreference,
|
||||
);
|
||||
readonly skipped = this.data.redactions.some(annotation => annotation.isSkipped);
|
||||
readonly redactedTexts = this.data.redactions.map(annotation => annotation.value);
|
||||
|
||||
protected readonly roles = Roles;
|
||||
form: UntypedFormGroup = this._formBuilder.group({
|
||||
comment: [null],
|
||||
option: [this.defaultOption],
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import { NgIf } from '@angular/common';
|
||||
import { Component, inject } from '@angular/core';
|
||||
import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatDialogClose } from '@angular/material/dialog';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
DetailsRadioComponent,
|
||||
@ -9,15 +13,11 @@ import {
|
||||
IconButtonTypes,
|
||||
IqserDialogComponent,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
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';
|
||||
import { getResizeRedactionOptions } from '../../utils/dialog-options';
|
||||
import { ResizeOptions, ResizeRedactionData, ResizeRedactionOption, ResizeRedactionResult } from '../../utils/dialog-types';
|
||||
|
||||
@Component({
|
||||
templateUrl: './resize-redaction-dialog.component.html',
|
||||
|
||||
@ -29,11 +29,11 @@ import { EditRedactionDialogComponent } from '../dialogs/edit-redaction-dialog/e
|
||||
import { RedactRecommendationDialogComponent } from '../dialogs/redact-recommendation-dialog/redact-recommendation-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 { RemoveRedactionOptions } from '../utils/dialog-options';
|
||||
import {
|
||||
EditRedactionData,
|
||||
EditRedactResult,
|
||||
RemoveRedactionData,
|
||||
RemoveRedactionOptions,
|
||||
RemoveRedactionPermissions,
|
||||
RemoveRedactionResult,
|
||||
ResizeRedactionData,
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { effect, Injectable, Signal, signal } from '@angular/core';
|
||||
import { bool } from '@iqser/common-ui/lib/utils';
|
||||
import { REDAnnotationManager } from '../../pdf-viewer/services/annotation-manager.service';
|
||||
import { FilePreviewStateService } from './file-preview-state.service';
|
||||
import { getLocalStorageDataByFileId, setLocalStorageDataByFileId } from '@utils/local-storage';
|
||||
|
||||
export const HIDE_SKIPPED = 'hide-skipped';
|
||||
import { REDAnnotationManager } from '../../pdf-viewer/services/annotation-manager.service';
|
||||
import { HIDE_SKIPPED } from '../utils/constants';
|
||||
import { FilePreviewStateService } from './file-preview-state.service';
|
||||
|
||||
@Injectable()
|
||||
export class SkippedService {
|
||||
|
||||
@ -53,3 +53,5 @@ export const TextPopups = {
|
||||
ADD_RECTANGLE: 'add-rectangle',
|
||||
ADD_FALSE_POSITIVE: 'add-false-positive',
|
||||
} as const;
|
||||
|
||||
export const HIDE_SKIPPED = 'hide-skipped';
|
||||
|
||||
@ -6,33 +6,20 @@ import { editRedactionTranslations, redactTextTranslations } from '@translations
|
||||
import { removeAnnotationTranslations } from '@translations/remove-annotation-translations';
|
||||
import { removeRedactionTranslations } from '@translations/remove-redaction-translations';
|
||||
import { resizeRedactionTranslations } from '@translations/resize-redaction-translations';
|
||||
import { RemoveRedactionData } from './dialog-types';
|
||||
import {
|
||||
RedactOrHintOption,
|
||||
RedactOrHintOptions,
|
||||
RemoveRedactionData,
|
||||
RemoveRedactionOption,
|
||||
RemoveRedactionOptions,
|
||||
ResizeOptions,
|
||||
ResizeRedactionOption,
|
||||
} from './dialog-types';
|
||||
|
||||
const PIN_ICON = 'red:push-pin';
|
||||
const FOLDER_ICON = 'red:folder';
|
||||
const REMOVE_FROM_DICT_ICON = 'red:remove-from-dict';
|
||||
|
||||
export const RedactOrHintOptions = {
|
||||
ONLY_HERE: 'ONLY_HERE',
|
||||
IN_DOSSIER: 'IN_DOSSIER',
|
||||
} as const;
|
||||
|
||||
export type RedactOrHintOption = keyof typeof RedactOrHintOptions;
|
||||
|
||||
export const ResizeOptions = RedactOrHintOptions;
|
||||
export type ResizeRedactionOption = RedactOrHintOption;
|
||||
|
||||
export const RemoveRedactionOptions = {
|
||||
ONLY_HERE: 'ONLY_HERE',
|
||||
IN_DOSSIER: 'IN_DOSSIER',
|
||||
FALSE_POSITIVE: 'FALSE_POSITIVE',
|
||||
DO_NOT_RECOMMEND: 'DO_NOT_RECOMMEND',
|
||||
} as const;
|
||||
export const RemoveAnnotationOptions = RemoveRedactionOptions;
|
||||
|
||||
export type RemoveRedactionOption = keyof typeof RemoveRedactionOptions;
|
||||
export type RemoveAnnotationOption = RemoveRedactionOption;
|
||||
|
||||
export const getEditRedactionOptions = (
|
||||
dossierName: string,
|
||||
applyToAllDossiers: boolean,
|
||||
|
||||
@ -2,7 +2,27 @@ import { DetailsRadioOption } from '@iqser/common-ui';
|
||||
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
|
||||
import { ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper';
|
||||
import { Dictionary, Dossier, File, IAddRedactionRequest, IManualRedactionEntry } from '@red/domain';
|
||||
import { RemoveRedactionOption } from './dialog-options';
|
||||
|
||||
export const RedactOrHintOptions = {
|
||||
ONLY_HERE: 'ONLY_HERE',
|
||||
IN_DOSSIER: 'IN_DOSSIER',
|
||||
} as const;
|
||||
|
||||
export type RedactOrHintOption = keyof typeof RedactOrHintOptions;
|
||||
|
||||
export const ResizeOptions = RedactOrHintOptions;
|
||||
export type ResizeRedactionOption = RedactOrHintOption;
|
||||
|
||||
export const RemoveRedactionOptions = {
|
||||
ONLY_HERE: 'ONLY_HERE',
|
||||
IN_DOSSIER: 'IN_DOSSIER',
|
||||
FALSE_POSITIVE: 'FALSE_POSITIVE',
|
||||
DO_NOT_RECOMMEND: 'DO_NOT_RECOMMEND',
|
||||
} as const;
|
||||
export const RemoveAnnotationOptions = RemoveRedactionOptions;
|
||||
|
||||
export type RemoveRedactionOption = keyof typeof RemoveRedactionOptions;
|
||||
export type RemoveAnnotationOption = RemoveRedactionOption;
|
||||
|
||||
export interface RedactTextData {
|
||||
manualRedactionEntryWrapper: ManualRedactionEntryWrapper;
|
||||
|
||||
@ -3,15 +3,15 @@ import { bool, List } from '@iqser/common-ui/lib/utils';
|
||||
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
|
||||
import { Core } from '@pdftron/webviewer';
|
||||
import { getLast, urlFileId } from '@utils/functions';
|
||||
import { getLocalStorageDataByFileId } from '@utils/local-storage';
|
||||
import { NGXLogger } from 'ngx-logger';
|
||||
import { Subject } from 'rxjs';
|
||||
import { HIDE_SKIPPED } from '../../file-preview/utils/constants';
|
||||
import { AnnotationToolNames } from '../utils/constants';
|
||||
import { asList, getId, isStringOrWrapper } from '../utils/functions';
|
||||
import { AnnotationPredicate, DeleteAnnotationsOptions } from '../utils/types';
|
||||
import AnnotationManager = Core.AnnotationManager;
|
||||
import Annotation = Core.Annotations.Annotation;
|
||||
import { getLocalStorageDataByFileId } from '@utils/local-storage';
|
||||
import { HIDE_SKIPPED } from '../../file-preview/services/skipped.service';
|
||||
|
||||
const MODIFY_ACTION = 'modify';
|
||||
const RESIZE_OPTION = 'resize';
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
import { AsyncPipe, NgIf } from '@angular/common';
|
||||
import { Component, Input, OnChanges } from '@angular/core';
|
||||
import { CircleButtonComponent, IqserAllowDirective, IqserPermissionsService } from '@iqser/common-ui';
|
||||
import { CircleButtonComponent, IqserAllowDirective, IqserPermissionsService, largeDialogConfig } from '@iqser/common-ui';
|
||||
import { getCurrentUser } from '@iqser/common-ui/lib/users';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import type { Dossier, File, User } from '@red/domain';
|
||||
import { FilesMapService } from '@services/files/files-map.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { ReanalysisService } from '@services/reanalysis.service';
|
||||
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
|
||||
import { LongPressDirective, LongPressEvent } from '@shared/directives/long-press.directive';
|
||||
import { Roles } from '@users/roles';
|
||||
import { UserPreferenceService } from '@users/user-preference.service';
|
||||
import { EditDossierDialogComponent } from '../../dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
import { DossiersDialogService } from '../../services/dossiers-dialog.service';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { AsyncPipe, NgIf } from '@angular/common';
|
||||
import { FileDownloadBtnComponent } from '@shared/components/buttons/file-download-btn/file-download-btn.component';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-dossiers-listing-actions [dossier]',
|
||||
@ -54,7 +55,7 @@ export class DossiersListingActionsComponent implements OnChanges {
|
||||
}
|
||||
|
||||
openEditDossierDialog(dossierId: string): void {
|
||||
this._dialogService.openDialog('editDossier', { dossierId });
|
||||
this._dialogService.open(EditDossierDialogComponent, { dossierId }, { ...largeDialogConfig, width: '98vw', maxWidth: '98vw' });
|
||||
}
|
||||
|
||||
async reanalyseDossier(dossier: Dossier): Promise<void> {
|
||||
|
||||
@ -42,12 +42,13 @@
|
||||
[dossier]="dossier()"
|
||||
></redaction-edit-dossier-download-package>
|
||||
|
||||
<redaction-edit-dossier-dictionary
|
||||
*ngIf="activeNav() === 'dossierDictionary'"
|
||||
[dossier]="dossier()"
|
||||
></redaction-edit-dossier-dictionary>
|
||||
@defer (when activeNav() === 'dossierDictionary') {
|
||||
<redaction-edit-dossier-dictionary [dossier]="dossier()"></redaction-edit-dossier-dictionary>
|
||||
}
|
||||
|
||||
<redaction-edit-dossier-team *ngIf="activeNav() === 'members'" [dossier]="dossier()"></redaction-edit-dossier-team>
|
||||
@if (activeNav() === 'members') {
|
||||
<redaction-edit-dossier-team [dossier]="dossier()"></redaction-edit-dossier-team>
|
||||
}
|
||||
|
||||
<redaction-edit-dossier-attributes
|
||||
*ngIf="activeNav() === 'dossierAttributes'"
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { AfterViewInit, Component, computed, Inject, Signal, signal, untracked, viewChild, WritableSignal } from '@angular/core';
|
||||
import { toSignal } from '@angular/core/rxjs-interop';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component';
|
||||
import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component';
|
||||
import { EditDossierSectionInterface } from './edit-dossier-section.interface';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { SideNavComponent } from '@common-ui/shared';
|
||||
import {
|
||||
BaseDialogComponent,
|
||||
CircleButtonComponent,
|
||||
@ -14,20 +15,20 @@ import {
|
||||
IqserDenyDirective,
|
||||
SaveOptions,
|
||||
} from '@iqser/common-ui';
|
||||
import { EditDossierDictionaryComponent } from './dictionary/edit-dossier-dictionary.component';
|
||||
import { EditDossierAttributesComponent } from './attributes/edit-dossier-attributes.component';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { Dossier } from '@red/domain';
|
||||
import { ConfigService } from '@services/config.service';
|
||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
||||
import { dossiersServiceProvider } from '@services/entity-services/dossiers.service.provider';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { Roles } from '@users/roles';
|
||||
import { ConfigService } from '@services/config.service';
|
||||
import { toSignal } from '@angular/core/rxjs-interop';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { SideNavComponent } from '@common-ui/shared';
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { EditDossierAttributesComponent } from './attributes/edit-dossier-attributes.component';
|
||||
import { EditDossierDictionaryComponent } from './dictionary/edit-dossier-dictionary.component';
|
||||
import { EditDossierDownloadPackageComponent } from './download-package/edit-dossier-download-package.component';
|
||||
import { EditDossierSectionInterface } from './edit-dossier-section.interface';
|
||||
import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component';
|
||||
import { EditDossierTeamModule } from './edit-dossier-team/edit-dossier-team.module';
|
||||
import { EditDossierGeneralInfoComponent } from './general-info/edit-dossier-general-info.component';
|
||||
|
||||
type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes';
|
||||
|
||||
@ -54,7 +55,7 @@ interface NavItem {
|
||||
EditDossierGeneralInfoComponent,
|
||||
EditDossierDownloadPackageComponent,
|
||||
EditDossierDictionaryComponent,
|
||||
EditDossierTeamComponent,
|
||||
EditDossierTeamModule,
|
||||
EditDossierAttributesComponent,
|
||||
IconButtonComponent,
|
||||
HelpButtonComponent,
|
||||
@ -75,11 +76,11 @@ export class EditDossierDialogComponent extends BaseDialogComponent implements A
|
||||
readonly showHeading: Signal<boolean>;
|
||||
readonly showActionButtons: Signal<boolean>;
|
||||
|
||||
generalInfoComponent = viewChild(EditDossierGeneralInfoComponent);
|
||||
downloadPackageComponent = viewChild(EditDossierDownloadPackageComponent);
|
||||
dictionaryComponent = viewChild(EditDossierDictionaryComponent);
|
||||
membersComponent = viewChild(EditDossierTeamComponent);
|
||||
attributesComponent = viewChild(EditDossierAttributesComponent);
|
||||
readonly generalInfoComponent = viewChild(EditDossierGeneralInfoComponent);
|
||||
readonly downloadPackageComponent = viewChild(EditDossierDownloadPackageComponent);
|
||||
readonly dictionaryComponent = viewChild(EditDossierDictionaryComponent);
|
||||
readonly membersComponent = viewChild(EditDossierTeamComponent);
|
||||
readonly attributesComponent = viewChild(EditDossierAttributesComponent);
|
||||
|
||||
constructor(
|
||||
private readonly _dossiersService: DossiersService,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, inject, Input, OnChanges, SimpleChanges } from '@angular/core';
|
||||
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
||||
import { getConfig, InputWithActionComponent, RoundCheckboxComponent, StopPropagationDirective } from '@iqser/common-ui';
|
||||
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
||||
import { getConfig } from '@iqser/common-ui';
|
||||
import { Debounce } from '@iqser/common-ui/lib/utils';
|
||||
import { Dossier, IDossierRequest } from '@red/domain';
|
||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
||||
@ -11,51 +11,25 @@ import { compareLists } from '@utils/functions';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { NamePipe } from '@common-ui/users/name.pipe';
|
||||
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
||||
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { InitialsAvatarComponent } from '@common-ui/users';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-edit-dossier-team',
|
||||
templateUrl: './edit-dossier-team.component.html',
|
||||
styleUrls: ['./edit-dossier-team.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [
|
||||
ReactiveFormsModule,
|
||||
MatFormField,
|
||||
MatSelect,
|
||||
MatOption,
|
||||
NamePipe,
|
||||
NgForOf,
|
||||
NgIf,
|
||||
AsyncPipe,
|
||||
TeamMembersComponent,
|
||||
TranslateModule,
|
||||
InputWithActionComponent,
|
||||
InitialsAvatarComponent,
|
||||
StopPropagationDirective,
|
||||
RoundCheckboxComponent,
|
||||
MatIcon,
|
||||
],
|
||||
})
|
||||
export class EditDossierTeamComponent implements EditDossierSectionInterface, OnChanges {
|
||||
readonly #userService = inject(UserService);
|
||||
readonly #dossiersService = inject(DossiersService);
|
||||
readonly #permissionsService = inject(PermissionsService);
|
||||
readonly #filesService = inject(FilesService);
|
||||
form = this.#getForm();
|
||||
readonly #formValue$ = this.form.valueChanges;
|
||||
searchQuery = '';
|
||||
@Input() dossier: Dossier;
|
||||
membersSelectOptions: string[] = [];
|
||||
readonly isDocumine = getConfig().IS_DOCUMINE;
|
||||
readonly #userService = inject(UserService);
|
||||
readonly ownersSelectOptions = this.#userService.all.filter(u => u.isManager).map(m => m.id);
|
||||
readonly #dossiersService = inject(DossiersService);
|
||||
readonly #permissionsService = inject(PermissionsService);
|
||||
readonly #filesService = inject(FilesService);
|
||||
readonly #formValue$ = this.form.valueChanges;
|
||||
readonly selectedReviewers$ = this.#formValue$.pipe(map(v => v.members.filter(m => !v.approvers.includes(m))));
|
||||
readonly selectedApprovers$ = this.#formValue$.pipe(map(v => v.approvers));
|
||||
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { ReactiveFormsModule } from '@angular/forms';
|
||||
import { MatFormField } from '@angular/material/form-field';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { InitialsAvatarComponent } from '@common-ui/users';
|
||||
import { NamePipe } from '@common-ui/users/name.pipe';
|
||||
import {
|
||||
CircleButtonComponent,
|
||||
InputWithActionComponent,
|
||||
IqserAllowDirective,
|
||||
RoundCheckboxComponent,
|
||||
StopPropagationDirective,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { TeamMembersComponent } from '@shared/components/team-members/team-members.component';
|
||||
import { EditDossierTeamComponent } from './edit-dossier-team.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [EditDossierTeamComponent, TeamMembersComponent],
|
||||
exports: [EditDossierTeamComponent, TeamMembersComponent],
|
||||
imports: [
|
||||
ReactiveFormsModule,
|
||||
MatFormField,
|
||||
MatSelect,
|
||||
MatOption,
|
||||
NamePipe,
|
||||
NgForOf,
|
||||
NgIf,
|
||||
AsyncPipe,
|
||||
TranslateModule,
|
||||
InputWithActionComponent,
|
||||
InitialsAvatarComponent,
|
||||
StopPropagationDirective,
|
||||
RoundCheckboxComponent,
|
||||
MatIcon,
|
||||
CircleButtonComponent,
|
||||
IqserAllowDirective,
|
||||
],
|
||||
})
|
||||
export class EditDossierTeamModule {}
|
||||
@ -1,12 +1,16 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
|
||||
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
|
||||
import { Dossier, DOSSIER_TEMPLATE_ID, IDossierRequest, IDossierTemplate } from '@red/domain';
|
||||
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||
import { MatDialogRef } from '@angular/material/dialog';
|
||||
import { EditDossierDialogComponent } from '../edit-dossier-dialog.component';
|
||||
import { MatFormField, MatSuffix } from '@angular/material/form-field';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { Router } from '@angular/router';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { SmallChipComponent } from '@common-ui/shared';
|
||||
import {
|
||||
ConfirmOptions,
|
||||
HasScrollbarDirective,
|
||||
@ -17,25 +21,21 @@ import {
|
||||
TitleColors,
|
||||
Toaster,
|
||||
} from '@iqser/common-ui';
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
||||
import { TrashService } from '@services/entity-services/trash.service';
|
||||
import { Dossier, DOSSIER_TEMPLATE_ID, IDossierRequest, IDossierTemplate } from '@red/domain';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service';
|
||||
import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
|
||||
import { DossiersService } from '@services/dossiers/dossiers.service';
|
||||
import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service';
|
||||
import dayjs from 'dayjs';
|
||||
import { TrashService } from '@services/entity-services/trash.service';
|
||||
import { PermissionsService } from '@services/permissions.service';
|
||||
import { dateWithoutTime } from '@utils/functions';
|
||||
import { MatFormField, MatSuffix } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { SmallChipComponent } from '@common-ui/shared';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import dayjs from 'dayjs';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { DossiersDialogService } from '../../../services/dossiers-dialog.service';
|
||||
import { type EditDossierDialogComponent } from '../edit-dossier-dialog.component';
|
||||
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||
|
||||
@Component({
|
||||
selector: 'redaction-edit-dossier-general-info',
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { ConfirmationDialogComponent, DialogConfig, DialogService, largeDialogConfig } from '@iqser/common-ui';
|
||||
import { ConfirmationDialogComponent, DialogConfig, DialogService } from '@iqser/common-ui';
|
||||
import { ImportRedactionsDialogComponent } from '../../file-preview/dialogs/import-redactions-dialog/import-redactions-dialog';
|
||||
import { EditDossierDialogComponent } from '../dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
|
||||
type DialogType = 'confirm' | 'editDossier' | 'importRedactions';
|
||||
type DialogType = 'confirm' | 'importRedactions';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
@ -15,10 +14,6 @@ export class DossiersDialogService extends DialogService<DialogType> {
|
||||
component: ConfirmationDialogComponent,
|
||||
dialogConfig: { disableClose: false },
|
||||
},
|
||||
editDossier: {
|
||||
component: EditDossierDialogComponent,
|
||||
dialogConfig: { ...largeDialogConfig, width: '98vw', maxWidth: '98vw' },
|
||||
},
|
||||
importRedactions: {
|
||||
component: ImportRedactionsDialogComponent,
|
||||
dialogConfig: { disableClose: false },
|
||||
|
||||
@ -1,21 +1,17 @@
|
||||
import { Component, ElementRef, EventEmitter, inject, Input, OnChanges, Output, ViewChild } from '@angular/core';
|
||||
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, InitialsAvatarComponent } from '@iqser/common-ui/lib/users';
|
||||
import { CircleButtonTypes, largeDialogConfig } from '@iqser/common-ui';
|
||||
import { getCurrentUser } 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';
|
||||
import { User } from '@red/domain';
|
||||
import { Roles } from '@users/roles';
|
||||
import { UserService } from '@users/user.service';
|
||||
import { EditDossierDialogComponent } from '../../../shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
||||
|
||||
@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;
|
||||
@ -65,6 +61,6 @@ export class TeamMembersComponent implements OnChanges {
|
||||
|
||||
openEditDossierDialog(): void {
|
||||
const data = { dossierId: this.dossierId, section: 'members' };
|
||||
this._dialogService.openDialog('editDossier', data);
|
||||
this._dialogService.open(EditDossierDialogComponent, data, { ...largeDialogConfig, width: '98vw', maxWidth: '98vw' });
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,13 @@
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { Component, Inject, OnInit } from '@angular/core';
|
||||
import { ReactiveFormsModule, Validators } from '@angular/forms';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||
import { MatFormField, MatSuffix } from '@angular/material/form-field';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { Router } from '@angular/router';
|
||||
import {
|
||||
BaseDialogComponent,
|
||||
@ -12,27 +19,22 @@ import {
|
||||
IconButtonTypes,
|
||||
IqserDenyDirective,
|
||||
IqserPermissionsService,
|
||||
largeDialogConfig,
|
||||
SaveOptions,
|
||||
} from '@iqser/common-ui';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { DOSSIER_TEMPLATE_ID, DownloadFileType, IDossierRequest, IDossierTemplate, IReportTemplate } from '@red/domain';
|
||||
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
|
||||
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
||||
import { ReportTemplateService } from '@services/report-template.service';
|
||||
import { WatermarkSelectorComponent } from '@shared/components/dossier-watermark-selector/watermark-selector.component';
|
||||
import { SelectComponent } from '@shared/components/select/select.component';
|
||||
import { downloadTypesTranslations } from '@translations/download-types-translations';
|
||||
import { Roles } from '@users/roles';
|
||||
import dayjs from 'dayjs';
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
import { EditDossierDialogComponent } from '../../../shared-dossiers/dialogs/edit-dossier-dialog/edit-dossier-dialog.component';
|
||||
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
|
||||
import { NgForOf, NgIf } from '@angular/common';
|
||||
import { TranslateModule } from '@ngx-translate/core';
|
||||
import { MatFormField, MatSuffix } from '@angular/material/form-field';
|
||||
import { MatOption, MatSelect } from '@angular/material/select';
|
||||
import { MatTooltip } from '@angular/material/tooltip';
|
||||
import { WatermarkSelectorComponent } from '@shared/components/dossier-watermark-selector/watermark-selector.component';
|
||||
import { MatCheckbox } from '@angular/material/checkbox';
|
||||
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||
import { MatIcon } from '@angular/material/icon';
|
||||
import { SelectComponent } from '@shared/components/select/select.component';
|
||||
|
||||
interface DialogData {
|
||||
readonly dossierTemplateId?: string;
|
||||
@ -123,10 +125,14 @@ export class AddDossierDialogComponent extends BaseDialogComponent implements On
|
||||
if (savedDossier) {
|
||||
await this._router.navigate([savedDossier.routerLink]);
|
||||
if (options?.nextAction) {
|
||||
this._dialogService.openDialog('editDossier', {
|
||||
dossierId: savedDossier.id,
|
||||
section: 'members',
|
||||
});
|
||||
this._dialogService.open(
|
||||
EditDossierDialogComponent,
|
||||
{
|
||||
dossierId: savedDossier.id,
|
||||
section: 'members',
|
||||
},
|
||||
{ ...largeDialogConfig, width: '98vw', maxWidth: '98vw' },
|
||||
);
|
||||
}
|
||||
this._dialogRef.close(savedDossier);
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { RemoveAnnotationOption } from '../modules/file-preview/utils/dialog-options';
|
||||
import { DialogOption } from '@translations/redact-text-translations';
|
||||
import { RemoveAnnotationOption } from '../modules/file-preview/utils/dialog-types';
|
||||
|
||||
export const removeAnnotationTranslations: { [key in RemoveAnnotationOption]: DialogOption } = {
|
||||
ONLY_HERE: {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||
import { RemoveRedactionOption } from '../modules/file-preview/utils/dialog-options';
|
||||
import { DialogOption } from '@translations/redact-text-translations';
|
||||
import { RemoveRedactionOption } from '../modules/file-preview/utils/dialog-types';
|
||||
|
||||
export const removeRedactionTranslations: { [key in RemoveRedactionOption]: DialogOption } = {
|
||||
ONLY_HERE: {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { IqserUserPreferenceService, ListingMode } from '@iqser/common-ui';
|
||||
import { RedactOrHintOption, RemoveRedactionOption } from '../modules/file-preview/utils/dialog-options';
|
||||
import { SystemDefaultOption, SystemDefaultType } from '../modules/account/utils/dialog-defaults';
|
||||
import { RedactOrHintOption, RemoveRedactionOption } from '../modules/file-preview/utils/dialog-types';
|
||||
|
||||
export const PreferencesKeys = {
|
||||
dossierRecent: 'Dossier-Recent',
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { handleCheckedValue, INestedFilter } from '@iqser/common-ui/lib/filtering';
|
||||
import { ComponentLogEntry, Dossier, File, User, UserType } from '@red/domain';
|
||||
import { Dossier, File, User, UserType } from '@red/domain';
|
||||
|
||||
export function handleFilterDelta(oldFilters: INestedFilter[], newFilters: INestedFilter[], allFilters: INestedFilter[]) {
|
||||
const newFiltersDelta = {};
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 04ae68891c9298b92327868006d1e7c79529c7e6
|
||||
Subproject commit d595a22db164ec8669da572fdd49a28b464eb61a
|
||||
@ -1,6 +1,5 @@
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
import { IDossierAttributeConfig } from './dossier-attribute-config';
|
||||
import { DossierAttributeConfigType } from './types';
|
||||
import { DossierAttributeConfigType, IDossierAttributeConfig } from './dossier-attribute-config';
|
||||
|
||||
export class DossierAttributeConfig implements IDossierAttributeConfig, IListable {
|
||||
readonly id: string;
|
||||
|
||||
@ -1,4 +1,13 @@
|
||||
import { DossierAttributeConfigType } from './types';
|
||||
export const DossierAttributeConfigTypes = {
|
||||
DATE: 'DATE',
|
||||
IMAGE: 'IMAGE',
|
||||
NUMBER: 'NUMBER',
|
||||
TEXT: 'TEXT',
|
||||
} as const;
|
||||
|
||||
export type DossierAttributeConfigType = keyof typeof DossierAttributeConfigTypes;
|
||||
|
||||
export type DossierAttributeWithValue = IDossierAttributeConfig & { value: string };
|
||||
|
||||
export interface IDossierAttributeConfig {
|
||||
readonly id: string;
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
export * from './types';
|
||||
export * from './dossier-attribute-config';
|
||||
export * from './dossier-attribute-config.model';
|
||||
export * from './dossier-attribute';
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
import { IDossierAttributeConfig } from './dossier-attribute-config';
|
||||
|
||||
export const DossierAttributeConfigTypes = {
|
||||
DATE: 'DATE',
|
||||
IMAGE: 'IMAGE',
|
||||
NUMBER: 'NUMBER',
|
||||
TEXT: 'TEXT',
|
||||
} as const;
|
||||
|
||||
export type DossierAttributeConfigType = keyof typeof DossierAttributeConfigTypes;
|
||||
|
||||
export type DossierAttributeWithValue = IDossierAttributeConfig & { value: string };
|
||||
@ -1,4 +1,11 @@
|
||||
import { isProcessingStatuses, OCR_STATES, PENDING_STATES, PROCESSED_STATES, PROCESSING_STATES, ProcessingFileStatus } from '../files';
|
||||
import {
|
||||
isProcessingStatuses,
|
||||
OCR_STATES,
|
||||
PENDING_STATES,
|
||||
PROCESSED_STATES,
|
||||
PROCESSING_STATES,
|
||||
ProcessingFileStatus,
|
||||
} from '../files/types';
|
||||
import { IDossierStats } from './dossier-stats';
|
||||
import { FileCountPerProcessingStatus, FileCountPerWorkflowStatus } from './types';
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { ProcessingFileStatus, WorkflowFileStatus } from '../files';
|
||||
import { ProcessingFileStatus, WorkflowFileStatus } from '../files/types';
|
||||
|
||||
export type FileCountPerWorkflowStatus = { [key in WorkflowFileStatus]?: number };
|
||||
export type FileCountPerProcessingStatus = { [key in ProcessingFileStatus]?: number };
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { IListable } from '@iqser/common-ui';
|
||||
import { List } from '@iqser/common-ui/lib/utils';
|
||||
import { DownloadFileType } from '../shared';
|
||||
import { DownloadFileType } from '../shared/types';
|
||||
import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from './constants';
|
||||
import { IDossier } from './dossier';
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { DownloadFileType } from '../shared';
|
||||
import { List } from '@iqser/common-ui/lib/utils';
|
||||
import { DownloadFileType } from '../shared/types';
|
||||
|
||||
export interface IDossier {
|
||||
readonly approverIds: List;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { Entity } from '@iqser/common-ui';
|
||||
import { ProcessingType, ProcessingTypes } from '../dossier-stats';
|
||||
import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from '../dossiers';
|
||||
import { FileAttributes } from '../file-attributes';
|
||||
import { StatusSorter } from '../shared';
|
||||
import { ProcessingType, ProcessingTypes } from '../dossier-stats/dossier-stats.model';
|
||||
import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from '../dossiers/constants';
|
||||
import { FileAttributes } from '../file-attributes/file-attributes';
|
||||
import { StatusSorter } from '../shared/sorters/status-sorter';
|
||||
import { IFile } from './file';
|
||||
import {
|
||||
isFullProcessingStatuses,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { Entity } from '@iqser/common-ui';
|
||||
import { IViewedPage } from '.';
|
||||
import { IViewedPage } from './viewed-page';
|
||||
|
||||
export class ViewedPage extends Entity<IViewedPage, number> {
|
||||
readonly fileId: string;
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
import { WorkflowFileStatus } from '../files';
|
||||
import { WorkflowFileStatus } from '../files/types';
|
||||
|
||||
export type Color = WorkflowFileStatus | string;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { Observable } from 'rxjs';
|
||||
import { CircleButtonType, ITrackable } from '@iqser/common-ui';
|
||||
import { type File } from '../files';
|
||||
import { type Dossier } from '../dossiers';
|
||||
import { Observable } from 'rxjs';
|
||||
import { Dossier } from '../dossiers/dossier.model';
|
||||
import { File } from '../files/file.model';
|
||||
|
||||
export const ActionTypes = {
|
||||
circleBtn: 'circleBtn',
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { WorkflowFileStatus } from '../../files';
|
||||
import { WorkflowFileStatus } from '../../files/types';
|
||||
|
||||
type StatusSorterItem = { key: WorkflowFileStatus } | WorkflowFileStatus | string;
|
||||
type Sorter = Record<WorkflowFileStatus, number> & {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user