RED-6535, refactor main file attribute display method.
This commit is contained in:
parent
d90571d2f7
commit
db4230103b
@ -12,10 +12,10 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="primaryAttribute" class="small-label">
|
||||
<div *ngIf="ctx.primaryAttribute" class="small-label">
|
||||
<div class="primary-attribute">
|
||||
<span [matTooltip]="primaryAttribute" matTooltipPosition="above">
|
||||
{{ primaryAttribute }}
|
||||
<span [matTooltip]="ctx.primaryAttribute" matTooltipPosition="above">
|
||||
{{ ctx.primaryAttribute }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
||||
import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
||||
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';
|
||||
import { 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';
|
||||
import { BehaviorSubject, combineLatestWith, map } from 'rxjs';
|
||||
import { ContextComponent } from '@iqser/common-ui';
|
||||
import { FileAttributesService } from '@services/entity-services/file-attributes.service';
|
||||
import { combineLatest, map, ReplaySubject } from 'rxjs';
|
||||
|
||||
interface PartialFile {
|
||||
readonly isError: boolean;
|
||||
@ -18,7 +17,7 @@ interface PartialFile {
|
||||
}
|
||||
|
||||
interface FileNameColumnContext {
|
||||
fileAttributesConfig: FileAttributesConfigMap;
|
||||
primaryAttribute: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@ -30,35 +29,27 @@ interface FileNameColumnContext {
|
||||
export class FileNameColumnComponent extends ContextComponent<FileNameColumnContext> implements OnInit, OnChanges {
|
||||
@Input() file: PartialFile;
|
||||
@Input() dossierTemplateId: string;
|
||||
primaryAttribute: string;
|
||||
readonly #reloadAttribute = new BehaviorSubject(null);
|
||||
readonly #reloadAttribute = new ReplaySubject<void>(1);
|
||||
|
||||
constructor(
|
||||
private readonly _fileAttributeService: FileAttributesService,
|
||||
private readonly _primaryFileAttributeService: PrimaryFileAttributeService,
|
||||
private readonly _changeDetectorRef: ChangeDetectorRef,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
const fileAttributesConfig$ = this._fileAttributeService.fileAttributesConfig$.pipe(
|
||||
combineLatestWith(this.#reloadAttribute),
|
||||
tap(() => {
|
||||
this.primaryAttribute = this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId);
|
||||
this._changeDetectorRef.detectChanges();
|
||||
}),
|
||||
map(([attributes]) => attributes),
|
||||
const primaryAttribute$ = combineLatest([this._fileAttributeService.fileAttributesConfig$, this.#reloadAttribute]).pipe(
|
||||
map(() => this._primaryFileAttributeService.getPrimaryFileAttributeValue(this.file, this.dossierTemplateId)),
|
||||
);
|
||||
super._initContext({
|
||||
fileAttributesConfig: fileAttributesConfig$,
|
||||
primaryAttribute: primaryAttribute$,
|
||||
});
|
||||
}
|
||||
|
||||
ngOnChanges(changes: SimpleChanges): void {
|
||||
if (!changes.file) {
|
||||
return;
|
||||
if (changes.file) {
|
||||
this.#reloadAttribute.next();
|
||||
}
|
||||
this.#reloadAttribute.next(null);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user