##// END OF EJS Templates
Added tag v1.4.0 for changeset 1a190b3a757d
Added tag v1.4.0 for changeset 1a190b3a757d

File last commit:

r110:1a190b3a757d v1.4.0 default
r111:c8d682bcaff7 default
Show More
MainModel.ts
62 lines | 1.8 KiB | video/mp2t | TypeScriptLexer
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 import { id as mid } from "module";
import { BehaviorSubject, Observer, Unsubscribable } from "rxjs";
import { IDestroyable } from "@implab/core-amd/interfaces";
import { OrderUpdate, Observable } from "@implab/djx/observable";
import { Appointment, Member } from "./Appointment";
import { MainContext } from "./MainContext";
import { LocalDate } from "@js-joda/core";
import { error } from "../logging";
import { TraceSource } from "@implab/core-amd/log/TraceSource";
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 const trace = TraceSource.get(mid);
export interface State {
appointments: Observable<OrderUpdate<Appointment>>;
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 dateTo: LocalDate;
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 dateFrom: LocalDate;
title: string;
cin
Working on WatchForRendition
r107 }
export default class MainModel implements IDestroyable {
private readonly _state: BehaviorSubject<State>;
cin
corrected tear down logic handling in observables. Added support for observable query results
r110
private readonly _context = new MainContext();
constructor() {
this._state = new BehaviorSubject<State>({
dateTo: LocalDate.now(),
dateFrom: LocalDate.now().minusMonths(1),
appointments: this._context.queryAppointments(),
title: "Appointments"
});
cin
Working on WatchForRendition
r107 }
getState() {
return this._state.getValue();
}
subscribe(observer: Partial<Observer<State>>): Unsubscribable {
return this._state.subscribe(observer);
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 }
cin
Working on WatchForRendition
r107 protected dispatch(command: Partial<State>) {
const state = this.getState();
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 this._state.next({ ...state, ...command });
}
addMember(appointmentId: string, member: Member) {
this._context.addMember(appointmentId, member).catch(error(trace));
cin
Working on WatchForRendition
r107 }
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 addAppointment(title: string, startAt: Date, duration: number) {
this._context.createAppointment(title,startAt, duration, []).catch(error(trace));
}
load() {
}
destroy() {
this._context.destroy();
}
cin
Working on WatchForRendition
r107 }