##// END OF EJS Templates
Added priorities to render tasks, revisited rendering scheduler...
Added priorities to render tasks, revisited rendering scheduler nested `watch` and `watchFor` has a lower priority then they enclosing renditions

File last commit:

r146:af4f8424e83d v1.9.0 default
r146:af4f8424e83d v1.9.0 default
Show More
MainContext.ts
106 lines | 3.2 KiB | video/mp2t | TypeScriptLexer
cin
Working on WatchForRendition
r107 import Memory = require("dojo/store/Memory");
import Observable = require("dojo/store/Observable");
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 import { Appointment, AppointmentRole, Member } from "./Appointment";
cin
Working on WatchForRendition
r107 import { Contact } from "./Contact";
import { Uuid } from "@implab/core-amd/Uuid";
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 import { IDestroyable } from "@implab/core-amd/interfaces";
import { delay } from "@implab/core-amd/safe";
cin
added reduce() and next() methods to observable...
r116 import { query } from "@implab/djx/store";
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 type AppointmentRecord = Omit<Appointment, "getMembers"> & { id: string };
cin
Working on WatchForRendition
r107
type ContactRecord = Contact;
type MemberRecord = Member & { appointmentId: string; };
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 const item = <T, T2>(map: (x: T) => T2) => <U extends { item: T }>({ item, ...props }: U) => ({ item: map(item), ...props });
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 export class MainContext implements IDestroyable {
cin
linting
r109 private readonly _appointments = new Observable(new Memory<AppointmentRecord>());
cin
Working on WatchForRendition
r107
cin
linting
r109 private readonly _contacts = new Observable(new Memory<ContactRecord>());
cin
Working on WatchForRendition
r107
cin
linting
r109 private readonly _members = new Observable(new Memory<MemberRecord>());
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 async createAppointment(title: string, startAt: Date, duration: number, members: Member[]) {
await delay(1000);
cin
Working on WatchForRendition
r107 const id = Uuid();
this._appointments.add({
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 id,
cin
Working on WatchForRendition
r107 startAt,
duration,
title
});
members.forEach(member =>
this._members.add({
appointmentId: id,
...member
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 }, { id: Uuid() }) as void
cin
Working on WatchForRendition
r107 );
}
cin
Added priorities to render tasks, revisited rendering scheduler...
r146 async removeAppointment(appointmentId: string) {
await delay(10);
this._members.query({ appointmentId })
.map(m => this._members.getIdentity(m))
.forEach(id => this._members.remove(id));
this._appointments.remove(appointmentId);
}
cin
added whenRendered() method to wait for pending oprations to complete
r118 async load() {
cin
Added priorities to render tasks, revisited rendering scheduler...
r146 await delay(10);
for (let i = 0; i < 5; i++) {
cin
added whenRendered() method to wait for pending oprations to complete
r118 const id = Uuid();
this._appointments.add({
id,
startAt: new Date(),
duration: 30,
cin
Added priorities to render tasks, revisited rendering scheduler...
r146 title: `Hello ${i + 1}`
cin
added whenRendered() method to wait for pending oprations to complete
r118 });
cin
Added priorities to render tasks, revisited rendering scheduler...
r146
for (let ii = 0; ii < 3; ii++)
this._members.add({
appointmentId: id,
email: "some@no.mail",
name: `Peter ${ii}`,
position: "Manager",
role: "participant"
}, { id: Uuid() });
cin
added whenRendered() method to wait for pending oprations to complete
r118 }
}
cin
added reduce() and next() methods to observable...
r116 private readonly _queryAppointmentsRx = query(this._appointments);
private readonly _queryMembersRx = query(this._members);
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 queryAppointments({ dateFrom, dateTo }: { dateFrom?: Date; dateTo?: Date; } = {}) {
cin
added reduce() and next() methods to observable...
r116 return this._queryAppointmentsRx(({ startAt }) =>
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 (!dateFrom || dateFrom <= startAt) &&
(!dateTo || startAt <= dateTo)
).map(item(this._mapAppointment));
cin
Working on WatchForRendition
r107 }
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 async addMember(appointmentId: string, member: Member) {
await delay(1000);
this._members.add({
appointmentId,
...member
});
}
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 private readonly _mapAppointment = ({ startAt, title, duration, id }: AppointmentRecord) => ({
id,
title,
startAt,
duration,
cin
added reduce() and next() methods to observable...
r116 getMembers: (role?: AppointmentRole) => this._queryMembersRx(role ? { appointmentId: id, role } : { appointmentId: id })
cin
linting
r109 });
cin
Working on WatchForRendition
r107
cin
corrected tear down logic handling in observables. Added support for observable query results
r110 destroy() {
}
cin
Working on WatchForRendition
r107 }