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