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