migrate inputs to signal inputs

This commit is contained in:
Dan Percic 2024-06-20 11:38:38 +03:00
parent ab550a2831
commit f0b4070ae2
35 changed files with 262 additions and 296 deletions

View File

@ -10,6 +10,8 @@ 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 { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
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';
@ -33,7 +35,6 @@ import {
HelpModeComponent,
HiddenActionDirective,
IconButtonComponent,
InputWithActionComponent,
IqserAllowDirective,
IqserDenyDirective,
IqserListingModule,
@ -41,7 +42,6 @@ import {
IqserTranslateModule,
LanguageService,
MAX_RETRIES_ON_SERVER_ERROR,
RoundCheckboxComponent,
SERVER_ERROR_SKIP_PATHS,
ServerErrorInterceptor,
StopPropagationDirective,

View File

@ -1,22 +1,18 @@
import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
import { digitalSignatureDialogTranslations } from '../../translations/digital-signature-dialog-translations';
import {
BaseDialogComponent,
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
IconButtonComponent,
} from '@iqser/common-ui';
import { MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { PkcsSignatureConfigurationComponent } from './form/pkcs-signature-configuration/pkcs-signature-configuration.component';
import { KmsSignatureConfigurationComponent } from './form/kms-signature-configuration/kms-signature-configuration.component';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { HttpStatusCode } from '@angular/common/http';
import { DigitalSignatureOption, DigitalSignatureOptions } from '@red/domain';
import { NgIf } from '@angular/common';
import { HttpStatusCode } from '@angular/common/http';
import { ChangeDetectorRef, Component, ViewChild } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { DigitalSignatureOption, DigitalSignatureOptions } from '@red/domain';
import { DigitalSignatureService } from '../../services/digital-signature.service';
import { digitalSignatureDialogTranslations } from '../../translations/digital-signature-dialog-translations';
import { KmsSignatureConfigurationComponent } from './form/kms-signature-configuration/kms-signature-configuration.component';
import { PkcsSignatureConfigurationComponent } from './form/pkcs-signature-configuration/pkcs-signature-configuration.component';
const DEFAULT_DIALOG_WIDTH = '662px';
const KMS_SIGNATURE_DIALOG_WIDTH = '810px';

View File

@ -1,35 +1,34 @@
import { AsyncPipe, NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { RouterLink } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { getCurrentUser } from '@common-ui/users';
import { getParam } from '@common-ui/utils';
import {
CircleButtonComponent,
IconButtonComponent,
IconButtonTypes,
IqserAllowDirective,
IqserDialog,
IqserListingModule,
ListingComponent,
TableColumnConfig,
listingProvidersFactory,
LoadingService,
IconButtonTypes,
IqserDialog,
CircleButtonComponent,
IqserListingModule,
InputWithActionComponent,
IconButtonComponent,
IqserAllowDirective,
TableColumnConfig,
} from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateModule } from '@ngx-translate/core';
import { ComponentMapping, DOSSIER_TEMPLATE_ID, User } from '@red/domain';
import { ComponentMappingsService } from '@services/entity-services/component-mappings.service';
import { defaultColorsTranslations } from '@translations/default-colors-translations';
import { Roles } from '@users/roles';
import { getCurrentUser } from '@common-ui/users';
import { DOSSIER_TEMPLATE_ID, User } from '@red/domain';
import { ComponentMapping } from '@red/domain';
import { combineLatest, firstValueFrom } from 'rxjs';
import { ComponentMappingsService } from '@services/entity-services/component-mappings.service';
import { map, tap } from 'rxjs/operators';
import { AddEditComponentMappingDialogComponent } from './add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { getParam } from '@common-ui/utils';
import { DossierTemplateBreadcrumbsComponent } from '../../shared/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component';
import { AsyncPipe, NgIf } from '@angular/common';
import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component';
import { TranslateModule } from '@ngx-translate/core';
import { RouterLink } from '@angular/router';
import { AdminSideNavComponent } from '../../shared/components/admin-side-nav/admin-side-nav.component';
import { DossierTemplateActionsComponent } from '../../shared/components/dossier-template-actions/dossier-template-actions.component';
import { DossierTemplateBreadcrumbsComponent } from '../../shared/components/dossier-template-breadcrumbs/dossier-template-breadcrumbs.component';
import { AddEditComponentMappingDialogComponent } from './add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component';
@Component({
templateUrl: './component-mappings-screen.component.html',
@ -52,18 +51,18 @@ import { AdminSideNavComponent } from '../../shared/components/admin-side-nav/ad
],
})
export class ComponentMappingsScreenComponent extends ListingComponent<ComponentMapping> implements OnInit {
readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
protected readonly context$;
protected readonly currentUser = getCurrentUser<User>();
protected readonly translations = defaultColorsTranslations;
protected readonly roles = Roles;
protected readonly iconButtonTypes = IconButtonTypes;
tableColumnConfigs: readonly TableColumnConfig<ComponentMapping>[] = [
{ label: _('component-mappings-screen.table-col-names.name'), sortByKey: 'searchKey' },
{ label: _('component-mappings-screen.table-col-names.version') },
{ label: _('component-mappings-screen.table-col-names.number-of-lines') },
];
readonly tableHeaderLabel = _('component-mappings-screen.table-header.title');
protected readonly context$;
protected readonly currentUser = getCurrentUser<User>();
protected readonly translations = defaultColorsTranslations;
protected readonly roles = Roles;
protected readonly iconButtonTypes = IconButtonTypes;
readonly #dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID);
constructor(
private readonly _loadingService: LoadingService,

View File

@ -1,12 +1,13 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
CircleButtonComponent,
defaultDialogConfig,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserListingModule,
ListingComponent,
listingProvidersFactory,
@ -15,6 +16,7 @@ import {
} from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { getParam } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { DOSSIER_TEMPLATE_ID, DossierAttributeConfig, IDossierAttributeConfig, User } from '@red/domain';
import { DossierAttributesService } from '@services/entity-services/dossier-attributes.service';
import { PermissionsService } from '@services/permissions.service';
@ -24,8 +26,6 @@ import {
AddEditDossierAttributeDialogComponent,
AddEditDossierAttributeDialogData,
} from './add-edit-dossier-attribute-dialog/add-edit-dossier-attribute-dialog.component';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { TableItemComponent } from './table-item/table-item.component';
@Component({

View File

@ -1,32 +1,32 @@
import { AsyncPipe, NgIf } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
defaultDialogConfig,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserListingModule,
ListingComponent,
listingProvidersFactory,
LoadingService,
TableColumnConfig,
} from '@iqser/common-ui';
import { SortingOrders } from '@iqser/common-ui/lib/sorting';
import { getParam } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { type DonutChartConfig, DOSSIER_TEMPLATE_ID, type DossierState } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { firstValueFrom, Observable } from 'rxjs';
import { DossierStatesMapService } from '@services/entity-services/dossier-states-map.service';
import { map, tap } from 'rxjs/operators';
import { DossierStatesService } from '@services/entity-services/dossier-states.service';
import { PermissionsService } from '@services/permissions.service';
import { MatDialog } from '@angular/material/dialog';
import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component';
import { firstValueFrom, Observable } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import {
AddEditDossierStateDialogComponent,
AddEditDossierStateDialogData,
} from '../add-edit-dossier-state-dialog/add-edit-dossier-state-dialog.component';
import { SortingOrders } from '@iqser/common-ui/lib/sorting';
import { getParam } from '@iqser/common-ui/lib/utils';
import { DonutChartComponent } from '@shared/components/donut-chart/donut-chart.component';
import { AsyncPipe, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { DossierStatesTableItemComponent } from '../dossier-states-table-item/dossier-states-table-item.component';
@Component({

View File

@ -1,10 +1,11 @@
import { AsyncPipe } from '@angular/common';
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
CircleButtonComponent,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserAllowDirective,
IqserListingModule,
IqserPermissionsService,
@ -14,6 +15,7 @@ import {
TableColumnConfig,
} from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { TranslateModule } from '@ngx-translate/core';
import { DossierTemplate, User } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { RouterHistoryService } from '@services/router-history.service';
@ -21,8 +23,6 @@ import { Roles } from '@users/roles';
import { UserPreferenceService } from '@users/user-preference.service';
import { firstValueFrom } from 'rxjs';
import { AdminDialogService } from '../../../services/admin-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe } from '@angular/common';
import { TableItemComponent } from '../table-item/table-item.component';
@Component({

View File

@ -1,10 +1,12 @@
import { AsyncPipe, NgIf, NgStyle } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { RouterLink } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
CircleButtonComponent,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserListingModule,
ListingComponent,
listingProvidersFactory,
@ -12,18 +14,16 @@ import {
TableColumnConfig,
} from '@iqser/common-ui';
import { getParam } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { Dictionary, DOSSIER_TEMPLATE_ID, DossierTemplateStats } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service';
import { PermissionsService } from '@services/permissions.service';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { firstValueFrom, Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe, NgIf, NgStyle } from '@angular/common';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
import { RouterLink } from '@angular/router';
@Component({
templateUrl: './entities-listing-screen.component.html',

View File

@ -1,24 +1,24 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { MatFormField } from '@angular/material/form-field';
import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { EditableInputComponent } from '@common-ui/inputs/editable-input/editable-input.component';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import {
ChevronButtonComponent,
CircleButtonComponent,
EditableInputComponent,
IqserListingModule,
ListingComponent,
listingProvidersFactory,
RoundCheckboxComponent,
TableColumnConfig,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { FileAttributeConfigTypes, IField } from '@red/domain';
import { fileAttributeTypesTranslations } from '@translations/file-attribute-types-translations';
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, MatSelectTrigger } from '@angular/material/select';
import { FormsModule } from '@angular/forms';
import { MatSlideToggle } from '@angular/material/slide-toggle';
@Component({
selector: 'redaction-active-fields-listing',

View File

@ -1,29 +1,29 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import { AbstractControl, ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, ValidatorFn, Validators } from '@angular/forms';
import { MatAutocomplete, MatAutocompleteTrigger, MatOption } from '@angular/material/autocomplete';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import * as Papa from 'papaparse';
import { firstValueFrom, Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { MatFormField } from '@angular/material/form-field';
import { MatSelect, MatSelectTrigger } from '@angular/material/select';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import {
CircleButtonComponent,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserTranslateModule,
ListingComponent,
listingProvidersFactory,
TableColumnConfig,
Toaster,
} from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { trackByFactory } from '@iqser/common-ui/lib/utils';
import { FileAttributeConfig, FileAttributeConfigTypes, FileAttributeEncodingTypes, IField, IFileAttributesConfig } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { fileAttributeEncodingTypesTranslations } from '@translations/file-attribute-encoding-types-translations';
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, MatSelectTrigger } from '@angular/material/select';
import * as Papa from 'papaparse';
import { firstValueFrom, Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { ActiveFieldsListingComponent } from './active-fields-listing/active-fields-listing.component';
export interface IFileAttributesCSVImportData {

View File

@ -93,15 +93,15 @@
</div>
<div class="center cell">
<iqser-round-checkbox *ngIf="attribute.filterable" [active]="true" [size]="18"></iqser-round-checkbox>
<iqser-round-checkbox *ngIf="attribute.filterable" [size]="18" active></iqser-round-checkbox>
</div>
<div class="center cell">
<iqser-round-checkbox *ngIf="attribute.displayedInFileList" [active]="true" [size]="18"></iqser-round-checkbox>
<iqser-round-checkbox *ngIf="attribute.displayedInFileList" [size]="18" active></iqser-round-checkbox>
</div>
<div class="center cell">
<iqser-round-checkbox *ngIf="attribute.primaryAttribute" [active]="true" [size]="18"></iqser-round-checkbox>
<iqser-round-checkbox *ngIf="attribute.primaryAttribute" [size]="18" active></iqser-round-checkbox>
</div>
<div class="cell">

View File

@ -1,25 +1,29 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { HttpStatusCode } from '@angular/common/http';
import { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import {
CircleButtonComponent,
defaultDialogConfig,
IconButtonComponent,
IconButtonTypes,
InputWithActionComponent,
IqserAllowDirective,
IqserListingModule,
largeDialogConfig,
ListingComponent,
listingProvidersFactory,
LoadingService,
RoundCheckboxComponent,
TableColumnConfig,
Toaster,
} from '@iqser/common-ui';
import { getCurrentUser } from '@iqser/common-ui/lib/users';
import { getParam } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { DOSSIER_TEMPLATE_ID, FileAttributeConfig, IFileAttributeConfig, IFileAttributesConfig, User } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
@ -37,10 +41,6 @@ import {
FileAttributesCsvImportDialogComponent,
IFileAttributesCSVImportData,
} from './file-attributes-csv-import-dialog/file-attributes-csv-import-dialog.component';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { TranslateModule } from '@ngx-translate/core';
@Component({
templateUrl: './file-attributes-listing-screen.component.html',

View File

@ -1,29 +1,23 @@
import { AsyncPipe, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
import { Component, computed, effect, HostListener, Input, OnDestroy } from '@angular/core';
import { Dossier, File, FileAttributeConfigTypes, IFileAttributeConfig } from '@red/domain';
import {
BaseFormComponent,
CircleButtonComponent,
DynamicInputComponent,
HelpModeService,
ListingService,
Toaster,
} from '@iqser/common-ui';
import { PermissionsService } from '@services/permissions.service';
import { AbstractControl, FormBuilder, FormsModule, ReactiveFormsModule, UntypedFormGroup, ValidatorFn } from '@angular/forms';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { firstValueFrom, Subscription } from 'rxjs';
import { FilesService } from '@services/files/files.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import dayjs from 'dayjs';
import { MatIconModule } from '@angular/material/icon';
import { MatTooltipModule } from '@angular/material/tooltip';
import { NavigationEnd, Router } from '@angular/router';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DynamicInputComponent } from '@common-ui/inputs/dynamic-input/dynamic-input.component';
import { BaseFormComponent, CircleButtonComponent, HelpModeService, ListingService, Toaster } from '@iqser/common-ui';
import { Debounce } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { Dossier, File, FileAttributeConfigTypes, IFileAttributeConfig } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { FilesService } from '@services/files/files.service';
import { PermissionsService } from '@services/permissions.service';
import { DatePipe } from '@shared/pipes/date.pipe';
import dayjs from 'dayjs';
import { firstValueFrom, Subscription } from 'rxjs';
import { filter, map, tap } from 'rxjs/operators';
import { ConfigService } from '../../config.service';
import { Debounce } from '@iqser/common-ui/lib/utils';
import { AsyncPipe, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatIconModule } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-file-attribute',
@ -46,14 +40,12 @@ import { DatePipe } from '@shared/pipes/date.pipe';
],
})
export class FileAttributeComponent extends BaseFormComponent implements OnDestroy {
readonly #subscriptions = new Subscription();
#widthFactor = window.innerWidth >= 1800 ? 0.85 : 0.7;
isInEditMode = false;
closedDatepicker = true;
@Input({ required: true }) fileAttribute!: IFileAttributeConfig;
@Input({ required: true }) file!: File;
@Input({ required: true }) dossier!: Dossier;
@Input() fileNameColumn = false;
readonlyAttrs: string[] = [];
readonly #subscriptions = new Subscription();
readonly #shouldClose = computed(
() =>
(this.fileAttributesService.isEditingFileAttribute() &&
@ -63,32 +55,10 @@ export class FileAttributeComponent extends BaseFormComponent implements OnDestr
this.file.fileId !== this.fileAttributesService.fileEdit())) ||
!this.fileAttributesService.openAttributeEdits().length,
);
@Input({ required: true }) dossier!: Dossier;
@Input() fileNameColumn = false;
readonlyAttrs: string[] = [];
@Input() width?: number;
#widthFactor = window.innerWidth >= 1800 ? 0.85 : 0.7;
get editFieldWidth(): string {
return this.width ? `${this.width * this.#widthFactor}px` : 'unset';
}
get attributeValueWidth(): string {
return this.width ? `${this.width * 0.9}px` : 'unset';
}
get isDate(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.DATE;
}
get isNumber(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.NUMBER;
}
get isText(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.TEXT;
}
get fileAttributeValue(): string {
return this.file.fileAttributes.attributeIdToValue[this.fileAttribute.id];
}
constructor(
router: Router,
@ -121,6 +91,30 @@ export class FileAttributeComponent extends BaseFormComponent implements OnDestr
);
}
get editFieldWidth(): string {
return this.width ? `${this.width * this.#widthFactor}px` : 'unset';
}
get attributeValueWidth(): string {
return this.width ? `${this.width * 0.9}px` : 'unset';
}
get isDate(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.DATE;
}
get isNumber(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.NUMBER;
}
get isText(): boolean {
return this.fileAttribute.type === FileAttributeConfigTypes.TEXT;
}
get fileAttributeValue(): string {
return this.file.fileAttributes.attributeIdToValue[this.fileAttribute.id];
}
@HostListener('window:resize')
onResize() {
if (window.innerWidth >= 1800) {

View File

@ -39,6 +39,6 @@
</div>
<div class="active-icon-marker-container">
<iqser-round-checkbox *ngIf="multiSelectService.active() && isSelected" [active]="true"></iqser-round-checkbox>
<iqser-round-checkbox *ngIf="multiSelectService.active() && isSelected" active></iqser-round-checkbox>
</div>
</div>

View File

@ -1,13 +1,13 @@
import { NgIf, UpperCasePipe } from '@angular/common';
import { Component, Input } from '@angular/core';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import { getConfig, IqserDenyDirective } from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { MultiSelectService } from '../../services/multi-select.service';
import { TranslateModule } from '@ngx-translate/core';
import { AnnotationIconComponent } from '@shared/components/annotation-icon/annotation-icon.component';
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';
import { MultiSelectService } from '../../services/multi-select.service';
@Component({
selector: 'redaction-annotation-card',

View File

@ -1,18 +1,19 @@
import { NgForOf, NgIf } from '@angular/common';
import { Component, inject, Input, OnChanges, signal, SimpleChanges, ViewChild } from '@angular/core';
import { CircleButtonComponent, InputWithActionComponent, LoadingService } from '@iqser/common-ui';
import { MatTooltip } from '@angular/material/tooltip';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { NamePipe } from '@common-ui/users/name.pipe';
import { CircleButtonComponent, 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';
import { TranslateModule } from '@ngx-translate/core';
import type { IComment, User } from '@red/domain';
import { CommentsApiService } from '@services/comments-api.service';
import { PermissionsService } from '@services/permissions.service';
import { DatePipe } from '@shared/pipes/date.pipe';
import { NGXLogger } from 'ngx-logger';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
import { 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';
import { DatePipe } from '@shared/pipes/date.pipe';
@Component({
selector: 'redaction-comments',

View File

@ -1,6 +1,10 @@
import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
import { ChangeDetectorRef, Component, computed, effect, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { MatIcon } from '@angular/material/icon';
import { MatTooltip } from '@angular/material/tooltip';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import {
CapitalizePipe,
CircleButtonComponent,
@ -10,12 +14,14 @@ import {
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';
import { TranslateModule } from '@ngx-translate/core';
import { WorkflowFileStatuses } from '@red/domain';
import { workloadTranslations } from '@translations/workload-translations';
import { UserPreferenceService } from '@users/user-preference.service';
import { getLocalStorageDataByFileId } from '@utils/local-storage';
import { combineLatest, delay, Observable } from 'rxjs';
@ -34,17 +40,11 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi
import { MultiSelectService } from '../../services/multi-select.service';
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 { AnnotationActionsComponent } from '../annotation-actions/annotation-actions.component';
import { AnnotationsListComponent } from '../annotations-list/annotations-list.component';
import { PageExclusionComponent } from '../page-exclusion/page-exclusion.component';
import { AsyncPipe, NgIf, NgTemplateOutlet } 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';
import { ReadonlyBannerComponent } from '../readonly-banner/readonly-banner.component';
const COMMAND_KEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Escape'];
const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'];
@ -79,9 +79,6 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
@ViewChild('annotationsElement') private readonly _annotationsElement: ElementRef;
@ViewChild('quickNavigation') private readonly _quickNavigationElement: ElementRef;
readonly #isIqserDevMode = this._userPreferenceService.isIqserDevMode;
displayedAnnotations = new Map<number, AnnotationWrapper[]>();
displayedPages: number[] = [];
pagesPanelActive = true;
protected readonly iconButtonTypes = IconButtonTypes;
protected readonly circleButtonTypes = CircleButtonTypes;
protected readonly displayedAnnotations$: Observable<Map<number, ListItem<AnnotationWrapper>[]>>;
@ -91,6 +88,9 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
protected readonly currentPageIsExcluded = computed(() => this.state.file().excludedPages.includes(this.pdf.currentPage()));
protected readonly translations = workloadTranslations;
protected readonly isDocumine = getConfig().IS_DOCUMINE;
displayedAnnotations = new Map<number, AnnotationWrapper[]>();
displayedPages: number[] = [];
pagesPanelActive = true;
constructor(
readonly filterService: FilterService,
@ -157,6 +157,11 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
return this.displayedAnnotations.get(this.pdf.currentPage()) || [];
}
get showAnalysisDisabledBanner() {
const file = this.state.file();
return this.isDocumine && file.excludedFromAutomaticAnalysis && file.workflowStatus !== WorkflowFileStatuses.APPROVED;
}
private get _firstSelectedAnnotation() {
return this.listingService.selected.length ? this.listingService.selected[0] : null;
}
@ -513,9 +518,4 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On
});
return listItemsMap;
}
get showAnalysisDisabledBanner() {
const file = this.state.file();
return this.isDocumine && file.excludedFromAutomaticAnalysis && file.workflowStatus !== WorkflowFileStatuses.APPROVED;
}
}

View File

@ -1,13 +1,14 @@
import { Component, computed, ViewChild } from '@angular/core';
import { PermissionsService } from '@services/permissions.service';
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';
import { Component, computed, ViewChild } from '@angular/core';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { CircleButtonComponent, HasScrollbarDirective, LoadingService, Toaster } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { IPageRange } from '@red/domain';
import { PermissionsService } from '@services/permissions.service';
import { ReanalysisService } from '@services/reanalysis.service';
import { extractPageRanges } from '@utils/page-ranges-mapper';
import { FilePreviewStateService } from '../../services/file-preview-state.service';
@Component({
selector: 'redaction-page-exclusion',
@ -17,6 +18,7 @@ import { NgForOf, NgIf } from '@angular/common';
imports: [InputWithActionComponent, TranslateModule, NgIf, HasScrollbarDirective, NgForOf, CircleButtonComponent],
})
export class PageExclusionComponent {
@ViewChild(InputWithActionComponent) private readonly _inputComponent: InputWithActionComponent;
readonly excludedRanges = computed(() => {
const file = this._state.file();
const sorted = [...file.excludedPages].sort((p1, p2) => p1 - p2);
@ -24,7 +26,6 @@ export class PageExclusionComponent {
});
readonly canExcludePages = computed(() => this.permissionsService.canExcludePages(this._state.file(), this._state.dossier()));
readonly noExcludedAndCantExclude = computed(() => !this.canExcludePages() && !this.excludedRanges().length);
@ViewChild(InputWithActionComponent) private readonly _inputComponent: InputWithActionComponent;
constructor(
readonly permissionsService: PermissionsService,
@ -56,6 +57,17 @@ export class PageExclusionComponent {
this._loadingService.stop();
}
flattenPageRanges(ranges: IPageRange[]) {
const flattenedPages = [];
ranges.forEach(range => {
for (let page = range.startPage; page <= range.endPage; page++) {
flattenedPages.push(page);
}
});
return flattenedPages;
}
private _toPageRange(pages: number[]) {
return pages.reduce((ranges: IPageRange[], page) => {
if (!ranges.length) {
@ -70,15 +82,4 @@ export class PageExclusionComponent {
return ranges;
}, []);
}
flattenPageRanges(ranges: IPageRange[]) {
const flattenedPages = [];
ranges.forEach(range => {
for (let page = range.startPage; page <= range.endPage; page++) {
flattenedPages.push(page);
}
});
return flattenedPages;
}
}

View File

@ -6,10 +6,10 @@ 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 { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,

View File

@ -3,16 +3,10 @@ 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 { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { ReplaceNbspPipe } from '@common-ui/pipes/replace-nbsp.pipe';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { getRemoveRedactionOptions } from '../../../utils/dialog-options';
import { RemoveAnnotationData, RemoveAnnotationOption, RemoveAnnotationOptions, RemoveAnnotationResult } from '../../../utils/dialog-types';

View File

@ -1,15 +1,16 @@
import { NgForOf, NgIf } from '@angular/common';
import { Component, Inject, OnInit } from '@angular/core';
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, CircleButtonComponent, DynamicInputComponent, IconButtonComponent } from '@iqser/common-ui';
import { firstValueFrom } from 'rxjs';
import dayjs from 'dayjs';
import { NgForOf, NgIf } from '@angular/common';
import { DynamicInputComponent } from '@common-ui/inputs/dynamic-input/dynamic-input.component';
import { BaseDialogComponent, CircleButtonComponent, IconButtonComponent } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { Dossier, File, IFileAttributeConfig } from '@red/domain';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { FilesService } from '@services/files/files.service';
import dayjs from 'dayjs';
import { firstValueFrom } from 'rxjs';
@Component({
templateUrl: './document-info-dialog.component.html',
@ -17,11 +18,10 @@ import { TranslateModule } from '@ngx-translate/core';
imports: [ReactiveFormsModule, NgIf, NgForOf, DynamicInputComponent, IconButtonComponent, TranslateModule, CircleButtonComponent],
})
export class DocumentInfoDialogComponent extends BaseDialogComponent implements OnInit {
private readonly _dossier: Dossier;
form: UntypedFormGroup;
attributes: IFileAttributeConfig[];
private readonly _dossier: Dossier;
constructor(
activeDossiersService: ActiveDossiersService,
private readonly _fileAttributesService: FileAttributesService,

View File

@ -5,9 +5,9 @@ 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 { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import {
CircleButtonComponent,
DetailsRadioOption,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,

View File

@ -1,25 +1,19 @@
import { NgIf } from '@angular/common';
import { Component, Inject } from '@angular/core';
import { ReactiveFormsModule, UntypedFormGroup, Validators } from '@angular/forms';
import { MatCheckbox } from '@angular/material/checkbox';
import { MAT_DIALOG_DATA, MatDialogClose, MatDialogRef } from '@angular/material/dialog';
import { EarmarkOperation, EarmarkOperationPages } from '@red/domain';
import {
BaseDialogComponent,
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HelpButtonComponent,
IconButtonComponent,
IqserDenyDirective,
} from '@iqser/common-ui';
import { EarmarksService } from '@services/files/earmarks.service';
import { firstValueFrom } from 'rxjs';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { BaseDialogComponent, CircleButtonComponent, HelpButtonComponent, IconButtonComponent, IqserDenyDirective } from '@iqser/common-ui';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { TranslateModule } from '@ngx-translate/core';
import { EarmarkOperation, EarmarkOperationPages } from '@red/domain';
import { EarmarksService } from '@services/files/earmarks.service';
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';
import { firstValueFrom } from 'rxjs';
export interface HighlightActionData {
readonly operation: EarmarkOperation;
@ -49,9 +43,9 @@ export interface HighlightActionData {
],
})
export class HighlightActionDialogComponent extends BaseDialogComponent {
readonly #operation = this.data.operation;
readonly translations = highlightsTranslations;
readonly roles = Roles;
readonly #operation = this.data.operation;
readonly options: DetailsRadioOption<EarmarkOperationPages>[] = [
{
label: highlightsTranslations[this.#operation].options[EarmarkOperationPages.THIS_PAGE].label,

View File

@ -6,15 +6,9 @@ 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,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, 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';

View File

@ -6,15 +6,9 @@ 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,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, 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';

View File

@ -3,10 +3,10 @@ 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 { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
HelpButtonComponent,
IconButtonComponent,

View File

@ -4,15 +4,9 @@ import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angul
import { MatDialogClose } from '@angular/material/dialog';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import {
CircleButtonComponent,
DetailsRadioComponent,
DetailsRadioOption,
HasScrollbarDirective,
IconButtonComponent,
IconButtonTypes,
IqserDialogComponent,
} from '@iqser/common-ui';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, 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';

View File

@ -1,4 +1,4 @@
import { DetailsRadioOption } from '@iqser/common-ui';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { Dossier } from '@red/domain';
import { addHintTranslations } from '@translations/add-hint-translations';

View File

@ -1,4 +1,4 @@
import { DetailsRadioOption } from '@iqser/common-ui';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
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';

View File

@ -1,24 +1,24 @@
import { NgForOf, NgIf } from '@angular/common';
import { Component, ElementRef, Input, OnInit, QueryList, ViewChildren } from '@angular/core';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DynamicInputComponent } from '@common-ui/inputs/dynamic-input/dynamic-input.component';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
import {
CircleButtonComponent,
DynamicInputComponent,
EmptyStateComponent,
IconButtonComponent,
IconButtonTypes,
LoadingService,
Toaster,
} from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { Dossier, DossierAttributeConfigType, DossierAttributeConfigTypes, DossierAttributeWithValue } from '@red/domain';
import { DossierAttributesService } from '@services/entity-services/dossier-attributes.service';
import { PermissionsService } from '@services/permissions.service';
import dayjs from 'dayjs';
import { firstValueFrom } from 'rxjs';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
import { NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe';
@Component({
selector: 'redaction-edit-dossier-attributes',

View File

@ -4,9 +4,11 @@ import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angula
import { MatFormField } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatOption, MatSelect } from '@angular/material/select';
import { InputWithActionComponent } from '@common-ui/inputs/input-with-action/input-with-action.component';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import { InitialsAvatarComponent } from '@common-ui/users';
import { NamePipe } from '@common-ui/users/name.pipe';
import { getConfig, InputWithActionComponent, RoundCheckboxComponent, StopPropagationDirective } from '@iqser/common-ui';
import { getConfig, StopPropagationDirective } from '@iqser/common-ui';
import { Debounce } from '@iqser/common-ui/lib/utils';
import { TranslateModule } from '@ngx-translate/core';
import { Dossier, IDossierRequest } from '@red/domain';

View File

@ -1,22 +1,23 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { booleanAttribute, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';
import { FormGroup, ReactiveFormsModule, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';
import { MatCheckbox } from '@angular/material/checkbox';
import { MatFormField } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatSelect } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { BaseFormComponent, getConfig, HasScrollbarDirective, LoadingService, RoundCheckboxComponent, Toaster } from '@iqser/common-ui';
import { RoundCheckboxComponent } from '@common-ui/inputs/round-checkbox/round-checkbox.component';
import { BaseFormComponent, getConfig, HasScrollbarDirective, LoadingService, Toaster } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core';
import { Dictionary, IDictionary } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { DictionaryService } from '@services/entity-services/dictionary.service';
import { toSnakeCase } from '@utils/functions';
import { ColorPickerModule } from 'ngx-color-picker';
import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { ColorPickerModule } from 'ngx-color-picker';
import { MatIcon } from '@angular/material/icon';
import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle';
import { MatFormField } from '@angular/material/form-field';
import { MatSelect } from '@angular/material/select';
import { MatSlideToggle } from '@angular/material/slide-toggle';
import { MatCheckbox } from '@angular/material/checkbox';
const REDACTION_FIELDS = ['defaultReason'];

View File

@ -1,16 +1,16 @@
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { FormFieldComponent } from '@iqser/common-ui';
import { filter, map, tap } from 'rxjs/operators';
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
import { MatFormField } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { FormFieldComponent } from '@common-ui/inputs/form-field/form-field-component.directive';
import { shareLast } from '@iqser/common-ui/lib/utils';
import { Watermark } from '@red/domain';
import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';
import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
import { shareLast } from '@iqser/common-ui/lib/utils';
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { MatFormField } from '@angular/material/form-field';
import { MatOption, MatSelect, MatSelectTrigger } from '@angular/material/select';
import { MatIcon } from '@angular/material/icon';
import { BehaviorSubject, Observable } from 'rxjs';
import { filter, map, tap } from 'rxjs/operators';
@Component({
selector: 'redaction-watermark-selector [dossierTemplateId] [label]',

View File

@ -1,12 +1,14 @@
import { Component, Inject } from '@angular/core';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { DetailsRadioComponent, DetailsRadioOption, IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { OverwriteFileOption, OverwriteFileOptions } from '@red/domain';
import { NgIf } from '@angular/common';
import { Component, Inject } from '@angular/core';
import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { MatCheckbox } from '@angular/material/checkbox';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option';
import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component';
import { IconButtonComponent, IconButtonTypes } from '@iqser/common-ui';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { OverwriteFileOption, OverwriteFileOptions } from '@red/domain';
@Component({
selector: 'redaction-overwrite-files-dialog',

View File

@ -1,4 +1,4 @@
FROM node:20.11-buster AS builder
FROM node:20.14-buster AS builder
WORKDIR /ng-app
@ -23,7 +23,7 @@ CMD ["/bin/cp", "-r", "/ng-app/dist/paligo-styles", "/tmp/styles-export"]
### STAGE 2: Setup ###
FROM nginx:1.25.4-alpine
FROM nginx:1.27.0-alpine
ENV NGINX_ENVSUBST_OUTPUT_DIR=/tmp
ENV PDFTRON_ALLOWED_HOSTS=''
## Copy our default nginx config

@ -1 +1 @@
Subproject commit d595a22db164ec8669da572fdd49a28b464eb61a
Subproject commit f3faa6a6cc6b36840de6952f15938858130a4ef2