##// END OF EJS Templates
Corrected Scope.own() to cleanup the supplied object immediately when the scope is disposed already
Corrected Scope.own() to cleanup the supplied object immediately when the scope is disposed already

File last commit:

r118:e07418577cbc v1.6.1 default
r131:c7d9ad82b374 v1.8.1 default
Show More
MainModel.ts
74 lines | 2.1 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";
cin
added reduce() and next() methods to observable...
r116 import { Observable } from "@implab/djx/observable";
import { OrderedUpdate } from "@implab/djx/store";
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 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
added whenRendered() method to wait for pending oprations to complete
r118 import { whenRendered } from "@implab/djx/tsx/render";
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 {
cin
added reduce() and next() methods to observable...
r116 appointments: Observable<OrderedUpdate<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) {
cin
added whenRendered() method to wait for pending oprations to complete
r118 this._context.createAppointment(title,startAt, duration, [])
.then(() => {
trace.debug("addAppointment done");
return whenRendered();
})
.then(() => {
trace.debug("Render dome");
})
.catch(error(trace));
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 }
cin
added whenRendered() method to wait for pending oprations to complete
r118
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 load() {
cin
added whenRendered() method to wait for pending oprations to complete
r118 this._context.load().catch(error(trace));
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 }
destroy() {
this._context.destroy();
}
cin
Working on WatchForRendition
r107 }