RED-5825 - Missing refresh after changes in file attributes
This commit is contained in:
parent
138c170551
commit
5136381a6f
@ -7,6 +7,7 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi
|
|||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { File } from '@red/domain';
|
import { File } from '@red/domain';
|
||||||
import { FilePreviewDialogService } from '../../services/file-preview-dialog.service';
|
import { FilePreviewDialogService } from '../../services/file-preview-dialog.service';
|
||||||
|
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-document-info',
|
selector: 'redaction-document-info',
|
||||||
@ -21,11 +22,16 @@ export class DocumentInfoComponent {
|
|||||||
constructor(
|
constructor(
|
||||||
private readonly _dossierTemplatesService: DossierTemplatesService,
|
private readonly _dossierTemplatesService: DossierTemplatesService,
|
||||||
private readonly _dialogService: FilePreviewDialogService,
|
private readonly _dialogService: FilePreviewDialogService,
|
||||||
|
private readonly _fileAttributesService: FileAttributesService,
|
||||||
readonly stateService: FilePreviewStateService,
|
readonly stateService: FilePreviewStateService,
|
||||||
readonly permissionsService: PermissionsService,
|
readonly permissionsService: PermissionsService,
|
||||||
readonly documentInfoService: DocumentInfoService,
|
readonly documentInfoService: DocumentInfoService,
|
||||||
) {
|
) {
|
||||||
this.fileAttributes$ = combineLatest([this.stateService.file$, this.stateService.dossier$]).pipe(
|
this.fileAttributes$ = combineLatest([
|
||||||
|
this.stateService.file$,
|
||||||
|
this.stateService.dossier$,
|
||||||
|
this._fileAttributesService.fileAttributesConfig$,
|
||||||
|
]).pipe(
|
||||||
switchMap(([file, dossier]) => this.documentInfoService.fileAttributes$(file.fileId, dossier.id, dossier.dossierTemplateId)),
|
switchMap(([file, dossier]) => this.documentInfoService.fileAttributes$(file.fileId, dossier.id, dossier.dossierTemplateId)),
|
||||||
);
|
);
|
||||||
this.dossierTemplateName$ = this.stateService.dossier$.pipe(
|
this.dossierTemplateName$ = this.stateService.dossier$.pipe(
|
||||||
|
|||||||
@ -1,23 +1,25 @@
|
|||||||
<div>
|
<ng-container *ngIf="componentContext$ | async as ctx">
|
||||||
<div
|
<div>
|
||||||
[class.error]="file.isError"
|
<div
|
||||||
[class.initial-processing]="file.isInitialProcessing"
|
[class.error]="file.isError"
|
||||||
[matTooltip]="file.filename"
|
[class.initial-processing]="file.isInitialProcessing"
|
||||||
[iqserHelpMode]="'document_in_editor'"
|
[matTooltip]="file.filename"
|
||||||
[scrollableParentView]="scrollableParentView"
|
[iqserHelpMode]="'document_in_editor'"
|
||||||
class="table-item-title"
|
[scrollableParentView]="scrollableParentView"
|
||||||
matTooltipPosition="above"
|
class="table-item-title"
|
||||||
>
|
matTooltipPosition="above"
|
||||||
{{ file.filename }}
|
>
|
||||||
|
{{ file.filename }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div *ngIf="primaryAttribute" class="small-label">
|
<div *ngIf="primaryAttribute" class="small-label">
|
||||||
<div class="primary-attribute">
|
<div class="primary-attribute">
|
||||||
<span [matTooltip]="primaryAttribute" matTooltipPosition="above">
|
<span [matTooltip]="primaryAttribute" matTooltipPosition="above">
|
||||||
{{ primaryAttribute }}
|
{{ primaryAttribute }}
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<redaction-file-stats [file]="file"></redaction-file-stats>
|
<redaction-file-stats [file]="file"></redaction-file-stats>
|
||||||
|
</ng-container>
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';
|
||||||
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';
|
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';
|
||||||
import { FileAttributes } from '@red/domain';
|
import { Dossier, File, FileAttributes } from '@red/domain';
|
||||||
import { ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
|
import { ContextComponent, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
|
||||||
|
import { FileAttributesConfigMap, FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||||
|
import { tap } from 'rxjs/operators';
|
||||||
|
|
||||||
interface PartialFile {
|
interface PartialFile {
|
||||||
readonly isError: boolean;
|
readonly isError: boolean;
|
||||||
@ -14,21 +16,39 @@ interface PartialFile {
|
|||||||
readonly lastManualChangeDate?: string;
|
readonly lastManualChangeDate?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface FileNameColumnContext {
|
||||||
|
fileAttributesConfig: FileAttributesConfigMap;
|
||||||
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-file-name-column',
|
selector: 'redaction-file-name-column',
|
||||||
templateUrl: './file-name-column.component.html',
|
templateUrl: './file-name-column.component.html',
|
||||||
styleUrls: ['./file-name-column.component.scss'],
|
styleUrls: ['./file-name-column.component.scss'],
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
})
|
})
|
||||||
export class FileNameColumnComponent implements OnChanges {
|
export class FileNameColumnComponent extends ContextComponent<FileNameColumnContext> implements OnInit {
|
||||||
@Input() file: PartialFile;
|
@Input() file: PartialFile;
|
||||||
@Input() dossierTemplateId: string;
|
@Input() dossierTemplateId: string;
|
||||||
primaryAttribute: string;
|
primaryAttribute: string;
|
||||||
|
|
||||||
constructor(private readonly _primaryFileAttributeService: PrimaryFileAttributeService) {}
|
constructor(
|
||||||
|
private readonly _fileAttributeService: FileAttributesService,
|
||||||
|
private readonly _primaryFileAttributeService: PrimaryFileAttributeService,
|
||||||
|
private readonly _changeDetectorRef: ChangeDetectorRef,
|
||||||
|
) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
ngOnChanges() {
|
ngOnInit(): void {
|
||||||
this.primaryAttribute = this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId);
|
const fileAttributesConfig$ = this._fileAttributeService.fileAttributesConfig$.pipe(
|
||||||
|
tap(() => {
|
||||||
|
this.primaryAttribute = this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId);
|
||||||
|
this._changeDetectorRef.detectChanges();
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
super._initContext({
|
||||||
|
fileAttributesConfig: fileAttributesConfig$,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
get scrollableParentView(): ScrollableParentView {
|
get scrollableParentView(): ScrollableParentView {
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { BehaviorSubject, Observable, of } from 'rxjs';
|
|||||||
import { catchError, tap } from 'rxjs/operators';
|
import { catchError, tap } from 'rxjs/operators';
|
||||||
import { FileAttributeConfig, FileAttributes, IFileAttributeConfig, IFileAttributesConfig } from '@red/domain';
|
import { FileAttributeConfig, FileAttributes, IFileAttributeConfig, IFileAttributesConfig } from '@red/domain';
|
||||||
|
|
||||||
type FileAttributesConfigMap = Readonly<Record<string, IFileAttributesConfig>>;
|
export type FileAttributesConfigMap = Readonly<Record<string, IFileAttributesConfig>>;
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
@ -12,7 +12,7 @@ type FileAttributesConfigMap = Readonly<Record<string, IFileAttributesConfig>>;
|
|||||||
export class FileAttributesService extends EntitiesService<IFileAttributeConfig, FileAttributeConfig> {
|
export class FileAttributesService extends EntitiesService<IFileAttributeConfig, FileAttributeConfig> {
|
||||||
protected readonly _defaultModelPath = 'fileAttributes';
|
protected readonly _defaultModelPath = 'fileAttributes';
|
||||||
protected readonly _entityClass = FileAttributeConfig;
|
protected readonly _entityClass = FileAttributeConfig;
|
||||||
readonly #fileAttributesConfig$ = new BehaviorSubject<FileAttributesConfigMap>({});
|
readonly fileAttributesConfig$ = new BehaviorSubject<FileAttributesConfigMap>({});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the file attributes that can be used at importing csv.
|
* Get the file attributes that can be used at importing csv.
|
||||||
@ -23,8 +23,8 @@ export class FileAttributesService extends EntitiesService<IFileAttributeConfig,
|
|||||||
return request$.pipe(
|
return request$.pipe(
|
||||||
tap(entities => entities.fileAttributeConfigs.sort((c1, c2) => c1.placeholder.localeCompare(c2.placeholder))),
|
tap(entities => entities.fileAttributeConfigs.sort((c1, c2) => c1.placeholder.localeCompare(c2.placeholder))),
|
||||||
tap(entities =>
|
tap(entities =>
|
||||||
this.#fileAttributesConfig$.next({
|
this.fileAttributesConfig$.next({
|
||||||
...this.#fileAttributesConfig$.value,
|
...this.fileAttributesConfig$.value,
|
||||||
[dossierTemplateId]: entities,
|
[dossierTemplateId]: entities,
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
@ -33,7 +33,7 @@ export class FileAttributesService extends EntitiesService<IFileAttributeConfig,
|
|||||||
}
|
}
|
||||||
|
|
||||||
getFileAttributeConfig(dossierTemplateId: string): IFileAttributesConfig | undefined {
|
getFileAttributeConfig(dossierTemplateId: string): IFileAttributesConfig | undefined {
|
||||||
return this.#fileAttributesConfig$.value[dossierTemplateId];
|
return this.fileAttributesConfig$.value[dossierTemplateId];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user