blob: 29786bb9a2b0c59bcbeed5fa8bd74cb9a5b6a158 [file] [log] [blame]
import { Component, Input, OnInit } from '@angular/core';
import { Observable, of, Subject } from 'rxjs';
import { share, debounceTime, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators';
import { CurrentMessagesService } from '../../../services/current-messages.service';
import { subMessage } from '../../../types/sub-messages';
@Component({
selector: 'osee-messaging-edit-sub-message-field',
templateUrl: './edit-sub-message-field.component.html',
styleUrls: ['./edit-sub-message-field.component.sass']
})
export class EditSubMessageFieldComponent implements OnInit {
@Input() messageId!: string;
@Input() subMessageId!: string ;
@Input() header: string = '';
@Input() value: string = '';
private _value: Subject<string> = new Subject();
_subMessage: Partial<subMessage> = {
id:this.subMessageId
};
private _sendValue = this._value.pipe(
share(),
debounceTime(500),
distinctUntilChanged(),
map((x: string) => this._subMessage[this.header as keyof subMessage] = x),
tap(() => {
this._subMessage.id = this.subMessageId;
}),
switchMap(val=>this.messageService.partialUpdateSubMessage(this._subMessage,this.messageId))
)
constructor (private messageService: CurrentMessagesService) {
this._sendValue.subscribe();
}
ngOnInit(): void {
}
updateSubMessage(header: string, value: string) {
this._value.next(value);
}
}